<?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>163675</bug_id>
          
          <creation_ts>2016-10-19 11:37:56 -0700</creation_ts>
          <short_desc>Revert r207151</short_desc>
          <delta_ts>2016-10-19 23:08:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1242009</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-19 11:37:56 -0700</bug_when>
    <thetext>Revert r207151</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242010</commentid>
    <comment_count>1</comment_count>
      <attachid>292087</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-19 11:40:32 -0700</bug_when>
    <thetext>Created attachment 292087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242013</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 11:42:55 -0700</bug_when>
    <thetext>Attachment 292087 did not pass style-queue:


ERROR: Source/WebCore/platform/network/mac/CookieJarMac.mm:40:  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/WebCore/platform/network/cocoa/CredentialCocoa.mm:89:  Missing spaces around :  [whitespace/init] [4]
ERROR: Tools/DumpRenderTree/config.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cocoa/ProtectionSpaceCocoa.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/ProtectionSpace.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceRequestCFNet.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:109:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:113:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:119:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:125:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:131:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:139:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:144:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:150:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:162:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/win/WebDownload.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/WebCorePrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Tools/DumpRenderTree/DumpRenderTree.h:29:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cocoa/ProtectionSpaceCocoa.mm:40:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ProtectionSpaceCFNet.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:49:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/mac/FormDataStreamMac.h:29:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/FormDataStreamMac.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/cf/LoaderRunLoopCF.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/win/WebURLResponse.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/testing/js/WebCoreTestSupportPrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:67:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:68:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:236:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:240:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.h:25:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/AuthenticationChallenge.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/win/WebError.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cocoa/CredentialCocoa.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 62 in 118 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>1242146</commentid>
    <comment_count>3</comment_count>
      <attachid>292118</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-19 15:09:46 -0700</bug_when>
    <thetext>Created attachment 292118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242147</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 15:11:11 -0700</bug_when>
    <thetext>Attachment 292118 did not pass style-queue:


ERROR: Source/WebCore/platform/network/mac/CookieJarMac.mm:40:  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/WebCore/platform/network/cocoa/CredentialCocoa.mm:89:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cocoa/ProtectionSpaceCocoa.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/ProtectionSpace.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceRequestCFNet.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:109:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:113:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:119:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:125:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:131:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:139:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:144:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:150:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:162:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/win/WebDownload.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Tools/DumpRenderTree/DumpRenderTree.h:29:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cocoa/ProtectionSpaceCocoa.mm:40:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ProtectionSpaceCFNet.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:49:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/mac/FormDataStreamMac.h:29:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/FormDataStreamMac.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/cf/LoaderRunLoopCF.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:67:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:68:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:236:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:240:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.h:25:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/AuthenticationChallenge.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/win/WebError.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cocoa/CredentialCocoa.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 57 in 118 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>1242160</commentid>
    <comment_count>5</comment_count>
      <attachid>292122</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-19 15:49:47 -0700</bug_when>
    <thetext>Created attachment 292122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242162</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 15:51:27 -0700</bug_when>
    <thetext>Attachment 292122 did not pass style-queue:


ERROR: Source/WebCore/platform/network/mac/CookieJarMac.mm:40:  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/WebCore/platform/network/cocoa/CredentialCocoa.mm:89:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cocoa/ProtectionSpaceCocoa.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/ProtectionSpace.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceRequestCFNet.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:109:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:113:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:119:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:125:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:131:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:139:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:144:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:150:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceErrorMac.mm:162:  Extra space for operator  ++;  [whitespace/operators] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:63:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/win/WebDownload.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Tools/DumpRenderTree/DumpRenderTree.h:29:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cocoa/ProtectionSpaceCocoa.mm:40:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ProtectionSpaceCFNet.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:49:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownloadInternal.h:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/network/mac/FormDataStreamMac.h:29:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/mac/FormDataStreamMac.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/cf/LoaderRunLoopCF.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:67:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:68:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:236:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Misc/WebDownload.mm:240:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.h:25:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/AuthenticationChallenge.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKit/win/WebError.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/platform/network/cocoa/CredentialCocoa.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 57 in 120 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>1242221</commentid>
    <comment_count>7</comment_count>
      <attachid>292122</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-19 17:38:05 -0700</bug_when>
    <thetext>Comment on attachment 292122
Patch

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

This revision seems okay, though I&apos;m a little surprised the rename from CFNETWORK-&gt;CFURLCONNECTION had to be rolled out, too.

&gt; Source/WTF/wtf/Platform.h:595
&gt; +#define USE_CFNETWORK 1

Do you really want to undo the change from &quot;USE_CFNETWORK&quot; to &quot;USE_CFURLCONNECTION&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242266</commentid>
    <comment_count>8</comment_count>
      <attachid>292151</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-19 22:30:55 -0700</bug_when>
    <thetext>Created attachment 292151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242267</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 22:32:20 -0700</bug_when>
    <thetext>Attachment 292151 did not pass style-queue:


ERROR: Source/WebCore/platform/network/cocoa/CredentialCocoa.mm:89:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:48:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cf/AuthenticationCF.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/cocoa/ProtectionSpaceCocoa.mm:40:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/network/mac/CookieJarMac.mm:40:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 6 in 82 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>1242271</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-19 23:08:24 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/207585</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292087</attachid>
            <date>2016-10-19 11:40:32 -0700</date>
            <delta_ts>2016-10-19 15:09:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163675-20161019113656.patch</filename>
            <type>text/plain</type>
            <size>189044</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU0
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZToKKwogMjAxNi0x
MC0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENT
U19TSEFQRVMgZmVhdHVyZSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBhbHdheXMgYmUgb24uCklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMC0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmVydCByMjA3MTUxCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorICAgICAgICAqIHd0Zi9TY2hlZHVsZVBhaXIuaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQ
YWlyTWFjLm1tOgorCiAyMDE2LTEwLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgREZHIHdvcmtsaXN0IHNob3VsZCB1c2UgQXV0b21hdGljVGhyZWFkCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSw2ICs1NTksMTAgQEAKIAogI2lmIFBMQVRGT1JNKElP
UykKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTAwMDAwCisjZGVmaW5lIFVTRV9DRk5FVFdPUksgMQorI2VuZGlmCisK
ICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5lIEhBVkVfUkVBRExJTkUg
MQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01ODgsMTAgKzU5MiwxMCBAQAogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAmJiAhUExBVEZPUk0oV0lO
X0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZVUkxDT05ORUNUSU9OIDEKKyNkZWZpbmUgVVNFX0NGTkVU
V09SSyAxCiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENP
Q09BKQorI2lmIFVTRShDRk5FVFdPUkspIHx8IFBMQVRGT1JNKENPQ09BKQogI2RlZmluZSBVU0Vf
Q0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTQ3LDYgKzk1MSw5IEBACiAjZGVmaW5lIFVTRV9Q
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAKKy8qIFNldCB1cCBhIGRl
ZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0byBjYXVzZSBhIGJ1aWxk
IGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLworI2RlZmluZSBXVEZfUExB
VEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVfdXNlZF93aXRoX0NGTkVU
V09SSworCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkKICNkZWZp
bmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Nj
aGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVs
ZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykK
IE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3Mg
U2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVm
IG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUp
KTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0ZORVRXT1JLKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoTlNSdW5Mb29w
KiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNjaGVk
dWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3AqIG5zUnVuTG9vcCgpIGNv
bnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYKQEAgLTYzLDcgKzYzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVD
b3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFNjaGVk
dWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0YWluUHRyPE5TUnVuTG9v
cCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBh
aXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyTWFjLm1t
CShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQorCiBuYW1lc3Bh
Y2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiBydW5Mb29w
LCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDAsMyArNDIsNSBAQCBTY2hlZHVsZVBhaXI6OlNjaGVk
dWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYxIEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcx
NTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y29kZSBpcyBzdGlsbCB1c2VmdWwgZm9yIGNvbXBhcmlzb24gd2l0aCBXaW5kb3dzLiAgSSdsbCBy
ZW1vdmUgaXQgYWdhaW4gc29vbi4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2Ug
aW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViQ29yZVByZWZpeC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9TdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvbWFjL0RvY3VtZW50TG9h
ZGVyTWFjLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAg
ICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFNjaGVkdWxlUGFp
cik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVTY2hlZHVsZVBhaXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50OjpXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVy
bmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlv
bkNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNGKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvcmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91
bGRTbmlmZkNvbm5lY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNl
dHVwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjplbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRDRlVSTFJlcXVl
c3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVu
Y29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNldHVwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNldHVw
Q29ubmVjdGlvblNjaGVkdWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3Jl
ZGVudGlhbDo6Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNy
ZWRlbnRpYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNw
YWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25T
cGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0
aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpjZlNwYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGUgaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0
YUFycmF5Ol0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6XSk6Cisg
ICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRGYWls
V2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRl
dGFjaEhhbmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAg
KC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgc2V0Q0ZDaGFs
bGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyIGNmQ2hhbGxlbmdlXSk6CisgICAgICAgIChXZWJDb3JlOjpjb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1hYyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
SmFyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZVN0b3JhZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAg
KE5TRXJyb3JGcm9tQ0ZFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1
YnMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4Lmg6
CisKIDIwMTYtMTAtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDbGVhbnVwIFdlYkNvcmUvd29ya2VycwpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZVByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXgu
aAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiAgKgogICovCiAKLS8qIFRoaXMgcHJlZml4
IGZpbGUgc2hvdWxkIGNvbnRhaW4gb25seToKKy8qIFRoaXMgcHJlZml4IGZpbGUgc2hvdWxkIGNv
bnRhaW4gb25seTogCiAgKiAgICAxKSBmaWxlcyB0byBwcmVjb21waWxlIGZvciBmYXN0ZXIgYnVp
bGRzCiAgKiAgICAyKSBpbiBvbmUgY2FzZSBhdCBsZWFzdDogT1MtWC1zcGVjaWZpYyBwZXJmb3Jt
YW5jZSBidWcgd29ya2Fyb3VuZHMKICAqICAgIDMpIHRoZSBzcGVjaWFsIHRyaWNrIHRvIGNhdGNo
IHVzIHVzaW5nIG5ldyBvciBkZWxldGUgd2l0aG91dCBpbmNsdWRpbmcgImNvbmZpZy5oIgpAQCAt
MTMzLDggKzEzMyw4IEBACiAjZWxzZQogCiAjaWYgT1MoV0lORE9XUykKLQogI2lmIFVTRShDRykK
KwogLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzgyMDg4Njg+IFJlbW92ZSBzdXBwb3J0IGZvciBv
YnNvbGV0ZSBDb2xvclN5bmMgQVBJLCBDb3JlU2VydmljZXMgaGVhZGVyIGluIENvcmVHcmFwaGlj
cwogLy8gV2UgY2FuIHJlbW92ZSB0aGlzIG9uY2UgdGhlIG5ldyBDb2xvclN5bmMgQVBJcyBhcmUg
YXZhaWxhYmxlIGluIGFuIGludGVybmFsIFNhZmFyaSBTREsuCiAjaW5jbHVkZSA8Q29sb3JTeW5j
L0NvbG9yU3luYy5oPgpAQCAtMTQzLDIxICsxNDMsMTkgQEAKICNkZWZpbmUgT0JTT0xFVEVfQ09M
T1JTWU5DX0FQSQogI2VuZGlmCiAjZW5kaWYKLQotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisj
aWYgVVNFKENGTkVUV09SSykKKy8qIFdpbmRvd3MgZG9lc24ndCBpbmNsdWRlIENGTmV0d29yay5o
IHZpYSBDb3JlU2VydmljZXMuaCwgc28gd2UgZG8KKyAgIGl0IGV4cGxpY2l0bHkgaGVyZSB0byBt
YWtlIFdpbmRvd3MgbW9yZSBjb25zaXN0ZW50IHdpdGggTWFjLiAqLwogI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KIC8vIE9uIFdpbmRvd3MsIGRpc3BhdGNoLmggbmVlZHMgdG8gYmUg
aW5jbHVkZWQgYmVmb3JlIGNlcnRhaW4gQ0ZOZXR3b3JrIGhlYWRlcnMuCiAjaW5jbHVkZSA8ZGlz
cGF0Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgotCiAjaW5jbHVkZSA8d2luZG93cy5oPgotCi0jZWxp
ZiAhUExBVEZPUk0oSU9TKQotCisjZWxzZQorI2lmICFQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8
Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgotCi0jZW5kaWYKLQorI2VuZGlmIC8vICFQTEFU
Rk9STShJT1MpCisjZW5kaWYgLy8gT1MoV0lORE9XUykKIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjA0Miw2ICsyMDQyLDcgQEAKIAkJNTE0Qzc2NEYw
Q0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8q
IEZvcm1EYXRhU3RyZWFtTWFjLm1tICovOyB9OwogCQk1MTRDNzY1MDBDRTkyMzRFMDA3RUYzQ0Qg
LyogUmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFj
Lm1tICovOyB9OwogCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRD
NzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gKi87IH07CisJCTUx
NEM3NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0OTBDRTkyMzRFMDA3
RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovOyB9OwogCQk1MTRDNzY2RDBDRTkyM0Ex
MDA3RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRp
YWxCYXNlLmNwcCAqLzsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRp
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3
NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8q
IEZvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEM3NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0y
ODI4LDYgKzI4MjksNyBAQAogCQk3RDRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhl
YWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdE
NEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oICovOyB9OwogCQk3RDc0
MUJEQTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJh
dGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgw
OUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJN0UzN0VGMkUx
MzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUw
IC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OworCQk3RTQyOENFNTEzRTM0MDdGMDAz
QjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VI
YW5kbGVJT1MubW0gKi87IH07CiAJCTdFNDZGNkZBMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0Vs
ZW1lbnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0U0NkY2RjgxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWlu
dC5jcHAgKi87IH07CiAJCTdFNDZGNkZCMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJ
bmRleFVpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdFNDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLzsg
fTsKIAkJN0U0NzRFMUUxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0
NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODQ1LDYg
KzI4NDcsNyBAQAogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aCAqLzsgfTsKIAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5oICovOyB9OwogCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07
CisJCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNF
RkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5
OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2
OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0
NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFB
NSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBC
MTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4NjUsNiArMjg2OCw3IEBACiAJCTdF
RTY4NDY5MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU2MTJEMjZFMzgwMEU3OTQx
NSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCAqLzsgfTsKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkIx
MkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VFcnJvckNGLmNwcCAqLzsgfTsKKwkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkUxMkQyNkUzODAw
RTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVz
dENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTkxMDgsNiArOTExMiw3IEBACiAJCTUxNEM3NjQ1MENFOTIzNEUwMDdFRjNDRCAvKiBGb3Jt
RGF0YVN0cmVhbU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEZvcm1EYXRhU3RyZWFtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRD
NzY0NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3JNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJj
ZUhhbmRsZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
c291cmNlSGFuZGxlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTRDNzY0
OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVu
dGlhbEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVu
dGlhbEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1OTBDRTky
M0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjVB
MENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb3JtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMDEwMiw2ICsxMDEwNyw3IEBACiAJCTdENEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0Zl
dGNoSGVhZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zl
dGNoSGVhZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdENEM5NkQ5MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0ZldGNoSGVhZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNGLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFD
IC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVzb3VyY2VIYW5kbGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPRVNFbGVtZW50SW5kZXhV
aW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0NkY2RjkxNjI3QTJDOTAw
MDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU09FU0VsZW1lbnRJbmRleFVpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMTE5LDYg
KzEwMTI1LDcgQEAKIAkJN0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTY2RTIz
MjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0Ig
LyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVz
dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U4RkFEQzMxOTlBOTVCMTAw
NzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9j
dXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdFOTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJ
bmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDE0MSw2
ICsxMDE0OCw3IEBACiAJCTdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29w
Q0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGVyUnVuTG9vcENGLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291
cmNlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTgxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZXNvdXJjZUVycm9yQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUExMkQyNkUzODAw
RTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VF
Njg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NjM5MCw2ICsxNjM5OCw4IEBACiAJCQkJNDQyQUY3QTcxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNr
TG9vay5oICovLAogCQkJCTQ0MkFGN0E4MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlja0xvb2subW0g
Ki8sCiAJCQkJQTEwREJGNDYxOEY5MjMxNzAwMEQ3MEM2IC8qIFF1aWNrTG9va0hhbmRsZUNsaWVu
dC5oICovLAorCQkJCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlP
Uy5tbSAqLywKKwkJCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0
SU9TLm1tICovLAogCQkJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVz
cG9uc2VJT1MuaCAqLywKIAkJCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVS
TFJlc3BvbnNlSU9TLm1tICovLAogCQkJKTsKQEAgLTE3MzAyLDYgKzE3MzEyLDcgQEAKIAkJCQkx
QTdGQTY0NzBEREEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwICov
LAogCQkJCTUxNEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICov
LAogCQkJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAq
LywKKwkJCQk1MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1t
ICovLAogCQkJCUUxODA4MTE0MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNs
aWVudC5tbSAqLywKIAkJCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVz
LmggKi8sCiAJCQkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAq
LywKQEAgLTIxMzQwLDYgKzIxMzUxLDcgQEAKIAkJCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcg
LyogUHJveHlTZXJ2ZXJDRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3IuaCAqLywKIAkJCQk3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VFcnJvckNGLmNwcCAqLywKKwkJCQk3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8sCiAJCQkJMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2
IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovLAogCQkJCTI2
RkFFNEM5MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmggKi8sCiAJCQkJMjZDMTVDRjQxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwICovLApAQCAt
MzAyOTYsOSArMzAzMDgsMTEgQEAKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdF
RjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2Nzgw
Q0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdFRTY4NDZDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTI2RkFFNENDMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QzE1Q0Y2
MTg1N0UxNUQwMEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjky
QUMwMEJBN0EzNSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3RTQyOENFNTEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0UyMjdFMzBBRjU4OUFEMDBENDgzMjQgLyogUmVz
b3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5
NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDMxMSw2
ICszMDMyNSw4IEBACiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVx
dWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RFMUZE
MTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VS
ZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NE
IC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcx
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTFGNzhEMEMxQzI1NDI0QzAwMjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiUXVp
Y2tMb29rLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiAhVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAj
ZW5kaWYKIApAQCAtMTQ1LDcgKzE0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7
CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZP
Uk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVk
dWxlUGFpciYpOwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDIwNzU0
NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nl
c3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZywgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHJlc3BvbnNlOyB9CiAjZW5kaWYKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKICAgICAvLyBGSVhNRTogV2lu
ZG93cyBzaG91bGQgdXNlIHdpbGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NzI1Nz4uCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdp
bGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIE5TRGlj
dGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5k
aWYKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENG
TkVUV09SSykKICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVS
ZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+
LgogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpID0gMDsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTMsOCArNzEzLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KKyAgICAvLyBPbmx5IHRoZXNlIHBsYXRmb3JtcyBwcm92aWRlIGEgd2F5IHRvIGNvbnRp
bnVlIHdpdGhvdXQgY3JlZGVudGlhbHMuCisgICAgLy8gSWYgd2UgY2FuJ3QgY29udGludWUgd2l0
aCBjcmVkZW50aWFscywgd2UgbmVlZCB0byBjYW5jZWwgdGhlIGxvYWQgYWx0b2dldGhlci4KKyNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNs
aWVudCgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxl
bmdlKTsKICAgICBBU1NFUlQoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+aGFzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKSk7CisjZWxzZQorICAgIGRpZEZhaWwoYmxvY2tlZEVycm9yKCkpOworI2Vu
ZGlmCiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpAQCAtNzQx
LDcgKzc0Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KICAg
ICBjYW5jZWwoKTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiAhVVNFKENGTkVUV09SSykKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGUoU2No
ZWR1bGVQYWlyJiBwYWlyKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgTG9hZFRpbWluZyYgbG9hZFRpbWluZygpIHsgcmV0dXJuIG1fbG9hZFRpbWluZzsg
fQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZO
RVRXT1JLKQogICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICAgICB2b2lk
IHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpAQCAtMTYzLDkgKzE2Mywx
MiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNl
KiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2Uq
KSBvdmVycmlkZTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JL
KQorICAgIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogCkBAIC0yMDUsNyArMjA4
LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gY29ubmVjdGlvblByb3BlcnRpZXMoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsK
ICNlbmRpZgotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoQ0ZORVRXT1JLKQogICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hl
UmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3
Pi4KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw5
ICs3NCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoQ0ZORVRXT1JLKQogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2Vu
ZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCisgICAgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOworI2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19DRkRB
VEFfQVJSQVlfQ0FMTEJBQ0spCiAgICAgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9SZXNvdXJj
ZUxvYWRlckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Yv
UmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTMgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkZXIuaCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykK
IAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oV0lOKQorCiBib29sIFJl
c291cmNlTG9hZGVyOjpzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBpZiAobV9vcHRpb25zLnNl
bmRMb2FkQ2FsbGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKQEAgLTQzLDYgKzQ1LDggQEAg
Ym9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZQogICAgIHJldHVybiBmcmFt
ZUxvYWRlcigpLT5jbGllbnQoKS5zaG91bGRDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCks
IGlkZW50aWZpZXIoKSwgcmVzcG9uc2UsIENGRGF0YUdldEJ5dGVQdHIoZGF0YSksIENGRGF0YUdl
dExlbmd0aChkYXRhKSk7CiB9CiAKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdPUksp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvU3VicmVzb3Vy
Y2VMb2FkZXJDb2NvYS5tbQkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShDRk5FVFdPUksp
CisKK0NGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJl
c3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2Fj
aGVkUmVzcG9uc2UpCit7CisgICAgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5n
U3RvcmVDcmVhdGlvbihyZXF1ZXN0KCksIG1fcmVzb3VyY2UtPnNlc3Npb25JRCgpLCBjYWNoZWRS
ZXNwb25zZSk7CisgICAgaWYgKCFtX3Jlc291cmNlLT5zaG91bGRDYWNoZVJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VHZXRXcmFwcGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVS
ZXNwb25zZShoYW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKK30KKworI2Vsc2UKKwogTlNDYWNoZWRV
UkxSZXNwb25zZSogU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIERp
c2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24ocmVxdWVzdCgp
LCBtX3Jlc291cmNlLT5zZXNzaW9uSUQoKSwgW3Jlc3BvbnNlIF9DRkNhY2hlZFVSTFJlc3BvbnNl
XSk7CkBAIC00Myw0ICs1NSw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFN1YnJlc291cmNlTG9h
ZGVyOjoKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKGhhbmRs
ZSwgcmVzcG9uc2UpOwogfQogCisjZW5kaWYKKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmICFV
U0UoQ0ZORVRXT1JLKQorCiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFsbChjb25zdCBSZXNvdXJjZUxv
YWRlck1hcCYgbG9hZGVycywgU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAgIFZlY3RvcjxSZWZQ
dHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzQ29weTsKQEAgLTY3LDQgKzY5LDYgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6dW5zY2hlZHVsZShTY2hlZHVsZQogICAgIHVuc2NoZWR1bGVBbGwobV9t
dWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkocmV2aXNpb24gMjA3NTQ2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgVVNF
KENGTkVUV09SSykKKworQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRlcjo6d2ls
bENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNh
Y2hlZFJlc3BvbnNlKQoreworICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0g
RG9Ob3RTZW5kQ2FsbGJhY2tzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJldGFp
blB0cjxOU0NhY2hlZFVSTFJlc3BvbnNlPiBuc0NhY2hlZFJlc3BvbnNlID0gYWRvcHROUyhbW05T
Q2FjaGVkVVJMUmVzcG9uc2UgYWxsb2NdIF9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6Y2Fj
aGVkUmVzcG9uc2VdKTsKKyAgICByZXR1cm4gW2ZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxD
YWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgbnNDYWNoZWRSZXNw
b25zZS5nZXQoKSkgX0NGQ2FjaGVkVVJMUmVzcG9uc2VdOworfQorCisjZWxzZQorCiBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsKICAgICBpZiAobV9vcHRp
b25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKQEAgLTQzLDYgKzU2
LDggQEAgTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbAogICAgIHJldHVy
biBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRl
cigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KIAorI2VuZGlmCisKICNpZiBVU0UoTkVU
V09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1BhZ2VNYWMubW0JKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1BhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICNpZiBQTEFU
Rk9STShJT1MpCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1
bGVQYWlyOjpjcmVhdGUoV2ViVGhyZWFkUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
KTsKKyNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRo
cmVhZE5TUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKKyNlbmRpZiAvLyBVU0Uo
Q0ZORVRXT1JLKQogI2Vsc2UKICAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVh
dGUoW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwog
I2VuZGlmCkBAIC02NSwxMiArNjksMTQgQEAgdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVm
PFNjaGVkdWxlUAogICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91
bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWly
cy0+YWRkKHBhaXIucHRyKCkpOwogCisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAg
ICB9CisjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBtYWtlIFNoYXJlZFRpbWVyTWFjIHVzZSB0aGVz
ZSBTY2hlZHVsZVBhaXJzLgogfQpAQCAtODMsMTIgKzg5LDE0IEBAIHZvaWQgUGFnZTo6cmVtb3Zl
U2NoZWR1bGVQYWlyKFJlZjxTY2hlZHUKIAogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5y
ZW1vdmUocGFpci5wdHIoKSk7CiAKKyNpZiAhVVNFKENGTkVUV09SSykKICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBk
b2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsK
ICAgICB9CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSwxMCBAQAogI2ltcG9ydCA8VmlkZW9U
b29sYm94L1ZpZGVvVG9vbGJveC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2lu
Y2x1ZGUgIkNGTlNVUkxDb25uZWN0aW9uU1BJLmgiCisjZW5kaWYKKwogI2ltcG9ydCAiQ29yZVZp
ZGVvU29mdExpbmsuaCIKIAogbmFtZXNwYWNlIHN0ZCB7CkBAIC0zNjgsNiArMzcyLDU4IEBAIHN0
YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFB1bGxEZWxlZ2EKIH0KICNlbmRpZgogCisjaWYg
VVNFKENGTkVUV09SSykKK2NsYXNzIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGllbnQ+LCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+
IGNyZWF0ZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2xpZW50KGNoYWxsZW5nZSkpOworICAgIH0KKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8
V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+OjpyZWY7CisgICAgdXNp
bmcgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD46
OmRlcmVmOworCitwcml2YXRlOgorICAgIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSkKKyAgICAg
ICAgOiBtX2NoYWxsZW5nZShjaGFsbGVuZ2UpCisgICAgeworICAgICAgICBBU1NFUlQobV9jaGFs
bGVuZ2UpOworICAgIH0KKworICAgIHZvaWQgcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVy
cmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3Zl
cnJpZGUgeyBkZXJlZigpOyB9CisKKyAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlh
bDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1f
Y2hhbGxlbmdlLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29u
dGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY29udGludWVXaXRo
b3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgp
XTsKKyAgICB9CisKKyAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFtbbV9jaGFsbGVuZ2Ug
c2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07
CisgICAgfQorCisgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxp
bmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkKKyAg
ICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9y
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOworICAgIH0KKworICAg
IHZvaWQgcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVy
XSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENv
bnRpbnVlV2l0aENoYWxsZW5nZTopXSkKKyAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVy
XSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6bV9jaGFsbGVu
Z2UuZ2V0KCldOworICAgIH0KKworICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlPiBtX2NoYWxsZW5nZTsKK307CisjZW5kaWYKKwogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCkBAIC0xNzQxLDcgKzE3
OTcsMTUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25z
ZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSog
bnNDaGFsbGVuZ2UpCiB7Ci0gICAgcmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9u
c2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5zQ2hh
bGxlbmdlKSk7CisjaWYgVVNFKENGTkVUV09SSykKKyAgICBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNsaWVudCA9IFdlYkNvcmVOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xpZW50OjpjcmVhdGUobnNDaGFsbGVuZ2UpOworICAgIFJldGFpblB0
cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNmQ2hhbGxlbmdlID0gYWRvcHRDRihbbnNDaGFsbGVu
Z2UgX2NyZWF0ZUNGQXV0aENoYWxsZW5nZV0pOworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNoYWxsZW5nZShjZkNoYWxsZW5nZS5nZXQoKSwgY2xpZW50LmdldCgpKTsKKyNlbHNlCisgICAg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKG5zQ2hhbGxlbmdlKTsKKyNlbmRpZgor
CisgICAgcmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3QoQVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNpb24gMjA3NTQ2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUmVjdCBO
U1JlY3Q7CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VuZGlmCiAK
KyNpZiBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3Rv
cmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7Cit0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxQcm90
ZWN0aW9uU3BhY2UqIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmOwordHlwZWRlZiBzdHJ1Y3QgX0NG
VVJMQ3JlZGVudGlhbCogV0tDRlVSTENyZWRlbnRpYWxSZWY7Cit0eXBlZGVmIHN0cnVjdCBfQ0ZV
UkxSZXF1ZXN0KiBDRk11dGFibGVVUkxSZXF1ZXN0UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOworI2VuZGlmCisKIE9CSkNfQ0xBU1MgQVZB
c3NldDsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIENBTGF5ZXI7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAKICNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgIkNGTmV0d29y
a1NQSS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgpAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Vzc2lvbklEOyB9CiAgICAgQ3JlZGVudGlhbFN0b3JhZ2UmIGNyZWRlbnRpYWxTdG9yYWdlKCkg
eyByZXR1cm4gbV9jcmVkZW50aWFsU3RvcmFnZTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspCiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJM
U3RvcmFnZVNlc3Npb25SZWY+KTsKIAogICAgIC8vIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNl
IGEgRm91bmRhdGlvbiBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLgpAQCAtODQsNyArODQsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBIYXNoTWFwPFNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBnbG9iYWxTZXNzaW9uTWFwKCk7CiAgICAgU2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJ
T04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRy
PENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogI2VsaWYgVVNFKFNP
VVApCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25T
cGFjZS5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3RlY3Rpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTIgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNwcmFnbWEgb25jZQorI2lmbmRlZiBQcm90ZWN0aW9u
U3BhY2VfaAorI2RlZmluZSBQcm90ZWN0aW9uU3BhY2VfaAogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIKLSNlbGlmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjZWxpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUNG
TmV0LmgiCiAjZWxzZQogCkBAIC00OSwzICs1MCw1IEBAIHB1YmxpYzoKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCisKKyNlbmRpZiAvLyBQcm90ZWN0aW9uU3BhY2VfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25T
cGFjZUJhc2UuY3BwCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNywxMSBAQAogCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAKKyNpZiBVU0UoQ0ZO
RVRXT1JLKSAmJiAhUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5o
IgorI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIE5lZWQgdG8gZW5mb3JjZSBlbXB0eSwgbm9u
LW51bGwgc3RyaW5ncyBkdWUgdG8gdGhlIHBpY2tpbmVzcyBvZiB0aGUgU3RyaW5nID09IFN0cmlu
ZyBvcGVyYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTQsNyArMTU0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2xlYXJDbGllbnQoKQogICAgIGQt
Pm1fY2xpZW50ID0gbnVsbHB0cjsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShD
RlVSTENPTk5FQ1RJT04pICYmICFVU0UoU09VUCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFV
U0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApCiAvLyBSZXNvdXJjZUhhbmRsZSBuZXZlciB1c2Vz
IGFzeW5jIGNsaWVudCBjYWxscyBvbiB0aGVzZSBwbGF0Zm9ybXMgeWV0Lgogdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjZW5kaWYKIApAQCAtNjAsMTQgKzYwLDE0IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0
ICppZDsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVT
RShDRk5FVFdPUkspCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSog
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIHR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24q
IENGVVJMQ29ubmVjdGlvblJlZjsKIHR5cGVkZWYgaW50IENGSFRUUENvb2tpZVN0b3JhZ2VBY2Nl
cHRQb2xpY3k7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiBDRkhU
VFBDb29raWVTdG9yYWdlUmVmOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZjsKICNlbmRpZgogCkBAIC05MiwxNyArOTIsMjIgQEAgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVyOwogCi1jbGFzcyBSZXNv
dXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPiwgcHVibGljIEF1
dGhlbnRpY2F0aW9uQ2xpZW50IHsKK2NsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNv
dW50ZWQ8UmVzb3VyY2VIYW5kbGU+CisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspIHx8IFVTRShDVVJMKSB8fCBVU0UoU09VUCkKKyAgICAsIHB1YmxpYyBBdXRoZW50aWNhdGlv
bkNsaWVudAorI2VuZGlmCisgICAgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2Fk
aW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZSgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUksp
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwg
UmVzb3VyY2VSZXNwb25zZSYmKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBVU0UoU09VUCkKICAgICBib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2b2lkIHJlY2Vp
dmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRl
bnRpYWwmKSBvdmVycmlkZTsKQEAgLTExMCw4ICsxMTUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNlaXZl
ZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJy
aWRlOworI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElP
TikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAgICBib29sIHRyeUhh
bmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpOwogI2VuZGlmCiAKQEAgLTExOSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkg
JiYgIVVTRShDRk5FVFdPUkspCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDb25uZWN0aW9uICpj
b25uZWN0aW9uKCkgY29uc3Q7CiAgICAgaWQgbWFrZURlbGVnYXRlKGJvb2wpOwogICAgIGlkIGRl
bGVnYXRlKCk7CkBAIC0xMjcsMTUgKzEzMywxOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAg
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJfVElNSU5HKQorI2lmIFVTRShDRk5F
VFdPUkspCisgICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25u
ZWN0aW9uUmVmLCBOZXR3b3JrTG9hZFRpbWluZyYpOworI2Vsc2UKICAgICBzdGF0aWMgdm9pZCBn
ZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKiwgTmV0d29ya0xvYWRUaW1p
bmcmKTsKICNlbmRpZgorI2VuZGlmCiAgICAgICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICAgICB2b2lkIHVuc2NoZWR1bGUo
V1RGOjpTY2hlZHVsZVBhaXImKTsKICNlbmRpZgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNl
c3Npb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IHJlbGVh
c2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKTsKQEAgLTE5OCwxMCArMjA4LDEwIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xp
ZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKCkuCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKICNlbmRpZgotI2lmIFBMQVRG
T1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxS
ZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMTcsMTAgKzIyNywxNCBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3Vu
dGVkPFJlc291cmNlSGFuZGxlPjo6ZGVyZWY7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYgc3luY2hyb25vdXNMb2FkUnVu
TG9vcE1vZGUoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JL
KQorICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNyZWF0ZVNTTFByb3BlcnRpZXNG
cm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworI2VuZGlmCisKICAgICB0
eXBlZGVmIFJlZjxSZXNvdXJjZUhhbmRsZT4gKCpCdWlsdGluQ29uc3RydWN0b3IpKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCk7CiAg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0b3IoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9yKTsKIApAQCAtMjQ5LDE5ICsyNjMsMTkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUg
eyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRl
IHsgZGVyZWYoKTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJ
T04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgZW51bSBjbGFz
cyBTY2hlZHVsaW5nQmVoYXZpb3IgeyBBc3luY2hyb25vdXMsIFN5bmNocm9ub3VzIH07CiAjZW5k
aWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICB2
b2lkIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
LCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25h
cnlSZWYgY2xpZW50UHJvcGVydGllcyk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgIHZvaWQgY3JlYXRlTlNVUkxD
b25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBi
b29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yKTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgJiYgIVVTRShDRk5FVFdPUkspCiAg
ICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVo
YXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvblByb3BlcnRpZXMpOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNyArNjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpjYW5BdXRoZW50aWNh
CiB9CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09S
SykKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKIHsK
ICAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UocmVzcG9uc2UpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiAr
MjksMTIgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykK
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENGTkVUV09SSykK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtOTYsNyArOTYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogICAgICAgICAvLyBDbGllbnQgd2ls
bCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVX
aWxsQ2FjaGVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpOwogI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgTlNDYWNo
ZWRVUkxSZXNwb25zZSAqKTsKQEAgLTExOCwxMyArMTE4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQogCi0jaWYg
UExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKElPUykg
fHwgVVNFKENGTkVUV09SSykKICAgICAgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIHsgcmV0dXJuIG51bGxw
dHI7IH0KICNlbmRpZgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogICAgICAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7
IHJldHVybiByZXNwb25zZTsgfQorI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorCiAjZWxp
ZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlICp3
aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJl
c3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+CiAjZW5kaWYKQEAgLTYxLDcgKzYxLDcgQEAg
T0JKQ19DTEFTUyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogT0JKQ19DTEFTUyBOU1VS
TENvbm5lY3Rpb247CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmOwogI2VuZGlmCiAKQEAgLTgzLDcgKzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgLCBtX2RlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZykKICAgICAgICAgICAgICwg
bV9zaG91bGRDb250ZW50U25pZmYoc2hvdWxkQ29udGVudFNuaWZmKQogICAgICAgICAgICAgLCBt
X3VzZXNBc3luY0NhbGxiYWNrcyhjbGllbnQgJiYgY2xpZW50LT51c2VzQXN5bmNDYWxsYmFja3Mo
KSkKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAg
ICAgICAsIG1fY3VycmVudFJlcXVlc3QocmVxdWVzdCkKICNlbmRpZgogI2lmIFVTRShDVVJMKQpA
QCAtMTMxLDE5ICsxMzEsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1f
ZGVmZXJzTG9hZGluZzsKICAgICAgICAgYm9vbCBtX3Nob3VsZENvbnRlbnRTbmlmZjsKICAgICAg
ICAgYm9vbCBtX3VzZXNBc3luY0NhbGxiYWNrczsKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
I2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25SZWY+
IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7
CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBt
X2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKICAgICAgICAgUmV0YWluUHRyPE5TVVJM
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdh
dGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgYm9vbCBtX3N0YXJ0V2hl
blNjaGVkdWxlZDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgICAgICBS
ZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9zdG9yYWdlU2Vzc2lvbjsKICNlbmRp
ZgogI2lmIFVTRShDVVJMKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZpc2lvbiAyMDc1NDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmICFVU0UoU09VUCkgJiYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFVU0UoU09VUCkgJiYg
KCFQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykpCiBkb3VibGUgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c19kZWZhdWx0VGltZW91dEludGVydmFsID0gSU5UX01BWDsKICNlbHNlCiAvLyBX
aWxsIHVzZSBOU1VSTFJlcXVlc3QgZGVmYXVsdCB0aW1lb3V0IHVubGVzcyBzZXQgdG8gYSBub24t
emVybyB2YWx1ZSB3aXRoIHNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKS4KQEAgLTYxOCw3ICs2
MTgsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVJlc291cmNlCiAgICAgfQog
fQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJMQ09OTkVDVElPTikgJiYgIVVT
RShTT1VQKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspICYmICFVU0Uo
U09VUCkKIHVuc2lnbmVkIGluaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhv
c3QoKQogewogICAgIC8vIFRoaXMgaXMgdXNlZCBieSB0aGUgbG9hZGVyIHRvIGNvbnRyb2wgdGhl
IG51bWJlciBvZiBpc3N1ZWQgcGFyYWxsZWwgbG9hZCByZXF1ZXN0cy4gCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25D
Ri5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAK
LSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xp
ZW50LmgiCkBAIC01MSw4ICs1MSwxOCBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVu
dGljYXRpb25DCiB7CiB9CiAKLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVuZ2UsIEF1dGhlbnRpY2F0
aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKLSAgICA6IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZShjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNo
YWxsZW5nZSkpLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChj
ZkNoYWxsZW5nZSkpLCBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChj
ZkNoYWxsZW5nZSksIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1
cmVSZXNwb25zZShjZkNoYWxsZW5nZSksIENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNmQ2hh
bGxlbmdlKSkKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVuZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhl
bnRpY2F0aW9uQ2xpZW50KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIDogQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlKFByb3RlY3Rpb25TcGFjZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90
ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDcmVkZW50aWFsKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChj
ZkNoYWxsZW5nZSkpLAorI2Vsc2UKKyAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShj
b3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCisjZW5kaWYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1
cmVDb3VudChjZkNoYWxsZW5nZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNm
Q2hhbGxlbmdlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhD
aGFsbGVuZ2VHZXRFcnJvcihjZkNoYWxsZW5nZSkpCiAgICAgLCBtX2F1dGhlbnRpY2F0aW9uQ2xp
ZW50KGF1dGhlbnRpY2F0aW9uQ2xpZW50KQogICAgICwgbV9jZkNoYWxsZW5nZShjZkNoYWxsZW5n
ZSkKIHsKQEAgLTgzLDEwICs5MywxNyBAQCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0Yo
Y29uc3QgQXV0CiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hhbGxl
bmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0aGF0
LgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3Vs
dCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLmNmU3BhY2UoKSwgY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5jZkNy
ZWRlbnRpYWwoKSwKKyNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3Jl
ZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRp
YWwoKSkpOwogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlv
blNwYWNlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
KSk7Ci0KLSAgICByZXR1cm4gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKG51bGxwdHIsIHByb3Rl
Y3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29yZUNoYWxsZW5nZS5wcmV2aW91
c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVz
cG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKKyAgICBDRlVSTEF1dGhDaGFsbGVuZ2VS
ZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFjZS5n
ZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmZhaWx1
cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmVycm9yKCkpOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3Jl
Q3JlZGVudGlhbCkKQEAgLTI3MCw3ICsyODcsOCBAQCBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVS
TFByb3RlY3Rpb25TcGFjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTFByb3RlY3Rp
b25TcGFjZUdldFJlYWxtKGNmU3BhY2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2No
ZW1lKTsKIH0KKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAKIH07CiAKLSNlbmRpZiAvLyBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
aAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEwIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgQXV0aGVudGljYXRp
b25DRl9oCisjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ0ZfaAogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3Jl
ZGVudGlhbFByaXYuaD4KIApAQCAtMzksMTAgKzQwLDIwIEBAIGNsYXNzIENyZWRlbnRpYWw7CiBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworI2lmIFBMQVRGT1JNKFdJTikKIENGVVJM
Q3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CiBDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oQ09DT0EpCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKENGVVJMQXV0
aENoYWxsZW5nZVJlZik7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCiBDcmVkZW50aWFsIGNv
cmUoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKIFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVj
dGlvblNwYWNlUmVmKTsKKyNlbmRpZgogfQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElP
TikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gQXV0aGVudGljYXRpb25D
Rl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNk
ZWZpbmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVT
RShDRk5FVFdPUkspCiAKIHR5cGVkZWYgc3RydWN0IF9DRlVSTEF1dGhDaGFsbGVuZ2UqIENGVVJM
QXV0aENoYWxsZW5nZVJlZjsKIApAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSA6IHB1YmxpYyBBCiBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKSB7fQogICAgIFdFQkNPUkVfRVhQT1JUIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwg
dW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7Ci0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5n
ZVJlZiwgQXV0aGVudGljYXRpb25DbGllbnQqKTsKIAogICAgIENGVVJMQXV0aENoYWxsZW5nZVJl
ZiBjZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdlLmdl
dCgpOyB9CkBAIC02OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcGxhdGZv
cm1Db21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYik7CiAKICAgICAvLyBQbGF0Zm9ybSBjaGFsbGVuZ2UgbWF5IGJl
IG51bGwuIElmIGl0J3Mgbm9uLW51bGwsIGl0J3MgYWx3YXlzIHVwIHRvIGRhdGUgd2l0aCBvdGhl
ciBmaWVsZHMuCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBtX2NmQ2hhbGxlbmdlOwogI2Vs
c2UKQEAgLTc4LDMgKzc5LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0KKworI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgog
Ci0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVk
ZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCkBAIC0yNTUsNCArMjU1LDQg
QEAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdAogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8v
IFVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHJldmlzaW9u
IDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlh
bFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwyNCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKLSNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAiQ3Jl
ZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgotI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLmgiCisjZWxpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3JlZGVudGlhbFN0b3JhZ2UuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBzdGF0aWMgaW5saW5lIENGVVJM
Q3JlZGVudGlhbFJlZiBjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKQpAQCAtNDUsMTEgKzU0LDI5IEBAIHN0YXRp
YyBpbmxpbmUgQ0ZVUkxDcmVkZW50aWFsUmVmIGNvcHlDcmUKIAogQ3JlZGVudGlhbCBDcmVkZW50
aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgcHJvdGVjdGlvblNwYWNlKQogeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gY3Jl
ZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlLmNmU3BhY2UoKSkpOworICAgIHJldHVybiBDcmVkZW50aWFsKGNyZWRlbnRp
YWxDRi5nZXQoKSk7CisjZWxzZQogICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENG
KGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIGF1dG8gY3JlZGVudGlhbENGID0gYWRv
cHRDRihjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlQ0Yu
Z2V0KCkpKTsKICAgICByZXR1cm4gY29yZShjcmVkZW50aWFsQ0YuZ2V0KCkpOworI2VuZGlmCit9
CisKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJz
aXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29u
c3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsU3RvcmFnZVJlZj4gc3RvcmFnZUNGID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxTdG9yYWdl
Q3JlYXRlKDApKTsKKworICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSkgeworICAgICAgICBDcmVkZW50aWFsIHNlc3Npb25DcmVkZW50
aWFsKGNyZWRlbnRpYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24pOworICAgICAg
ICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9u
U3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBzZXNzaW9uQ3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwg
cHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7CisgICAgfSBlbHNlCisgICAgICAgIENGVVJMQ3Jl
ZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9y
YWdlQ0YuZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5j
ZlNwYWNlKCkpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1
bkxvb3BDRi5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5o
IgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxsaW1pdHM+
CkBAIC04Nyw0ICs4Nyw0IEBAIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw5ICsyMywxMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQorI2lmbmRlZiBMb2FkZXJSdW5Mb29wQ0ZfaAor
I2RlZmluZSBMb2FkZXJSdW5Mb29wQ0ZfaAogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogCiB0eXBlZGVmIHN0cnVjdCBfX0NGUnVuTG9vcCogQ0ZSdW5Mb29w
UmVmOwogCkBAIC0zNSw0ICszNiw2IEBAIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCk7CiAK
IH0KIAotI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVU
V09SSykKKworI2VuZGlmIC8vIExvYWRlclJ1bkxvb3BfaApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiBOZXR3b3IKICAgICBpZiAobV9wbGF0Zm9ybVNlc3Npb24pCiAgICAgICAgIHJldHVybiBhZG9w
dENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgbV9wbGF0Zm9ybVNlc3Npb24uZ2V0KCkpKTsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICByZXR1cm4gX0NGSFRUUENvb2tpZVN0b3JhZ2VH
ZXREZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1bHQpOwogI2Vsc2UKICAgICAvLyBXaGVuIHVzaW5n
IE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBjb29raWUgc3RvcmFnZS4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNl
Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlByb3RlY3Rpb25TcGFjZUNGTmV0LmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
I2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdGVjdGlvblNwYWNlUHJpdi5oPgpAQCAtNDIsNCArNDIs
NCBAQCBib29sIFByb3RlY3Rpb25TcGFjZTo6cmVjZWl2ZXNDcmVkZW50aWFsCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmgJKHJldmlzaW9uIDIwNzU0
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNl
Q0ZOZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaAor
I2RlZmluZSBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCiAKLSNpZiAhUExBVEZPUk0oV0lOKSB8fCAh
VVNFKENGVVJMQ09OTkVDVElPTikKLSNlcnJvciBUaGlzIGhlYWRlciBzaG91bGQgb25seSBiZSBp
bmNsdWRlZCB3aGVuIHRhcmdldGluZyBXaW5kb3dzIGFuZCB1c2luZyBDRlVSTENvbm5lY3Rpb24u
CisjaWYgIVBMQVRGT1JNKFdJTikgfHwgIVVTRShDRk5FVFdPUkspCisjZXJyb3IgVGhpcyBoZWFk
ZXIgc2hvdWxkIG9ubHkgYmUgaW5jbHVkZWQgd2hlbiB0YXJnZXRpbmcgV2luZG93cyBhbmQgdXNp
bmcgQ0ZOZXR3b3JrLgogI2VuZGlmCiAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgi
CkBAIC00NywzICs0OCw1IEBAIHB1YmxpYzoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFByb3RlY3Rpb25TcGFjZUNGTmV0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCShyZXZpc2lvbiAy
MDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJy
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDEwIEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvckJhc2UuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFBMQVRG
T1JNKFdJTikKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJlYW0uaD4KICNlbmRpZgorI2lmIFBMQVRGT1JN
KFdJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d2luY3J5cHQuaD4gLy8gd2lu
ZG93cy5oIG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIHdpbmNyeXB0LmguCiAjZW5kaWYKQEAgLTYy
LDEwICs2MSwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZFcnJvclJlZiBjZkVy
cm9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNv
bnN0OwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CiAgICAgUENDRVJUX0NPTlRF
WFQgY2VydGlmaWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENlcnRpZmljYXRlKENGRGF0YVJl
Zik7CisjZW5kaWYKICAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpOwogICAg
IENGU3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0OwogICAgIG9wZXJhdG9yIENGU3Ry
ZWFtRXJyb3IoKSBjb25zdDsKQEAgLTg3LDEzICs4OCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBib29s
IG1fZGF0YUlzVXBUb0RhdGU7Ci0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRXJyb3JSZWY+IG1fcGxhdGZvcm1FcnJv
cjsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG11dGFi
bGUgUmV0YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1OU0Vycm9yOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fY2VydGlmaWNhdGU7CisjZW5k
aWYKICNlbHNlCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9wbGF0Zm9ybUVycm9y
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlRXJyb3JDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDE0ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENG
TkVUV09SSykKIAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NG
RXJyb3IuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrRXJyb3JzLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGRXJyb3JS
ZWYgY2ZFcnJvcikKQEAgLTIxNSw0ICsyMTgsNCBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBD
RlN0cmVhbUVycm9yKCkgCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVT
RShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsOCArNDYsNiBAQAogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgi
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgotI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxwcm9jZXNzLmg+
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtNTcsNiArNTUsMjAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9C
YXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgor
I2lmIFVTRShDRk5FVFdPUkspCisjaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCisjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KKyNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgorI2VuZGlmCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJ
TikKKyNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8cHJvY2Vzcy5oPgorCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZGVjbGFy
YXRpb24gb25jZSBpdCdzIGluIFdlYktpdFN1cHBvcnRMaWJyYXJ5LgogZXh0ZXJuICJDIiB7CiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZVUkxDb25uZWN0aW9uUmVmIENGVVJMQ29ubmVjdGlvbkNy
ZWF0ZVdpdGhQcm9wZXJ0aWVzKApAQCAtNjUsMTAgKzc3LDExIEBAIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBDRlVSTENvbm5lY3Rpb25SZWYKICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50ICogIGNsaWVu
dCwKICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3BlcnRpZXMpOwogfQorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09S
SykKIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBh
bGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoKQogewpAQCAtMTA3LDcgKzEyMCwxMSBAQCBS
ZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKICAgICAKIHN0YXRpYyBpbmxpbmUgQ0ZT
dHJpbmdSZWYgc2hvdWxkU25pZmZDb25uZWN0aW9uUHJvcGVydHkoKQogeworI2lmIFBMQVRGT1JN
KFdJTikKICAgICByZXR1cm4gQ0ZTVFIoIl9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRT
bmlmZiIpOworI2Vsc2UKKyAgICByZXR1cm4gX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3Vs
ZFNuaWZmOworI2VuZGlmCiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29u
bmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRl
bnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9u
YXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpCkBAIC0xNDksNiArMTY2LDkgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURp
Y3Rpb25hcnlSZWY+IHNzbFByb3BzOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHNzbFByb3Bz
ID0gYWRvcHRDRihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJl
cXVlc3QoZmlyc3RSZXF1ZXN0KCkpKTsKKyNlbHNlCiAgICAgaWYgKGFsbG93c0FueUhUVFBTQ2Vy
dGlmaWNhdGVIb3N0cygpLmNvbnRhaW5zKGZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKSkpIHsK
ICAgICAgICAgc3NsUHJvcHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShzc2xQcm9wcy5nZXQoKSwga0NGU3RyZWFtU1NMQWxsb3dzQW55Um9vdCwga0NGQm9vbGVh
blRydWUpOwpAQCAtMTYxLDggKzE4MSwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVD
RlVSTENvbm5lY3RpCiAgICAgaWYgKGNsaWVudENlcnQgIT0gY2xpZW50Q2VydGlmaWNhdGVzKCku
ZW5kKCkpIHsKICAgICAgICAgaWYgKCFzc2xQcm9wcykKICAgICAgICAgICAgIHNzbFByb3BzID0g
YWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKKyNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIHdrU2V0Q2xpZW50Q2VydGlm
aWNhdGVJblNTTFByb3BlcnRpZXMoc3NsUHJvcHMuZ2V0KCksIChjbGllbnRDZXJ0LT52YWx1ZSku
Z2V0KCkpOworI2VuZGlmCiAgICAgfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogICAgIGlm
IChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NMUHJvcGVydGllcyhyZXF1ZXN0
LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CkBAIC0xODMsNiArMjA2LDEyIEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoc3RyZWFtUHJvcGVydGllcywgQ0ZTVFIoIl9XZWJLaXRTeW5jaHJvbm91c1JlcXVlc3QiKSwg
a0NGQm9vbGVhblRydWUpOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhID0gZC0+bV9jb250ZXh0
LT5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpOworICAgIGlmIChzb3VyY2VBcHBsaWNhdGlv
bkF1ZGl0RGF0YSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGll
cywgQ0ZTVFIoImtDRlN0cmVhbVByb3BlcnR5U291cmNlQXBwbGljYXRpb24iKSwgc291cmNlQXBw
bGljYXRpb25BdWRpdERhdGEuZ2V0KCkpOworI2VuZGlmCisKICAgICBzdGF0aWMgY29uc3QgQ0ZT
dHJpbmdSZWYga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBDRlNUUigi
a0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMiKTsKICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVydGllc0RpY3Rpb25hcnk7CiAgICAgaWYgKGNs
aWVudFByb3BlcnRpZXMpCkBAIC0yMDEsNyArMjMwLDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVz
RGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMs
IHN0cmVhbVByb3BlcnRpZXMpOwogICAgIENGUmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKKyAg
ICAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7CisgICAg
ZWxzZQorICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOworI2Vs
c2UKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOworI2VuZGlmCiAg
ICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsK
IAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25E
ZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rpb25DbGllbnQoKTsKQEAgLTIyOCw2ICsyNjQsMTAgQEAgYm9v
bCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSA9ICFjbGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UodGhpcyk7CiAKKyNpZiBFTkFCTEUoV0VCX1RJTUlORykgJiYgUExBVEZPUk0oQ09DT0EpICYm
ICFIQVZFKFRJTUlOR0RBVEFPUFRJT05TKQorICAgIHNldENvbGxlY3RzVGltaW5nRGF0YSgpOwor
I2VuZGlmCisKICAgICBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yID0gY2xp
ZW50KCktPmxvYWRpbmdTeW5jaHJvbm91c1hIUigpID8gU2NoZWR1bGluZ0JlaGF2aW9yOjpTeW5j
aHJvbm91cyA6IFNjaGVkdWxpbmdCZWhhdmlvcjo6QXN5bmNocm9ub3VzOwogCiAgICAgY3JlYXRl
Q0ZVUkxDb25uZWN0aW9uKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBkLT5tX3Nob3VsZENv
bnRlbnRTbmlmZiwgc2NoZWR1bGluZ0JlaGF2aW9yLCBjbGllbnQoKS0+Y29ubmVjdGlvblByb3Bl
cnRpZXModGhpcykuZ2V0KCkpOwpAQCAtMzExLDYgKzM1MSwxNiBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKSk7CiAgICAgQVNTRVJUKGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVu
dCgpID09IHRoaXMpOyAvLyBTaG91bGQgYmUgYWxyZWFkeSBzZXQuCiAKKyNpZiAhUExBVEZPUk0o
V0lOKQorICAgIC8vIFByb3h5IGF1dGhlbnRpY2F0aW9uIGlzIGhhbmRsZWQgYnkgQ0ZOZXR3b3Jr
IGludGVybmFsbHkuIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgdXNlciBjYW5jZWxzCisgICAgLy8g
Q0ZOZXR3b3JrIGF1dGhlbnRpY2F0aW9uIGRpYWxvZywgYW5kIHdlIHNob3VsZG4ndCBhc2sgdGhl
IGNsaWVudCB0byBkaXNwbGF5IGFub3RoZXIgb25lIGluIHRoYXQgY2FzZS4KKyAgICBpZiAoY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUHJveHkoKSkgeworICAgICAgICAvLyBDYW5ub3Qg
dXNlIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCgpLCBiZWNhdXNl
IGN1cnJlbnQgY2hhbGxlbmdlIGlzIG5vdCB5ZXQgc2V0LgorICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgMCwgY2hhbGxlbmdlLmNmVVJM
QXV0aENoYWxsZW5nZVJlZigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAg
ICAgaWYgKHRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFsbGVuZ2UpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTMzMSw3ICszODEsMTEgQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYQogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYg
IWQtPm1fcGFzcy5pc051bGwoKSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFs
UmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNz
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5v
bmUpKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFs
ID0gQ3JlZGVudGlhbChjZkNyZWRlbnRpYWwuZ2V0KCkpOworI2Vsc2UKICAgICAgICAgQ3JlZGVu
dGlhbCBjcmVkZW50aWFsID0gY29yZShjZkNyZWRlbnRpYWwuZ2V0KCkpOworI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWls
dXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKQEAgLTM2MSw4ICs0MTUsMTIg
QEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYQogICAgICAgICAgICAg
ICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQg
YXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgZC0+
bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRl
bnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNw
b25zZSgpLnVybCgpKTsKICAgICAgICAgICAgICAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rp
b24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKSk7CisjZWxzZQogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENy
ZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkp
OwogICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25u
ZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFs
bGVuZ2VSZWYoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtNDEyLDEyICs0NzAsMjAgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VT
ZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25u
ZWN0aW9uKSB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgd2ViQ3JlZGVudGlhbC5jZkNy
ZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbHNlCiAg
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBh
ZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpKTsKICAgICAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0
KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CisjZW5kaWYKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAoZC0+bV9jb25uZWN0aW9uKSB7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdl
dCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKCkpOworI2Vsc2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4g
Y2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRl
bnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CisjZW5kaWYK
ICAgICB9CiAKICAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7CkBAIC01NTgsNiArNjI0LDMwIEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uUmVzdW1lKGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CiB9CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFp
cikKK3sKKyAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IHBhaXIucnVuTG9vcCgpOworICAgIGlm
ICghcnVuTG9vcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1
bGVXaXRoUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgp
KTsKKyAgICBpZiAoZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQpIHsKKyAgICAgICAgQ0ZVUkxDb25u
ZWN0aW9uU3RhcnQoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgZC0+bV9zdGFydFdo
ZW5TY2hlZHVsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnVu
c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQoreworICAgIENGUnVuTG9vcFJlZiBydW5Mb29w
ID0gcGFpci5ydW5Mb29wKCk7CisgICAgaWYgKCFydW5Mb29wKQorICAgICAgICByZXR1cm47CisK
KyAgICBDRlVSTENvbm5lY3Rpb25VbnNjaGVkdWxlRnJvbVJ1bkxvb3AoZC0+bV9jb25uZWN0aW9u
LmdldCgpLCBydW5Mb29wLCBwYWlyLm1vZGUoKSk7Cit9CisjZW5kaWYKKwogY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAogewogICAg
IHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0OwpAQCAtNTg2LDYgKzY3Niw2IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmUKIHsKICAgICBkLT5tX2Nvbm5lY3Rpb25E
ZWxlZ2F0ZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShyZXNwb25zZSk7CiB9Ci0jZW5kaWYg
Ly8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwyMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
aCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIAogI2lu
Y2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIK
ICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0yMTEsNCArMjE4LDQgQEAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2
IFJlc291cmNlSGFuZGxlQwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8g
VVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9u
IDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw5ICsy
MywxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCisjZGVmaW5lIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KQEAgLTk5LDQgKzEwMCw2IEBA
IHByb3RlY3RlZDoKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShD
RlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKworI2VuZGlmIC8vIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5o
IgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCkBAIC03NSw2ICs3NSw5IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKIAogdm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpzZXR1cFJl
cXVlc3QoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0KQogeworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRTdGFydFN5bmNocm9ub3VzbHkocmVxdWVzdCwg
MSk7CisjZW5kaWYKICAgICBDRlVSTFJlZiByZXF1ZXN0VVJMID0gQ0ZVUkxSZXF1ZXN0R2V0VVJM
KHJlcXVlc3QpOwogICAgIGlmICghcmVxdWVzdFVSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ2
LDggKzE0OSwxMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAg
ICAgICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJl
c291cmNlTG9hZCk7CiAgICAgICAgIH0KIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIGlm
IChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVydHlGb3JLZXkobV9oYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNl
SFRNTE1JTUVUeXBlIikpKQogICAgICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNm
UmVzcG9uc2UsIENGU1RSKCJ0ZXh0L2h0bWwiKSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
ICAgICAgICAgCiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJl
c3BvbnNlKTsKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKQEAgLTI4Myw3ICsyODgsMTUgQEAgQm9v
bGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbAogCiAgICAgICAgIExPRyhOZXR3
b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwKSAoJXMp
IiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZShQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSk7CisgICAgICAg
IFByb3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBpZiAoY29yZVByb3Rl
Y3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhl
bnRpY2F0aW9uU2NoZW1lVW5rbm93bikgeworICAgICAgICAgICAgbV9ib29sUmVzdWx0ID0gZmFs
c2U7CisgICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KyAgICAgICAgbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
Y29yZVByb3RlY3Rpb25TcGFjZSk7CiAgICAgfSk7CiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dh
aXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CiAgICAgcmV0dXJuIG1fYm9v
bFJlc3VsdDsKQEAgLTMzNCw0ICszNDcsNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhCiAjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJ
T04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOSArMjMsMTAgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWVfaAorI2RlZmluZSBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gKIAotI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZO
ZXR3b3JrLmg+CkBAIC03OSw0ICs4MCw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUuCiAKLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShD
Rk5FVFdPUkspCisKKyNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjA3NTQ2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBPQkpDX0NMQVNTIE5TVVJMUmVxdWVz
dDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NG
VVJMUmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVS
TFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCkBAIC02MSw3
ICs2MSwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqKTsKKyAgICB2b2lkIHVw
ZGF0ZU5TVVJMUmVxdWVzdCgpOworICAgIHZvaWQgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgp
OworI2VuZGlmCisKICAgICBSZXNvdXJjZVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVz
dCkKICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKICAgICAgICAgLCBtX2NmUmVxdWVz
dChjZlJlcXVlc3QpCkBAIC03OCw3ICs4NCwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdP
UkspCisgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9odHRwQm9keSB8fCBtX2NmUmVxdWVzdDsgfQorI2Vsc2UKICAgICBib29sIGVuY29kaW5n
UmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fbnNS
ZXF1ZXN0OyB9CisjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QgKm5zVVJM
UmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgQ0ZTdHJpbmdSZWYgaXNVc2VySW5pdGlhdGVkS2V5KCk7CkBAIC05NSw3ICsxMDUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihjb25zdCBT
dHJpbmcmIGRvbWFpbikgeyBtX2NhY2hlUGFydGl0aW9uID0gcGFydGl0aW9uTmFtZShkb21haW4p
OyB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVfRVhQ
T1JUIENGVVJMUmVxdWVzdFJlZiBjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNv
bnN0OwogICAgIHZvaWQgc2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7
CiAjZW5kaWYKQEAgLTExNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb1BsYXRm
b3JtU2V0QXNJc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGVVJM
UmVxdWVzdFJlZj4gbV9jZlJlcXVlc3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZO
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5j
bHVkZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJl
cXVlc3RQcml2Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTksMTEgKzU5
LDEyIEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjpzX2h0dHBQaXBlbGluaW5nRW4KIGJvb2wgUmVz
b3VyY2VSZXF1ZXN0OjpzX2h0dHBQaXBlbGluaW5nRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAK
LSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKIHR5cGVkZWYg
dm9pZCAoKkNGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheUZ1bmN0aW9uKShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBDRkFycmF5UmVmKTsKIHR5cGVk
ZWYgQ0ZBcnJheVJlZiAoKkNGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXlGdW5jdGlvbikoQ0ZVUkxSZXF1ZXN0UmVmKTsKIAorI2lmIFBMQVRGT1JN
KFdJTikKIHN0YXRpYyBITU9EVUxFIGZpbmRDRk5ldHdvcmtNb2R1bGUoKQogewogI2lmbmRlZiBE
RUJVR19BTEwKQEAgLTgyLDYgKzgzLDE3IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RDb3B5Q29udGVu
dERpc3Bvc2l0aW8KIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RD
b3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KEdldFBy
b2NBZGRyZXNzKGZpbmRDRk5ldHdvcmtNb2R1bGUoKSwgIl9DRlVSTFJlcXVlc3RDb3B5Q29udGVu
dERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5IikpOwogfQorI2VsaWYgUExBVEZPUk0o
Q09DT0EpCitzdGF0aWMgQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5RnVuY3Rpb24gZmluZENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxDRlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZBVUxULCAiX0NGVVJMUmVxdWVzdFNldENvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSIpKTsKK30KKworc3RhdGljIENGVVJM
UmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlv
biBmaW5kQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheUZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVl
c3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KGRs
c3ltKFJUTERfREVGQVVMVCwgIl9DRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5IikpOworfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHNldENvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShDRk11dGFibGVVUkxSZXF1ZXN0UmVm
IHJlcXVlc3QsIENGQXJyYXlSZWYgZmFsbGJhY2tBcnJheSkKIHsKQEAgLTE0NCw2ICsxNTYsMTAg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogICAgIGlmIChyZXNv
dXJjZVByaW9yaXRpZXNFbmFibGVkKCkpCiAgICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQ
cmlvcml0eShjZlJlcXVlc3QsIHRvUGxhdGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkp
OwogCisjaWYgIVBMQVRGT1JNKFdJTikKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9w
ZXJ0eShjZlJlcXVlc3QsIGtDRlVSTFJlcXVlc3RBbGxvd0FsbFBPU1RDYWNoaW5nLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CisjZW5kaWYKKwogICAgIHNldEhlYWRlckZpZWxkcyhjZlJlcXVlc3QsIGh0dHBI
ZWFkZXJGaWVsZHMoKSk7CiAKICAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29v
a2llcyhjZlJlcXVlc3QsIGFsbG93Q29va2llcygpKTsKQEAgLTE2OCw2ICsxODQsOSBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlCiAjZW5kaWYKIAogICAgIG1fY2ZS
ZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNs
ZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKKyNlbmRpZgogfQogCiAvLyBGSVhNRTogV2Ugc2hv
dWxkIHVzZSBhIHN3aXRjaCBiYXNlZCBvbiBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwYXJh
bWV0ZXIKQEAgLTIwNiwxMiArMjI1LDMwIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtSFQKICAgICB9CiAKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1ZXN0
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCk7
CisjZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCkKIHsKICAgICBpZiAoIW1fY2ZSZXF1ZXN0KSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICAvLyA8cmRhcjovL3Byb2JsZW0vOTkxMzUyNj4KKyAgICAgICAgLy8gVGhpcyBpcyBhIGhh
Y2sgdG8gbWltaWMgdGhlIHN1YnRsZSBiZWhhdmlvdXIgb2YgdGhlIEZvdW5kYXRpb24gYmFzZWQg
UmVzb3VyY2VSZXF1ZXN0CisgICAgICAgIC8vIGNvZGUuIFRoYXQgY29kZSBkb2VzIG5vdCByZXNl
dCBtX2h0dHBNZXRob2QgaWYgdGhlIE5TVVJMUmVxdWVzdCBpcyBuaWwuIEkgZmlsZWQKKyAgICAg
ICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjMzNj4gdG8g
dHJhY2sgdGhhdC4KKyAgICAgICAgLy8gQW5vdGhlciByZWxhdGVkIGJ1ZyBpcyA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzUwPi4gRml4aW5nIHRoYXQKKyAgICAg
ICAgLy8gd291bGQsIGlkZWFsbHksIGFsbG93IHVzIHRvIG5vdCBoYXZlIHRoaXMgaGFjay4gQnV0
IHVuZm9ydHVuYXRlbHkgdGhhdCBjYXVzZWQgbGF5b3V0IHRlc3QKKyAgICAgICAgLy8gZmFpbHVy
ZXMuCisgICAgICAgIC8vIFJlbW92YWwgb2YgdGhpcyBoYWNrIGlzIHRyYWNrZWQgYnkgPHJkYXI6
Ly9wcm9ibGVtLzk5NzA0OTk+LgorCisgICAgICAgIFN0cmluZyBodHRwTWV0aG9kID0gbV9odHRw
TWV0aG9kOwogICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgpOworICAgICAgICBtX2h0
dHBNZXRob2QgPSBodHRwTWV0aG9kOworI2Vsc2UKKyAgICAgICAgKnRoaXMgPSBSZXNvdXJjZVJl
cXVlc3QoKTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODcsOSArMzI0
LDEyIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAgICBpZiAo
c3RvcmFnZVNlc3Npb24pCiAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihj
ZlJlcXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGVhck9yVXBkYXRlTlNVUkxSZXF1
ZXN0KCk7CisjZW5kaWYKIH0KIAotI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21E
ZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgZGVs
ZWdhdGVQcm92aWRlZFJlcXVlc3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCShyZXZpc2lv
biAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDggQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIFJlc291cmNlUmVxdWVzdENGTmV0
X2gKKyNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaAogCiAjaW5jbHVkZSAiQ0ZOZXR3b3Jr
U1BJLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKQEAgLTMzLDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKLSNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiB2b2lkIGdldFJlc291cmNl
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBDRlVSTFJlcXVlc3RSZWYpOwogQ0ZVUkxSZXF1ZXN0
UmVmIGNmVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNzgs
MyArNzksNSBAQCBpbmxpbmUgQ0ZVUkxSZXF1ZXN0UHJpb3JpdHkgdG9QbGF0Zm9ybVJlCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlc291cmNlUmVxdWVzdENGTmV0
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNw
b25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogI2VuZGlmCiAKQEAgLTQzLDEz
ICs0MywxNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXNvdXJjZVJlc3BvbnNlKENGVVJMUmVzcG9u
c2VSZWYgY2ZSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQog
ICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbV9pc051
bGwgPSAhY2ZSZXNwb25zZTsKICAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOworI2VuZGlmCiAjZWxz
ZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAg
ICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpAQCAtODEsNyArODQsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAqLwogICAgIH0KIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNF
KENGTkVUV09SSykKICAgICBXRUJDT1JFX0VYUE9SVCBDRlVSTFJlc3BvbnNlUmVmIGNmVVJMUmVz
cG9uc2UoKSBjb25zdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTE0LDkgKzEx
NywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1F1aWNrTG9vayB7IGZhbHNlIH07CiAjZW5k
aWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBt
dXRhYmxlIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBtX2NmUmVzcG9uc2U7Ci0jZWxpZiBQ
TEFURk9STShDT0NPQSkKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG11dGFibGUg
UmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKICNlbmRpZgogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNF
KENGTkVUV09SSykKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogCkBAIC0zNCw2ICszNCwx
MCBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJp
bmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CkBAIC00Myw5ICs0NywxMyBAQCBz
dGF0aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllCiBDRlVSTFJlc3BvbnNlUmVm
IFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9j
ZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBu
c1VSTFJlc3BvbnNlKCk7CisjZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9
IG1fdXJsLmNyZWF0ZUNGVVJMKCk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2
ZXJ5IGluY29tcGxldGUgQ0ZVUkxSZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEg
c3RhdHVzIGNvZGUuCiAgICAgICAgIG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25z
ZUNyZWF0ZSgwLCB1cmwuZ2V0KCksIG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7
CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTA4
LDEwICsxMTYsMTIgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAog
ICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQog
Q2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
KCkgY29uc3QKIHsKICAgICByZXR1cm4geyB9OwogfQorI2VuZGlmCiAKIFN0cmluZyBSZXNvdXJj
ZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKQEAgLTEzMiw0
ICsxNDIsNCBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisj
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dENGTmV0LmNwcAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVT
RShDRk5FVFdPUkspCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC00OCw0ICs0OCw0IEBAIFJlc291cmNlRXJyb3Ig
U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisj
aWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BD
Ri5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNs
aWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTQxLDYgKzQwLDIwIEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgi
CisjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2luY2x1ZGUgIldlYkNvcmVV
UkxSZXNwb25zZS5oIgorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQorCisjaWYgUExBVEZPUk0o
SU9TKQorI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKKyNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2Vu
ZGlmIC8vIFBMQVRGT1JNKFdJTikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQpA
QCAtNTAsMTEgKzYzLDIwIEBAIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b24KIAogdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU6OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNs
eShyZXF1ZXN0LCAxKTsKKyNlbmRpZgogfQogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBDb25uZWN0aW9uU2NoZWR1bGluZyhDRlVS
TENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbikKIHsKKyNpZiBQTEFURk9STShXSU4pCiAgICAgQ0ZV
UkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShjb25uZWN0aW9uKTsK
KyNlbGlmIFBMQVRGT1JNKElPUykKKyAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5M
b29wKGNvbm5lY3Rpb24sIFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyNlbHNlCisgICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChjb25uZWN0
aW9uLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisjZW5k
aWYKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AoY29ubmVj
dGlvbiwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogfQogCkBAIC04
MSw2ICsxMDMsNyBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsCiAg
ICAgcmV0dXJuIG5ld0NGUmVxdWVzdDsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKIHN0YXRp
YyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewog
ICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlN
RVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKQEAgLTExMCw2ICsxMzMsNyBAQCBz
dGF0aWMgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGCiAgICAgaWYgKHJlc3VsdCAh
PSBvcmlnaW5hbFJlc3VsdCkKICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVz
cG9uc2UsIHJlc3VsdC5nZXQoKSk7CiB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCiB2
b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJl
c3BvbnNlKQogewpAQCAtMTE4LDYgKzE0MiwyMSBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lCiAgICAgaWYgKCFtX2hhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIC8vIEF2b2lkIE1JTUUgdHlwZSBzbmlm
ZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90IE1vZGlmaWVkLgorICAg
IGF1dG8gbXNnID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShjZlJlc3BvbnNlKTsKKyAg
ICBpbnQgc3RhdHVzQ29kZSA9IG1zZyA/IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0Nv
ZGUobXNnKSA6IDA7CisKKyAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQpIHsKKyAgICAgICAgYm9v
bCBpc01haW5SZXNvdXJjZUxvYWQgPSBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVzdGVy
KCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW47CisgICAgICAgIGFkanVzdE1J
TUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSwgaXNNYWluUmVzb3VyY2VMb2FkKTsKKyAgICB9
CisKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29s
UHJvcGVydHlGb3JLZXkobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVzdChEb05v
dFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVUeXBlIikpKQorICAgICAgICBD
RlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsK
KyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2Vsc2UKICAgICBpZiAoIUNGVVJMUmVzcG9uc2VH
ZXRNSU1FVHlwZShjZlJlc3BvbnNlKSkKICAgICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2Fy
eShjZlJlc3BvbnNlKTsKIApAQCAtMTI2LDYgKzE2NSw3IEBAIHZvaWQgU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmUKICAgICAgICAgQVNTRVJUKCFtX2hhbmRsZS0+c2hvdWxkQ29u
dGVudFNuaWZmKCkpOwogICAgICAgICBzZXREZWZhdWx0TUlNRVR5cGUoY2ZSZXNwb25zZSk7CiAg
ICAgfQorI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBib29sIGlzUXVpY2tMb29r
UHJldmlldyA9IGZhbHNlOwpAQCAtMTM3LDYgKzE3NywxMiBAQCB2b2lkIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lCiAjZW5kaWYKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
b3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KFdFQl9USU1JTkcpCisgICAgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRh
KGNvbm5lY3Rpb24sIHJlc291cmNlUmVzcG9uc2UubmV0d29ya0xvYWRUaW1pbmcoKSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyNlbmRpZgorCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRJc1F1aWNrTG9vayhpc1F1aWNrTG9va1By
ZXZpZXcpOwogI2VuZGlmCkBAIC0xODUsNiArMjMxLDcgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZQogCiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hlUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKKyNpZiBQTEFURk9STShX
SU4pCiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hp
bmcgZG9lcyBub3QgcmVzcGVjdCBWYXJ5IEhUVFAgaGVhZGVyLgogICAgIC8vIEZJWE1FOiBXZWJD
b3JlIGNhY2hlIGhhcyBpc3N1ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5
KS4KICAgICBDRlVSTFJlc3BvbnNlUmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVkVVJMUmVz
cG9uc2VHZXRXcmFwcGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpOwpAQCAtMTk0LDggKzI0MSwx
NiBAQCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN5bmNocm9ub3VzUmVzb3VyCiAgICAgICAgIGlm
ICh2YXJ5VmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CisjZW5kaWYgLy8gUExB
VEZPUk0oV0lOKQorCisjaWYgUExBVEZPUk0oV0lOKQogICAgIGlmIChtX2hhbmRsZS0+Y2xpZW50
KCkgJiYgIW1faGFuZGxlLT5jbGllbnQoKS0+c2hvdWxkQ2FjaGVSZXNwb25zZShtX2hhbmRsZSwg
Y2FjaGVkUmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gMDsKKyNlbHNlCisgICAgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiBuZXdSZXNwb25zZSA9IG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbENhY2hl
UmVzcG9uc2UobV9oYW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKKyAgICBpZiAobmV3UmVzcG9uc2Ug
IT0gY2FjaGVkUmVzcG9uc2UpCisgICAgICAgIHJldHVybiBuZXdSZXNwb25zZTsKKyNlbmRpZgog
CiAgICAgQ0ZSZXRhaW4oY2FjaGVkUmVzcG9uc2UpOwogICAgIHJldHVybiBjYWNoZWRSZXNwb25z
ZTsKQEAgLTIzMiw3ICsyODcsMTQgQEAgQm9vbGVhbiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDbwogCiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNl
KGhhbmRsZT0lcCAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBQcm90
ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZShwcm90ZWN0
aW9uU3BhY2UpOworICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2No
ZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29y
ZShwcm90ZWN0aW9uU3BhY2UpKTsKKyNlbmRpZgogfQogI2VuZGlmIC8vIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24g
MjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsOSArMjMsMTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisj
aWZuZGVmIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9o
CisjZGVmaW5lIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZV9oCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAKQEAgLTY2
LDQgKzY3LDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlm
IC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKworI2Vu
ZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiAr
MjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJh
Z21hIG9uY2UKKyNpZm5kZWYgQ3JlZGVudGlhbENvY29hX2gKKyNkZWZpbmUgQ3JlZGVudGlhbENv
Y29hX2gKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCiAjaW5jbHVkZSA8U2VjdXJpdHkv
U2VjQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFVTRShDRk5FVFdP
UkspCisjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCisjZW5kaWYKKwogT0JKQ19DTEFTUyBOU1VS
TENyZWRlbnRpYWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDEyICs1MiwxOCBAQCBw
dWJsaWM6CiAKICAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50aWFsUGVy
c2lzdGVuY2UpOwogCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBleHBsaWNpdCBDcmVkZW50aWFs
KENGVVJMQ3JlZGVudGlhbFJlZik7CisjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYgZW5jb2RpbmdSZXF1aXJlc1Bs
YXRmb3JtRGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAorI2lmIFVTRShDRk5FVFdPUksp
CisgICAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgpIGNvbnN0OworI2VuZGlmCiAg
ICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsK
IAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29u
c3QgQ3JlZGVudGlhbCYpOwpAQCAtNjQsMyArNzUsNSBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ3JlZGVudGlhbENvY29hX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVu
dGlhbENvY29hLm1tCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsMTMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29h
LmgiCiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdl
YkRldGFpbHMpCistIChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlh
bFJlZiljcmVkZW50aWFsOworLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFs
OworQGVuZAorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlh
bFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAtNzcsMTIgKzg0LDI2IEBAIENyZWRlbnRpYWw6
OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYKICAgICB9CiB9CiAKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlh
bCkKKyAgICA6IENyZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2lu
aXRXaXRoQ0ZVUkxDcmVkZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkKK3sKK30KKyNlbmRpZgor
CiBDcmVkZW50aWFsOjpDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAg
ICA6IENyZWRlbnRpYWxCYXNlKGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwg
dG9DcmVkZW50aWFsUGVyc2lzdGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBt
X25zQ3JlZGVudGlhbChjcmVkZW50aWFsKQogewogfQogCisjaWYgVVNFKENGTkVUV09SSykKK0NG
VVJMQ3JlZGVudGlhbFJlZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAoreworICAg
IHJldHVybiBbbnNDcmVkZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07Cit9CisjZW5kaWYKKwog
TlNVUkxDcmVkZW50aWFsICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAg
IGlmIChtX25zQ3JlZGVudGlhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHJldmlz
aW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJv
dGVjdGlvblNwYWNlQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEgKzIzLDE2IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisj
aWZuZGVmIFByb3RlY3Rpb25TcGFjZUNvY29hX2gKKyNkZWZpbmUgUHJvdGVjdGlvblNwYWNlQ29j
b2FfaAogCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAorI2lmIFVTRShDRk5FVFdPUkspCit0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2UqIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmOworI2VuZGlmCisKIE9CSkNf
Q0xBU1MgTlNVUkxQcm90ZWN0aW9uU3BhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQy
LDYgKzQ3LDkgQEAgcHVibGljOgogCiAgICAgUHJvdGVjdGlvblNwYWNlKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSBkZWxldGVkVmFsdWUpIDogUHJvdGVjdGlvblNwYWNlQmFzZShkZWxl
dGVkVmFsdWUpIHsgfQogCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBleHBsaWNpdCBQcm90ZWN0
aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpOworI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgUHJvdGVjdGlvblNwYWNlKE5TVVJMUHJvdGVjdGlvblNwYWNlICopOwog
CiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
YSwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBiKTsKQEAgLTUwLDYgKzU4LDkgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpIGNv
bnN0OwogCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBj
ZlNwYWNlKCkgY29uc3Q7CisjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFByb3RlY3Rp
b25TcGFjZSAqbnNTcGFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNTksMyArNzAsNSBAQCBw
cml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUHJvdGVj
dGlvblNwYWNlQ29jb2FfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCShyZXZpc2lv
biAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3Rl
Y3Rpb25TcGFjZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiwyMiBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQcm90ZWN0aW9uU3BhY2VDb2NvYS5oIgogCisjaWYg
VVNFKENGTkVUV09SSykKK0BpbnRlcmZhY2UgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKFdlYkRldGFp
bHMpCistIChDRlVSTFByb3RlY3Rpb25TcGFjZVJlZikgX0NGVVJMUHJvdGVjdGlvblNwYWNlOwor
LSAoaWQpX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6KENGVVJMUHJvdGVjdGlvblNwYWNl
UmVmKWNmUHJvdFNwYWNlOworQGVuZAorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
I2lmIFVTRShDRk5FVFdPUkspCitQcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZShDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZiBzcGFjZSkKKyAgICA6IFByb3RlY3Rpb25TcGFjZShhZG9wdE5T
KFtbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIF9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNw
YWNlOnNwYWNlXSkuZ2V0KCkpCit7Cit9CisjZW5kaWYKKwogc3RhdGljIFByb3RlY3Rpb25TcGFj
ZVNlcnZlclR5cGUgdHlwZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqc3BhY2UpCiB7CiAgICAgaWYg
KFtzcGFjZSBpc1Byb3h5XSkgewpAQCAtOTIsNiArMTA1LDEzIEBAIFByb3RlY3Rpb25TcGFjZTo6
UHJvdGVjdGlvblNwYWNlKE5TVVJMUHIKICAgICBtX25zU3BhY2UgPSBzcGFjZTsKIH0KIAorI2lm
IFVTRShDRk5FVFdPUkspCitDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBQcm90ZWN0aW9uU3BhY2U6
OmNmU3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiBbbnNTcGFjZSgpIF9DRlVSTFByb3RlY3Rp
b25TcGFjZV07Cit9CisjZW5kaWYKKwogTlNVUkxQcm90ZWN0aW9uU3BhY2UgKlByb3RlY3Rpb25T
cGFjZTo6bnNTcGFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbnNTcGFjZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbQkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTMsOSArNTMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTlNVUkxSZXF1ZXN0
ICpSZXNvdXJjZVJlcXVlc3Q6Om5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5
UG9saWN5KSBjb25zdAogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdChib2R5UG9saWN5KTsK
KyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIGlmICghbV9uc1JlcXVlc3QpCisgICAgICAgIGNvbnN0
X2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odGhpcyktPnVwZGF0ZU5TVVJMUmVxdWVzdCgpOworI2Vu
ZGlmCiAgICAgcmV0dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07
CiB9CiAKKyNpZiAhVVNFKENGTkVUV09SSykKKwogQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlUmVx
dWVzdDo6Y2ZVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFtuc1VSTFJlcXVlc3QoYm9keVBvbGljeSkgX0NGVVJMUmVxdWVzdF07
CkBAIC0yMzgsNiArMjQ0LDggQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNz
aW9uKAogICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyh3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VT
ZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLCBtX25zUmVxdWVzdC5nZXQoKSkpOwogfQogCisjZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQkocmV2aXNp
b24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlc3BvbnNlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDggKzc1LDEzIEBAIHZv
aWQgUmVzb3VyY2VSZXNwb25zZTo6ZGlzYWJsZUxhenlJbml0aWEKIAogQ2VydGlmaWNhdGVJbmZv
IFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQorICAgIEFTU0VSVChtX2NmUmVzcG9uc2UpOworICAgIENGVVJMUmVz
cG9uc2VSZWYgY2ZSZXNwb25zZSA9IG1fY2ZSZXNwb25zZS5nZXQoKTsKKyNlbHNlCiAgICAgQVNT
RVJUKG1fbnNSZXNwb25zZSk7CiAgICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlID0gW21f
bnNSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV07CisjZW5kaWYKIAogICAgIGlmICghY2ZSZXNwb25z
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEwOSw2ICsxMTQsMzUgQEAgQ2VydGlmaWNhdGVJ
bmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmbwogI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorCitOU1VSTFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fbnNSZXNwb25zZSAmJiAhbV9jZlJlc3BvbnNlICYmICFtX2lz
TnVsbCkgeworICAgICAgICBpbml0TlNVUkxSZXNwb25zZSgpOworICAgICAgICBtX2NmUmVzcG9u
c2UgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIF9DRlVSTFJlc3BvbnNlXTsKKyAgICAgICAgcmV0dXJu
IG1fbnNSZXNwb25zZS5nZXQoKTsKKyAgICB9CisKKyAgICBpZiAoIW1fY2ZSZXNwb25zZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmICghbV9uc1Jlc3BvbnNlKQorICAgICAgICBtX25z
UmVzcG9uc2UgPSBbTlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTptX2Nm
UmVzcG9uc2UuZ2V0KCldOworCisgICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKK30KKwor
UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlKiBuc1Jlc3Bv
bnNlKQorICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKKyAgICAsIG1fY2ZSZXNwb25z
ZShbbnNSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0pCisgICAgLCBtX25zUmVzcG9uc2UobnNSZXNw
b25zZSkKK3sKKyAgICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOworfQorCisjZWxzZQorCiBzdGF0
aWMgTlNTdHJpbmcqIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewogICAgIEAiQWdlIiwg
QCJDYWNoZS1Db250cm9sIiwgQCJDb250ZW50LVR5cGUiLCBAIkRhdGUiLCBAIkV0YWciLCBAIkV4
cGlyZXMiLCBAIkxhc3QtTW9kaWZpZWQiLCBAIlByYWdtYSIKIH07CkBAIC0yMDgsNiArMjQyLDgg
QEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYwogICAgIHJldHVybiBh
Lm5zVVJMUmVzcG9uc2UoKSA9PSBiLm5zVVJMUmVzcG9uc2UoKTsKIH0KIAorI2VuZGlmIC8vIFVT
RShDRk5FVFdPUkspCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVp
Y2tMb29rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvUXVpY2tMb29rLmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywx
MCBAQAogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIu
aD4KIAorI2lmIFVTRShDRk5FVFdPUkspCisjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCisjZW5k
aWYKKwogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNf
Q0xBU1MgTlNGaWxlSGFuZGxlOwpAQCAtNzcsNiArODEsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5n
Jik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRl
KFJlc291cmNlSGFuZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQg
ZGVsZWdhdGUpOworI2lmIFVTRShDRk5FVFdPUkspCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwor
I2VuZGlmCiAgICAgLy8gRklYTUU6IFVzZSBvZiBSZXNvdXJjZUxvYWRlciBoZXJlIGlzIGEgcGxh
dGZvcm0gdmlvbGF0aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKQEAgLTg4LDYgKzk1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkRmFpbCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAq
bnNSZXNwb25zZSgpOworI2lmIFVTRShDRk5FVFdPUkspCisgICAgQ0ZVUkxSZXNwb25zZVJlZiBj
ZlJlc3BvbnNlKCk7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8UXVp
Y2tMb29rSGFuZGxlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5t
bQkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvUXVpY2tMb29rLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDgxIEBAIGNvbnN0
IGNoYXIqIFdlYkNvcmU6OlFMUHJldmlld1Byb3RvY29sKCkKICAgICByZXR1cm4gcHJldmlld1By
b3RvY29sLmdldCgpLmRhdGEoKTsKIH0KIAorI2lmIFVTRShDRk5FVFdPUkspCisvLyBUaGUgd2F5
IFF1aWNrTG9vayB3b3JrcyBpcyB3ZSBwYXNzIGl0IGFuIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
IGNhbGxiYWNrIG9iamVjdCBhdCBjcmVhdGlvbgorLy8gdGltZS4gVGhlbiB3ZSBwYXNzIGl0IGFs
bCB0aGUgZGF0YSBhcyB3ZSByZWNlaXZlIGl0LiBPbmNlIHdlJ3ZlIGRvd25sb2FkZWQgdGhlIGZ1
bGwgVVJMLAorLy8gUXVpY2tMb29rIHR1cm5zIGFyb3VuZCBhbmQgc2VuZCB1cywgdGhyb3VnaCB0
aGlzIGRlbGVnYXRlLCB0aGUgSFRNTCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHdoaWNoIHdlCisvLyBw
YXNzIG9uIHRvIFdlYkNvcmUuIFRoZSBmbGFnIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252
ZXJ0ZXIgaW4gUXVpY2tMb29rSGFuZGxlIGRlY2lkZXMKKy8vIHdoZXRoZXIgdG8gcGFzcyB0aGUg
ZGF0YSB0byBRdWlja0xvb2sgb3IgV2ViQ29yZS4KKy8vCisvLyBUaGlzIHdvcmtzIGZpbmUgd2hl
biB1c2luZyBOUyBBUElzLCBidXQgd2hlbiB1c2luZyBDRk5ldHdvcmssIHdlIGRvbid0IGhhdmUg
YSBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZS4KKy8vIFNvIHdlIGNyZWF0ZSBXZWJRdWlja0xvb2tI
YW5kbGVBc0RlbGVnYXRlIGFzIGFuIGludGVybWVkaWF0ZSBkZWxlZ2F0ZSBvYmplY3QgYW5kIHBh
c3MgaXQgdG8KKy8vIFFMUHJldmlld0NvbnZlcnRlci4gVGhlIHByb3h5IGRlbGVnYXRlIHRoZW4g
Zm9yd2FyZHMgdGhlIG1lc3NhZ2VzIG9uIHRvIHRoZSBDRk5ldHdvcmsgY29kZS4KK0BpbnRlcmZh
Y2UgV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKKyAgICBSZWZQdHI8
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZTsKK30KKworLSAoaWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlv
bkRlbGVnYXRlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViUXVpY2tMb29rSGFuZGxlQXNE
ZWxlZ2F0ZQorLSAoaWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlCit7
CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUgPSBjb25uZWN0aW9uRGVsZWdhdGU7Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5Cit7
CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIGlmICghbV9jb25uZWN0aW9uRGVs
ZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hh
bmRsZUFzRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkoKSIpOworICAgIG1fY29ubmVjdGlv
bkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YUFycmF5KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJl
Zj4oZGF0YUFycmF5KSk7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZl
ZDoobG9uZyBsb25nKWxlbmd0aFJlY2VpdmVkCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rp
b24pOworICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZFJlY2VpdmVE
YXRhKCkgLSBkYXRhIGxlbmd0aCA9ICVsZCIsIChsb25nKVtkYXRhIGxlbmd0aF0pOworCisgICAg
Ly8gUXVpY2tMb29rIGNvZGUgc2VuZHMgdXMgYSBuaWwgZGF0YSBhdCB0aW1lcy4gVGhlIGNoZWNr
IGJlbG93IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4KKyAgICAvLyBSZXNvdXJjZUhhbmRsZU1h
Yy5jcHAgYWRkZWQgZm9yIGEgZGlmZmVyZW50IGJ1Zy4KKyAgICBpZiAoIVtkYXRhIGxlbmd0aF0p
CisgICAgICAgIHJldHVybjsKKyAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURh
dGEocmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEpLCBzdGF0aWNfY2FzdDxpbnQ+KGxl
bmd0aFJlY2VpdmVkKSk7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KK3sKKyAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmluaXNo
TG9hZGluZygpIik7CisgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZpbmlzaExvYWRpbmco
KTsKK30KKworLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisgICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRG
YWlsKCkiKTsKKyAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmFpbChyZWludGVycHJldF9j
YXN0PENGRXJyb3JSZWY+KGVycm9yKSk7Cit9CisKKy0gKHZvaWQpZGV0YWNoSGFuZGxlCit7Cisg
ICAgbV9jb25uZWN0aW9uRGVsZWdhdGUgPSBudWxscHRyOworfQorQGVuZAorI2VuZGlmCisKIEBp
bnRlcmZhY2UgV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxO
U1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsK
ICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9o
YXNTZW50RGlkUmVjZWl2ZVJlc3BvbnNlOwpAQCAtMzM5LDYgKzQxNCwyNiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvCiAgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRs
ZTsKIH0KIAorI2lmIFVTRShDRk5FVFdPUkspCitzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFu
ZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25E
ZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQoreworICAgIEFTU0VSVF9BUkco
aGFuZGxlLCBoYW5kbGUpOworICAgIGlmIChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3Rl
cigpICE9IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluIHx8ICFbUUxQcmV2aWV3R2V0
U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopQ0ZVUkxS
ZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3Bv
bnNlV2l0aENGVVJMUmVzcG9uc2U6Y2ZSZXNwb25zZV07CisgICAgV2ViUXVpY2tMb29rSGFuZGxl
QXNEZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1tXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTpjb25uZWN0aW9uRGVsZWdhdGVdIGF1dG9y
ZWxlYXNlXTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tI
YW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJl
cXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJMXSwgbmlsLCBuc1Jlc3BvbnNlLCBkZWxlZ2F0
ZSkpOworICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVp
Y2tMb29rSGFuZGxlKTsKKyAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOworfQorCitDRlVSTFJl
c3BvbnNlUmVmIFF1aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCit7CisgICAgcmV0dXJuIFtt
X25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOworfQorI2VuZGlmCisKIGJvb2wgUXVpY2tMb29r
SGFuZGxlOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ewogICAgIHJldHVybiBbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFp
bnNPYmplY3Q6bWltZVR5cGVdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHJldmlzaW9uIDIwNzU0
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9u
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTggQEAKICNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU1VSTFByb3RlY3Rpb25TcGFjZS5oPgogCisjaWYgVVNFKENGTkVUV09SSykKKyNpbXBvcnQg
IkNGTlNVUkxDb25uZWN0aW9uU1BJLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIEBpbnRlcmZhY2UgV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VT
ZW5kZXIgOiBOU09iamVjdCA8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcj4KIHsK
ICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogbV9jbGllbnQ7CisjaWYgVVNFKENGTkVUV09SSykK
KyAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgbV9jZkNoYWxsZW5nZTsKKyNlbmRpZgogfQogLSAo
aWQpaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNsaWVudDooQXV0aGVudGljYXRpb25DbGllbnQqKWNs
aWVudDsKIC0gKEF1dGhlbnRpY2F0aW9uQ2xpZW50KiljbGllbnQ7CkBAIC05NCwxMCArMTAxLDQ3
IEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE4KICAgICAgICAgbV9j
bGllbnQtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvcmUoY2hhbGxlbmdlKSk7CiB9CiAKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorLSAodm9pZClzZXRDRkNoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdl
UmVmKWNoYWxsZW5nZQoreworICAgIG1fY2ZDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Cit9CisKKy0g
KENGVVJMQXV0aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZQoreworICAgIHJldHVybiBtX2NmQ2hh
bGxlbmdlOworfQorI2VuZGlmCisKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYg
VVNFKENGTkVUV09SSykKKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCit7CisgICAgV2ViQ29yZUF1dGhlbnRp
Y2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgKmNoYWxsZW5nZVNlbmRlciA9IChXZWJDb3Jl
QXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciopIFttYWNDaGFsbGVuZ2Ugc2Vu
ZGVyXTsKKyAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2NoYWxsZW5nZVNlbmRl
ciBjZkNoYWxsZW5nZV0sIFtjaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7Cit9CisKK05TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hYyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y29yZUNoYWxsZW5nZSkKK3sKKyAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aENsaWVudCA9
IGNvcmVDaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKKyAgICBSZXRhaW5QdHI8V2Vi
Q29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXI+IGNoYWxsZW5nZVNlbmRl
ciA9IGFkb3B0TlMoW1tXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRl
ciBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNsaWVudDphdXRoQ2xpZW50XSk7CisgICAg
UmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gYXV0aENoYWxsZW5nZSA9IGNvcmVDaGFs
bGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCk7CisgICAgaWYgKCFhdXRoQ2hhbGxlbmdlKQor
ICAgICAgICBhdXRoQ2hhbGxlbmdlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlKSk7
CisgICAgW2NoYWxsZW5nZVNlbmRlci5nZXQoKSBzZXRDRkNoYWxsZW5nZTphdXRoQ2hhbGxlbmdl
LmdldCgpXTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSBfY3JlYXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFs
bGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBh
dXRvcmVsZWFzZV07CisjZWxzZQorICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFs
bGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwor
I2VuZGlmCit9CisKKyNlbHNlCisKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVk
ZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCkBAIC0x
NzEsNCArMjE1LDYgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbgog
ICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtYWNDaGFsbGVuZ2UpOwogfQogCisj
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1h
Yy5tbQkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTkgQEAK
ICNpbXBvcnQgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5o
IgotI2ltcG9ydCAiQ29va2llLmgiCi0jaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAjaW1wb3J0
ICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNv
b2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7Cit9CisKKyNpZiAhVVNF
KENGTkVUV09SSykKKworI2ltcG9ydCAiQ29va2llLmgiCisjaW1wb3J0ICJDb29raWVTdG9yYWdl
LmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xODQsNyArMTkxLDYgQEAgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcgogICAgIE5TVVJMICpjb29raWVVUkwgPSB1
cmw7CiAgICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVsZHMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0OmNvb2tpZVN0cmluZyBmb3JLZXk6QCJTZXQtQ29va2llIl07CiAKLSAg
ICAvLyBGSVhNRTogSXMgdGhpcyBuZWVkZWQgb24gaU9TLCB0b28/CiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAogICAgIE5TQXJy
YXkgKnVuZmlsdGVyZWRDb29raWVzID0gW05TSFRUUENvb2tpZSBfcGFyc2VkQ29va2llc1dpdGhS
ZXNwb25zZUhlYWRlckZpZWxkczpoZWFkZXJGaWVsZHMgZm9yVVJMOmNvb2tpZVVSTF07CiAjZWxz
ZQpAQCAtMjU0LDE1ICsyNjAsNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotc3RhdGljIE5TSFRU
UENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uKQotewotICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3Rv
cmFnZSgpOwotICAgIGlmICghY29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBz
aGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY29va2llU3RvcmFnZSkK
LSAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9y
YWdlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2lu
aXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVTdG9yYWdlLmdldCgpXSBhdXRvcmVsZWFz
ZV07Ci19Ci0KIHZvaWQgYWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvb2tpZSYgY29va2llKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTI4MywxMCArMjgwLDEyIEBAIHZvaWQgYWRkQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2kKICAgICAgICAgTlNIVFRQQ29va2llRXhwaXJl
czogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpjb29raWUuZXhwaXJlcyAv
IDEwMDAuMF0sCiAgICAgfV07CiAKKyNpZiAhVVNFKENGTkVUV09SSykKICAgICBpZiAoIWNvb2tp
ZVN0b3JhZ2UpIHsKICAgICAgICAgW1dlYkNvcmU6OmNvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikgc2V0
Q29va2llOmh0dHBDb29raWVdOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmIC8vICFV
U0UoQ0ZORVRXT1JLKQogCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZShjb29raWVT
dG9yYWdlLmdldCgpLCBbaHR0cENvb2tpZSBfQ0ZIVFRQQ29va2llXSk7CiAKQEAgLTMxMCw2ICsz
MDksMjEgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYQogICAgIHdr
RGVsZXRlQWxsSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogfQog
Cit9CisKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgYXV0byBjb29raWVTdG9yYWdlID0gc2Vz
c2lvbi5jb29raWVTdG9yYWdlKCk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlIHx8IFtOU0hUVFBD
b29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBj
b29raWVTdG9yYWdlKQorICAgICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVk
SFRUUENvb2tpZVN0b3JhZ2VdOworCisgICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2Ug
YWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZS5nZXQoKV0g
YXV0b3JlbGVhc2VdOworfQorCiB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9z
dG5hbWVzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTMzOSw2ICsz
NTMsNyBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0CiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAorCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lUG9pbnQpCiB7CiAgICAgaWYgKCFbTlNI
VFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVt
b3ZlQ29va2llc1NpbmNlRGF0ZTopXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCShyZXZp
c2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVk
ZW50aWFsU3RvcmFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKKyNpZiAh
VVNFKENGTkVUV09SSykKKwogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVk
ZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgpAQCAtNTAsMyAr
NTIsNSBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50CiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1h
Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zv
cm1EYXRhU3RyZWFtTWFjLmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQorI2lmbmRl
ZiBGb3JtRGF0YVN0cmVhbU1hY19oCisjZGVmaW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gKKworI2lm
ICFVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzcsMTEg
KzQwLDE1IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTFJlcXVlc3QqIENGVVIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGb3JtRGF0YTsKKyAgICBjbGFzcyBGb3JtRGF0YTsK
IAotdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICosIEZvcm1EYXRhKik7Ci1G
b3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7CisgICAgdm9pZCBz
ZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICosIEZvcm1EYXRhKik7CisgICAgRm9ybURh
dGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICopOwogCi1DRlN0cmluZ1JlZiBm
b3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpOworICAgIENGU3RyaW5nUmVmIGZvcm1E
YXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1N
YWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFT
dHJlYW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZv
cm1EYXRhU3RyZWFtTWFjLmgiCiAKKyNpZiAhVVNFKENGTkVUV09SSykKKwogI2ltcG9ydCAiRm9y
bURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKIApAQCAtNDksMyArNTEs
NSBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVy
cm9yTWFjLm1tCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSwxMCBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCisjaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRX
T1JLKQorI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgorI2VuZGlmCisK
IEBpbnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFzKQogLSAoTlNTdHJpbmcgKilfd2ViX2xvY2Fs
aXplZERlc2NyaXB0aW9uOwogQGVuZApAQCAtODcsNiArOTEsODUgQEAgLSAodm9pZCllbmNvZGVX
aXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogCiBAZW5kCiAKKworI2lmIFVTRShDRk5FVFdPUksp
CitzdGF0aWMgTlNFcnJvciAqTlNFcnJvckZyb21DRkVycm9yKENGRXJyb3JSZWYgY2ZFcnJvciwg
TlNVUkwgKnVybCkKK3sKKyAgICBDRkluZGV4IGVyckNvZGUgPSBDRkVycm9yR2V0Q29kZShjZkVy
cm9yKTsKKyAgICBpZiAoQ0ZFcXVhbChDRkVycm9yR2V0RG9tYWluKGNmRXJyb3IpLCBrQ0ZFcnJv
ckRvbWFpbkNGTmV0d29yaykgJiYgZXJyQ29kZSA8PSBrQ0ZVUkxFcnJvclVua25vd24gJiYgZXJy
Q29kZSA+IC00MDAwKSB7CisgICAgICAgIC8vIFRoaXMgaXMgYW4gVVJMIGVycm9yIGFuZCBuZWVk
cyB0byBiZSB0cmFuc2xhdGVkIHRvIHRoZSBOU1VSTEVycm9yRG9tYWluCisgICAgICAgIGlkIGtl
eXNbMTBdLCB2YWx1ZXNbMTBdOworICAgICAgICBDRkRpY3Rpb25hcnlSZWYgdXNlckluZm8gPSBD
RkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpOworICAgICAgICBOU0Vycm9yICpyZXN1bHQ7Cisg
ICAgICAgIE5TSW50ZWdlciBjb3VudCA9IDA7CisKKyAgICAgICAgaWYgKHVybCkgeworICAgICAg
ICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5OworICAgICAg
ICAgICAgdmFsdWVzW2NvdW50XSA9IHVybDsKKyAgICAgICAgICAgIGNvdW50ICsrOworCisgICAg
ICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7
CisgICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gW3VybCBhYnNvbHV0ZVN0cmluZ107CisgICAg
ICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorCisgICAgICAgIHZhbHVlc1tjb3VudF0gPSAo
aWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkRGVzY3Jp
cHRpb25LZXkpOworICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgeworICAgICAgICAgICAga2V5
c1tjb3VudF0gPSBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5OworICAgICAgICAgICAgY291bnQg
Kys7CisgICAgICAgIH0KKworICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFy
eUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZEZhaWx1cmVSZWFzb25LZXkpOwor
ICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgeworICAgICAgICAgICAga2V5c1tjb3VudF0gPSBO
U0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTsKKyAgICAgICAgICAgIGNvdW50ICsrOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRW
YWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOwor
ICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgeworICAgICAgICAgICAga2V5c1tjb3VudF0gPSBO
U0xvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbkVycm9yS2V5OworICAgICAgICAgICAgY291bnQg
Kys7CisgICAgICAgIH0KKworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAg
ICAgICBpZiAodXNlckluZm8gJiYgKHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUodXNlckluZm8sIGtDRlN0cmVhbVByb3BlcnR5U1NMUGVlckNlcnRpZmljYXRlcykpICE9
IG5pbCkgeworICAgICAgICAgICAgLy8gTmVlZCB0byB0cmFuc2xhdGUgdGhlIGNlcnQKKyAgICAg
ICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9yUGVlckNlcnRpZmljYXRlQ2hhaW5LZXkiOwor
ICAgICAgICAgICAgY291bnQgKys7CisKKyAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVu
dENlcnRpZmljYXRlcyk7CisgICAgICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgeworICAgICAg
ICAgICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9yQ2xpZW50Q2VydGlmaWNhdGVDaGFpbktl
eSI7CisgICAgICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9r
Q0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmljYXRlU3RhdGUpOworICAgICAgICAgICAg
aWYgKHZhbHVlc1tjb3VudF0pIHsKKyAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNF
cnJvckNsaWVudENlcnRpZmljYXRlU3RhdGVLZXkiOworICAgICAgICAgICAgICAgIGNvdW50ICsr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
CisKKyAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlv
bmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJUcnVzdCkpICE9
IG5pbCkgeworICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFBl
ZXJUcnVzdEVycm9yS2V5OworICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQorCisgICAg
ICAgIGtleXNbY291bnRdID0gTlNVbmRlcmx5aW5nRXJyb3JLZXk7CisgICAgICAgIHZhbHVlc1tj
b3VudF0gPSAoaWQpY2ZFcnJvcjsKKyAgICAgICAgY291bnQgKys7CisKKyAgICAgICAgcmVzdWx0
ID0gW1dlYkN1c3RvbU5TVVJMRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4g
Y29kZTooZXJyQ29kZSA9PSBrQ0ZVUkxFcnJvclVua25vd24gPyAoQ0ZJbmRleClOU1VSTEVycm9y
VW5rbm93biA6IGVyckNvZGUpIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3RzOnZhbHVlcyBmb3JLZXlzOmtleXMgY291bnQ6Y291bnRdXTsKKyAgICAgICAgaWYgKHVz
ZXJJbmZvKQorICAgICAgICAgICAgQ0ZSZWxlYXNlKHVzZXJJbmZvKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIChOU0Vycm9yICopY2ZFcnJvcjsKK30KKyNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xMDcsNiArMTkwLDUzIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJv
cj4gY3JlYXRlTlNFcnJvckYKICAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGlu
aXRXaXRoRG9tYWluOnJlc291cmNlRXJyb3IuZG9tYWluKCkgY29kZTpyZXNvdXJjZUVycm9yLmVy
cm9yQ29kZSgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CiB9CiAKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorCitSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKmVycm9yKQorICAg
IDogUmVzb3VyY2VFcnJvckJhc2UoVHlwZTo6TnVsbCkKKyAgICAsIG1fZGF0YUlzVXBUb0RhdGUo
ZmFsc2UpCisgICAgLCBtX3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVm
PihlcnJvcikpCit7CisgICAgaWYgKGVycm9yKQorICAgICAgICBzZXRUeXBlKChbZXJyb3IgY29k
ZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6OlRpbWVvdXQgOiBUeXBlOjpHZW5lcmFs
KTsKK30KKworTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJvcigpIGNvbnN0Cit7CisgICAg
aWYgKGlzTnVsbCgpKSB7CisgICAgICAgIEFTU0VSVCghbV9wbGF0Zm9ybUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBpZiAobV9wbGF0Zm9ybU5TRXJyb3IpCisgICAg
ICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKKworICAgIGlmIChtX3BsYXRmb3Jt
RXJyb3IpIHsKKyAgICAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG1fcGxhdGZvcm1FcnJvci5nZXQo
KTsKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gdXNlckluZm8gPSBhZG9wdENG
KENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAg
IG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21DRkVycm9yKGVycm9yLCAoTlNVUkwgKilb
KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9iamVjdEZvcktleTooaWQpIGtDRlVSTEVy
cm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7CisgICAgICAgIC8vIElmIE5TRXJyb3JGcm9tQ0ZFcnJv
ciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCByZXR1cm4gdGhhdC4KKyAgICAgICAgaWYg
KG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vycm9yICopZXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7CisKKyAgICAgICAgLy8gT3RoZXJ3aXNl
IGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNFcnJvciBmcm9tIHRoZSBDRkVycm9yLgor
I2VuZGlmCisgICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxs
b2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNGRXJyb3JHZXREb21haW4oZXJyb3IpIGNv
ZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5m
by5nZXQoKV0pOworICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7CisgICAg
fQorCisgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJy
b3JCYXNlKCp0aGlzKTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Cit9CisK
K1Jlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3IgKigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG5zRXJyb3IoKTsKK30KKworI2Vsc2UKKwogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihO
U0Vycm9yICpuc0Vycm9yKQogICAgIDogUmVzb3VyY2VFcnJvckJhc2UoVHlwZTo6TnVsbCkKICAg
ICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCkBAIC0xNzksNCArMzA5LDYgQEAgUmVzb3VyY2VF
cnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbgogICAgIHJldHVybiBjZkVycm9yKCk7CiB9
CiAKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTU4LDYgKzU4LDE2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+
CisjZW5kaWYKK3R5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlv
blJlZjsKK2V4dGVybiAiQyIgeworQ0ZEaWN0aW9uYXJ5UmVmIF9DRlVSTENvbm5lY3Rpb25Db3B5
VGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYpOworfQorI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCisKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBv
cnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpAQCAtODAsNiArOTAsOCBAQCAtKGlkKV9p
bml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKKyNpZiAhVVNFKENGTkVUV09SSykKKyAgICAKIHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNB
dXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVu
dGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBTdHJpbmcgYXV0aGVudGljYXRpb25IZWFkZXIgPSAi
QmFzaWMgIiArIGJhc2U2NEVuY29kZShTdHJpbmcoY3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBj
cmVkZW50aWFsLnBhc3N3b3JkKCkpLnV0ZjgoKSk7CkBAIC0zMTcsNiArMzI5LDggQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMbwogICAgICAgICBbZC0+bV9jb25uZWN0
aW9uIHNldERlZmVyc0NhbGxiYWNrczpkZWZlcnNdOwogfQogCisjaWYgIVVTRShDRk5FVFdPUksp
CisKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIHsK
ICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5zUnVuTG9vcCgpOwpAQCAtMzM1LDYgKzM0
OSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICAgICAg
W2QtPm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JN
b2RlOihOU1N0cmluZyAqKXBhaXIubW9kZSgpXTsKIH0KIAorI2VuZGlmCisKIGlkIFJlc291cmNl
SGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKIHsK
ICAgICBBU1NFUlQoIWQtPm1fZGVsZWdhdGUpOwpAQCAtNzE0LDE0ICs3MzAsMjcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZQogCiAgICAgWyhpZClkZWxlZ2F0ZSgp
IGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQotCisgICAgCisjZW5kaWYg
Ly8gIVVTRShDRk5FVFdPUkspCisgICAgCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCisKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorICAgIAordm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRp
bWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIE5ldHdvcmtMb2FkVGltaW5n
JiB0aW1pbmcpCit7CisgICAgY29weVRpbWluZ0RhdGEoKF9fYnJpZGdlIE5TRGljdGlvbmFyeSop
YWRvcHRDRihfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoY29ubmVjdGlvbikpLmdldCgp
LCB0aW1pbmcpOworfQorICAgIAorI2Vsc2UKICAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6Omdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTmV0d29y
a0xvYWRUaW1pbmcmIHRpbWluZykKIHsKICAgICBjb3B5VGltaW5nRGF0YShbY29ubmVjdGlvbiBf
dGltaW5nRGF0YV0sIHRpbWluZyk7CiB9CiAgICAgCisjZW5kaWYKKyAgICAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVx
dWVzdE1hYy5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorCitAaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0RGV0YWlscykKKy0g
KENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OworLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1
ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaWYgVVNFKENGTkVUV09SSykKKworUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVl
c3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCisgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkK
KyAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCisgICAgLCBtX25z
UmVxdWVzdChuc1JlcXVlc3QpCit7Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVO
U1VSTFJlcXVlc3QoKQoreworICAgIGlmIChtX2NmUmVxdWVzdCkKKyAgICAgICAgbV9uc1JlcXVl
c3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6
bV9jZlJlcXVlc3QuZ2V0KCldKTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9T
eW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQkocmV2aXNpb24g
MjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25v
dXNMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIgogCisj
aWYgIVVTRShDRk5FVFdPUkspCisKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiwxMCArMzgsMTQgQEAgdm9pZCBTeW5jaHJv
bm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZQogICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgY29u
dGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5n
ZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwogfQogCisjaWYgIVVTRShDRk5FVFdP
UkspCiBSZXNvdXJjZUVycm9yIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJl
c3BvbnNlRXJyb3IoKQogewogICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IGFkb3B0TlMo
W1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNV
UkxFcnJvckJhZFNlcnZlclJlc3BvbnNlIHVzZXJJbmZvOm5pbF0pOwogICAgIHJldHVybiBlcnJv
ci5nZXQoKTsKIH0KKyNlbmRpZgogCiB9CisKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgJKHJldmlzaW9uIDIw
NzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQor
I2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKKyNkZWZpbmUgV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlc291cmNlSGFuZGxlOwpAQCAtMzMsOCArMzQsMTMgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7
CiAtICh2b2lkKWRldGFjaEhhbmRsZTsKIEBlbmQKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQorCiBA
aW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNV
UkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogfQogLSAoaWQpaW5pdFdpdGhI
YW5kbGU6KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7CiBAZW5kCisKKyNlbmRpZiAv
LyAhVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQko
cmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLmgiCiAKKyNpZiAhVVNFKENGTkVUV09SSykKKwogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAj
aW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0yNzQsMyArMjc2LDYgQEAgLSAoTlNDYWNoZWRVUkxSZXNw
b25zZSAqKWNvbm5lY3Rpb246KE5TVQogfQogCiBAZW5kCisKKyNlbmRpZiAvLyAhVVNFKENGTkVU
V09SSykKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMywxMCBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQorI2lm
bmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAorI2Rl
ZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAorCisj
aWYgIVVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRlICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KQEAgLTU1LDMgKzU4LDYg
QEAgQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdAogQGludGVyZmFjZSBX
ZWJDb3JlUmVzb3VyY2VIYW5kbGVXaXRoQ3JlZGVudGlhbFN0b3JhZ2VBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUgOiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUK
IAogQGVuZAorCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0JKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAorI2lm
ICFVU0UoQ0ZORVRXT1JLKQorCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgog
I2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTMy
NywzICszMjksNiBAQCAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvCiB9
CiAKIEBlbmQKKworI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQorCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICsz
MjUsNyBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwCiB9CiAjZW5k
aWYKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQogTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGly
ZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTFJlcXVlc3QgKmN1cnJlbnRSZXF1ZXN0LCBOU1VS
TFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpCiB7
CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zMzgsNSArMzM5LDYgQEAgTlNVUkxSZXNw
b25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9ucwogICAgIE5TRGljdGlvbmFyeSAqc3ludGhl
c2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkcyA9IEB7IEAiTG9jYXRpb24iOiBbW25ld1JlcXVlc3Qg
VVJMXSBhYnNvbHV0ZVN0cmluZ10sIEAiQ2FjaGUtQ29udHJvbCI6IEAibm8tc3RvcmUiIH07CiAg
ICAgcmV0dXJuIFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbY3VycmVu
dFJlcXVlc3QgVVJMXSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZI
VFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxk
c10gYXV0b3JlbGVhc2VdOwogfQorI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiAyMDc1
NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKLSNpZiAhVVNFKENGVVJMQ09O
TkVDVElPTikKKyNpZiAhVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgi
CiAjZW5kaWYKIApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcg
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQogdm9p
ZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50ZWQo
KTsgfQogCi0jaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgIVVTRShDRk5FVFdPUkspCiB2
b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFja1B0cikg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaAkocmV2aXNpb24gMjA3
NTQ2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVm
aXguaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw5IEBACiAjZGVmaW5lIE9CU09MRVRF
X0NPTE9SU1lOQ19BUEkKICNlbmRpZgogI2VuZGlmCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQorLyogV2luZG93cyBkb2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3Jr
LmggdmlhIENvcmVTZXJ2aWNlcy5oLCBzbyB3ZSBkbworICAgaXQgZXhwbGljaXRseSBoZXJlIHRv
IG1ha2UgV2luZG93cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBNYWMuICovCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGTmV0d29yay5oPgogLy8gT24gV2luZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0byBi
ZSBpbmNsdWRlZCBiZWZvcmUgY2VydGFpbiBDRk5ldHdvcmsgaGVhZGVycy4KICNpbmNsdWRlIDxk
aXNwYXRjaC9kaXNwYXRjaC5oPgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTQ2KQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTYtMTAtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZlcnQgcjIwNzE1MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAg
IChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51
ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5h
Z2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJl
amVjdGlvbik6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxNi0xMC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBYUGF0aCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIwNzU0
NikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDggKzc5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhQXJyYXkoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVmKSBvdmVycmlkZTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCisgICAgdm9p
ZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CisjZWxzZQogICAgIHZvaWQgd2lsbENhY2hlUmVz
cG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2Ug
Kikgb3ZlcnJpZGU7CiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZShib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsMTAgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsK
ICNlbmRpZgogI2VuZGlmCiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2luY2x1ZGUgPENGTmV0d29y
ay9DRlVSTERvd25sb2FkUHJpdi5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIH0KQEAgLTEzNSw2ICsxMzksOSBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxXS0Rvd25sb2FkQXNEZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCisj
aWYgVVNFKENGTkVUV09SSykKKyAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3du
bG9hZDsKKyNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkTmFtZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEb3du
bG9hZC5oIgogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgIVVTRShDRk5FVFdPUksp
ICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CkBA
IC0yNzIsNCArMjcyLDQgQEAgLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25s
bwogCiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyNlbmRpZiAvLyAh
VVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCShyZXZp
c2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a0xvYWRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1w
b3J0ICJjb25maWcuaCIKKwogI2ltcG9ydCAiTmV0d29ya0xvYWQuaCIKIAogI2ltcG9ydCA8V2Vi
Q29yZS9DRk5ldHdvcmtTUEkuaD4KQEAgLTMzLDYgKzM0LDE3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2lmIFVTRShDRk5FVFdPUkspCisKK3Zv
aWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQoreworICAgIEFTU0VSVF9V
TlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOworCisgICAgbV9oYW5kbGUtPmNvbnRp
bnVlV2lsbENhY2hlUmVzcG9uc2UoY2ZSZXNwb25zZSk7Cit9CisKKyNlbHNlCisKIHZvaWQgTmV0
d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
TlNDYWNoZWRVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhh
bmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKQEAgLTQwLDQgKzUyLDYgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYwogICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxD
YWNoZVJlc3BvbnNlKG5zUmVzcG9uc2UpOwogfQogCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjA3
NTQ2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0
ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2Rl
ciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAgICBlbmNvZGVyIDw8IHVp
UHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAg
LTI0MCw3ICsyNDAsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
cmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0cnVj
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVx
dWVzdFRpbWVvdXRJbnRlcnZhbDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVu
dGlmaWVyOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25N
YW5hZ2VyQ29jb2EubW0JKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzIsMjcgKzMyLDM3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCkKIHsKKyNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGljYXRp
b25DaGFsbGVuZ2Uuc2VuZGVyKCkgdXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlh
bCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5z
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CisjZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlh
bChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
CiB7CisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNl
bmRlcigpIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCld
OworI2VuZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENhbmNl
bGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpCiB7CisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLnNlbmRlcigpIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CisjZW5kaWYKIH0KIAog
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1
bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpCiB7CisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLnNlbmRlcigpIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCldOworI2VuZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZl
ZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpCiB7CisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVl
V2l0aENoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCldOworI2VuZGlmCiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAy
MDc1NDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
IAorI2lmIFVTRShDRk5FVFdPUkspCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+
CisjZW5kaWYKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0
IDxXZWJDb3JlL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oPgpAQCAtNTMsNiArNTcsMzYgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBJUEMgewogCisjaWYgVVNFKENGTkVUV09SSykKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit7CisgICAg
UmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VS
ZXF1ZXN0LmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKworICAgIGJvb2wgcmVx
dWVzdElzUHJlc2VudCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKKyAgICBlbmNvZGVyIDw8IHJlcXVl
c3RJc1ByZXNlbnQ7CisKKyAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0ZXIg
cGVyZm9ybWFuY2UuCisgICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRv
LCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMgbmV0
d29ya2luZy4KKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJvZHkgPSBhZG9w
dENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHkocmVxdWVzdFRvU2VyaWFsaXplLmdl
dCgpKSk7CisgICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhUVFBCb2R5U3Ry
ZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVl
c3RUb1NlcmlhbGl6ZS5nZXQoKSkpOworICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkgfHwgcmVxdWVz
dEhUVFBCb2R5U3RyZWFtKSB7CisgICAgICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0YWJs
ZVJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCByZXF1ZXN0VG9TZXJp
YWxpemUuZ2V0KCkpOworICAgICAgICByZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9wdENGKG11dGFi
bGVSZXF1ZXN0KTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KG11dGFi
bGVSZXF1ZXN0LCBuaWwpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHlT
dHJlYW0obXV0YWJsZVJlcXVlc3QsIG5pbCk7CisgICAgfQorCisgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJp
YWxpemFibGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9r
ZW5OdWxsVHlwZVJlZigpKSk7CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5n
ZXQoKSk7CisKKyAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVl
c3QsIGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6
YWJsZVJlcHJlc2VudGF0aW9uLgorICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3Bv
bnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CisgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7Cit9CisjZWxzZQogdm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsK
ICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJj
ZVJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwpAQCAtNzksNiArMTEz
LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuYwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShyZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShyZXNvdXJjZVJlcXVlc3QuY2FjaGVQb2xpY3koKSk7CiB9CisjZW5kaWYKIAog
Ym9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKQEAg
LTk1LDExICsxMzAsMTkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRl
YwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgUmV0YWluUHRyPENGVVJMUmVx
dWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZyb21T
ZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVs
bFR5cGVSZWYoKSkpOworICAgIGlmICghY2ZVUkxSZXF1ZXN0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1ZXN0
LmdldCgpKTsKKyNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0
ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFy
eS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxSZXF1ZXN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsKKyNlbmRpZgogICAgIAogICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkpKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUwLDYgKzEwNTAsNyBAQAogCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRJ
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2
RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCAqLzsgfTsKIAkJNUMxNDI3MDYxQzIz
Rjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGODFDMjNGODQzMDBENDExODMgLyogRG93
bmxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8qIERv
d25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oICovOyB9
OworCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRDFDMjNGODg1MDBE
NDExODMgLyogRG93bmxvYWRJT1MubW0gKi87IH07CiAJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4
MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMTQyNzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLzsg
fTsKIAkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwOTFDMjNGODY5
MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLzsgfTsKIAkJNUMxNDI3MTgxQzIzRjhCNzAw
RDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8qIEN1c3Rv
bVByb3RvY29sTWFuYWdlci5oICovOyB9OwpAQCAtMzEyNyw2ICszMTI4LDcgQEAKIAkJNUMxNDI2
RjgxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDMTQyNkY5MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRG93bmxvYWRNYW5hZ2VyLmg7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzA5MUMyM0Y4NjkwMEQ0MTE4MyAvKiBEb3dubG9h
ZENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxv
YWRDb2NvYS5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9h
ZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzE0MjcwRDFDMjNGODg1
MDBENDExODMgLyogRG93bmxvYWRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBEb3dubG9hZElPUy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQy
NzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkTWFjLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXIu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MTUxQzIzRjhCMDAw
RDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTczMyw2ICs1NzM1LDcgQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUMxNDI3MDgxQzIzRjg1MjAw
RDQxMTgzIC8qIGNvY29hICovLAorCQkJCTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3Mg
Ki8sCiAJCQkJNUMxNDI3MEIxQzIzRjg3MTAwRDQxMTgzIC8qIG1hYyAqLywKIAkJCQk4M0JGQUM0
MTFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLywKIAkJCQk4M0JG
QUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggKi8sCkBAIC01Nzcz
LDYgKzU3NzYsMTQgQEAKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk1QzE0MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1QzE0MjcwRDFDMjNGODg1MDBENDEx
ODMgLyogRG93bmxvYWRJT1MubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTVDMTQyNzFBMUMyM0Y4QkYwMEQ0MTE4MyAvKiBD
b2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MDc1
LDYgKzkwODYsNyBAQAogCQkJCTVDMTQyNzAxMUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURGNjMxMjE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxv
YWRDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcxMzFDMjNGODlFMDBENDExODMg
LyogRG93bmxvYWRDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDMTQyNzExMUMyM0Y4OUUw
MEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEyMUMy
M0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQy
NzA2MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0xOSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmVydCByMjA3MTUxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjM2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAg
ICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisKIDIwMTYtMTAt
MTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBGaXggQ01ha2UgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAyMDc1
NDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMCiAgICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhvc3Qt
Pmhhc1JlcXVlc3RzKCk7CiAgICAgaG9zdC0+c2NoZWR1bGUocmVzb3VyY2VMb2FkZXIsIHByaW9y
aXR5KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIGlmIChSZXNvdXJjZVJlcXVl
c3Q6OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSAmJiAhaXNTdXNwZW5kaW5nUGVuZGluZ1Jl
cXVlc3RzKCkpIHsKICAgICAgICAgLy8gU2VydmUgYWxsIHJlcXVlc3RzIGF0IG9uY2UgdG8ga2Vl
cCB0aGUgcGlwZWxpbmUgZnVsbCBhdCB0aGUgbmV0d29yayBsYXllci4KICAgICAgICAgLy8gRklY
TUU6IERvZXMgdGhpcyBjb2RlIGRvIGFueXRoaW5nIHVzZWZ1bCwgZ2l2ZW4gdGhhdCB3ZSBhbHNv
IHNldCBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9zdCB0byBlZmZlY3RpdmVseSB1bmxpbWl0ZWQg
b24gdGhlc2UgcGxhdGZvcm1zPwpJbmRleDogU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU0NikK
KysrIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTYtMTAtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZlcnQgcjIwNzE1MQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHA6CisKIDIwMTYtMTAtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Q0YuY3BwCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViS2l0L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsOCArMjcsOCBAQAogLy8gYmVmb3JlIGluY2x1ZGluZyBhbnkgb3RoZXIgZmlsZXMuIEZhaWxp
bmcgdG8gaW5jbHVkZSBjb25maWcuaCB3aWxsIGxlYXZlCiAvLyBVU0VfQ0YgdW5kZWZpbmVkLCBj
YXVzaW5nIGJ1aWxkIGZhaWx1cmVzIGluIHRoaXMKIC8vIGZpbGUuIEJ1dCBNYWMgZG9lc24ndCBo
YXZlIGEgY29uZmlnLmggZm9yIFdlYktpdCwgc28gd2UgY2FuJ3QgaW5jbHVkZSB0aGUKLS8vIFdp
bmRvd3Mgb25lIGhlcmUuIEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBtYW51YWxs
eSwKLS8vIGJ1dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlvbi4KKy8vIFdpbmRv
d3Mgb25lIGhlcmUuIEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBhbmQKKy8vIFVT
RV9DRk5FVFdPUksgbWFudWFsbHksIGJ1dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1
dGlvbi4KICNpZm5kZWYgVVNFX0NGCiAjZGVmaW5lIFVTRV9DRiAxCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIy
MDcxNTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWQgX2luaXRXaXRoTG9h
ZGluZ0NGVVJMQ29ubmVjdGlvbjpyZXF1ZXN0OnJlc3BvbnNlOmRlbGVnYXRlOnByb3h5Ol0pOgor
ICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1
cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxv
b3A6Zm9yTW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6
Zm9yTW9kZTpdKToKKwogMjAxNi0xMC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBYUGF0aCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0JKHJldmlzaW9uIDIwNzU0NikK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDExIEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKIAorI2lm
IFVTRShDRk5FVFdPUkspCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjaW1wb3J0
IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIEBjbGFzcyBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5OwpAQCAtNTYs
NiArNjEsMTQgQEAgLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcgogICAg
ICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6
KE5TU3RyaW5nICopZGlyZWN0b3J5OwogCisjaWYgVVNFKENGTkVUV09SSykKKy0gKGlkKV9pbml0
V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9u
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYp
cmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNw
b25zZVJlZilyZXNwb25zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZToo
aWQpZGVsZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KE5TVVJM
Q29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eTsKKyNlbmRpZgorCiBAZW5kCiAKIEBpbnRl
cmZhY2UgV2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0IDxOU1VSTERvd25sb2FkRGVsZWdh
dGU+CkBAIC0yMTgsNiArMjMxLDE4IEBAIC0gKGlkKV9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9u
OihOU1VSTEMKICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9uOmNv
bm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJ
bnRlcm5hbCBwcm94eTpwcm94eV07CiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorLSAoaWQpX2lu
aXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rp
b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJl
ZilyZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJl
c3BvbnNlUmVmKXJlc3BvbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRl
OihpZClkZWxlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNV
UkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Cit7CisgICAgW3NlbGYgX3NldFJlYWxE
ZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ0ZV
UkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNl
IGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Cit9CisjZW5kaWYKKwogLSAoaWQp
X2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICBk
ZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICop
ZGlyZWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50
ZXJuYWwuaAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJE
b3dubG9hZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDEwIEBACiAqLwog
IAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+CisKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgorI2VuZGlmCiAgCiBA
aW50ZXJmYWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0aW9uKQogKyhpZClfZG93bmxv
YWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KQEAg
LTM5LDQgKzQzLDEyIEBAIEBpbnRlcmZhY2UgV2ViRG93bmxvYWQgKFdlYkRvd25sb2FkQ3JlYXQK
ICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAgICAgICAg
ZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKIAorI2lmIFVTRShDRk5FVFdPUkspCisr
IChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9u
UmVmKWNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5OworI2VuZGlmCisKIEBlbmQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzA0LDcgKzMwNCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJl
CiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gbWFpblJlc291cmNlTG9hZGVyLT5oYW5k
bGUoKTsKIAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgQVNTRVJUKFtXZWJEb3dubG9hZCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0
aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJveHk6KV0pOworICAgIGF1dG8gY29ubmVj
dGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOworICAgIFtXZWJE
b3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uLmdl
dCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNl
OnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVn
YXRlXSBwcm94eTpuaWxdOworI2Vsc2UKICAgICBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aExv
YWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigpIHJlcXVlc3Q6cmVxdWVzdC5uc1VS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2Uo
KSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOworI2VuZGlm
CiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGludCBsZW5n
dGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0J
KHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MDEsNyArMTgwMSw3IEBAICsgKHZvaWQpX2Ns
ZWFyTmV0d29ya0xvYWRlclNlc3Npb24KICsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVy
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGlj
eQogewogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdl
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVT
dG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90
IGNhbGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gYnVpbGRpbmcgd2l0aG91dCBVU0UoQ0ZORVRXT1JLKSBhbmQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVm
b3JlaGFuZC4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNv
b2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjc4OSwxNCArNjc4OSwyNCBAQCAt
IChpZCljYW5kaWRhdGVMaXN0CiAKIC0gKHZvaWQpc2NoZWR1bGVJblJ1bkxvb3A6KE5TUnVuTG9v
cCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlCiB7CisjaWYgVVNFKENGTkVUV09S
SykKKyAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWlyUnVuTG9vcCA9IFtydW5Mb29wIGdldENG
UnVuTG9vcF07CisjZWxzZQorICAgIE5TUnVuTG9vcCAqc2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1
bkxvb3A7CisjZW5kaWYKICAgICBpZiAocnVuTG9vcCAmJiBtb2RlKQotICAgICAgICBjb3JlKHNl
bGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUocnVuTG9vcCwgKENGU3Ry
aW5nUmVmKW1vZGUpKTsKKyAgICAgICAgY29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVk
dWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7
CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29w
IGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogeworI2lmIFVTRShDRk5FVFdPUkspCisgICAgQ0ZS
dW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwor
I2Vsc2UKKyAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOworI2Vu
ZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKLSAgICAgICAgY29yZShzZWxmKS0+cmVtb3Zl
U2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIChDRlN0cmluZ1JlZilt
b2RlKSk7CisgICAgICAgIGNvcmUoc2VsZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBh
aXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQog
CiBzdGF0aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8V2ViRG9jdW1lbnRTZWFyY2hpbmc+ICpz
ZWFyY2hWaWV3LCBOU1N0cmluZyAqc3RyaW5nLCBXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTYtMTAtMTkgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZl
cnQgcjIwNzE1MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJEb3du
bG9hZC5oOgorICAgICAgICAqIFdlYkVycm9yLmNwcDoKKyAgICAgICAgKFdlYkVycm9yOjpsb2Nh
bGl6ZWREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmljYXRl
KToKKyAgICAgICAgKiBXZWJFcnJvci5oOgorICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29weSk6CisgICAg
ICAgICogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOgorICAgICAgICAoV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmluaXRXaXRoUHJvdGVjdGlvblNwYWNlKToKKyAgICAg
ICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppbml0V2l0aEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJV
UkxSZXNwb25zZTo6c3NsUGVlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25z
ZS5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Q2FjaGVN
b2RlbCk6CisgICAgICAgIChXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICh1cGRhdGVTaGFyZWRT
ZXR0aW5nc0Zyb21QcmVmZXJlbmNlc0lmTmVlZGVkKToKKwogMjAxNi0xMC0xOCAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBtYW55IG1pc2NlbGxhbmVvdXMg
Y2xhc3NlcyBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzU0NikKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViRG93bmxvYWQuaAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE1IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgV2ViRG93bmxv
YWRfaAorI2RlZmluZSBXZWJEb3dubG9hZF9oCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisj
aWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYu
aD4KICNlbGlmIFVTRShDVVJMKQogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybERvd25sb2FkLmg+CkBA
IC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOwogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxD
cmVkZW50aWFsKiwgX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKik7CiAK
LSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gQ0ZV
UkxEb3dubG9hZCBDYWxsYmFja3MKICAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgQ0ZVUkxSZXF1
ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYp
OwpAQCAtMTA4LDcgKzEwOSw3IEBAIHByb3RlY3RlZDoKIAogICAgIFdURjo6U3RyaW5nIG1fZGVz
dGluYXRpb247CiAgICAgV1RGOjpTdHJpbmcgbV9idW5kbGVQYXRoOwotI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9h
ZFJlZj4gbV9kb3dubG9hZDsKICNlbGlmIFVTRShDVVJMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpD
dXJsRG93bmxvYWQ+IG1fZG93bmxvYWQ7CkBAIC0xMjIsMyArMTIzLDYgQEAgcHJvdGVjdGVkOgog
ICAgIGludCBtX3JlY2VpdmVkOwogI2VuZGlmCiB9OworCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkVycm9yLmNwcAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
RXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNl
L1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBI
UkVTVUxUIFdlYkVycm9yOjpsb2NhbGl6ZWREZXNjcmlwdGlvbihfCiAKICAgICAqcmVzdWx0ID0g
QlN0cmluZyhtX2Vycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpLnJlbGVhc2UoKTsKIAotI2lm
IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAoISpyZXN1
bHQpIHsKICAgICAgICAgaWYgKGludCBjb2RlID0gbV9lcnJvci5lcnJvckNvZGUoKSkKICAgICAg
ICAgICAgICpyZXN1bHQgPSBCU3RyaW5nKHdrQ0ZOZXR3b3JrRXJyb3JHZXRMb2NhbGl6ZWREZXNj
cmlwdGlvbihjb2RlKSkucmVsZWFzZSgpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIEhSRVNVTFQgV2Vi
RXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZShfT3UKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
ICAgICAqcmVzdWx0ID0gMDsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENG
TkVUV09SSykKICAgICBpZiAoIW1fY2ZFcnJvclVzZXJJbmZvRGljdCkgewogICAgICAgICAvLyBj
b3B5IHVzZXJpbmZvIGZyb20gQ0ZFcnJvclJlZgogICAgICAgICBDRkVycm9yUmVmIGNmRXJyb3Ig
PSBtX2Vycm9yOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgV2ViRXJy
b3JfaAorI2RlZmluZSBXZWJFcnJvcl9oCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NPTVB0ci5oPgpAQCAtNjUsOCArNjYsMTAgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENPTVB0cjxJUHJvcGVydHlCYWc+IG1f
dXNlckluZm87Ci0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fY2ZFcnJvclVzZXJJbmZvRGljdDsKICNl
bmRpZgogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9lcnJvcjsKIH07CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkocmV2aXNp
b24gMjA3NTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0
aWZpY2F0ZUNGV2luLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYg
VVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgog
I2VuZGlmCiAKQEAgLTM4Miw3ICszODIsNyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0
OjptdXRhYmxlQ29wCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0
YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0ID0gYWRvcHRDRihD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3JlcXVl
c3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkpOwogICAgICpyZXN1bHQgPSBjcmVhdGVJ
bnN0YW5jZShSZXNvdXJjZVJlcXVlc3QobXV0YWJsZVJlcXVlc3QuZ2V0KCkpKTsKICAgICByZXR1
cm4gU19PSzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQxLDcgKzE0MSw3IEBAIEhSRVNVTFQgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmkK
IAogICAgIC8vIEZJWE1FOiBBZnRlciB3ZSBjaGFuZ2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
dG8gdXNlICJSZXNvdXJjZUhhbmRsZSIgYXMgdGhlIGFic3RyYWN0ICJTZW5kZXIiIG9yICJTb3Vy
Y2Ugb2YgdGhpcyBBdXRoIENoYWxsZW5nZSIsIHRoZW4gd2UnbGwKICAgICAvLyBjb25zdHJ1Y3Qg
dGhlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHdpdGggdGhhdCBhcyBvYnRhaW5lZCBmcm9tIHRo
ZSB3ZWJTZW5kZXIKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHdlYlNwYWNlLT5wcm90ZWN0aW9uU3BhY2UoKSwgd2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291
bnQsIHdlYlJlc3BvbnNlLT5yZXNvdXJjZVJlc3BvbnNlKCksIHdlYkVycm9yLT5yZXNvdXJjZUVy
cm9yKCkpOwogI2VuZGlmCkBAIC0xNjIsNyArMTYyLDcgQEAgSFJFU1VMVCBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6aQogICAgIGlmICghd2ViU2VuZGVyKQogICAgICAgICByZXR1cm4g
RV9OT0lOVEVSRkFDRTsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVU
V09SSykKICAgICBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2Uod2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpLCB3ZWJTZW5kZXItPmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkpOwogCiAgICAg
cmV0dXJuIFNfT0s7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCShyZXZp
c2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29y
ZUdyYXBoaWNzLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNF
KENGTkVUV09SSykKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CiAjZW5kaWYKIApAQCAtNDA2LDcgKzQwNiw3IEBAIEhSRVNVTFQgV2ViVVJM
UmVzcG9uc2U6OnNzbFBlZXJDZXJ0aWZpY2EKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAg
ICAqcmVzdWx0ID0gMDsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVU
V09SSykKICAgICBDRkRpY3Rpb25hcnlSZWYgZGljdCA9IGNlcnRpZmljYXRlRGljdGlvbmFyeSgp
OwogICAgIGlmICghZGljdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTQ3NSw3ICs0NzUs
NyBAQCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBXZWJVUkxSZXNwb25zZTo6CiAgICAgcmV0dXJu
IG1fcmVzcG9uc2U7CiB9CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5F
VFdPUkspCiBDRkRpY3Rpb25hcnlSZWYgV2ViVVJMUmVzcG9uc2U6OmNlcnRpZmljYXRlRGljdGlv
bmFyeSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fU1NMQ2VydGlmaWNhdGVJbmZvKQpJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJVUkxSZXNwb25zZS5oCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJVUkxSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgV2ViVVJMUmVz
cG9uc2VfSAorI2RlZmluZSBXZWJVUkxSZXNwb25zZV9ICiAKICNpbmNsdWRlICJXZWJLaXQuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTY1LDcgKzY2LDcgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIEhSRVNVTFQgc3VnZ2VzdGVkRmlsZUV4dGVuc2lvbihC
U1RSKiByZXN1bHQpOwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogICAgIENGRGljdGlvbmFyeVJlZiBjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKSBjb25zdDsK
ICNlbmRpZgogCkBAIC03Myw3ICs3NCw5IEBAIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNv
dW50IHsgMCB9OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAot
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBtdXRhYmxl
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fU1NMQ2VydGlmaWNhdGVJbmZvOyAgICAvLyB0
aGlzIGVuc3VyZXMgY2VydGlmaWNhdGUgY29udGV4dHMgYXJlIHZhbGlkIGZvciB0aGUgbGlmZXRp
bWUgb2YgdGhpcyBXZWJVUkxSZXNwb25zZS4KICNlbmRpZgogfTsKKworI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQAogI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZV
UkxDYWNoZVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90b2NvbFByaXYuaD4K
ICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hl
TW9kZQogCiAgICAgU3RyaW5nIGNhY2hlRGlyZWN0b3J5OwogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBj
ZnVybENhY2hlID0gYWRvcHRDRihDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0Q0Yod2tD
b3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KDApKTsKICAgICBpZiAoIWNmdXJsQ2FjaGVEaXJl
Y3RvcnkpIHsKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwo
V2ViQ2FjaGVNb2RlCiAgICAgICAgIC8vIE1lbW9yeSBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMp
CiAgICAgICAgIGNhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICAgICAvLyBGb3VuZGF0aW9uIGRpc2sgY2Fj
aGUgY2FwYWNpdHkgKGluIGJ5dGVzKQogICAgICAgICBjYWNoZURpc2tDYXBhY2l0eSA9IENGVVJM
Q2FjaGVEaXNrQ2FwYWNpdHkoY2Z1cmxDYWNoZS5nZXQoKSk7CiAjZW5kaWYKQEAgLTY3NCw3ICs2
NzQsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAgICAgbWVt
b3J5Q2FjaGUuc2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkZWFkRGVjb2RlZERh
dGFEZWxldGlvbkludGVydmFsKTsKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNldE1heFNp
emUocGFnZUNhY2hlU2l6ZSk7CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShD
Rk5FVFdPUkspCiAgICAgLy8gRG9uJ3Qgc2hyaW5rIGEgYmlnIGRpc2sgY2FjaGUsIHNpbmNlIHRo
YXQgd291bGQgY2F1c2UgY2h1cm4uCiAgICAgY2FjaGVEaXNrQ2FwYWNpdHkgPSBtYXgoY2FjaGVE
aXNrQ2FwYWNpdHksIENGVVJMQ2FjaGVEaXNrQ2FwYWNpdHkoY2Z1cmxDYWNoZS5nZXQoKSkpOwog
CkBAIC0xNTQ2LDcgKzE1NDYsNyBAQCB2b2lkIFdlYlZpZXc6OmNsb3NlV2luZG93KCkKIAogYm9v
bCBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgLy8gT24gdGhlIE1hYyB0aGVyZSdzIGFuIGFib3V0IFVSTCBwcm90b2NvbCBpbXBs
ZW1lbnRhdGlvbiBidXQgV2luZG93cyBDRk5ldHdvcmsgZG9lc24ndCBoYXZlIHRoYXQuCiAgICAg
aWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiYWJvdXQiKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC01MjYxLDcgKzUyNjEsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgm
ZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENGTkVUV09SSykK
ICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIGVsc2UKQEAgLTU1NjAsNyArNTU2MCw3
IEBAIEhSRVNVTFQgdXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4KICAgICBpZiAoRkFJ
TEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENv
b2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKGFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NjAsNyArOTYwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0
bGUoY29ucwogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCiB7Ci0jaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KG1fd2ViRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRp
bmdzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRU
UENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlKCkKICAgICByZXR1cm4gYmFzZTsKIH0KIAotI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoV2ViS2l0Q29va2llU3Rv
cmFnZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKIAogTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCkKIHsKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChhdXRvIHByaXZhdGVTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShy
ZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDggQEAK
ICAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwotI3ByYWdtYSBvbmNlCisjaWZuZGVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHRfaAorI2Rl
ZmluZSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oPgogCkBAIC0zMyw3ICszNCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7
CiAgICAgfQogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktp
dENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgc2V0
UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcm
KTsKQEAgLTQ5LDMgKzUwLDUgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiB9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAkocmV2aXNpb24gMjA3NTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3Vw
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgotI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIApJbmRleDogU291cmNl
L2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2Uv
T3B0aW9uc0FwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyMDc1NDYpCisrKyBTb3VyY2UvY21ha2Uv
T3B0aW9uc0FwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQCBpbmNs
dWRlKE9wdGlvbnNXaW4pCiAKIHNldChVU0VfQ0cgMSkKIHNldChVU0VfQ0EgMSkKLXNldChVU0Vf
Q0ZVUkxDT05ORUNUSU9OIDEpCitzZXQoVVNFX0NGTkVUV09SSyAxKQogc2V0KFVTRV9JQ1VfVU5J
Q09ERSAxKQogCiAjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdHJ5IHRoZSBEaXJl
Y3QyRCBiYWNrZW5kLgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTQ4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZlcnQgcjIwNzE1MQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NvbmZpZy5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAg
IChtYWluKToKKwogMjAxNi0xMC0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgV2ViUlRDOiBbR1RLXSBVcGRhdGUgamhidWlsZCBlbnZpcm9ubWVu
dCBmb3IgT3BlbldlYlJUQwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5o
CShyZXZpc2lvbiAyMDc1NDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiwxMyBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgRHVtcFJlbmRlclRyZWVfaAorI2RlZmluZSBEdW1wUmVu
ZGVyVHJlZV9oCisKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIGFsbCBwbGF0Zm9ybXMgYXJl
IHVzaW5nIGNvbmZpZy5oCisjaWZuZGVmIENvbmZpZ19ICisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkR1bXBSZW5kZXJU
cmVlTWFjLmgiCkBAIC0zOSw3ICs0NSw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZz4K
LSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNp
ZiAhT1MoT1BFTkJTRCkKQEAgLTY2LDMgKzcxLDUgQEAgc3RydWN0IFRlc3RDb21tYW5kIHsKIH07
CiAKIFRlc3RDb21tYW5kIHBhcnNlSW5wdXRMaW5lKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisKKyNl
bmRpZiAvLyBEdW1wUmVuZGVyVHJlZV9oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25m
aWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAkocmV2aXNp
b24gMjA3NTQ2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4LDcgKzE4LDcgQEAKICAqCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjZGVmaW5lIENv
bmZpZ19ICiAKICNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYg
ZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCkBA
IC00NCw3ICs0NCw3IEBACiAjZGVmaW5lIFVTRV9DVVJMIDEKICNlbHNlCiAjZGVmaW5lIFVTRV9D
RyAxCi0jZGVmaW5lIFVTRV9DRlVSTENPTk5FQ1RJT04gMQorI2RlZmluZSBVU0VfQ0ZORVRXT1JL
IDEKICNlbmRpZgogCiAjdW5kZWYgX1dJTjMyX1dJTk5UCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDIwNzU0NikKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDcgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dlYktpdENPTUFQSS5oPgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2VuZGlmCkBAIC0xMzI0LDcgKzEz
MjQsNyBAQCBJV2ViVmlldyogY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvCiAgICAgcmV0
dXJuIHdlYlZpZXc7CiB9CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5F
VFdPUkspCiBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gc2hhcmVkQ0ZVUkxDYWNoZSgpCiB7CiAj
aWZuZGVmIERFQlVHX0FMTApAQCAtMTUwMiw3ICsxNTAyLDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBpZiAoRkFJTEVEKHdlYlZpZXctPm1haW5GcmFtZSgm
ZnJhbWUpKSkKICAgICAgICAgcmV0dXJuIC03OwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiB1cmxDYWNo
ZSA9IHNoYXJlZENGVVJMQ2FjaGUoKTsKICAgICBDRlVSTENhY2hlUmVtb3ZlQWxsQ2FjaGVkUmVz
cG9uc2VzKHVybENhY2hlLmdldCgpKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292118</attachid>
            <date>2016-10-19 15:09:46 -0700</date>
            <delta_ts>2016-10-19 15:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163675-20161019150610.patch</filename>
            <type>text/plain</type>
            <size>189182</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU3
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZToKKwogMjAxNi0x
MC0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENT
U19TSEFQRVMgZmVhdHVyZSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBhbHdheXMgYmUgb24uCklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMC0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmVydCByMjA3MTUxCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorICAgICAgICAqIHd0Zi9TY2hlZHVsZVBhaXIuaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQ
YWlyTWFjLm1tOgorCiAyMDE2LTEwLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgQmFzZWxpbmUgSklUIHNob3VsZCB1c2UgQXV0b21hdGljVGhyZWFkCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSw2ICs1NTksMTAgQEAKIAogI2lmIFBMQVRGT1JNKElP
UykKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTAwMDAwCisjZGVmaW5lIFVTRV9DRk5FVFdPUksgMQorI2VuZGlmCisK
ICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5lIEhBVkVfUkVBRExJTkUg
MQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01ODgsMTAgKzU5MiwxMCBAQAogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAmJiAhUExBVEZPUk0oV0lO
X0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZVUkxDT05ORUNUSU9OIDEKKyNkZWZpbmUgVVNFX0NGTkVU
V09SSyAxCiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENP
Q09BKQorI2lmIFVTRShDRk5FVFdPUkspIHx8IFBMQVRGT1JNKENPQ09BKQogI2RlZmluZSBVU0Vf
Q0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTQ3LDYgKzk1MSw5IEBACiAjZGVmaW5lIFVTRV9Q
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAKKy8qIFNldCB1cCBhIGRl
ZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0byBjYXVzZSBhIGJ1aWxk
IGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLworI2RlZmluZSBXVEZfUExB
VEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVfdXNlZF93aXRoX0NGTkVU
V09SSworCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkKICNkZWZp
bmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Nj
aGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVs
ZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykK
IE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3Mg
U2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVm
IG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUp
KTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0ZORVRXT1JLKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoTlNSdW5Mb29w
KiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNjaGVk
dWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3AqIG5zUnVuTG9vcCgpIGNv
bnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYKQEAgLTYzLDcgKzYzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVD
b3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFNjaGVk
dWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0YWluUHRyPE5TUnVuTG9v
cCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBh
aXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyTWFjLm1t
CShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQorCiBuYW1lc3Bh
Y2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiBydW5Mb29w
LCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDAsMyArNDIsNSBAQCBTY2hlZHVsZVBhaXI6OlNjaGVk
dWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYxIEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcx
NTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y29kZSBpcyBzdGlsbCB1c2VmdWwgZm9yIGNvbXBhcmlzb24gd2l0aCBXaW5kb3dzLiAgSSdsbCBy
ZW1vdmUgaXQgYWdhaW4gc29vbi4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2Ug
aW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViQ29yZVByZWZpeC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9TdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvbWFjL0RvY3VtZW50TG9h
ZGVyTWFjLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAg
ICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFNjaGVkdWxlUGFp
cik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVTY2hlZHVsZVBhaXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50OjpXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVy
bmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlv
bkNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNGKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvcmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91
bGRTbmlmZkNvbm5lY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNl
dHVwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjplbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRDRlVSTFJlcXVl
c3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVu
Y29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNldHVwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNldHVw
Q29ubmVjdGlvblNjaGVkdWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3Jl
ZGVudGlhbDo6Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNy
ZWRlbnRpYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNw
YWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25T
cGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0
aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpjZlNwYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGUgaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0
YUFycmF5Ol0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6XSk6Cisg
ICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRGYWls
V2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRl
dGFjaEhhbmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAg
KC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgc2V0Q0ZDaGFs
bGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyIGNmQ2hhbGxlbmdlXSk6CisgICAgICAgIChXZWJDb3JlOjpjb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1hYyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
SmFyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZVN0b3JhZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAg
KE5TRXJyb3JGcm9tQ0ZFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1
YnMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4Lmg6
CisKIDIwMTYtMTAtMTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNzU1Ny4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmVQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
UHJlZml4LmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVm
aXguaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICoKICAqLwogCi0vKiBUaGlz
IHByZWZpeCBmaWxlIHNob3VsZCBjb250YWluIG9ubHk6CisvKiBUaGlzIHByZWZpeCBmaWxlIHNo
b3VsZCBjb250YWluIG9ubHk6IAogICogICAgMSkgZmlsZXMgdG8gcHJlY29tcGlsZSBmb3IgZmFz
dGVyIGJ1aWxkcwogICogICAgMikgaW4gb25lIGNhc2UgYXQgbGVhc3Q6IE9TLVgtc3BlY2lmaWMg
cGVyZm9ybWFuY2UgYnVnIHdvcmthcm91bmRzCiAgKiAgICAzKSB0aGUgc3BlY2lhbCB0cmljayB0
byBjYXRjaCB1cyB1c2luZyBuZXcgb3IgZGVsZXRlIHdpdGhvdXQgaW5jbHVkaW5nICJjb25maWcu
aCIKQEAgLTEzMyw4ICsxMzMsOCBAQAogI2Vsc2UKIAogI2lmIE9TKFdJTkRPV1MpCi0KICNpZiBV
U0UoQ0cpCisKIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS84MjA4ODY4PiBSZW1vdmUgc3VwcG9y
dCBmb3Igb2Jzb2xldGUgQ29sb3JTeW5jIEFQSSwgQ29yZVNlcnZpY2VzIGhlYWRlciBpbiBDb3Jl
R3JhcGhpY3MKIC8vIFdlIGNhbiByZW1vdmUgdGhpcyBvbmNlIHRoZSBuZXcgQ29sb3JTeW5jIEFQ
SXMgYXJlIGF2YWlsYWJsZSBpbiBhbiBpbnRlcm5hbCBTYWZhcmkgU0RLLgogI2luY2x1ZGUgPENv
bG9yU3luYy9Db2xvclN5bmMuaD4KQEAgLTE0MywyMSArMTQzLDE5IEBACiAjZGVmaW5lIE9CU09M
RVRFX0NPTE9SU1lOQ19BUEkKICNlbmRpZgogI2VuZGlmCi0KLSNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2lmIFVTRShDRk5FVFdPUkspCisvKiBXaW5kb3dzIGRvZXNuJ3QgaW5jbHVkZSBDRk5l
dHdvcmsuaCB2aWEgQ29yZVNlcnZpY2VzLmgsIHNvIHdlIGRvCisgICBpdCBleHBsaWNpdGx5IGhl
cmUgdG8gbWFrZSBXaW5kb3dzIG1vcmUgY29uc2lzdGVudCB3aXRoIE1hYy4gKi8KICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAvLyBPbiBXaW5kb3dzLCBkaXNwYXRjaC5oIG5lZWRz
IHRvIGJlIGluY2x1ZGVkIGJlZm9yZSBjZXJ0YWluIENGTmV0d29yayBoZWFkZXJzLgogI2luY2x1
ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKLQogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
LQotI2VsaWYgIVBMQVRGT1JNKElPUykKLQorI2Vsc2UKKyNpZiAhUExBVEZPUk0oSU9TKQogI2lu
Y2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KLQotI2VuZGlmCi0KKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIE9TKFdJTkRPV1MpCiAKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwNDIsNiArMjA0Miw3IEBACiAJCTUx
NEM3NjRGMENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ1MENFOTIzNEUwMDdF
RjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NTAwQ0U5MjM0RTAw
N0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VF
cnJvck1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNl
SGFuZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0Qzc2NDcwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tICovOyB9
OworCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDkwQ0U5
MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NkQw
Q0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBD
cmVkZW50aWFsQmFzZS5jcHAgKi87IH07CiAJCTUxNEM3NjZFMENFOTIzQTEwMDdFRjNDRCAvKiBD
cmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjZGMENFOTIzQTEwMDdF
RjNDRCAvKiBGb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovOyB9
OwpAQCAtMjgyOCw2ICsyODI5LDcgQEAKIAkJN0Q0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpT
RmV0Y2hIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RDRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLzsgfTsK
IAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CiAJCTdF
MzdFRjJFMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgw
MEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLzsgfTsKKwkJN0U0MjhDRTUxM0Uz
NDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJl
c291cmNlSGFuZGxlSU9TLm1tICovOyB9OwogCQk3RTQ2RjZGQTE2MjdBMkNBMDAwNjIyMjMgLyog
SlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJ
bmRleFVpbnQuY3BwICovOyB9OwogCQk3RTQ2RjZGQjE2MjdBMkNBMDAwNjIyMjMgLyogSlNPRVNF
bGVtZW50SW5kZXhVaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RTQ2RjZGOTE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50
LmggKi87IH07CiAJCTdFNDc0RTFFMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
Mjg0NSw2ICsyODQ3LDcgQEAKIAkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmggKi87IH07CiAJCTdFNjZFMjM0MTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUFZSVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFNjZFMjMyMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEMuaCAqLzsgfTsKIAkJN0U3REUxRkQxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNl
UmVxdWVzdENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U3REUxRkMxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1t
ICovOyB9OworCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U3REUy
MDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLzsgfTsKIAkJN0U4
RkFEQzQxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RThGQURDMzE5OUE5NUIx
MDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLzsgfTsKIAkJN0U5OUFGNTEw
QjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1MjBCMTM4NDY0
NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLzsgfTsKIAkJN0U5
OUFGNTMwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTQwQjEz
ODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODY1LDYgKzI4NjgsNyBA
QAogCQk3RUU2ODQ2OTEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NjEyRDI2RTM4
MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmggKi87IH07CiAJCTdFRTY4NDZBMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdF
RTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTgxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi87IH07CisJCTdFRTY4NDZDMTJEMjZFMzgwMEU3
OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU5MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZFMTJE
MjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlcXVlc3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC05MTA4LDYgKzkxMTIsNyBAQAogCQk1MTRDNzY0NTBDRTkyMzRFMDA3RUYzQ0Qg
LyogRm9ybURhdGFTdHJlYW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBGb3JtRGF0YVN0cmVhbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0Qzc2NDYwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUVycm9yTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VIYW5kbGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZXNvdXJjZUhhbmRsZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTE0Qzc2NDkwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8q
IENyZWRlbnRpYWxCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENyZWRlbnRpYWxCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2
NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3JlZGVudGlhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTAxMDIsNiArMTAxMDcsNyBAQAogCQk3RDRDOTZEODFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNGZXRjaEhlYWRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEhlYWRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RDRD
OTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNGZXRjaEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2Fk
ZXJDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFNDI4Q0U0MTNFMzQwN0Yw
MDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlc291cmNlSGFuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTQ2RjZGODE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhV
aW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTRWxlbWVu
dEluZGV4VWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNDZGNkY5MTYy
N0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDExOSw2ICsxMDEyNSw3IEBACiAJCTdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U3REUxRkMxOTVDRUYyNjAw
MzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVl
c3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJj
ZVJlcXVlc3RJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOEZBREMzMTk5
QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdp
bmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRv
d0ZvY3VzQWxsb3dlZEluZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAxNDEsNiArMTAxNDgsNyBAQAogCQk3RUU2ODQ1NjEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVy
UnVuTG9vcENGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRlclJ1bkxv
b3BDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1NzEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU4
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VFcnJvckNGLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVBMTJE
MjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFRTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3
OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTYzOTAsNiArMTYzOTgsOCBAQAogCQkJCTQ0MkFGN0E3MTAyQ0RERUEwMDhGRDREMyAv
KiBRdWlja0xvb2suaCAqLywKIAkJCQk0NDJBRjdBODEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tM
b29rLm1tICovLAogCQkJCUExMERCRjQ2MThGOTIzMTcwMDBENzBDNiAvKiBRdWlja0xvb2tIYW5k
bGVDbGllbnQuaCAqLywKKwkJCQk3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VI
YW5kbGVJT1MubW0gKi8sCisJCQkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNl
UmVxdWVzdElPUy5tbSAqLywKIAkJCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggKi8sCiAJCQkJNDQ0RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdl
YkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLywKIAkJCSk7CkBAIC0xNzMwMiw2ICsxNzMxMiw3IEBA
CiAJCQkJMUE3RkE2NDcwRERBM0NCQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFj
LmNwcCAqLywKIAkJCQk1MTRDNzY0NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1h
Yy5tbSAqLywKIAkJCQk1MTRDNzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVN
YWMubW0gKi8sCisJCQkJNTE0Qzc2NDkwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVz
dE1hYy5tbSAqLywKIAkJCQlFMTgwODExNDE2RkNGOUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNM
b2FkZXJDbGllbnQubW0gKi8sCiAJCQkJMUZBRkJGMTYxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0
aWxpdGllcy5oICovLAogCQkJCTFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRp
ZXMubW0gKi8sCkBAIC0yMTM0MCw2ICsyMTM1MSw3IEBACiAJCQkJMUFGOEUxQzExMjU2NzNFMDAw
MjMwRkY3IC8qIFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi8sCisJCQkJN0VFNjg0NTkxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwICovLAogCQkJCTI2RkFFNEM4MTg1MkUzQTUw
MDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywK
IAkJCQkyNkZBRTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5oICovLAogCQkJCTI2QzE1Q0Y0MTg1N0UxNUQwMEYxNUMwMyAvKiBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCAq
LywKQEAgLTMwMjk2LDkgKzMwMzA4LDExIEBACiAJCQkJN0VFNjg0NkIxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MDBDRTky
MzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
NEM3Njc4MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk3RUU2ODQ2QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkZBRTRDQzE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
NkMxNUNGNjE4NTdFMTVEMDBGMTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJBMDAz
MTE2RkI5MkFDMDBCQTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0U0MjhDRTUxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNl
SGFuZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMjI3RTMwQUY1ODlBRDAwRDQ4MzI0
IC8qIFJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDc1MTJEMjZF
NzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzAzMTEsNiArMzAzMjUsOCBAQAogCQkJCTUxNEM3NjdDMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZFMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gaW4gU291
cmNlcyAqLywKKwkJCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0
SU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJl
c291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjdFMENFOTIzQTEw
MDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
RUU2ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUExRjc4RDBDMUMyNTQyNEMwMDI0NTQ0NiAvKiBSZXNvdXJjZVJlc3Bv
bnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1
ZGUgIlF1aWNrTG9vay5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFp
ci5oPgogI2VuZGlmCiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKICAgICAgICAgdm9pZCBzY2hlZHVs
ZShTY2hlZHVsZVBhaXImKTsKICAgICAgICAgdm9pZCB1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lv
biAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwMyw3ICs0MDMsNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQVhPYmplY3RS
ZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByZXNwb25zZTsgfQogI2VuZGlmCi0jaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gRklY
TUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgogICAgIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3Bv
bnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVh
bCBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogI2VuZGlmCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShXSU4pICYm
IFVTRShDRk5FVFdPUkspCiAgICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2ls
bENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU3MjU3Pi4KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3Ro
KSA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEzLDggKzcxMywxNCBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CisgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMgcHJvdmlkZSBhIHdheSB0
byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgorICAgIC8vIElmIHdlIGNhbid0IGNvbnRp
bnVlIHdpdGggY3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRo
ZXIuCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8
fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjaGFsbGVuZ2UuYXV0aGVudGlj
YXRpb25DbGllbnQoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFs
KGNoYWxsZW5nZSk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmhhc0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkpOworI2Vsc2UKKyAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigp
KTsKKyNlbmRpZgogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
QEAgLTc0MSw3ICs3NDcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxh
dGlvCiAgICAgY2FuY2VsKCk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNjaGVk
dWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IExvYWRUaW1pbmcmIGxvYWRUaW1pbmcoKSB7IHJldHVybiBtX2xvYWRU
aW1pbmc7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
VVNFKENGTkVUV09SSykKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAg
ICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE2Myw5
ICsxNjMsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgTlNDYWNoZWRVUkxS
ZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJl
c3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENG
TkVUV09SSykKKyAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CisjZW5kaWYK
IAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIApAQCAtMjA1
LDcgKzIwOCw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291cmNlSGFuZGxlKikgb3Zl
cnJpZGU7CiAjZW5kaWYKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKENGTkVUV09SSykKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNlIHdp
bGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NzI1Nz4uCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsOSArNzQsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiAhVVNFKENGTkVUV09SSykKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2Fj
aGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlk
ZTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQorICAgIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAjaWYgVVNFKE5FVFdP
UktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogICAgIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXkoKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Yv
UmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDEzICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZGVyLmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5F
VFdPUkspCiAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKFdJTikKKwog
Ym9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fb3B0
aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00Myw2ICs0
NSw4IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9uc2UKICAgICByZXR1
cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25zZShkb2N1bWVudExv
YWRlcigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlLCBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpLCBD
RkRhdGFHZXRMZW5ndGgoZGF0YSkpOwogfQogCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9h
ZGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1
YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQorCitDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN1YnJlc291cmNlTG9hZGVyOjp3aWxs
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlKQoreworICAgIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxl
QmFja2luZ1N0b3JlQ3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5zZXNzaW9uSUQoKSwg
Y2FjaGVkUmVzcG9uc2UpOworICAgIGlmICghbV9yZXNvdXJjZS0+c2hvdWxkQ2FjaGVSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZXNvdXJjZUxvYWRlcjo6d2ls
bENhY2hlUmVzcG9uc2UoaGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Cit9CisKKyNlbHNlCisKIE5T
Q2FjaGVkVVJMUmVzcG9uc2UqIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsK
ICAgICBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKHJl
cXVlc3QoKSwgbV9yZXNvdXJjZS0+c2Vzc2lvbklEKCksIFtyZXNwb25zZSBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZV0pOwpAQCAtNDMsNCArNTUsNiBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBTdWJyZXNv
dXJjZUxvYWRlcjo6CiAgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25z
ZShoYW5kbGUsIHJlc3BvbnNlKTsKIH0KIAorI2VuZGlmCisKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCShyZXZpc2lvbiAyMDc1
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
KyNpZiAhVVNFKENGTkVUV09SSykKKwogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVz
b3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBWZWN0
b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02Nyw0ICs2OSw2IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICB1bnNjaGVkdWxl
QWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKIH0KIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDIwNzU3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
I2lmIFVTRShDRk5FVFdPUkspCisKK0NGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VMb2Fk
ZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjYWNoZWRSZXNwb25zZSkKK3sKKyAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJh
Y2tzID09IERvTm90U2VuZENhbGxiYWNrcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFkb3B0
TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJlc3Bv
bnNlOmNhY2hlZFJlc3BvbnNlXSk7CisgICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGllbnQo
KS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5zQ2Fj
aGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsKK30KKworI2Vsc2UKKwog
TlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAgaWYg
KG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00
Myw2ICs1Niw4IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwKICAg
ICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1l
bnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKKyNlbmRpZgorCiAjaWYg
VVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAj
aWYgUExBVEZPUk0oSU9TKQorI2lmIFVTRShDRk5FVFdPUkspCisgICAgYWRkU2NoZWR1bGVQYWly
KFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKSk7CisjZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0
ZShXZWJUaHJlYWROU1J1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7CisjZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFp
cjo6Y3JlYXRlKFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpKTsKICNlbmRpZgpAQCAtNjUsMTIgKzY5LDE0IEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQ
YWlyKFJlZjxTY2hlZHVsZVAKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5M
b29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAg
ICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFp
cik7CiAgICAgfQorI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1lck1hYyB1
c2UgdGhlc2UgU2NoZWR1bGVQYWlycy4KIH0KQEAgLTgzLDEyICs4OSwxNCBAQCB2b2lkIFBhZ2U6
OnJlbW92ZVNjaGVkdWxlUGFpcihSZWY8U2NoZWR1CiAKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUo
cGFpcik7CiAgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksMTAgQEAKICNpbXBvcnQg
PFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCisjaWYgVVNFKENGTkVUV09S
SykKKyNpbmNsdWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgorI2VuZGlmCisKICNpbXBvcnQg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBzdGQgewpAQCAtMzY4LDYgKzM3Miw1
OCBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhCiB9CiAjZW5kaWYK
IAorI2lmIFVTRShDRk5FVFdPUkspCitjbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q2xpZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKKyAgICB9CisKKyAgICB1c2luZyBSZWZD
b3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVmOwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
bGllbnQ+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Up
CisgICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fY2hhbGxlbmdlKTsKKyAgICB9CisKKyAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50
KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVu
dCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50
aWFsKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNy
ZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCByZWNlaXZlZFJlcXVl
c3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5n
ZS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBbW21fY2hh
bGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2Uu
Z2V0KCldOworICAgIH0KKworICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KV0pCisgICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRIYW5k
bGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKKyAgICB9
CisKKyAgICB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChbW21fY2hhbGxlbmdl
IHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9uU3Bh
Y2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCisgICAgICAgICAgICBbW21fY2hhbGxlbmdl
IHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOm1f
Y2hhbGxlbmdlLmdldCgpXTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Cit9OworI2VuZGlmCisKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQpAQCAtMTc0
MSw3ICsxNzk3LDE1IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoK
IAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9y
UmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZv
clJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShuc0NoYWxsZW5nZSkpOworI2lmIFVTRShDRk5FVFdPUkspCisgICAgUmVmUHRyPFdlYkNvcmVO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25z
Q2hhbGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKKyAgICBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7CisjZWxz
ZQorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Cisj
ZW5kaWYKKworICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDIw
NzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDE0IEBAIHR5cGVkZWYgc3RydWN0IF9O
U1JlY3QgTlNSZWN0OwogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNl
bmRpZgogCisjaWYgVVNFKENGTkVUV09SSykKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENv
b2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwordHlwZWRlZiBzdHJ1Y3QgX0NG
VVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKK3R5cGVkZWYgc3Ry
dWN0IF9DRlVSTENyZWRlbnRpYWwqIFdLQ0ZVUkxDcmVkZW50aWFsUmVmOwordHlwZWRlZiBzdHJ1
Y3QgX0NGVVJMUmVxdWVzdCogQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZjsKK3R5cGVkZWYgY29uc3Qg
c3RydWN0IF9DRlVSTFJlcXVlc3QqIENGVVJMUmVxdWVzdFJlZjsKKyNlbmRpZgorCiBPQkpDX0NM
QVNTIEFWQXNzZXQ7CiBPQkpDX0NMQVNTIEFWUGxheWVyOwogT0JKQ19DTEFTUyBDQUxheWVyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJD
Rk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQogICAgIENyZWRlbnRpYWxTdG9yYWdlJiBjcmVkZW50aWFsU3Rv
cmFnZSgpIHsgcmV0dXJuIG1fY3JlZGVudGlhbFN0b3JhZ2U7IH0KIAotI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQsIFJldGFpblB0
cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAKICAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hp
Y2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KQEAgLTg0LDcgKzg0
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFsU2Vzc2lvbk1hcCgpOwogICAgIFNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICNlbGlm
IFVTRShTT1VQKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+IG1fc2Vz
c2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90
ZWN0aW9uU3BhY2UuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEgKzIz
LDEyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgUHJv
dGVjdGlvblNwYWNlX2gKKyNkZWZpbmUgUHJvdGVjdGlvblNwYWNlX2gKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCi0jZWxpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQorI2VsaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2VDRk5ldC5oIgogI2Vsc2UKIApAQCAtNDksMyArNTAsNSBAQCBwdWJsaWM6CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgorCisjZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90
ZWN0aW9uU3BhY2VCYXNlLmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsMTEgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCisjaWYg
VVNFKENGTkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ0YuaCIKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBOZWVkIHRvIGVuZm9yY2UgZW1w
dHksIG5vbi1udWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9
PSBTdHJpbmcgb3BlcmF0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNsZWFyQ2xpZW50KCkK
ICAgICBkLT5tX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoQ0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNFKFNPVVApCisjaWYgIVBMQVRGT1JNKENPQ09B
KSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKQogLy8gUmVzb3VyY2VIYW5kbGUgbmV2
ZXIgdXNlcyBhc3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxhdGZvcm1zIHlldC4KIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2VuZGlmCiAKQEAgLTYwLDE0ICs2MCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBvYmpj
X29iamVjdCAqaWQ7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVz
cG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25u
ZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7CiB0eXBlZGVmIGludCBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5OwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFn
ZSogQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJM
U3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKIApAQCAtOTIsMTcgKzkyLDIyIEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lcjsKIAotY2xh
c3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT4sIHB1
YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CitjbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPgorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCisgICAgLCBwdWJsaWMgQXV0aGVu
dGljYXRpb25DbGllbnQKKyNlbmRpZgorICAgIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgZGVm
ZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKTsKIAotI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQogICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCiAgICAgYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgdm9p
ZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25z
dCBDcmVkZW50aWFsJikgb3ZlcnJpZGU7CkBAIC0xMTAsOCArMTE1LDkgQEAgcHVibGljOgogICAg
IHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KSBvdmVycmlkZTsKKyNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENP
Tk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgYm9v
bCB0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKICNlbmRpZgogCkBAIC0xMTksNyArMTI1LDcgQEAgcHVibGljOgogICAg
IGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0
aW9uU3BhY2UmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ29ubmVj
dGlvbiAqY29ubmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VEZWxlZ2F0ZShib29sKTsKICAg
ICBpZCBkZWxlZ2F0ZSgpOwpAQCAtMTI3LDE1ICsxMzMsMTkgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCX1RJTUlORykKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorICAgIHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENG
VVJMQ29ubmVjdGlvblJlZiwgTmV0d29ya0xvYWRUaW1pbmcmKTsKKyNlbHNlCiAgICAgc3RhdGlj
IHZvaWQgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICosIE5ldHdvcmtM
b2FkVGltaW5nJik7CiAjZW5kaWYKKyNlbmRpZgogICAgICAgICAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNj
aGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CiAgICAgQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24o
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0aW9uUmVm
PiByZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCk7CkBAIC0xOTgsMTAgKzIwOCwxMCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhh
bmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYygpLgotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRp
bnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNp
ZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKik7CiAjZW5kaWYKIApAQCAtMjE3LDEwICsyMjcsMTQgQEAgcHVibGlj
OgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+OjpyZWY7CiAgICAgdXNpbmcg
UmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT46OmRlcmVmOwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3Vz
TG9hZFJ1bkxvb3BNb2RlKCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENG
TkVUV09SSykKKyAgICBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9w
ZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgor
CiAgICAgdHlwZWRlZiBSZWY8UmVzb3VyY2VIYW5kbGU+ICgqQnVpbHRpbkNvbnN0cnVjdG9yKShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGll
bnQpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1Y3Rvcik7CiAKQEAgLTI0OSwxOSAr
MjYzLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92
ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIGVu
dW0gY2xhc3MgU2NoZWR1bGluZ0JlaGF2aW9yIHsgQXN5bmNocm9ub3VzLCBTeW5jaHJvbm91cyB9
OwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgdm9pZCBjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZE
aWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKICAgICB2b2lkIGNyZWF0
ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvcik7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRX
T1JLKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1
bGluZ0JlaGF2aW9yLCBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKTsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2FuQXV0
aGVudGljYQogfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShD
Rk5FVFdPUkspCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFz
eW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9u
c2UpCiB7CiAgICAgaGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKHJlc3BvbnNlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5F
VFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQcml2Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElP
UykgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShJT1MpIHx8IFVTRShDRk5F
VFdPUkspCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTk2LDcgKzk2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKICAgICAgICAgLy8gQ2xp
ZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNv
bnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoKSB3aGVuIHJlYWR5LgotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKICNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSos
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CkBAIC0xMTgsMTMgKzExOCwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0
aW9uKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0K
IAotI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9S
TShJT1MpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgICAgIHZpcnR1YWwgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3BlcnRpZXMoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNF
KENGTkVUV09SSykKICAgICAgICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxD
YWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNw
b25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KKyNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZikgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikK
KwogI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNw
b25zZSAqd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3Bv
bnNlICpyZXNwb25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNs
dWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgogI2VuZGlmCkBAIC02MSw3ICs2
MSw3IEBAIE9CSkNfQ0xBU1MgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIE9CSkNfQ0xB
U1MgTlNVUkxDb25uZWN0aW9uOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZjsKICNlbmRpZgogCkBAIC04Myw3ICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICwgbV9kZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpCiAgICAgICAg
ICAgICAsIG1fc2hvdWxkQ29udGVudFNuaWZmKHNob3VsZENvbnRlbnRTbmlmZikKICAgICAgICAg
ICAgICwgbV91c2VzQXN5bmNDYWxsYmFja3MoY2xpZW50ICYmIGNsaWVudC0+dXNlc0FzeW5jQ2Fs
bGJhY2tzKCkpCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgICAgICAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KHJlcXVlc3QpCiAjZW5kaWYKICNpZiBVU0Uo
Q1VSTCkKQEAgLTEzMSwxOSArMTMxLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2RlZmVyc0xvYWRpbmc7CiAgICAgICAgIGJvb2wgbV9zaG91bGRDb250ZW50U25pZmY7
CiAgICAgICAgIGJvb2wgbV91c2VzQXN5bmNDYWxsYmFja3M7Ci0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0
aW9uUmVmPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OwogICAgICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZT4gbV9jb25uZWN0aW9uRGVsZWdhdGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0
cjxOU1VSTENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmV0YWluUHRyPGlkPiBt
X2RlbGVnYXRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGJvb2wgbV9z
dGFydFdoZW5TY2hlZHVsZWQ7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
VVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAg
ICAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fc3RvcmFnZVNlc3Npb247
CiAjZW5kaWYKICNpZiBVU0UoQ1VSTCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkocmV2aXNpb24gMjA3
NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNpZiAhVVNFKFNPVVApICYmICFQTEFURk9STShDT0NPQSkKKyNpZiAhVVNFKFNP
VVApICYmICghUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspKQogZG91YmxlIFJlc291
cmNlUmVxdWVzdEJhc2U6OnNfZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCA9IElOVF9NQVg7CiAjZWxz
ZQogLy8gV2lsbCB1c2UgTlNVUkxSZXF1ZXN0IGRlZmF1bHQgdGltZW91dCB1bmxlc3Mgc2V0IHRv
IGEgbm9uLXplcm8gdmFsdWUgd2l0aCBzZXREZWZhdWx0VGltZW91dEludGVydmFsKCkuCkBAIC02
MTgsNyArNjE4LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZQog
ICAgIH0KIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04p
ICYmICFVU0UoU09VUCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAm
JiAhVVNFKFNPVVApCiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291
bnRQZXJIb3N0KCkKIHsKICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgdGhlIGxvYWRlciB0byBjb250
cm9sIHRoZSBudW1iZXIgb2YgaXNzdWVkIHBhcmFsbGVsIGxvYWQgcmVxdWVzdHMuIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
Ri5oIgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNsaWVudC5oIgpAQCAtNTEsOCArNTEsMTggQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
OkF1dGhlbnRpY2F0aW9uQwogewogfQogCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLCBBdXRo
ZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQpCi0gICAgOiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3Bh
Y2UoY2ZDaGFsbGVuZ2UpKSwgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRl
bnRpYWwoY2ZDaGFsbGVuZ2UpKSwgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJl
Q291bnQoY2ZDaGFsbGVuZ2UpLCAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFsbGVuZ2VH
ZXRGYWlsdXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLCBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJv
cihjZkNoYWxsZW5nZSkpCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRl
bnRpYWwoY2ZDaGFsbGVuZ2UpKSwKKyNlbHNlCisgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVu
Z2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENo
YWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAorI2VuZGlmCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlv
dXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNw
b25zZShjZkNoYWxsZW5nZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQogICAgICwgbV9hdXRoZW50aWNh
dGlvbkNsaWVudChhdXRoZW50aWNhdGlvbkNsaWVudCkKICAgICAsIG1fY2ZDaGFsbGVuZ2UoY2ZD
aGFsbGVuZ2UpCiB7CkBAIC04MywxMCArOTMsMTcgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNy
ZWF0ZUNGKGNvbnN0IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0
aENoYWxsZW5nZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRv
ZXMgdGhhdC4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIENGVVJMQXV0aENoYWxsZW5nZVJl
ZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFs
KCkuY2ZDcmVkZW50aWFsKCksCisjZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxS
ZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRD
cmVkZW50aWFsKCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHBy
b3RlY3Rpb25TcGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSkpOwotCi0gICAgcmV0dXJuIENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZShudWxscHRy
LCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVuZ2Uu
cHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5j
ZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7CisgICAgQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9u
U3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCisjZW5kaWYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlh
bCYgY29yZUNyZWRlbnRpYWwpCkBAIC0yNzEsNiArMjg4LDYgQEAgUHJvdGVjdGlvblNwYWNlIGNv
cmUoQ0ZVUkxQcm90ZWN0aW9uU3BhYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1l
KTsKIH0KIAotfTsKK30KIAotI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQXV0aGVudGljYXRpb25DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsOSArMjMsMTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNw
cmFnbWEgb25jZQorI2lmbmRlZiBBdXRoZW50aWNhdGlvbkNGX2gKKyNkZWZpbmUgQXV0aGVudGlj
YXRpb25DRl9oCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsUHJpdi5oPgogCkBAIC0zOSwx
MCArNDAsMjAgQEAgY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAog
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7CisjaWYgUExBVEZPUk0oV0lOKQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNv
bnN0IENyZWRlbnRpYWwmKTsKIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFdJTikKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYpOwog
UHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpOworI2VuZGlmCiB9
CiAKLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCisKKyNlbmRpZiAvLyBBdXRoZW50aWNhdGlvbkNGX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTMgKzIzLDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5k
ZWYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorI2RlZmluZSBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZV9oCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAot
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIAogdHlwZWRlZiBz
dHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwogCkBAIC00
OSw3ICs1MCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEEKIHB1
YmxpYzoKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHt9CiAgICAgV0VCQ09SRV9FWFBP
UlQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3Qg
Q3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVD
b3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmLCBBdXRoZW50aWNhdGlvbkNsaWVu
dCopOwogCiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmVVJMQXV0aENoYWxsZW5nZVJlZigp
IGNvbnN0IHsgcmV0dXJuIG1fY2ZDaGFsbGVuZ2UuZ2V0KCk7IH0KQEAgLTY4LDcgKzY5LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKTsKIAog
ICAgIC8vIFBsYXRmb3JtIGNoYWxsZW5nZSBtYXkgYmUgbnVsbC4gSWYgaXQncyBub24tbnVsbCwg
aXQncyBhbHdheXMgdXAgdG8gZGF0ZSB3aXRoIG90aGVyIGZpZWxkcy4KLSNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9u
Q2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwogICAgIFJldGFpblB0cjxDRlVSTEF1dGhD
aGFsbGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7CiAjZWxzZQpAQCAtNzgsMyArNzksNSBAQCBwcml2
YXRlOgogfTsKIAogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDc1NzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNs
dWRlICJDb29raWUuaCIKQEAgLTI1NSw0ICsyNTUsNCBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVk
ZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDI0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYg
VVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRl
ICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJv
dGVjdGlvblNwYWNlLmgiCi0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbGlmIFBM
QVRGT1JNKFdJTikKKyNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIHN0YXRpYyBpbmxpbmUgQ0ZVUkxDcmVkZW50aWFsUmVmIGNvcHlDcmVkZW50
aWFsRnJvbVByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9u
U3BhY2UpCkBAIC00NSwxMSArNTQsMjkgQEAgc3RhdGljIGlubGluZSBDRlVSTENyZWRlbnRpYWxS
ZWYgY29weUNyZQogCiBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lz
dGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlD
cmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKSk7
CisgICAgcmV0dXJuIENyZWRlbnRpYWwoY3JlZGVudGlhbENGLmdldCgpKTsKKyNlbHNlCiAgICAg
YXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNl
KSk7CiAgICAgYXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVBy
b3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3Jl
KGNyZWRlbnRpYWxDRi5nZXQoKSk7CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3Zv
aWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KQoreworICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0Yg
PSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoMCkpOworCisgICAgaWYgKGNy
ZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Cisg
ICAgICAgIENyZWRlbnRpYWwgc2Vzc2lvbkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7CisgICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VT
ZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNl
c3Npb25DcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRD
cmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5j
ZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7CiB9CisjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikK
KyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMjA3
NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTg3LDQgKzg3LDQgQEAgQ0ZSdW5M
b29wUmVmIGxvYWRlclJ1bkxvb3AoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVu
TG9vcENGLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEw
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBv
bmNlCisjaWZuZGVmIExvYWRlclJ1bkxvb3BDRl9oCisjZGVmaW5lIExvYWRlclJ1bkxvb3BDRl9o
CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKIHR5cGVk
ZWYgc3RydWN0IF9fQ0ZSdW5Mb29wKiBDRlJ1bkxvb3BSZWY7CiAKQEAgLTM1LDQgKzM2LDYgQEAg
Q0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKTsKIAogfQogCi0jZW5kaWYgLy8gVVNFKENGVVJM
Q09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gTG9hZGVy
UnVuTG9vcF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNp
b24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdvcgogICAgIGlmIChtX3BsYXRm
b3JtU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25D
b3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BsYXRmb3JtU2Vzc2lvbi5n
ZXQoKSkpOwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIHJldHVybiBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVm
YXVsdCk7CiAjZWxzZQogICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBhbHNv
IHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5j
cHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlQ0ZOZXQu
aCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIAogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VQcml2Lmg+CkBAIC00Miw0ICs0Miw0IEBAIGJvb2wgUHJvdGVjdGlvblNwYWNl
OjpyZWNlaXZlc0NyZWRlbnRpYWwKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVj
dGlvblNwYWNlQ0ZOZXQuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMCArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNwcmFnbWEgb25jZQor
I2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCisjZGVmaW5lIFByb3RlY3Rpb25TcGFjZUNG
TmV0X2gKIAotI2lmICFQTEFURk9STShXSU4pIHx8ICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQotI2Vy
cm9yIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIHdoZW4gdGFyZ2V0aW5nIFdp
bmRvd3MgYW5kIHVzaW5nIENGVVJMQ29ubmVjdGlvbi4KKyNpZiAhUExBVEZPUk0oV0lOKSB8fCAh
VVNFKENGTkVUV09SSykKKyNlcnJvciBUaGlzIGhlYWRlciBzaG91bGQgb25seSBiZSBpbmNsdWRl
ZCB3aGVuIHRhcmdldGluZyBXaW5kb3dzIGFuZCB1c2luZyBDRk5ldHdvcmsuCiAjZW5kaWYKIAog
I2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKQEAgLTQ3LDMgKzQ4LDUgQEAgcHVibGlj
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUHJvdGVjdGlvblNw
YWNlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMSArMjgsMTAgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yQmFzZS5oIgogCiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RlN0cmVhbS5oPgogI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KICNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3aW5kb3dzLmggbXVzdCBiZSBpbmNsdWRlZCBi
ZWZvcmUgd2luY3J5cHQuaC4KICNlbmRpZgpAQCAtNjIsMTAgKzYxLDEyIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBDRkVycm9yUmVmIGNmRXJyb3IoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oV0lOKQogICAgIFJlc291
cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYg
ZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVm
IGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRfQ09OVEVYVCBjZXJ0aWZpY2F0ZSgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogICAgIFJlc291cmNl
RXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CiAgICAgQ0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVy
cm9yKCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0OwpAQCAtODcs
MTMgKzg4LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKLSNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbXV0YWJsZSBSZXRh
aW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwotI2VsaWYgUExBVEZPUk0oQ09DT0Ep
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9w
bGF0Zm9ybU5TRXJyb3I7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gbV9jZXJ0aWZpY2F0ZTsKKyNlbmRpZgogI2Vsc2UKICAgICBtdXRhYmxlIFJl
dGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtRXJyb3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5j
cHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDE3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogCi0jaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KLSNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uv
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCisj
aWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291
cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZFcnJvclJlZiBjZkVycm9yKQpAQCAtMjE1LDQgKzIx
OCw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSAKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAy
MDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBACiAjaW5jbHVkZSAi
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZO
ZXR3b3JrLmg+Ci0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgotI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01Nyw2
ICs1NSwyMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaCIKKyNpbmNs
dWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaWYgVVNFKENGTkVUV09SSykKKyNpbmNs
dWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25u
ZWN0aW9uUHJpdi5oPgorI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+Cisj
ZW5kaWYKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxwcm9jZXNzLmg+
CisKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBkZWNsYXJhdGlvbiBvbmNlIGl0J3MgaW4gV2ViS2l0
U3VwcG9ydExpYnJhcnkuCiBleHRlcm4gIkMiIHsKIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVS
TENvbm5lY3Rpb25SZWYgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMoCkBAIC02
NSwxMCArNzcsMTEgQEAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVVJMQ29ubmVjdGlvblJlZgog
ICBDRlVSTENvbm5lY3Rpb25DbGllbnQgKiAgY2xpZW50LAogICBDRkRpY3Rpb25hcnlSZWYgcHJv
cGVydGllcyk7CiB9CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiBzdGF0aWMgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVI
b3N0cygpCiB7CkBAIC0xMDcsNyArMTIwLDExIEBAIFJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VI
YW5kbGUoKQogICAgIAogc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBzaG91bGRTbmlmZkNvbm5l
Y3Rpb25Qcm9wZXJ0eSgpCiB7CisjaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBDRlNUUigi
X2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmIik7CisjZWxzZQorICAgIHJldHVy
biBfa0NGVVJMQ29ubmVjdGlvblByb3BlcnR5U2hvdWxkU25pZmY7CisjZW5kaWYKIH0KIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZp
b3Igc2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcykK
QEAgLTE0OSw2ICsxNjYsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5l
Y3RpCiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gc3NsUHJvcHM7CiAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgc3NsUHJvcHMgPSBhZG9wdENGKFJlc291cmNlSGFuZGxl
OjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChmaXJzdFJlcXVlc3QoKSkpOwor
I2Vsc2UKICAgICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMo
Zmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpKSkgewogICAgICAgICBzc2xQcm9wcyA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKSk7CiAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHNzbFByb3BzLmdldCgpLCBrQ0ZT
dHJlYW1TU0xBbGxvd3NBbnlSb290LCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC0xNjEsOCArMTgxLDEx
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICBpZiAoY2xp
ZW50Q2VydCAhPSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5lbmQoKSkgewogICAgICAgICBpZiAoIXNz
bFByb3BzKQogICAgICAgICAgICAgc3NsUHJvcHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgd2tTZXRDbGllbnRDZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhzc2xQ
cm9wcy5nZXQoKSwgKGNsaWVudENlcnQtPnZhbHVlKS5nZXQoKSk7CisjZW5kaWYKICAgICB9Cisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAgICAgaWYgKHNzbFByb3BzKQogICAgICAgICBDRlVS
TFJlcXVlc3RTZXRTU0xQcm9wZXJ0aWVzKHJlcXVlc3QuZ2V0KCksIHNzbFByb3BzLmdldCgpKTsK
QEAgLTE4Myw2ICsyMDYsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25u
ZWN0aQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNU
UigiX1dlYktpdFN5bmNocm9ub3VzUmVxdWVzdCIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBw
bGljYXRpb25BdWRpdERhdGEgPSBkLT5tX2NvbnRleHQtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXRE
YXRhKCk7CisgICAgaWYgKHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKQorICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigia0NGU3RyZWFtUHJvcGVy
dHlTb3VyY2VBcHBsaWNhdGlvbiIpLCBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YS5nZXQoKSk7
CisjZW5kaWYKKwogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxDb25uZWN0aW9u
U29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3Ry
ZWFtUHJvcGVydGllcyIpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBw
cm9wZXJ0aWVzRGljdGlvbmFyeTsKICAgICBpZiAoY2xpZW50UHJvcGVydGllcykKQEAgLTIwMSw3
ICsyMzAsMTQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxD
b25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7CiAgICAg
Q0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQorICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxl
Z2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKKyAgICBlbHNlCisgICAgICAgIGQtPm1fY29ubmVj
dGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7CisjZWxzZQogICAgIGQtPm1fY29ubmVjdGlvbkRl
bGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZSh0aGlzKSk7CisjZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0
ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xp
ZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNs
aWVudCgpOwpAQCAtMjI4LDYgKzI2NCwxMCBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgp
CiAKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNsaWVudCgpIHx8IGNs
aWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKIAorI2lmIEVOQUJMRShX
RUJfVElNSU5HKSAmJiBQTEFURk9STShDT0NPQSkgJiYgIUhBVkUoVElNSU5HREFUQU9QVElPTlMp
CisgICAgc2V0Q29sbGVjdHNUaW1pbmdEYXRhKCk7CisjZW5kaWYKKwogICAgIFNjaGVkdWxpbmdC
ZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IgPSBjbGllbnQoKS0+bG9hZGluZ1N5bmNocm9ub3Vz
WEhSKCkgPyBTY2hlZHVsaW5nQmVoYXZpb3I6OlN5bmNocm9ub3VzIDogU2NoZWR1bGluZ0JlaGF2
aW9yOjpBc3luY2hyb25vdXM7CiAKICAgICBjcmVhdGVDRlVSTENvbm5lY3Rpb24oc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UsIGQtPm1fc2hvdWxkQ29udGVudFNuaWZmLCBzY2hlZHVsaW5nQmVo
YXZpb3IsIGNsaWVudCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQoKSk7CkBAIC0z
MTEsNiArMzUxLDE2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMK
ICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICBBU1NF
UlQoY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgPT0gdGhpcyk7IC8vIFNob3VsZCBi
ZSBhbHJlYWR5IHNldC4KIAorI2lmICFQTEFURk9STShXSU4pCisgICAgLy8gUHJveHkgYXV0aGVu
dGljYXRpb24gaXMgaGFuZGxlZCBieSBDRk5ldHdvcmsgaW50ZXJuYWxseS4gV2UgY2FuIGdldCBo
ZXJlIGlmIHRoZSB1c2VyIGNhbmNlbHMKKyAgICAvLyBDRk5ldHdvcmsgYXV0aGVudGljYXRpb24g
ZGlhbG9nLCBhbmQgd2Ugc2hvdWxkbid0IGFzayB0aGUgY2xpZW50IHRvIGRpc3BsYXkgYW5vdGhl
ciBvbmUgaW4gdGhhdCBjYXNlLgorICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCku
aXNQcm94eSgpKSB7CisgICAgICAgIC8vIENhbm5vdCB1c2UgcmVjZWl2ZWRSZXF1ZXN0VG9Db250
aW51ZVdpdGhvdXRDcmVkZW50aWFsKCksIGJlY2F1c2UgY3VycmVudCBjaGFsbGVuZ2UgaXMgbm90
IHlldCBzZXQuCisgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25u
ZWN0aW9uLmdldCgpLCAwLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAodHJ5SGFuZGxlUGFzc3dvcmRC
YXNlZEF1dGhlbnRpY2F0aW9uKGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzMx
LDcgKzM4MSwxMSBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAK
ICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAg
ICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
MCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3JlZGVudGlh
bC5nZXQoKSk7CisjZWxzZQogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNm
Q3JlZGVudGlhbC5nZXQoKSk7CisjZW5kaWYKICAgICAgICAgCiAgICAgICAgIFVSTCB1cmxUb1N0
b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXND
b2RlKCkgPT0gNDAxKQpAQCAtMzYxLDggKzQxNSwxMiBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0
cnlIYW5kbGVQYXNzd29yZEJhCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVk
ZW50aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGly
ZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9u
KCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAg
ICAgICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgICAgICBDRlVSTENvbm5l
Y3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNy
ZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbHNlCiAg
ICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFs
ID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlh
bC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbmRpZgogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00
MTIsMTIgKzQ3MCwyMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwo
CiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFn
ZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRv
U3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25u
ZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZV
UkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworI2Vsc2UKICAgICAgICAgICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVu
dGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nv
bm5lY3Rpb24pIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgQ0ZVUkxDb25uZWN0aW9u
VXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50
aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CisjZWxzZQogICAgICAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNy
ZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlh
bChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNm
VVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGNsZWFyQXV0aGVu
dGljYXRpb24oKTsKQEAgLTU1OCw2ICs2MjQsMzAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxh
dGZvcm1TZXREZWZlcnNMbwogICAgICAgICBDRlVSTENvbm5lY3Rpb25SZXN1bWUoZC0+bV9jb25u
ZWN0aW9uLmdldCgpKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQordm9pZCBSZXNvdXJjZUhh
bmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQoreworICAgIENGUnVuTG9vcFJlZiBy
dW5Mb29wID0gcGFpci5ydW5Mb29wKCk7CisgICAgaWYgKCFydW5Mb29wKQorICAgICAgICByZXR1
cm47CisKKyAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOworICAgIGlmIChkLT5tX3N0YXJ0V2hl
blNjaGVkdWxlZCkgeworICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rp
b24uZ2V0KCkpOworICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOworICAg
IH0KK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBh
aXIpCit7CisgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKKyAgICBp
ZiAoIXJ1bkxvb3ApCisgICAgICAgIHJldHVybjsKKworICAgIENGVVJMQ29ubmVjdGlvblVuc2No
ZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9k
ZSgpKTsKK30KKyNlbmRpZgorCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxl
OjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVl
c3Q7CkBAIC01ODYsNiArNjc2LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxs
Q2FjaGVSZQogewogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5jb250aW51ZVdpbGxDYWNo
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
I2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAko
cmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTMgKzI2LDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAj
aW5jbHVkZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMSw0ICsy
MTgsNCBAQCBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgUmVzb3VyY2VIYW5kbGVDCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEwIEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNwcmFnbWEgb25jZQorI2lmbmRlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlX2gKKyNkZWZpbmUgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZV9oCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25u
ZWN0aW9uUHJpdi5oPgpAQCAtOTksNCArMTAwLDYgQEAgcHJvdGVjdGVkOgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCIKQEAgLTc1LDYgKzc1LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIENGVVJMUmVxdWVzdFNldFNo
b3VsZFN0YXJ0U3luY2hyb25vdXNseShyZXF1ZXN0LCAxKTsKKyNlbmRpZgogICAgIENGVVJMUmVm
IHJlcXVlc3RVUkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwocmVxdWVzdCk7CiAgICAgaWYgKCFyZXF1
ZXN0VVJMKQogICAgICAgICByZXR1cm47CkBAIC0xNDYsOCArMTQ5LDEwIEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICAgICAgICAgICAgIGFkanVzdE1JTUVUeXBl
SWZOZWNlc3NhcnkoY2ZSZXNwb25zZSwgaXNNYWluUmVzb3VyY2VMb2FkKTsKICAgICAgICAgfQog
CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9j
b2xQcm9wZXJ0eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KERv
Tm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCiAgICAgICAg
ICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRt
bCIpKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogICAgICAgICAKICAgICAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwogI2lmIEVOQUJMRShXRUJf
VElNSU5HKQpAQCAtMjgzLDcgKzI4OCwxNSBAQCBCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsCiAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRU
b1Byb3RlY3Rpb25TcGFjZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1f
aGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFByb3RlY3Rpb25T
cGFjZShwcm90ZWN0aW9uU3BhY2UpKTsKKyAgICAgICAgUHJvdGVjdGlvblNwYWNlIGNvcmVQcm90
ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKTsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9u
U2NoZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKSB7
CisgICAgICAgICAgICBtX2Jvb2xSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIGRpc3BhdGNo
X3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorICAgICAgICBtX2hhbmRsZS0+Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKICAg
ICB9KTsKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSwgRElTUEFUQ0hf
VElNRV9GT1JFVkVSKTsKICAgICByZXR1cm4gbV9ib29sUmVzdWx0OwpAQCAtMzM0LDQgKzM0Nyw0
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICNlbmRpZiAvLyBV
U0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgJKHJldmlzaW9uIDIwNzU3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw5ICsyMywxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UK
KyNpZm5kZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZV9oCisjZGVmaW5lIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWVfaAogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KQEAgLTc5LDQgKzgwLDYg
QEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShD
RlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKworI2VuZGlmIC8vIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWVfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAKIE9CSkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RS
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKQEAgLTYxLDcgKzYxLDEzIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogICAgIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVl
c3QoTlNVUkxSZXF1ZXN0ICopOworICAgIHZvaWQgdXBkYXRlTlNVUkxSZXF1ZXN0KCk7CisgICAg
dm9pZCBjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCk7CisjZW5kaWYKKwogICAgIFJlc291cmNl
UmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICA6IFJlc291cmNlUmVx
dWVzdEJhc2UoKQogICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkKQEAgLTc4LDcgKzg0
LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZyb21EZWxlZ2F0
ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBib29sIGVuY29kaW5nUmVx
dWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1
ZXN0OyB9CisjZWxzZQogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0KKyNlbmRpZgogICAgIFdF
QkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9s
aWN5KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1Vz
ZXJJbml0aWF0ZWRLZXkoKTsKQEAgLTk1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGNvbnN0IFN0cmluZyYgZG9tYWluKSB7IG1fY2FjaGVQ
YXJ0aXRpb24gPSBwYXJ0aXRpb25OYW1lKGRvbWFpbik7IH0KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJM
UmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdG9yYWdl
U2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKICNlbmRpZgpAQCAtMTE1LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNF
KENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBtX2NmUmVxdWVzdDsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJ
KHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0
LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01OSwxMSArNTksMTIgQEAgYm9vbCBSZXNvdXJjZVJlcXVl
c3Q6OnNfaHR0cFBpcGVsaW5pbmdFbgogYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0cFBpcGVs
aW5pbmdFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CisjaWYgVVNFKENGTkVUV09SSykKIAogdHlwZWRlZiB2b2lkICgqQ0ZVUkxSZXF1ZXN0U2V0Q29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24pKENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYsIENGQXJyYXlSZWYpOwogdHlwZWRlZiBDRkFycmF5UmVmICgqQ0ZVUkxSZXF1
ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShD
RlVSTFJlcXVlc3RSZWYpOwogCisjaWYgUExBVEZPUk0oV0lOKQogc3RhdGljIEhNT0RVTEUgZmlu
ZENGTmV0d29ya01vZHVsZSgpCiB7CiAjaWZuZGVmIERFQlVHX0FMTApAQCAtODIsNiArODMsMTcg
QEAgc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpbwogewogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oR2V0UHJvY0FkZHJlc3MoZmluZENGTmV0d29ya01v
ZHVsZSgpLCAiX0NGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkiKSk7CiB9CisjZWxpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyBDRlVSTFJlcXVl
c3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5k
Q0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVu
Y3Rpb24oKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdFNldENv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uPihkbHN5bShSVExE
X0RFRkFVTFQsICJfQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5IikpOworfQorCitzdGF0aWMgQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uIGZpbmRDRlVSTFJlcXVlc3RDb3B5Q29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24oKQoreworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZBVUxULCAiX0NGVVJM
UmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkiKSk7Cit9
CisjZW5kaWYKIAogc3RhdGljIHZvaWQgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZBcnJheVJlZiBmYWxs
YmFja0FycmF5KQogewpAQCAtMTQ0LDYgKzE1NiwxMCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVQbGF0Zm9ybVJlCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSkK
ICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdCwgdG9QbGF0
Zm9ybVJlcXVlc3RQcmlvcml0eShwcmlvcml0eSgpKSk7CiAKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwga0NGVVJMUmVx
dWVzdEFsbG93QWxsUE9TVENhY2hpbmcsIGtDRkJvb2xlYW5UcnVlKTsKKyNlbmRpZgorCiAgICAg
c2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKIAogICAgIENG
VVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29r
aWVzKCkpOwpAQCAtMTY4LDYgKzE4NCw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmUKICNlbmRpZgogCiAgICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVz
dCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgp
OworI2VuZGlmCiB9CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIGEgc3dpdGNoIGJhc2VkIG9u
IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBhcmFtZXRlcgpAQCAtMjA2LDEyICsyMjUsMzAg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVAogICAgIH0KIAogICAg
IG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKKyNlbmRpZgogfQogCiB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogewogICAgIGlmICghbV9jZlJl
cXVlc3QpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS85
OTEzNTI2PgorICAgICAgICAvLyBUaGlzIGlzIGEgaGFjayB0byBtaW1pYyB0aGUgc3VidGxlIGJl
aGF2aW91ciBvZiB0aGUgRm91bmRhdGlvbiBiYXNlZCBSZXNvdXJjZVJlcXVlc3QKKyAgICAgICAg
Ly8gY29kZS4gVGhhdCBjb2RlIGRvZXMgbm90IHJlc2V0IG1faHR0cE1ldGhvZCBpZiB0aGUgTlNV
UkxSZXF1ZXN0IGlzIG5pbC4gSSBmaWxlZAorICAgICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzM2PiB0byB0cmFjayB0aGF0LgorICAgICAgICAvLyBB
bm90aGVyIHJlbGF0ZWQgYnVnIGlzIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjYzNTA+LiBGaXhpbmcgdGhhdAorICAgICAgICAvLyB3b3VsZCwgaWRlYWxseSwgYWxs
b3cgdXMgdG8gbm90IGhhdmUgdGhpcyBoYWNrLiBCdXQgdW5mb3J0dW5hdGVseSB0aGF0IGNhdXNl
ZCBsYXlvdXQgdGVzdAorICAgICAgICAvLyBmYWlsdXJlcy4KKyAgICAgICAgLy8gUmVtb3ZhbCBv
ZiB0aGlzIGhhY2sgaXMgdHJhY2tlZCBieSA8cmRhcjovL3Byb2JsZW0vOTk3MDQ5OT4uCisKKyAg
ICAgICAgU3RyaW5nIGh0dHBNZXRob2QgPSBtX2h0dHBNZXRob2Q7CiAgICAgICAgICp0aGlzID0g
UmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIG1faHR0cE1ldGhvZCA9IGh0dHBNZXRob2Q7Cisj
ZWxzZQorICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgpOworI2VuZGlmCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTI4Nyw5ICszMjQsMTIgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAogICAgIGlmIChzdG9yYWdlU2Vzc2lvbikKICAgICAgICAg
X0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdCwgc3RvcmFnZVNlc3Npb24p
OwogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKKyNlbmRpZgogfQogCi0jZW5k
aWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogCiB2
b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3Bl
cnRpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdCkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNyArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9u
Y2UKKyNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaAorI2RlZmluZSBSZXNvdXJjZVJlcXVl
c3RDRk5ldF9oCiAKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRQcmlvcml0eS5oIgpAQCAtMzMsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYg
VVNFKENGTkVUV09SSykKIHZvaWQgZ2V0UmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IENGVVJMUmVxdWVzdFJlZik7CiBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC03OCwzICs3OSw1IEBAIGlubGluZSBDRlVSTFJl
cXVlc3RQcmlvcml0eSB0b1BsYXRmb3JtUmUKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlz
aW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSAiQ0ZO
ZXR3b3JrU1BJLmgiCiAjZW5kaWYKIApAQCAtNDMsMTMgKzQzLDE2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIFJlc291cmNlUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogICAgICAg
ICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCiAgICAgICAgICwgbV9jZlJlc3BvbnNlKGNm
UmVzcG9uc2UpCiAgICAgewogICAgICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOwogICAgIH0K
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNl
KE5TVVJMUmVzcG9uc2UgKik7CisjZW5kaWYKICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShO
U1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogICAgICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlh
bGl6ZWQpCkBAIC04MSw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICovCiAgICAgfQogCi0j
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVf
RVhQT1JUIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0OwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTQsOSArMTE3LDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzUXVpY2tMb29rIHsgZmFsc2UgfTsKICNlbmRpZgogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGVVJMUmVz
cG9uc2VSZWY+IG1fY2ZSZXNwb25zZTsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4g
bV9uc1Jlc3BvbnNlOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAko
cmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogCi0j
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAi
Q0ZOZXR3b3JrU1BJLmgiCiAKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJG
aWVsZHNbXSA9IHsKQEAgLTQzLDkgKzQ3LDEzIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBj
b21tb25IZWFkZXJGaWUKIENGVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxS
ZXNwb25zZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIG5zVVJMUmVzcG9uc2UoKTsKKyNlbHNlCiAg
ICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gbV91cmwuY3JlYXRlQ0ZVUkwoKTsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY3JlYXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVSTFJlc3Bv
bnNlLCB3aGljaCBkb2VzIG5vdCBldmVuIGhhdmUgYSBzdGF0dXMgY29kZS4KICAgICAgICAgbV9j
ZlJlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwgbV9t
aW1lVHlwZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVu
dExlbmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1lLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJl
dHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CkBAIC0xMDgsMTAgKzExNiwxMiBAQCB2b2lkIFJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2
ZWw7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewogICAgIHJldHVybiB7
IH07CiB9CisjZW5kaWYKIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2Vz
dGVkRmlsZW5hbWUoKSBjb25zdAogewpAQCAtMTMyLDQgKzE0Miw0IEBAIGJvb2wgUmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRl
ckNsaWVudENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwCShyZXZpc2lvbiAyMDc1
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAot
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIK
QEAgLTQ4LDQgKzQ4LDQgQEAgUmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6
cAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
CShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5o
IgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgpAQCAtNDEsNiArNDAsMjAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiV2ViQ29yZVRo
cmVhZC5oIgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCkBAIC01MCwxMSArNjMsMjAgQEAgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbgogCiB2b2lkIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBSZXF1ZXN0KENGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgQ0ZVUkxS
ZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJlcXVlc3QsIDEpOworI2VuZGlmCiB9
CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpzZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9u
KQogeworI2lmIFBMQVRGT1JNKFdJTikKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhD
dXJyZW50TWVzc2FnZVF1ZXVlKGNvbm5lY3Rpb24pOworI2VsaWYgUExBVEZPUk0oSU9TKQorICAg
IENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoY29ubmVjdGlvbiwgV2ViVGhyZWFk
UnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2Vsc2UKKyAgICBDRlVSTENvbm5l
Y3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGNvbm5lY3Rpb24sIENGUnVuTG9vcEdldEN1cnJlbnQo
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyNlbmRpZgogICAgIENGVVJMQ29ubmVjdGlvblNj
aGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChjb25uZWN0aW9uLCBsb2FkZXJSdW5Mb29wKCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKQEAgLTgxLDYgKzEwMyw3IEBAIENGVVJMUmVxdWVz
dFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGwKICAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0Owog
fQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQogc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBl
KENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRl
ZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCku
bGVha1JlZigpOwpAQCAtMTEwLDE0ICsxMzMsMzAgQEAgc3RhdGljIHZvaWQgYWRqdXN0TUlNRVR5
cGVJZk5lY2Vzc2FyeShDRgogICAgIGlmIChyZXN1bHQgIT0gb3JpZ2luYWxSZXN1bHQpCiAgICAg
ICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCByZXN1bHQuZ2V0KCkpOwog
fQorI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENv
bm5lY3Rpb25SZWYsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3ZvaWQgU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9u
c2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNw
b25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlPSVw
KSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAg
ICByZXR1cm47CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBBdm9pZCBNSU1FIHR5cGUg
c25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4K
KyAgICBhdXRvIG1zZyA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7
CisgICAgaW50IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0
dXNDb2RlKG1zZykgOiAwOworCisgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KSB7CisgICAgICAg
IGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVl
c3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOworICAgICAgICBhZGp1
c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7Cisg
ICAgfQorCisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBpZiAoX0NGVVJMUmVxdWVzdENvcHlQcm90
b2NvbFByb3BlcnR5Rm9yS2V5KG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3Qo
RG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKKyAgICAg
ICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0L2h0bWwi
KSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbHNlCiAgICAgaWYgKCFDRlVSTFJlc3Bv
bnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSkpCiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkoY2ZSZXNwb25zZSk7CiAKQEAgLTEyNiw2ICsxNjUsNyBAQCB2b2lkIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVCghbV9oYW5kbGUtPnNob3Vs
ZENvbnRlbnRTbmlmZigpKTsKICAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2Up
OwogICAgIH0KKyNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgYm9vbCBpc1F1aWNr
TG9va1ByZXZpZXcgPSBmYWxzZTsKQEAgLTEzNyw2ICsxNzcsMTIgQEAgdm9pZCBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogI2VuZGlmCiAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7CisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShXRUJfVElNSU5HKQorICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5n
RGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLm5ldHdvcmtMb2FkVGltaW5nKCkpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisjZW5kaWYKKwogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0SXNRdWlja0xvb2soaXNRdWlja0xv
b2tQcmV2aWV3KTsKICNlbmRpZgpAQCAtMTg1LDYgKzIzMSw3IEBAIHZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKIAogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3Bv
bnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CisjaWYgUExBVEZP
Uk0oV0lOKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBD
YWNoaW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KICAgICAvLyBGSVhNRTog
V2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3
MTUwOSkuCiAgICAgQ0ZVUkxSZXNwb25zZVJlZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVS
TFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKTsKQEAgLTE5NCw4ICsy
NDEsMTYgQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJvbm91c1Jlc291cgogICAgICAg
ICBpZiAodmFyeVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorI2VuZGlmIC8v
IFBMQVRGT1JNKFdJTikKKworI2lmIFBMQVRGT1JNKFdJTikKICAgICBpZiAobV9oYW5kbGUtPmNs
aWVudCgpICYmICFtX2hhbmRsZS0+Y2xpZW50KCktPnNob3VsZENhY2hlUmVzcG9uc2UobV9oYW5k
bGUsIGNhY2hlZFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgbmV3UmVzcG9uc2UgPSBtX2hhbmRsZS0+Y2xpZW50KCktPndpbGxD
YWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7CisgICAgaWYgKG5ld1Jlc3Bv
bnNlICE9IGNhY2hlZFJlc3BvbnNlKQorICAgICAgICByZXR1cm4gbmV3UmVzcG9uc2U7CisjZW5k
aWYKIAogICAgIENGUmV0YWluKGNhY2hlZFJlc3BvbnNlKTsKICAgICByZXR1cm4gY2FjaGVkUmVz
cG9uc2U7CkBAIC0yMzIsNyArMjg3LDE0IEBAIEJvb2xlYW4gU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ28KIAogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25T
cGFjZShoYW5kbGU9JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAg
UHJvdGVjdGlvblNwYWNlIGNvcmVQcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlKTsKKyAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
blNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKKyNlbHNlCiAg
ICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGNvcmUocHJvdGVjdGlvblNwYWNlKSk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBVU0UoUFJPVEVD
VElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHJldmlz
aW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDkgKzIzLDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25j
ZQorI2lmbmRlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVfaAorI2RlZmluZSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVfaAogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCkBA
IC02Niw0ICs2Nyw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNl
bmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisK
KyNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVk
ZW50aWFsQ29jb2EuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTIgKzIzLDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I3ByYWdtYSBvbmNlCisjaWZuZGVmIENyZWRlbnRpYWxDb2NvYV9oCisjZGVmaW5lIENyZWRlbnRp
YWxDb2NvYV9oCiAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFzZS5oIgogI2luY2x1ZGUgPFNlY3Vy
aXR5L1NlY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgorI2VuZGlmCisKIE9CSkNfQ0xBU1Mg
TlNVUkxDcmVkZW50aWFsOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NywxMiArNTIsMTgg
QEAgcHVibGljOgogCiAgICAgQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiwgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlKTsKIAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgZXhwbGljaXQgQ3JlZGVu
dGlhbChDRlVSTENyZWRlbnRpYWxSZWYpOworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgQ3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRm
b3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNDcmVkZW50aWFsICYmIGVuY29kaW5nUmVxdWly
ZXNQbGF0Zm9ybURhdGEobV9uc0NyZWRlbnRpYWwuZ2V0KCkpOyB9CiAKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwoKSBjb25zdDsKKyNlbmRp
ZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ3JlZGVudGlhbCAqbnNDcmVkZW50aWFsKCkgY29u
c3Q7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYs
IGNvbnN0IENyZWRlbnRpYWwmKTsKQEAgLTY0LDMgKzc1LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENyZWRlbnRpYWxDb2NvYV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Ny
ZWRlbnRpYWxDb2NvYS5tbQkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDEzIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNyZWRlbnRpYWxD
b2NvYS5oIgogCisjaWYgVVNFKENGTkVUV09SSykKK0BpbnRlcmZhY2UgTlNVUkxDcmVkZW50aWFs
IChXZWJEZXRhaWxzKQorLSAoaWQpX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOihDRlVSTENyZWRl
bnRpYWxSZWYpY3JlZGVudGlhbDsKKy0gKENGVVJMQ3JlZGVudGlhbFJlZikgX0NGVVJMQ3JlZGVu
dGlhbDsKK0BlbmQKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBOU1VS
TENyZWRlbnRpYWxQZXJzaXN0ZW5jZSB0b05TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlKENyZWRl
bnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKQEAgLTc3LDEyICs4NCwyNiBAQCBDcmVkZW50
aWFsOjpDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmCiAgICAgfQogfQogCisjaWYgVVNFKENG
TkVUV09SSykKK0NyZWRlbnRpYWw6OkNyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRl
bnRpYWwpCisgICAgOiBDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2Nd
IF9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDpjcmVkZW50aWFsXSkuZ2V0KCkpCit7Cit9CisjZW5k
aWYKKwogQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwp
CiAgICAgOiBDcmVkZW50aWFsQmFzZShjcmVkZW50aWFsLnVzZXIsIGNyZWRlbnRpYWwucGFzc3dv
cmQsIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UpKQogICAg
ICwgbV9uc0NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKIH0KIAorI2lmIFVTRShDRk5FVFdPUksp
CitDRlVSTENyZWRlbnRpYWxSZWYgQ3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW25zQ3JlZGVudGlhbCgpIF9DRlVSTENyZWRlbnRpYWxdOworfQorI2VuZGlm
CisKIE5TVVJMQ3JlZGVudGlhbCAqQ3JlZGVudGlhbDo6bnNDcmVkZW50aWFsKCkgY29uc3QKIHsK
ICAgICBpZiAobV9uc0NyZWRlbnRpYWwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCShy
ZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxNiBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25j
ZQorI2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDb2NvYV9oCisjZGVmaW5lIFByb3RlY3Rpb25TcGFj
ZUNvY29hX2gKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBzdHJ1Y3QgX0NG
VVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKKyNlbmRpZgorCiBP
QkpDX0NMQVNTIE5TVVJMUHJvdGVjdGlvblNwYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Miw2ICs0Nyw5IEBAIHB1YmxpYzoKIAogICAgIFByb3RlY3Rpb25TcGFjZShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRlZFZhbHVlKSA6IFByb3RlY3Rpb25TcGFjZUJhc2Uo
ZGVsZXRlZFZhbHVlKSB7IH0KIAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgZXhwbGljaXQgUHJv
dGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKKyNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAq
KTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYik7CkBAIC01MCw2ICs1OCw5IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHko
KSBjb25zdDsKIAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VS
ZWYgY2ZTcGFjZSgpIGNvbnN0OworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxQcm90
ZWN0aW9uU3BhY2UgKm5zU3BhY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTU5LDMgKzcwLDUg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBy
b3RlY3Rpb25TcGFjZUNvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQkocmV2
aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Q
cm90ZWN0aW9uU3BhY2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsMjIgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIKIAor
I2lmIFVTRShDRk5FVFdPUkspCitAaW50ZXJmYWNlIE5TVVJMUHJvdGVjdGlvblNwYWNlIChXZWJE
ZXRhaWxzKQorLSAoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIF9DRlVSTFByb3RlY3Rpb25TcGFj
ZTsKKy0gKGlkKV9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOihDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZiljZlByb3RTcGFjZTsKK0BlbmQKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2Uo
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgc3BhY2UpCisgICAgOiBQcm90ZWN0aW9uU3BhY2UoYWRv
cHROUyhbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFByb3RlY3Rp
b25TcGFjZTpzcGFjZV0pLmdldCgpKQoreworfQorI2VuZGlmCisKIHN0YXRpYyBQcm90ZWN0aW9u
U3BhY2VTZXJ2ZXJUeXBlIHR5cGUoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogewogICAg
IGlmIChbc3BhY2UgaXNQcm94eV0pIHsKQEAgLTkyLDYgKzEwNSwxMyBAQCBQcm90ZWN0aW9uU3Bh
Y2U6OlByb3RlY3Rpb25TcGFjZShOU1VSTFByCiAgICAgbV9uc1NwYWNlID0gc3BhY2U7CiB9CiAK
KyNpZiBVU0UoQ0ZORVRXT1JLKQorQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNw
YWNlOjpjZlNwYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VdOworfQorI2VuZGlmCisKIE5TVVJMUHJvdGVjdGlvblNwYWNlICpQcm90ZWN0
aW9uU3BhY2U6Om5zU3BhY2UoKSBjb25zdAogewogICAgIGlmIChtX25zU3BhY2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzLDkgKzUzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVx
dWVzdCAqUmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kg
Ym9keVBvbGljeSkgY29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGlj
eSk7CisjaWYgVVNFKENGTkVUV09SSykKKyAgICBpZiAoIW1fbnNSZXF1ZXN0KQorICAgICAgICBj
b25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJlcXVlc3QoKTsK
KyNlbmRpZgogICAgIHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwogfQogCisjaWYgIVVTRShDRk5FVFdPUkspCisKIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJj
ZVJlcXVlc3Q6OmNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBj
b25zdAogewogICAgIHJldHVybiBbbnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kpIF9DRlVSTFJlcXVl
c3RdOwpAQCAtMjM4LDYgKzI0NCw4IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdl
U2Vzc2lvbigKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVxdWVzdFdpdGhTdG9y
YWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKIH0KIAorI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0JKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NSw4ICs3NSwxMyBA
QCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OmRpc2FibGVMYXp5SW5pdGlhCiAKIENlcnRpZmljYXRl
SW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7
CisjaWYgVVNFKENGTkVUV09SSykKKyAgICBBU1NFUlQobV9jZlJlc3BvbnNlKTsKKyAgICBDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBtX2NmUmVzcG9uc2UuZ2V0KCk7CisjZWxzZQogICAg
IEFTU0VSVChtX25zUmVzcG9uc2UpOwogICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSA9
IFttX25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOworI2VuZGlmCiAKICAgICBpZiAoIWNmUmVz
cG9uc2UpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMDksNiArMTE0LDM1IEBAIENlcnRpZmlj
YXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm8KICNlbmRpZgogfQogCisjaWYgVVNFKENG
TkVUV09SSykKKworTlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25z
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAh
bV9pc051bGwpIHsKKyAgICAgICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKKyAgICAgICAgbV9jZlJl
c3BvbnNlID0gW21fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV07CisgICAgICAgIHJl
dHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7CisgICAgfQorCisgICAgaWYgKCFtX2NmUmVzcG9uc2Up
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpZiAoIW1fbnNSZXNwb25zZSkKKyAgICAgICAg
bV9uc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6
bV9jZlJlc3BvbnNlLmdldCgpXTsKKworICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Cit9
CisKK1Jlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNS
ZXNwb25zZSkKKyAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCisgICAgLCBtX2NmUmVz
cG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQorICAgICwgbV9uc1Jlc3BvbnNlKG5z
UmVzcG9uc2UpCit7CisgICAgbV9pc051bGwgPSAhbnNSZXNwb25zZTsKK30KKworI2Vsc2UKKwog
c3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNbXSA9IHsKICAgICBAIkFn
ZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwg
QCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEiCiB9OwpAQCAtMjA4LDYgKzI0
Miw4IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKICAgICByZXR1
cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5uc1VSTFJlc3BvbnNlKCk7CiB9CiAKKyNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1F1aWNrTG9vay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1F1aWNrTG9vay5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsMTAgQEAKICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmVm
UHRyLmg+CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgor
I2VuZGlmCisKIE9CSkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBP
QkpDX0NMQVNTIE5TRmlsZUhhbmRsZTsKQEAgLTc3LDYgKzgxLDkgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNy
ZWF0ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICos
IGlkIGRlbGVnYXRlKTsKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVm
KTsKKyNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBh
IHBsYXRmb3JtIHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogCkBAIC04OCw2ICs5NSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEZhaWwoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9u
c2UgKm5zUmVzcG9uc2UoKTsKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIENGVVJMUmVzcG9uc2VS
ZWYgY2ZSZXNwb25zZSgpOworI2VuZGlmCiAKICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRy
PFF1aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1F1aWNrTG9vay5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSw4MSBAQCBj
b25zdCBjaGFyKiBXZWJDb3JlOjpRTFByZXZpZXdQcm90b2NvbCgpCiAgICAgcmV0dXJuIHByZXZp
ZXdQcm90b2NvbC5nZXQoKS5kYXRhKCk7CiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorLy8gVGhl
IHdheSBRdWlja0xvb2sgd29ya3MgaXMgd2UgcGFzcyBpdCBhbiBOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZSBjYWxsYmFjayBvYmplY3QgYXQgY3JlYXRpb24KKy8vIHRpbWUuIFRoZW4gd2UgcGFzcyBp
dCBhbGwgdGhlIGRhdGEgYXMgd2UgcmVjZWl2ZSBpdC4gT25jZSB3ZSd2ZSBkb3dubG9hZGVkIHRo
ZSBmdWxsIFVSTCwKKy8vIFF1aWNrTG9vayB0dXJucyBhcm91bmQgYW5kIHNlbmQgdXMsIHRocm91
Z2ggdGhpcyBkZWxlZ2F0ZSwgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSB3aGljaCB3ZQor
Ly8gcGFzcyBvbiB0byBXZWJDb3JlLiBUaGUgZmxhZyBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRv
Q29udmVydGVyIGluIFF1aWNrTG9va0hhbmRsZSBkZWNpZGVzCisvLyB3aGV0aGVyIHRvIHBhc3Mg
dGhlIGRhdGEgdG8gUXVpY2tMb29rIG9yIFdlYkNvcmUuCisvLworLy8gVGhpcyB3b3JrcyBmaW5l
IHdoZW4gdXNpbmcgTlMgQVBJcywgYnV0IHdoZW4gdXNpbmcgQ0ZOZXR3b3JrLCB3ZSBkb24ndCBo
YXZlIGEgTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUuCisvLyBTbyB3ZSBjcmVhdGUgV2ViUXVpY2tM
b29rSGFuZGxlQXNEZWxlZ2F0ZSBhcyBhbiBpbnRlcm1lZGlhdGUgZGVsZWdhdGUgb2JqZWN0IGFu
ZCBwYXNzIGl0IHRvCisvLyBRTFByZXZpZXdDb252ZXJ0ZXIuIFRoZSBwcm94eSBkZWxlZ2F0ZSB0
aGVuIGZvcndhcmRzIHRoZSBtZXNzYWdlcyBvbiB0byB0aGUgQ0ZOZXR3b3JrIGNvZGUuCitAaW50
ZXJmYWNlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25u
ZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CisgICAgUmVm
UHRyPFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9j
b25uZWN0aW9uRGVsZWdhdGU7Cit9CisKKy0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRl
OihTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5l
Y3Rpb25EZWxlZ2F0ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlF1aWNrTG9va0hhbmRs
ZUFzRGVsZWdhdGUKKy0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0
ZQoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gY29ubmVjdGlvbkRlbGVnYXRl
OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGFBcnJheTooTlNBcnJheSAqKWRhdGFBcnJh
eQoreworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBpZiAoIW1fY29ubmVjdGlv
bkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xv
b2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KCkiKTsKKyAgICBtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGFBcnJheShyZWludGVycHJldF9jYXN0PENGQXJy
YXlSZWY+KGRhdGFBcnJheSkpOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVj
ZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAoreworICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47
CisgICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNl
aXZlRGF0YSgpIC0gZGF0YSBsZW5ndGggPSAlbGQiLCAobG9uZylbZGF0YSBsZW5ndGhdKTsKKwor
ICAgIC8vIFF1aWNrTG9vayBjb2RlIHNlbmRzIHVzIGEgbmlsIGRhdGEgYXQgdGltZXMuIFRoZSBj
aGVjayBiZWxvdyBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluCisgICAgLy8gUmVzb3VyY2VIYW5k
bGVNYWMuY3BwIGFkZGVkIGZvciBhIGRpZmZlcmVudCBidWcuCisgICAgaWYgKCFbZGF0YSBsZW5n
dGhdKQorICAgICAgICByZXR1cm47CisgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2Vp
dmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhKSwgc3RhdGljX2Nhc3Q8aW50
PihsZW5ndGhSZWNlaXZlZCkpOworfQorCistICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2Fk
aW5nOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCit7CisgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOworICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZp
bmlzaExvYWRpbmcoKSIpOworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGaW5pc2hMb2Fk
aW5nKCk7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKKyAgICAgICAg
cmV0dXJuOworICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6
ZGlkRmFpbCgpIik7CisgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZhaWwocmVpbnRlcnBy
ZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpOworfQorCistICh2b2lkKWRldGFjaEhhbmRsZQor
eworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsKK30KK0BlbmQKKyNlbmRpZgor
CiBAaW50ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVj
dCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRl
PiB7CiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBfcmVzb3VyY2VMb2FkZXI7CiAgICAgQk9P
TCBfaGFzU2VudERpZFJlY2VpdmVSZXNwb25zZTsKQEAgLTMzOSw2ICs0MTQsMjYgQEAgc3RkOjp1
bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMbwogICAgIHJldHVybiBxdWlja0xvb2tI
YW5kbGU7CiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9v
a0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0
aW9uRGVsZWdhdGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3sKKyAgICBBU1NFUlRf
QVJHKGhhbmRsZSwgaGFuZGxlKTsKKyAgICBpZiAoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1
ZXN0ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbiB8fCAhW1FMUHJldmll
d0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKUNG
VVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9y
ZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOworICAgIFdlYlF1aWNrTG9va0hh
bmRsZUFzRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tbV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6Y29ubmVjdGlvbkRlbGVnYXRlXSBh
dXRvcmVsZWFzZV07CisgICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gcXVpY2tM
b29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNV
UkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwgbnNSZXNwb25zZSwgZGVs
ZWdhdGUpKTsKKyAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUo
KnF1aWNrTG9va0hhbmRsZSk7CisgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsKK30KKworQ0ZV
UkxSZXNwb25zZVJlZiBRdWlja0xvb2tIYW5kbGU6OmNmUmVzcG9uc2UoKQoreworICAgIHJldHVy
biBbbV9uc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXTsKK30KKyNlbmRpZgorCiBib29sIFF1aWNr
TG9va0hhbmRsZTo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIHsKICAgICByZXR1cm4gW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNv
bnRhaW5zT2JqZWN0Om1pbWVUeXBlXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiAy
MDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNh
dGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDE4IEBACiAjaW1wb3J0IDxG
b3VuZGF0aW9uL05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVUkxQcm90ZWN0aW9uU3BhY2UuaD4KIAorI2lmIFVTRShDRk5FVFdPUkspCisjaW1w
b3J0ICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyIDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+
CiB7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50OworI2lmIFVTRShDRk5FVFdP
UkspCisgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFsbGVuZ2U7CisjZW5kaWYKIH0K
IC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiljbGllbnQ7CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwpAQCAtOTQsMTAgKzEw
MSw0NyBAQCAtICh2b2lkKWNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOCiAgICAgICAg
IG1fY2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjb3JlKGNoYWxsZW5nZSkpOwogfQogCisj
aWYgVVNFKENGTkVUV09SSykKKy0gKHZvaWQpc2V0Q0ZDaGFsbGVuZ2U6KENGVVJMQXV0aENoYWxs
ZW5nZVJlZiljaGFsbGVuZ2UKK3sKKyAgICBtX2NmQ2hhbGxlbmdlID0gY2hhbGxlbmdlOworfQor
CistIChDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2ZDaGFsbGVuZ2UKK3sKKyAgICByZXR1cm4gbV9j
ZkNoYWxsZW5nZTsKK30KKyNlbmRpZgorCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
I2lmIFVTRShDRk5FVFdPUkspCisKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQoreworICAgIFdlYkNvcmVBdXRo
ZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyICpjaGFsbGVuZ2VTZW5kZXIgPSAoV2Vi
Q29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIqKSBbbWFjQ2hhbGxlbmdl
IHNlbmRlcl07CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtjaGFsbGVuZ2VT
ZW5kZXIgY2ZDaGFsbGVuZ2VdLCBbY2hhbGxlbmdlU2VuZGVyIGNsaWVudF0pOworfQorCitOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNvcmVDaGFsbGVuZ2UpCit7CisgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhDbGll
bnQgPSBjb3JlQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CisgICAgUmV0YWluUHRy
PFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyPiBjaGFsbGVuZ2VT
ZW5kZXIgPSBhZG9wdE5TKFtbV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VT
ZW5kZXIgYWxsb2NdIGluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6YXV0aENsaWVudF0pOwor
ICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGF1dGhDaGFsbGVuZ2UgPSBjb3Jl
Q2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpOworICAgIGlmICghYXV0aENoYWxsZW5n
ZSkKKyAgICAgICAgYXV0aENoYWxsZW5nZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5n
ZSkpOworICAgIFtjaGFsbGVuZ2VTZW5kZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVuZ2U6YXV0aENoYWxs
ZW5nZS5nZXQoKV07CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBbW05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgX2NyZWF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRo
Q2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQo
KV0gYXV0b3JlbGVhc2VdOworI2Vsc2UKKyAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIF9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRo
Q2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNl
XTsKKyNlbmRpZgorfQorCisjZWxzZQorCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApA
QCAtMTcxLDQgKzIxNSw2IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRo
ZW4KICAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobWFjQ2hhbGxlbmdlKTsKIH0K
IAorI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVK
YXJNYWMubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDE5
IEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaW1wb3J0ICJDRk5ldHdvcmtT
UEkuaCIKLSNpbXBvcnQgIkNvb2tpZS5oIgotI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgogI2lt
cG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQg
IldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdl
ICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOworfQorCisjaWYg
IVVTRShDRk5FVFdPUkspCisKKyNpbXBvcnQgIkNvb2tpZS5oIgorI2ltcG9ydCAiQ29va2llU3Rv
cmFnZS5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTg0LDcgKzE5MSw2IEBAIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3IKICAgICBOU1VSTCAqY29va2llVVJM
ID0gdXJsOwogICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdOwog
Ci0gICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkIG9uIGlPUywgdG9vPwogI2lmIFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKICAgICBO
U0FycmF5ICp1bmZpbHRlcmVkQ29va2llcyA9IFtOU0hUVFBDb29raWUgX3BhcnNlZENvb2tpZXNX
aXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6aGVhZGVyRmllbGRzIGZvclVSTDpjb29raWVVUkxdOwog
I2Vsc2UKQEAgLTI1NCwxNSArMjYwLDYgQEAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXN0YXRpYyBO
U0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbikKLXsKLSAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tp
ZVN0b3JhZ2UoKTsKLSAgICBpZiAoIWNvb2tpZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tpZVN0b3Jh
Z2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29raWVTdG9yYWdlID09IGNvb2tpZVN0b3Jh
Z2UpCi0gICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2ll
U3RvcmFnZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2Nd
IF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3Jl
bGVhc2VdOwotfQotCiB2b2lkIGFkZENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb29raWUmIGNvb2tpZSkKIHsKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0yODMsMTAgKzI4MCwxMiBAQCB2b2lkIGFk
ZENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3NpCiAgICAgICAgIE5TSFRUUENvb2tpZUV4
cGlyZXM6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6Y29va2llLmV4cGly
ZXMgLyAxMDAwLjBdLAogICAgIH1dOwogCisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFj
b29raWVTdG9yYWdlKSB7CiAgICAgICAgIFtXZWJDb3JlOjpjb29raWVTdG9yYWdlKHNlc3Npb24p
IHNldENvb2tpZTpodHRwQ29va2llXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZiAv
LyAhVVNFKENGTkVUV09SSykKIAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWUoY29v
a2llU3RvcmFnZS5nZXQoKSwgW2h0dHBDb29raWUgX0NGSFRUUENvb2tpZV0pOwogCkBAIC0zMTAs
NiArMzA5LDIxIEBAIHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmEKICAg
ICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsK
IH0KIAorfQorCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIGF1dG8gY29va2llU3RvcmFnZSA9
IHNlc3Npb24uY29va2llU3RvcmFnZSgpOworICAgIGlmICghY29va2llU3RvcmFnZSB8fCBbTlNI
VFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2Ug
PT0gY29va2llU3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29raWVTdG9yYWdlIHNo
YXJlZEhUVFBDb29raWVTdG9yYWdlXTsKKworICAgIHJldHVybiBbW1tOU0hUVFBDb29raWVTdG9y
YWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0
KCldIGF1dG9yZWxlYXNlXTsKK30KKwogdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0zMzks
NiArMzUzLDcgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldAogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKKwogdm9pZCBkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZVBvaW50KQogewogICAgIGlmICgh
W05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9y
KHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KV0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQko
cmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q3JlZGVudGlhbFN0b3JhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCisj
aWYgIVVTRShDRk5FVFdPUkspCisKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKQEAgLTUw
LDMgKzUyLDUgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudAogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JL
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJl
YW1NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Gb3JtRGF0YVN0cmVhbU1hYy5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiwxMCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UKKyNp
Zm5kZWYgRm9ybURhdGFTdHJlYW1NYWNfaAorI2RlZmluZSBGb3JtRGF0YVN0cmVhbU1hY19oCisK
KyNpZiAhVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTM3
LDExICs0MCwxNSBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRm9ybURhdGE7CisgICAgY2xhc3MgRm9ybURh
dGE7CiAKLXZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBGb3JtRGF0YSop
OwotRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICopOworICAgIHZv
aWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBGb3JtRGF0YSopOworICAgIEZv
cm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmVhbSAqKTsKIAotQ0ZTdHJpbmdS
ZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKTsKKyAgICBDRlN0cmluZ1JlZiBm
b3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKKworI2VuZGlmIC8vIEZvcm1EYXRhU3Ry
ZWFtTWFjX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCisjaWYgIVVTRShDRk5FVFdPUkspCisKICNpbXBvcnQg
IkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAKQEAgLTQ5LDMg
KzUxLDUgQEAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZQogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VFcnJvck1hYy5tbQkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsMTAgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAorI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENG
TkVUV09SSykKKyNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KKyNlbmRp
ZgorCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9s
b2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTg3LDYgKzkxLDg1IEBAIC0gKHZvaWQpZW5j
b2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCisKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorc3RhdGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJy
b3IsIE5TVVJMICp1cmwpCit7CisgICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUo
Y2ZFcnJvcik7CisgICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NG
RXJyb3JEb21haW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYm
IGVyckNvZGUgPiAtNDAwMCkgeworICAgICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQg
bmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFpbgorICAgICAgICBp
ZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZv
ID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKTsKKyAgICAgICAgTlNFcnJvciAqcmVzdWx0
OworICAgICAgICBOU0ludGVnZXIgY291bnQgPSAwOworCisgICAgICAgIGlmICh1cmwpIHsKKyAg
ICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKKyAg
ICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7CisgICAgICAgICAgICBjb3VudCArKzsKKwor
ICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9y
S2V5OworICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwor
ICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgIH0KKworICAgICAgICB2YWx1ZXNbY291bnRd
ID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERl
c2NyaXB0aW9uS2V5KTsKKyAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKKyAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKKyAgICAgICAgICAgIGNv
dW50ICsrOworICAgICAgICB9CisKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rp
b25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5
KTsKKyAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKKyAgICAgICAgICAgIGtleXNbY291bnRd
ID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7CisgICAgICAgICAgICBjb3VudCAr
KzsKKyAgICAgICAgfQorCisgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5
KTsKKyAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKKyAgICAgICAgICAgIGtleXNbY291bnRd
ID0gTlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKKyAgICAgICAgICAgIGNv
dW50ICsrOworICAgICAgICB9CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIK
KyAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFy
eUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMp
KSAhPSBuaWwpIHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Cisg
ICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5
IjsKKyAgICAgICAgICAgIGNvdW50ICsrOworCisgICAgICAgICAgICB2YWx1ZXNbY291bnRdID0g
KGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xD
bGllbnRDZXJ0aWZpY2F0ZXMpOworICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKKyAg
ICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hh
aW5LZXkiOworICAgICAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZv
LCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlKTsKKyAgICAgICAg
ICAgIGlmICh2YWx1ZXNbY291bnRdKSB7CisgICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBA
Ik5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKKyAgICAgICAgICAgICAgICBjb3Vu
dCArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAorCisgICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRp
Y3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3Qp
KSAhPSBuaWwpIHsKKyAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdV
UkxQZWVyVHJ1c3RFcnJvcktleTsKKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKwor
ICAgICAgICBrZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5OworICAgICAgICB2YWx1
ZXNbY291bnRdID0gKGlkKWNmRXJyb3I7CisgICAgICAgIGNvdW50ICsrOworCisgICAgICAgIHJl
c3VsdCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9t
YWluIGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxF
cnJvclVua25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07CisgICAgICAgIGlm
ICh1c2VySW5mbykKKyAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorICAgIHJldHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Cit9Cisj
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA3LDYgKzE5MCw1MyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
RXJyb3I+IGNyZWF0ZU5TRXJyb3JGCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9j
XSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJv
ci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwogfQogCisjaWYgVVNFKENG
TkVUV09SSykKKworUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikK
KyAgICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCisgICAgLCBtX2RhdGFJc1VwVG9E
YXRlKGZhbHNlKQorICAgICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJv
clJlZj4oZXJyb3IpKQoreworICAgIGlmIChlcnJvcikKKyAgICAgICAgc2V0VHlwZSgoW2Vycm9y
IGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlwZTo6R2Vu
ZXJhbCk7Cit9CisKK05TRXJyb3IgKlJlc291cmNlRXJyb3I6Om5zRXJyb3IoKSBjb25zdAorewor
ICAgIGlmIChpc051bGwoKSkgeworICAgICAgICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJvcik7Cisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yKQor
ICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7CisKKyAgICBpZiAobV9wbGF0
Zm9ybUVycm9yKSB7CisgICAgICAgIENGRXJyb3JSZWYgZXJyb3IgPSBtX3BsYXRmb3JtRXJyb3Iu
Z2V0KCk7CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRv
cHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGVycm9yKSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICBtX3BsYXRmb3JtTlNFcnJvciA9IE5TRXJyb3JGcm9tQ0ZFcnJvcihlcnJvciwgKE5TVVJM
ICopWyhOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKSBvYmplY3RGb3JLZXk6KGlkKSBrQ0ZV
UkxFcnJvckZhaWxpbmdVUkxFcnJvcktleV0pOworICAgICAgICAvLyBJZiBOU0Vycm9yRnJvbUNG
RXJyb3IgY3JlYXRlZCBhIG5ldyBOU0Vycm9yIGZvciB1cywgcmV0dXJuIHRoYXQuCisgICAgICAg
IGlmIChtX3BsYXRmb3JtTlNFcnJvci5nZXQoKSAhPSAoTlNFcnJvciAqKWVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOworCisgICAgICAgIC8vIE90aGVy
d2lzZSBmYWxsIHRocm91Z2ggdG8gY3JlYXRlIGEgbmV3IE5TRXJyb3IgZnJvbSB0aGUgQ0ZFcnJv
ci4KKyNlbmRpZgorICAgICAgICBtX3BsYXRmb3JtTlNFcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9y
IGFsbG9jXSBpbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilDRkVycm9yR2V0RG9tYWluKGVycm9y
KSBjb2RlOkNGRXJyb3JHZXRDb2RlKGVycm9yKSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNl
ckluZm8uZ2V0KCldKTsKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwor
ICAgIH0KKworICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJj
ZUVycm9yQmFzZSgqdGhpcyk7CisgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwor
fQorCitSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBOU0Vycm9yICooKSBjb25zdAoreworICAgIHJl
dHVybiBuc0Vycm9yKCk7Cit9CisKKyNlbHNlCisKIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJy
b3IoTlNFcnJvciAqbnNFcnJvcikKICAgICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwp
CiAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQpAQCAtMTc5LDQgKzMwOSw2IEBAIFJlc291
cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb24KICAgICByZXR1cm4gY2ZFcnJvcigp
OwogfQogCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw2ICs1OCwxNiBAQAogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJp
di5oPgorI2VuZGlmCit0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5l
Y3Rpb25SZWY7CitleHRlcm4gIkMiIHsKK0NGRGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9u
Q29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsKK30KKyNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQorCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCiAj
aW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTgwLDYgKzkwLDggQEAgLShp
ZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCisjaWYgIVVTRShDRk5FVFdPUkspCisgICAgCiBzdGF0aWMgdm9pZCBhcHBseUJh
c2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENy
ZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVy
ID0gIkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoi
ICsgY3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwpAQCAtMzE3LDYgKzMyOSw4IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgW2QtPm1fY29u
bmVjdGlvbiBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJzXTsKIH0KIAorI2lmICFVU0UoQ0ZORVRX
T1JLKQorCiB2b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIp
CiB7CiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTMzNSw2
ICszNDksOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAgICAg
ICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3Ag
Zm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUoKV07CiB9CiAKKyNlbmRpZgorCiBpZCBSZXNv
dXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Up
CiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKQEAgLTcxNCwxNCArNzMwLDI3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmUKIAogICAgIFsoaWQpZGVsZWdh
dGUoKSBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KLQorICAgIAorI2Vu
ZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQorICAgIAogI2lmIEVOQUJMRShXRUJfVElNSU5HKQorCisj
aWYgVVNFKENGTkVUV09SSykKKyAgICAKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rp
b25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uLCBOZXR3b3JrTG9hZFRp
bWluZyYgdGltaW5nKQoreworICAgIGNvcHlUaW1pbmdEYXRhKChfX2JyaWRnZSBOU0RpY3Rpb25h
cnkqKWFkb3B0Q0YoX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRhKGNvbm5lY3Rpb24pKS5n
ZXQoKSwgdGltaW5nKTsKK30KKyAgICAKKyNlbHNlCiAgICAgCiB2b2lkIFJlc291cmNlSGFuZGxl
OjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5l
dHdvcmtMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rp
b24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOwogfQogICAgIAorI2VuZGlmCisgICAgCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9USU1JTkcpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZVJlcXVlc3RNYWMubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlc291cmNlUmVxdWVz
dC5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KKworQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMp
CistIChDRlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVxdWVzdDsKKy0gKGlkKV9pbml0V2l0aENGVVJM
UmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3Q7CitAZW5kCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworI2lmIFVTRShDRk5FVFdPUkspCisKK1Jlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VS
ZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0KQorICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSgpCisgICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1ZXN0IF9DRlVSTFJlcXVlc3RdKQorICAgICwg
bV9uc1JlcXVlc3QobnNSZXF1ZXN0KQoreworfQorCit2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBk
YXRlTlNVUkxSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9jZlJlcXVlc3QpCisgICAgICAgIG1fbnNS
ZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1
ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0JKHJldmlz
aW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIK
IAorI2lmICFVU0UoQ0ZORVRXT1JLKQorCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMTAgKzM4LDE0IEBAIHZvaWQgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmUKICAgICBbY2hhbGxlbmdlLnNlbmRlcigp
IGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFs
bGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKIH0KIAorI2lmICFVU0UoQ0ZO
RVRXT1JLKQogUmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cGxhdGZvcm1C
YWRSZXNwb25zZUVycm9yKCkKIHsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBhZG9w
dE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2Rl
Ok5TVVJMRXJyb3JCYWRTZXJ2ZXJSZXNwb25zZSB1c2VySW5mbzpuaWxdKTsKICAgICByZXR1cm4g
ZXJyb3IuZ2V0KCk7CiB9CisjZW5kaWYKIAogfQorCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCShyZXZpc2lv
biAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDgg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9u
Y2UKKyNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCisjZGVmaW5lIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZUhhbmRsZTsKQEAgLTMzLDggKzM0LDEzIEBAIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogLSAodm9pZClkZXRhY2hIYW5kbGU7CiBAZW5kCiAKKyNpZiAhVVNFKENGTkVUV09SSykK
KwogQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3Qg
PE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4g
ewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKIH0KIC0gKGlkKWluaXRX
aXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxlOwogQGVuZAorCisjZW5k
aWYgLy8gIVVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUu
bW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogCisjaWYgIVVTRShDRk5FVFdPUkspCisKICNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5o
IgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMjc0LDMgKzI3Niw2IEBAIC0gKE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1UKIH0KIAogQGVuZAorCisjZW5kaWYgLy8gIVVTRShD
Rk5FVFdPUkspCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsMTAgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UK
KyNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gK
KyNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gK
KworI2lmICFVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CkBAIC01NSwzICs1
OCw2IEBAIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXQKIEBpbnRlcmZh
Y2UgV2ViQ29yZVJlc291cmNlSGFuZGxlV2l0aENyZWRlbnRpYWxTdG9yYWdlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlIDogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlCiAKIEBlbmQKKworI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgiCiAK
KyNpZiAhVVNFKENGTkVUV09SSykKKwogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBA
IC0zMjcsMyArMzI5LDYgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0
bwogfQogCiBAZW5kCisKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKKwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbQkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
NiArMzI1LDcgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcAogfQog
I2VuZGlmCiAKKyNpZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVS
ZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVzdCwg
TlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpyZWRpcmVjdFJlc3BvbnNl
KQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlKQpAQCAtMzM4LDUgKzMzOSw2IEBAIE5TVVJM
UmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnMKICAgICBOU0RpY3Rpb25hcnkgKnN5
bnRoZXNpemVkUmVzcG9uc2VIZWFkZXJGaWVsZHMgPSBAeyBAIkxvY2F0aW9uIjogW1tuZXdSZXF1
ZXN0IFVSTF0gYWJzb2x1dGVTdHJpbmddLCBAIkNhY2hlLUNvbnRyb2wiOiBAIm5vLXN0b3JlIiB9
OwogICAgIHJldHVybiBbW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W2N1
cnJlbnRSZXF1ZXN0IFVSTF0gc3RhdHVzQ29kZTozMDIgSFRUUFZlcnNpb246KE5TU3RyaW5nICop
a0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOnN5bnRoZXNpemVkUmVzcG9uc2VIZWFkZXJG
aWVsZHNdIGF1dG9yZWxlYXNlXTsKIH0KKyNlbmRpZgogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkocmV2aXNpb24g
MjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU1NMS2V5R2VuZXJhdG9yLmgiCi0jaWYgIVVTRShDRlVS
TENPTk5FQ1RJT04pCisjaWYgIVVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSAiQ29va2llU3RvcmFn
ZS5oIgogI2VuZGlmCiAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3Ry
aW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgVVJMJikgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7IH0K
IHZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4mKSB7IG5vdEltcGxlbWVu
dGVkKCk7IH0KIAotI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmICFVU0UoQ0ZORVRXT1JL
KQogdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoQ29va2llQ2hhbmdlQ2FsbGJhY2tQ
dHIpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdl
cygpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4LmgJKHJldmlzaW9u
IDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0
UHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsOSBAQAogI2RlZmluZSBPQlNP
TEVURV9DT0xPUlNZTkNfQVBJCiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCisjaWYgVVNFKENGTkVUV09SSykKKy8qIFdpbmRvd3MgZG9lc24ndCBpbmNsdWRlIENGTmV0
d29yay5oIHZpYSBDb3JlU2VydmljZXMuaCwgc28gd2UgZG8KKyAgIGl0IGV4cGxpY2l0bHkgaGVy
ZSB0byBtYWtlIFdpbmRvd3MgbW9yZSBjb25zaXN0ZW50IHdpdGggTWFjLiAqLwogI2luY2x1ZGUg
PENGTmV0d29yay9DRk5ldHdvcmsuaD4KIC8vIE9uIFdpbmRvd3MsIGRpc3BhdGNoLmggbmVlZHMg
dG8gYmUgaW5jbHVkZWQgYmVmb3JlIGNlcnRhaW4gQ0ZOZXR3b3JrIGhlYWRlcnMuCiAjaW5jbHVk
ZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU3MCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMw
IEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5t
bToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMpOgorICAgICAgICAqIFNoYXJlZC9BdXRo
ZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAg
ICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkUmVxdWVzdFRvQ29u
dGludWVXaXRob3V0Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyk6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRDaGFsbGVu
Z2VSZWplY3Rpb24pOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
OgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTYtMTAtMTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNzU1Ny4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjA3NTcw
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzksOCArNzksMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFBcnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIG92ZXJyaWRlOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENGTkVUV09SSykKKyAgICB2b2lk
IHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKKyNlbHNlCiAgICAgdm9pZCB3aWxsQ2FjaGVSZXNw
b25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAq
KSBvdmVycmlkZTsKICNlbmRpZgorI2VuZGlmCiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0NywxMCBAQCBPQkpDX0NMQVNTIFdLRG93bmxvYWRBc0RlbGVnYXRlOwog
I2VuZGlmCiAjZW5kaWYKIAorI2lmIFVTRShDRk5FVFdPUkspCisjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGVVJMRG93bmxvYWRQcml2Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBE
YXRhUmVmZXJlbmNlOwogfQpAQCAtMTM1LDYgKzEzOSw5IEBAIHByaXZhdGU6CiAgICAgUmV0YWlu
UHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRlOwogI2VuZGlmCiAjZW5kaWYKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQorICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25s
b2FkOworI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWROYW1lOwpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRvd25s
b2FkLmgiCiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyNpZiAhVVNFKENGTkVUV09SSykg
JiYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KQEAg
LTI3Miw0ICsyNzIsNCBAQCAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxv
CiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2VuZGlmIC8vICFV
U0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHJldmlz
aW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
TG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbXBv
cnQgImNvbmZpZy5oIgorCiAjaW1wb3J0ICJOZXR3b3JrTG9hZC5oIgogCiAjaW1wb3J0IDxXZWJD
b3JlL0NGTmV0d29ya1NQSS5oPgpAQCAtMzMsNiArMzQsMTcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgVVNFKENGTkVUV09SSykKKwordm9p
ZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCit7CisgICAgQVNTRVJUX1VO
VVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CisKKyAgICBtX2hhbmRsZS0+Y29udGlu
dWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsKK30KKworI2Vsc2UKKwogdm9pZCBOZXR3
b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBO
U0NhY2hlZFVSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFu
ZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwpAQCAtNDAsNCArNTIsNiBAQCB2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jCiAgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENh
Y2hlUmVzcG9uc2UobnNSZXNwb25zZSk7CiB9CiAKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMDc1
NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRl
OwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKICAgICBlbmNvZGVy
IDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwotI2lmIFBMQVRGT1JNKENPQ09BKQor
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIGVuY29kZXIgPDwgdWlQ
cm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
MjQwLDcgKzI0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRl
bnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShy
ZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RydWN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgZG91YmxlIGRlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRsZUlkZW50
aWZpZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1h
bmFnZXJDb2NvYS5tbQkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwyNyArMzIsMzcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQg
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQogeworI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFs
KCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKKyNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFs
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkK
IHsKKyNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2Vu
ZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07
CisjZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ2FuY2Vs
bGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKIHsKKyNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVu
Z2Uuc2VuZGVyKCkgY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25D
aGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKKyNlbmRpZgogfQogCiB2
b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkKIHsKKyNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGljYXRpb25DaGFs
bGVuZ2Uuc2VuZGVyKCkgcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKV07CisjZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVk
Q2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkKIHsKKyNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVX
aXRoQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKV07CisjZW5kaWYKIH0KIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDIw
NzU3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
CisjaWYgVVNFKENGTkVUV09SSykKKyNpbXBvcnQgPENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4K
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbXBvcnQg
PFdlYkNvcmUvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0Lmg+CkBAIC01Myw2ICs1NywzNiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIElQQyB7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQordm9pZCBBcmd1
bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3sKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJl
cXVlc3QuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOworCisgICAgYm9vbCByZXF1
ZXN0SXNQcmVzZW50ID0gcmVxdWVzdFRvU2VyaWFsaXplOworICAgIGVuY29kZXIgPDwgcmVxdWVz
dElzUHJlc2VudDsKKworICAgIGlmICghcmVxdWVzdElzUHJlc2VudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gV2UgZG9uJ3Qgc2VuZCBIVFRQIGJvZHkgb3ZlciBJUEMgZm9yIGJldHRlciBw
ZXJmb3JtYW5jZS4KKyAgICAvLyBBbHNvLCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gZG8s
IGFzIHN0cmVhbXMgY2FuIG9ubHkgYmUgY3JlYXRlZCBpbiBwcm9jZXNzIHRoYXQgZG9lcyBuZXR3
b3JraW5nLgorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlcXVlc3RIVFRQQm9keSA9IGFkb3B0
Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiByZXF1ZXN0SFRUUEJvZHlTdHJl
YW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0ocmVxdWVz
dFRvU2VyaWFsaXplLmdldCgpKSk7CisgICAgaWYgKHJlcXVlc3RIVFRQQm9keSB8fCByZXF1ZXN0
SFRUUEJvZHlTdHJlYW0pIHsKKyAgICAgICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxl
UmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIHJlcXVlc3RUb1Nlcmlh
bGl6ZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3RUb1NlcmlhbGl6ZSA9IGFkb3B0Q0YobXV0YWJs
ZVJlcXVlc3QpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHkobXV0YWJs
ZVJlcXVlc3QsIG5pbCk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0
cmVhbShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRihXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlh
bGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tl
bk51bGxUeXBlUmVmKCkpKTsKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5Lmdl
dCgpKTsKKworICAgIC8vIFRoZSBmYWxsYmFjayBhcnJheSBpcyBwYXJ0IG9mIENGVVJMUmVxdWVz
dCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5IFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXph
YmxlUmVwcmVzZW50YXRpb24uCisgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKKyAgICBlbmNvZGVy
LmVuY29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpKTsKK30KKyNlbHNlCiB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewog
ICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9IHJlc291cmNl
UmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7CkBAIC03OSw2ICsxMTMs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jCiAgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5jYWNoZVBvbGljeSgpKTsKIH0KKyNlbmRpZgogCiBi
b29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAt
OTUsMTEgKzEzMCwxOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVj
CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkaWN0aW9uYXJ5KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1
ZXN0UmVmPiBjZlVSTFJlcXVlc3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNl
cmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxs
VHlwZVJlZigpKSk7CisgICAgaWYgKCFjZlVSTFJlcXVlc3QpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3Qu
Z2V0KCkpOworI2Vsc2UKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3Qg
PSBXS05TVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5
LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJlcXVlc3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNl
UmVxdWVzdChuc1VSTFJlcXVlc3QuZ2V0KCkpOworI2VuZGlmCiAgICAgCiAgICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEw
NTAsNiArMTA1MCw3IEBACiAJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZElE
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZG
NzFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRJRC5oICovOyB9OwogCQk1QzE0MjcwNjFDMjNG
ODRDMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY4MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3du
bG9hZE1hbmFnZXIuY3BwICovOyB9OwogCQk1QzE0MjcwNzFDMjNGODRDMDBENDExODMgLyogRG93
bmxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzE0MjZGOTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi87IH07
CisJCTVDMTQyNzExMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzBEMUMyM0Y4ODUwMEQ0
MTE4MyAvKiBEb3dubG9hZElPUy5tbSAqLzsgfTsKIAkJNUMxNDI3MTIxQzIzRjg5RTAwRDQxMTgz
IC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxNDI3MEYxQzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovOyB9
OwogCQk1QzE0MjcxMzFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzA5MUMyM0Y4Njkw
MEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tICovOyB9OwogCQk1QzE0MjcxODFDMjNGOEI3MDBE
NDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmggKi87IH07CkBAIC0zMTMxLDYgKzMxMzIsNyBAQAogCQk1QzE0MjZG
ODFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIuaDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2Fk
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3dubG9h
ZENvY29hLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2Fk
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMTQyNzBEMUMyM0Y4ODUw
MEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IERvd25sb2FkSU9TLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2lvcy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3
MEYxQzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRNYWMubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlci5o
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcxNTFDMjNGOEIwMDBE
NDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzQxLDYgKzU3NDMsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzE0MjcwODFDMjNGODUyMDBE
NDExODMgLyogY29jb2EgKi8sCisJCQkJNUMxNDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAq
LywKIAkJCQk1QzE0MjcwQjFDMjNGODcxMDBENDExODMgLyogbWFjICovLAogCQkJCTgzQkZBQzQx
MUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovLAogCQkJCTgzQkZB
QzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLywKQEAgLTU3ODEs
NiArNTc4NCwxNCBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4
MyAvKiBEb3dubG9hZElPUy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gaW9zOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNUMxNDI3MUExQzIzRjhCRjAwRDQxMTgzIC8qIENv
Y29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkwODks
NiArOTEwMCw3IEBACiAJCQkJNUMxNDI3MDExQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9h
ZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEzMUMyM0Y4OUUwMEQ0MTE4MyAv
KiBEb3dubG9hZENvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUMxNDI3MTExQzIzRjg5RTAw
RDQxMTgzIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTIxQzIz
Rjg5RTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3
MDYxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTE5ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
ZXJ0IHIyMDcxNTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKwogMjAxNi0xMC0x
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEZpeCBDTWFrZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIwNzU3
MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUwKICAgICBib29sIGhhZFJlcXVlc3RzID0gaG9zdC0+
aGFzUmVxdWVzdHMoKTsKICAgICBob3N0LT5zY2hlZHVsZShyZXNvdXJjZUxvYWRlciwgcHJpb3Jp
dHkpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgaWYgKFJlc291cmNlUmVxdWVz
dDo6cmVzb3VyY2VQcmlvcml0aWVzRW5hYmxlZCgpICYmICFpc1N1c3BlbmRpbmdQZW5kaW5nUmVx
dWVzdHMoKSkgewogICAgICAgICAvLyBTZXJ2ZSBhbGwgcmVxdWVzdHMgYXQgb25jZSB0byBrZWVw
IHRoZSBwaXBlbGluZSBmdWxsIGF0IHRoZSBuZXR3b3JrIGxheWVyLgogICAgICAgICAvLyBGSVhN
RTogRG9lcyB0aGlzIGNvZGUgZG8gYW55dGhpbmcgdXNlZnVsLCBnaXZlbiB0aGF0IHdlIGFsc28g
c2V0IG1heFJlcXVlc3RzSW5GbGlnaHRQZXJIb3N0IHRvIGVmZmVjdGl2ZWx5IHVubGltaXRlZCBv
biB0aGVzZSBwbGF0Zm9ybXM/CkluZGV4OiBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTcwKQor
KysgU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MiBAQAorMjAxNi0xMC0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmVydCByMjA3MTUxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcDoKKwogMjAxNi0xMC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQpJbmRleDog
U291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw4ICsyNyw4IEBACiAvLyBiZWZvcmUgaW5jbHVkaW5nIGFueSBvdGhlciBmaWxlcy4gRmFpbGlu
ZyB0byBpbmNsdWRlIGNvbmZpZy5oIHdpbGwgbGVhdmUKIC8vIFVTRV9DRiB1bmRlZmluZWQsIGNh
dXNpbmcgYnVpbGQgZmFpbHVyZXMgaW4gdGhpcwogLy8gZmlsZS4gQnV0IE1hYyBkb2Vzbid0IGhh
dmUgYSBjb25maWcuaCBmb3IgV2ViS2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRoZQotLy8gV2lu
ZG93cyBvbmUgaGVyZS4gRm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIG1hbnVhbGx5
LAotLy8gYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgorLy8gV2luZG93
cyBvbmUgaGVyZS4gRm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIGFuZAorLy8gVVNF
X0NGTkVUV09SSyBtYW51YWxseSwgYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0
aW9uLgogI2lmbmRlZiBVU0VfQ0YKICNkZWZpbmUgVVNFX0NGIDEKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMTAtMTkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZlcnQgcjIw
NzE1MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYkRvd25sb2FkLm1tOgorICAgICAgICAoLVtXZWJEb3dubG9hZCBfaW5pdFdpdGhMb2Fk
aW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJveHk6XSk6Cisg
ICAgICAgICogTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3Vy
cmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5Ol0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBzY2hlZHVsZUluUnVuTG9v
cDpmb3JNb2RlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHVuc2NoZWR1bGVGcm9tUnVuTG9vcDpm
b3JNb2RlOl0pOgorCiAyMDE2LTEwLTE5ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDc1NTcuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDExIEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKIAorI2lmIFVTRShD
Rk5FVFdPUkspCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIEBjbGFzcyBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5OwpAQCAtNTYsNiArNjEs
MTQgQEAgLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcgogICAgICAgICAg
ICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3Ry
aW5nICopZGlyZWN0b3J5OwogCisjaWYgVVNFKENGTkVUV09SSykKKy0gKGlkKV9pbml0V2l0aExv
YWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVz
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJl
ZilyZXNwb25zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVs
ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVj
dGlvbkRlbGVnYXRlUHJveHkgKilwcm94eTsKKyNlbmRpZgorCiBAZW5kCiAKIEBpbnRlcmZhY2Ug
V2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0IDxOU1VSTERvd25sb2FkRGVsZWdhdGU+CkBA
IC0yMTgsNiArMjMxLDE4IEBAIC0gKGlkKV9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VS
TEMKICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9uOmNvbm5lY3Rp
b24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5h
bCBwcm94eTpwcm94eV07CiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorLSAoaWQpX2luaXRXaXRo
TG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1
ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNl
UmVmKXJlc3BvbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClk
ZWxlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25u
ZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Cit7CisgICAgW3NlbGYgX3NldFJlYWxEZWxlZ2F0
ZTpkZWxlZ2F0ZV07CisgICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25u
ZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVn
YXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Cit9CisjZW5kaWYKKwogLSAoaWQpX2luaXRX
aXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICBkZWxlZ2F0
ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0
b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwu
aAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9h
ZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDEwIEBACiAqLwogIAogI2lt
cG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+CisKKyNpZiBVU0UoQ0ZORVRXT1JLKQor
I2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgorI2VuZGlmCiAgCiBAaW50ZXJm
YWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0aW9uKQogKyhpZClfZG93bmxvYWRXaXRo
TG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KQEAgLTM5LDQg
KzQzLDEyIEBAIEBpbnRlcmZhY2UgV2ViRG93bmxvYWQgKFdlYkRvd25sb2FkQ3JlYXQKICAgICAg
ICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAgICAgICAgZGlyZWN0
b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKIAorI2lmIFVTRShDRk5FVFdPUkspCisrIChpZClf
ZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNv
bm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVS
TFJlcXVlc3RSZWYpcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5OworI2VuZGlmCisKIEBlbmQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcg
KzMwNCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlCiAKICAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gbWFpblJlc291cmNlTG9hZGVyLT5oYW5kbGUoKTsK
IAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgQVNTRVJUKFtXZWJEb3dubG9hZCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJl
cXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJveHk6KV0pOworICAgIGF1dG8gY29ubmVjdGlvbiA9
IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOworICAgIFtXZWJEb3dubG9h
ZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uLmdldCgpIHJl
cXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3Bv
bnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBw
cm94eTpuaWxdOworI2Vsc2UKICAgICBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdD
b25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigpIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVl
c3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWxl
Z2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOworI2VuZGlmCiB9CiAK
IGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGludCBsZW5ndGgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlz
aW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MDEsNyArMTgwMSw3IEBAICsgKHZvaWQpX2NsZWFyTmV0
d29ya0xvYWRlclNlc3Npb24KICsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lv
bkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewog
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdl
KCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxl
ZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdo
ZW4gYnVpbGRpbmcgd2l0aG91dCBVU0UoQ0ZORVRXT1JLKSBhbmQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFu
ZC4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0
b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjc5MSwxNCArNjc5MSwyNCBAQCAtIChpZClj
YW5kaWRhdGVMaXN0CiAKIC0gKHZvaWQpc2NoZWR1bGVJblJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1
bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlCiB7CisjaWYgVVNFKENGTkVUV09SSykKKyAg
ICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWlyUnVuTG9vcCA9IFtydW5Mb29wIGdldENGUnVuTG9v
cF07CisjZWxzZQorICAgIE5TUnVuTG9vcCAqc2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7
CisjZW5kaWYKICAgICBpZiAocnVuTG9vcCAmJiBtb2RlKQotICAgICAgICBjb3JlKHNlbGYpLT5h
ZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUocnVuTG9vcCwgKENGU3RyaW5nUmVm
KW1vZGUpKTsKKyAgICAgICAgY29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFp
cjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAK
IC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1v
ZGU6KE5TU3RyaW5nICopbW9kZQogeworI2lmIFVTRShDRk5FVFdPUkspCisgICAgQ0ZSdW5Mb29w
UmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOworI2Vsc2UK
KyAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOworI2VuZGlmCiAg
ICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKLSAgICAgICAgY29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1
bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7
CisgICAgICAgIGNvcmUoc2VsZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNy
ZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQogCiBzdGF0
aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8V2ViRG9jdW1lbnRTZWFyY2hpbmc+ICpzZWFyY2hW
aWV3LCBOU1N0cmluZyAqc3RyaW5nLCBXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQpJbmRleDogU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTYtMTAtMTkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZlcnQgcjIw
NzE1MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJEb3dubG9hZC5o
OgorICAgICAgICAqIFdlYkVycm9yLmNwcDoKKyAgICAgICAgKFdlYkVycm9yOjpsb2NhbGl6ZWRE
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKiBXZWJFcnJvci5oOgorICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29weSk6CisgICAgICAgICog
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOgorICAgICAgICAoV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6OmluaXRXaXRoUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJVUkxSZXNw
b25zZTo6c3NsUGVlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5oOgor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Q2FjaGVNb2RlbCk6
CisgICAgICAgIChXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlZpZXc6
Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICh1cGRhdGVTaGFyZWRTZXR0aW5n
c0Zyb21QcmVmZXJlbmNlc0lmTmVlZGVkKToKKwogMjAxNi0xMC0xOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBtYW55IG1pc2NlbGxhbmVvdXMgY2xhc3Nl
cyBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViRG93bmxvYWQuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC93
aW4vV2ViRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE1IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgV2ViRG93bmxvYWRfaAor
I2RlZmluZSBXZWJEb3dubG9hZF9oCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNF
KENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNl
bGlmIFVTRShDVVJMKQogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybERvd25sb2FkLmg+CkBAIC04Myw3
ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9v
cHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOwogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxDcmVkZW50
aWFsKiwgX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKik7CiAKLSNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gQ0ZVUkxEb3du
bG9hZCBDYWxsYmFja3MKICAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgQ0ZVUkxSZXF1ZXN0UmVm
IHdpbGxTZW5kUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpOwpAQCAt
MTA4LDcgKzEwOSw3IEBAIHByb3RlY3RlZDoKIAogICAgIFdURjo6U3RyaW5nIG1fZGVzdGluYXRp
b247CiAgICAgV1RGOjpTdHJpbmcgbV9idW5kbGVQYXRoOwotI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4g
bV9kb3dubG9hZDsKICNlbGlmIFVTRShDVVJMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpDdXJsRG93
bmxvYWQ+IG1fZG93bmxvYWQ7CkBAIC0xMjIsMyArMTIzLDYgQEAgcHJvdGVjdGVkOgogICAgIGlu
dCBtX3JlY2VpdmVkOwogI2VuZGlmCiB9OworCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVy
cm9yLmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NvcmVHcmFwaGljcy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
I2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktp
dFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBIUkVTVUxU
IFdlYkVycm9yOjpsb2NhbGl6ZWREZXNjcmlwdGlvbihfCiAKICAgICAqcmVzdWx0ID0gQlN0cmlu
ZyhtX2Vycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpLnJlbGVhc2UoKTsKIAotI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAoISpyZXN1bHQpIHsK
ICAgICAgICAgaWYgKGludCBjb2RlID0gbV9lcnJvci5lcnJvckNvZGUoKSkKICAgICAgICAgICAg
ICpyZXN1bHQgPSBCU3RyaW5nKHdrQ0ZOZXR3b3JrRXJyb3JHZXRMb2NhbGl6ZWREZXNjcmlwdGlv
bihjb2RlKSkucmVsZWFzZSgpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIEhSRVNVTFQgV2ViRXJyb3I6
OnNzbFBlZXJDZXJ0aWZpY2F0ZShfT3UKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAq
cmVzdWx0ID0gMDsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09S
SykKICAgICBpZiAoIW1fY2ZFcnJvclVzZXJJbmZvRGljdCkgewogICAgICAgICAvLyBjb3B5IHVz
ZXJpbmZvIGZyb20gQ0ZFcnJvclJlZgogICAgICAgICBDRkVycm9yUmVmIGNmRXJyb3IgPSBtX2Vy
cm9yOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgV2ViRXJyb3JfaAor
I2RlZmluZSBXZWJFcnJvcl9oCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NPTVB0ci5oPgpAQCAtNjUsOCArNjYsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBV
TE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENPTVB0cjxJUHJvcGVydHlCYWc+IG1fdXNlcklu
Zm87Ci0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fY2ZFcnJvclVzZXJJbmZvRGljdDsKICNlbmRpZgog
ICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9lcnJvcjsKIH07CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjA3
NTcwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0
ZUNGV2luLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENG
TkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgogI2VuZGlm
CiAKQEAgLTM4Miw3ICszODIsNyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRh
YmxlQ29wCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRy
PENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJl
cXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3JlcXVlc3QuY2ZV
UkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkpOwogICAgICpyZXN1bHQgPSBjcmVhdGVJbnN0YW5j
ZShSZXNvdXJjZVJlcXVlc3QobXV0YWJsZVJlcXVlc3QuZ2V0KCkpKTsKICAgICByZXR1cm4gU19P
SzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5jcHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcg
KzE0MSw3IEBAIEhSRVNVTFQgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmkKIAogICAg
IC8vIEZJWE1FOiBBZnRlciB3ZSBjaGFuZ2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgdG8gdXNl
ICJSZXNvdXJjZUhhbmRsZSIgYXMgdGhlIGFic3RyYWN0ICJTZW5kZXIiIG9yICJTb3VyY2Ugb2Yg
dGhpcyBBdXRoIENoYWxsZW5nZSIsIHRoZW4gd2UnbGwKICAgICAvLyBjb25zdHJ1Y3QgdGhlIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHdpdGggdGhhdCBhcyBvYnRhaW5lZCBmcm9tIHRoZSB3ZWJT
ZW5kZXIKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
bV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYlNw
YWNlLT5wcm90ZWN0aW9uU3BhY2UoKSwgd2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQsIHdl
YlJlc3BvbnNlLT5yZXNvdXJjZVJlc3BvbnNlKCksIHdlYkVycm9yLT5yZXNvdXJjZUVycm9yKCkp
OwogI2VuZGlmCkBAIC0xNjIsNyArMTYyLDcgQEAgSFJFU1VMVCBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6aQogICAgIGlmICghd2ViU2VuZGVyKQogICAgICAgICByZXR1cm4gRV9OT0lO
VEVSRkFDRTsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykK
ICAgICBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
d2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpLmNmVVJMQXV0aENoYWxsZW5n
ZVJlZigpLCB3ZWJTZW5kZXItPmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkpOwogCiAgICAgcmV0dXJu
IFNfT0s7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCShyZXZpc2lvbiAy
MDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVU
V09SSykKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+CiAjZW5kaWYKIApAQCAtNDA2LDcgKzQwNiw3IEBAIEhSRVNVTFQgV2ViVVJMUmVzcG9u
c2U6OnNzbFBlZXJDZXJ0aWZpY2EKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVz
dWx0ID0gMDsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykK
ICAgICBDRkRpY3Rpb25hcnlSZWYgZGljdCA9IGNlcnRpZmljYXRlRGljdGlvbmFyeSgpOwogICAg
IGlmICghZGljdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTQ3NSw3ICs0NzUsNyBAQCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBXZWJVUkxSZXNwb25zZTo6CiAgICAgcmV0dXJuIG1fcmVz
cG9uc2U7CiB9CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiBDRkRpY3Rpb25hcnlSZWYgV2ViVVJMUmVzcG9uc2U6OmNlcnRpZmljYXRlRGljdGlvbmFyeSgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fU1NMQ2VydGlmaWNhdGVJbmZvKQpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViVVJMUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJVUkxSZXNwb25zZS5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJVUkxSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgV2ViVVJMUmVzcG9uc2Vf
SAorI2RlZmluZSBXZWJVUkxSZXNwb25zZV9ICiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTY1LDcgKzY2LDcgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIEhSRVNVTFQgc3VnZ2VzdGVkRmlsZUV4dGVuc2lvbihCU1RSKiBy
ZXN1bHQpOwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIENGRGljdGlvbmFyeVJlZiBjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKSBjb25zdDsKICNlbmRp
ZgogCkBAIC03Myw3ICs3NCw5IEBAIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNvdW50IHsg
MCB9OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBtdXRhYmxlIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fU1NMQ2VydGlmaWNhdGVJbmZvOyAgICAvLyB0aGlzIGVu
c3VyZXMgY2VydGlmaWNhdGUgY29udGV4dHMgYXJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2Yg
dGhpcyBXZWJVUkxSZXNwb25zZS4KICNlbmRpZgogfTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQAogI2luY2x1ZGUgPENvcmVG
b3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNo
ZVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90b2NvbFByaXYuaD4KICNpbmNs
dWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC00
OTYsNyArNDk2LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQog
CiAgICAgU3RyaW5nIGNhY2hlRGlyZWN0b3J5OwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBjZnVybENh
Y2hlID0gYWRvcHRDRihDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0Q0Yod2tDb3B5Rm91
bmRhdGlvbkNhY2hlRGlyZWN0b3J5KDApKTsKICAgICBpZiAoIWNmdXJsQ2FjaGVEaXJlY3Rvcnkp
IHsKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2Fj
aGVNb2RlCiAgICAgICAgIC8vIE1lbW9yeSBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCiAgICAg
ICAgIGNhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICAgICAvLyBGb3VuZGF0aW9uIGRpc2sgY2FjaGUgY2Fw
YWNpdHkgKGluIGJ5dGVzKQogICAgICAgICBjYWNoZURpc2tDYXBhY2l0eSA9IENGVVJMQ2FjaGVE
aXNrQ2FwYWNpdHkoY2Z1cmxDYWNoZS5nZXQoKSk7CiAjZW5kaWYKQEAgLTY3NCw3ICs2NzQsNyBA
QCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAgICAgbWVtb3J5Q2Fj
aGUuc2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsKTsKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNldE1heFNpemUocGFn
ZUNhY2hlU2l6ZSk7CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgLy8gRG9uJ3Qgc2hyaW5rIGEgYmlnIGRpc2sgY2FjaGUsIHNpbmNlIHRoYXQgd291
bGQgY2F1c2UgY2h1cm4uCiAgICAgY2FjaGVEaXNrQ2FwYWNpdHkgPSBtYXgoY2FjaGVEaXNrQ2Fw
YWNpdHksIENGVVJMQ2FjaGVEaXNrQ2FwYWNpdHkoY2Z1cmxDYWNoZS5nZXQoKSkpOwogCkBAIC0x
NTQ2LDcgKzE1NDYsNyBAQCB2b2lkIFdlYlZpZXc6OmNsb3NlV2luZG93KCkKIAogYm9vbCBXZWJW
aWV3OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgLy8gT24gdGhlIE1hYyB0aGVyZSdzIGFuIGFib3V0IFVSTCBwcm90b2NvbCBpbXBsZW1lbnRh
dGlvbiBidXQgV2luZG93cyBDRk5ldHdvcmsgZG9lc24ndCBoYXZlIHRoYXQuCiAgICAgaWYgKHJl
cXVlc3QudXJsKCkucHJvdG9jb2xJcygiYWJvdXQiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC01MjYxLDcgKzUyNjEsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgmZW5hYmxl
ZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENGTkVUV09SSykKICAgICBp
ZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIGVsc2UKQEAgLTU1NjAsNyArNTU2MCw3IEBAIEhS
RVNVTFQgdXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4KICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFj
Y2VwdFBvbGljeUZvckFsbENvbnRleHRzKGFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NjAsNyArOTYwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29u
cwogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRG
cmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCiB7Ci0jaWYgVVNFKENGVVJMQ09OTkVDVElP
TikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2Vi
RnJhbWUpOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tp
ZXNQcml2Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgogI2VuZGlmCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBTdHJpbmcmIGlkZW50
aWZpZXJCYXNlKCkKICAgICByZXR1cm4gYmFzZTsKIH0KIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCisjaWYgVVNFKENGTkVUV09SSykKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoV2ViS2l0Q29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKIAogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkKIHsKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChhdXRvIHByaXZhdGVTZXNzaW9uID0g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVBy
aXZhdGVTZXNzaW9uSUQoKSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lv
biAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDggQEAKICAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI3By
YWdtYSBvbmNlCisjaWZuZGVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHRfaAorI2RlZmluZSBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oPgogCkBAIC0zMyw3ICszNCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAg
fQogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIHN0
YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKQEAg
LTQ5LDMgKzUwLDUgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZTsK
ICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiB9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2
aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL2NtYWtl
L09wdGlvbnNBcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9u
c0FwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvY21ha2UvT3B0aW9u
c0FwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQCBpbmNsdWRlKE9w
dGlvbnNXaW4pCiAKIHNldChVU0VfQ0cgMSkKIHNldChVU0VfQ0EgMSkKLXNldChVU0VfQ0ZVUkxD
T05ORUNUSU9OIDEpCitzZXQoVVNFX0NGTkVUV09SSyAxKQogc2V0KFVTRV9JQ1VfVU5JQ09ERSAx
KQogCiAjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdHJ5IHRoZSBEaXJlY3QyRCBi
YWNrZW5kLgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA3NTcwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZlcnQgcjIwNzE1MQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NvbmZpZy5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChtYWlu
KToKKwogMjAxNi0xMC0xOSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA3NTU3LgpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiwx
MyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgRHVtcFJlbmRl
clRyZWVfaAorI2RlZmluZSBEdW1wUmVuZGVyVHJlZV9oCisKKy8vIEZJWE1FOiBSZW1vdmUgdGhp
cyB3aGVuIGFsbCBwbGF0Zm9ybXMgYXJlIHVzaW5nIGNvbmZpZy5oCisjaWZuZGVmIENvbmZpZ19I
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCkBAIC0zOSw3ICs0NSw2IEBACiAjZW5k
aWYKIAogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiAhT1MoT1BFTkJTRCkKQEAgLTY2LDMgKzcxLDUgQEAg
c3RydWN0IFRlc3RDb21tYW5kIHsKIH07CiAKIFRlc3RDb21tYW5kIHBhcnNlSW5wdXRMaW5lKGNv
bnN0IHN0ZDo6c3RyaW5nJik7CisKKyNlbmRpZiAvLyBEdW1wUmVuZGVyVHJlZV9oCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jb25maWcuaAkocmV2aXNpb24gMjA3NTcwKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDcgQEAKICAqCiAgKi8KIAot
I3ByYWdtYSBvbmNlCisjZGVmaW5lIENvbmZpZ19ICiAKICNpZiBkZWZpbmVkKEhBVkVfQ09ORklH
X0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQogI2lu
Y2x1ZGUgImNtYWtlY29uZmlnLmgiCkBAIC00NCw3ICs0NCw3IEBACiAjZGVmaW5lIFVTRV9DVVJM
IDEKICNlbHNlCiAjZGVmaW5lIFVTRV9DRyAxCi0jZGVmaW5lIFVTRV9DRlVSTENPTk5FQ1RJT04g
MQorI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKICNlbmRpZgogCiAjdW5kZWYgX1dJTjMyX1dJTk5U
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQv
V2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgogCi0jaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9D
RkhUVFBDb29raWVzUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5o
PgogI2VuZGlmCkBAIC0xMzI0LDcgKzEzMjQsNyBAQCBJV2ViVmlldyogY3JlYXRlV2ViVmlld0Fu
ZE9mZnNjcmVlbldpbmRvCiAgICAgcmV0dXJuIHdlYlZpZXc7CiB9CiAKLSNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4g
c2hhcmVkQ0ZVUkxDYWNoZSgpCiB7CiAjaWZuZGVmIERFQlVHX0FMTApAQCAtMTUwMiw3ICsxNTAy
LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBpZiAoRkFJ
TEVEKHdlYlZpZXctPm1haW5GcmFtZSgmZnJhbWUpKSkKICAgICAgICAgcmV0dXJuIC03OwogCi0j
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFpblB0
cjxDRlVSTENhY2hlUmVmPiB1cmxDYWNoZSA9IHNoYXJlZENGVVJMQ2FjaGUoKTsKICAgICBDRlVS
TENhY2hlUmVtb3ZlQWxsQ2FjaGVkUmVzcG9uc2VzKHVybENhY2hlLmdldCgpKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292122</attachid>
            <date>2016-10-19 15:49:47 -0700</date>
            <delta_ts>2016-10-19 22:30:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163675-20161019154611.patch</filename>
            <type>text/plain</type>
            <size>193956</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU3
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZToKKwogMjAxNi0x
MC0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENT
U19TSEFQRVMgZmVhdHVyZSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBhbHdheXMgYmUgb24uCklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMC0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmVydCByMjA3MTUxCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorICAgICAgICAqIHd0Zi9TY2hlZHVsZVBhaXIuaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQ
YWlyTWFjLm1tOgorCiAyMDE2LTEwLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgQmFzZWxpbmUgSklUIHNob3VsZCB1c2UgQXV0b21hdGljVGhyZWFkCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSw2ICs1NTksMTAgQEAKIAogI2lmIFBMQVRGT1JNKElP
UykKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTAwMDAwCisjZGVmaW5lIFVTRV9DRk5FVFdPUksgMQorI2VuZGlmCisK
ICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5lIEhBVkVfUkVBRExJTkUg
MQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01ODgsMTAgKzU5MiwxMCBAQAogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAmJiAhUExBVEZPUk0oV0lO
X0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZVUkxDT05ORUNUSU9OIDEKKyNkZWZpbmUgVVNFX0NGTkVU
V09SSyAxCiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENP
Q09BKQorI2lmIFVTRShDRk5FVFdPUkspIHx8IFBMQVRGT1JNKENPQ09BKQogI2RlZmluZSBVU0Vf
Q0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTQ3LDYgKzk1MSw5IEBACiAjZGVmaW5lIFVTRV9Q
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAKKy8qIFNldCB1cCBhIGRl
ZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0byBjYXVzZSBhIGJ1aWxk
IGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLworI2RlZmluZSBXVEZfUExB
VEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVfdXNlZF93aXRoX0NGTkVU
V09SSworCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkKICNkZWZp
bmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Nj
aGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVs
ZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykK
IE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3Mg
U2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVm
IG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUp
KTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0ZORVRXT1JLKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoTlNSdW5Mb29w
KiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNjaGVk
dWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3AqIG5zUnVuTG9vcCgpIGNv
bnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYKQEAgLTYzLDcgKzYzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVD
b3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFNjaGVk
dWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0YWluUHRyPE5TUnVuTG9v
cCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBh
aXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyTWFjLm1t
CShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQorCiBuYW1lc3Bh
Y2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiBydW5Mb29w
LCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDAsMyArNDIsNSBAQCBTY2hlZHVsZVBhaXI6OlNjaGVk
dWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYxIEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcx
NTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y29kZSBpcyBzdGlsbCB1c2VmdWwgZm9yIGNvbXBhcmlzb24gd2l0aCBXaW5kb3dzLiAgSSdsbCBy
ZW1vdmUgaXQgYWdhaW4gc29vbi4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2Ug
aW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViQ29yZVByZWZpeC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9TdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvbWFjL0RvY3VtZW50TG9h
ZGVyTWFjLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAg
ICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFNjaGVkdWxlUGFp
cik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVTY2hlZHVsZVBhaXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50OjpXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVy
bmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlv
bkNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNGKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvcmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91
bGRTbmlmZkNvbm5lY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNl
dHVwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjplbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRDRlVSTFJlcXVl
c3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVu
Y29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNldHVwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNldHVw
Q29ubmVjdGlvblNjaGVkdWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3Jl
ZGVudGlhbDo6Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNy
ZWRlbnRpYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNw
YWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25T
cGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0
aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpjZlNwYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGUgaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0
YUFycmF5Ol0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6XSk6Cisg
ICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRGYWls
V2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRl
dGFjaEhhbmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAg
KC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgc2V0Q0ZDaGFs
bGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyIGNmQ2hhbGxlbmdlXSk6CisgICAgICAgIChXZWJDb3JlOjpjb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1hYyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
SmFyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZVN0b3JhZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAg
KE5TRXJyb3JGcm9tQ0ZFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1
YnMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4Lmg6
CisKIDIwMTYtMTAtMTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNzU1Ny4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmVQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
UHJlZml4LmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVm
aXguaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICoKICAqLwogCi0vKiBUaGlz
IHByZWZpeCBmaWxlIHNob3VsZCBjb250YWluIG9ubHk6CisvKiBUaGlzIHByZWZpeCBmaWxlIHNo
b3VsZCBjb250YWluIG9ubHk6IAogICogICAgMSkgZmlsZXMgdG8gcHJlY29tcGlsZSBmb3IgZmFz
dGVyIGJ1aWxkcwogICogICAgMikgaW4gb25lIGNhc2UgYXQgbGVhc3Q6IE9TLVgtc3BlY2lmaWMg
cGVyZm9ybWFuY2UgYnVnIHdvcmthcm91bmRzCiAgKiAgICAzKSB0aGUgc3BlY2lhbCB0cmljayB0
byBjYXRjaCB1cyB1c2luZyBuZXcgb3IgZGVsZXRlIHdpdGhvdXQgaW5jbHVkaW5nICJjb25maWcu
aCIKQEAgLTEzMyw4ICsxMzMsOCBAQAogI2Vsc2UKIAogI2lmIE9TKFdJTkRPV1MpCi0KICNpZiBV
U0UoQ0cpCisKIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS84MjA4ODY4PiBSZW1vdmUgc3VwcG9y
dCBmb3Igb2Jzb2xldGUgQ29sb3JTeW5jIEFQSSwgQ29yZVNlcnZpY2VzIGhlYWRlciBpbiBDb3Jl
R3JhcGhpY3MKIC8vIFdlIGNhbiByZW1vdmUgdGhpcyBvbmNlIHRoZSBuZXcgQ29sb3JTeW5jIEFQ
SXMgYXJlIGF2YWlsYWJsZSBpbiBhbiBpbnRlcm5hbCBTYWZhcmkgU0RLLgogI2luY2x1ZGUgPENv
bG9yU3luYy9Db2xvclN5bmMuaD4KQEAgLTE0MywyMSArMTQzLDE5IEBACiAjZGVmaW5lIE9CU09M
RVRFX0NPTE9SU1lOQ19BUEkKICNlbmRpZgogI2VuZGlmCi0KLSNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2lmIFVTRShDRk5FVFdPUkspCisvKiBXaW5kb3dzIGRvZXNuJ3QgaW5jbHVkZSBDRk5l
dHdvcmsuaCB2aWEgQ29yZVNlcnZpY2VzLmgsIHNvIHdlIGRvCisgICBpdCBleHBsaWNpdGx5IGhl
cmUgdG8gbWFrZSBXaW5kb3dzIG1vcmUgY29uc2lzdGVudCB3aXRoIE1hYy4gKi8KICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAvLyBPbiBXaW5kb3dzLCBkaXNwYXRjaC5oIG5lZWRz
IHRvIGJlIGluY2x1ZGVkIGJlZm9yZSBjZXJ0YWluIENGTmV0d29yayBoZWFkZXJzLgogI2luY2x1
ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKLQogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
LQotI2VsaWYgIVBMQVRGT1JNKElPUykKLQorI2Vsc2UKKyNpZiAhUExBVEZPUk0oSU9TKQogI2lu
Y2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KLQotI2VuZGlmCi0KKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIE9TKFdJTkRPV1MpCiAKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwNDIsNiArMjA0Miw3IEBACiAJCTUx
NEM3NjRGMENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ1MENFOTIzNEUwMDdF
RjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NTAwQ0U5MjM0RTAw
N0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VF
cnJvck1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNl
SGFuZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0Qzc2NDcwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tICovOyB9
OworCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDkwQ0U5
MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NkQw
Q0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBD
cmVkZW50aWFsQmFzZS5jcHAgKi87IH07CiAJCTUxNEM3NjZFMENFOTIzQTEwMDdFRjNDRCAvKiBD
cmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjZGMENFOTIzQTEwMDdF
RjNDRCAvKiBGb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovOyB9
OwpAQCAtMjgyOCw2ICsyODI5LDcgQEAKIAkJN0Q0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpT
RmV0Y2hIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RDRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLzsgfTsK
IAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CiAJCTdF
MzdFRjJFMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgw
MEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLzsgfTsKKwkJN0U0MjhDRTUxM0Uz
NDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJl
c291cmNlSGFuZGxlSU9TLm1tICovOyB9OwogCQk3RTQ2RjZGQTE2MjdBMkNBMDAwNjIyMjMgLyog
SlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJ
bmRleFVpbnQuY3BwICovOyB9OwogCQk3RTQ2RjZGQjE2MjdBMkNBMDAwNjIyMjMgLyogSlNPRVNF
bGVtZW50SW5kZXhVaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RTQ2RjZGOTE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50
LmggKi87IH07CiAJCTdFNDc0RTFFMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
Mjg0NSw2ICsyODQ3LDcgQEAKIAkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmggKi87IH07CiAJCTdFNjZFMjM0MTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUFZSVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFNjZFMjMyMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEMuaCAqLzsgfTsKIAkJN0U3REUxRkQxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNl
UmVxdWVzdENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U3REUxRkMxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1t
ICovOyB9OworCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U3REUy
MDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLzsgfTsKIAkJN0U4
RkFEQzQxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RThGQURDMzE5OUE5NUIx
MDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLzsgfTsKIAkJN0U5OUFGNTEw
QjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1MjBCMTM4NDY0
NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLzsgfTsKIAkJN0U5
OUFGNTMwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTQwQjEz
ODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODY1LDYgKzI4NjgsNyBA
QAogCQk3RUU2ODQ2OTEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NjEyRDI2RTM4
MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmggKi87IH07CiAJCTdFRTY4NDZBMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdF
RTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTgxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi87IH07CisJCTdFRTY4NDZDMTJEMjZFMzgwMEU3
OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU5MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZFMTJE
MjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlcXVlc3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC05MTA4LDYgKzkxMTIsNyBAQAogCQk1MTRDNzY0NTBDRTkyMzRFMDA3RUYzQ0Qg
LyogRm9ybURhdGFTdHJlYW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBGb3JtRGF0YVN0cmVhbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0Qzc2NDYwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUVycm9yTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VIYW5kbGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZXNvdXJjZUhhbmRsZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTE0Qzc2NDkwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8q
IENyZWRlbnRpYWxCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENyZWRlbnRpYWxCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2
NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3JlZGVudGlhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTAxMDIsNiArMTAxMDcsNyBAQAogCQk3RDRDOTZEODFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNGZXRjaEhlYWRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEhlYWRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RDRD
OTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNGZXRjaEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2Fk
ZXJDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFNDI4Q0U0MTNFMzQwN0Yw
MDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlc291cmNlSGFuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTQ2RjZGODE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhV
aW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTRWxlbWVu
dEluZGV4VWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNDZGNkY5MTYy
N0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDExOSw2ICsxMDEyNSw3IEBACiAJCTdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U3REUxRkMxOTVDRUYyNjAw
MzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVl
c3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJj
ZVJlcXVlc3RJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOEZBREMzMTk5
QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdp
bmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRv
d0ZvY3VzQWxsb3dlZEluZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAxNDEsNiArMTAxNDgsNyBAQAogCQk3RUU2ODQ1NjEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVy
UnVuTG9vcENGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRlclJ1bkxv
b3BDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1NzEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU4
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VFcnJvckNGLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVBMTJE
MjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFRTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3
OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTYzOTAsNiArMTYzOTgsOCBAQAogCQkJCTQ0MkFGN0E3MTAyQ0RERUEwMDhGRDREMyAv
KiBRdWlja0xvb2suaCAqLywKIAkJCQk0NDJBRjdBODEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tM
b29rLm1tICovLAogCQkJCUExMERCRjQ2MThGOTIzMTcwMDBENzBDNiAvKiBRdWlja0xvb2tIYW5k
bGVDbGllbnQuaCAqLywKKwkJCQk3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VI
YW5kbGVJT1MubW0gKi8sCisJCQkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNl
UmVxdWVzdElPUy5tbSAqLywKIAkJCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggKi8sCiAJCQkJNDQ0RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdl
YkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLywKIAkJCSk7CkBAIC0xNzMwMiw2ICsxNzMxMiw3IEBA
CiAJCQkJMUE3RkE2NDcwRERBM0NCQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFj
LmNwcCAqLywKIAkJCQk1MTRDNzY0NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1h
Yy5tbSAqLywKIAkJCQk1MTRDNzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVN
YWMubW0gKi8sCisJCQkJNTE0Qzc2NDkwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVz
dE1hYy5tbSAqLywKIAkJCQlFMTgwODExNDE2RkNGOUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNM
b2FkZXJDbGllbnQubW0gKi8sCiAJCQkJMUZBRkJGMTYxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0
aWxpdGllcy5oICovLAogCQkJCTFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRp
ZXMubW0gKi8sCkBAIC0yMTM0MCw2ICsyMTM1MSw3IEBACiAJCQkJMUFGOEUxQzExMjU2NzNFMDAw
MjMwRkY3IC8qIFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi8sCisJCQkJN0VFNjg0NTkxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwICovLAogCQkJCTI2RkFFNEM4MTg1MkUzQTUw
MDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywK
IAkJCQkyNkZBRTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5oICovLAogCQkJCTI2QzE1Q0Y0MTg1N0UxNUQwMEYxNUMwMyAvKiBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCAq
LywKQEAgLTMwMjk2LDkgKzMwMzA4LDExIEBACiAJCQkJN0VFNjg0NkIxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MDBDRTky
MzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
NEM3Njc4MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk3RUU2ODQ2QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkZBRTRDQzE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
NkMxNUNGNjE4NTdFMTVEMDBGMTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJBMDAz
MTE2RkI5MkFDMDBCQTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0U0MjhDRTUxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNl
SGFuZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMjI3RTMwQUY1ODlBRDAwRDQ4MzI0
IC8qIFJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDc1MTJEMjZF
NzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzAzMTEsNiArMzAzMjUsOCBAQAogCQkJCTUxNEM3NjdDMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZFMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gaW4gU291
cmNlcyAqLywKKwkJCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0
SU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJl
c291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjdFMENFOTIzQTEw
MDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
RUU2ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUExRjc4RDBDMUMyNTQyNEMwMDI0NTQ0NiAvKiBSZXNvdXJjZVJlc3Bv
bnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1
ZGUgIlF1aWNrTG9vay5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFp
ci5oPgogI2VuZGlmCiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKICAgICAgICAgdm9pZCBzY2hlZHVs
ZShTY2hlZHVsZVBhaXImKTsKICAgICAgICAgdm9pZCB1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lv
biAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwMyw3ICs0MDMsNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQVhPYmplY3RS
ZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByZXNwb25zZTsgfQogI2VuZGlmCi0jaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gRklY
TUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgogICAgIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3Bv
bnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVh
bCBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogI2VuZGlmCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShXSU4pICYm
IFVTRShDRk5FVFdPUkspCiAgICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2ls
bENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU3MjU3Pi4KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3Ro
KSA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEzLDggKzcxMywxNCBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CisgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMgcHJvdmlkZSBhIHdheSB0
byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgorICAgIC8vIElmIHdlIGNhbid0IGNvbnRp
bnVlIHdpdGggY3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRo
ZXIuCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8
fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjaGFsbGVuZ2UuYXV0aGVudGlj
YXRpb25DbGllbnQoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFs
KGNoYWxsZW5nZSk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmhhc0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkpOworI2Vsc2UKKyAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigp
KTsKKyNlbmRpZgogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
QEAgLTc0MSw3ICs3NDcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxh
dGlvCiAgICAgY2FuY2VsKCk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNjaGVk
dWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IExvYWRUaW1pbmcmIGxvYWRUaW1pbmcoKSB7IHJldHVybiBtX2xvYWRU
aW1pbmc7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
VVNFKENGTkVUV09SSykKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAg
ICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE2Myw5
ICsxNjMsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgTlNDYWNoZWRVUkxS
ZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJl
c3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENG
TkVUV09SSykKKyAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CisjZW5kaWYK
IAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIApAQCAtMjA1
LDcgKzIwOCw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291cmNlSGFuZGxlKikgb3Zl
cnJpZGU7CiAjZW5kaWYKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKENGTkVUV09SSykKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNlIHdp
bGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NzI1Nz4uCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsOSArNzQsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiAhVVNFKENGTkVUV09SSykKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2Fj
aGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlk
ZTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQorICAgIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAjaWYgVVNFKE5FVFdP
UktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogICAgIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXkoKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Yv
UmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDEzICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZGVyLmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5F
VFdPUkspCiAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKFdJTikKKwog
Ym9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fb3B0
aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00Myw2ICs0
NSw4IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9uc2UKICAgICByZXR1
cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25zZShkb2N1bWVudExv
YWRlcigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlLCBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpLCBD
RkRhdGFHZXRMZW5ndGgoZGF0YSkpOwogfQogCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9h
ZGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1
YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQorCitDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN1YnJlc291cmNlTG9hZGVyOjp3aWxs
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlKQoreworICAgIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxl
QmFja2luZ1N0b3JlQ3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5zZXNzaW9uSUQoKSwg
Y2FjaGVkUmVzcG9uc2UpOworICAgIGlmICghbV9yZXNvdXJjZS0+c2hvdWxkQ2FjaGVSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZXNvdXJjZUxvYWRlcjo6d2ls
bENhY2hlUmVzcG9uc2UoaGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Cit9CisKKyNlbHNlCisKIE5T
Q2FjaGVkVVJMUmVzcG9uc2UqIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsK
ICAgICBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKHJl
cXVlc3QoKSwgbV9yZXNvdXJjZS0+c2Vzc2lvbklEKCksIFtyZXNwb25zZSBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZV0pOwpAQCAtNDMsNCArNTUsNiBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBTdWJyZXNv
dXJjZUxvYWRlcjo6CiAgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25z
ZShoYW5kbGUsIHJlc3BvbnNlKTsKIH0KIAorI2VuZGlmCisKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCShyZXZpc2lvbiAyMDc1
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
KyNpZiAhVVNFKENGTkVUV09SSykKKwogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVz
b3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBWZWN0
b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02Nyw0ICs2OSw2IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICB1bnNjaGVkdWxl
QWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKIH0KIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDIwNzU3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
I2lmIFVTRShDRk5FVFdPUkspCisKK0NGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VMb2Fk
ZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjYWNoZWRSZXNwb25zZSkKK3sKKyAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJh
Y2tzID09IERvTm90U2VuZENhbGxiYWNrcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFkb3B0
TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJlc3Bv
bnNlOmNhY2hlZFJlc3BvbnNlXSk7CisgICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGllbnQo
KS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5zQ2Fj
aGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsKK30KKworI2Vsc2UKKwog
TlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAgaWYg
KG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00
Myw2ICs1Niw4IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwKICAg
ICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1l
bnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKKyNlbmRpZgorCiAjaWYg
VVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAj
aWYgUExBVEZPUk0oSU9TKQorI2lmIFVTRShDRk5FVFdPUkspCisgICAgYWRkU2NoZWR1bGVQYWly
KFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKSk7CisjZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0
ZShXZWJUaHJlYWROU1J1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7CisjZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFp
cjo6Y3JlYXRlKFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpKTsKICNlbmRpZgpAQCAtNjUsMTIgKzY5LDE0IEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQ
YWlyKFJlZjxTY2hlZHVsZVAKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5M
b29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAg
ICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFp
cik7CiAgICAgfQorI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1lck1hYyB1
c2UgdGhlc2UgU2NoZWR1bGVQYWlycy4KIH0KQEAgLTgzLDEyICs4OSwxNCBAQCB2b2lkIFBhZ2U6
OnJlbW92ZVNjaGVkdWxlUGFpcihSZWY8U2NoZWR1CiAKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUo
cGFpcik7CiAgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksMTAgQEAKICNpbXBvcnQg
PFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCisjaWYgVVNFKENGTkVUV09S
SykKKyNpbmNsdWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgorI2VuZGlmCisKICNpbXBvcnQg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBzdGQgewpAQCAtMzY4LDYgKzM3Miw1
OCBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhCiB9CiAjZW5kaWYK
IAorI2lmIFVTRShDRk5FVFdPUkspCitjbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q2xpZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKKyAgICB9CisKKyAgICB1c2luZyBSZWZD
b3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVmOwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
bGllbnQ+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Up
CisgICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fY2hhbGxlbmdlKTsKKyAgICB9CisKKyAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50
KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVu
dCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50
aWFsKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNy
ZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCByZWNlaXZlZFJlcXVl
c3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5n
ZS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBbW21fY2hh
bGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2Uu
Z2V0KCldOworICAgIH0KKworICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KV0pCisgICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRIYW5k
bGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKKyAgICB9
CisKKyAgICB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChbW21fY2hhbGxlbmdl
IHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9uU3Bh
Y2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCisgICAgICAgICAgICBbW21fY2hhbGxlbmdl
IHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOm1f
Y2hhbGxlbmdlLmdldCgpXTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Cit9OworI2VuZGlmCisKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQpAQCAtMTc0
MSw3ICsxNzk3LDE1IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoK
IAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9y
UmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZv
clJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShuc0NoYWxsZW5nZSkpOworI2lmIFVTRShDRk5FVFdPUkspCisgICAgUmVmUHRyPFdlYkNvcmVO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25z
Q2hhbGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKKyAgICBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7CisjZWxz
ZQorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Cisj
ZW5kaWYKKworICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDIw
NzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDE0IEBAIHR5cGVkZWYgc3RydWN0IF9O
U1JlY3QgTlNSZWN0OwogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNl
bmRpZgogCisjaWYgVVNFKENGTkVUV09SSykKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENv
b2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwordHlwZWRlZiBzdHJ1Y3QgX0NG
VVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKK3R5cGVkZWYgc3Ry
dWN0IF9DRlVSTENyZWRlbnRpYWwqIFdLQ0ZVUkxDcmVkZW50aWFsUmVmOwordHlwZWRlZiBzdHJ1
Y3QgX0NGVVJMUmVxdWVzdCogQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZjsKK3R5cGVkZWYgY29uc3Qg
c3RydWN0IF9DRlVSTFJlcXVlc3QqIENGVVJMUmVxdWVzdFJlZjsKKyNlbmRpZgorCiBPQkpDX0NM
QVNTIEFWQXNzZXQ7CiBPQkpDX0NMQVNTIEFWUGxheWVyOwogT0JKQ19DTEFTUyBDQUxheWVyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJD
Rk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQogICAgIENyZWRlbnRpYWxTdG9yYWdlJiBjcmVkZW50aWFsU3Rv
cmFnZSgpIHsgcmV0dXJuIG1fY3JlZGVudGlhbFN0b3JhZ2U7IH0KIAotI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQsIFJldGFpblB0
cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAKICAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hp
Y2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KQEAgLTg0LDcgKzg0
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFsU2Vzc2lvbk1hcCgpOwogICAgIFNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICNlbGlm
IFVTRShTT1VQKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+IG1fc2Vz
c2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90
ZWN0aW9uU3BhY2UuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEgKzIz
LDEyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgUHJv
dGVjdGlvblNwYWNlX2gKKyNkZWZpbmUgUHJvdGVjdGlvblNwYWNlX2gKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCi0jZWxpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQorI2VsaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2VDRk5ldC5oIgogI2Vsc2UKIApAQCAtNDksMyArNTAsNSBAQCBwdWJsaWM6CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgorCisjZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90
ZWN0aW9uU3BhY2VCYXNlLmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsMTEgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCisjaWYg
VVNFKENGTkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ0YuaCIKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBOZWVkIHRvIGVuZm9yY2UgZW1w
dHksIG5vbi1udWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9
PSBTdHJpbmcgb3BlcmF0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNsZWFyQ2xpZW50KCkK
ICAgICBkLT5tX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoQ0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNFKFNPVVApCisjaWYgIVBMQVRGT1JNKENPQ09B
KSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKQogLy8gUmVzb3VyY2VIYW5kbGUgbmV2
ZXIgdXNlcyBhc3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxhdGZvcm1zIHlldC4KIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2VuZGlmCiAKQEAgLTYwLDE0ICs2MCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBvYmpj
X29iamVjdCAqaWQ7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVz
cG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25u
ZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7CiB0eXBlZGVmIGludCBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5OwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFn
ZSogQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJM
U3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKIApAQCAtOTIsMTcgKzkyLDIyIEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lcjsKIAotY2xh
c3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT4sIHB1
YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CitjbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPgorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCisgICAgLCBwdWJsaWMgQXV0aGVu
dGljYXRpb25DbGllbnQKKyNlbmRpZgorICAgIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgZGVm
ZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKTsKIAotI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQogICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCiAgICAgYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgdm9p
ZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25z
dCBDcmVkZW50aWFsJikgb3ZlcnJpZGU7CkBAIC0xMTAsOCArMTE1LDkgQEAgcHVibGljOgogICAg
IHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KSBvdmVycmlkZTsKKyNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENP
Tk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgYm9v
bCB0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKICNlbmRpZgogCkBAIC0xMTksNyArMTI1LDcgQEAgcHVibGljOgogICAg
IGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0
aW9uU3BhY2UmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ29ubmVj
dGlvbiAqY29ubmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VEZWxlZ2F0ZShib29sKTsKICAg
ICBpZCBkZWxlZ2F0ZSgpOwpAQCAtMTI3LDE1ICsxMzMsMTkgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCX1RJTUlORykKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorICAgIHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENG
VVJMQ29ubmVjdGlvblJlZiwgTmV0d29ya0xvYWRUaW1pbmcmKTsKKyNlbHNlCiAgICAgc3RhdGlj
IHZvaWQgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICosIE5ldHdvcmtM
b2FkVGltaW5nJik7CiAjZW5kaWYKKyNlbmRpZgogICAgICAgICAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNj
aGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CiAgICAgQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24o
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0aW9uUmVm
PiByZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCk7CkBAIC0xOTgsMTAgKzIwOCwxMCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhh
bmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYygpLgotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRp
bnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNp
ZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKik7CiAjZW5kaWYKIApAQCAtMjE3LDEwICsyMjcsMTQgQEAgcHVibGlj
OgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+OjpyZWY7CiAgICAgdXNpbmcg
UmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT46OmRlcmVmOwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3Vz
TG9hZFJ1bkxvb3BNb2RlKCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENG
TkVUV09SSykKKyAgICBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9w
ZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgor
CiAgICAgdHlwZWRlZiBSZWY8UmVzb3VyY2VIYW5kbGU+ICgqQnVpbHRpbkNvbnN0cnVjdG9yKShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGll
bnQpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1Y3Rvcik7CiAKQEAgLTI0OSwxOSAr
MjYzLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92
ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIGVu
dW0gY2xhc3MgU2NoZWR1bGluZ0JlaGF2aW9yIHsgQXN5bmNocm9ub3VzLCBTeW5jaHJvbm91cyB9
OwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgdm9pZCBjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZE
aWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKICAgICB2b2lkIGNyZWF0
ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvcik7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRX
T1JLKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1
bGluZ0JlaGF2aW9yLCBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKTsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2FuQXV0
aGVudGljYQogfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShD
Rk5FVFdPUkspCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFz
eW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9u
c2UpCiB7CiAgICAgaGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKHJlc3BvbnNlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5F
VFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQcml2Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElP
UykgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShJT1MpIHx8IFVTRShDRk5F
VFdPUkspCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTk2LDcgKzk2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKICAgICAgICAgLy8gQ2xp
ZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNv
bnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoKSB3aGVuIHJlYWR5LgotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKICNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSos
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CkBAIC0xMTgsMTMgKzExOCwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0
aW9uKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0K
IAotI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9S
TShJT1MpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgICAgIHZpcnR1YWwgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3BlcnRpZXMoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNF
KENGTkVUV09SSykKICAgICAgICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxD
YWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNw
b25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KKyNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZikgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikK
KwogI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNw
b25zZSAqd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3Bv
bnNlICpyZXNwb25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNs
dWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgogI2VuZGlmCkBAIC02MSw3ICs2
MSw3IEBAIE9CSkNfQ0xBU1MgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIE9CSkNfQ0xB
U1MgTlNVUkxDb25uZWN0aW9uOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZjsKICNlbmRpZgogCkBAIC04Myw3ICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICwgbV9kZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpCiAgICAgICAg
ICAgICAsIG1fc2hvdWxkQ29udGVudFNuaWZmKHNob3VsZENvbnRlbnRTbmlmZikKICAgICAgICAg
ICAgICwgbV91c2VzQXN5bmNDYWxsYmFja3MoY2xpZW50ICYmIGNsaWVudC0+dXNlc0FzeW5jQ2Fs
bGJhY2tzKCkpCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgICAgICAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KHJlcXVlc3QpCiAjZW5kaWYKICNpZiBVU0Uo
Q1VSTCkKQEAgLTEzMSwxOSArMTMxLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2RlZmVyc0xvYWRpbmc7CiAgICAgICAgIGJvb2wgbV9zaG91bGRDb250ZW50U25pZmY7
CiAgICAgICAgIGJvb2wgbV91c2VzQXN5bmNDYWxsYmFja3M7Ci0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0
aW9uUmVmPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OwogICAgICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZT4gbV9jb25uZWN0aW9uRGVsZWdhdGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0
cjxOU1VSTENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmV0YWluUHRyPGlkPiBt
X2RlbGVnYXRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGJvb2wgbV9z
dGFydFdoZW5TY2hlZHVsZWQ7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
VVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAg
ICAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fc3RvcmFnZVNlc3Npb247
CiAjZW5kaWYKICNpZiBVU0UoQ1VSTCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkocmV2aXNpb24gMjA3
NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNpZiAhVVNFKFNPVVApICYmICFQTEFURk9STShDT0NPQSkKKyNpZiAhVVNFKFNP
VVApICYmICghUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspKQogZG91YmxlIFJlc291
cmNlUmVxdWVzdEJhc2U6OnNfZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCA9IElOVF9NQVg7CiAjZWxz
ZQogLy8gV2lsbCB1c2UgTlNVUkxSZXF1ZXN0IGRlZmF1bHQgdGltZW91dCB1bmxlc3Mgc2V0IHRv
IGEgbm9uLXplcm8gdmFsdWUgd2l0aCBzZXREZWZhdWx0VGltZW91dEludGVydmFsKCkuCkBAIC02
MTgsNyArNjE4LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZQog
ICAgIH0KIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04p
ICYmICFVU0UoU09VUCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAm
JiAhVVNFKFNPVVApCiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291
bnRQZXJIb3N0KCkKIHsKICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgdGhlIGxvYWRlciB0byBjb250
cm9sIHRoZSBudW1iZXIgb2YgaXNzdWVkIHBhcmFsbGVsIGxvYWQgcmVxdWVzdHMuIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
Ri5oIgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNsaWVudC5oIgpAQCAtNTEsOCArNTEsMTggQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
OkF1dGhlbnRpY2F0aW9uQwogewogfQogCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLCBBdXRo
ZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQpCi0gICAgOiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3Bh
Y2UoY2ZDaGFsbGVuZ2UpKSwgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRl
bnRpYWwoY2ZDaGFsbGVuZ2UpKSwgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJl
Q291bnQoY2ZDaGFsbGVuZ2UpLCAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFsbGVuZ2VH
ZXRGYWlsdXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLCBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJv
cihjZkNoYWxsZW5nZSkpCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRl
bnRpYWwoY2ZDaGFsbGVuZ2UpKSwKKyNlbHNlCisgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVu
Z2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENo
YWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAorI2VuZGlmCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlv
dXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNw
b25zZShjZkNoYWxsZW5nZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQogICAgICwgbV9hdXRoZW50aWNh
dGlvbkNsaWVudChhdXRoZW50aWNhdGlvbkNsaWVudCkKICAgICAsIG1fY2ZDaGFsbGVuZ2UoY2ZD
aGFsbGVuZ2UpCiB7CkBAIC04MywxMCArOTMsMTcgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNy
ZWF0ZUNGKGNvbnN0IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0
aENoYWxsZW5nZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRv
ZXMgdGhhdC4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIENGVVJMQXV0aENoYWxsZW5nZVJl
ZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFs
KCkuY2ZDcmVkZW50aWFsKCksCisjZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxS
ZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRD
cmVkZW50aWFsKCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHBy
b3RlY3Rpb25TcGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSkpOwotCi0gICAgcmV0dXJuIENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZShudWxscHRy
LCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVuZ2Uu
cHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5j
ZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7CisgICAgQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9u
U3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCisjZW5kaWYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlh
bCYgY29yZUNyZWRlbnRpYWwpCkBAIC0yNzEsNiArMjg4LDYgQEAgUHJvdGVjdGlvblNwYWNlIGNv
cmUoQ0ZVUkxQcm90ZWN0aW9uU3BhYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1l
KTsKIH0KIAotfTsKK30KIAotI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQXV0aGVudGljYXRpb25DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsOSArMjMsMTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNw
cmFnbWEgb25jZQorI2lmbmRlZiBBdXRoZW50aWNhdGlvbkNGX2gKKyNkZWZpbmUgQXV0aGVudGlj
YXRpb25DRl9oCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsUHJpdi5oPgogCkBAIC0zOSwx
MCArNDAsMjAgQEAgY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAog
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7CisjaWYgUExBVEZPUk0oV0lOKQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNv
bnN0IENyZWRlbnRpYWwmKTsKIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFdJTikKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYpOwog
UHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpOworI2VuZGlmCiB9
CiAKLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCisKKyNlbmRpZiAvLyBBdXRoZW50aWNhdGlvbkNGX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTMgKzIzLDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jcHJhZ21hIG9uY2UKKyNpZm5k
ZWYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorI2RlZmluZSBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZV9oCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAot
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIAogdHlwZWRlZiBz
dHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwogCkBAIC00
OSw3ICs1MCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEEKIHB1
YmxpYzoKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHt9CiAgICAgV0VCQ09SRV9FWFBP
UlQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3Qg
Q3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVD
b3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmLCBBdXRoZW50aWNhdGlvbkNsaWVu
dCopOwogCiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmVVJMQXV0aENoYWxsZW5nZVJlZigp
IGNvbnN0IHsgcmV0dXJuIG1fY2ZDaGFsbGVuZ2UuZ2V0KCk7IH0KQEAgLTY4LDcgKzY5LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKTsKIAog
ICAgIC8vIFBsYXRmb3JtIGNoYWxsZW5nZSBtYXkgYmUgbnVsbC4gSWYgaXQncyBub24tbnVsbCwg
aXQncyBhbHdheXMgdXAgdG8gZGF0ZSB3aXRoIG90aGVyIGZpZWxkcy4KLSNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9u
Q2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwogICAgIFJldGFpblB0cjxDRlVSTEF1dGhD
aGFsbGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7CiAjZWxzZQpAQCAtNzgsMyArNzksNSBAQCBwcml2
YXRlOgogfTsKIAogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDc1NzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNs
dWRlICJDb29raWUuaCIKQEAgLTI1NSw0ICsyNTUsNCBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IFVTRShDRlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVk
ZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDI0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYg
VVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRl
ICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJv
dGVjdGlvblNwYWNlLmgiCi0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbGlmIFBM
QVRGT1JNKFdJTikKKyNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIHN0YXRpYyBpbmxpbmUgQ0ZVUkxDcmVkZW50aWFsUmVmIGNvcHlDcmVkZW50
aWFsRnJvbVByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9u
U3BhY2UpCkBAIC00NSwxMSArNTQsMjkgQEAgc3RhdGljIGlubGluZSBDRlVSTENyZWRlbnRpYWxS
ZWYgY29weUNyZQogCiBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lz
dGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlD
cmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKSk7
CisgICAgcmV0dXJuIENyZWRlbnRpYWwoY3JlZGVudGlhbENGLmdldCgpKTsKKyNlbHNlCiAgICAg
YXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNl
KSk7CiAgICAgYXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVBy
b3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3Jl
KGNyZWRlbnRpYWxDRi5nZXQoKSk7CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3Zv
aWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KQoreworICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0Yg
PSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoMCkpOworCisgICAgaWYgKGNy
ZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Cisg
ICAgICAgIENyZWRlbnRpYWwgc2Vzc2lvbkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7CisgICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VT
ZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNl
c3Npb25DcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRD
cmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5j
ZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7CiB9CisjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikK
KyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMjA3
NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTg3LDQgKzg3LDQgQEAgQ0ZSdW5M
b29wUmVmIGxvYWRlclJ1bkxvb3AoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVu
TG9vcENGLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEw
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBv
bmNlCisjaWZuZGVmIExvYWRlclJ1bkxvb3BDRl9oCisjZGVmaW5lIExvYWRlclJ1bkxvb3BDRl9o
CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKIHR5cGVk
ZWYgc3RydWN0IF9fQ0ZSdW5Mb29wKiBDRlJ1bkxvb3BSZWY7CiAKQEAgLTM1LDQgKzM2LDYgQEAg
Q0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKTsKIAogfQogCi0jZW5kaWYgLy8gVVNFKENGVVJM
Q09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gTG9hZGVy
UnVuTG9vcF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNp
b24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdvcgogICAgIGlmIChtX3BsYXRm
b3JtU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25D
b3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BsYXRmb3JtU2Vzc2lvbi5n
ZXQoKSkpOwogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIHJldHVybiBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVm
YXVsdCk7CiAjZWxzZQogICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBhbHNv
IHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5j
cHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlQ0ZOZXQu
aCIKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIAogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VQcml2Lmg+CkBAIC00Miw0ICs0Miw0IEBAIGJvb2wgUHJvdGVjdGlvblNwYWNl
OjpyZWNlaXZlc0NyZWRlbnRpYWwKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVj
dGlvblNwYWNlQ0ZOZXQuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMCArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNwcmFnbWEgb25jZQor
I2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCisjZGVmaW5lIFByb3RlY3Rpb25TcGFjZUNG
TmV0X2gKIAotI2lmICFQTEFURk9STShXSU4pIHx8ICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQotI2Vy
cm9yIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIHdoZW4gdGFyZ2V0aW5nIFdp
bmRvd3MgYW5kIHVzaW5nIENGVVJMQ29ubmVjdGlvbi4KKyNpZiAhUExBVEZPUk0oV0lOKSB8fCAh
VVNFKENGTkVUV09SSykKKyNlcnJvciBUaGlzIGhlYWRlciBzaG91bGQgb25seSBiZSBpbmNsdWRl
ZCB3aGVuIHRhcmdldGluZyBXaW5kb3dzIGFuZCB1c2luZyBDRk5ldHdvcmsuCiAjZW5kaWYKIAog
I2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKQEAgLTQ3LDMgKzQ4LDUgQEAgcHVibGlj
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUHJvdGVjdGlvblNw
YWNlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMSArMjgsMTAgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yQmFzZS5oIgogCiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RlN0cmVhbS5oPgogI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KICNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3aW5kb3dzLmggbXVzdCBiZSBpbmNsdWRlZCBi
ZWZvcmUgd2luY3J5cHQuaC4KICNlbmRpZgpAQCAtNjIsMTAgKzYxLDEyIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBDRkVycm9yUmVmIGNmRXJyb3IoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oV0lOKQogICAgIFJlc291
cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYg
ZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVm
IGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRfQ09OVEVYVCBjZXJ0aWZpY2F0ZSgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogICAgIFJlc291cmNl
RXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CiAgICAgQ0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVy
cm9yKCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0OwpAQCAtODcs
MTMgKzg4LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKLSNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbXV0YWJsZSBSZXRh
aW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwotI2VsaWYgUExBVEZPUk0oQ09DT0Ep
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9w
bGF0Zm9ybU5TRXJyb3I7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gbV9jZXJ0aWZpY2F0ZTsKKyNlbmRpZgogI2Vsc2UKICAgICBtdXRhYmxlIFJl
dGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtRXJyb3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5j
cHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDE3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogCi0jaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KLSNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uv
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCisj
aWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291
cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZFcnJvclJlZiBjZkVycm9yKQpAQCAtMjE1LDQgKzIx
OCw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSAKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAy
MDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBACiAjaW5jbHVkZSAi
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZO
ZXR3b3JrLmg+Ci0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgotI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01Nyw2
ICs1NSwyMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaCIKKyNpbmNs
dWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaWYgVVNFKENGTkVUV09SSykKKyNpbmNs
dWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25u
ZWN0aW9uUHJpdi5oPgorI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+Cisj
ZW5kaWYKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxwcm9jZXNzLmg+
CisKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBkZWNsYXJhdGlvbiBvbmNlIGl0J3MgaW4gV2ViS2l0
U3VwcG9ydExpYnJhcnkuCiBleHRlcm4gIkMiIHsKIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVS
TENvbm5lY3Rpb25SZWYgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMoCkBAIC02
NSwxMCArNzcsMTEgQEAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVVJMQ29ubmVjdGlvblJlZgog
ICBDRlVSTENvbm5lY3Rpb25DbGllbnQgKiAgY2xpZW50LAogICBDRkRpY3Rpb25hcnlSZWYgcHJv
cGVydGllcyk7CiB9CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiBzdGF0aWMgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVI
b3N0cygpCiB7CkBAIC0xMDcsNyArMTIwLDExIEBAIFJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VI
YW5kbGUoKQogICAgIAogc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBzaG91bGRTbmlmZkNvbm5l
Y3Rpb25Qcm9wZXJ0eSgpCiB7CisjaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBDRlNUUigi
X2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmIik7CisjZWxzZQorICAgIHJldHVy
biBfa0NGVVJMQ29ubmVjdGlvblByb3BlcnR5U2hvdWxkU25pZmY7CisjZW5kaWYKIH0KIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZp
b3Igc2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcykK
QEAgLTE0OSw2ICsxNjYsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5l
Y3RpCiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gc3NsUHJvcHM7CiAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgc3NsUHJvcHMgPSBhZG9wdENGKFJlc291cmNlSGFuZGxl
OjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChmaXJzdFJlcXVlc3QoKSkpOwor
I2Vsc2UKICAgICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMo
Zmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpKSkgewogICAgICAgICBzc2xQcm9wcyA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKSk7CiAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHNzbFByb3BzLmdldCgpLCBrQ0ZT
dHJlYW1TU0xBbGxvd3NBbnlSb290LCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC0xNjEsOCArMTgxLDEx
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICBpZiAoY2xp
ZW50Q2VydCAhPSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5lbmQoKSkgewogICAgICAgICBpZiAoIXNz
bFByb3BzKQogICAgICAgICAgICAgc3NsUHJvcHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgd2tTZXRDbGllbnRDZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhzc2xQ
cm9wcy5nZXQoKSwgKGNsaWVudENlcnQtPnZhbHVlKS5nZXQoKSk7CisjZW5kaWYKICAgICB9Cisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAgICAgaWYgKHNzbFByb3BzKQogICAgICAgICBDRlVS
TFJlcXVlc3RTZXRTU0xQcm9wZXJ0aWVzKHJlcXVlc3QuZ2V0KCksIHNzbFByb3BzLmdldCgpKTsK
QEAgLTE4Myw2ICsyMDYsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25u
ZWN0aQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNU
UigiX1dlYktpdFN5bmNocm9ub3VzUmVxdWVzdCIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBw
bGljYXRpb25BdWRpdERhdGEgPSBkLT5tX2NvbnRleHQtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXRE
YXRhKCk7CisgICAgaWYgKHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKQorICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigia0NGU3RyZWFtUHJvcGVy
dHlTb3VyY2VBcHBsaWNhdGlvbiIpLCBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YS5nZXQoKSk7
CisjZW5kaWYKKwogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxDb25uZWN0aW9u
U29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3Ry
ZWFtUHJvcGVydGllcyIpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBw
cm9wZXJ0aWVzRGljdGlvbmFyeTsKICAgICBpZiAoY2xpZW50UHJvcGVydGllcykKQEAgLTIwMSw3
ICsyMzAsMTQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxD
b25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7CiAgICAg
Q0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQorICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxl
Z2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKKyAgICBlbHNlCisgICAgICAgIGQtPm1fY29ubmVj
dGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7CisjZWxzZQogICAgIGQtPm1fY29ubmVjdGlvbkRl
bGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZSh0aGlzKSk7CisjZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0
ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xp
ZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNs
aWVudCgpOwpAQCAtMjI4LDYgKzI2NCwxMCBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgp
CiAKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNsaWVudCgpIHx8IGNs
aWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKIAorI2lmIEVOQUJMRShX
RUJfVElNSU5HKSAmJiBQTEFURk9STShDT0NPQSkgJiYgIUhBVkUoVElNSU5HREFUQU9QVElPTlMp
CisgICAgc2V0Q29sbGVjdHNUaW1pbmdEYXRhKCk7CisjZW5kaWYKKwogICAgIFNjaGVkdWxpbmdC
ZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IgPSBjbGllbnQoKS0+bG9hZGluZ1N5bmNocm9ub3Vz
WEhSKCkgPyBTY2hlZHVsaW5nQmVoYXZpb3I6OlN5bmNocm9ub3VzIDogU2NoZWR1bGluZ0JlaGF2
aW9yOjpBc3luY2hyb25vdXM7CiAKICAgICBjcmVhdGVDRlVSTENvbm5lY3Rpb24oc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UsIGQtPm1fc2hvdWxkQ29udGVudFNuaWZmLCBzY2hlZHVsaW5nQmVo
YXZpb3IsIGNsaWVudCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQoKSk7CkBAIC0z
MTEsNiArMzUxLDE2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMK
ICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICBBU1NF
UlQoY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgPT0gdGhpcyk7IC8vIFNob3VsZCBi
ZSBhbHJlYWR5IHNldC4KIAorI2lmICFQTEFURk9STShXSU4pCisgICAgLy8gUHJveHkgYXV0aGVu
dGljYXRpb24gaXMgaGFuZGxlZCBieSBDRk5ldHdvcmsgaW50ZXJuYWxseS4gV2UgY2FuIGdldCBo
ZXJlIGlmIHRoZSB1c2VyIGNhbmNlbHMKKyAgICAvLyBDRk5ldHdvcmsgYXV0aGVudGljYXRpb24g
ZGlhbG9nLCBhbmQgd2Ugc2hvdWxkbid0IGFzayB0aGUgY2xpZW50IHRvIGRpc3BsYXkgYW5vdGhl
ciBvbmUgaW4gdGhhdCBjYXNlLgorICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCku
aXNQcm94eSgpKSB7CisgICAgICAgIC8vIENhbm5vdCB1c2UgcmVjZWl2ZWRSZXF1ZXN0VG9Db250
aW51ZVdpdGhvdXRDcmVkZW50aWFsKCksIGJlY2F1c2UgY3VycmVudCBjaGFsbGVuZ2UgaXMgbm90
IHlldCBzZXQuCisgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25u
ZWN0aW9uLmdldCgpLCAwLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAodHJ5SGFuZGxlUGFzc3dvcmRC
YXNlZEF1dGhlbnRpY2F0aW9uKGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzMx
LDcgKzM4MSwxMSBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAK
ICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAg
ICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
MCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3JlZGVudGlh
bC5nZXQoKSk7CisjZWxzZQogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNm
Q3JlZGVudGlhbC5nZXQoKSk7CisjZW5kaWYKICAgICAgICAgCiAgICAgICAgIFVSTCB1cmxUb1N0
b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXND
b2RlKCkgPT0gNDAxKQpAQCAtMzYxLDggKzQxNSwxMiBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0
cnlIYW5kbGVQYXNzd29yZEJhCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVk
ZW50aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGly
ZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9u
KCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAg
ICAgICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgICAgICBDRlVSTENvbm5l
Y3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNy
ZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbHNlCiAg
ICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFs
ID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlh
bC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbmRpZgogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00
MTIsMTIgKzQ3MCwyMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwo
CiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFn
ZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRv
U3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25u
ZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZV
UkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworI2Vsc2UKICAgICAgICAgICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVu
dGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nv
bm5lY3Rpb24pIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgQ0ZVUkxDb25uZWN0aW9u
VXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50
aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CisjZWxzZQogICAgICAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNy
ZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlh
bChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNm
VVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGNsZWFyQXV0aGVu
dGljYXRpb24oKTsKQEAgLTU1OCw2ICs2MjQsMzAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxh
dGZvcm1TZXREZWZlcnNMbwogICAgICAgICBDRlVSTENvbm5lY3Rpb25SZXN1bWUoZC0+bV9jb25u
ZWN0aW9uLmdldCgpKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQordm9pZCBSZXNvdXJjZUhh
bmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQoreworICAgIENGUnVuTG9vcFJlZiBy
dW5Mb29wID0gcGFpci5ydW5Mb29wKCk7CisgICAgaWYgKCFydW5Mb29wKQorICAgICAgICByZXR1
cm47CisKKyAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOworICAgIGlmIChkLT5tX3N0YXJ0V2hl
blNjaGVkdWxlZCkgeworICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rp
b24uZ2V0KCkpOworICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOworICAg
IH0KK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBh
aXIpCit7CisgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKKyAgICBp
ZiAoIXJ1bkxvb3ApCisgICAgICAgIHJldHVybjsKKworICAgIENGVVJMQ29ubmVjdGlvblVuc2No
ZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9k
ZSgpKTsKK30KKyNlbmRpZgorCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxl
OjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVl
c3Q7CkBAIC01ODYsNiArNjc2LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxs
Q2FjaGVSZQogewogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5jb250aW51ZVdpbGxDYWNo
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
I2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAko
cmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTMgKzI2LDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAj
aW5jbHVkZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMSw0ICsy
MTgsNCBAQCBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgUmVzb3VyY2VIYW5kbGVDCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEwIEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNwcmFnbWEgb25jZQorI2lmbmRlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlX2gKKyNkZWZpbmUgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZV9oCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25u
ZWN0aW9uUHJpdi5oPgpAQCAtOTksNCArMTAwLDYgQEAgcHJvdGVjdGVkOgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQorCisjZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmgiCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUksp
CiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCIKQEAgLTc1LDYgKzc1LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIENGVVJMUmVxdWVzdFNldFNo
b3VsZFN0YXJ0U3luY2hyb25vdXNseShyZXF1ZXN0LCAxKTsKKyNlbmRpZgogICAgIENGVVJMUmVm
IHJlcXVlc3RVUkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwocmVxdWVzdCk7CiAgICAgaWYgKCFyZXF1
ZXN0VVJMKQogICAgICAgICByZXR1cm47CkBAIC0xNDYsOCArMTQ5LDEwIEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICAgICAgICAgICAgIGFkanVzdE1JTUVUeXBl
SWZOZWNlc3NhcnkoY2ZSZXNwb25zZSwgaXNNYWluUmVzb3VyY2VMb2FkKTsKICAgICAgICAgfQog
CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9j
b2xQcm9wZXJ0eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KERv
Tm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCiAgICAgICAg
ICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRt
bCIpKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogICAgICAgICAKICAgICAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwogI2lmIEVOQUJMRShXRUJf
VElNSU5HKQpAQCAtMjgzLDcgKzI4OCwxNSBAQCBCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsCiAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRU
b1Byb3RlY3Rpb25TcGFjZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1f
aGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFByb3RlY3Rpb25T
cGFjZShwcm90ZWN0aW9uU3BhY2UpKTsKKyAgICAgICAgUHJvdGVjdGlvblNwYWNlIGNvcmVQcm90
ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKTsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9u
U2NoZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKSB7
CisgICAgICAgICAgICBtX2Jvb2xSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIGRpc3BhdGNo
X3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorICAgICAgICBtX2hhbmRsZS0+Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKICAg
ICB9KTsKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSwgRElTUEFUQ0hf
VElNRV9GT1JFVkVSKTsKICAgICByZXR1cm4gbV9ib29sUmVzdWx0OwpAQCAtMzM0LDQgKzM0Nyw0
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICNlbmRpZiAvLyBV
U0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0jZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgJKHJldmlzaW9uIDIwNzU3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw5ICsyMywxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UK
KyNpZm5kZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZV9oCisjZGVmaW5lIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWVfaAogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KQEAgLTc5LDQgKzgwLDYg
QEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShD
RlVSTENPTk5FQ1RJT04pCisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKworI2VuZGlmIC8vIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWVfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAKIE9CSkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RS
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKQEAgLTYxLDcgKzYxLDEzIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogICAgIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVl
c3QoTlNVUkxSZXF1ZXN0ICopOworICAgIHZvaWQgdXBkYXRlTlNVUkxSZXF1ZXN0KCk7CisgICAg
dm9pZCBjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCk7CisjZW5kaWYKKwogICAgIFJlc291cmNl
UmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICA6IFJlc291cmNlUmVx
dWVzdEJhc2UoKQogICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkKQEAgLTc4LDcgKzg0
LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZyb21EZWxlZ2F0
ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBib29sIGVuY29kaW5nUmVx
dWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1
ZXN0OyB9CisjZWxzZQogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0KKyNlbmRpZgogICAgIFdF
QkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9s
aWN5KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1Vz
ZXJJbml0aWF0ZWRLZXkoKTsKQEAgLTk1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGNvbnN0IFN0cmluZyYgZG9tYWluKSB7IG1fY2FjaGVQ
YXJ0aXRpb24gPSBwYXJ0aXRpb25OYW1lKGRvbWFpbik7IH0KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJM
UmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdG9yYWdl
U2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKICNlbmRpZgpAQCAtMTE1LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNF
KENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBtX2NmUmVxdWVzdDsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJ
KHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0
LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01OSwxMSArNTksMTIgQEAgYm9vbCBSZXNvdXJjZVJlcXVl
c3Q6OnNfaHR0cFBpcGVsaW5pbmdFbgogYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0cFBpcGVs
aW5pbmdFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CisjaWYgVVNFKENGTkVUV09SSykKIAogdHlwZWRlZiB2b2lkICgqQ0ZVUkxSZXF1ZXN0U2V0Q29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24pKENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYsIENGQXJyYXlSZWYpOwogdHlwZWRlZiBDRkFycmF5UmVmICgqQ0ZVUkxSZXF1
ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShD
RlVSTFJlcXVlc3RSZWYpOwogCisjaWYgUExBVEZPUk0oV0lOKQogc3RhdGljIEhNT0RVTEUgZmlu
ZENGTmV0d29ya01vZHVsZSgpCiB7CiAjaWZuZGVmIERFQlVHX0FMTApAQCAtODIsNiArODMsMTcg
QEAgc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpbwogewogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oR2V0UHJvY0FkZHJlc3MoZmluZENGTmV0d29ya01v
ZHVsZSgpLCAiX0NGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkiKSk7CiB9CisjZWxpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyBDRlVSTFJlcXVl
c3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5k
Q0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVu
Y3Rpb24oKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdFNldENv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uPihkbHN5bShSVExE
X0RFRkFVTFQsICJfQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5IikpOworfQorCitzdGF0aWMgQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uIGZpbmRDRlVSTFJlcXVlc3RDb3B5Q29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24oKQoreworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZBVUxULCAiX0NGVVJM
UmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkiKSk7Cit9
CisjZW5kaWYKIAogc3RhdGljIHZvaWQgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZBcnJheVJlZiBmYWxs
YmFja0FycmF5KQogewpAQCAtMTQ0LDYgKzE1NiwxMCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVQbGF0Zm9ybVJlCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSkK
ICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdCwgdG9QbGF0
Zm9ybVJlcXVlc3RQcmlvcml0eShwcmlvcml0eSgpKSk7CiAKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwga0NGVVJMUmVx
dWVzdEFsbG93QWxsUE9TVENhY2hpbmcsIGtDRkJvb2xlYW5UcnVlKTsKKyNlbmRpZgorCiAgICAg
c2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKIAogICAgIENG
VVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29r
aWVzKCkpOwpAQCAtMTY4LDYgKzE4NCw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmUKICNlbmRpZgogCiAgICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVz
dCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgp
OworI2VuZGlmCiB9CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIGEgc3dpdGNoIGJhc2VkIG9u
IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBhcmFtZXRlcgpAQCAtMjA2LDEyICsyMjUsMzAg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVAogICAgIH0KIAogICAg
IG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKKyNlbmRpZgogfQogCiB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogewogICAgIGlmICghbV9jZlJl
cXVlc3QpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS85
OTEzNTI2PgorICAgICAgICAvLyBUaGlzIGlzIGEgaGFjayB0byBtaW1pYyB0aGUgc3VidGxlIGJl
aGF2aW91ciBvZiB0aGUgRm91bmRhdGlvbiBiYXNlZCBSZXNvdXJjZVJlcXVlc3QKKyAgICAgICAg
Ly8gY29kZS4gVGhhdCBjb2RlIGRvZXMgbm90IHJlc2V0IG1faHR0cE1ldGhvZCBpZiB0aGUgTlNV
UkxSZXF1ZXN0IGlzIG5pbC4gSSBmaWxlZAorICAgICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzM2PiB0byB0cmFjayB0aGF0LgorICAgICAgICAvLyBB
bm90aGVyIHJlbGF0ZWQgYnVnIGlzIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjYzNTA+LiBGaXhpbmcgdGhhdAorICAgICAgICAvLyB3b3VsZCwgaWRlYWxseSwgYWxs
b3cgdXMgdG8gbm90IGhhdmUgdGhpcyBoYWNrLiBCdXQgdW5mb3J0dW5hdGVseSB0aGF0IGNhdXNl
ZCBsYXlvdXQgdGVzdAorICAgICAgICAvLyBmYWlsdXJlcy4KKyAgICAgICAgLy8gUmVtb3ZhbCBv
ZiB0aGlzIGhhY2sgaXMgdHJhY2tlZCBieSA8cmRhcjovL3Byb2JsZW0vOTk3MDQ5OT4uCisKKyAg
ICAgICAgU3RyaW5nIGh0dHBNZXRob2QgPSBtX2h0dHBNZXRob2Q7CiAgICAgICAgICp0aGlzID0g
UmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIG1faHR0cE1ldGhvZCA9IGh0dHBNZXRob2Q7Cisj
ZWxzZQorICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgpOworI2VuZGlmCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTI4Nyw5ICszMjQsMTIgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAogICAgIGlmIChzdG9yYWdlU2Vzc2lvbikKICAgICAgICAg
X0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdCwgc3RvcmFnZVNlc3Npb24p
OwogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKKyNlbmRpZgogfQogCi0jZW5k
aWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogCiB2
b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3Bl
cnRpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdCkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNyArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9u
Y2UKKyNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaAorI2RlZmluZSBSZXNvdXJjZVJlcXVl
c3RDRk5ldF9oCiAKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRQcmlvcml0eS5oIgpAQCAtMzMsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYg
VVNFKENGTkVUV09SSykKIHZvaWQgZ2V0UmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IENGVVJMUmVxdWVzdFJlZik7CiBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC03OCwzICs3OSw1IEBAIGlubGluZSBDRlVSTFJl
cXVlc3RQcmlvcml0eSB0b1BsYXRmb3JtUmUKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlz
aW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSAiQ0ZO
ZXR3b3JrU1BJLmgiCiAjZW5kaWYKIApAQCAtNDMsMTMgKzQzLDE2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIFJlc291cmNlUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogICAgICAg
ICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCiAgICAgICAgICwgbV9jZlJlc3BvbnNlKGNm
UmVzcG9uc2UpCiAgICAgewogICAgICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOwogICAgIH0K
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNl
KE5TVVJMUmVzcG9uc2UgKik7CisjZW5kaWYKICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShO
U1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogICAgICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlh
bGl6ZWQpCkBAIC04MSw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICovCiAgICAgfQogCi0j
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVf
RVhQT1JUIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0OwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTQsOSArMTE3LDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzUXVpY2tMb29rIHsgZmFsc2UgfTsKICNlbmRpZgogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGVVJMUmVz
cG9uc2VSZWY+IG1fY2ZSZXNwb25zZTsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4g
bV9uc1Jlc3BvbnNlOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAko
cmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogCi0j
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAi
Q0ZOZXR3b3JrU1BJLmgiCiAKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJG
aWVsZHNbXSA9IHsKQEAgLTQzLDkgKzQ3LDEzIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBj
b21tb25IZWFkZXJGaWUKIENGVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxS
ZXNwb25zZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIG5zVVJMUmVzcG9uc2UoKTsKKyNlbHNlCiAg
ICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gbV91cmwuY3JlYXRlQ0ZVUkwoKTsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY3JlYXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVSTFJlc3Bv
bnNlLCB3aGljaCBkb2VzIG5vdCBldmVuIGhhdmUgYSBzdGF0dXMgY29kZS4KICAgICAgICAgbV9j
ZlJlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwgbV9t
aW1lVHlwZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVu
dExlbmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1lLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJl
dHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CkBAIC0xMDgsMTAgKzExNiwxMiBAQCB2b2lkIFJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2
ZWw7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewogICAgIHJldHVybiB7
IH07CiB9CisjZW5kaWYKIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2Vz
dGVkRmlsZW5hbWUoKSBjb25zdAogewpAQCAtMTMyLDQgKzE0Miw0IEBAIGJvb2wgUmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKyNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRl
ckNsaWVudENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwCShyZXZpc2lvbiAyMDc1
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAot
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIK
QEAgLTQ4LDQgKzQ4LDQgQEAgUmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6
cAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
CShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5o
IgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgpAQCAtNDEsNiArNDAsMjAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiV2ViQ29yZVRo
cmVhZC5oIgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCkBAIC01MCwxMSArNjMsMjAgQEAgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbgogCiB2b2lkIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBSZXF1ZXN0KENGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgQ0ZVUkxS
ZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJlcXVlc3QsIDEpOworI2VuZGlmCiB9
CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpzZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9u
KQogeworI2lmIFBMQVRGT1JNKFdJTikKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhD
dXJyZW50TWVzc2FnZVF1ZXVlKGNvbm5lY3Rpb24pOworI2VsaWYgUExBVEZPUk0oSU9TKQorICAg
IENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoY29ubmVjdGlvbiwgV2ViVGhyZWFk
UnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2Vsc2UKKyAgICBDRlVSTENvbm5l
Y3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGNvbm5lY3Rpb24sIENGUnVuTG9vcEdldEN1cnJlbnQo
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyNlbmRpZgogICAgIENGVVJMQ29ubmVjdGlvblNj
aGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChjb25uZWN0aW9uLCBsb2FkZXJSdW5Mb29wKCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKQEAgLTgxLDYgKzEwMyw3IEBAIENGVVJMUmVxdWVz
dFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGwKICAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0Owog
fQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQogc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBl
KENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRl
ZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCku
bGVha1JlZigpOwpAQCAtMTEwLDE0ICsxMzMsMzAgQEAgc3RhdGljIHZvaWQgYWRqdXN0TUlNRVR5
cGVJZk5lY2Vzc2FyeShDRgogICAgIGlmIChyZXN1bHQgIT0gb3JpZ2luYWxSZXN1bHQpCiAgICAg
ICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCByZXN1bHQuZ2V0KCkpOwog
fQorI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENv
bm5lY3Rpb25SZWYsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3ZvaWQgU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9u
c2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNw
b25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlPSVw
KSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAg
ICByZXR1cm47CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBBdm9pZCBNSU1FIHR5cGUg
c25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4K
KyAgICBhdXRvIG1zZyA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7
CisgICAgaW50IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0
dXNDb2RlKG1zZykgOiAwOworCisgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KSB7CisgICAgICAg
IGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVl
c3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOworICAgICAgICBhZGp1
c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7Cisg
ICAgfQorCisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBpZiAoX0NGVVJMUmVxdWVzdENvcHlQcm90
b2NvbFByb3BlcnR5Rm9yS2V5KG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3Qo
RG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKKyAgICAg
ICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0L2h0bWwi
KSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbHNlCiAgICAgaWYgKCFDRlVSTFJlc3Bv
bnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSkpCiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkoY2ZSZXNwb25zZSk7CiAKQEAgLTEyNiw2ICsxNjUsNyBAQCB2b2lkIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVCghbV9oYW5kbGUtPnNob3Vs
ZENvbnRlbnRTbmlmZigpKTsKICAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2Up
OwogICAgIH0KKyNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgYm9vbCBpc1F1aWNr
TG9va1ByZXZpZXcgPSBmYWxzZTsKQEAgLTEzNyw2ICsxNzcsMTIgQEAgdm9pZCBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogI2VuZGlmCiAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7CisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShXRUJfVElNSU5HKQorICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5n
RGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLm5ldHdvcmtMb2FkVGltaW5nKCkpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisjZW5kaWYKKwogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0SXNRdWlja0xvb2soaXNRdWlja0xv
b2tQcmV2aWV3KTsKICNlbmRpZgpAQCAtMTg1LDYgKzIzMSw3IEBAIHZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKIAogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3Bv
bnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CisjaWYgUExBVEZP
Uk0oV0lOKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBD
YWNoaW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KICAgICAvLyBGSVhNRTog
V2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3
MTUwOSkuCiAgICAgQ0ZVUkxSZXNwb25zZVJlZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVS
TFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKTsKQEAgLTE5NCw4ICsy
NDEsMTYgQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJvbm91c1Jlc291cgogICAgICAg
ICBpZiAodmFyeVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorI2VuZGlmIC8v
IFBMQVRGT1JNKFdJTikKKworI2lmIFBMQVRGT1JNKFdJTikKICAgICBpZiAobV9oYW5kbGUtPmNs
aWVudCgpICYmICFtX2hhbmRsZS0+Y2xpZW50KCktPnNob3VsZENhY2hlUmVzcG9uc2UobV9oYW5k
bGUsIGNhY2hlZFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgbmV3UmVzcG9uc2UgPSBtX2hhbmRsZS0+Y2xpZW50KCktPndpbGxD
YWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7CisgICAgaWYgKG5ld1Jlc3Bv
bnNlICE9IGNhY2hlZFJlc3BvbnNlKQorICAgICAgICByZXR1cm4gbmV3UmVzcG9uc2U7CisjZW5k
aWYKIAogICAgIENGUmV0YWluKGNhY2hlZFJlc3BvbnNlKTsKICAgICByZXR1cm4gY2FjaGVkUmVz
cG9uc2U7CkBAIC0yMzIsNyArMjg3LDE0IEBAIEJvb2xlYW4gU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ28KIAogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25T
cGFjZShoYW5kbGU9JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAg
UHJvdGVjdGlvblNwYWNlIGNvcmVQcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlKTsKKyAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
blNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKKyNlbHNlCiAg
ICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGNvcmUocHJvdGVjdGlvblNwYWNlKSk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBVU0UoUFJPVEVD
VElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHJldmlz
aW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDkgKzIzLDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25j
ZQorI2lmbmRlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVfaAorI2RlZmluZSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVfaAogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCkBA
IC02Niw0ICs2Nyw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNl
bmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisK
KyNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVk
ZW50aWFsQ29jb2EuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTIgKzIzLDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I3ByYWdtYSBvbmNlCisjaWZuZGVmIENyZWRlbnRpYWxDb2NvYV9oCisjZGVmaW5lIENyZWRlbnRp
YWxDb2NvYV9oCiAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFzZS5oIgogI2luY2x1ZGUgPFNlY3Vy
aXR5L1NlY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgorI2VuZGlmCisKIE9CSkNfQ0xBU1Mg
TlNVUkxDcmVkZW50aWFsOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NywxMiArNTIsMTgg
QEAgcHVibGljOgogCiAgICAgQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiwgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlKTsKIAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgZXhwbGljaXQgQ3JlZGVu
dGlhbChDRlVSTENyZWRlbnRpYWxSZWYpOworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgQ3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRm
b3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNDcmVkZW50aWFsICYmIGVuY29kaW5nUmVxdWly
ZXNQbGF0Zm9ybURhdGEobV9uc0NyZWRlbnRpYWwuZ2V0KCkpOyB9CiAKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwoKSBjb25zdDsKKyNlbmRp
ZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ3JlZGVudGlhbCAqbnNDcmVkZW50aWFsKCkgY29u
c3Q7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYs
IGNvbnN0IENyZWRlbnRpYWwmKTsKQEAgLTY0LDMgKzc1LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENyZWRlbnRpYWxDb2NvYV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Ny
ZWRlbnRpYWxDb2NvYS5tbQkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDEzIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNyZWRlbnRpYWxD
b2NvYS5oIgogCisjaWYgVVNFKENGTkVUV09SSykKK0BpbnRlcmZhY2UgTlNVUkxDcmVkZW50aWFs
IChXZWJEZXRhaWxzKQorLSAoaWQpX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOihDRlVSTENyZWRl
bnRpYWxSZWYpY3JlZGVudGlhbDsKKy0gKENGVVJMQ3JlZGVudGlhbFJlZikgX0NGVVJMQ3JlZGVu
dGlhbDsKK0BlbmQKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBOU1VS
TENyZWRlbnRpYWxQZXJzaXN0ZW5jZSB0b05TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlKENyZWRl
bnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKQEAgLTc3LDEyICs4NCwyNiBAQCBDcmVkZW50
aWFsOjpDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmCiAgICAgfQogfQogCisjaWYgVVNFKENG
TkVUV09SSykKK0NyZWRlbnRpYWw6OkNyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRl
bnRpYWwpCisgICAgOiBDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2Nd
IF9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDpjcmVkZW50aWFsXSkuZ2V0KCkpCit7Cit9CisjZW5k
aWYKKwogQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwp
CiAgICAgOiBDcmVkZW50aWFsQmFzZShjcmVkZW50aWFsLnVzZXIsIGNyZWRlbnRpYWwucGFzc3dv
cmQsIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UpKQogICAg
ICwgbV9uc0NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKIH0KIAorI2lmIFVTRShDRk5FVFdPUksp
CitDRlVSTENyZWRlbnRpYWxSZWYgQ3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW25zQ3JlZGVudGlhbCgpIF9DRlVSTENyZWRlbnRpYWxdOworfQorI2VuZGlm
CisKIE5TVVJMQ3JlZGVudGlhbCAqQ3JlZGVudGlhbDo6bnNDcmVkZW50aWFsKCkgY29uc3QKIHsK
ICAgICBpZiAobV9uc0NyZWRlbnRpYWwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCShy
ZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxNiBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25j
ZQorI2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDb2NvYV9oCisjZGVmaW5lIFByb3RlY3Rpb25TcGFj
ZUNvY29hX2gKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBzdHJ1Y3QgX0NG
VVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKKyNlbmRpZgorCiBP
QkpDX0NMQVNTIE5TVVJMUHJvdGVjdGlvblNwYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Miw2ICs0Nyw5IEBAIHB1YmxpYzoKIAogICAgIFByb3RlY3Rpb25TcGFjZShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRlZFZhbHVlKSA6IFByb3RlY3Rpb25TcGFjZUJhc2Uo
ZGVsZXRlZFZhbHVlKSB7IH0KIAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgZXhwbGljaXQgUHJv
dGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKKyNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAq
KTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYik7CkBAIC01MCw2ICs1OCw5IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHko
KSBjb25zdDsKIAorI2lmIFVTRShDRk5FVFdPUkspCisgICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VS
ZWYgY2ZTcGFjZSgpIGNvbnN0OworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxQcm90
ZWN0aW9uU3BhY2UgKm5zU3BhY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTU5LDMgKzcwLDUg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBy
b3RlY3Rpb25TcGFjZUNvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQkocmV2
aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Q
cm90ZWN0aW9uU3BhY2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsMjIgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIKIAor
I2lmIFVTRShDRk5FVFdPUkspCitAaW50ZXJmYWNlIE5TVVJMUHJvdGVjdGlvblNwYWNlIChXZWJE
ZXRhaWxzKQorLSAoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIF9DRlVSTFByb3RlY3Rpb25TcGFj
ZTsKKy0gKGlkKV9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOihDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZiljZlByb3RTcGFjZTsKK0BlbmQKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2Uo
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgc3BhY2UpCisgICAgOiBQcm90ZWN0aW9uU3BhY2UoYWRv
cHROUyhbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFByb3RlY3Rp
b25TcGFjZTpzcGFjZV0pLmdldCgpKQoreworfQorI2VuZGlmCisKIHN0YXRpYyBQcm90ZWN0aW9u
U3BhY2VTZXJ2ZXJUeXBlIHR5cGUoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogewogICAg
IGlmIChbc3BhY2UgaXNQcm94eV0pIHsKQEAgLTkyLDYgKzEwNSwxMyBAQCBQcm90ZWN0aW9uU3Bh
Y2U6OlByb3RlY3Rpb25TcGFjZShOU1VSTFByCiAgICAgbV9uc1NwYWNlID0gc3BhY2U7CiB9CiAK
KyNpZiBVU0UoQ0ZORVRXT1JLKQorQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNw
YWNlOjpjZlNwYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VdOworfQorI2VuZGlmCisKIE5TVVJMUHJvdGVjdGlvblNwYWNlICpQcm90ZWN0
aW9uU3BhY2U6Om5zU3BhY2UoKSBjb25zdAogewogICAgIGlmIChtX25zU3BhY2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzLDkgKzUzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVx
dWVzdCAqUmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kg
Ym9keVBvbGljeSkgY29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGlj
eSk7CisjaWYgVVNFKENGTkVUV09SSykKKyAgICBpZiAoIW1fbnNSZXF1ZXN0KQorICAgICAgICBj
b25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJlcXVlc3QoKTsK
KyNlbmRpZgogICAgIHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwogfQogCisjaWYgIVVTRShDRk5FVFdPUkspCisKIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJj
ZVJlcXVlc3Q6OmNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBj
b25zdAogewogICAgIHJldHVybiBbbnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kpIF9DRlVSTFJlcXVl
c3RdOwpAQCAtMjM4LDYgKzI0NCw4IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdl
U2Vzc2lvbigKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVxdWVzdFdpdGhTdG9y
YWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKIH0KIAorI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0JKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NSw4ICs3NSwxMyBA
QCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OmRpc2FibGVMYXp5SW5pdGlhCiAKIENlcnRpZmljYXRl
SW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7
CisjaWYgVVNFKENGTkVUV09SSykKKyAgICBBU1NFUlQobV9jZlJlc3BvbnNlKTsKKyAgICBDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBtX2NmUmVzcG9uc2UuZ2V0KCk7CisjZWxzZQogICAg
IEFTU0VSVChtX25zUmVzcG9uc2UpOwogICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSA9
IFttX25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOworI2VuZGlmCiAKICAgICBpZiAoIWNmUmVz
cG9uc2UpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMDksNiArMTE0LDM1IEBAIENlcnRpZmlj
YXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm8KICNlbmRpZgogfQogCisjaWYgVVNFKENG
TkVUV09SSykKKworTlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25z
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAh
bV9pc051bGwpIHsKKyAgICAgICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKKyAgICAgICAgbV9jZlJl
c3BvbnNlID0gW21fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV07CisgICAgICAgIHJl
dHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7CisgICAgfQorCisgICAgaWYgKCFtX2NmUmVzcG9uc2Up
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpZiAoIW1fbnNSZXNwb25zZSkKKyAgICAgICAg
bV9uc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6
bV9jZlJlc3BvbnNlLmdldCgpXTsKKworICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Cit9
CisKK1Jlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNS
ZXNwb25zZSkKKyAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCisgICAgLCBtX2NmUmVz
cG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQorICAgICwgbV9uc1Jlc3BvbnNlKG5z
UmVzcG9uc2UpCit7CisgICAgbV9pc051bGwgPSAhbnNSZXNwb25zZTsKK30KKworI2Vsc2UKKwog
c3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNbXSA9IHsKICAgICBAIkFn
ZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwg
QCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEiCiB9OwpAQCAtMjA4LDYgKzI0
Miw4IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKICAgICByZXR1
cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5uc1VSTFJlc3BvbnNlKCk7CiB9CiAKKyNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1F1aWNrTG9vay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1F1aWNrTG9vay5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsMTAgQEAKICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmVm
UHRyLmg+CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgor
I2VuZGlmCisKIE9CSkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBP
QkpDX0NMQVNTIE5TRmlsZUhhbmRsZTsKQEAgLTc3LDYgKzgxLDkgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNy
ZWF0ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICos
IGlkIGRlbGVnYXRlKTsKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVm
KTsKKyNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBh
IHBsYXRmb3JtIHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogCkBAIC04OCw2ICs5NSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEZhaWwoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9u
c2UgKm5zUmVzcG9uc2UoKTsKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIENGVVJMUmVzcG9uc2VS
ZWYgY2ZSZXNwb25zZSgpOworI2VuZGlmCiAKICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRy
PFF1aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0JKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1F1aWNrTG9vay5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSw4MSBAQCBj
b25zdCBjaGFyKiBXZWJDb3JlOjpRTFByZXZpZXdQcm90b2NvbCgpCiAgICAgcmV0dXJuIHByZXZp
ZXdQcm90b2NvbC5nZXQoKS5kYXRhKCk7CiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorLy8gVGhl
IHdheSBRdWlja0xvb2sgd29ya3MgaXMgd2UgcGFzcyBpdCBhbiBOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZSBjYWxsYmFjayBvYmplY3QgYXQgY3JlYXRpb24KKy8vIHRpbWUuIFRoZW4gd2UgcGFzcyBp
dCBhbGwgdGhlIGRhdGEgYXMgd2UgcmVjZWl2ZSBpdC4gT25jZSB3ZSd2ZSBkb3dubG9hZGVkIHRo
ZSBmdWxsIFVSTCwKKy8vIFF1aWNrTG9vayB0dXJucyBhcm91bmQgYW5kIHNlbmQgdXMsIHRocm91
Z2ggdGhpcyBkZWxlZ2F0ZSwgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSB3aGljaCB3ZQor
Ly8gcGFzcyBvbiB0byBXZWJDb3JlLiBUaGUgZmxhZyBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRv
Q29udmVydGVyIGluIFF1aWNrTG9va0hhbmRsZSBkZWNpZGVzCisvLyB3aGV0aGVyIHRvIHBhc3Mg
dGhlIGRhdGEgdG8gUXVpY2tMb29rIG9yIFdlYkNvcmUuCisvLworLy8gVGhpcyB3b3JrcyBmaW5l
IHdoZW4gdXNpbmcgTlMgQVBJcywgYnV0IHdoZW4gdXNpbmcgQ0ZOZXR3b3JrLCB3ZSBkb24ndCBo
YXZlIGEgTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUuCisvLyBTbyB3ZSBjcmVhdGUgV2ViUXVpY2tM
b29rSGFuZGxlQXNEZWxlZ2F0ZSBhcyBhbiBpbnRlcm1lZGlhdGUgZGVsZWdhdGUgb2JqZWN0IGFu
ZCBwYXNzIGl0IHRvCisvLyBRTFByZXZpZXdDb252ZXJ0ZXIuIFRoZSBwcm94eSBkZWxlZ2F0ZSB0
aGVuIGZvcndhcmRzIHRoZSBtZXNzYWdlcyBvbiB0byB0aGUgQ0ZOZXR3b3JrIGNvZGUuCitAaW50
ZXJmYWNlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25u
ZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CisgICAgUmVm
UHRyPFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9j
b25uZWN0aW9uRGVsZWdhdGU7Cit9CisKKy0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRl
OihTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5l
Y3Rpb25EZWxlZ2F0ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlF1aWNrTG9va0hhbmRs
ZUFzRGVsZWdhdGUKKy0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0
ZQoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gY29ubmVjdGlvbkRlbGVnYXRl
OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGFBcnJheTooTlNBcnJheSAqKWRhdGFBcnJh
eQoreworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBpZiAoIW1fY29ubmVjdGlv
bkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xv
b2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KCkiKTsKKyAgICBtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGFBcnJheShyZWludGVycHJldF9jYXN0PENGQXJy
YXlSZWY+KGRhdGFBcnJheSkpOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVj
ZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAoreworICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47
CisgICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNl
aXZlRGF0YSgpIC0gZGF0YSBsZW5ndGggPSAlbGQiLCAobG9uZylbZGF0YSBsZW5ndGhdKTsKKwor
ICAgIC8vIFF1aWNrTG9vayBjb2RlIHNlbmRzIHVzIGEgbmlsIGRhdGEgYXQgdGltZXMuIFRoZSBj
aGVjayBiZWxvdyBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluCisgICAgLy8gUmVzb3VyY2VIYW5k
bGVNYWMuY3BwIGFkZGVkIGZvciBhIGRpZmZlcmVudCBidWcuCisgICAgaWYgKCFbZGF0YSBsZW5n
dGhdKQorICAgICAgICByZXR1cm47CisgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2Vp
dmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhKSwgc3RhdGljX2Nhc3Q8aW50
PihsZW5ndGhSZWNlaXZlZCkpOworfQorCistICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2Fk
aW5nOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCit7CisgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOworICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZp
bmlzaExvYWRpbmcoKSIpOworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGaW5pc2hMb2Fk
aW5nKCk7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKKyAgICAgICAg
cmV0dXJuOworICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6
ZGlkRmFpbCgpIik7CisgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZhaWwocmVpbnRlcnBy
ZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpOworfQorCistICh2b2lkKWRldGFjaEhhbmRsZQor
eworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsKK30KK0BlbmQKKyNlbmRpZgor
CiBAaW50ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVj
dCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRl
PiB7CiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBfcmVzb3VyY2VMb2FkZXI7CiAgICAgQk9P
TCBfaGFzU2VudERpZFJlY2VpdmVSZXNwb25zZTsKQEAgLTMzOSw2ICs0MTQsMjYgQEAgc3RkOjp1
bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMbwogICAgIHJldHVybiBxdWlja0xvb2tI
YW5kbGU7CiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9v
a0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0
aW9uRGVsZWdhdGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3sKKyAgICBBU1NFUlRf
QVJHKGhhbmRsZSwgaGFuZGxlKTsKKyAgICBpZiAoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1
ZXN0ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbiB8fCAhW1FMUHJldmll
d0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKUNG
VVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9y
ZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOworICAgIFdlYlF1aWNrTG9va0hh
bmRsZUFzRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tbV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6Y29ubmVjdGlvbkRlbGVnYXRlXSBh
dXRvcmVsZWFzZV07CisgICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gcXVpY2tM
b29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNV
UkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwgbnNSZXNwb25zZSwgZGVs
ZWdhdGUpKTsKKyAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUo
KnF1aWNrTG9va0hhbmRsZSk7CisgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsKK30KKworQ0ZV
UkxSZXNwb25zZVJlZiBRdWlja0xvb2tIYW5kbGU6OmNmUmVzcG9uc2UoKQoreworICAgIHJldHVy
biBbbV9uc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXTsKK30KKyNlbmRpZgorCiBib29sIFF1aWNr
TG9va0hhbmRsZTo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIHsKICAgICByZXR1cm4gW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNv
bnRhaW5zT2JqZWN0Om1pbWVUeXBlXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxl
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyAgUmVzb3VyY2VI
YW5kbGVJUGhvbmUubW0KKy8vICBXZWJDb3JlCisvLworLy8gIENvcHlyaWdodCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorCisjaWYgVVNFKENGTkVUV09SSykKKwor
I2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgorI2ltcG9ydCA8Rm91bmRh
dGlvbi9OU1VSTFJlcXVlc3RQcml2YXRlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NGTXV0YWJsZURpY3Rpb25hcnlSZWYgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBOU1N0cmluZyAqaG9zdCA9IHJlcXVlc3QudXJsKCku
aG9zdCgpOworICAgIE5TQXJyYXkgKmNlcnRBcnJheSA9IFtOU1VSTFJlcXVlc3QgYWxsb3dzU3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsKKyAgICBCT09MIGFsbG93c0FueUNl
cnRpZmljYXRlID0gW05TVVJMUmVxdWVzdCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dDpob3N0XTsKKyAgICBpZiAoIWNlcnRBcnJheSAmJiAhYWxsb3dzQW55Q2VydGlmaWNhdGUpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzc2xQcm9wcyA9
IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cyk7CisgICAgaWYgKGNlcnRBcnJheSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3Ns
UHJvcHMsIF9rQ0ZTdHJlYW1TU0xUcnVzdGVkTGVhZkNlcnRpZmljYXRlcywgKENGVHlwZVJlZikg
Y2VydEFycmF5KTsKKworICAgIGlmIChhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKKyAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIGtDRlN0cmVhbVNTTFZhbGlkYXRlc0NlcnRpZmlj
YXRlQ2hhaW4sIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgcmV0dXJuIHNzbFByb3BzOworfQorCit9
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVz
b3VyY2VSZXF1ZXN0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZXNvdXJj
ZVJlcXVlc3QuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKworQGludGVyZmFjZSBOU1VSTFJlcXVl
c3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMpCistIChDRlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVx
dWVzdDsKKy0gKGlkKV9pbml0V2l0aENGVVJMUmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVl
c3Q7CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRk5FVFdPUkspCisK
K1Jlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0
KQorICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCisgICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1
ZXN0IF9DRlVSTFJlcXVlc3RdKQorICAgICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KQoreworfQor
Cit2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0KCkKK3sKKyAgICBpZiAo
bV9jZlJlcXVlc3QpCisgICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZVVS
TFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0p
OworfQorCit2b2lkIFJlc291cmNlUmVxdWVzdDo6Y2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgp
Cit7CisgICAgLy8gVGhlcmUgaXMgY2xpZW50IGNvZGUgdGhhdCBleHRlbmRzIE5TVVJMUmVxdWVz
dCBhbmQgZXhwZWN0cyB0byBnZXQgYmFjaywgaW4gdGhlIGRlbGVnYXRlCisgICAgLy8gY2FsbGJh
Y2tzLCBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSB0aGF0IHRoZXkgcGFzc2VkIGludG8gV2Vi
S2l0LiBUbyBrZWVwIHRoZW4gcnVubmluZywgd2UKKyAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IG9m
IHRoZSBzYW1lIHR5cGUgYW5kIHJldHVybiB0aGF0LiBTZWUgPHJkYXI6Ly85ODQzNTgyPi4KKyAg
ICAvLyBBbHNvLCBkZXZlbG9wZXJzIHJlYWxseSByZWFsbHkgd2FudCBhbiBOU011dGFibGVVUkxS
ZXF1ZXN0IHNvIHRyeSB0byBjcmVhdGUgYW4KKyAgICAvLyBOU011dGFibGVVUkxSZXF1ZXN0IGlu
c3RlYWQgb2YgTlNVUkxSZXF1ZXN0LgorICAgIHN0YXRpYyBDbGFzcyBuc1VSTFJlcXVlc3RDbGFz
cyA9IFtOU1VSTFJlcXVlc3QgY2xhc3NdOworICAgIHN0YXRpYyBDbGFzcyBuc011dGFibGVVUkxS
ZXF1ZXN0Q2xhc3MgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBjbGFzc107CisgICAgQ2xhc3MgcmVx
dWVzdENsYXNzID0gW21fbnNSZXF1ZXN0LmdldCgpIGNsYXNzXTsKKworICAgIGlmICghbV9jZlJl
cXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChyZXF1ZXN0Q2xhc3MgJiYgcmVxdWVz
dENsYXNzICE9IG5zVVJMUmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc011dGFibGVV
UkxSZXF1ZXN0Q2xhc3MpCisgICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW3JlcXVlc3RD
bGFzcyBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Cisg
ICAgZWxzZQorICAgICAgICBtX25zUmVxdWVzdCA9IG51bGxwdHI7Cit9CisKKyNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRo
ZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkocmV2aXNpb24gMjA3NTcwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxOCBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJv
dGVjdGlvblNwYWNlLmg+CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2ltcG9ydCAiQ0ZOU1VSTENv
bm5lY3Rpb25TUEkuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGlu
dGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5T
T2JqZWN0IDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhl
bnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIENGVVJM
QXV0aENoYWxsZW5nZVJlZiBtX2NmQ2hhbGxlbmdlOworI2VuZGlmCiB9CiAtIChpZClpbml0V2l0
aEF1dGhlbnRpY2F0aW9uQ2xpZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAo
QXV0aGVudGljYXRpb25DbGllbnQqKWNsaWVudDsKQEAgLTk0LDEwICsxMDEsNDcgQEAgLSAodm9p
ZCljYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTgogICAgICAgICBtX2NsaWVudC0+cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29yZShjaGFsbGVuZ2UpKTsKIH0KIAorI2lmIFVTRShDRk5FVFdP
UkspCistICh2b2lkKXNldENGQ2hhbGxlbmdlOihDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2hhbGxl
bmdlCit7CisgICAgbV9jZkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKK30KKworLSAoQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmKWNmQ2hhbGxlbmdlCit7CisgICAgcmV0dXJuIG1fY2ZDaGFsbGVuZ2U7Cit9
CisjZW5kaWYKKwogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoQ0ZORVRX
T1JLKQorCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKK3sKKyAgICBXZWJDb3JlQXV0aGVudGljYXRpb25DbGll
bnRBc0NoYWxsZW5nZVNlbmRlciAqY2hhbGxlbmdlU2VuZGVyID0gKFdlYkNvcmVBdXRoZW50aWNh
dGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyKikgW21hY0NoYWxsZW5nZSBzZW5kZXJdOworICAg
IHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbY2hhbGxlbmdlU2VuZGVyIGNmQ2hhbGxl
bmdlXSwgW2NoYWxsZW5nZVNlbmRlciBjbGllbnRdKTsKK30KKworTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxl
bmdlKQoreworICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoQ2xpZW50ID0gY29yZUNoYWxs
ZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOworICAgIFJldGFpblB0cjxXZWJDb3JlQXV0aGVu
dGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlcj4gY2hhbGxlbmdlU2VuZGVyID0gYWRvcHRO
UyhbW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIGFsbG9jXSBp
bml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50OmF1dGhDbGllbnRdKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBhdXRoQ2hhbGxlbmdlID0gY29yZUNoYWxsZW5nZS5jZlVS
TEF1dGhDaGFsbGVuZ2VSZWYoKTsKKyAgICBpZiAoIWF1dGhDaGFsbGVuZ2UpCisgICAgICAgIGF1
dGhDaGFsbGVuZ2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UpKTsKKyAgICBbY2hh
bGxlbmdlU2VuZGVyLmdldCgpIHNldENGQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCldOwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIF9jcmVhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRo
Q2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNl
XTsKKyNlbHNlCisgICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfYXV0
aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQo
KSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07CisjZW5kaWYKK30K
KworI2Vsc2UKKwogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHBy
b3Bvc2VkQ3JlZGVudGlhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKQEAgLTE3MSw0ICsyMTUs
NiBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVuCiAgICAgcmV0dXJu
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0NoYWxsZW5nZSk7CiB9CiAKKyNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZp
c2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVKYXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxOSBAQAogI2ltcG9ydCAi
UGxhdGZvcm1Db29raWVKYXIuaCIKIAogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCi0jaW1wb3J0
ICJDb29raWUuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKICNpbXBvcnQgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFn
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKK30KKworI2lmICFVU0UoQ0ZORVRXT1JL
KQorCisjaW1wb3J0ICJDb29raWUuaCIKKyNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKKyNpbXBv
cnQgIlVSTC5oIgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE4NCw3ICsxOTEsNiBAQCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IE5ldHdvcmtTdG9yCiAgICAgTlNVUkwgKmNvb2tpZVVSTCA9IHVybDsKICAgICBO
U0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3Q6Y29va2llU3RyaW5nIGZvcktleTpAIlNldC1Db29raWUiXTsKIAotICAgIC8vIEZJWE1F
OiBJcyB0aGlzIG5lZWRlZCBvbiBpT1MsIHRvbz8KICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCiAgICAgTlNBcnJheSAqdW5maWx0
ZXJlZENvb2tpZXMgPSBbTlNIVFRQQ29va2llIF9wYXJzZWRDb29raWVzV2l0aFJlc3BvbnNlSGVh
ZGVyRmllbGRzOmhlYWRlckZpZWxkcyBmb3JVUkw6Y29va2llVVJMXTsKICNlbHNlCkBAIC0yNTQs
MTUgKzI2MCw2IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2UKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1zdGF0aWMgTlNIVFRQQ29va2llU3Rv
cmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24p
Ci17Ci0gICAgYXV0byBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0g
ICAgaWYgKCFjb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBD
b29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjb29raWVTdG9yYWdlKQotICAgICAgICBy
ZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOwotICAg
IAotICAgIHJldHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhU
VFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLX0KLQog
dm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgQ29va2llJiBjb29raWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwpAQCAtMjgzLDEwICsyODAsMTIgQEAgdm9pZCBhZGRDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaQogICAgICAgICBOU0hUVFBDb29raWVFeHBpcmVzOiBbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmNvb2tpZS5leHBpcmVzIC8gMTAwMC4wXSwK
ICAgICB9XTsKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghY29va2llU3RvcmFnZSkg
ewogICAgICAgICBbV2ViQ29yZTo6Y29va2llU3RvcmFnZShzZXNzaW9uKSBzZXRDb29raWU6aHR0
cENvb2tpZV07CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCiAKICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llKGNvb2tpZVN0b3JhZ2UuZ2V0
KCksIFtodHRwQ29va2llIF9DRkhUVFBDb29raWVdKTsKIApAQCAtMzEwLDYgKzMwOSwyMSBAQCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhCiAgICAgd2tEZWxldGVBbGxI
VFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiB9CiAKK30KKworI2Vu
ZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBO
U0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbikKK3sKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tp
ZVN0b3JhZ2UoKTsKKyAgICBpZiAoIWNvb2tpZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tpZVN0b3Jh
Z2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29raWVTdG9yYWdlID09IGNvb2tpZVN0b3Jh
Z2UpCisgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2ll
U3RvcmFnZV07CisKKyAgICByZXR1cm4gW1tbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2lu
aXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVTdG9yYWdlLmdldCgpXSBhdXRvcmVsZWFz
ZV07Cit9CisKIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMzM5LDYgKzM1Myw3IEBAIHZv
aWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXQKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogfQogCisKIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVQb2ludCkKIHsKICAgICBpZiAoIVtOU0hUVFBDb29raWVT
dG9yYWdlIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVDb29raWVz
U2luY2VEYXRlOildKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0JKHJldmlzaW9uIDIwNzU3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9y
YWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAorI2lmICFVU0UoQ0ZORVRX
T1JLKQorCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbmNsdWRlICJDcmVkZW50
aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCkBAIC01MCwzICs1Miw1IEBAIHZv
aWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnQKICNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJl
YW1NYWMuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
MTAgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIEZvcm1EYXRh
U3RyZWFtTWFjX2gKKyNkZWZpbmUgRm9ybURhdGFTdHJlYW1NYWNfaAorCisjaWYgIVVTRShDRk5F
VFdPUkspCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0zNywxMSArNDAsMTUgQEAg
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEZvcm1EYXRhOworICAgIGNsYXNzIEZvcm1EYXRhOwogCi12b2lkIHNl
dEhUVFBCb2R5KE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEqKTsKLUZvcm1EYXRhKiBo
dHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmVhbSAqKTsKKyAgICB2b2lkIHNldEhUVFBCb2R5
KE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEqKTsKKyAgICBGb3JtRGF0YSogaHR0cEJv
ZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7CiAKLUNGU3RyaW5nUmVmIGZvcm1EYXRhU3Ry
ZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CisgICAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1M
ZW5ndGhQcm9wZXJ0eU5hbWUoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gIVVTRShDRk5FVFdPUkspCisKKyNlbmRpZiAvLyBGb3JtRGF0YVN0cmVhbU1hY19oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3Jt
RGF0YVN0cmVhbU1hYy5tbQkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJl
YW1NYWMuaCIKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQorCiAjaW1wb3J0ICJGb3JtRGF0YS5oIgog
I2ltcG9ydCAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogCkBAIC00OSwzICs1MSw1IEBAIEZvcm1E
YXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmUKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0J
KHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAKKyNpZiBQTEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCisjaW1w
b3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+CisjZW5kaWYKKwogQGludGVyZmFj
ZSBOU0Vycm9yIChXZWJFeHRyYXMpCiAtIChOU1N0cmluZyAqKV93ZWJfbG9jYWxpemVkRGVzY3Jp
cHRpb247CiBAZW5kCkBAIC04Nyw2ICs5MSw4NSBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2Rlcjoo
TlNDb2RlciAqKWNvZGVyCiAKIEBlbmQKIAorCisjaWYgVVNFKENGTkVUV09SSykKK3N0YXRpYyBO
U0Vycm9yICpOU0Vycm9yRnJvbUNGRXJyb3IoQ0ZFcnJvclJlZiBjZkVycm9yLCBOU1VSTCAqdXJs
KQoreworICAgIENGSW5kZXggZXJyQ29kZSA9IENGRXJyb3JHZXRDb2RlKGNmRXJyb3IpOworICAg
IGlmIChDRkVxdWFsKENGRXJyb3JHZXREb21haW4oY2ZFcnJvciksIGtDRkVycm9yRG9tYWluQ0ZO
ZXR3b3JrKSAmJiBlcnJDb2RlIDw9IGtDRlVSTEVycm9yVW5rbm93biAmJiBlcnJDb2RlID4gLTQw
MDApIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhbiBVUkwgZXJyb3IgYW5kIG5lZWRzIHRvIGJlIHRy
YW5zbGF0ZWQgdG8gdGhlIE5TVVJMRXJyb3JEb21haW4KKyAgICAgICAgaWQga2V5c1sxMF0sIHZh
bHVlc1sxMF07CisgICAgICAgIENGRGljdGlvbmFyeVJlZiB1c2VySW5mbyA9IENGRXJyb3JDb3B5
VXNlckluZm8oY2ZFcnJvcik7CisgICAgICAgIE5TRXJyb3IgKnJlc3VsdDsKKyAgICAgICAgTlNJ
bnRlZ2VyIGNvdW50ID0gMDsKKworICAgICAgICBpZiAodXJsKSB7CisgICAgICAgICAgICBrZXlz
W2NvdW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JLZXk7CisgICAgICAgICAgICB2YWx1
ZXNbY291bnRdID0gdXJsOworICAgICAgICAgICAgY291bnQgKys7CisKKyAgICAgICAgICAgIGtl
eXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleTsKKyAgICAgICAg
ICAgIHZhbHVlc1tjb3VudF0gPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIGNv
dW50ICsrOworICAgICAgICB9CisKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rp
b25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSk7
CisgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7CisgICAgICAgICAgICBrZXlzW2NvdW50XSA9
IE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk7CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
dXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkRmFpbHVyZVJlYXNvbktleSk7CisgICAgICAgIGlm
ICh2YWx1ZXNbY291bnRdKSB7CisgICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TTG9jYWxpemVk
RmFpbHVyZVJlYXNvbkVycm9yS2V5OworICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgIH0K
KworICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJ
bmZvLCBrQ0ZFcnJvckxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbktleSk7CisgICAgICAgIGlm
ICh2YWx1ZXNbY291bnRdKSB7CisgICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TTG9jYWxpemVk
UmVjb3ZlcnlTdWdnZXN0aW9uRXJyb3JLZXk7CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAg
ICAgfQorCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGlmICh1
c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2Vy
SW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyQ2VydGlmaWNhdGVzKSkgIT0gbmlsKSB7Cisg
ICAgICAgICAgICAvLyBOZWVkIHRvIHRyYW5zbGF0ZSB0aGUgY2VydAorICAgICAgICAgICAga2V5
c1tjb3VudF0gPSBAIk5TRXJyb3JQZWVyQ2VydGlmaWNhdGVDaGFpbktleSI7CisgICAgICAgICAg
ICBjb3VudCArKzsKKworICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25h
cnlHZXRWYWx1ZSh1c2VySW5mbywgX2tDRlN0cmVhbVByb3BlcnR5U1NMQ2xpZW50Q2VydGlmaWNh
dGVzKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7CisgICAgICAgICAgICAgICAg
a2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKKyAgICAg
ICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFsdWVz
W2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywgX2tDRlN0cmVhbVBy
b3BlcnR5U1NMQ2xpZW50Q2VydGlmaWNhdGVTdGF0ZSk7CisgICAgICAgICAgICBpZiAodmFsdWVz
W2NvdW50XSkgeworICAgICAgICAgICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9yQ2xpZW50
Q2VydGlmaWNhdGVTdGF0ZUtleSI7CisgICAgICAgICAgICAgICAgY291bnQgKys7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAgICAg
ICBpZiAodXNlckluZm8gJiYgKHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUodXNlckluZm8sIGtDRlN0cmVhbVByb3BlcnR5U1NMUGVlclRydXN0KSkgIT0gbmlsKSB7Cisg
ICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMUGVlclRydXN0RXJy
b3JLZXk7CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAga2V5c1tj
b3VudF0gPSBOU1VuZGVybHlpbmdFcnJvcktleTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IChp
ZCljZkVycm9yOworICAgICAgICBjb3VudCArKzsKKworICAgICAgICByZXN1bHQgPSBbV2ViQ3Vz
dG9tTlNVUkxFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOihlcnJD
b2RlID09IGtDRlVSTEVycm9yVW5rbm93biA/IChDRkluZGV4KU5TVVJMRXJyb3JVbmtub3duIDog
ZXJyQ29kZSkgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHM6dmFs
dWVzIGZvcktleXM6a2V5cyBjb3VudDpjb3VudF1dOworICAgICAgICBpZiAodXNlckluZm8pCisg
ICAgICAgICAgICBDRlJlbGVhc2UodXNlckluZm8pOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICByZXR1cm4gKE5TRXJyb3IgKiljZkVycm9yOworfQorI2VuZGlmIC8vIFVTRShD
Rk5FVFdPUkspCisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTEwNyw2ICsxOTAsNTMgQEAgc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVO
U0Vycm9yRgogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21h
aW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkg
dXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAorI2lmIFVTRShDRk5FVFdPUkspCisKK1Jl
c291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqZXJyb3IpCisgICAgOiBSZXNvdXJj
ZUVycm9yQmFzZShUeXBlOjpOdWxsKQorICAgICwgbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKKyAg
ICAsIG1fcGxhdGZvcm1FcnJvcihyZWludGVycHJldF9jYXN0PENGRXJyb3JSZWY+KGVycm9yKSkK
K3sKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHNldFR5cGUoKFtlcnJvciBjb2RlXSA9PSBOU1VS
TEVycm9yVGltZWRPdXQpID8gVHlwZTo6VGltZW91dCA6IFR5cGU6OkdlbmVyYWwpOworfQorCitO
U0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxs
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKworICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvcikKKyAgICAgICAgcmV0dXJu
IG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOworCisgICAgaWYgKG1fcGxhdGZvcm1FcnJvcikgewor
ICAgICAgICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0Zm9ybUVycm9yLmdldCgpOworICAgICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZFcnJvckNv
cHlVc2VySW5mbyhlcnJvcikpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgbV9wbGF0Zm9y
bU5TRXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJyb3IsIChOU1VSTCAqKVsoTlNEaWN0aW9u
YXJ5ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5OihpZCkga0NGVVJMRXJyb3JGYWlsaW5n
VVJMRXJyb3JLZXldKTsKKyAgICAgICAgLy8gSWYgTlNFcnJvckZyb21DRkVycm9yIGNyZWF0ZWQg
YSBuZXcgTlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0LgorICAgICAgICBpZiAobV9wbGF0Zm9y
bU5TRXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJvcikKKyAgICAgICAgICAgIHJldHVybiBt
X3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKKworICAgICAgICAvLyBPdGhlcndpc2UgZmFsbCB0aHJv
dWdoIHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20gdGhlIENGRXJyb3IuCisjZW5kaWYKKyAg
ICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdp
dGhEb21haW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERvbWFpbihlcnJvcikgY29kZTpDRkVycm9y
R2V0Q29kZShlcnJvcikgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpXSk7
CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKKyAgICB9CisKKyAgICBt
X3BsYXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoKnRo
aXMpOworICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKK30KKworUmVzb3VyY2VF
cnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnNFcnJvcigp
OworfQorCisjZWxzZQorCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKm5z
RXJyb3IpCiAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShUeXBlOjpOdWxsKQogICAgICwgbV9kYXRh
SXNVcFRvRGF0ZShmYWxzZSkKQEAgLTE3OSw0ICszMDksNiBAQCBSZXNvdXJjZUVycm9yOjpvcGVy
YXRvciBDRkVycm9yUmVmKCkgY29uCiAgICAgcmV0dXJuIGNmRXJyb3IoKTsKIH0KIAorI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgsNiAr
NTgsMTYgQEAKICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCisjaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQorI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KKyNlbmRpZgor
dHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOworZXh0
ZXJuICJDIiB7CitDRkRpY3Rpb25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRh
KENGVVJMQ29ubmVjdGlvblJlZik7Cit9CisjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKwogI2lm
IFBMQVRGT1JNKElPUykKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCkBAIC04MCw2ICs5MCw4IEBAIC0oaWQpX2luaXRXaXRoUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmUKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAorI2lm
ICFVU0UoQ0ZORVRXT1JLKQorICAgIAogc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRp
b25IZWFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQogewogICAgIFN0cmluZyBhdXRoZW50aWNhdGlvbkhlYWRlciA9ICJCYXNpYyAiICsg
YmFzZTY0RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwu
cGFzc3dvcmQoKSkudXRmOCgpKTsKQEAgLTMxNyw2ICszMjksOCBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24gc2V0RGVm
ZXJzQ2FsbGJhY2tzOmRlZmVyc107CiB9CiAKKyNpZiAhVVNFKENGTkVUV09SSykKKwogdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAgIE5TUnVu
TG9vcCAqcnVuTG9vcCA9IHBhaXIubnNSdW5Mb29wKCk7CkBAIC0zMzUsNiArMzQ5LDggQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZQogICAgICAgICBbZC0+bV9jb25u
ZWN0aW9uLmdldCgpIHVuc2NoZWR1bGVGcm9tUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3Ry
aW5nICopcGFpci5tb2RlKCldOwogfQogCisjZW5kaWYKKwogaWQgUmVzb3VyY2VIYW5kbGU6Om1h
a2VEZWxlZ2F0ZShib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogewogICAgIEFTU0VS
VCghZC0+bV9kZWxlZ2F0ZSk7CkBAIC03MTQsMTQgKzczMCwyNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlCiAKICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVX
aWxsQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0KKyAgICAKKyNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKKyAgICAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKKworI2lmIFVTRShDRk5FVFdP
UkspCisgICAgCit2b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShD
RlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgTmV0d29ya0xvYWRUaW1pbmcmIHRpbWluZykK
K3sKKyAgICBjb3B5VGltaW5nRGF0YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5KilhZG9wdENGKF9D
RlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCksIHRpbWluZyk7
Cit9CisgICAgCisjZWxzZQogICAgIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlv
blRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOZXR3b3JrTG9hZFRpbWlu
ZyYgdGltaW5nKQogewogICAgIGNvcHlUaW1pbmdEYXRhKFtjb25uZWN0aW9uIF90aW1pbmdEYXRh
XSwgdGltaW5nKTsKIH0KICAgICAKKyNlbmRpZgorICAgIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
VElNSU5HKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1t
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK0BpbnRl
cmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQorLSAoQ0ZVUkxSZXF1
ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7CistIChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6KENGVVJM
UmVxdWVzdFJlZilyZXF1ZXN0OworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorCitSZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJl
cXVlc3QgKm5zUmVxdWVzdCkKKyAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQorICAgICwgbV9j
ZlJlcXVlc3QoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKKyAgICAsIG1fbnNSZXF1ZXN0KG5z
UmVxdWVzdCkKK3sKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVz
dCgpCit7CisgICAgaWYgKG1fY2ZSZXF1ZXN0KQorICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0
TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVz
dC5nZXQoKV0pOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMDc1NzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAKKyNpZiAhVVNFKENG
TkVUV09SSykKKwogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM2LDEwICszOCwxNCBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVy
Q2xpZW50OjpkaWRSZWNlaXZlCiAgICAgW2NoYWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiB9CiAKKyNpZiAhVVNFKENGTkVUV09SSykKIFJlc291
cmNlRXJyb3IgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJv
cigpCiB7CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gYWRvcHROUyhbW05TRXJyb3Ig
YWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQmFk
U2VydmVyUmVzcG9uc2UgdXNlckluZm86bmlsXSk7CiAgICAgcmV0dXJuIGVycm9yLmdldCgpOwog
fQorI2VuZGlmCiAKIH0KKworI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3NTcwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAorI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlX2gKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VI
YW5kbGU7CkBAIC0zMyw4ICszNCwxMyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIC0gKHZvaWQp
ZGV0YWNoSGFuZGxlOwogQGVuZAogCisjaWYgIVVTRShDRk5FVFdPUkspCisKIEBpbnRlcmZhY2Ug
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CiB9CiAtIChpZClpbml0V2l0aEhhbmRsZTooV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRsZTsKIEBlbmQKKworI2VuZGlmIC8vICFVU0UoQ0ZO
RVRXT1JLKQorI2VuZGlmIC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lvbiAy
MDc1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUuaCIKIAorI2lmICFVU0UoQ0ZORVRXT1JLKQorCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKQEAgLTI3NCwzICsyNzYsNiBAQCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29u
bmVjdGlvbjooTlNVCiB9CiAKIEBlbmQKKworI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQorCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDEwIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCisjZGVmaW5lIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCisKKyNpZiAhVVNFKENG
TkVUV09SSykKIAogI2luY2x1ZGUgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIK
ICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgpAQCAtNTUsMyArNTgsNiBAQCBAaW50ZXJm
YWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0CiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNv
dXJjZUhhbmRsZVdpdGhDcmVkZW50aWFsU3RvcmFnZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6
IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZQogCiBAZW5kCisK
KyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNp
b24gMjA3NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oIgogCisjaWYgIVVTRShDRk5F
VFdPUkspCisKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJB
dXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMzI3LDMgKzMyOSw2
IEBAIC0gKEJPT0wpY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG8KIH0KIAogQGVuZAor
CisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVVUkxSZXNwb25zZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw3IEBAIHZv
aWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3AKIH0KICNlbmRpZgogCisjaWYg
IVVTRShDRk5FVFdPUkspCiBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25z
ZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAqY3VycmVudFJlcXVlc3QsIE5TVVJMUmVxdWVzdCAq
bmV3UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAo
cmVkaXJlY3RSZXNwb25zZSkKQEAgLTMzOCw1ICszMzksNiBAQCBOU1VSTFJlc3BvbnNlICpzeW50
aGVzaXplUmVkaXJlY3RSZXNwb25zCiAgICAgTlNEaWN0aW9uYXJ5ICpzeW50aGVzaXplZFJlc3Bv
bnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2NhdGlvbiI6IFtbbmV3UmVxdWVzdCBVUkxdIGFic29s
dXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9sIjogQCJuby1zdG9yZSIgfTsKICAgICByZXR1cm4g
W1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltjdXJyZW50UmVxdWVzdCBV
UkxdIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOihOU1N0cmluZyAqKWtDRkhUVFBWZXJzaW9u
MV8xIGhlYWRlckZpZWxkczpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzXSBhdXRvcmVs
ZWFzZV07CiB9CisjZW5kaWYKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgotI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
I2lmICFVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKICNlbmRpZgog
CkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyBzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVS
TCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiB2b2lkIGdldFN1cHBv
cnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKLSNp
ZiAhVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiAhVVNFKENGTkVUV09SSykKIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyKSB7IG5vdEltcGxl
bWVudGVkKCk7IH0KIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKSB7IG5vdEltcGxl
bWVudGVkKCk7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJD
b3JlVGVzdFN1cHBvcnRQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDkgQEAKICNkZWZpbmUgT0JTT0xFVEVfQ09MT1JTWU5D
X0FQSQogI2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShD
Rk5FVFdPUkspCisvKiBXaW5kb3dzIGRvZXNuJ3QgaW5jbHVkZSBDRk5ldHdvcmsuaCB2aWEgQ29y
ZVNlcnZpY2VzLmgsIHNvIHdlIGRvCisgICBpdCBleHBsaWNpdGx5IGhlcmUgdG8gbWFrZSBXaW5k
b3dzIG1vcmUgY29uc2lzdGVudCB3aXRoIE1hYy4gKi8KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZO
ZXR3b3JrLmg+CiAvLyBPbiBXaW5kb3dzLCBkaXNwYXRjaC5oIG5lZWRzIHRvIGJlIGluY2x1ZGVk
IGJlZm9yZSBjZXJ0YWluIENGTmV0d29yayBoZWFkZXJzLgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rp
c3BhdGNoLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxNi0xMC0x
OSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmVydCByMjA3MTUxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjM2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya0xvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29j
b2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENy
ZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2Vp
dmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBT
aGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2
LTEwLTE5ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDc1NTcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5
LDggKzc5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVmKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCisgICAgdm9pZCB3aWxsQ2FjaGVSZXNw
b25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
Zikgb3ZlcnJpZGU7CisjZWxzZQogICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAj
ZW5kaWYKKyNlbmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
ICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShi
b29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsMTAgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlm
CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2Fk
UHJpdi5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IH0KQEAgLTEzNSw2ICsxMzksOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXS0Rvd25sb2Fk
QXNEZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCisjaWYgVVNFKENGTkVUV09S
SykKKyAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKKyNlbmRpZgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3du
bG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3Vy
Y2VIYW5kbGU7CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkTmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9h
ZE1hYy5tbQkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgogCi0jaWYg
IVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgIVVTRShDRk5FVFdPUkspICYmICFVU0UoTkVUV09S
S19TRVNTSU9OKQogCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CkBAIC0yNzIsNCArMjcyLDQg
QEAgLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sbwogCiBAZW5kCiAKLSNl
bmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykg
JiYgIVVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCShyZXZpc2lvbiAyMDc1NzApCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIK
KwogI2ltcG9ydCAiTmV0d29ya0xvYWQuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9DRk5ldHdvcmtT
UEkuaD4KQEAgLTMzLDYgKzM0LDE3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAorI2lmIFVTRShDRk5FVFdPUkspCisKK3ZvaWQgTmV0d29ya0xvYWQ6
OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQoreworICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBo
YW5kbGUgPT0gbV9oYW5kbGUpOworCisgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVz
cG9uc2UoY2ZSZXNwb25zZSk7Cit9CisKKyNlbHNlCisKIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxD
YWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNw
b25zZSAqbnNSZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09
IG1faGFuZGxlKTsKQEAgLTQwLDQgKzUyLDYgQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hl
UmVzcG9uc2VBc3luYwogICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKG5z
UmVzcG9uc2UpOwogfQogCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKICAgICBlbmNvZGVy
IDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBkZWZhdWx0UmVx
dWVzdFRpbWVvdXRJbnRlcnZhbDsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZUlk
ZW50aWZpZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI0MCw3ICsyNDAsNyBA
QCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVl
c3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA3NTcw
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRl
cnZhbDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRo
ZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0J
KHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlv
bi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIsMjcgKzMyLDM3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkK
IHsKKyNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2Vu
ZGVyKCkgdXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKV07CisjZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7CisjaWYgIVVTRShD
Rk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOworI2VuZGlmCiB9CiAK
IHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7CisjaWYg
IVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CisjZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Cisj
aWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigp
IHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOworI2VuZGlm
CiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJlamVj
dGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpCiB7CisjaWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LnNlbmRlcigpIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTph
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwor
I2VuZGlmCiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAorI2lmIFVTRShDRk5F
VFdPUkspCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+CisjZW5kaWYKKwogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL0FWRm91
bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oPgpAQCAtNTMsNiArNTcsMzYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBJUEMgewogCisjaWYgVVNFKENGTkVUV09SSykKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit7CisgICAgUmV0YWluUHRyPENGVVJM
UmVxdWVzdFJlZj4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0LmNmVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKworICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudCA9
IHJlcXVlc3RUb1NlcmlhbGl6ZTsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3RJc1ByZXNlbnQ7CisK
KyAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdl
IGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCisg
ICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRvLCBhcyBzdHJlYW1zIGNh
biBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMgbmV0d29ya2luZy4KKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJvZHkgPSBhZG9wdENGKENGVVJMUmVxdWVz
dENvcHlIVFRQUmVxdWVzdEJvZHkocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7CisgICAgUmV0
YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhUVFBCb2R5U3RyZWFtID0gYWRvcHRDRihD
RlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVlc3RUb1NlcmlhbGl6ZS5n
ZXQoKSkpOworICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkgfHwgcmVxdWVzdEhUVFBCb2R5U3RyZWFt
KSB7CisgICAgICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0YWJsZVJlcXVlc3QgPSBDRlVS
TFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCByZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpOwor
ICAgICAgICByZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9wdENGKG11dGFibGVSZXF1ZXN0KTsKKyAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KG11dGFibGVSZXF1ZXN0LCBuaWwp
OworICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHlTdHJlYW0obXV0YWJsZVJl
cXVlc3QsIG5pbCk7CisgICAgfQorCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGlj
dGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNl
bnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigp
KSk7CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CisKKyAgICAv
LyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVlc3QsIGJ1dCBpdCBpcyBu
b3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0
aW9uLgorICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJl
c291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7Cit9CisjZWxzZQogdm9pZCBBcmd1bWVudENvZGVy
PFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBSZXRhaW5QdHI8
TlNVUkxSZXF1ZXN0PiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxS
ZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwpAQCAtNzksNiArMTEzLDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuYwogICAgIGVuY29kZXIuZW5jb2RlRW51bShy
ZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNv
dXJjZVJlcXVlc3QuY2FjaGVQb2xpY3koKSk7CiB9CisjZW5kaWYKIAogYm9vbCBBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVy
LCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKQEAgLTk1LDExICsxMzAsMTkg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlYwogICAgIGlmICghSVBD
OjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
I2lmIFVTRShDRk5FVFdPUkspCisgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxS
ZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXBy
ZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwor
ICAgIGlmICghY2ZVUkxSZXF1ZXN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXNv
dXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1ZXN0LmdldCgpKTsKKyNlbHNl
CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gV0tOU1VSTFJlcXVl
c3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0
b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxSZXF1ZXN0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QobnNVUkxS
ZXF1ZXN0LmdldCgpKTsKKyNlbmRpZgogICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkp
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUwLDYgKzEwNTAsNyBA
QAogCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRJRC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RjcxQzIzRjg0MzAwRDQx
MTgzIC8qIERvd25sb2FkSUQuaCAqLzsgfTsKIAkJNUMxNDI3MDYxQzIzRjg0QzAwRDQxMTgzIC8q
IERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzE0MjZGODFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNw
cCAqLzsgfTsKIAkJNUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2Rjkx
QzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oICovOyB9OworCQk1QzE0MjcxMTFD
MjNGODlFMDBENDExODMgLyogRG93bmxvYWRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRDFDMjNGODg1MDBENDExODMgLyogRG93bmxv
YWRJT1MubW0gKi87IH07CiAJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZE1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQy
NzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLzsgfTsKIAkJNUMxNDI3MTMx
QzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93
bmxvYWRDb2NvYS5tbSAqLzsgfTsKIAkJNUMxNDI3MTgxQzIzRjhCNzAwRDQxMTgzIC8qIEN1c3Rv
bVByb3RvY29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
ci5oICovOyB9OwpAQCAtMzEzMSw2ICszMTMyLDcgQEAKIAkJNUMxNDI2RjgxQzIzRjg0MzAwRDQx
MTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
MTQyNkY5MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRG93bmxvYWRNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDMTQyNzA5MUMyM0Y4NjkwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRDb2NvYS5tbTsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzE0MjcwRDFDMjNGODg1MDBENDExODMgLyogRG93
bmxvYWRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3du
bG9hZElPUy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJ
T1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzBGMUMyM0Y4OTkwMEQ0
MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IERvd25sb2FkTWFjLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MTQx
QzIzRjhCMDAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MTUxQzIzRjhCMDAwRDQxMTgzIC8qIEN1c3Rv
bVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDdXN0
b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTc0MSw2ICs1NzQzLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUMxNDI3MDgxQzIzRjg1MjAwRDQxMTgzIC8qIGNvY29h
ICovLAorCQkJCTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8sCiAJCQkJNUMxNDI3
MEIxQzIzRjg3MTAwRDQxMTgzIC8qIG1hYyAqLywKIAkJCQk4M0JGQUM0MTFEOTYxMzYwMDA0MzM0
OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLywKIAkJCQk4M0JGQUM0MDFEOTYxMzYwMDA0
MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggKi8sCkBAIC01NzgxLDYgKzU3ODQsMTQgQEAK
IAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1QzE0
MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1QzE0MjcwRDFDMjNGODg1MDBENDExODMgLyogRG93bmxvYWRJ
T1MubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTVDMTQyNzFBMUMyM0Y4QkYwMEQ0MTE4MyAvKiBDb2NvYSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MDg5LDYgKzkxMDAsNyBAQAog
CQkJCTVDMTQyNzAxMUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMURGNjMxMjE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1QzE0MjcxMzFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDMTQyNzExMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3du
bG9hZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4MyAv
KiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzA2MUMyM0Y4NEMwMEQ0
MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q0Q0Ix
Mjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0xOSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmVydCByMjA3MTUxCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisKIDIwMTYtMTAtMTQgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggQ01ha2UgYnVp
bGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGVMCiAgICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7
CiAgICAgaG9zdC0+c2NoZWR1bGUocmVzb3VyY2VMb2FkZXIsIHByaW9yaXR5KTsKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIGlmIChSZXNvdXJjZVJlcXVlc3Q6OnJlc291cmNlUHJp
b3JpdGllc0VuYWJsZWQoKSAmJiAhaXNTdXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkpIHsKICAg
ICAgICAgLy8gU2VydmUgYWxsIHJlcXVlc3RzIGF0IG9uY2UgdG8ga2VlcCB0aGUgcGlwZWxpbmUg
ZnVsbCBhdCB0aGUgbmV0d29yayBsYXllci4KICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBj
b2RlIGRvIGFueXRoaW5nIHVzZWZ1bCwgZ2l2ZW4gdGhhdCB3ZSBhbHNvIHNldCBtYXhSZXF1ZXN0
c0luRmxpZ2h0UGVySG9zdCB0byBlZmZlY3RpdmVseSB1bmxpbWl0ZWQgb24gdGhlc2UgcGxhdGZv
cm1zPwpJbmRleDogU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJL
aXQvY2YvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMTAt
MTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZlcnQgcjIwNzE1MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisKIDIw
MTYtMTAtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3Bw
CShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAog
Ly8gYmVmb3JlIGluY2x1ZGluZyBhbnkgb3RoZXIgZmlsZXMuIEZhaWxpbmcgdG8gaW5jbHVkZSBj
b25maWcuaCB3aWxsIGxlYXZlCiAvLyBVU0VfQ0YgdW5kZWZpbmVkLCBjYXVzaW5nIGJ1aWxkIGZh
aWx1cmVzIGluIHRoaXMKIC8vIGZpbGUuIEJ1dCBNYWMgZG9lc24ndCBoYXZlIGEgY29uZmlnLmgg
Zm9yIFdlYktpdCwgc28gd2UgY2FuJ3QgaW5jbHVkZSB0aGUKLS8vIFdpbmRvd3Mgb25lIGhlcmUu
IEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBtYW51YWxseSwKLS8vIGJ1dCB3ZSBu
ZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlvbi4KKy8vIFdpbmRvd3Mgb25lIGhlcmUuIEZv
ciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBhbmQKKy8vIFVTRV9DRk5FVFdPUksgbWFu
dWFsbHksIGJ1dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlvbi4KICNpZm5kZWYg
VVNFX0NGCiAjZGVmaW5lIFVTRV9DRiAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJEb3dubG9h
ZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWQgX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVj
dGlvbjpyZXF1ZXN0OnJlc3BvbnNlOmRlbGVnYXRlOnByb3h5Ol0pOgorICAgICAgICAqIE1pc2Mv
V2ViRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9h
ZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxvb3A6Zm9yTW9kZTpdKToK
KyAgICAgICAgKC1bV2ViVmlldyB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6Zm9yTW9kZTpdKToKKwog
MjAxNi0xMC0xOSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA3NTU3LgpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJEb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYkRvd25sb2FkLm1tCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYkRvd25sb2FkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMSBAQAog
CiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorI2lt
cG9ydCA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29u
bmVjdGlvbi5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAY2xhc3Mg
TlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eTsKQEAgLTU2LDYgKzYxLDE0IEBAIC0gKGlkKV9p
bml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXIKICAgICAgICAgICAgICAgZGVsZWdhdGU6
KGlkKWRlbGVnYXRlCiAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9y
eTsKIAorI2lmIFVTRShDRk5FVFdPUkspCistIChpZClfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25u
ZWN0aW9uOihDRlVSTENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OihOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVBy
b3h5ICopcHJveHk7CisjZW5kaWYKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkSW50
ZXJuYWwgOiBOU09iamVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPgpAQCAtMjE4LDYgKzIzMSwx
OCBAQCAtIChpZClfaW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlvbjooTlNVUkxDCiAgICAgcmV0dXJu
IFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVx
dWVzdCByZXNwb25zZTpyZXNwb25zZSBkZWxlZ2F0ZTpfd2ViSW50ZXJuYWwgcHJveHk6cHJveHld
OwogfQogCisjaWYgVVNFKENGTkVUV09SSykKKy0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENv
bm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
UHJveHkgKilwcm94eQoreworICAgIFtzZWxmIF9zZXRSZWFsRGVsZWdhdGU6ZGVsZWdhdGVdOwor
ICAgIHJldHVybiBbc3VwZXIgX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0
aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBkZWxlZ2F0ZTpfd2ViSW50ZXJu
YWwgcHJveHk6cHJveHldOworfQorI2VuZGlmCisKIC0gKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRl
CiAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgJKHJldmlzaW9uIDIw
NzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNywxMCBAQAogKi8KICAKICNpbXBvcnQgPFdlYktpdExl
Z2FjeS9XZWJEb3dubG9hZC5oPgorCisjaWYgVVNFKENGTkVUV09SSykKKyNpbXBvcnQgPENGTmV0
d29yay9DRlVSTENvbm5lY3Rpb24uaD4KKyNlbmRpZgogIAogQGludGVyZmFjZSBXZWJEb3dubG9h
ZCAoV2ViRG93bmxvYWRDcmVhdGlvbikKICsoaWQpX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCkBAIC0zOSw0ICs0MywxMiBAQCBAaW50
ZXJmYWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0CiAgICAgICAgICAgICAgICAgIGRl
bGVnYXRlOihpZClkZWxlZ2F0ZQogICAgICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcg
KilkaXJlY3Rvcnk7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQorKyAoaWQpX2Rvd25sb2FkV2l0aExv
YWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJl
cXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJl
c3BvbnNlUmVmKXJlc3BvbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxl
Z2F0ZTooaWQpZGVsZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b3h5OihpZClwcm94eTsKKyNlbmRpZgorCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2
aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsMTMgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZQogCiAgICAgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSA9IG1haW5SZXNvdXJjZUxvYWRlci0+aGFuZGxlKCk7CiAKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQorICAgIEFTU0VSVChbV2ViRG93bmxvYWQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpyZXF1ZXN0OnJlc3BvbnNl
OmRlbGVnYXRlOnByb3h5OildKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBoYW5kbGUtPnJlbGVh
c2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKTsKKyAgICBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0
aExvYWRpbmdDRlVSTENvbm5lY3Rpb246Y29ubmVjdGlvbi5nZXQoKSByZXF1ZXN0OnJlcXVlc3Qu
Y2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSByZXNwb25zZTpyZXNwb25zZS5jZlVSTFJlc3Bv
bnNlKCkgZGVsZWdhdGU6W3dlYlZpZXcgZG93bmxvYWREZWxlZ2F0ZV0gcHJveHk6bmlsXTsKKyNl
bHNlCiAgICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5k
bGUtPmNvbm5lY3Rpb24oKSByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBC
b2R5KSByZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgZGVsZWdhdGU6W3dlYlZpZXcg
ZG93bmxvYWREZWxlZ2F0ZV0gcHJveHk6bmlsXTsKKyNlbmRpZgogfQogCiBib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBpbnQgbGVuZ3RoKQpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyMDc1NzApCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xODAxLDcgKzE4MDEsNyBAQCArICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNz
aW9uCiArICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQ
b2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKIHsKICAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VS
VChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4K
KyAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIGJ1aWxkaW5nIHdp
dGhvdXQgVVNFKENGTkVUV09SSykgYW5kIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCiAgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZp
c2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY3OTEsMTQgKzY3OTEsMjQgQEAgLSAoaWQpY2FuZGlkYXRlTGlzdAog
CiAtICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6
KE5TU3RyaW5nICopbW9kZQogeworI2lmIFVTRShDRk5FVFdPUkspCisgICAgQ0ZSdW5Mb29wUmVm
IHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOworI2Vsc2UKKyAg
ICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOworI2VuZGlmCiAgICAg
aWYgKHJ1bkxvb3AgJiYgbW9kZSkKLSAgICAgICAgY29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWly
KFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CisgICAg
ICAgIGNvcmUoc2VsZiktPmFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hl
ZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQogCiAtICh2b2lkKXVuc2No
ZWR1bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAq
KW1vZGUKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBh
aXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKKyNlbHNlCisgICAgTlNSdW5Mb29w
ICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKKyNlbmRpZgogICAgIGlmIChydW5Mb29w
ICYmIG1vZGUpCi0gICAgICAgIGNvcmUoc2VsZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVs
ZVBhaXI6OmNyZWF0ZShydW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOworICAgICAgICBjb3Jl
KHNlbGYpLT5yZW1vdmVTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoc2NoZWR1bGVQ
YWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKIH0KIAogc3RhdGljIEJPT0wgZmluZFN0
cmluZyhOU1ZpZXcgPFdlYkRvY3VtZW50U2VhcmNoaW5nPiAqc2VhcmNoVmlldywgTlNTdHJpbmcg
KnN0cmluZywgV2ViRmluZE9wdGlvbnMgb3B0aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVmYXVsdERvd25sb2Fk
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRv
Q2FjaGVkRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBX
ZWJFcnJvci5jcHA6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24pOgor
ICAgICAgICAoV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViRXJy
b3IuaDoKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJN
dXRhYmxlVVJMUmVxdWVzdDo6bXV0YWJsZUNvcHkpOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjppbml0V2l0aFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAg
ICogV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OnNzbFBlZXJD
ZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2Vi
Vmlldzo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJl
bmNlc0NoYW5nZWQpOgorICAgICAgICAodXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW5j
ZXNJZk5lZWRlZCk6CisKIDIwMTYtMTAtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1vdmUgbWFueSBtaXNjZWxsYW5lb3VzIGNsYXNzZXMgZnJvbSBFeGNlcHRp
b25Db2RlIHRvIEV4Y2VwdGlvbgpJbmRleDogU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERvd25s
b2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9E
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAotI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJEb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25s
b2FkLmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2Fk
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE0ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIFdlYkRvd25sb2FkX2gKKyNkZWZpbmUgV2ViRG93
bmxvYWRfaAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+CiAjZWxpZiBVU0UoQ1VSTCkK
ICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxEb3dubG9hZC5oPgpAQCAtODMsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdXNlQ3JlZGVudGlhbChfSW5fb3B0XyBJV2ViVVJMQ3JlZGVudGlhbCosIF9Jbl9vcHRf
IElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOwogCi0jaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIENGVVJMRG93bmxvYWQgQ2FsbGJhY2tz
CiAgICAgdm9pZCBkaWRTdGFydCgpOwogICAgIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVl
c3QoQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKTsKQEAgLTEwOCw3ICsxMDksNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBXVEY6OlN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAgIFdURjo6
U3RyaW5nIG1fYnVuZGxlUGF0aDsKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShD
Rk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7CiAj
ZWxpZiBVU0UoQ1VSTCkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q3VybERvd25sb2FkPiBtX2Rvd25s
b2FkOwpAQCAtMTIyLDMgKzEyMyw2IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9yZWNlaXZlZDsK
ICNlbmRpZgogfTsKKworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAJKHJldmlz
aW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhp
Y3MuaD4KICNlbmRpZgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KICNlbmRpZgogCkBAIC0xMzUsNyArMTM1LDcgQEAgSFJFU1VMVCBXZWJFcnJvcjo6bG9j
YWxpemVkRGVzY3JpcHRpb24oXwogCiAgICAgKnJlc3VsdCA9IEJTdHJpbmcobV9lcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKS5yZWxlYXNlKCk7CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgaWYgKCEqcmVzdWx0KSB7CiAgICAgICAgIGlmIChp
bnQgY29kZSA9IG1fZXJyb3IuZXJyb3JDb2RlKCkpCiAgICAgICAgICAgICAqcmVzdWx0ID0gQlN0
cmluZyh3a0NGTmV0d29ya0Vycm9yR2V0TG9jYWxpemVkRGVzY3JpcHRpb24oY29kZSkpLnJlbGVh
c2UoKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBIUkVTVUxUIFdlYkVycm9yOjpzc2xQZWVyQ2VydGlm
aWNhdGUoX091CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IDA7CiAK
LSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFt
X2NmRXJyb3JVc2VySW5mb0RpY3QpIHsKICAgICAgICAgLy8gY29weSB1c2VyaW5mbyBmcm9tIENG
RXJyb3JSZWYKICAgICAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0gbV9lcnJvcjsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViRXJyb3IuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
RXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIFdlYkVycm9yX2gKKyNkZWZpbmUgV2ViRXJy
b3JfaAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4K
QEAgLTY1LDggKzY2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVUxPTkcgbV9yZWZDb3Vu
dCB7IDAgfTsKICAgICBDT01QdHI8SVByb3BlcnR5QmFnPiBtX3VzZXJJbmZvOwotI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBtX2NmRXJyb3JVc2VySW5mb0RpY3Q7CiAjZW5kaWYKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIG1fZXJyb3I7CiB9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVDRldpbi5oPgogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNlbmRpZgogCkBAIC0zODIsNyAr
MzgyLDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bXV0YWJsZUNvcAogICAgIGlm
ICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0jaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0
YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRh
dGVIVFRQQm9keSkpKTsKICAgICAqcmVzdWx0ID0gY3JlYXRlSW5zdGFuY2UoUmVzb3VyY2VSZXF1
ZXN0KG11dGFibGVSZXF1ZXN0LmdldCgpKSk7CiAgICAgcmV0dXJuIFNfT0s7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3Bw
CShyZXZpc2lvbiAyMDc1NzApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBIUkVT
VUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppCiAKICAgICAvLyBGSVhNRTogQWZ0
ZXIgd2UgY2hhbmdlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIHVzZSAiUmVzb3VyY2VIYW5k
bGUiIGFzIHRoZSBhYnN0cmFjdCAiU2VuZGVyIiBvciAiU291cmNlIG9mIHRoaXMgQXV0aCBDaGFs
bGVuZ2UiLCB0aGVuIHdlJ2xsCiAgICAgLy8gY29uc3RydWN0IHRoZSBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSB3aXRoIHRoYXQgYXMgb2J0YWluZWQgZnJvbSB0aGUgd2ViU2VuZGVyCi0jaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJTcGFjZS0+cHJvdGVjdGlv
blNwYWNlKCksIHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LCB3ZWJSZXNwb25zZS0+cmVz
b3VyY2VSZXNwb25zZSgpLCB3ZWJFcnJvci0+cmVzb3VyY2VFcnJvcigpKTsKICNlbmRpZgpAQCAt
MTYyLDcgKzE2Miw3IEBAIEhSRVNVTFQgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmkK
ICAgICBpZiAoIXdlYlNlbmRlcikKICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKLSNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbV9hdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYkNoYWxsZW5nZS0+
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSwgd2ViU2Vu
ZGVyLT5hdXRoZW50aWNhdGlvbkNsaWVudCgpKTsKIAogICAgIHJldHVybiBTX09LOwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkocmV2aXNpb24gMjA3NTcwKQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VuZGlm
CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVk
ZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlm
CiAKQEAgLTQwNiw3ICs0MDYsNyBAQCBIUkVTVUxUIFdlYlVSTFJlc3BvbnNlOjpzc2xQZWVyQ2Vy
dGlmaWNhCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IDA7CiAKLSNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3QgPSBjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKTsKICAgICBpZiAoIWRpY3QpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC00NzUsNyArNDc1LDcgQEAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgV2ViVVJMUmVzcG9uc2U6OgogICAgIHJldHVybiBtX3Jlc3BvbnNlOwogfQogCi0j
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogQ0ZEaWN0aW9uYXJ5
UmVmIFdlYlVSTFJlc3BvbnNlOjpjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKSBjb25zdAogewogICAg
IGlmIChtX1NTTENlcnRpZmljYXRlSW5mbykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVS
TFJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9u
c2UuaAkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9u
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIFdlYlVSTFJlc3BvbnNlX0gKKyNkZWZpbmUgV2Vi
VVJMUmVzcG9uc2VfSAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBIUkVTVUxUIHN1Z2dlc3RlZEZpbGVFeHRlbnNpb24oQlNUUiogcmVzdWx0KTsKIAotI2lm
IFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBDRkRpY3Rpb25h
cnlSZWYgY2VydGlmaWNhdGVEaWN0aW9uYXJ5KCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtNzMsNyAr
NzQsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBtX1NTTENlcnRpZmljYXRlSW5mbzsgICAgLy8gdGhpcyBlbnN1cmVzIGNlcnRpZmlj
YXRlIGNvbnRleHRzIGFyZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoaXMgV2ViVVJMUmVz
cG9uc2UuCiAjZW5kaWYKIH07CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJl
dmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVT
RShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtNDk2LDcgKzQ5Niw3IEBA
IHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKIAogICAgIFN0cmluZyBj
YWNoZURpcmVjdG9yeTsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVU
V09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxDYWNoZSA9IGFkb3B0Q0Yo
Q0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHdrQ29weUZvdW5kYXRpb25DYWNoZURp
cmVjdG9yeSgwKSk7CiAgICAgaWYgKCFjZnVybENhY2hlRGlyZWN0b3J5KSB7CkBAIC01NTAsNyAr
NTUwLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgICAg
ICAvLyBNZW1vcnkgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQogICAgICAgICBjYWNoZU1lbW9y
eUNhcGFjaXR5ID0gMDsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVU
V09SSykKICAgICAgICAgLy8gRm91bmRhdGlvbiBkaXNrIGNhY2hlIGNhcGFjaXR5IChpbiBieXRl
cykKICAgICAgICAgY2FjaGVEaXNrQ2FwYWNpdHkgPSBDRlVSTENhY2hlRGlza0NhcGFjaXR5KGNm
dXJsQ2FjaGUuZ2V0KCkpOwogI2VuZGlmCkBAIC02NzQsNyArNjc0LDcgQEAgdm9pZCBXZWJWaWV3
OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgIG1lbW9yeUNhY2hlLnNldERlYWREZWNv
ZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7
CiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXplKHBhZ2VDYWNoZVNpemUpOwog
Ci0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIERv
bid0IHNocmluayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0aGF0IHdvdWxkIGNhdXNlIGNodXJu
LgogICAgIGNhY2hlRGlza0NhcGFjaXR5ID0gbWF4KGNhY2hlRGlza0NhcGFjaXR5LCBDRlVSTENh
Y2hlRGlza0NhcGFjaXR5KGNmdXJsQ2FjaGUuZ2V0KCkpKTsKIApAQCAtMTU0Niw3ICsxNTQ2LDcg
QEAgdm9pZCBXZWJWaWV3OjpjbG9zZVdpbmRvdygpCiAKIGJvb2wgV2ViVmlldzo6Y2FuSGFuZGxl
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0jaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIE9uIHRoZSBN
YWMgdGhlcmUncyBhbiBhYm91dCBVUkwgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYnV0IFdpbmRv
d3MgQ0ZOZXR3b3JrIGRvZXNuJ3QgaGF2ZSB0aGF0LgogICAgIGlmIChyZXF1ZXN0LnVybCgpLnBy
b3RvY29sSXMoImFib3V0IikpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTI2MSw3ICs1MjYx
LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgIGhyID0g
cHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChG
QUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KyNpZiBQTEFURk9STShXSU4pIHx8IFVTRShDRk5FVFdPUkspCiAgICAgaWYgKGVuYWJsZWQpCiAg
ICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKICAgICBlbHNlCkBAIC01NTYwLDcgKzU1NjAsNyBAQCBIUkVTVUxUIHVwZGF0ZVNo
YXJlZFNldHRpbmdzRnJvbVByZWZlcmVuCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJl
dHVybiBocjsKIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykK
ICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JB
bGxDb250ZXh0cyhhY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYwLDcgKzk2MCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnMKIAogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJh
bWUqIGNhY2hlZEZyYW1lKQogewotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENG
TkVUV09SSykKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKICAgICBp
ZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDIwNzU3MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgogI2lu
Y2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNl
bmRpZgpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCiAg
ICAgcmV0dXJuIGJhc2U7CiB9CiAKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShD
Rk5FVFdPUkspCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2Vw
dFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9s
aWN5KQogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCku
Y29va2llU3RvcmFnZSgpKQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnNldFByaXZhCiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0jaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICBpZiAoYXV0byBwcml2YXRlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCkpKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjA3NTcwKQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw4IEBACiAgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSNwcmFnbWEgb25jZQorI2lm
bmRlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0X2gKKyNkZWZpbmUgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dF9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aD4KIApAQCAtMzMsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAotI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBzdGF0aWMgdm9pZCBzZXRD
b29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5KTsKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7CkBAIC00OSwzICs1MCw1IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwog
fTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDIwNzU3MCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1Db29raWVKYXIuaD4KLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVT
RShDRk5FVFdPUkspCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3Rl
bUludGVyZmFjZS5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVX
aW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFr
ZQkocmV2aXNpb24gMjA3NTcwKQorKysgU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFr
ZQkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgaW5jbHVkZShPcHRpb25zV2luKQogCiBz
ZXQoVVNFX0NHIDEpCiBzZXQoVVNFX0NBIDEpCi1zZXQoVVNFX0NGVVJMQ09OTkVDVElPTiAxKQor
c2V0KFVTRV9DRk5FVFdPUksgMSkKIHNldChVU0VfSUNVX1VOSUNPREUgMSkKIAogIyBVbmNvbW1l
bnQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRyeSB0aGUgRGlyZWN0MkQgYmFja2VuZC4KSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwNzU3MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jb25maWcuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAobWFpbik6CisKIDIwMTYtMTAt
MTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIwNzU1Ny4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuaAkocmV2aXNpb24gMjA3NTcwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsMTMgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIER1bXBSZW5kZXJUcmVlX2gKKyNkZWZp
bmUgRHVtcFJlbmRlclRyZWVfaAorCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBhbGwgcGxh
dGZvcm1zIGFyZSB1c2luZyBjb25maWcuaAorI2lmbmRlZiBDb25maWdfSAorI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJE
dW1wUmVuZGVyVHJlZU1hYy5oIgpAQCAtMzksNyArNDUsNiBAQAogI2VuZGlmCiAKICNpbmNsdWRl
IDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiAjaWYgIU9TKE9QRU5CU0QpCkBAIC02NiwzICs3MSw1IEBAIHN0cnVjdCBUZXN0Q29t
bWFuZCB7CiB9OwogCiBUZXN0Q29tbWFuZCBwYXJzZUlucHV0TGluZShjb25zdCBzdGQ6OnN0cmlu
ZyYpOworCisjZW5kaWYgLy8gRHVtcFJlbmRlclRyZWVfaApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmln
LmgJKHJldmlzaW9uIDIwNzU3MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiAgKgogICovCiAKLSNwcmFnbWEgb25jZQor
I2RlZmluZSBDb25maWdfSAogCiAjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NP
TkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKICNpbmNsdWRlICJjbWFrZWNv
bmZpZy5oIgpAQCAtNDQsNyArNDQsNyBAQAogI2RlZmluZSBVU0VfQ1VSTCAxCiAjZWxzZQogI2Rl
ZmluZSBVU0VfQ0cgMQotI2RlZmluZSBVU0VfQ0ZVUkxDT05ORUNUSU9OIDEKKyNkZWZpbmUgVVNF
X0NGTkVUV09SSyAxCiAjZW5kaWYKIAogI3VuZGVmIF9XSU4zMl9XSU5OVApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiAyMDc1NzAp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw3ICs2Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XZWJLaXRDT01BUEkuaD4KIAotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1By
aXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNlbmRpZgpAQCAt
MTMyNCw3ICsxMzI0LDcgQEAgSVdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5k
bwogICAgIHJldHVybiB3ZWJWaWV3OwogfQogCi0jaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHNoYXJlZENGVVJMQ2Fj
aGUoKQogewogI2lmbmRlZiBERUJVR19BTEwKQEAgLTE1MDIsNyArMTUwMiw3IEBAIGludCBtYWlu
KGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5t
YWluRnJhbWUoJmZyYW1lKSkpCiAgICAgICAgIHJldHVybiAtNzsKIAotI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJl
Zj4gdXJsQ2FjaGUgPSBzaGFyZWRDRlVSTENhY2hlKCk7CiAgICAgQ0ZVUkxDYWNoZVJlbW92ZUFs
bENhY2hlZFJlc3BvbnNlcyh1cmxDYWNoZS5nZXQoKSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292151</attachid>
            <date>2016-10-19 22:30:55 -0700</date>
            <delta_ts>2016-10-19 23:07:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163675-20161019222718.patch</filename>
            <type>text/plain</type>
            <size>147837</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU4
NCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlOgorCiAyMDE2LTEw
LTE4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
X1NIQVBFUyBmZWF0dXJlIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBvbi4KSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAg
IFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoK
KyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6CisgICAgICAgICogd3RmL1NjaGVkdWxlUGFp
ck1hYy5tbToKKwogMjAxNi0xMC0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDc0ODApOiAzIERyb21hZW8gdGVzdHMgZmFpbGluZwpJ
bmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTksNiArNTU5LDEwIEBACiAKICNpZiBQTEFURk9S
TShJT1MpCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMDAwMAorI2RlZmluZSBVU0VfQ0ZVUkxDT05ORUNUSU9OIDEK
KyNlbmRpZgorCiAjZGVmaW5lIEhBVkVfTkVUV09SS19FWFRFTlNJT04gMQogI2RlZmluZSBIQVZF
X1JFQURMSU5FIDEKICNkZWZpbmUgVVNFX1VJS0lUX0VESVRJTkcgMQpJbmRleDogU291cmNlL1dU
Ri93dGYvU2NoZWR1bGVQYWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyLmgJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFp
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogT0JKQ19DTEFTUyBOU1J1bkxvb3A7CiAjZW5kaWYKIApAQCAtNDUsNyArNDUsNyBAQCBjbGFz
cyBTY2hlZHVsZVBhaXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxTY2hlZHVsZVBhaXI+IGNyZWF0ZShDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdS
ZWYgbW9kZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY2hlZHVsZVBhaXIocnVuTG9vcCwgbW9k
ZSkpOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgc3RhdGljIFJlZjxTY2hlZHVsZVBhaXI+IGNyZWF0ZShO
U1J1bkxvb3AqIHJ1bkxvb3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUpKTsgfQogICAgIE5TUnVuTG9vcCogbnNSdW5M
b29wKCkgY29uc3QgeyByZXR1cm4gbV9uc1J1bkxvb3AuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNjMs
NyArNjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9tb2RlID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZUNvcHkoMCwgbW9kZSkpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU2NoZWR1bGVQYWlyKE5TUnVuTG9vcCosIENGU3RyaW5nUmVmKTsKICAgICBSZXRh
aW5QdHI8TlNSdW5Mb29wKj4gbV9uc1J1bkxvb3A7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1NjaGVkdWxlUGFpck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY2hl
ZHVsZVBhaXJNYWMubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1NjaGVk
dWxlUGFpck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjaGVkdWxlUGFpci5oIgogCisjaWYgIVVTRShDRlVSTENP
Tk5FQ1RJT04pCisKIG5hbWVzcGFjZSBXVEYgewogCiBTY2hlZHVsZVBhaXI6OlNjaGVkdWxlUGFp
cihOU1J1bkxvb3AqIHJ1bkxvb3AsIENGU3RyaW5nUmVmIG1vZGUpCkBAIC00MCwzICs0Miw1IEBA
IFNjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKE5TUnVuTG9vcCogcnUKIH0KIAogfSAvLyBuYW1l
c3BhY2UKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNjEgQEAKKzIw
MTYtMTAtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZlcnQgcjIwNzE1MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hh
bS4KKworICAgICAgICBUaGlzIGNvZGUgaXMgc3RpbGwgdXNlZnVsIGZvciBjb21wYXJpc29uIHdp
dGggV2luZG93cy4gIEknbGwgcmVtb3ZlIGl0IGFnYWluIHNvb24uCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmVQcmVmaXguaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgICogbG9h
ZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHA6CisgICAgICAgICogbG9hZGVyL21hYy9SZXNv
dXJjZUxvYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxs
Q2FjaGVSZXNwb25zZSk6CisgICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjphZGRTY2hlZHVsZVBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlU2No
ZWR1bGVQYWlyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVu
dDo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZv
clJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJv
dGVjdGlvblNwYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3Bh
Y2VCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpzZXRBdXRoZW50aWNhdGlv
bkNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6YXV0aGVudGljYXRpb25DbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3JtQ29tcGFyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVDRik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb3Jl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9u
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVu
dFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1Bl
cnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1
bkxvb3BDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llU3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkU25pZmZDb25uZWN0aW9uUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRp
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRl
bnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpzZXR1cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25T
cGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdDo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdENvcHlD
b250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vz
c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cFJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpzZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZTo6Y2ZTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
bnNVUkxSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVzcG9uc2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2U6Om5zVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAg
ICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGluaXRXaXRoQ29ubmVjdGlvbkRl
bGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGFBcnJheTpdKToKKyAgICAgICAgKC1bV2ViUXVpY2tMb29rSGFu
ZGxlQXNEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0p
OgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb25EaWRG
aW5pc2hMb2FkaW5nOl0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRl
IGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViUXVpY2tMb29r
SGFuZGxlQXNEZWxlZ2F0ZSBkZXRhY2hIYW5kbGVdKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNr
TG9va0hhbmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZTo6
Y2ZSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRp
b25NYWMubW06CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyIHNldENGQ2hhbGxlbmdlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGlj
YXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0pOgorICAgICAgICAoV2Vi
Q29yZTo6Y29yZSk6CisgICAgICAgIChXZWJDb3JlOjptYWMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tp
ZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6CisgICAgICAgIChXZWJD
b3JlOjpjb29raWVTdG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVk
ZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3Jt
RGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJy
b3JNYWMubW06CisgICAgICAgIChOU0Vycm9yRnJvbUNGRXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yOjpuc0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9w
ZXJhdG9yIE5TRXJyb3IgKik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q29u
bmVjdGlvblRpbWluZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdE1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q6OlJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6
OnVwZGF0ZU5TVVJMUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVU
ZXN0U3VwcG9ydFByZWZpeC5oOgorCiAyMDE2LTEwLTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDYwMjUpOiBBbGwgWW91VHViZSB2
aWRlb3MgcGxheSB3aXRoIGJsYWNrIGJhcnMgb24gYWxsIGZvdXIgc2lkZXMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlUHJlZml4LmgJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmVQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEzICsxNTEsMTEgQEAKICNlbmRpZgog
CiAjaW5jbHVkZSA8d2luZG93cy5oPgotCi0jZWxpZiAhUExBVEZPUk0oSU9TKQotCisjZWxzZQor
I2lmICFQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5o
PgotCi0jZW5kaWYKLQorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisjZW5kaWYgLy8gT1MoV0lO
RE9XUykKIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjA0Miw2ICsyMDQyLDcgQEAKIAkJNTE0Qzc2NEYwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRh
U3RyZWFtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tICovOyB9
OwogCQk1MTRDNzY1MDBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ2MENFOTIz
NEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovOyB9OwogCQk1MTRDNzY1MTBDRTky
MzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVz
b3VyY2VIYW5kbGVNYWMubW0gKi87IH07CisJCTUxNEM3NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBS
ZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tICovOyB9OwogCQk1MTRDNzY2RDBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2
NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxCYXNlLmNwcCAqLzsgfTsKIAkJNTE0Qzc2
NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVk
ZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjVBMENFOTIzQTEwMDdFRjND
RCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0yODI4LDYgKzI4MjksNyBAQAogCQk3RDRDOTZE
RDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBK
U0ZldGNoSGVhZGVycy5oICovOyB9OwogCQk3RDc0MUJEQTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NT
VmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVl
S2V5d29yZHMuaCAqLzsgfTsKIAkJN0UzN0VGMkUxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291
cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3Bw
ICovOyB9OworCQk3RTQyOENFNTEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTQyOENF
NDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gKi87IH07CiAJCTdFNDZG
NkZBMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0NkY2RjgxNjI3QTJDOTAw
MDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5jcHAgKi87IH07CiAJCTdFNDZGNkZCMTYy
N0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAv
KiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLzsgfTsKIAkJN0U0NzRFMUUxMjQ5NERDOTAwMjM1
MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNR
TGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yODQ1LDYgKzI4NDcsNyBAQAogCQk3RTY2RTIzNDE2RDZF
QjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZG
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLzsgfTsKIAkJN0U2NkUyMzQxN0U2RUI2
QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZG
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovOyB9OwogCQk3RTdERTFGRDE5NUNF
RjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyog
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07CisJCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYz
QiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1
ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3Vy
Y2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29h
Lm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxv
d2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRp
Y2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9j
dXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2Vk
SW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTI4NjUsNiArMjg2OCw3IEBACiAJCTdFRTY4NDY5MTJEMjZFMzgwMEU3OTQxNSAvKiBM
b2FkZXJSdW5Mb29wQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCAqLzsg
fTsKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
RXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCAqLzsgfTsK
KwkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTkxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENG
TmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
RTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi87IH07
CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkxMDgsNiArOTExMiw3IEBACiAJCTUx
NEM3NjQ1MENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVz
b3VyY2VFcnJvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJlc291cmNlRXJyb3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3
NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlSGFuZGxlTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3Vy
Y2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRD
NzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlhbEJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDEwMiw2ICsxMDEwNyw3IEBACiAJCTdE
NEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoSGVhZGVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdENEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVh
ZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZldGNoSGVhZGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAg
LyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVJT1Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIy
MyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0U0NkY2RjkxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4
VWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09FU0VsZW1lbnRJbmRl
eFVpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0NzRFMUIxMjQ5NERDOTAw
MjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMTE5LDYgKzEwMTI1LDcgQEAKIAkJN0U2NkUyMzIxNkQ2
RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0U3REUyMDExOTVDRUZDRDAw
MzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVy
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWJyZXNv
dXJjZUxvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTk5QUY1
MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGlj
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjU0MEIxMzg0NjQ2
OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDE0MSw2ICsxMDE0OCw3IEBACiAJCTdFRTY4NDU2MTJE
MjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTG9hZGVyUnVuTG9vcENGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3JD
Ri5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUVycm9y
Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1OTEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjM5MCw2ICsxNjM5OCw4IEBACiAJCQkJNDQy
QUY3QTcxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5oICovLAogCQkJCTQ0MkFGN0E4MTAy
Q0RERUEwMDhGRDREMyAvKiBRdWlja0xvb2subW0gKi8sCiAJCQkJQTEwREJGNDYxOEY5MjMxNzAw
MEQ3MEM2IC8qIFF1aWNrTG9va0hhbmRsZUNsaWVudC5oICovLAorCQkJCTdFNDI4Q0U0MTNFMzQw
N0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSAqLywKKwkJCQk3RTdERTIwMTE5NUNF
RkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovLAogCQkJCTQ0QTIwREI4MEY4
NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLywKIAkJCQk0NDRENEUy
MTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tICovLAogCQkJKTsK
QEAgLTE3MzAyLDYgKzE3MzEyLDcgQEAKIAkJCQkxQTdGQTY0NzBEREEzQ0JBMDAyOEY4QTUgLyog
TmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwICovLAogCQkJCTUxNEM3NjQ2MENFOTIzNEUwMDdF
RjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovLAogCQkJCTUxNEM3NjQ3MENFOTIzNEUwMDdF
RjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLywKKwkJCQk1MTRDNzY0OTBDRTkyMzRFMDA3
RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovLAogCQkJCUUxODA4MTE0MTZGQ0Y5Q0Iw
MEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSAqLywKIAkJCQkxRkFGQkYxNjE1
QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8sCiAJCQkJMUZBRkJGMTcxNUE1RkE1
MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLywKQEAgLTIxMzQwLDYgKzIxMzUxLDcgQEAK
IAkJCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlTZXJ2ZXJDRk5ldC5jcHAgKi8s
CiAJCQkJN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLywKIAkJ
CQk3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCAqLywKKwkJ
CQk3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8s
CiAJCQkJMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwICovLAogCQkJCTI2RkFFNEM5MTg1MkUzQTUwMDRDOEM0NiAvKiBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMjZDMTVDRjQx
ODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwICovLApAQCAtMzAyOTYsOSArMzAzMDgsMTEgQEAKIAkJCQk3
RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
SGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdFRTY4NDZDMTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2RkFFNENDMTg1
MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTI2QzE1Q0Y2MTg1N0UxNUQwMEYxNUMwMyAvKiBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0EzNSAvKiBSZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3RTQyOENFNTEzRTM0MDdGMDAzQjY2MUMg
LyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MTBDRTky
MzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
M0UyMjdFMzBBRjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDMxMSw2ICszMDMyNSw4IEBACiAJCQkJNTE0Qzc2N0Mw
Q0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RFMUZEMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJj
ZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1
MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTRDNzY1
MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFGNzhEMEMxQzI1NDI0QzAw
MjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDIwNzU4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJMQ09OTkVDVElP
TikKICNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIApAQCAtMTQ1LDcgKzE0
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsg
fQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAg
ICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQw
Myw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3Rl
T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIE5TQ2FjaGVkVVJMUmVz
cG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywg
TlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJl
c3BvbnNlOyB9CiAjZW5kaWYKLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JN
KFdJTikgJiYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91
bGQgdXNlIHdpbGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzI1Nz4uCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJl
c3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIE5TRGljdGlvbmFyeSAq
ZGF0YURldGVjdGlvbkNvbnRleHQoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKLSNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGVVJMQ09OTkVD
VElPTikKICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNw
b25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+Lgog
ICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpID0gMDsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
cmVjZWl2ZWRDYW5jZWxsYXRpbwogICAgIGNhbmNlbCgpOwogfQogCi0jaWYgUExBVEZPUk0oQ09D
T0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjA3NTg0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMb2FkVGltaW5nJiBsb2FkVGlt
aW5nKCkgeyByZXR1cm4gbV9sb2FkVGltaW5nOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgdm9pZCBzY2hl
ZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVk
dWxlUGFpciYpOwogI2VuZGlmCkBAIC0xNjMsOSArMTYzLDEyIEBAIHByb3RlY3RlZDoKIAogICAg
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0aW9u
czsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2Vu
ZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRlVSTENPTk5FQ1RJT04pCisgICAgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAKQEAgLTIwNSw3ICsyMDgsNyBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBj
b25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogI2VuZGlmCi0j
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNw
b25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+Lgog
ICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpIG92ZXJyaWRlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDkgKzc0
LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAqd2lsbENhY2hlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAj
ZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CisjZW5kaWYKIAogI2lmIFVTRShORVRX
T1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKICAgICBib29sIHN1cHBvcnRzRGF0YUFycmF5KCkg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nm
L1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAkocmV2aXNpb24gMjA3NTg0KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRG
T1JNKFdJTikKKwogYm9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZShSZXNv
dXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAg
ICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3Mp
CkBAIC00Myw2ICs0NSw4IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9u
c2UKICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25z
ZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlLCBDRkRhdGFHZXRCeXRl
UHRyKGRhdGEpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YSkpOwogfQogCisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRl
ckNvY29hLm1tCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
MTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
KworQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNo
ZWRSZXNwb25zZSkKK3sKKyAgICBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdT
dG9yZUNyZWF0aW9uKHJlcXVlc3QoKSwgbV9yZXNvdXJjZS0+c2Vzc2lvbklEKCksIGNhY2hlZFJl
c3BvbnNlKTsKKyAgICBpZiAoIW1fcmVzb3VyY2UtPnNob3VsZENhY2hlUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZUdldFdyYXBwZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZSkpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJl
c3BvbnNlKGhhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOworfQorCisjZWxzZQorCiBOU0NhY2hlZFVS
TFJlc3BvbnNlKiBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAgRGlz
a0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihyZXF1ZXN0KCks
IG1fcmVzb3VyY2UtPnNlc3Npb25JRCgpLCBbcmVzcG9uc2UgX0NGQ2FjaGVkVVJMUmVzcG9uc2Vd
KTsKQEAgLTQzLDQgKzU1LDYgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSogU3VicmVzb3VyY2VMb2Fk
ZXI6OgogICAgIHJldHVybiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoaGFuZGxl
LCByZXNwb25zZSk7CiB9CiAKKyNlbmRpZgorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAkocmV2aXNpb24gMjA3NTg0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgIVVT
RShDRlVSTENPTk5FQ1RJT04pCisKIHN0YXRpYyB2b2lkIHNjaGVkdWxlQWxsKGNvbnN0IFJlc291
cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgVmVjdG9y
PFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwpAQCAtNjcsNCArNjksNiBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAgICAgdW5zY2hlZHVsZUFs
bChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycywgcGFpcik7CiB9CiAKKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jl
c291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9t
YWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCisKK0NGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNo
ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRS
ZXNwb25zZSkKK3sKKyAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERvTm90
U2VuZENhbGxiYWNrcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZXRhaW5QdHI8
TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0NhY2hl
ZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJlc3BvbnNlOmNhY2hlZFJl
c3BvbnNlXSk7CisgICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVS
ZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5zQ2FjaGVkUmVzcG9uc2Uu
Z2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsKK30KKworI2Vsc2UKKwogTlNDYWNoZWRVUkxS
ZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00Myw2ICs1Niw4IEBA
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwKICAgICByZXR1cm4gZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwg
aWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKKyNlbmRpZgorCiAjaWYgVVNFKE5FVFdPUktf
Q0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9Q
YWdlTWFjLm1tCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9Q
YWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAjaWYgUExBVEZPUk0o
SU9TKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVk
dWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVz
KSk7CisjZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShXZWJU
aHJlYWROU1J1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7CisjZW5kaWYgLy8gVVNF
KENGVVJMQ09OTkVDVElPTikKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFp
cjo6Y3JlYXRlKFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpKTsKICNlbmRpZgpAQCAtNjUsMTIgKzY5LDE0IEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQ
YWlyKFJlZjxTY2hlZHVsZVAKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5M
b29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkK
ICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYg
KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1
bGUocGFpcik7CiAgICAgfQorI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1l
ck1hYyB1c2UgdGhlc2UgU2NoZWR1bGVQYWlycy4KIH0KQEAgLTgzLDEyICs4OSwxNCBAQCB2b2lk
IFBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcihSZWY8U2NoZWR1CiAKICAgICBtX3NjaGVkdWxlZFJ1
bkxvb3BQYWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCisjaWYgIVVTRShDRlVSTENPTk5FQ1RJ
T04pCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAg
ICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCku
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PnVuc2NoZWR1bGUocGFpcik7CiAgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksMTAg
QEAKICNpbXBvcnQgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKKyNpbmNsdWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgor
I2VuZGlmCisKICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBzdGQg
ewpAQCAtMzY4LDYgKzM3Miw1OCBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxs
RGVsZWdhCiB9CiAjZW5kaWYKIAorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCitjbGFzcyBXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhl
bnRpY2F0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqY2hhbGxlbmdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsK
KyAgICB9CisKKyAgICB1c2luZyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50Pjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCisgICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2hhbGxlbmdlKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQg
ZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAg
dm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgW1tt
X2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwo
KSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07CisgICAgfQor
CisgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgW1tt
X2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCByZWNl
aXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgcmVjZWl2
ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRl
cl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9y
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KV0pCisgICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNl
bmRlcl0gcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1f
Y2hhbGxlbmdlLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVq
ZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCisg
ICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5k
Q29udGludWVXaXRoQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Cit9Owor
I2VuZGlmCisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYg
KCFpc0F2YWlsYWJsZSgpKQpAQCAtMTc0MSw3ICsxNzk3LDE1IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotICAgIHJldHVy
biBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShuc0NoYWxsZW5nZSkpOworI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCisgICAgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVu
dDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdl
UmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25zQ2hhbGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFs
bGVuZ2VdKTsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVu
Z2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7CisjZWxzZQorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7CisjZW5kaWYKKworICAgIHJldHVybiBwbGF5ZXIo
KS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVu
Z2UpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZENh
bmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVl
c3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDYgKzc3LDE0IEBAIHR5cGVkZWYgc3RydWN0IF9OU1JlY3QgTlNSZWN0OwogI2luY2x1ZGUgPENv
cmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgogCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBD
b29raWVTdG9yYWdlUmVmOwordHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNlKiBD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKK3R5cGVkZWYgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwq
IFdLQ0ZVUkxDcmVkZW50aWFsUmVmOwordHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTFJlcXVlc3Qq
IENGVVJMUmVxdWVzdFJlZjsKKyNlbmRpZgorCiBPQkpDX0NMQVNTIEFWQXNzZXQ7CiBPQkpDX0NM
QVNTIEFWUGxheWVyOwogT0JKQ19DTEFTUyBDQUxheWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCShy
ZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNywxMSBAQAogCiAj
aW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKSAm
JiAhUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgorI2luY2x1
ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIE5lZWQgdG8gZW5mb3JjZSBlbXB0eSwgbm9uLW51bGwgc3Ry
aW5ncyBkdWUgdG8gdGhlIHBpY2tpbmVzcyBvZiB0aGUgU3RyaW5nID09IFN0cmluZyBvcGVyYXRv
cgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
b25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisj
aWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVf
RVhQT1JUIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VE
ZWxlZ2F0ZShib29sKTsKICAgICBpZCBkZWxlZ2F0ZSgpOwpAQCAtMTI3LDggKzEyNywxMiBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShX
RUJfVElNSU5HKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisgICAgc3RhdGljIHZvaWQgZ2V0
Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmLCBOZXR3b3JrTG9hZFRpbWlu
ZyYpOworI2Vsc2UKICAgICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VS
TENvbm5lY3Rpb24gKiwgTmV0d29ya0xvYWRUaW1pbmcmKTsKICNlbmRpZgorI2VuZGlmCiAgICAg
ICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVs
ZVBhaXImKTsKQEAgLTIwMSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2Ug
Kik7CiAjZW5kaWYKIApAQCAtMjIxLDYgKzIyNSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCk7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBz
dGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJM
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgorCiAgICAgdHlwZWRlZiBS
ZWY8UmVzb3VyY2VIYW5kbGU+ICgqQnVpbHRpbkNvbnN0cnVjdG9yKShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpOwogICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgcHJv
dG9jb2wsIEJ1aWx0aW5Db25zdHJ1Y3Rvcik7CiAKQEAgLTI1NywxMSArMjY1LDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwg
Q0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGVVJMQ09OTkVDVElPTikKICAgICB2
b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlv
cik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpICYmICFV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRl
bGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRl
bnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9w
ZXJ0aWVzKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCShyZXZpc2lvbiAyMDc1ODQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgdmlydHVhbCBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KKyNpZiBQTEFURk9STShX
SU4pCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmIC8v
IFBMQVRGT1JNKFdJTikKKwogI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZpcnR1YWwg
TlNDYWNoZWRVUkxSZXNwb25zZSAqd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBO
U0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZXNv
dXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICAgICAgUmVmUHRyPFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwogI2VuZGlm
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CiAgICAgICAgIFJldGFpblB0cjxpZD4gbV9kZWxlZ2F0ZTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFVU0UoU09VUCkgJiYgIVBMQVRG
T1JNKENPQ09BKQorI2lmICFVU0UoU09VUCkgJiYgKCFQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
VVJMQ09OTkVDVElPTikpCiBkb3VibGUgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c19kZWZhdWx0VGlt
ZW91dEludGVydmFsID0gSU5UX01BWDsKICNlbHNlCiAvLyBXaWxsIHVzZSBOU1VSTFJlcXVlc3Qg
ZGVmYXVsdCB0aW1lb3V0IHVubGVzcyBzZXQgdG8gYSBub24temVybyB2YWx1ZSB3aXRoIHNldERl
ZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAkocmV2aXNpb24gMjA3
NTg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjEgKzM4LDE4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHBy
b3Bvc2VkQ3JlZGVudGlhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLSAgICA6IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZShwcm90ZWN0aW9uU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvcG9zZWRDcmVkZW50aWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKQor
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFBy
b3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3Nl
ZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAgOiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlLCBwcm9wb3NlZENyZWRl
bnRpYWwsIHByZXZpb3VzRmFpbHVyZUNvdW50LCByZXNwb25zZSwgZXJyb3IpCiB7CiB9CiAKIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhD
aGFsbGVuZ2VSZWYgY2ZDaGFsbGVuZ2UsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNh
dGlvbkNsaWVudCkKLSAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShjb3JlKENGVVJM
QXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLCBjb3JlKENGVVJM
QXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLCBDRlVSTEF1
dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5nZSksIChDRlVSTFJl
c3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNwb25zZShjZkNoYWxsZW5n
ZSksIENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3Bh
Y2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksIENy
ZWRlbnRpYWwoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxl
bmdlKSksCisjZWxzZQorICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksIGNvcmUoQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCisjZW5k
aWYKKyAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJlQ291bnQoY2ZD
aGFsbGVuZ2UpLCAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFsbGVuZ2VHZXRGYWlsdXJl
UmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLCBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJvcihjZkNoYWxs
ZW5nZSkpCiAgICAgLCBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50KGF1dGhlbnRpY2F0aW9uQ2xpZW50
KQogICAgICwgbV9jZkNoYWxsZW5nZShjZkNoYWxsZW5nZSkKIHsKQEAgLTgzLDEwICs4MCwxNyBA
QCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0CiB7CiAgICAgLy8gRklY
TUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/
IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0aGF0LgogCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNy
ZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmNmU3BhY2UoKSwgY29yZUNo
YWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5jZkNyZWRlbnRpYWwoKSwKKyNlbHNlCiAgICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRl
Q0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkpOwogICAgIFJldGFpblB0cjxD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNlID0gYWRvcHRDRihjcmVhdGVD
Rihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7Ci0KLSAgICByZXR1cm4gQ0ZVUkxB
dXRoQ2hhbGxlbmdlQ3JlYXRlKG51bGxwdHIsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVu
dGlhbC5nZXQoKSwgY29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hh
bGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwgY29yZUNoYWxsZW5nZS5l
cnJvcigpKTsKKyAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hh
bGxlbmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwK
KyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFs
bGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9u
c2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxl
bmdlLmVycm9yKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIENGVVJMQ3JlZGVudGlhbFJl
ZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKQEAgLTI3MSw2ICsy
NzUsNiBAQCBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3RlY3Rpb25TcGFjCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY2hlbWUpOwogfQogCi19OworfQogCiAjZW5kaWYgLy8gVVNF
KENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQXV0aGVudGljYXRpb25DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCShyZXZpc2lvbiAyMDc1ODQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDE4IEBAIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBQ
cm90ZWN0aW9uU3BhY2U7CiAKIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworI2lmIFBMQVRGT1JNKFdJTikKIENGVVJMQ3JlZGVu
dGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CiBDRlVSTFByb3RlY3Rpb25TcGFj
ZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oQ09DT0EpCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKENGVVJMQXV0aENoYWxs
ZW5nZVJlZik7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCiBDcmVkZW50aWFsIGNvcmUoQ0ZV
UkxDcmVkZW50aWFsUmVmKTsKIFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmKTsKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTggQEAKICNpbmNsdWRlICJDRk5ldHdvcmtTUEku
aCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgi
Ci0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Cisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVk
ZW50aWFsU3RvcmFnZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHN0
YXRpYyBpbmxpbmUgQ0ZVUkxDcmVkZW50aWFsUmVmIGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rp
b25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpCkBAIC00NSwx
MCArNTQsMjggQEAgc3RhdGljIGlubGluZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZQogCiBD
cmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgYXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVBy
b3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKSk7CisgICAgcmV0dXJuIENy
ZWRlbnRpYWwoY3JlZGVudGlhbENGLmdldCgpKTsKKyNlbHNlCiAgICAgYXV0byBwcm90ZWN0aW9u
U3BhY2VDRiA9IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKSk7CiAgICAgYXV0byBj
cmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShw
cm90ZWN0aW9uU3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxDRi5n
ZXQoKSk7CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgQ3JlZGVudGlhbFN0
b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJv
dGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQoreworICAgIFJldGFp
blB0cjxDRlVSTENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENGVVJM
Q3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoMCkpOworCisgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lz
dGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7CisgICAgICAgIENyZWRlbnRp
YWwgc2Vzc2lvbkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9y
U2Vzc2lvbik7CisgICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVu
dGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50aWFs
LmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJv
dGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwg
cHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3IuaAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDExICsyOCwxMCBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNlLmgiCiAKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9STShXSU4pCiAjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgogI2VuZGlmCisj
aWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3aW5jcnlw
dC5oPiAvLyB3aW5kb3dzLmggbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KICNl
bmRpZgpAQCAtNjMsOSArNjIsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJh
dG9yIENGRXJyb3JSZWYoKSBjb25zdDsKIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaWYg
UExBVEZPUk0oV0lOKQogICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGlu
dCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6
ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRfQ09OVEVY
VCBjZXJ0aWZpY2F0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZEYXRhUmVm
KTsKKyNlbmRpZgogICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CiAgICAg
Q0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgQ0ZTdHJl
YW1FcnJvcigpIGNvbnN0OwpAQCAtODksMTEgKzkwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2RhdGFJc1VwVG9EYXRlOwogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgbXV0YWJsZSBS
ZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwotI2VsaWYgUExBVEZPUk0oQ09D
T0EpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4g
bV9wbGF0Zm9ybU5TRXJyb3I7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gbV9jZXJ0aWZpY2F0ZTsKKyNlbmRpZgogI2Vsc2UKICAgICBtdXRhYmxl
IFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtRXJyb3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JD
Ri5jcHAJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTIg
QEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29ya0Vycm9ycy5oPgotI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRkVycm9yUmVmIGNmRXJy
b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAKICNpbmNsdWRlICJTeW5jaHJvbm91c0xvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNpbmNs
dWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW5j
bHVkZSA8cHJvY2Vzcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3LDYgKzU1LDIwIEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgorI2luY2x1ZGUgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2luY2x1ZGUgIldlYkNv
cmVVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2
Lmg+CisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KKyNlbmRpZgorI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNl
L1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2luY2x1ZGUgPHByb2Nlc3MuaD4KKwogLy8gRklY
TUU6IFJlbW92ZSB0aGlzIGRlY2xhcmF0aW9uIG9uY2UgaXQncyBpbiBXZWJLaXRTdXBwb3J0TGli
cmFyeS4KIGV4dGVybiAiQyIgewogX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVVJMQ29ubmVjdGlv
blJlZiBDRlVSTENvbm5lY3Rpb25DcmVhdGVXaXRoUHJvcGVydGllcygKQEAgLTY1LDYgKzc3LDcg
QEAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVVJMQ29ubmVjdGlvblJlZgogICBDRlVSTENvbm5l
Y3Rpb25DbGllbnQgKiAgY2xpZW50LAogICBDRkRpY3Rpb25hcnlSZWYgcHJvcGVydGllcyk7CiB9
CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDcsNyArMTIwLDExIEBAIFJl
c291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQogICAgIAogc3RhdGljIGlubGluZSBDRlN0
cmluZ1JlZiBzaG91bGRTbmlmZkNvbm5lY3Rpb25Qcm9wZXJ0eSgpCiB7CisjaWYgUExBVEZPUk0o
V0lOKQogICAgIHJldHVybiBDRlNUUigiX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNu
aWZmIik7CisjZWxzZQorICAgIHJldHVybiBfa0NGVVJMQ29ubmVjdGlvblByb3BlcnR5U2hvdWxk
U25pZmY7CisjZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25u
ZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVu
dFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25h
cnlSZWYgY2xpZW50UHJvcGVydGllcykKQEAgLTE0OSw2ICsxNjYsOSBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gc3NsUHJvcHM7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3NsUHJvcHMg
PSBhZG9wdENGKFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVx
dWVzdChmaXJzdFJlcXVlc3QoKSkpOworI2Vsc2UKICAgICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0
aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpKSkgewog
ICAgICAgICBzc2xQcm9wcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKHNzbFByb3BzLmdldCgpLCBrQ0ZTdHJlYW1TU0xBbGxvd3NBbnlSb290LCBrQ0ZCb29sZWFu
VHJ1ZSk7CkBAIC0xNjEsOCArMTgxLDExIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNG
VVJMQ29ubmVjdGkKICAgICBpZiAoY2xpZW50Q2VydCAhPSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5l
bmQoKSkgewogICAgICAgICBpZiAoIXNzbFByb3BzKQogICAgICAgICAgICAgc3NsUHJvcHMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgd2tTZXRDbGllbnRDZXJ0aWZp
Y2F0ZUluU1NMUHJvcGVydGllcyhzc2xQcm9wcy5nZXQoKSwgKGNsaWVudENlcnQtPnZhbHVlKS5n
ZXQoKSk7CisjZW5kaWYKICAgICB9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAgICAgaWYg
KHNzbFByb3BzKQogICAgICAgICBDRlVSTFJlcXVlc3RTZXRTU0xQcm9wZXJ0aWVzKHJlcXVlc3Qu
Z2V0KCksIHNzbFByb3BzLmdldCgpKTsKQEAgLTE4Myw2ICsyMDYsMTIgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigiX1dlYktpdFN5bmNocm9ub3VzUmVxdWVzdCIpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEgPSBkLT5tX2NvbnRleHQt
PnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCk7CisgICAgaWYgKHNvdXJjZUFwcGxpY2F0aW9u
QXVkaXREYXRhKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVz
LCBDRlNUUigia0NGU3RyZWFtUHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbiIpLCBzb3VyY2VBcHBs
aWNhdGlvbkF1ZGl0RGF0YS5nZXQoKSk7CisjZW5kaWYKKwogICAgIHN0YXRpYyBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJr
Q0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyIpOwogICAgIFJldGFpblB0cjxD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzRGljdGlvbmFyeTsKICAgICBpZiAoY2xp
ZW50UHJvcGVydGllcykKQEAgLTIwMSw3ICsyMzAsMTQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNE
aWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywg
c3RyZWFtUHJvcGVydGllcyk7CiAgICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQorICAg
ICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKKyAgICBl
bHNlCisgICAgICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7CisjZWxz
ZQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7CisjZW5kaWYKICAg
ICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwog
CiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRl
bGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNsaWVudCgpOwpAQCAtMjI4LDYgKzI2NCwxMCBAQCBib29s
IFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSh0aGlzKTsKIAorI2lmIEVOQUJMRShXRUJfVElNSU5HKSAmJiBQTEFURk9STShDT0NPQSkgJiYg
IUhBVkUoVElNSU5HREFUQU9QVElPTlMpCisgICAgc2V0Q29sbGVjdHNUaW1pbmdEYXRhKCk7Cisj
ZW5kaWYKKwogICAgIFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IgPSBjbGll
bnQoKS0+bG9hZGluZ1N5bmNocm9ub3VzWEhSKCkgPyBTY2hlZHVsaW5nQmVoYXZpb3I6OlN5bmNo
cm9ub3VzIDogU2NoZWR1bGluZ0JlaGF2aW9yOjpBc3luY2hyb25vdXM7CiAKICAgICBjcmVhdGVD
RlVSTENvbm5lY3Rpb24oc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGQtPm1fc2hvdWxkQ29u
dGVudFNuaWZmLCBzY2hlZHVsaW5nQmVoYXZpb3IsIGNsaWVudCgpLT5jb25uZWN0aW9uUHJvcGVy
dGllcyh0aGlzKS5nZXQoKSk7CkBAIC0zMTEsNiArMzUxLDE2IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50
KCkgPT0gdGhpcyk7IC8vIFNob3VsZCBiZSBhbHJlYWR5IHNldC4KIAorI2lmICFQTEFURk9STShX
SU4pCisgICAgLy8gUHJveHkgYXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBieSBDRk5ldHdvcmsg
aW50ZXJuYWxseS4gV2UgY2FuIGdldCBoZXJlIGlmIHRoZSB1c2VyIGNhbmNlbHMKKyAgICAvLyBD
Rk5ldHdvcmsgYXV0aGVudGljYXRpb24gZGlhbG9nLCBhbmQgd2Ugc2hvdWxkbid0IGFzayB0aGUg
Y2xpZW50IHRvIGRpc3BsYXkgYW5vdGhlciBvbmUgaW4gdGhhdCBjYXNlLgorICAgIGlmIChjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQcm94eSgpKSB7CisgICAgICAgIC8vIENhbm5vdCB1
c2UgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKCksIGJlY2F1c2Ug
Y3VycmVudCBjaGFsbGVuZ2UgaXMgbm90IHlldCBzZXQuCisgICAgICAgIENGVVJMQ29ubmVjdGlv
blVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCAwLCBjaGFsbGVuZ2UuY2ZVUkxB
dXRoQ2hhbGxlbmdlUmVmKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAg
ICBpZiAodHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNoYWxsZW5nZSkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMzMxLDcgKzM4MSwxMSBAQCBib29sIFJlc291cmNlSGFuZGxl
Ojp0cnlIYW5kbGVQYXNzd29yZEJhCiAKICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAh
ZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxS
ZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3Mu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9u
ZSkpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwg
PSBDcmVkZW50aWFsKGNmQ3JlZGVudGlhbC5nZXQoKSk7CisjZWxzZQogICAgICAgICBDcmVkZW50
aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNmQ3JlZGVudGlhbC5nZXQoKSk7CisjZW5kaWYKICAgICAg
ICAgCiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1
cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMzYxLDggKzQxNSwxMiBA
QCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAgICAgICAgICAgICAg
ICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBh
cyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5t
X2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoY3JlZGVu
dGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3Bv
bnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlv
bi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3Jl
ZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7
CiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5l
Y3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxs
ZW5nZVJlZigpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC00MTIsMTIgKzQ3MCwyMCBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNl
c3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5l
Y3Rpb24pIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIENGVVJMQ29ubmVjdGlv
blVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3Jl
ZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworI2Vsc2UKICAg
ICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFk
b3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQo
KSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbmRpZgogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSk7CisjZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBj
ZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVu
dGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyNlbmRpZgog
ICAgIH0KIAogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKQEAgLTU1OCw2ICs2MjQsMzAgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMbwogICAgICAgICBDRlVSTENv
bm5lY3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQordm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWly
KQoreworICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7CisgICAgaWYg
KCFydW5Mb29wKQorICAgICAgICByZXR1cm47CisKKyAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVs
ZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkp
OworICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkgeworICAgICAgICBDRlVSTENvbm5l
Y3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAgICAgICBkLT5tX3N0YXJ0V2hl
blNjaGVkdWxlZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5z
Y2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCit7CisgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3Ag
PSBwYWlyLnJ1bkxvb3AoKTsKKyAgICBpZiAoIXJ1bkxvb3ApCisgICAgICAgIHJldHVybjsKKwor
ICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKK30KKyNlbmRpZgorCiBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDE0IEBACiAjaW5j
bHVkZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUs
OSBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6c2V0
dXBSZXF1ZXN0KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJlcXVl
c3QsIDEpOworI2VuZGlmCiAgICAgQ0ZVUkxSZWYgcmVxdWVzdFVSTCA9IENGVVJMUmVxdWVzdEdl
dFVSTChyZXF1ZXN0KTsKICAgICBpZiAoIXJlcXVlc3RVUkwpCiAgICAgICAgIHJldHVybjsKQEAg
LTE0Niw4ICsxNDksMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YQogICAgICAgICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJlc3BvbnNlLCBpc01h
aW5SZXNvdXJjZUxvYWQpOwogICAgICAgICB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgICAg
ICBpZiAoX0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KG1faGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJG
b3JjZUhUTUxNSU1FVHlwZSIpKSkKICAgICAgICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlw
ZShjZlJlc3BvbnNlLCBDRlNUUigidGV4dC9odG1sIikpOworI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCiAgICAgICAgIAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2Uo
Y2ZSZXNwb25zZSk7CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCkBAIC0yODMsNyArMjg4LDE1IEBA
IEJvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWwKIAogICAgICAgICBMT0co
TmV0d29yaywgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGhhbmRsZT0lcCkg
KCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpOworICAg
ICAgICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFj
ZShwcm90ZWN0aW9uU3BhY2UpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgaWYgKGNvcmVQ
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZVVua25vd24pIHsKKyAgICAgICAgICAgIG1fYm9vbFJlc3VsdCA9
IGZhbHNlOworICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9y
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisgICAgICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOwogICAgIH0pOwogICAgIGRpc3BhdGNoX3NlbWFwaG9y
ZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwogICAgIHJldHVybiBt
X2Jvb2xSZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDYgKzYyLDEyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNv
dXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICopOworICAgIHZvaWQgdXBkYXRlTlNVUkxSZXF1ZXN0
KCk7CisgICAgdm9pZCBjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCk7CisjZW5kaWYKKwogICAg
IFJlc291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UoKQogICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkKQEAg
LTc4LDcgKzg0LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZy
b21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBi
b29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBC
b2R5IHx8IG1fY2ZSZXF1ZXN0OyB9CisjZWxzZQogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1Bs
YXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0K
KyNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhU
VFBCb2R5VXBkYXRlUG9saWN5KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBD
RlN0cmluZ1JlZiBpc1VzZXJJbml0aWF0ZWRLZXkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQs
NyBAQCBib29sIFJlc291cmNlUmVxdWVzdDo6c19odHRwUGlwZWxpbmluZ0VuCiB0eXBlZGVmIHZv
aWQgKCpDRlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXlGdW5jdGlvbikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgQ0ZBcnJheVJlZik7CiB0eXBlZGVm
IENGQXJyYXlSZWYgKCpDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5RnVuY3Rpb24pKENGVVJMUmVxdWVzdFJlZik7CiAKKyNpZiBQTEFURk9STShX
SU4pCiBzdGF0aWMgSE1PRFVMRSBmaW5kQ0ZOZXR3b3JrTW9kdWxlKCkKIHsKICNpZm5kZWYgREVC
VUdfQUxMCkBAIC04Miw2ICs4MywxNyBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnRE
aXNwb3NpdGlvCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZXF1ZXN0Q29w
eUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uPihHZXRQcm9j
QWRkcmVzcyhmaW5kQ0ZOZXR3b3JrTW9kdWxlKCksICJfQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnRE
aXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSIpKTsKIH0KKyNlbGlmIFBMQVRGT1JNKENP
Q09BKQorc3RhdGljIENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheUZ1bmN0aW9uIGZpbmRDRlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Q0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5RnVuY3Rpb24+KGRsc3ltKFJUTERfREVGQVVMVCwgIl9DRlVSTFJlcXVlc3RTZXRDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkiKSk7Cit9CisKK3N0YXRpYyBDRlVSTFJl
cXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24g
ZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXlGdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZXF1ZXN0
Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uPihkbHN5
bShSVExEX0RFRkFVTFQsICJfQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheSIpKTsKK30KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBzZXRDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBy
ZXF1ZXN0LCBDRkFycmF5UmVmIGZhbGxiYWNrQXJyYXkpCiB7CkBAIC0xNDQsNiArMTU2LDEwIEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICAgICBpZiAocmVzb3Vy
Y2VQcmlvcml0aWVzRW5hYmxlZCgpKQogICAgICAgICBDRlVSTFJlcXVlc3RTZXRSZXF1ZXN0UHJp
b3JpdHkoY2ZSZXF1ZXN0LCB0b1BsYXRmb3JtUmVxdWVzdFByaW9yaXR5KHByaW9yaXR5KCkpKTsK
IAorI2lmICFQTEFURk9STShXSU4pCisgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVy
dHkoY2ZSZXF1ZXN0LCBrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQT1NUQ2FjaGluZywga0NGQm9vbGVh
blRydWUpOworI2VuZGlmCisKICAgICBzZXRIZWFkZXJGaWVsZHMoY2ZSZXF1ZXN0LCBodHRwSGVh
ZGVyRmllbGRzKCkpOwogCiAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tp
ZXMoY2ZSZXF1ZXN0LCBhbGxvd0Nvb2tpZXMoKSk7CkBAIC0xNjgsNiArMTg0LDkgQEAgdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogI2VuZGlmCiAKICAgICBtX2NmUmVx
dWVzdCA9IGFkb3B0Q0YoY2ZSZXF1ZXN0KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGVh
ck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCk7CisjZW5kaWYKIH0KIAogLy8gRklYTUU6IFdlIHNob3Vs
ZCB1c2UgYSBzd2l0Y2ggYmFzZWQgb24gUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcGFyYW1l
dGVyCkBAIC0yMDYsMTIgKzIyNSwzMCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybUhUCiAgICAgfQogCiAgICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpOwor
I2VuZGlmCiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVz
dCgpCiB7CiAgICAgaWYgKCFtX2NmUmVxdWVzdCkgeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAg
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzk5MTM1MjY+CisgICAgICAgIC8vIFRoaXMgaXMgYSBoYWNr
IHRvIG1pbWljIHRoZSBzdWJ0bGUgYmVoYXZpb3VyIG9mIHRoZSBGb3VuZGF0aW9uIGJhc2VkIFJl
c291cmNlUmVxdWVzdAorICAgICAgICAvLyBjb2RlLiBUaGF0IGNvZGUgZG9lcyBub3QgcmVzZXQg
bV9odHRwTWV0aG9kIGlmIHRoZSBOU1VSTFJlcXVlc3QgaXMgbmlsLiBJIGZpbGVkCisgICAgICAg
IC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzMzY+IHRvIHRy
YWNrIHRoYXQuCisgICAgICAgIC8vIEFub3RoZXIgcmVsYXRlZCBidWcgaXMgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjM1MD4uIEZpeGluZyB0aGF0CisgICAgICAg
IC8vIHdvdWxkLCBpZGVhbGx5LCBhbGxvdyB1cyB0byBub3QgaGF2ZSB0aGlzIGhhY2suIEJ1dCB1
bmZvcnR1bmF0ZWx5IHRoYXQgY2F1c2VkIGxheW91dCB0ZXN0CisgICAgICAgIC8vIGZhaWx1cmVz
LgorICAgICAgICAvLyBSZW1vdmFsIG9mIHRoaXMgaGFjayBpcyB0cmFja2VkIGJ5IDxyZGFyOi8v
cHJvYmxlbS85OTcwNDk5Pi4KKworICAgICAgICBTdHJpbmcgaHR0cE1ldGhvZCA9IG1faHR0cE1l
dGhvZDsKICAgICAgICAgKnRoaXMgPSBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgbV9odHRw
TWV0aG9kID0gaHR0cE1ldGhvZDsKKyNlbHNlCisgICAgICAgICp0aGlzID0gUmVzb3VyY2VSZXF1
ZXN0KCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjg3LDYgKzMyNCw5
IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAgICBpZiAoc3Rv
cmFnZVNlc3Npb24pCiAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihjZlJl
cXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1
ZXN0KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0
KCk7CisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2UuaAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDkg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAhY2ZSZXNwb25zZTsKICAgICB9
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25z
ZShOU1VSTFJlc3BvbnNlICopOworI2VuZGlmCiAjZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2Uo
TlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRp
YWxpemVkKQpAQCAtMTE2LDcgKzExOSw4IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG1fY2ZSZXNw
b25zZTsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbV9uc1Jlc3BvbnNlOwogI2Vu
ZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3NTg0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZO
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVh
ZGVyRmllbGRzW10gPSB7CkBAIC00Myw5ICs0NywxMyBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29u
c3QgY29tbW9uSGVhZGVyRmllCiBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNm
VVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVs
bCkgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBuc1VSTFJlc3BvbnNlKCk7CisjZWxz
ZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1fdXJsLmNyZWF0ZUNGVVJMKCk7
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5IGluY29tcGxldGUgQ0ZVUkxS
ZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3RhdHVzIGNvZGUuCiAgICAgICAg
IG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0KCks
IG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbV9leHBlY3RlZENv
bnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CisjZW5kaWYKICAgICB9CiAKICAg
ICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTA4LDEwICsxMTYsMTIgQEAgdm9pZCBS
ZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAgIG1faW5pdExldmVsID0gaW5p
dExldmVsOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQogQ2VydGlmaWNhdGVJbmZvIFJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKICAgICByZXR1
cm4geyB9OwogfQorI2VuZGlmCiAKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybVN1
Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHJl
dmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgpAQCAtNDEsNiArNDAsMjAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiV2ViQ29yZVRo
cmVhZC5oIgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCkBAIC01MCwxMSArNjMsMjAgQEAgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbgogCiB2b2lkIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBSZXF1ZXN0KENGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgQ0ZVUkxS
ZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJlcXVlc3QsIDEpOworI2VuZGlmCiB9
CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpzZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9u
KQogeworI2lmIFBMQVRGT1JNKFdJTikKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhD
dXJyZW50TWVzc2FnZVF1ZXVlKGNvbm5lY3Rpb24pOworI2VsaWYgUExBVEZPUk0oSU9TKQorICAg
IENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoY29ubmVjdGlvbiwgV2ViVGhyZWFk
UnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2Vsc2UKKyAgICBDRlVSTENvbm5l
Y3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGNvbm5lY3Rpb24sIENGUnVuTG9vcEdldEN1cnJlbnQo
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyNlbmRpZgogICAgIENGVVJMQ29ubmVjdGlvblNj
aGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChjb25uZWN0aW9uLCBsb2FkZXJSdW5Mb29wKCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKQEAgLTgxLDYgKzEwMyw3IEBAIENGVVJMUmVxdWVz
dFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGwKICAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0Owog
fQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQogc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBl
KENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRl
ZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCku
bGVha1JlZigpOwpAQCAtMTEwLDE0ICsxMzMsMzAgQEAgc3RhdGljIHZvaWQgYWRqdXN0TUlNRVR5
cGVJZk5lY2Vzc2FyeShDRgogICAgIGlmIChyZXN1bHQgIT0gb3JpZ2luYWxSZXN1bHQpCiAgICAg
ICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCByZXN1bHQuZ2V0KCkpOwog
fQorI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENv
bm5lY3Rpb25SZWYsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3ZvaWQgU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9u
c2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNw
b25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlPSVw
KSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAg
ICByZXR1cm47CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBBdm9pZCBNSU1FIHR5cGUg
c25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4K
KyAgICBhdXRvIG1zZyA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7
CisgICAgaW50IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0
dXNDb2RlKG1zZykgOiAwOworCisgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KSB7CisgICAgICAg
IGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVl
c3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOworICAgICAgICBhZGp1
c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7Cisg
ICAgfQorCisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBpZiAoX0NGVVJMUmVxdWVzdENvcHlQcm90
b2NvbFByb3BlcnR5Rm9yS2V5KG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3Qo
RG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKKyAgICAg
ICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0L2h0bWwi
KSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyNlbHNlCiAgICAgaWYgKCFDRlVSTFJlc3Bv
bnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSkpCiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkoY2ZSZXNwb25zZSk7CiAKQEAgLTEyNiw2ICsxNjUsNyBAQCB2b2lkIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVCghbV9oYW5kbGUtPnNob3Vs
ZENvbnRlbnRTbmlmZigpKTsKICAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2Up
OwogICAgIH0KKyNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgYm9vbCBpc1F1aWNr
TG9va1ByZXZpZXcgPSBmYWxzZTsKQEAgLTEzNyw2ICsxNzcsMTIgQEAgdm9pZCBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogI2VuZGlmCiAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7CisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShXRUJfVElNSU5HKQorICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5n
RGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLm5ldHdvcmtMb2FkVGltaW5nKCkpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisjZW5kaWYKKwogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0SXNRdWlja0xvb2soaXNRdWlja0xv
b2tQcmV2aWV3KTsKICNlbmRpZgpAQCAtMTg1LDYgKzIzMSw3IEBAIHZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKIAogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3Bv
bnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CisjaWYgUExBVEZP
Uk0oV0lOKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBD
YWNoaW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KICAgICAvLyBGSVhNRTog
V2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3
MTUwOSkuCiAgICAgQ0ZVUkxSZXNwb25zZVJlZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVS
TFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKTsKQEAgLTE5NCw4ICsy
NDEsMTYgQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJvbm91c1Jlc291cgogICAgICAg
ICBpZiAodmFyeVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorI2VuZGlmIC8v
IFBMQVRGT1JNKFdJTikKKworI2lmIFBMQVRGT1JNKFdJTikKICAgICBpZiAobV9oYW5kbGUtPmNs
aWVudCgpICYmICFtX2hhbmRsZS0+Y2xpZW50KCktPnNob3VsZENhY2hlUmVzcG9uc2UobV9oYW5k
bGUsIGNhY2hlZFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgbmV3UmVzcG9uc2UgPSBtX2hhbmRsZS0+Y2xpZW50KCktPndpbGxD
YWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7CisgICAgaWYgKG5ld1Jlc3Bv
bnNlICE9IGNhY2hlZFJlc3BvbnNlKQorICAgICAgICByZXR1cm4gbmV3UmVzcG9uc2U7CisjZW5k
aWYKIAogICAgIENGUmV0YWluKGNhY2hlZFJlc3BvbnNlKTsKICAgICByZXR1cm4gY2FjaGVkUmVz
cG9uc2U7CkBAIC0yMzIsNyArMjg3LDE0IEBAIEJvb2xlYW4gU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ28KIAogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25T
cGFjZShoYW5kbGU9JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAg
UHJvdGVjdGlvblNwYWNlIGNvcmVQcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlKTsKKyAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
blNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKKyNlbHNlCiAg
ICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGNvcmUocHJvdGVjdGlvblNwYWNlKSk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBVU0UoUFJPVEVD
VElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgJKHJldmlzaW9u
IDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVu
dGlhbENvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSA8
U2VjdXJpdHkvU2VjQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCisjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCisjZW5kaWYKKwog
T0JKQ19DTEFTUyBOU1VSTENyZWRlbnRpYWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3
LDEyICs1MSwxOCBAQCBwdWJsaWM6CiAKICAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwm
LCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwogCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAg
ICBleHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZik7CisjZW5kaWYKICAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNv
ZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRpYWwg
JiYgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7IH0K
IAorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisgICAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3Jl
ZGVudGlhbCgpIGNvbnN0OworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50
aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29t
cGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFs
Q29jb2EubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
NiwxMyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsQ29jb2EuaCIK
IAorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCitAaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCAo
V2ViRGV0YWlscykKKy0gKGlkKV9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDooQ0ZVUkxDcmVkZW50
aWFsUmVmKWNyZWRlbnRpYWw7CistIChDRlVSTENyZWRlbnRpYWxSZWYpIF9DRlVSTENyZWRlbnRp
YWw7CitAZW5kCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNVUkxD
cmVkZW50aWFsUGVyc2lzdGVuY2UgdG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZShDcmVkZW50
aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCkBAIC03NywxMiArODQsMjYgQEAgQ3JlZGVudGlh
bDo6Q3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJgogICAgIH0KIH0KIAorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCitDcmVkZW50aWFsOjpDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZiBj
cmVkZW50aWFsKQorICAgIDogQ3JlZGVudGlhbChhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFs
bG9jXSBfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6Y3JlZGVudGlhbF0pLmdldCgpKQoreworfQor
I2VuZGlmCisKIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICpjcmVkZW50
aWFsKQogICAgIDogQ3JlZGVudGlhbEJhc2UoY3JlZGVudGlhbC51c2VyLCBjcmVkZW50aWFsLnBh
c3N3b3JkLCB0b0NyZWRlbnRpYWxQZXJzaXN0ZW5jZShjcmVkZW50aWFsLnBlcnNpc3RlbmNlKSkK
ICAgICAsIG1fbnNDcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiB9CiAKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorQ0ZVUkxDcmVkZW50aWFsUmVmIENyZWRlbnRpYWw6OmNmQ3JlZGVudGlhbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFtuc0NyZWRlbnRpYWwoKSBfQ0ZVUkxDcmVkZW50aWFsXTsK
K30KKyNlbmRpZgorCiBOU1VSTENyZWRlbnRpYWwgKkNyZWRlbnRpYWw6Om5zQ3JlZGVudGlhbCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fbnNDcmVkZW50aWFsKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNl
Q29jb2EuaAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCwxMCBAQAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQordHlwZWRlZiBzdHJ1
Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKKyNlbmRp
ZgorCiBPQkpDX0NMQVNTIE5TVVJMUHJvdGVjdGlvblNwYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00Miw2ICs0Niw5IEBAIHB1YmxpYzoKIAogICAgIFByb3RlY3Rpb25TcGFjZShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRlZFZhbHVlKSA6IFByb3RlY3Rpb25TcGFj
ZUJhc2UoZGVsZXRlZFZhbHVlKSB7IH0KIAorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisgICAg
ZXhwbGljaXQgUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKKyNlbmRp
ZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShOU1VSTFByb3Rl
Y3Rpb25TcGFjZSAqKTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYik7CkBAIC01MCw2ICs1
Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVjZWl2ZXNDcmVkZW50
aWFsU2VjdXJlbHkoKSBjb25zdDsKIAorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisgICAgQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VSZWYgY2ZTcGFjZSgpIGNvbnN0OworI2VuZGlmCiAgICAgV0VCQ09S
RV9FWFBPUlQgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKm5zU3BhY2UoKSBjb25zdDsKIAogcHJpdmF0
ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQkocmV2aXNpb24gMjA3NTg0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsMjIgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIKIAorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCitAaW50ZXJmYWNlIE5TVVJMUHJvdGVjdGlvblNwYWNlIChXZWJEZXRhaWxzKQorLSAo
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIF9DRlVSTFByb3RlY3Rpb25TcGFjZTsKKy0gKGlkKV9p
bml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOihDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiljZlBy
b3RTcGFjZTsKK0BlbmQKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQorUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWYgc3BhY2UpCisgICAgOiBQcm90ZWN0aW9uU3BhY2UoYWRvcHROUyhb
W05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFj
ZTpzcGFjZV0pLmdldCgpKQoreworfQorI2VuZGlmCisKIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2VT
ZXJ2ZXJUeXBlIHR5cGUoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogewogICAgIGlmIChb
c3BhY2UgaXNQcm94eV0pIHsKQEAgLTkyLDYgKzEwNSwxMyBAQCBQcm90ZWN0aW9uU3BhY2U6OlBy
b3RlY3Rpb25TcGFjZShOU1VSTFByCiAgICAgbV9uc1NwYWNlID0gc3BhY2U7CiB9CiAKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNw
YWNlOjpjZlNwYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VdOworfQorI2VuZGlmCisKIE5TVVJMUHJvdGVjdGlvblNwYWNlICpQcm90ZWN0
aW9uU3BhY2U6Om5zU3BhY2UoKSBjb25zdAogewogICAgIGlmIChtX25zU3BhY2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzLDkgKzUzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVx
dWVzdCAqUmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kg
Ym9keVBvbGljeSkgY29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGlj
eSk7CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBpZiAoIW1fbnNSZXF1ZXN0KQorICAg
ICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJlcXVl
c3QoKTsKKyNlbmRpZgogICAgIHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwogfQogCisjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCisKIENGVVJMUmVxdWVz
dFJlZiBSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBi
b2R5UG9saWN5KSBjb25zdAogewogICAgIHJldHVybiBbbnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kp
IF9DRlVSTFJlcXVlc3RdOwpAQCAtMjM4LDYgKzI0NCw4IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0
OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVx
dWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkp
KTsKIH0KIAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
c3BvbnNlQ29jb2EubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw4ICs3NSwxMyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OmRpc2FibGVMYXp5SW5p
dGlhCiAKIENlcnRpZmljYXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mbygpIGNvbnN0CiB7CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBBU1NFUlQo
bV9jZlJlc3BvbnNlKTsKKyAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBtX2NmUmVz
cG9uc2UuZ2V0KCk7CisjZWxzZQogICAgIEFTU0VSVChtX25zUmVzcG9uc2UpOwogICAgIENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSA9IFttX25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwor
I2VuZGlmCiAKICAgICBpZiAoIWNmUmVzcG9uc2UpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0x
MDksNiArMTE0LDM1IEBAIENlcnRpZmljYXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm8K
ICNlbmRpZgogfQogCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKworTlNVUkxSZXNwb25zZSAq
UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25z
UmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKKyAgICAgICAgaW5pdE5T
VVJMUmVzcG9uc2UoKTsKKyAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5nZXQo
KSBfQ0ZVUkxSZXNwb25zZV07CisgICAgICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Cisg
ICAgfQorCisgICAgaWYgKCFtX2NmUmVzcG9uc2UpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBpZiAoIW1fbnNSZXNwb25zZSkKKyAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9u
c2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgpXTsKKworICAg
IHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Cit9CisKK1Jlc291cmNlUmVzcG9uc2U6OlJlc291
cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKKyAgICA6IG1faW5pdExldmVs
KFVuaW5pdGlhbGl6ZWQpCisgICAgLCBtX2NmUmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVz
cG9uc2VdKQorICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCit7CisgICAgbV9pc051bGwg
PSAhbnNSZXNwb25zZTsKK30KKworI2Vsc2UKKwogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21t
b25IZWFkZXJGaWVsZHNbXSA9IHsKICAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29u
dGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVk
IiwgQCJQcmFnbWEiCiB9OwpAQCAtMjA4LDYgKzI0Miw4IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1Db21wYXJlKGMKICAgICByZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5u
c1VSTFJlc3BvbnNlKCk7CiB9CiAKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCShy
ZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9R
dWlja0xvb2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTAgQEAKICNpbXBvcnQgPG9i
amMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQorI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgorI2VuZGlmCisKIE9CSkNf
Q0xBU1MgTlNEYXRhOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TRmls
ZUhhbmRsZTsKQEAgLTc3LDYgKzgxLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhh
bmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsK
KyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVp
Y2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsKKyNlbmRp
ZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBsYXRmb3Jt
IHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1
aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogCkBAIC04OCw2ICs5NSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZEZhaWwoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zUmVz
cG9uc2UoKTsKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorICAgIENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSgpOworI2VuZGlmCiAKICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1
aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSw4MSBAQCBjb25z
dCBjaGFyKiBXZWJDb3JlOjpRTFByZXZpZXdQcm90b2NvbCgpCiAgICAgcmV0dXJuIHByZXZpZXdQ
cm90b2NvbC5nZXQoKS5kYXRhKCk7CiB9CiAKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorLy8g
VGhlIHdheSBRdWlja0xvb2sgd29ya3MgaXMgd2UgcGFzcyBpdCBhbiBOU1VSTENvbm5lY3Rpb25E
ZWxlZ2F0ZSBjYWxsYmFjayBvYmplY3QgYXQgY3JlYXRpb24KKy8vIHRpbWUuIFRoZW4gd2UgcGFz
cyBpdCBhbGwgdGhlIGRhdGEgYXMgd2UgcmVjZWl2ZSBpdC4gT25jZSB3ZSd2ZSBkb3dubG9hZGVk
IHRoZSBmdWxsIFVSTCwKKy8vIFF1aWNrTG9vayB0dXJucyBhcm91bmQgYW5kIHNlbmQgdXMsIHRo
cm91Z2ggdGhpcyBkZWxlZ2F0ZSwgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSB3aGljaCB3
ZQorLy8gcGFzcyBvbiB0byBXZWJDb3JlLiBUaGUgZmxhZyBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJ
bnRvQ29udmVydGVyIGluIFF1aWNrTG9va0hhbmRsZSBkZWNpZGVzCisvLyB3aGV0aGVyIHRvIHBh
c3MgdGhlIGRhdGEgdG8gUXVpY2tMb29rIG9yIFdlYkNvcmUuCisvLworLy8gVGhpcyB3b3JrcyBm
aW5lIHdoZW4gdXNpbmcgTlMgQVBJcywgYnV0IHdoZW4gdXNpbmcgQ0ZOZXR3b3JrLCB3ZSBkb24n
dCBoYXZlIGEgTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUuCisvLyBTbyB3ZSBjcmVhdGUgV2ViUXVp
Y2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBhcyBhbiBpbnRlcm1lZGlhdGUgZGVsZWdhdGUgb2JqZWN0
IGFuZCBwYXNzIGl0IHRvCisvLyBRTFByZXZpZXdDb252ZXJ0ZXIuIFRoZSBwcm94eSBkZWxlZ2F0
ZSB0aGVuIGZvcndhcmRzIHRoZSBtZXNzYWdlcyBvbiB0byB0aGUgQ0ZOZXR3b3JrIGNvZGUuCitA
aW50ZXJmYWNlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxD
b25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CisgICAg
UmVmUHRyPFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4g
bV9jb25uZWN0aW9uRGVsZWdhdGU7Cit9CisKKy0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVn
YXRlOihTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNv
bm5lY3Rpb25EZWxlZ2F0ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlF1aWNrTG9va0hh
bmRsZUFzRGVsZWdhdGUKKy0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxl
Z2F0ZQoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gY29ubmVjdGlvbkRlbGVn
YXRlOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGFBcnJheTooTlNBcnJheSAqKWRhdGFB
cnJheQoreworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBpZiAoIW1fY29ubmVj
dGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgTE9HKE5ldHdvcmssICJXZWJRdWlj
a0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KCkiKTsKKyAgICBtX2Nv
bm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGFBcnJheShyZWludGVycHJldF9jYXN0PENG
QXJyYXlSZWY+KGRhdGFBcnJheSkpOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3Ro
UmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAoreworICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisgICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRS
ZWNlaXZlRGF0YSgpIC0gZGF0YSBsZW5ndGggPSAlbGQiLCAobG9uZylbZGF0YSBsZW5ndGhdKTsK
KworICAgIC8vIFF1aWNrTG9vayBjb2RlIHNlbmRzIHVzIGEgbmlsIGRhdGEgYXQgdGltZXMuIFRo
ZSBjaGVjayBiZWxvdyBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluCisgICAgLy8gUmVzb3VyY2VI
YW5kbGVNYWMuY3BwIGFkZGVkIGZvciBhIGRpZmZlcmVudCBidWcuCisgICAgaWYgKCFbZGF0YSBs
ZW5ndGhdKQorICAgICAgICByZXR1cm47CisgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJl
Y2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhKSwgc3RhdGljX2Nhc3Q8
aW50PihsZW5ndGhSZWNlaXZlZCkpOworfQorCistICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hM
b2FkaW5nOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCit7CisgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOworICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRp
ZEZpbmlzaExvYWRpbmcoKSIpOworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGaW5pc2hM
b2FkaW5nKCk7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29u
bmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0
ZTo6ZGlkRmFpbCgpIik7CisgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZhaWwocmVpbnRl
cnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpOworfQorCistICh2b2lkKWRldGFjaEhhbmRs
ZQoreworICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsKK30KK0BlbmQKKyNlbmRp
ZgorCiBAaW50ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09i
amVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVn
YXRlPiB7CiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBfcmVzb3VyY2VMb2FkZXI7CiAgICAg
Qk9PTCBfaGFzU2VudERpZFJlY2VpdmVSZXNwb25zZTsKQEAgLTMzOSw2ICs0MTQsMjYgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMbwogICAgIHJldHVybiBxdWlja0xv
b2tIYW5kbGU7CiB9CiAKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorc3RkOjp1bmlxdWVfcHRy
PFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
KiBjb25uZWN0aW9uRGVsZWdhdGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3sKKyAg
ICBBU1NFUlRfQVJHKGhhbmRsZSwgaGFuZGxlKTsKKyAgICBpZiAoaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS5yZXF1ZXN0ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbiB8fCAh
W1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0
cmluZyAqKUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJl
c3BvbnNlIF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOworICAgIFdlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tbV2ViUXVpY2tMb29rSGFuZGxl
QXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6Y29ubmVjdGlvbkRl
bGVnYXRlXSBhdXRvcmVsZWFzZV07CisgICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRs
ZT4gcXVpY2tMb29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2hhbmRsZS0+Zmlyc3RSZXF1
ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwgbnNSZXNw
b25zZSwgZGVsZWdhdGUpKTsKKyAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVRdWlja0xv
b2tIYW5kbGUoKnF1aWNrTG9va0hhbmRsZSk7CisgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsK
K30KKworQ0ZVUkxSZXNwb25zZVJlZiBRdWlja0xvb2tIYW5kbGU6OmNmUmVzcG9uc2UoKQorewor
ICAgIHJldHVybiBbbV9uc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXTsKK30KKyNlbmRpZgorCiBi
b29sIFF1aWNrTG9va0hhbmRsZTo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBl
c1NldCgpIGNvbnRhaW5zT2JqZWN0Om1pbWVUeXBlXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291
cmNlSGFuZGxlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyAg
UmVzb3VyY2VIYW5kbGVJUGhvbmUubW0KKy8vICBXZWJDb3JlCisvLworLy8gIENvcHlyaWdodCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKKworI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgor
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3RQcml2YXRlLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NGTXV0YWJsZURpY3Rpb25h
cnlSZWYgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBOU1N0cmluZyAqaG9zdCA9
IHJlcXVlc3QudXJsKCkuaG9zdCgpOworICAgIE5TQXJyYXkgKmNlcnRBcnJheSA9IFtOU1VSTFJl
cXVlc3QgYWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsKKyAgICBC
T09MIGFsbG93c0FueUNlcnRpZmljYXRlID0gW05TVVJMUmVxdWVzdCBhbGxvd3NBbnlIVFRQU0Nl
cnRpZmljYXRlRm9ySG9zdDpob3N0XTsKKyAgICBpZiAoIWNlcnRBcnJheSAmJiAhYWxsb3dzQW55
Q2VydGlmaWNhdGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgQ0ZNdXRhYmxlRGljdGlvbmFy
eVJlZiBzc2xQcm9wcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgaWYgKGNlcnRBcnJheSkKKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoc3NsUHJvcHMsIF9rQ0ZTdHJlYW1TU0xUcnVzdGVkTGVhZkNlcnRpZmljYXRl
cywgKENGVHlwZVJlZikgY2VydEFycmF5KTsKKworICAgIGlmIChhbGxvd3NBbnlDZXJ0aWZpY2F0
ZSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIGtDRlN0cmVhbVNTTFZh
bGlkYXRlc0NlcnRpZmljYXRlQ2hhaW4sIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgcmV0dXJuIHNz
bFByb3BzOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJl
cXVlc3RJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKworQGludGVy
ZmFjZSBOU1VSTFJlcXVlc3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMpCistIChDRlVSTFJlcXVl
c3RSZWYpX0NGVVJMUmVxdWVzdDsKKy0gKGlkKV9pbml0V2l0aENGVVJMUmVxdWVzdDooQ0ZVUkxS
ZXF1ZXN0UmVmKXJlcXVlc3Q7CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCisKK1Jlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KE5T
VVJMUmVxdWVzdCAqbnNSZXF1ZXN0KQorICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCisgICAg
LCBtX2NmUmVxdWVzdChbbnNSZXF1ZXN0IF9DRlVSTFJlcXVlc3RdKQorICAgICwgbV9uc1JlcXVl
c3QobnNSZXF1ZXN0KQoreworfQorCit2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxS
ZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9jZlJlcXVlc3QpCisgICAgICAgIG1fbnNSZXF1ZXN0ID0g
YWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVz
dDptX2NmUmVxdWVzdC5nZXQoKV0pOworfQorCit2b2lkIFJlc291cmNlUmVxdWVzdDo6Y2xlYXJP
clVwZGF0ZU5TVVJMUmVxdWVzdCgpCit7CisgICAgLy8gVGhlcmUgaXMgY2xpZW50IGNvZGUgdGhh
dCBleHRlbmRzIE5TVVJMUmVxdWVzdCBhbmQgZXhwZWN0cyB0byBnZXQgYmFjaywgaW4gdGhlIGRl
bGVnYXRlCisgICAgLy8gY2FsbGJhY2tzLCBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSB0aGF0
IHRoZXkgcGFzc2VkIGludG8gV2ViS2l0LiBUbyBrZWVwIHRoZW4gcnVubmluZywgd2UKKyAgICAv
LyBjcmVhdGUgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHJldHVybiB0aGF0LiBTZWUg
PHJkYXI6Ly85ODQzNTgyPi4KKyAgICAvLyBBbHNvLCBkZXZlbG9wZXJzIHJlYWxseSByZWFsbHkg
d2FudCBhbiBOU011dGFibGVVUkxSZXF1ZXN0IHNvIHRyeSB0byBjcmVhdGUgYW4KKyAgICAvLyBO
U011dGFibGVVUkxSZXF1ZXN0IGluc3RlYWQgb2YgTlNVUkxSZXF1ZXN0LgorICAgIHN0YXRpYyBD
bGFzcyBuc1VSTFJlcXVlc3RDbGFzcyA9IFtOU1VSTFJlcXVlc3QgY2xhc3NdOworICAgIHN0YXRp
YyBDbGFzcyBuc011dGFibGVVUkxSZXF1ZXN0Q2xhc3MgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBj
bGFzc107CisgICAgQ2xhc3MgcmVxdWVzdENsYXNzID0gW21fbnNSZXF1ZXN0LmdldCgpIGNsYXNz
XTsKKworICAgIGlmICghbV9jZlJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChy
ZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zVVJMUmVxdWVzdENsYXNzICYmIHJlcXVl
c3RDbGFzcyAhPSBuc011dGFibGVVUkxSZXF1ZXN0Q2xhc3MpCisgICAgICAgIG1fbnNSZXF1ZXN0
ID0gYWRvcHROUyhbW3JlcXVlc3RDbGFzcyBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1f
Y2ZSZXF1ZXN0LmdldCgpXSk7CisgICAgZWxzZQorICAgICAgICBtX25zUmVxdWVzdCA9IG51bGxw
dHI7Cit9CisKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5t
bQkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxOCBA
QAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlvblNwYWNlLmg+CiAKKyNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQorI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rpb25TUEkuaCIKKyNlbmRpZgor
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb3JlQXV0aGVudGlj
YXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0IDxOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVu
dDsKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBt
X2NmQ2hhbGxlbmdlOworI2VuZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xp
ZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVudGljYXRpb25DbGll
bnQqKWNsaWVudDsKQEAgLTk0LDEwICsxMDEsNDcgQEAgLSAodm9pZCljYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTgogICAgICAgICBtX2NsaWVudC0+cmVjZWl2ZWRDYW5jZWxsYXRpb24o
Y29yZShjaGFsbGVuZ2UpKTsKIH0KIAorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCistICh2b2lk
KXNldENGQ2hhbGxlbmdlOihDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2hhbGxlbmdlCit7CisgICAg
bV9jZkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKK30KKworLSAoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KWNmQ2hhbGxlbmdlCit7CisgICAgcmV0dXJuIG1fY2ZDaGFsbGVuZ2U7Cit9CisjZW5kaWYKKwog
QGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
CitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKm1hY0NoYWxsZW5nZSkKK3sKKyAgICBXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0No
YWxsZW5nZVNlbmRlciAqY2hhbGxlbmdlU2VuZGVyID0gKFdlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyKikgW21hY0NoYWxsZW5nZSBzZW5kZXJdOworICAgIHJldHVy
biBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbY2hhbGxlbmdlU2VuZGVyIGNmQ2hhbGxlbmdlXSwg
W2NoYWxsZW5nZVNlbmRlciBjbGllbnRdKTsKK30KKworTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQor
eworICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoQ2xpZW50ID0gY29yZUNoYWxsZW5nZS5h
dXRoZW50aWNhdGlvbkNsaWVudCgpOworICAgIFJldGFpblB0cjxXZWJDb3JlQXV0aGVudGljYXRp
b25DbGllbnRBc0NoYWxsZW5nZVNlbmRlcj4gY2hhbGxlbmdlU2VuZGVyID0gYWRvcHROUyhbW1dl
YkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIGFsbG9jXSBpbml0V2l0
aEF1dGhlbnRpY2F0aW9uQ2xpZW50OmF1dGhDbGllbnRdKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmPiBhdXRoQ2hhbGxlbmdlID0gY29yZUNoYWxsZW5nZS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKTsKKyAgICBpZiAoIWF1dGhDaGFsbGVuZ2UpCisgICAgICAgIGF1dGhDaGFs
bGVuZ2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UpKTsKKyAgICBbY2hhbGxlbmdl
U2VuZGVyLmdldCgpIHNldENGQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCldOworI2lmIFBM
QVRGT1JNKElPUykKKyAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9j
cmVhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxl
bmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyNl
bHNlCisgICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5k
ZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07CisjZW5kaWYKK30KKworI2Vs
c2UKKwogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2Vk
Q3JlZGVudGlhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKQEAgLTE3MSw0ICsyMTUsNiBAQCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVuCiAgICAgcmV0dXJuIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0NoYWxsZW5nZSk7CiB9CiAKKyNlbmRpZiAvLyBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZp
c2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVKYXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxOSBAQAogI2ltcG9ydCAi
UGxhdGZvcm1Db29raWVKYXIuaCIKIAogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCi0jaW1wb3J0
ICJDb29raWUuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKICNpbXBvcnQgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFn
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKK30KKworI2lmICFVU0UoQ0ZVUkxDT05O
RUNUSU9OKQorCisjaW1wb3J0ICJDb29raWUuaCIKKyNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIK
KyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE4NCw3ICsxOTEsNiBAQCB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yCiAgICAgTlNVUkwgKmNvb2tpZVVSTCA9IHVybDsK
ICAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3Q6Y29va2llU3RyaW5nIGZvcktleTpAIlNldC1Db29raWUiXTsKIAotICAgIC8v
IEZJWE1FOiBJcyB0aGlzIG5lZWRlZCBvbiBpT1MsIHRvbz8KICNpZiBQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCiAgICAgTlNBcnJheSAq
dW5maWx0ZXJlZENvb2tpZXMgPSBbTlNIVFRQQ29va2llIF9wYXJzZWRDb29raWVzV2l0aFJlc3Bv
bnNlSGVhZGVyRmllbGRzOmhlYWRlckZpZWxkcyBmb3JVUkw6Y29va2llVVJMXTsKICNlbHNlCkBA
IC0yNTQsMTUgKzI2MCw2IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2UKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1zdGF0aWMgTlNIVFRQQ29v
a2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24pCi17Ci0gICAgYXV0byBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCk7Ci0gICAgaWYgKCFjb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjb29raWVTdG9yYWdlKQotICAg
ICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2Vd
OwotICAgIAotICAgIHJldHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdp
dGhDRkhUVFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsK
LX0KLQogdm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgQ29va2llJiBjb29raWUpCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMjgzLDEwICsyODAsMTIgQEAgdm9pZCBhZGRDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaQogICAgICAgICBOU0hUVFBDb29raWVFeHBpcmVzOiBb
TlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmNvb2tpZS5leHBpcmVzIC8gMTAw
MC4wXSwKICAgICB9XTsKIAorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGlmICghY29v
a2llU3RvcmFnZSkgewogICAgICAgICBbV2ViQ29yZTo6Y29va2llU3RvcmFnZShzZXNzaW9uKSBz
ZXRDb29raWU6aHR0cENvb2tpZV07CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYgLy8g
IVVTRShDRlVSTENPTk5FQ1RJT04pCiAKICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2ll
KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIFtodHRwQ29va2llIF9DRkhUVFBDb29raWVdKTsKIApAQCAt
MzEwLDYgKzMwOSwyMSBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3Jh
CiAgICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQo
KSk7CiB9CiAKK30KKworI2VuZGlmIC8vICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBhdXRvIGNvb2tp
ZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBpZiAoIWNvb2tpZVN0b3Jh
Z2UgfHwgW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29r
aWVTdG9yYWdlID09IGNvb2tpZVN0b3JhZ2UpCisgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2ll
U3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CisKKyAgICByZXR1cm4gW1tbTlNIVFRQ
Q29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVT
dG9yYWdlLmdldCgpXSBhdXRvcmVsZWFzZV07Cit9CisKIHZvaWQgZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0
b3JhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgi
CiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCkBAIC01MCwzICs1Miw1IEBAIHZvaWQgQ3Jl
ZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnQKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJl
YW1NYWMuaAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVz
dCogQ0ZVUkxSZXF1ZXN0UmVmOwpAQCAtNDUsMyArNDcsNSBAQCBGb3JtRGF0YSogaHR0cEJvZHlG
cm9tU3RyZWFtKE5TSW5wdXRTdHJlCiBDRlN0cmluZ1JlZiBmb3JtRGF0YVN0cmVhbUxlbmd0aFBy
b3BlcnR5TmFtZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhVVNF
KENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCShyZXZpc2lvbiAyMDc1ODQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCisjaWYgIVVTRShDRlVSTENPTk5FQ1RJ
T04pCisKICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbUNGTmV0
LmgiCiAKQEAgLTQ5LDMgKzUxLDUgQEAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lu
cHV0U3RyZQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhVVNFKENG
VVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlRXJyb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkocmV2aXNpb24gMjA3NTg0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTAgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAorI2lmIFBM
QVRGT1JNKElPUykgJiYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpbXBvcnQgPENGTmV0d29yay9D
RlNvY2tldFN0cmVhbVByaXYuaD4KKyNlbmRpZgorCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4
dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAg
LTg3LDYgKzkxLDg1IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIK
IAogQGVuZAogCisKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorc3RhdGljIE5TRXJyb3IgKk5T
RXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1cmwpCit7CisgICAg
Q0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJvcik7CisgICAgaWYgKENGRXF1
YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JEb21haW5DRk5ldHdvcmspICYm
IGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNvZGUgPiAtNDAwMCkgeworICAg
ICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0
byB0aGUgTlNVUkxFcnJvckRvbWFpbgorICAgICAgICBpZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsK
KyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhj
ZkVycm9yKTsKKyAgICAgICAgTlNFcnJvciAqcmVzdWx0OworICAgICAgICBOU0ludGVnZXIgY291
bnQgPSAwOworCisgICAgICAgIGlmICh1cmwpIHsKKyAgICAgICAgICAgIGtleXNbY291bnRdID0g
TlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKKyAgICAgICAgICAgIHZhbHVlc1tjb3VudF0g
PSB1cmw7CisgICAgICAgICAgICBjb3VudCsrOworCisgICAgICAgICAgICBrZXlzW2NvdW50XSA9
IE5TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7CisgICAgICAgICAgICB2YWx1ZXNb
Y291bnRdID0gW3VybCBhYnNvbHV0ZVN0cmluZ107CisgICAgICAgICAgICBjb3VudCsrOworICAg
ICAgICB9CisKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1
ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSk7CisgICAgICAgIGlm
ICh2YWx1ZXNbY291bnRdKSB7CisgICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TTG9jYWxpemVk
RGVzY3JpcHRpb25LZXk7CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9CisKKyAgICAg
ICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NG
RXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKKyAgICAgICAgaWYgKHZhbHVlc1tjb3Vu
dF0pIHsKKyAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29u
RXJyb3JLZXk7CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgdmFs
dWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JM
b2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOworICAgICAgICBpZiAodmFsdWVzW2NvdW50
XSkgeworICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZFJlY292ZXJ5U3VnZ2Vz
dGlvbkVycm9yS2V5OworICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQorCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFs
dWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFt
UHJvcGVydHlTU0xQZWVyQ2VydGlmaWNhdGVzKSkgIT0gbmlsKSB7CisgICAgICAgICAgICAvLyBO
ZWVkIHRvIHRyYW5zbGF0ZSB0aGUgY2VydAorICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5T
RXJyb3JQZWVyQ2VydGlmaWNhdGVDaGFpbktleSI7CisgICAgICAgICAgICBjb3VudCsrOworCisg
ICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJ
bmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZXMpOworICAgICAgICAg
ICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKKyAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAi
TlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiOworICAgICAgICAgICAgICAgIGNvdW50
Kys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENl
cnRpZmljYXRlU3RhdGUpOworICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKKyAgICAg
ICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlU3RhdGVL
ZXkiOworICAgICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAgICAgICBpZiAodXNlckluZm8gJiYg
KHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRlN0
cmVhbVByb3BlcnR5U1NMUGVlclRydXN0KSkgIT0gbmlsKSB7CisgICAgICAgICAgICBrZXlzW2Nv
dW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMUGVlclRydXN0RXJyb3JLZXk7CisgICAgICAgICAg
ICBjb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAga2V5c1tjb3VudF0gPSBOU1VuZGVybHlp
bmdFcnJvcktleTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZCljZkVycm9yOworICAgICAg
ICBjb3VudCsrOworCisgICAgICAgIHJlc3VsdCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9y
V2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JV
bmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVua25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNv
dW50OmNvdW50XV07CisgICAgICAgIGlmICh1c2VySW5mbykKKyAgICAgICAgICAgIENGUmVsZWFz
ZSh1c2VySW5mbyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHJldHVybiAo
TlNFcnJvciAqKWNmRXJyb3I7Cit9CisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKKwog
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA3LDYg
KzE5MCw1MyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGCiAgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVy
cm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2Vy
SW5mby5nZXQoKV0pOwogfQogCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKworUmVzb3VyY2VF
cnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKKyAgICA6IFJlc291cmNlRXJyb3JC
YXNlKFR5cGU6Ok51bGwpCisgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQorICAgICwgbV9w
bGF0Zm9ybUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQoreworICAg
IGlmIChlcnJvcikKKyAgICAgICAgc2V0VHlwZSgoW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JU
aW1lZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlwZTo6R2VuZXJhbCk7Cit9CisKK05TRXJyb3Ig
KlJlc291cmNlRXJyb3I6Om5zRXJyb3IoKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkgewor
ICAgICAgICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgfQorCisgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yKQorICAgICAgICByZXR1cm4gbV9wbGF0
Zm9ybU5TRXJyb3IuZ2V0KCk7CisKKyAgICBpZiAobV9wbGF0Zm9ybUVycm9yKSB7CisgICAgICAg
IENGRXJyb3JSZWYgZXJyb3IgPSBtX3BsYXRmb3JtRXJyb3IuZ2V0KCk7CisgICAgICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkVycm9yQ29weVVzZXJJ
bmZvKGVycm9yKSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBtX3BsYXRmb3JtTlNFcnJv
ciA9IE5TRXJyb3JGcm9tQ0ZFcnJvcihlcnJvciwgKE5TVVJMICopWyhOU0RpY3Rpb25hcnkgKil1
c2VySW5mby5nZXQoKSBvYmplY3RGb3JLZXk6KGlkKSBrQ0ZVUkxFcnJvckZhaWxpbmdVUkxFcnJv
cktleV0pOworICAgICAgICAvLyBJZiBOU0Vycm9yRnJvbUNGRXJyb3IgY3JlYXRlZCBhIG5ldyBO
U0Vycm9yIGZvciB1cywgcmV0dXJuIHRoYXQuCisgICAgICAgIGlmIChtX3BsYXRmb3JtTlNFcnJv
ci5nZXQoKSAhPSAoTlNFcnJvciAqKWVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1fcGxhdGZv
cm1OU0Vycm9yLmdldCgpOworCisgICAgICAgIC8vIE90aGVyd2lzZSBmYWxsIHRocm91Z2ggdG8g
Y3JlYXRlIGEgbmV3IE5TRXJyb3IgZnJvbSB0aGUgQ0ZFcnJvci4KKyNlbmRpZgorICAgICAgICBt
X3BsYXRmb3JtTlNFcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFp
bjooTlNTdHJpbmcgKilDRkVycm9yR2V0RG9tYWluKGVycm9yKSBjb2RlOkNGRXJyb3JHZXRDb2Rl
KGVycm9yKSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCldKTsKKyAgICAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOworICAgIH0KKworICAgIG1fcGxhdGZv
cm1OU0Vycm9yID0gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSgqdGhpcyk7Cisg
ICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOworfQorCitSZXNvdXJjZUVycm9yOjpv
cGVyYXRvciBOU0Vycm9yICooKSBjb25zdAoreworICAgIHJldHVybiBuc0Vycm9yKCk7Cit9CisK
KyNlbHNlCisKIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqbnNFcnJvcikK
ICAgICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCiAgICAgLCBtX2RhdGFJc1VwVG9E
YXRlKGZhbHNlKQpAQCAtMTc5LDQgKzMwOSw2IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENG
RXJyb3JSZWYoKSBjb24KICAgICByZXR1cm4gY2ZFcnJvcigpOwogfQogCisjZW5kaWYgLy8gVVNF
KENGVVJMQ09OTkVDVElPTikKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1
OCwxNiBAQAogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgorI2Vu
ZGlmCit0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7
CitleHRlcm4gIkMiIHsKK0NGRGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWlu
Z0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsKK30KKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQorCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW1w
b3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTgwLDYgKzkwLDggQEAgLShpZClf
aW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCisjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCisgICAgCiBzdGF0aWMgdm9pZCBhcHBs
eUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVh
ZGVyID0gIkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsg
IjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwpAQCAtMzE3LDYgKzMyOSw4IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgW2QtPm1f
Y29ubmVjdGlvbiBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJzXTsKIH0KIAorI2lmICFVU0UoQ0ZV
UkxDT05ORUNUSU9OKQorCiB2b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBh
aXImIHBhaXIpCiB7CiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKTsK
QEAgLTMzNSw2ICszNDksOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVk
dWxlCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29w
OnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUoKV07CiB9CiAKKyNlbmRpZgor
CiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKQEAgLTcxNCwxNCArNzMw
LDI3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmUKIAogICAgIFso
aWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KLQor
ICAgIAorI2VuZGlmIC8vICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorICAgIAogI2lmIEVOQUJMRShX
RUJfVElNSU5HKQorCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICAKK3ZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiBjb25u
ZWN0aW9uLCBOZXR3b3JrTG9hZFRpbWluZyYgdGltaW5nKQoreworICAgIGNvcHlUaW1pbmdEYXRh
KChfX2JyaWRnZSBOU0RpY3Rpb25hcnkqKWFkb3B0Q0YoX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1p
bmdEYXRhKGNvbm5lY3Rpb24pKS5nZXQoKSwgdGltaW5nKTsKK30KKyAgICAKKyNlbHNlCiAgICAg
CiB2b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5l
Y3Rpb24gKmNvbm5lY3Rpb24sIE5ldHdvcmtMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAgICAgY29w
eVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOwogfQogICAgIAor
I2VuZGlmCisgICAgCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDggQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdl
Yk5TVVJMUmVxdWVzdERldGFpbHMpCistIChDRlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVxdWVzdDsK
Ky0gKGlkKV9pbml0V2l0aENGVVJMUmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3Q7CitA
ZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisK
K1Jlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0
KQorICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCisgICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1
ZXN0IF9DRlVSTFJlcXVlc3RdKQorICAgICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KQoreworfQor
Cit2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0KCkKK3sKKyAgICBpZiAo
bV9jZlJlcXVlc3QpCisgICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVz
dCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Cit9CisK
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQor
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzYsMTAgKzM4LDE0IEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmUKICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIGNvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpXTsKIH0KIAorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogUmVzb3VyY2VF
cnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cGxhdGZvcm1CYWRSZXNwb25zZUVycm9yKCkK
IHsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxv
Y10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JCYWRTZXJ2
ZXJSZXNwb25zZSB1c2VySW5mbzpuaWxdKTsKICAgICByZXR1cm4gZXJyb3IuZ2V0KCk7CiB9Cisj
ZW5kaWYKIAogfQorCisjZW5kaWYgLy8gIVVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDc1ODQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDEyIEBAIGNsYXNzIFJl
c291cmNlSGFuZGxlOwogLSAodm9pZClkZXRhY2hIYW5kbGU7CiBAZW5kCiAKKyNpZiAhVVNFKENG
VVJMQ09OTkVDVElPTikKKwogQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VM
b2FkZXJEZWxlZ2F0ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsK
IH0KIC0gKGlkKWluaXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxl
OwogQGVuZAorCisjZW5kaWYgLy8gIVVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHJldmlzaW9uIDIwNzU4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgog
CisjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCisKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgpAQCAtMjc0LDMgKzI3Niw2IEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0
aW9uOihOU1UKIH0KIAogQGVuZAorCisjZW5kaWYgLy8gIVVTRShDRlVSTENPTk5FQ1RJT04pCisK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorCiAjaW5jbHVkZSAiV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTUsMyArNTcsNSBAQCBAaW50ZXJmYWNlIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0CiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhh
bmRsZVdpdGhDcmVkZW50aWFsU3RvcmFnZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZQogCiBAZW5kCisKKyNlbmRp
ZiAvLyAhVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHJldmlzaW9u
IDIwNzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAorI2lmICFVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9y
dCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTMyNywzICsz
MjksNiBAQCAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvCiB9CiAKIEBl
bmQKKworI2VuZGlmIC8vICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICsz
MjUsNyBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwCiB9CiAjZW5k
aWYKIAorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6
ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTFJlcXVlc3QgKmN1cnJlbnRSZXF1ZXN0
LCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9u
c2UpCiB7CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zMzgsNSArMzM5LDYgQEAgTlNV
UkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9ucwogICAgIE5TRGljdGlvbmFyeSAq
c3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkcyA9IEB7IEAiTG9jYXRpb24iOiBbW25ld1Jl
cXVlc3QgVVJMXSBhYnNvbHV0ZVN0cmluZ10sIEAiQ2FjaGUtQ29udHJvbCI6IEAibm8tc3RvcmUi
IH07CiAgICAgcmV0dXJuIFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpb
Y3VycmVudFJlcXVlc3QgVVJMXSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjooTlNTdHJpbmcg
KilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3ludGhlc2l6ZWRSZXNwb25zZUhlYWRl
ckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQorI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMwIEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6CisgICAgICAg
ICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3Jl
ZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpy
ZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbik6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6
ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNi0xMC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEV4cG9zZSBzdWdnZXN0ZWQgZmlsZW5hbWUgdmlh
IFdLQnVuZGxlSGl0VGVzdFJlc3VsdCBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksOCAr
NzksMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICB2b2lkIHdpbGxDYWNoZVJl
c3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKSBvdmVycmlkZTsKKyNlbHNlCiAgICAgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKSBvdmVycmlkZTsK
ICNlbmRpZgorI2VuZGlmCiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNL
KQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2
ICs0NywxMCBAQCBPQkpDX0NMQVNTIFdLRG93bmxvYWRBc0RlbGVnYXRlOwogI2VuZGlmCiAjZW5k
aWYKIAorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
RG93bmxvYWRQcml2Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVm
ZXJlbmNlOwogfQpAQCAtMTM1LDYgKzEzOSw5IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdL
RG93bmxvYWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRlOwogI2VuZGlmCiAjZW5kaWYKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQorICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25s
b2FkOworI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWROYW1lOwpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRvd25s
b2FkLmgiCiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyNpZiAhVVNFKENGVVJMQ09OTkVD
VElPTikgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMu
aD4KQEAgLTI3Miw0ICsyNzIsNCBAQCAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICop
ZG93bmxvCiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2VuZGlm
IC8vICFVU0UoQ0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRN
YWMubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrTG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKKwordm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNmUmVz
cG9uc2UpCit7CisgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7
CisKKyAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsK
K30KKworI2Vsc2UKKwogdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwpAQCAtNDAs
NCArNTEsNiBAQCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jCiAgICAg
bV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UobnNSZXNwb25zZSk7CiB9CiAKKyNl
bmRpZiAvLyAhVVNFKENGVVJMQ09OTkVDVElPTikKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NCw3ICsxMDQsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAg
ICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJv
YXJkQWNjZXNzRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dElu
dGVydmFsOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmll
cjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVv
dXRJbnRlcnZhbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDc1ODQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogCiAgICAgZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVy
dmFsOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29h
L0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbQkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwyNyArMzIsMzcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50
aWFsKQogeworI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFthdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkg
Zm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKKyNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsK
KyNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
c2VuZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KV07CisjZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkKIHsKKyNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBbYXV0aGVudGljYXRp
b25DaGFsbGVuZ2Uuc2VuZGVyKCkgY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKKyNlbmRp
ZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJm
b3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkKIHsKKyNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBbYXV0
aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKV07CisjZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKKyNpZiAhVVNFKENGVVJMQ09OTkVD
VElPTikKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcmVqZWN0UHJvdGVj
dGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Lm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CisjZW5kaWYKIH0KIAogfQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwx
MCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpbXBvcnQg
PENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKICNpbXBvcnQgPFdlYkNvcmUvQVZGb3VuZGF0aW9uU1BJLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC01Myw2ICs1
NywzNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIElQQyB7CiAKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVm
PiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KERvTm90
VXBkYXRlSFRUUEJvZHkpOworCisgICAgYm9vbCByZXF1ZXN0SXNQcmVzZW50ID0gcmVxdWVzdFRv
U2VyaWFsaXplOworICAgIGVuY29kZXIgPDwgcmVxdWVzdElzUHJlc2VudDsKKworICAgIGlmICgh
cmVxdWVzdElzUHJlc2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2UgZG9uJ3Qgc2Vu
ZCBIVFRQIGJvZHkgb3ZlciBJUEMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KKyAgICAvLyBBbHNv
LCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gZG8sIGFzIHN0cmVhbXMgY2FuIG9ubHkgYmUg
Y3JlYXRlZCBpbiBwcm9jZXNzIHRoYXQgZG9lcyBuZXR3b3JraW5nLgorICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IHJlcXVlc3RIVFRQQm9keSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBS
ZXF1ZXN0Qm9keShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZS
ZWFkU3RyZWFtUmVmPiByZXF1ZXN0SFRUUEJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVz
dENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Cisg
ICAgaWYgKHJlcXVlc3RIVFRQQm9keSB8fCByZXF1ZXN0SFRUUEJvZHlTdHJlYW0pIHsKKyAgICAg
ICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxlUmVxdWVzdCA9IENGVVJMUmVxdWVzdENy
ZWF0ZU11dGFibGVDb3B5KDAsIHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSk7CisgICAgICAgIHJl
cXVlc3RUb1NlcmlhbGl6ZSA9IGFkb3B0Q0YobXV0YWJsZVJlcXVlc3QpOworICAgICAgICBDRlVS
TFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHkobXV0YWJsZVJlcXVlc3QsIG5pbCk7CisgICAgICAg
IENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVzdCwgbmls
KTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0g
YWRvcHRDRihXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJl
cXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKKyAgICBJ
UEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKKworICAgIC8vIFRoZSBmYWxs
YmFjayBhcnJheSBpcyBwYXJ0IG9mIENGVVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVk
IGJ5IFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24uCisgICAg
ZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkoKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzb3VyY2VSZXF1
ZXN0LnJlcXVlc3RlcigpKTsKK30KKyNlbHNlCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VS
ZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVl
c3Q+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9IHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9O
b3RVcGRhdGVIVFRQQm9keSk7CkBAIC03OSw2ICsxMTMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jCiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVx
dWVzdC5yZXF1ZXN0ZXIoKSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVz
dC5jYWNoZVBvbGljeSgpKTsKIH0KKyNlbmRpZgogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtOTUsMTEgKzEzMCwxOSBAQCBib29sIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjCiAgICAgaWYgKCFJUEM6OmRlY29kZShk
ZWNvZGVyLCBkaWN0aW9uYXJ5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlVSTFJlcXVl
c3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CisgICAg
aWYgKCFjZlVSTFJlcXVlc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc291cmNl
UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3QuZ2V0KCkpOworI2Vsc2UKICAg
ICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJMUmVxdWVzdEZy
b21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2Vu
TnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJlcXVlc3QpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChuc1VSTFJlcXVl
c3QuZ2V0KCkpOworI2VuZGlmCiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNTAsNiArMTA1MCw3IEBACiAJ
CTVDMTQyNzA1MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGNzFDMjNGODQzMDBENDExODMg
LyogRG93bmxvYWRJRC5oICovOyB9OwogCQk1QzE0MjcwNjFDMjNGODRDMDBENDExODMgLyogRG93
bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMTQyNkY4MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwICov
OyB9OwogCQk1QzE0MjcwNzFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGOTFDMjNG
ODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi87IH07CisJCTVDMTQyNzExMUMyM0Y4
OUUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9hZElP
Uy5tbSAqLzsgfTsKIAkJNUMxNDI3MTIxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MEYx
QzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovOyB9OwogCQk1QzE0MjcxMzFDMjNG
ODlFMDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzA5MUMyM0Y4NjkwMEQ0MTE4MyAvKiBEb3dubG9h
ZENvY29hLm1tICovOyB9OwogCQk1QzE0MjcxODFDMjNGOEI3MDBENDExODMgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgg
Ki87IH07CkBAIC0zMTMxLDYgKzMxMzIsNyBAQAogCQk1QzE0MjZGODFDMjNGODQzMDBENDExODMg
LyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERvd25sb2FkTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI2
RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3dubG9hZENvY29hLm1tOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9h
ZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2Fk
SU9TLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MEYxQzIzRjg5OTAwRDQxMTgz
IC8qIERvd25sb2FkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gRG93bmxvYWRNYWMubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rv
d25sb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcxNDFDMjNG
OEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlci5oOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcxNTFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEN1c3RvbVBy
b3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01NzQxLDYgKzU3NDMsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk1QzE0MjcwODFDMjNGODUyMDBENDExODMgLyogY29jb2EgKi8s
CisJCQkJNUMxNDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLywKIAkJCQk1QzE0MjcwQjFD
MjNGODcxMDBENDExODMgLyogbWFjICovLAogCQkJCTgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAv
KiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovLAogCQkJCTgzQkZBQzQwMUQ5NjEzNjAwMDQzMzQ5
MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLywKQEAgLTU3ODEsNiArNTc4NCwxNCBAQAogCQkJ
bmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVDMTQyNzBD
MUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5t
bSAqLywKKwkJCSk7CisJCQluYW1lID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJNUMxNDI3MUExQzIzRjhCRjAwRDQxMTgzIC8qIENvY29hICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkwODksNiArOTEwMCw3IEBACiAJCQkJ
NUMxNDI3MDExQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMTQyNzEzMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNUMxNDI3MTExQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2Fk
SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTIxQzIzRjg5RTAwRDQxMTgzIC8qIERv
d25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MDYxQzIzRjg0QzAwRDQxMTgz
IC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDRDQjEyODhB
QUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY3NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorCiAyMDE2LTEwLTE0ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IENNYWtlIGJ1aWxkLgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMTAtMTkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZlcnQgcjIwNzE1MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAg
ICAgICAqIE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgICgtW1dlYkRvd25sb2FkIF9pbml0
V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0ZTpwcm94
eTpdKToKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2Vz
IF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHNjaGVkdWxl
SW5SdW5Mb29wOmZvck1vZGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdW5zY2hlZHVsZUZyb21S
dW5Mb29wOmZvck1vZGU6XSk6CisKIDIwMTYtMTAtMTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRh
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNzU1Ny4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkocmV2aXNpb24gMjA3NTg0
KQorKysgU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsMTEgQEAKIAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyNpbXBvcnQgPENGTmV0d29yay9DRk5ldHdvcmsuaD4K
KyNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4KKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogQGNsYXNzIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHk7
CkBAIC01Niw2ICs2MSwxMCBAQCAtIChpZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyCiAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQogICAgICAgICAgICAgIGRp
cmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rvcnk7CiAKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQorLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9u
UmVmKWNvbm5lY3Rpb24gcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QgcmVzcG9uc2U6
KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UgZGVsZWdhdGU6KGlkKWRlbGVnYXRlIHByb3h5OihO
U1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5ICopcHJveHk7CisjZW5kaWYKKwogQGVuZAogCiBA
aW50ZXJmYWNlIFdlYkRvd25sb2FkSW50ZXJuYWwgOiBOU09iamVjdCA8TlNVUkxEb3dubG9hZERl
bGVnYXRlPgpAQCAtMjE4LDYgKzIyNywxNCBAQCAtIChpZClfaW5pdFdpdGhMb2FkaW5nQ29ubmVj
dGlvbjooTlNVUkxDCiAgICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlv
bjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBkZWxlZ2F0ZTpf
d2ViSW50ZXJuYWwgcHJveHk6cHJveHldOwogfQogCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
Ky0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJl
Ziljb25uZWN0aW9uIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0IHJlc3BvbnNlOihD
RlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlIGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBwcm94eTooTlNV
UkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Cit7CisgICAgW3NlbGYgX3NldFJlYWxE
ZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ0ZV
UkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNl
IGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Cit9CisjZW5kaWYKKwogLSAoaWQp
X2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICBk
ZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICop
ZGlyZWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50
ZXJuYWwuaAkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJE
b3dubG9hZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE2ICsyNywxOCBAQAogKi8K
ICAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJEb3dubG9hZC5oPgorCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKKyNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4KKyNlbmRp
ZgogIAogQGludGVyZmFjZSBXZWJEb3dubG9hZCAoV2ViRG93bmxvYWRDcmVhdGlvbikKLSsoaWQp
X2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0
aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KE5TVVJMUmVzcG9u
c2UgKilyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OihpZClwcm94eTsKKysoaWQpX2Rv
d25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KilyIGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBwcm94eTooaWQpcHJveHk7CisKKysoaWQpX2Rvd25s
b2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVsZWdhdGU6KGlkKWRlbGVn
YXRlIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rvcnk7CiAKLSsoaWQpX2Rvd25sb2FkV2l0
aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKLSAgICAgICAgICAgICAgICAgZGVsZWdh
dGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRp
cmVjdG9yeTsKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorKyAoaWQpX2Rvd25sb2FkV2l0aExv
YWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uIHJlcXVl
c3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0IHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJl
c3BvbnNlIGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBwcm94eTooaWQpcHJveHk7CisjZW5kaWYKIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDIwNzU4NCkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDQsNyArMzA0LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNv
bnZlcnRNYWluUmUKIAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBtYWluUmVzb3VyY2VM
b2FkZXItPmhhbmRsZSgpOwogCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBBU1NFUlQo
W1dlYkRvd25sb2FkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkV2l0aExv
YWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0ZTpwcm94eTopXSk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25s
b2FkKCk7CisgICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0
aW9uOmNvbm5lY3Rpb24uZ2V0KCkgcmVxdWVzdDpyZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVI
VFRQQm9keSkgcmVzcG9uc2U6cmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJW
aWV3IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07CisjZWxzZQogICAgIFtXZWJEb3dubG9h
ZCBfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFuZGxlLT5jb25uZWN0aW9uKCkgcmVx
dWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgcmVzcG9uc2U6cmVzcG9u
c2UubnNVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdIHBy
b3h5Om5pbF07CisjZW5kaWYKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgaW50IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMjA3NTg0KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgwMSw3ICsxODAx
LDcgQEAgKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgogKyAodm9pZClfc2V0Q3Vy
cmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kpcG9saWN5CiB7CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8v
IFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5n
U2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQVNTRVJUKGNvb2tpZVN0
b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShDRlVSTENPTk5F
Q1RJT04pIGFuZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VT
ZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjA3NTg0KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02NzkxLDE0ICs2NzkxLDI0IEBAIC0gKGlkKWNhbmRpZGF0ZUxpc3QKIAogLSAodm9pZClzY2hl
ZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1v
ZGUKIHsKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorICAgIENGUnVuTG9vcFJlZiBzY2hlZHVs
ZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKKyNlbHNlCisgICAgTlNSdW5M
b29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKKyNlbmRpZgogICAgIGlmIChydW5M
b29wICYmIG1vZGUpCi0gICAgICAgIGNvcmUoc2VsZiktPmFkZFNjaGVkdWxlUGFpcihTY2hlZHVs
ZVBhaXI6OmNyZWF0ZShydW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOworICAgICAgICBjb3Jl
KHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoc2NoZWR1bGVQYWly
UnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKIH0KIAogLSAodm9pZCl1bnNjaGVkdWxlRnJv
bVJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlCiB7
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWly
UnVuTG9vcCA9IFtydW5Mb29wIGdldENGUnVuTG9vcF07CisjZWxzZQorICAgIE5TUnVuTG9vcCAq
c2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7CisjZW5kaWYKICAgICBpZiAocnVuTG9vcCAm
JiBtb2RlKQotICAgICAgICBjb3JlKHNlbGYpLT5yZW1vdmVTY2hlZHVsZVBhaXIoU2NoZWR1bGVQ
YWlyOjpjcmVhdGUocnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKKyAgICAgICAgY29yZShz
ZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFp
clJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIHN0YXRpYyBCT09MIGZpbmRTdHJp
bmcoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNlYXJjaFZpZXcsIE5TU3RyaW5nICpz
dHJpbmcsIFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDc1ODQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzNiBAQAorMjAxNi0xMC0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmVydCByMjA3MTUxCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgICogRGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2Fj
aGVkRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJF
cnJvci5jcHA6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24pOgorICAg
ICAgICAoV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViRXJyb3Iu
aDoKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJNdXRh
YmxlVVJMUmVxdWVzdDo6bXV0YWJsZUNvcHkpOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ojppbml0V2l0aFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICog
V2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OnNzbFBlZXJDZXJ0
aWZpY2F0ZSk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViVmll
dzo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQpOgorICAgICAgICAodXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW5jZXNJ
Zk5lZWRlZCk6CisKIDIwMTYtMTAtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgbWFueSBtaXNjZWxsYW5lb3VzIGNsYXNzZXMgZnJvbSBFeGNlcHRpb25D
b2RlIHRvIEV4Y2VwdGlvbgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDIwNzU4
NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MjYxLDcgKzUyNjEsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdl
CiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgmZW5hYmxlZCk7
CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAg
ICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIGVsc2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>