<?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>118939</bug_id>
          
          <creation_ts>2013-07-19 22:32:58 -0700</creation_ts>
          <short_desc>Updated ANGLE is leaking like a sieve</short_desc>
          <delta_ts>2013-08-20 09:07:32 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Rowe (bdash)">mrowe</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>tobias.netzel</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>910431</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2013-07-19 22:32:58 -0700</bug_when>
    <thetext>&quot;run-webkit-tests --leaks&quot; on OS X results in 4.5GB of leaks output. Buildbot chokes on handling this much data, which is why build.webkit.org has been so flakey the last few days.

An example of the leaks output is:

        Call stack: [thread 0x7fff783d4310]: | 0x2 | start | main DumpRenderTree.mm:953 | dumpRenderTree(int, char const**) DumpRenderTree.mm:915 | runTestingServerLoop() DumpRenderTree.mm:860 | runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) DumpRenderTree.mm:1408 | -[NSRunLoop(NSRunLoop) runMode:beforeDate:] | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSources0 | __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ | MultiplexerSource::_perform(void*) | MultiplexerSource::perform() | RunloopBlockContext::perform() | CFArrayApplyFunction | ___ZNK17CoreSchedulingSet13_performAsyncEPKcU13block_pointerFvvE_block_invoke | ___ZN27URLConnectionClient_Classic18_withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 | ___ZN27URLConnectionClient_Classic29_delegate_didReceiveDataArrayEv_block_invoke | _NSURLConnectionDidReceiveData_LengthReceived | -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] | -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] | __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke | -[WebCoreResourceHandleAsDelegate connection:didReceiveData:lengthReceived:] WebCoreResourceHandleAsDelegate.mm:195 | WebCore::ResourceLoader::didReceiveBuffer(WebCore::ResourceHandle*, WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, int) ResourceLoader.cpp:482 | WebCore::SubresourceLoader::didReceiveBuffer(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, long long, WebCore::DataPayloadType) SubresourceLoader.cpp:231 | WebCore::SubresourceLoader::didReceiveDataOrBuffer(char const*, int, WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, long long, WebCore::DataPayloadType) SubresourceLoader.cpp:250 | WebCore::CachedRawResource::addDataBuffer(WebCore::ResourceBuffer*) CachedRawResource.cpp:67 | WebCore::CachedRawResource::notifyClientsDataWasReceived(char const*, unsigned int) CachedRawResource.cpp:110 | WebCore::DocumentLoader::dataReceived(WebCore::CachedResource*, char const*, int) DocumentLoader.cpp:848 | WebCore::DocumentLoader::commitLoad(char const*, int) DocumentLoader.cpp:740 | WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char const*, int) WebFrameLoaderClient.mm:890 | -[WebDataSource(WebInternal) _receivedData:] WebDataSource.mm:215 | -[WebHTMLRepresentation receivedData:withDataSource:] WebHTMLRepresentation.mm:189 | -[WebFrame(WebInternal) _commitData:] WebFrame.mm:838 | WebCore::DocumentLoader::commitData(char const*, unsigned long) DocumentLoader.cpp:798 | WebCore::DocumentWriter::addData(char const*, unsigned long) DocumentWriter.cpp:226 | WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter*, char const*, unsigned long) DecodedDataDocumentParser.cpp:50 | WebCore::HTMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;) HTMLDocumentParser.cpp:742 | WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode) HTMLDocumentParser.cpp:235 | WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) HTMLDocumentParser.cpp:535 | WebCore::HTMLDocumentParser::canTakeNextToken(WebCore::HTMLDocumentParser::SynchronousMode, WebCore::PumpSession&amp;) HTMLDocumentParser.cpp:291 | WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() HTMLDocumentParser.cpp:271 | WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr&lt;WebCore::Element&gt;, WTF::TextPosition const&amp;) HTMLScriptRunner.cpp:183 | WebCore::HTMLScriptRunner::runScript(WebCore::Element*, WTF::TextPosition const&amp;) HTMLScriptRunner.cpp:314 | WebCore::ScriptElement::prepareScript(WTF::TextPosition const&amp;, WebCore::ScriptElement::LegacyTypeSupport) ScriptElement.cpp:245 | WebCore::ScriptElement::executeScript(WebCore::ScriptSourceCode const&amp;) ScriptElement.cpp:316 | WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&amp;) ScriptController.cpp:158 | WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld*) ScriptController.cpp:142 | WebCore::JSMainThreadExecState::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) JSMainThreadExecState.h:77 | JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) Completion.cpp:83 | JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) Interpreter.cpp:951 | JSC::JITCode::execute(JSC::JSStack*, JSC::ExecState*, JSC::VM*) JITCode.h:135 | 0x307901201045 | WebCore::jsWebGLRenderingContextPrototypeFunctionCompileShader(JSC::ExecState*) JSWebGLRenderingContext.cpp:1503 | WebCore::WebGLRenderingContext::compileShader(WebCore::WebGLShader*, int&amp;) WebGLRenderingContext.cpp:1303 | WebCore::GraphicsContext3D::compileShader(unsigned int) GraphicsContext3DOpenGLCommon.cpp:447 | WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE(unsigned int) Extensions3DOpenGLCommon.cpp:179 | WebCore::ANGLEWebKitBridge::compileShaderSource(char const*, WebCore::ANGLEShaderType, WTF::String&amp;, WTF::String&amp;, WTF::Vector&lt;WebCore::ANGLEShaderSymbol, 0ul, WTF::CrashOnOverflow&gt;&amp;, int) ANGLEWebKitBridge.cpp:173 | ShConstructCompiler ShaderLang.cpp:156 | TCompiler::Init(ShBuiltInResources const&amp;) Compiler.cpp:148 | TCompiler::InitBuiltInSymbolTable(ShBuiltInResources const&amp;) Compiler.cpp:276 | (anonymous namespace)::InitializeSymbolTable(TVector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, pool_allocator&lt;char&gt; &gt; &gt; const&amp;, ShShaderType, ShShaderSpec, ShBuiltInResources const&amp;, TInfoSink&amp;, TSymbolTable&amp;) Compiler.cpp:76 | InsertBuiltInFunctionsCommon(ShBuiltInResources const&amp;, TSymbolTable*) builtin_symbol_table.cpp:86 | builtin1(TSymbolTable*, TType*, char const*, TType*, char const*) builtin_symbol_table.cpp:15 | operator new(unsigned long) | malloc | malloc_zone_malloc 

Almost all of the leaks I&apos;ve looked at have had the same stack trace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910432</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2013-07-19 22:34:21 -0700</bug_when>
    <thetext>For reference, ANGLE was updated in r152755. I&apos;m a little bit confused by the fact that mentions updating to ANGLE r2426, but ANGLE appears to have switched to Git at some point during June. I can&apos;t find any revision of their master branch that corresponds to a r2426.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910433</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-19 22:35:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/14501257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910489</commentid>
    <comment_count>3</comment_count>
      <attachid>207202</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-20 15:00:19 -0700</bug_when>
    <thetext>Created attachment 207202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910542</commentid>
    <comment_count>4</comment_count>
    <who name="Tobias Netzel">tobias.netzel</who>
    <bug_when>2013-07-21 14:15:34 -0700</bug_when>
    <thetext>It seems the version number may come from the latest subversion revision number, which was 2426:
http://angleproject.googlecode.com/svn/

Confusing is the fact that in the git repository
http://code.google.com/p/angleproject/source/browse/src/common/version.h
currently lists a build revision of 2426, with angle version 1.2.0 while the latest svn trunk
http://angleproject.googlecode.com/svn/trunk/src/common/version.h
lists a build revision of 2249, with angle version 1.0.0 .

Possibly the svn revision of 2426 was confused with the build revision of 2426, while the intention might have been to get the current build revision of 2426.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910704</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-22 09:45:25 -0700</bug_when>
    <thetext>I did update to the latest svn revision, and they did switch over to git, so any further updates will need to be from the git repository.

This is probably not from the update, but rather from r152746 where I unskipped the webgl tests.  Maybe we should just reskip them to speed up the buildbots until this is fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910705</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-22 09:55:19 -0700</bug_when>
    <thetext>&gt; This is probably not from the update, but rather from r152746 where I unskipped the webgl tests.  Maybe we should just reskip them to speed up the buildbots until this is fixed?

Never mind.  Rolling out the update and keeping the changes seems to have fixed the leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910739</commentid>
    <comment_count>7</comment_count>
    <who name="Tobias Netzel">tobias.netzel</who>
    <bug_when>2013-07-22 11:08:04 -0700</bug_when>
    <thetext>But the update seems somehow incomplete; at least version.h wasn&apos;t updated (see http://trac.webkit.org/log/trunk/Source/ThirdParty/ANGLE/src/common/version.h).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910743</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-22 11:10:51 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; But the update seems somehow incomplete; at least version.h wasn&apos;t updated (see http://trac.webkit.org/log/trunk/Source/ThirdParty/ANGLE/src/common/version.h).

Yes, I was trying to stick with their svn repository, which is what we had done in the past, but they&apos;ve stopped updating and maintaining their svn repository.  I&apos;m going to switch to using their git repository and make sure they fixed the leaks we were seeing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919069</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-08-20 09:07:32 -0700</bug_when>
    <thetext>The ANGLE update that caused this was rolled out in r152946 and the correct update was done in r153064.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207202</attachid>
            <date>2013-07-20 15:00:19 -0700</date>
            <delta_ts>2013-07-20 15:00:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>rollout-angle.patch</filename>
            <type>text/plain</type>
            <size>1824611</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0IGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QKaW5kZXggZGJjMDEyNy4uODA5ODkxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QKQEAgLTYsMTMgKzYsMTMgQEAKIAkJPGtleT5P
cGVuU291cmNlUHJvamVjdDwva2V5PgogCQk8c3RyaW5nPkFOR0xFPC9zdHJpbmc+CiAJCTxrZXk+
T3BlblNvdXJjZVZlcnNpb248L2tleT4KLQkJPHN0cmluZz5yMjQyNjwvc3RyaW5nPgorCQk8c3Ry
aW5nPnIxNjQxPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZVdlYnNpdGVVUkw8L2tleT4KIAkJ
PHN0cmluZz5odHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0Lzwvc3RyaW5nPgog
CQk8a2V5Pk9wZW5Tb3VyY2VTQ008L2tleT4KLQkJPHN0cmluZz5zdm4gY28gLXIyNDI2IGh0dHA6
Ly9hbmdsZXByb2plY3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgorCQk8c3Ry
aW5nPnN2biBjbyAtcjE2NDEgaHR0cDovL2FuZ2xlcHJvamVjdC5nb29nbGVjb2RlLmNvbS9zdm4v
dHJ1bmsvPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZUltcG9ydERhdGU8L2tleT4KLQkJPHN0
cmluZz4yMDEzLTA2LTEzPC9zdHJpbmc+CisJCTxzdHJpbmc+MjAxMy0wMS0wNDwvc3RyaW5nPgog
CQk8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CiAJCTxzdHJpbmc+QlNEPC9zdHJpbmc+CiAJ
CTxrZXk+T3BlblNvdXJjZUxpY2Vuc2VGaWxlPC9rZXk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNWQz
OWRmLi5lZjBlNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FO
R0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYsMzYgKzYsMTkgQEAKIAlvYmplY3RW
ZXJzaW9uID0gNDY7CiAJb2JqZWN0cyA9IHsKIAotLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0
IHNlY3Rpb24gKi8KLQkJNUM5RDgyOUIxNzk4QjFDRDAwN0UxNTg4IC8qIERlcml2ZWQgU291cmNl
cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSA1QzlEODI5QzE3OThCMUNFMDA3RTE1ODggLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87Ci0JCQli
dWlsZFBoYXNlcyA9ICgKLQkJCQk1QzlEODJBMDE3OThCMUQ2MDA3RTE1ODggLyogU2hlbGxTY3Jp
cHQgKi8sCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJKTsKLQkJCW5hbWUgPSAiRGVy
aXZlZCBTb3VyY2VzIjsKLQkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7Ci0JCX07
Ci0vKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KLQogLyogQmVnaW4gUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KIAkJMzEyQkRCMEMxNUZFQ0FDOTAwOTdFQkM3IC8qIEFOR0xFLnBs
aXN0IGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJC
REIwOTE1RkVDOTFFMDA5N0VCQzcgLyogQU5HTEUucGxpc3QgKi87IH07CiAJCTMxMkJEQjBFMTVG
RUNBRTUwMDk3RUJDNyAvKiBBTkdMRS50eHQgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkJEQjBBMTVGRUNBM0EwMDk3RUJDNyAvKiBBTkdMRS50eHQg
Ki87IH07CiAJCTQ5OTUxQzAzMTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwMjE0QjdB
QUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oICovOyB9OwogCQk0OTk1MUMwOTE0QjdBQUQ4
MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8q
IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCAqLzsgfTsKIAkJNDk5NTFDMEExNEI3QUFEODAw
NjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLzsgfTsKLQkJNDk5NTFDMEIxNEI3QUFEODAwNjBFOTZF
IC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRo
LmNwcCAqLzsgfTsKLQkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0
aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFD
MDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9OwotCQk1QzlEODI5
NjE3OThCMUExMDA3RTE1ODggLyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlEODI5MTE3OThCMUExMDA3RTE1ODgg
LyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi87IH07Ci0JCTVDOUQ4Mjk3MTc5OEIxQTEwMDdFMTU4
OCAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzlEODI5MjE3OThCMUExMDA3RTE1ODggLyogZ2xzbGFuZ19sZXguY3BwICov
OyB9OwotCQk1QzlEODI5ODE3OThCMUExMDA3RTE1ODggLyogZ2xzbGFuZ190YWIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RDgyOTMxNzk4QjFB
MTAwN0UxNTg4IC8qIGdsc2xhbmdfdGFiLmNwcCAqLzsgfTsKLQkJNUM5RDgyOTkxNzk4QjFBMTAw
N0UxNTg4IC8qIGdsc2xhbmdfdGFiLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzlEODI5NDE3OThCMUExMDA3RTE1ODggLyogZ2xzbGFuZ190YWIuaCAq
LzsgfTsKLQkJNUM5RDgyOUExNzk4QjFBMTAwN0UxNTg4IC8qIFRva2VuaXplci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlEODI5NTE3OThCMUEx
MDA3RTE1ODggLyogVG9rZW5pemVyLmNwcCAqLzsgfTsKLQkJNUNDRUI4QjYxNzkwOEVFQzAwRkQ5
NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGlu
X3N5bWJvbF90YWJsZS5jcHAgKi87IH07CisJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBE
ZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAg
Ki87IH07CisJCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRC
N0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLzsgfTsKIAkJOTBEOUIxMDIxMkUx
MURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5j
cHAgKi87IH07CiAJCTkwRDlCMTAzMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIw
RkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmggKi87IH07CisJCTkwRDlC
MTA0MTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGQjEyRTExRENCMDAyRDQyNTUgLyog
Z2xzbGFuZ19sZXguY3BwICovOyB9OworCQk5MEQ5QjEwNTEyRTExRENCMDAyRDQyNTUgLyogZ2xz
bGFuZ190YWIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTBEOUIwRkMxMkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfdGFiLmNwcCAqLzsgfTsKKwkJ
OTBEOUIxMDYxMkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfdGFiLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGRDEyRTExRENCMDAyRDQyNTUg
LyogZ2xzbGFuZ190YWIuaCAqLzsgfTsKIAkJOTBEOUIxMDcxMkUxMURDQjAwMkQ0MjU1IC8qIGds
c2xhbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkw
RDlCMEZFMTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nLmggKi87IH07CiAJCTkwRDlCMTA5MTJF
MTFEQ0IwMDJENDI1NSAvKiBTZWFyY2hTeW1ib2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIxMDAxMkUxMURDQjAwMkQ0MjU1IC8qIFNlYXJj
aFN5bWJvbC5jcHAgKi87IH07CiAJCTkwRDlCMTBBMTJFMTFEQ0IwMDJENDI1NSAvKiBTZWFyY2hT
eW1ib2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkw
RDlCMTAxMTJFMTFEQ0IwMDJENDI1NSAvKiBTZWFyY2hTeW1ib2wuaCAqLzsgfTsKQEAgLTY1LDYg
KzQ4LDcgQEAKIAkJQTI2NEY4QUYxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVjdGl2ZUhhbmRsZXJC
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjY0
Rjg5NjE2OTc0REVEMDA2RkFBNUEgLyogRGlyZWN0aXZlSGFuZGxlckJhc2UuaCAqLzsgfTsKIAkJ
QTI2NEY4QjAxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVjdGl2ZVBhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjY0Rjg5NzE2OTc0REVEMDA2
RkFBNUEgLyogRGlyZWN0aXZlUGFyc2VyLmNwcCAqLzsgfTsKIAkJQTI2NEY4QjExNjk3NERFRDAw
NkZBQTVBIC8qIERpcmVjdGl2ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTI2NEY4OTgxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVjdGl2ZVBh
cnNlci5oICovOyB9OworCQlBMjY0RjhCMjE2OTc0REVEMDA2RkFBNUEgLyogRXhwcmVzc2lvblBh
cnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MjY0Rjg5OTE2OTc0REVEMDA2RkFBNUEgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi87IH07CiAJ
CUEyNjRGOEIzMTY5NzRERUQwMDZGQUE1QSAvKiBFeHByZXNzaW9uUGFyc2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjY0Rjg5QTE2OTc0REVEMDA2
RkFBNUEgLyogRXhwcmVzc2lvblBhcnNlci5oICovOyB9OwogCQlBMjY0RjhCNDE2OTc0REVEMDA2
RkFBNUEgLyogSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTI2NEY4OUIxNjk3NERFRDAwNkZBQTVBIC8qIElucHV0LmNwcCAqLzsgfTsKIAkJ
QTI2NEY4QjUxNjk3NERFRDAwNkZBQTVBIC8qIElucHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjY0Rjg5QzE2OTc0REVEMDA2RkFBNUEgLyogSW5w
dXQuaCAqLzsgfTsKQEAgLTgxLDYgKzY1LDcgQEAKIAkJQTI2NEY4QzAxNjk3NERFRDAwNkZBQTVB
IC8qIFNvdXJjZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMjY0RjhBNzE2OTc0REVEMDA2RkFBNUEgLyogU291cmNlTG9jYXRpb24uaCAq
LzsgfTsKIAkJQTI2NEY4QzExNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNjRGOEE4MTY5NzRERUQwMDZG
QUE1QSAvKiBUb2tlbi5jcHAgKi87IH07CiAJCUEyNjRGOEMyMTY5NzRERUQwMDZGQUE1QSAvKiBU
b2tlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI2
NEY4QTkxNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuLmggKi87IH07CisJCUEyNjRGOEMzMTY5NzRE
RUQwMDZGQUE1QSAvKiBUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTI2NEY4QUExNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuaXplci5j
cHAgKi87IH07CiAJCUEyNjRGOEM0MTY5NzRERUQwMDZGQUE1QSAvKiBUb2tlbml6ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNjRGOEFCMTY5NzRE
RUQwMDZGQUE1QSAvKiBUb2tlbml6ZXIuaCAqLzsgfTsKIAkJQTI2NEY4QzgxNjk3NEUyQTAwNkZB
QTVBIC8qIEhhc2hOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTI2NEY4QzUxNjk3NEUyQTAwNkZBQTVBIC8qIEhhc2hOYW1lcy5oICovOyB9Owog
CQlBMjY0RjhDOTE2OTc0RTJBMDA2RkFBNUEgLyogVmFyaWFibGVQYWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI2NEY4QzYxNjk3NEUyQTAw
NkZBQTVBIC8qIFZhcmlhYmxlUGFja2VyLmNwcCAqLzsgfTsKQEAgLTEyNSwxNiArMTEwLDYgQEAK
IAkJRkIzOUQ3NkUxMjAxMTBGQzAwMDg4RTY5IC8qIFNoYWRlckxhbmcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzlEMkJGMTIwMEYzRTYwMDA4OEU2
OSAvKiBTaGFkZXJMYW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCAp
OyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKLS8qIEJlZ2luIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCi0JCTVDOUQ4MkExMTc5OEIxRTYwMDdFMTU4OCAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVt
UHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSBGQjM5RDA3MDEyMDBFRDkyMDAwODhFNjkgLyog
UHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURT
dHJpbmcgPSA1QzlEODI5QjE3OThCMUNEMDA3RTE1ODg7Ci0JCQlyZW1vdGVJbmZvID0gIkRlcml2
ZWQgU291cmNlcyI7Ci0JCX07Ci0vKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24g
Ki8KLQogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAJCTMxMkJE
QjBCMTVGRUNBQjAwMDk3RUJDNyAvKiBDb3B5RmlsZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlOwpAQCAtMTY1LDIwICsxNDAsMTYgQEAKIAkJNDk5NTFDMDIxNEI3QUFC
MzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gbGVuZ3RoX2xpbWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk1
MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5
NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3RDYWxsRGVwdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUg
LyogRGV0ZWN0Q2FsbERlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
dGVjdENhbGxEZXB0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzlEODI5MTE3
OThCMUExMDA3RTE1ODggLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFeHByZXNzaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNUM5RDgyOTIxNzk4QjFBMTAwN0UxNTg4IC8qIGdsc2xhbmdfbGV4LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xhbmdfbGV4LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM5RDgyOTMxNzk4QjFBMTAwN0UxNTg4IC8q
IGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGds
c2xhbmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM5RDgyOTQxNzk4
QjFBMTAwN0UxNTg4IC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGdsc2xhbmdfdGFiLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDOUQ4
Mjk1MTc5OEIxQTEwMDdFMTU4OCAvKiBUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNUNDRUI4QjQxNzkwOEUzQTAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNDRUI4QjUxNzkwOEUzQTAwRkQ5NDk2IC8qIGJ1aWx0aW5f
c3ltYm9sX3RhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBE
ZXRlY3RSZWN1cnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGV0ZWN0UmVjdXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5NTFD
MDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZXRlY3RSZWN1cnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUQ3QzU5QzUxMjA4QzY4QjAwMUM4NzNFIC8qIEFOR0xFLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEFOR0xFLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RDdDNTlDNjEyMDhDNjhCMDAxQzg3M0UgLyogQmFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhDNjhCMDAxQzg3M0UgLyogRGVidWdS
ZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVs
ZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTBEOUIwRjkxMkUx
MURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTBE
OUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbkJlaGF2aW9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkwRDlCMEZCMTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNsYW5nX2xleC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwRDlCMEZDMTJFMTFEQ0IwMDJENDI1NSAv
KiBnbHNsYW5nX3RhYi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBn
bHNsYW5nX3RhYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwRDlCMEZEMTJF
MTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX3RhYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBnbHNsYW5nX3RhYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MEQ5
QjBGRTEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBnbHNsYW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwRDlC
MTAwMTJFMTFEQ0IwMDJENDI1NSAvKiBTZWFyY2hTeW1ib2wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VhcmNoU3ltYm9sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTBEOUIxMDExMkUxMURDQjAwMkQ0MjU1IC8qIFNlYXJjaFN5bWJvbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWFyY2hTeW1ib2wuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOCw2ICsxNzksNyBAQAogCQlBMjY0Rjg5NjE2OTc0REVE
MDA2RkFBNUEgLyogRGlyZWN0aXZlSGFuZGxlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlyZWN0aXZlSGFuZGxlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTI2NEY4OTcxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVjdGl2ZVBhcnNlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXJlY3RpdmVQYXJzZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMjY0Rjg5ODE2OTc0REVEMDA2RkFBNUEg
LyogRGlyZWN0aXZlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERp
cmVjdGl2ZVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMjY0Rjg5OTE2
OTc0REVEMDA2RkFBNUEgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFeHByZXNzaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTI2NEY4OUExNjk3NERFRDAwNkZBQTVBIC8qIEV4cHJlc3Npb25QYXJz
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblBhcnNlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMjY0Rjg5QjE2OTc0REVEMDA2RkFBNUEg
LyogSW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5wdXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMjY0Rjg5QzE2OTc0REVEMDA2RkFB
NUEgLyogSW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5wdXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNCw2ICsxOTYsNyBAQAogCQlBMjY0RjhB
NzE2OTc0REVEMDA2RkFBNUEgLyogU291cmNlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU291cmNlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTI2NEY4QTgxNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRva2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTI2NEY4QTkxNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRva2VuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUEyNjRGOEFBMTY5NzRERUQwMDZGQUE1QSAvKiBUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTI2NEY4QUIxNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuaXplci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUb2tlbml6ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTI2NEY4QzUxNjk3NEUyQTAwNkZBQTVBIC8qIEhhc2hOYW1lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNoTmFtZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTI2NEY4QzYxNjk3NEUyQTAwNkZBQTVBIC8qIFZhcmlhYmxl
UGFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZhcmlhYmxl
UGFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMiwxOSArMjg1LDYg
QEAKIAkJCW5hbWUgPSBtaXNjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJ
NUM5RDgyOTAxNzk4QjE3MzAwN0UxNTg4IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUM5RDgyOTExNzk4QjFBMTAwN0Ux
NTg4IC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovLAotCQkJCTVDOUQ4MjkyMTc5OEIxQTEwMDdF
MTU4OCAvKiBnbHNsYW5nX2xleC5jcHAgKi8sCi0JCQkJNUM5RDgyOTMxNzk4QjFBMTAwN0UxNTg4
IC8qIGdsc2xhbmdfdGFiLmNwcCAqLywKLQkJCQk1QzlEODI5NDE3OThCMUExMDA3RTE1ODggLyog
Z2xzbGFuZ190YWIuaCAqLywKLQkJCQk1QzlEODI5NTE3OThCMUExMDA3RTE1ODggLyogVG9rZW5p
emVyLmNwcCAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7Ci0JCQlwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvQU5HTEU7Ci0JCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOwotCQl9OwogCQk1RDdDNTlDNDEyMDhDNjhCMDAxQzg3M0UgLyogQ29uZmlndXJhdGlvbnMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzk5LDcgKzM1
OSw2IEBACiAJCUZCMzlEMDZFMTIwMEVEOTIwMDA4OEU2OSA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUM5RDgyOTAxNzk4QjE3MzAwN0UxNTg4IC8qIERlcml2
ZWQgU291cmNlcyAqLywKIAkJCQk1RDdDNTlDNDEyMDhDNjhCMDAxQzg3M0UgLyogQ29uZmlndXJh
dGlvbnMgKi8sCiAJCQkJQTI5QjE1RTkxNjk3OEI3RDAwMTExRDk3IC8qIGluY2x1ZGUgKi8sCiAJ
CQkJMzEyQkRCMDcxNUZFQzhFNjAwOTdFQkM3IC8qIG1pc2MgKi8sCkBAIC00MzEsOCArMzkwLDYg
QEAKIAkJCQlBMjY1NjgyQzE1OUMyM0UxMDAzOTg1MzkgLyogZGVwZ3JhcGggKi8sCiAJCQkJRkIz
OUQyNDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXByb2Nlc3NvciAqLywKIAkJCQlBMjY1NjgzNDE1
OUMyM0UxMDAzOTg1MzkgLyogdGltaW5nICovLAotCQkJCTVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5
NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8sCi0JCQkJNUNDRUI4QjUxNzkwOEUzQTAw
RkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmggKi8sCiAJCQkJRkIzOUQyMjExMjAwRjM1
QTAwMDg4RTY5IC8qIEJhc2VUeXBlcy5oICovLAogCQkJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2
RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi8sCiAJCQkJNDk5NTFDMDYxNEI3QUFE
ODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggKi8sCkBAIC00NDIsOCArMzk5
LDggQEAKIAkJCQlGQjM5RDIyNTEyMDBGMzVBMDAwODhFNjkgLyogQ29uc3RhbnRVbmlvbi5oICov
LAogCQkJCUZCMzlEMjI2MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgKi8sCiAJCQkJRkIz
OUQyMjcxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmggKi8sCi0JCQkJNDk5NTFDMDcxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgKi8sCi0JCQkJNDk5NTFDMDgxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oICovLAorCQkJCTQ5OTUxQzA3MTRCN0FBRDgw
MDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovLAorCQkJCTQ5OTUxQzA4MTRCN0FBRDgw
MDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLywKIAkJCQlBMjY1NjdCMDE1OUMyMUIxMDAz
OTg1MzkgLyogRGlhZ25vc3RpY3MuY3BwICovLAogCQkJCUEyNjU2N0IxMTU5QzIxQjEwMDM5ODUz
OSAvKiBEaWFnbm9zdGljcy5oICovLAogCQkJCUEyNjU2N0IyMTU5QzIxQjEwMDM5ODUzOSAvKiBE
aXJlY3RpdmVIYW5kbGVyLmNwcCAqLywKQEAgLTQ1Miw2ICs0MDksOSBAQAogCQkJCUEwQUFCRTJB
MTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29wVW5yb2xsLmNwcCAqLywKIAkJCQlBMEFBQkUyQjEz
QUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5oICovLAogCQkJCTkwRDlCMEZFMTJFMTFE
Q0IwMDJENDI1NSAvKiBnbHNsYW5nLmggKi8sCisJCQkJOTBEOUIwRkIxMkUxMURDQjAwMkQ0MjU1
IC8qIGdsc2xhbmdfbGV4LmNwcCAqLywKKwkJCQk5MEQ5QjBGQzEyRTExRENCMDAyRDQyNTUgLyog
Z2xzbGFuZ190YWIuY3BwICovLAorCQkJCTkwRDlCMEZEMTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNs
YW5nX3RhYi5oICovLAogCQkJCUEyNjRGOEM1MTY5NzRFMkEwMDZGQUE1QSAvKiBIYXNoTmFtZXMu
aCAqLywKIAkJCQlGQjM5RDIyQTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1NpbmsuY3BwICovLAog
CQkJCUZCMzlEMjJCMTIwMEYzNUEwMDA4OEU2OSAvKiBJbmZvU2luay5oICovLApAQCAtNTI1LDYg
KzQ4NSw3IEBACiAJCQkJQTI2NEY4OTYxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVjdGl2ZUhhbmRs
ZXJCYXNlLmggKi8sCiAJCQkJQTI2NEY4OTcxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVjdGl2ZVBh
cnNlci5jcHAgKi8sCiAJCQkJQTI2NEY4OTgxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVjdGl2ZVBh
cnNlci5oICovLAorCQkJCUEyNjRGODk5MTY5NzRERUQwMDZGQUE1QSAvKiBFeHByZXNzaW9uUGFy
c2VyLmNwcCAqLywKIAkJCQlBMjY0Rjg5QTE2OTc0REVEMDA2RkFBNUEgLyogRXhwcmVzc2lvblBh
cnNlci5oICovLAogCQkJCUEyNjRGODlCMTY5NzRERUQwMDZGQUE1QSAvKiBJbnB1dC5jcHAgKi8s
CiAJCQkJQTI2NEY4OUMxNjk3NERFRDAwNkZBQTVBIC8qIElucHV0LmggKi8sCkBAIC01NDIsNiAr
NTAzLDcgQEAKIAkJCQlBMjY0RjhBNzE2OTc0REVEMDA2RkFBNUEgLyogU291cmNlTG9jYXRpb24u
aCAqLywKIAkJCQlBMjY0RjhBODE2OTc0REVEMDA2RkFBNUEgLyogVG9rZW4uY3BwICovLAogCQkJ
CUEyNjRGOEE5MTY5NzRERUQwMDZGQUE1QSAvKiBUb2tlbi5oICovLAorCQkJCUEyNjRGOEFBMTY5
NzRERUQwMDZGQUE1QSAvKiBUb2tlbml6ZXIuY3BwICovLAogCQkJCUEyNjRGOEFCMTY5NzRERUQw
MDZGQUE1QSAvKiBUb2tlbml6ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcHJlcHJvY2Vzc29y
OwpAQCAtNTY4LDcgKzUzMCw3IEBACiAJCQkJQTI2NTY4M0ExNTlDMjNFMTAwMzk4NTM5IC8qIERl
cGVuZGVuY3lHcmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4M0MxNTlDMjNFMTAwMzk4
NTM5IC8qIERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2
ODNFMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCBp
biBIZWFkZXJzICovLAorCQkJCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1
cnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2N0JDMTU5QzIxQjEwMDM5ODUzOSAvKiBE
aWFnbm9zdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QUQxNjk3NERFRDAwNkZBQTVB
IC8qIERpYWdub3N0aWNzQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY3QkUxNTlDMjFC
MTAwMzk4NTM5IC8qIERpcmVjdGl2ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTc4LDYg
KzU0MCw3IEBACiAJCQkJOTBEOUIxMDMxMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2
aW9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEFBQkUyRDEzQUZFODEwMDBGMkVCRDEgLyogRm9y
TG9vcFVucm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMDcxMkUxMURDQjAwMkQ0MjU1
IC8qIGdsc2xhbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTkwRDlCMTA2MTJFMTFEQ0IwMDJENDI1
NSAvKiBnbHNsYW5nX3RhYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QzgxNjk3NEUyQTAw
NkZBQTVBIC8qIEhhc2hOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QjUxNjk3NERF
RDAwNkZBQTVBIC8qIElucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDRDE2OTc2MkFB
MDA2RkFBNUEgLyoga2hycGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLApAQCAtNjA2LDcgKzU2OSw2
IEBACiAJCQkJOTBEOUIxMTgxMkUxMURENjAwMkQ0MjU1IC8qIFZhcmlhYmxlSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTI2NEY4Q0ExNjk3NEUyQTAwNkZBQTVBIC8qIFZhcmlhYmxlUGFja2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MEQ5QjExQTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lv
bkdMU0wuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDOUQ4Mjk5MTc5OEIxQTEwMDdFMTU4OCAvKiBn
bHNsYW5nX3RhYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02MjYsNyArNTg4LDYgQEAKIAkJCWJ1aWxk
UnVsZXMgPSAoCiAJCQkpOwogCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCTVDOUQ4MkEyMTc5OEIx
RTYwMDdFMTU4OCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJKTsKIAkJCW5hbWUgPSBB
TkdMRTsKIAkJCXByb2R1Y3ROYW1lID0gYW5nbGU7CkBAIC02NTYsMjcgKzYxNywxMCBAQAogCQkJ
cHJvamVjdFJvb3QgPSAiIjsKIAkJCXRhcmdldHMgPSAoCiAJCQkJRkIzOUQwRDAxMjAwRjBFMzAw
MDg4RTY5IC8qIEFOR0xFICovLAotCQkJCTVDOUQ4MjlCMTc5OEIxQ0QwMDdFMTU4OCAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAq
LwogCi0vKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQk1QzlE
ODJBMDE3OThCMUQ2MDA3RTE1ODggLyogU2hlbGxTY3JpcHQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owot
CQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJaW5wdXRQYXRocyA9ICgKLQkJCSk7Ci0JCQlvdXRwdXRQ
YXRocyA9ICgKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKLQkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBc
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9BTkdMRVwiXG5jZCBcIiR7QlVJ
TFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9BTkdMRVwiXG5cbi9iaW4vbG4gLXNmaCBc
IiR7U1JDUk9PVH1cIiAuXG5leHBvcnQgQU5HTEU9XCJBTkdMRVwiXG5cbm1ha2UgIC0tbm8tYnVp
bHRpbi1ydWxlcyAtZiBcIkFOR0xFL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmlu
L3N5c2N0bCAtbiBody5hdmFpbGNwdWAiOwotCQl9OwotLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZSBzZWN0aW9uICovCi0KIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAkJRkIzOUQwQ0UxMjAwRjBFMzAwMDg4RTY5IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKQEAgLTY5MSwxMyArNjM1LDE2IEBACiAJCQkJQTI2
NTY4M0IxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTI2NTY4M0QxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFw
aE91dHB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjgzRjE1OUMyM0UxMDAzOTg1Mzkg
LyogRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk5NTFD
MEIxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0OTk1MUMwQjE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEyNjU2N0JCMTU5QzIxQjEwMDM5ODUzOSAvKiBEaWFnbm9zdGljcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY0RjhBQzE2OTc0REVEMDA2RkFBNUEgLyogRGlhZ25v
c3RpY3NCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2N0JEMTU5QzIxQjEwMDM5ODUz
OSAvKiBEaXJlY3RpdmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEFFMTY5
NzRERUQwMDZGQUE1QSAvKiBEaXJlY3RpdmVIYW5kbGVyQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMjY0RjhCMDE2OTc0REVEMDA2RkFBNUEgLyogRGlyZWN0aXZlUGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUEyNjRGOEIyMTY5NzRERUQwMDZGQUE1QSAvKiBFeHByZXNzaW9uUGFy
c2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEwQUFCRTJDMTNBRkU4MTAwMEYyRUJEMSAvKiBG
b3JMb29wVW5yb2xsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkwRDlCMTA0MTJFMTFEQ0IwMDJE
NDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MEQ5QjEwNTEyRTEx
RENCMDAyRDQyNTUgLyogZ2xzbGFuZ190YWIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQy
NzkxMjAwRjM1QTAwMDg4RTY5IC8qIEluZm9TaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZC
MzlEMjdCMTIwMEYzNUEwMDA4OEU2OSAvKiBJbml0aWFsaXplLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZCMzlEMjdEMTIwMEYzNUEwMDA4OEU2OSAvKiBJbml0aWFsaXplRGxsLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtNzIzLDEwICs2NzAsMTAgQEAKIAkJCQlBMjY1Njg0MDE1OUMyM0UxMDAzOTg1
MzkgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMjY1Njg0MjE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMDkxMkUxMURDQjAwMkQ0MjU1IC8qIFNlYXJj
aFN5bWJvbC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0NFQjhCNjE3OTA4RUVDMDBGRDk0OTYg
LyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQTgx
MjAwRjM1QTAwMDg4RTY5IC8qIFNoYWRlckxhbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIz
OUQyQUExMjAwRjM1QTAwMDg4RTY5IC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUEyNjRGOEMxMTY5NzRERUQwMDZGQUE1QSAvKiBUb2tlbi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBMjY0RjhDMzE2OTc0REVEMDA2RkFBNUEgLyogVG9rZW5pemVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUEwQUFCRTQ4MTNBRkU5NjEwMEYyRUJEMSAvKiBUcmFuc2xhdG9yRVNTTC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGQjM5RDJBQzEyMDBGMzVBMDAwODhFNjkgLyogVHJhbnNsYXRv
ckdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMTMxMkUxMURENjAwMkQ0MjU1IC8q
IHV0aWwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MzQsNDUgKzY4MSwxMiBAQAogCQkJCTkwRDlC
MTE3MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTI2NEY4QzkxNjk3NEUyQTAwNkZBQTVBIC8qIFZhcmlhYmxlUGFja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkwRDlCMTE5MTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk1QzlEODI5NjE3OThCMUExMDA3RTE1ODggLyogRXhwcmVzc2lv
blBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1QzlEODI5NzE3OThCMUExMDA3RTE1ODgg
LyogZ2xzbGFuZ19sZXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUM5RDgyOTgxNzk4QjFBMTAw
N0UxNTg4IC8qIGdsc2xhbmdfdGFiLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDOUQ4MjlBMTc5
OEIxQTEwMDdFMTU4OCAvKiBUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CiAvKiBFbmQgUEJY
U291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCi0vKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRl
bmN5IHNlY3Rpb24gKi8KLQkJNUM5RDgyQTIxNzk4QjFFNjAwN0UxNTg4IC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0
ID0gNUM5RDgyOUIxNzk4QjFDRDAwN0UxNTg4IC8qIERlcml2ZWQgU291cmNlcyAqLzsKLQkJCXRh
cmdldFByb3h5ID0gNUM5RDgyQTExNzk4QjFFNjAwN0UxNTg4IC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKLQkJfTsKLS8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KLQog
LyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwotCQk1QzlEODI5RDE3OThC
MUNFMDA3RTE1ODggLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTVDOUQ4MjlFMTc5OEIxQ0Uw
MDdFMTU4OCAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1F
KSI7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTVDOUQ4MjlGMTc5OEIxQ0Uw
MDdFMTU4OCAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9O
QU1FKSI7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07CiAJCTVEN0M1OURCMTIw
OEM2QzMwMDFDODczRSAvKiBQcm9kdWN0aW9uICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDVEN0M1OUM2MTIwOEM2
OEIwMDFDODczRSAvKiBCYXNlLnhjY29uZmlnICovOwpAQCAtODE5LDE2ICs3MzMsNiBAQAogLyog
RW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1
cmF0aW9uTGlzdCBzZWN0aW9uICovCi0JCTVDOUQ4MjlDMTc5OEIxQ0UwMDdFMTU4OCAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3Vy
Y2VzIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAotCQkJCTVDOUQ4MjlEMTc5OEIxQ0UwMDdFMTU4OCAvKiBEZWJ1ZyAqLywK
LQkJCQk1QzlEODI5RTE3OThCMUNFMDA3RTE1ODggLyogUmVsZWFzZSAqLywKLQkJCQk1QzlEODI5
RjE3OThCMUNFMDA3RTE1ODggLyogUHJvZHVjdGlvbiAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOwotCQl9OwogCQlGQjM5RDA3MzEyMDBFRDkyMDAwODhFNjkgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJBTkdMRSIgKi8gPSB7CiAJCQlpc2EgPSBY
Q0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL0NoYW5nZUxvZwppbmRleCA3OTAwYmEzLi4wYWE1OWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzE5IEBACisyMDEzLTA3LTIwICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGVkIEFOR0xFIGlzIGxlYWtpbmcgbGlr
ZSBhIHNpZXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTg5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSb2xsb3V0IDE1Mjg2MywgcjE1MjgyMSwgcjE1MjkyOSBhbmQgcjE1Mjc1NS4KKworICAgICAg
ICAqIEFOR0xFLnBsaXN0OgorICAgICAgICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogUmVtb3ZlZC4KKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGluY2x1ZGUv
R0xTTEFORy9TaGFkZXJMYW5nLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5o
OgorICAgICAgICAoZ2V0UXVhbGlmaWVyU3RyaW5nKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
Q29tbW9uLmg6CisgICAgICAgIChFbmNvZGVTb3VyY2VMb2MpOgorICAgICAgICAoRGVjb2RlU291
cmNlTG9jKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwOgorICAgICAgICAo
VENvbXBpbGVyOjpUQ29tcGlsZXIpOgorICAgICAgICAoVENvbXBpbGVyOjpJbml0KToKKyAgICAg
ICAgKFRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmRldGVjdFJlY3Vy
c2lvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaDoKKyAgICAgICAg
KENvbnN0YW50VW5pb246OkNvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9E
ZXRlY3RDYWxsRGVwdGguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRl
Y3RSZWN1cnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rp
b25Ob2RlOjpGdW5jdGlvbk5vZGUpOgorICAgICAgICAoRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlv
bk5vZGU6OmdldE5hbWUpOgorICAgICAgICAoRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6
OmFkZENhbGxlZSk6CisgICAgICAgIChEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6ZGV0
ZWN0UmVjdXJzaW9uKToKKyAgICAgICAgKERldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0UmVjdXJzaW9u
KToKKyAgICAgICAgKERldGVjdFJlY3Vyc2lvbjo6fkRldGVjdFJlY3Vyc2lvbik6CisgICAgICAg
IChEZXRlY3RSZWN1cnNpb246OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKERldGVjdFJlY3Vy
c2lvbjo6ZGV0ZWN0UmVjdXJzaW9uKToKKyAgICAgICAgKERldGVjdFJlY3Vyc2lvbjo6ZmluZEZ1
bmN0aW9uQnlOYW1lKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0
Q2FsbERlcHRoLmguCisgICAgICAgICogc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcDoKKyAg
ICAgICAgKFREaWFnbm9zdGljczo6d3JpdGVJbmZvKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
Rm9yTG9vcFVucm9sbC5jcHA6CisgICAgICAgIChGb3JMb29wVW5yb2xsOjpldmFsdWF0ZUludENv
bnN0YW50KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwOgorICAgICAgICAo
VEluZm9TaW5rQmFzZTo6cHJlZml4KToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9u
KToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9JbmZvU2luay5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcDoK
KyAgICAgICAgKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24pOgorICAgICAgICAoQnVpbHRJbkZ1bmN0
aW9uc1ZlcnRleCk6CisgICAgICAgIChUQnVpbHRJbnM6OmluaXRpYWxpemUpOgorICAgICAgICAo
SWRlbnRpZnlCdWlsdElucyk6CisgICAgICAgIChJbml0RXh0ZW5zaW9uQmVoYXZpb3IpOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwOgorICAgICAgICAoVEludGVybWVk
aWF0ZTo6YWRkU3ltYm9sKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgp
OgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKToKKyAgICAgICAgKFRJbnRlcm1l
ZGlhdGU6OmFkZEluZGV4KToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aCk6
CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcik6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6
Omdyb3dBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZSk6
CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoVEludGVy
bWVkaWF0ZTo6YWRkQ29tbWEpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRV
bmlvbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKToKKyAgICAgICAgKFRJ
bnRlcm1lZGlhdGU6OmFkZExvb3ApOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQnJhbmNo
KToKKyAgICAgICAgKFRJbnRlcm1VbmFyeTo6cHJvbW90ZSk6CisgICAgICAgIChUSW50ZXJtQmlu
YXJ5Ojpwcm9tb3RlKToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3QpOgorICAgICAgICAoQ29tcGFy
ZVN0cnVjdHVyZSk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAg
ICAgIChUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL091dHB1dEdMU0wuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OndyaXRlVmFy
aWFibGVQcmVjaXNpb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMLmg6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcDoKKyAgICAgICAgKFRPdXRw
dXRHTFNMQmFzZTo6d3JpdGVWYXJpYWJsZVR5cGUpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNl
Ojp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdEJp
bmFyeSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QWdncmVnYXRlKToKKyAgICAg
ICAgKFRPdXRwdXRHTFNMQmFzZTo6Z2V0VHlwZU5hbWUpOgorICAgICAgICAoVE91dHB1dEdMU0xC
YXNlOjpoYXNoRnVuY3Rpb25OYW1lKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xT
TEJhc2UuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHA6CisgICAgICAg
IChzaDo6T3V0cHV0SExTTDo6T3V0cHV0SExTTCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
aGVhZGVyKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFN5bWJvbCk6CisgICAgICAg
IChzaDo6T3V0cHV0SExTTDo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6
OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlv
bik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRMb29wKToKKyAgICAgICAgKHNoOjpP
dXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
Ojp0eXBlU3RyaW5nKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjppbml0aWFsaXplcik6Cisg
ICAgICAgIChzaDo6T3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoc2g6Ok91
dHB1dEhMU0w6OndyaXRlQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
ZGVjb3JhdGVGaWVsZCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaDoKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwOgorICAgICAgICAoVFBhcnNlQ29u
dGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cGFyc2VN
YXRyaXhGaWVsZHMpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXJyb3IpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6d2FybmluZyk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojphc3NpZ25F
cnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpw
cmVjaXNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9y
Q2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayk6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OnZvaWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAg
KFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2spOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6Y29udGFpbnNTYW1wbGVyKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5
U2l6ZUVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2sp
OgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6OmFycmF5U2V0TWF4U2l6ZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpu
b25Jbml0Q29uc3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRF
cnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6OmhhbmRsZUV4dGVuc2lvbkRpcmVjdGl2ZSk6CisgICAgICAgIChUUGFyc2VD
b250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdmUpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
ZmluZEZ1bmN0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXpl
cik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChU
UGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RCdWlsdEluKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OmNvbnN0cnVjdFN0cnVjdCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rv
ck5vZGUpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RNYXRyaXhOb2RlKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyYXlOb2RlKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmVudGVy
U3RydWN0RGVjbGFyYXRpb24pOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGlu
Z0Vycm9yQ2hlY2spOgorICAgICAgICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5oOgorICAg
ICAgICAoVFBhcnNlQ29udGV4dDo6VFBhcnNlQ29udGV4dCk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpwcmFnbWEpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwOgorICAg
ICAgICAoVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
U2hIYW5kbGUuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHA6CisgICAg
ICAgIChTaEluaXRCdWlsdEluUmVzb3VyY2VzKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3lt
Ym9sVGFibGUuY3BwOgorICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAgKFRUeXBlOjpi
dWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAgKFRUeXBlOjpnZXRTdHJ1Y3RTaXplKToKKyAgICAg
ICAgKFRUeXBlOjpjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcpOgorICAgICAgICAoVFR5cGU6
OmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cyk6CisgICAgICAgIChUU3ltYm9sVGFibGVMZXZl
bDo6cmVsYXRlVG9FeHRlbnNpb24pOgorICAgICAgICAoVFN5bWJvbDo6VFN5bWJvbCk6CisgICAg
ICAgIChUVmFyaWFibGU6OlRWYXJpYWJsZSk6CisgICAgICAgIChUVmFyaWFibGU6OmNsb25lKToK
KyAgICAgICAgKFRGdW5jdGlvbjo6VEZ1bmN0aW9uKToKKyAgICAgICAgKFRGdW5jdGlvbjo6Y2xv
bmUpOgorICAgICAgICAoVFN5bWJvbFRhYmxlTGV2ZWw6OmNsb25lKToKKyAgICAgICAgKFRTeW1i
b2xUYWJsZTo6Y29weVRhYmxlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUu
aDoKKyAgICAgICAgKFRWYXJpYWJsZTo6VFZhcmlhYmxlKToKKyAgICAgICAgKFRWYXJpYWJsZTo6
dXBkYXRlQXJyYXlJbmZvcm1hdGlvblR5cGUpOgorICAgICAgICAoVFZhcmlhYmxlOjpnZXRBcnJh
eUluZm9ybWF0aW9uVHlwZSk6CisgICAgICAgIChUUGFyYW1ldGVyOjpjb3B5UGFyYW0pOgorICAg
ICAgICAoVEZ1bmN0aW9uOjpyZWxhdGVUb0V4dGVuc2lvbik6CisgICAgICAgIChURnVuY3Rpb246
OmdldEV4dGVuc2lvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1R5cGVzLmg6CisgICAgICAg
IChOZXdQb29sVFR5cGVMaXN0KToKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChU
VHlwZTo6Y29weVR5cGUpOgorICAgICAgICAoVFR5cGU6OmNsb25lKToKKyAgICAgICAgKFRUeXBl
OjpnZXRPYmplY3RTaXplKToKKyAgICAgICAgKFRUeXBlOjpnZXRNYXhBcnJheVNpemUpOgorICAg
ICAgICAoVFR5cGU6OnNldE1heEFycmF5U2l6ZSk6CisgICAgICAgIChUVHlwZTo6Y2xlYXJBcnJh
eW5lc3MpOgorICAgICAgICAoVFR5cGU6OnNldEFycmF5SW5mb3JtYXRpb25UeXBlKToKKyAgICAg
ICAgKFRUeXBlOjpnZXRBcnJheUluZm9ybWF0aW9uVHlwZSk6CisgICAgICAgIChUVHlwZTo6Z2V0
U3RydWN0KToKKyAgICAgICAgKFRUeXBlOjpzZXRTdHJ1Y3QpOgorICAgICAgICAoVFR5cGU6Omdl
dFR5cGVOYW1lKToKKyAgICAgICAgKFRUeXBlOjpzZXRUeXBlTmFtZSk6CisgICAgICAgIChUVHlw
ZTo6aXNGaWVsZCk6CisgICAgICAgIChUVHlwZTo6Z2V0RmllbGROYW1lKToKKyAgICAgICAgKFRU
eXBlOjpzZXRGaWVsZE5hbWUpOgorICAgICAgICAoVFR5cGU6OmdldE1hbmdsZWROYW1lKToKKyAg
ICAgICAgKFRUeXBlOjpnZXREZWVwZXN0U3RydWN0TmVzdGluZyk6CisgICAgICAgIChUUHVibGlj
VHlwZTo6c2V0QmFzaWMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3Bw
OgorICAgICAgICAoZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8pOgorICAgICAgICAqIHNyYy9j
b21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9scy5qc29uOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9j
b21waWxlci9nZW5lcmF0ZV9idWlsdGluX3N5bWJvbF90YWJsZS5weTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy5sOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNs
YW5nLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcDoKKyAgICAgICAg
KHl5X2dldF9wcmV2aW91c19zdGF0ZSk6CisgICAgICAgICh5eV90cnlfTlVMX3RyYW5zKToKKyAg
ICAgICAgKHl5X3B1c2hfc3RhdGUpOgorICAgICAgICAoeXlfcG9wX3N0YXRlKToKKyAgICAgICAg
KHl5X3RvcF9zdGF0ZSk6CisgICAgICAgIChzdHJpbmdfaW5wdXQpOgorICAgICAgICAoY2hlY2tf
dHlwZSk6CisgICAgICAgIChyZXNlcnZlZF93b3JkKToKKyAgICAgICAgKHl5ZXJyb3IpOgorICAg
ICAgICAoZ2xzbGFuZ19zY2FuKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIu
Y3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9pbnRlcm1PdXQuY3BwOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlz
aXRVbmFyeSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAq
IHNyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpUSW50
ZXJtTm9kZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6Z2V0TGluZSk6CisgICAgICAgIChUSW50
ZXJtTm9kZTo6c2V0TGluZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6flRJbnRlcm1Ob2RlKToK
KyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpzZXRVbmlvbkFycmF5UG9pbnRlcik6Cisg
ICAgICAgIChUSW50ZXJtQWdncmVnYXRlOjpUSW50ZXJtQWdncmVnYXRlKToKKyAgICAgICAgKFRJ
bnRlcm1BZ2dyZWdhdGU6OnNldEVuZExpbmUpOgorICAgICAgICAoVEludGVybUFnZ3JlZ2F0ZTo6
Z2V0RW5kTGluZSk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpUSW50ZXJtVHJhdmVyc2Vy
KToKKyAgICAgICAgKFRJbnRlcm1UcmF2ZXJzZXI6OmluY3JlbWVudERlcHRoKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvcGFyc2VDb25zdC5jcHA6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U3ltYm9s
KToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoVENv
bnN0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlz
aXRBZ2dyZWdhdGUpOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFNlbGVjdGlvbik6
CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbik6CisgICAgICAg
IChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0TG9vcCk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6
OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OnBhcnNlQ29uc3RUcmVlKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5n
LmNwcDoKKyAgICAgICAgKFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJvbCk6
CisgICAgICAgICogc3JjL2xpYkVHTC9Db25maWcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNy
Yy9saWJFR0wvQ29uZmlnLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkVHTC9EaXNwbGF5
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML0Rpc3BsYXkuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBzcmMvbGliRUdML1JFQURNRTogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkVH
TC9TaGFkZXJDYWNoZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJFR0wvU3VyZmFjZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkVHTC9TdXJmYWNlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogc3JjL2xpYkVHTC9saWJFR0wuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9s
aWJFR0wvbGliRUdMLmRlZjogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC5y
YzogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qOiBSZW1vdmVk
LgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLnZjeHByb2ouZmlsdGVyczogUmVtb3ZlZC4K
KyAgICAgICAgKiBzcmMvbGliRUdML21haW4uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9s
aWJFR0wvbWFpbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJFR0wvcmVzb3VyY2UuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0JpbmFyeVN0cmVhbS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQmxpdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9CbGl0Lmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9C
dWZmZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQnVmZmVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL0NvbnRleHQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL0QzRENvbnN0YW50VGFibGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvRDNEQ29uc3RhbnRUYWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvRmVuY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvRmVuY2Uu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvRmxvYXQxNlRvRmxvYXQzMi5weTog
UmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9JbmRleERhdGFNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL1Byb2dyYW0uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
UHJvZ3JhbS5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFy
eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5Lmg6
IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9RdWVyeS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9RdWVyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvUkVBRE1FOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1JlbmRlcmJ1
ZmZlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1NoYWRlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9TaGFkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL1RleHR1cmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvVGV4
dHVyZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvVGV4dHVyZVNTRTIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvVmVydGV4RGF0YU1hbmFnZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvVmVydGV4RGF0YU1hbmFnZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmOiBSZW1vdmVkLgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLnJjOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvbGliR0xFU3YyLnZjeHByb2o6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9saWJHTEVTdjIudmN4cHJvai5maWx0ZXJzOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvbWFpbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9tYWlu
Lmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9tYXRodXRpbC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVzb3VyY2UuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL3NoYWRlcnMvQmxpdC5wczogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3NoYWRlcnMvQmxpdC52czogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3NoYWRlcnMvY29tcG9uZW50bWFza3BzLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9zaGFkZXJzL2ZsaXB5dnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQ6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9zaGFkZXJzL2x1bWluYW5jZXBzLmg6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9zaGFkZXJzL3Bhc3N0aHJvdWdocHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL3NoYWRlcnMvc3RhbmRhcmR2cy5oOiBSZW1vdmVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvdXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3V0aWxpdGllcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvdmVydGV4
Y29udmVyc2lvbi5oOiBSZW1vdmVkLgorCiAyMDEzLTA3LTE5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBkZXJpdmVkIGZpbGVz
IGluIEFOR0xFIGF0IGJ1aWxkIHRpbWUgcmF0aGVyIHRoYW4gd2hlbiB1cGRhdGluZyBmcm9tIHVw
c3RyZWFtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0Rlcml2ZWRTb3VyY2VzLm1ha2UKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZDZlNWIuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgL2Rldi9udWxsCkBAIC0x
LDQ0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMgCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCi0jIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0jIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1T
RUFSQ0hfUEFUSCA9ICQoQU5HTEUpL3NyYy9jb21waWxlciAkKEFOR0xFKS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yCi0KLXZwYXRoICUubCAkKFNFQVJDSF9QQVRIKQotdnBhdGggJS55ICQoU0VB
UkNIX1BBVEgpCi0KLUZMRVggPSBmbGV4IC0tbm9saW5lIC0tbm91bmlzdGQKLUJJU09OID0gYmlz
b24gLS1uby1saW5lcyAtLXNrZWxldG9uPXlhY2MuYwotCi1hbGwgOiBnbHNsYW5nX2xleC5jcHAg
Z2xzbGFuZ190YWIuaCBnbHNsYW5nX3RhYi5jcHAgRXhwcmVzc2lvblBhcnNlci5jcHAgVG9rZW5p
emVyLmNwcAotCi1nbHNsYW5nX3RhYiVoIGdsc2xhbmdfdGFiJWNwcCA6IGdsc2xhbmcueQotCSQo
ZXZhbCBPVVRQVVQgPSAkKGJhc2VuYW1lICRAKSkKLQkkKEJJU09OKSAtLWRlZmluZXM9JChPVVRQ
VVQpLmggLS1vdXRwdXQ9JChPVVRQVVQpLmNwcCAkPAotCi1FeHByZXNzaW9uUGFyc2VyLmNwcCA6
IEV4cHJlc3Npb25QYXJzZXIueQotCSQoQklTT04pIC0tb3V0cHV0PSRAICQ8Ci0KLWdsc2xhbmdf
bGV4LmNwcCA6IGdsc2xhbmcubAotCSQoRkxFWCkgLS1vdXRmaWxlPSRAICQ8Ci0KLVRva2VuaXpl
ci5jcHAgOiBUb2tlbml6ZXIubAotCSQoRkxFWCkgLS1vdXRmaWxlPSRAICQ8CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU4YmVmYjcuLjk3OGYzMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCkBAIC0yNCw4ICsyNCw2IEBAIGxpYkFOR0xF
X2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9LSFIva2hy
cGxhdGZvcm0uaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0
aWxzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlwZXMu
aCBcCi0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9s
X3RhYmxlLmNwcCBcCi0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0
aW5fc3ltYm9sX3RhYmxlLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIFwKIAlTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwIFwKQEAgLTQxLDEwICszOSwx
MCBAQCBsaWJBTkdMRV9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCBcCiAJU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1
dC5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9E
ZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKLQlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCBcCiAJU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuaCBcCisJU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAgXAorCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaCBcCiAJ
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcCBcCiAJ
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmggXAogCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQucHJpIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQppbmRleCBiODc4YWY2Li4wMDU3MDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkKQEAgLTE4LDcgKzE4LDYgQEAgSU5DTFVERVBBVEgg
Kz0gXAogCiBIRUFERVJTICs9IFwKICAgICBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmggXAotICAg
IHNyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5oIFwKICAgICBzcmMvY29tcGlsZXIv
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvbW1vbi5oIFwK
ICAgICBzcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oIFwKQEAgLTI2LDggKzI1LDggQEAgSEVB
REVSUyArPSBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIFwK
ICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIFwKICAg
ICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAotICAgIHNy
Yy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RldGVjdERp
c2NvbnRpbnVpdHkuaCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIFwKICAg
ICBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpcmVjdGl2
ZUhhbmRsZXIuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmggXApAQCAt
ODUsNyArODQsNiBAQCBIRUFERVJTICs9IFwKICAgICBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIv
QXJyYXlCb3VuZHNDbGFtcGVyLmgKIAogU09VUkNFUyArPSBcCi0gICAgc3JjL2NvbXBpbGVyL2J1
aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcCBcCiAgICAg
c3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcCBcCkBAIC05NCw4ICs5Miw4IEBAIFNPVVJDRVMgKz0g
XAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBc
CiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAog
ICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAot
ICAgIHNyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKICAgICBzcmMvY29tcGlsZXIv
RGV0ZWN0RGlzY29udGludWl0eS5jcHAgXAorICAgIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNp
b24uY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwIFwKICAgICBzcmMvY29t
cGlsZXIvRGlyZWN0aXZlSGFuZGxlci5jcHAgXAogICAgIHNyYy9jb21waWxlci9Gb3JMb29wVW5y
b2xsLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dM
U0xBTkcvU2hhZGVyTGFuZy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNM
QU5HL1NoYWRlckxhbmcuaAppbmRleCAzMjEyOTU5Li4xMDNkYjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKQEAgLTE1
OSwxMyArMTU5LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgLy8gdmVjMjM0LCBvciBtYXQyMzQgdHlw
ZS4gVGhlIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgZW51bSwKICAgLy8gc3BlY2lmaWVk
IGluIHRoZSBTaEJ1aWx0SW5SZXNvdXJjZXMgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlCiAgIC8vIGNv
bXBpbGVyLCBzZWxlY3RzIHRoZSBzdHJhdGVneSBmb3IgdGhlIGNsYW1waW5nIGltcGxlbWVudGF0
aW9uLgotICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSAweDEwMDAsCi0KLSAgLy8g
VGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBhbiBleHByZXNzaW9uLgotICBTSF9M
SU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSAweDIwMDAsCi0KLSAgLy8gVGhpcyBmbGFnIGxp
bWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3RhY2suCi0gIFNIX0xJTUlUX0NBTExfU1RBQ0tf
REVQVEggPSAweDQwMDAsCisgIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyA9IDB4MTAw
MAogfSBTaENvbXBpbGVPcHRpb25zOwogCiAvLyBEZWZpbmVzIGFsdGVybmF0ZSBzdHJhdGVnaWVz
IGZvciBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcuCkBAIC0yMTUsNyArMjA5LDYg
QEAgdHlwZWRlZiBzdHJ1Y3QKICAgICBpbnQgT0VTX0VHTF9pbWFnZV9leHRlcm5hbDsKICAgICBp
bnQgQVJCX3RleHR1cmVfcmVjdGFuZ2xlOwogICAgIGludCBFWFRfZHJhd19idWZmZXJzOwotICAg
IGludCBFWFRfZnJhZ19kZXB0aDsKIAogICAgIC8vIFNldCB0byAxIGlmIGhpZ2hwIHByZWNpc2lv
biBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1YWdlLgogICAgIC8vIERlZmF1bHQg
aXMgMC4KQEAgLTIyOSwxMiArMjIyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgICAvLyBTZWxlY3Rz
IGEgc3RyYXRlZ3kgdG8gdXNlIHdoZW4gaW1wbGVtZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5n
LgogICAgIC8vIERlZmF1bHQgaXMgU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMuCiAgICAg
U2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneTsK
LQotICAgIC8vIFRoZSBtYXhpbXVtIGNvbXBsZXhpdHkgYW4gZXhwcmVzc2lvbiBjYW4gYmUuCi0g
ICAgaW50IE1heEV4cHJlc3Npb25Db21wbGV4aXR5OwotCi0gICAgLy8gVGhlIG1heGltdW0gZGVw
dGggYSBjYWxsIHN0YWNrIGNhbiBiZS4KLSAgICBpbnQgTWF4Q2FsbFN0YWNrRGVwdGg7CiB9IFNo
QnVpbHRJblJlc291cmNlczsKIAogLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9CYXNlVHlwZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9CYXNlVHlwZXMuaAppbmRleCAxNjMxZjRmLi5hZjRjN2UzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCkBAIC05MCw2
ICs5MCwxMCBAQCBlbnVtIFRRdWFsaWZpZXIKICAgICBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAg
ICAvLyB2ZXJ0ZXggc2hhZGVycyBvbmx5ICByZWFkL3dyaXRlCiAgICAgRXZxVW5pZm9ybSwgICAg
ICAgLy8gUmVhZG9ubHksIHZlcnRleCBhbmQgZnJhZ21lbnQKIAorICAgIC8vIHBhY2svdW5wYWNr
IGlucHV0IGFuZCBvdXRwdXQKKyAgICBFdnFJbnB1dCwKKyAgICBFdnFPdXRwdXQsCisKICAgICAv
LyBwYXJhbWV0ZXJzCiAgICAgRXZxSW4sCiAgICAgRXZxT3V0LApAQCAtMTA4LDcgKzExMiw2IEBA
IGVudW0gVFF1YWxpZmllcgogICAgIC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNo
YWRlcgogICAgIEV2cUZyYWdDb2xvciwKICAgICBFdnFGcmFnRGF0YSwKLSAgICBFdnFGcmFnRGVw
dGgsCiAKICAgICAvLyBlbmQgb2YgbGlzdAogICAgIEV2cUxhc3QKQEAgLTEzNCwxMyArMTM3LDE0
IEBAIGlubGluZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFF1YWxpZmllciBxKQog
ICAgIGNhc2UgRXZxSW46ICAgICAgICAgICAgIHJldHVybiAiaW4iOyAgICAgICAgICAgICBicmVh
azsKICAgICBjYXNlIEV2cU91dDogICAgICAgICAgICByZXR1cm4gIm91dCI7ICAgICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBFdnFJbk91dDogICAgICAgICAgcmV0dXJuICJpbm91dCI7ICAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRXZxSW5wdXQ6ICAgICAgICAgIHJldHVybiAiaW5wdXQiOyAg
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2cU91dHB1dDogICAgICAgICByZXR1cm4gIm91dHB1
dCI7ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFQb3NpdGlvbjogICAgICAgcmV0dXJuICJQ
b3NpdGlvbiI7ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxUG9pbnRTaXplOiAgICAgIHJldHVy
biAiUG9pbnRTaXplIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBy
ZXR1cm4gIkZyYWdDb29yZCI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcm9udEZhY2luZzog
ICAgcmV0dXJuICJGcm9udEZhY2luZyI7ICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJhZ0NvbG9y
OiAgICAgIHJldHVybiAiRnJhZ0NvbG9yIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdE
YXRhOiAgICAgICByZXR1cm4gIkZyYWdEYXRhIjsgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUZy
YWdEZXB0aDogICAgICByZXR1cm4gIkZyYWdEZXB0aCI7ICAgICBicmVhazsKICAgICBkZWZhdWx0
OiAgICAgICAgICAgICAgICByZXR1cm4gInVua25vd24gcXVhbGlmaWVyIjsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgKaW5kZXggNTMy
NDg2YS4uMjdhNTU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Db21tb24uaApAQCAtMTQsMTIgKzE0LDI0IEBACiAKICNpbmNsdWRlICJjb21waWxlci9Qb29s
QWxsb2MuaCIKIAotc3RydWN0IFRTb3VyY2VMb2MgewotICAgIGludCBmaXJzdF9maWxlOwotICAg
IGludCBmaXJzdF9saW5lOwotICAgIGludCBsYXN0X2ZpbGU7Ci0gICAgaW50IGxhc3RfbGluZTsK
LX07CisvLyBXZSBuZWVkIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdG8gcmVwb3J0IGVycm9y
cy93YXJuaW5ncyAtIHN0cmluZyBhbmQKKy8vIGxpbmUgbnVtYmVyLiBXZSBlbmNvZGUgdGhlc2Ug
aW50byBhIHNpbmdsZSBpbnQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5CisvLyBpbmNyZW1lbnRl
ZC9kZWNyZW1lbnRlZCBieSBsZXhlci4gVGhlIHJpZ2h0IFNPVVJDRV9MT0NfTElORV9TSVpFIGJp
dHMgc3RvcmUKKy8vIGxpbmUgbnVtYmVyIHdoaWxlIHRoZSByZXN0IHN0b3JlIHRoZSBzdHJpbmcg
bnVtYmVyLiBTaW5jZSB0aGUgc2hhZGVycyBhcmUKKy8vIHVzdWFsbHkgc21hbGwsIHdlIHNob3Vs
ZCBub3QgcnVuIG91dCBvZiBtZW1vcnkuIFNPVVJDRV9MT0NfTElORV9TSVpFCisvLyBjYW4gYmUg
aW5jcmVhc2VkIHRvIGFsbGV2aWF0ZSB0aGlzIGlzc3VlLgordHlwZWRlZiBpbnQgVFNvdXJjZUxv
YzsKK2NvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfU0laRSA9IDE2OyAgLy8gaW4g
Yml0cy4KK2NvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfTUFTSyA9ICgxIDw8IFNP
VVJDRV9MT0NfTElORV9TSVpFKSAtIDE7CisKK2lubGluZSBUU291cmNlTG9jIEVuY29kZVNvdXJj
ZUxvYyhpbnQgc3RyaW5nLCBpbnQgbGluZSkgeworICAgIHJldHVybiAoc3RyaW5nIDw8IFNPVVJD
RV9MT0NfTElORV9TSVpFKSB8IChsaW5lICYgU09VUkNFX0xPQ19MSU5FX01BU0spOworfQorCitp
bmxpbmUgdm9pZCBEZWNvZGVTb3VyY2VMb2MoVFNvdXJjZUxvYyBsb2MsIGludCogc3RyaW5nLCBp
bnQqIGxpbmUpIHsKKyAgICBpZiAoc3RyaW5nKSAqc3RyaW5nID0gbG9jID4+IFNPVVJDRV9MT0Nf
TElORV9TSVpFOworICAgIGlmIChsaW5lKSAqbGluZSA9IGxvYyAmIFNPVVJDRV9MT0NfTElORV9N
QVNLOworfQogCiAvLwogLy8gUHV0IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUgaW4gYmFzZSBj
bGFzc2VzIHRvIG1ha2UgdGhlbSB1c2UgdGhpcyBzY2hlbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAppbmRleCAyYWMzNjdjLi45Yzlm
OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29t
cGlsZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21w
aWxlci5jcHAKQEAgLTQsOSArNCw4IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgog
Ly8KIAotI2luY2x1ZGUgImNvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgiCiAjaW5jbHVk
ZSAiY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCIKLSNpbmNsdWRlICJjb21waWxl
ci9EZXRlY3RDYWxsRGVwdGguaCIKKyNpbmNsdWRlICJjb21waWxlci9EZXRlY3RSZWN1cnNpb24u
aCIKICNpbmNsdWRlICJjb21waWxlci9Gb3JMb29wVW5yb2xsLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvSW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRl
eHQuaCIKQEAgLTYzLDI2ICs2MiwxMSBAQCBib29sIEluaXRpYWxpemVTeW1ib2xUYWJsZSgKIAog
ICAgICAgICBpZiAoUGFQYXJzZVN0cmluZ3MoMSwgJmJ1aWx0SW5TaGFkZXJzLCAmYnVpbHRJbkxl
bmd0aHMsICZwYXJzZUNvbnRleHQpICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ucHJlZml4KEVQcmVmaXhJbnRlcm5hbEVycm9yKTsKLSAgICAgICAgICAgIGluZm9T
aW5rLmluZm8gPDwgIlVuYWJsZSB0byBwYXJzZSBidWlsdC1pbnMiOworICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hYmxlIHRvIHBhcnNl
IGJ1aWx0LWlucyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQogCi0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoK
LSAgICAgICAgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihyZXNvdXJjZXMsICZzeW1ib2xU
YWJsZSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTSF9WRVJURVhfU0hBREVSOgotICAg
ICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcywgJnN5bWJvbFRhYmxl
KTsKLSAgICAgICAgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc1ZlcnRleChyZXNvdXJjZXMsICZzeW1i
b2xUYWJsZSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYm
ICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7Ci0gICAgfQotCiAgICAgSWRlbnRpZnlCdWlsdElu
cyh0eXBlLCBzcGVjLCByZXNvdXJjZXMsIHN5bWJvbFRhYmxlKTsKIAogICAgIHJldHVybiB0cnVl
OwpAQCAtMTE5LDkgKzEwMyw2IEBAIFRTaEhhbmRsZUJhc2U6On5UU2hIYW5kbGVCYXNlKCkgewog
VENvbXBpbGVyOjpUQ29tcGlsZXIoU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVj
KQogICAgIDogc2hhZGVyVHlwZSh0eXBlKSwKICAgICAgIHNoYWRlclNwZWMoc3BlYyksCi0gICAg
ICBtYXhVbmlmb3JtVmVjdG9ycygwKSwKLSAgICAgIG1heEV4cHJlc3Npb25Db21wbGV4aXR5KDAp
LAotICAgICAgbWF4Q2FsbFN0YWNrRGVwdGgoMCksCiAgICAgICBmcmFnbWVudFByZWNpc2lvbkhp
Z2goZmFsc2UpLAogICAgICAgY2xhbXBpbmdTdHJhdGVneShTSF9DTEFNUF9XSVRIX0NMQU1QX0lO
VFJJTlNJQyksCiAgICAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvcih0eXBlKQpAQCAtMTQwLDE0
ICsxMjEsMTEgQEAgYm9vbCBUQ29tcGlsZXI6OkluaXQoY29uc3QgU2hCdWlsdEluUmVzb3VyY2Vz
JiByZXNvdXJjZXMpCiAgICAgbWF4VW5pZm9ybVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9PSBTSF9W
RVJURVhfU0hBREVSKSA/CiAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9y
cyA6CiAgICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOwotICAgIG1h
eEV4cHJlc3Npb25Db21wbGV4aXR5ID0gcmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4aXR5
OwotICAgIG1heENhbGxTdGFja0RlcHRoID0gcmVzb3VyY2VzLk1heENhbGxTdGFja0RlcHRoOwog
ICAgIFRTY29wZWRQb29sQWxsb2NhdG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIGZhbHNlKTsK
IAogICAgIC8vIEdlbmVyYXRlIGJ1aWx0LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRC
dWlsdEluU3ltYm9sVGFibGUocmVzb3VyY2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKHJlc291cmNlcywgZXh0ZW5zaW9uQmVoYXZpb3IpOwog
ICAgIGZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhp
Z2ggPT0gMTsKIApAQCAtMTkyLDEwICsxNzAsOCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShj
b25zdCBjaGFyKiBjb25zdCBzaGFkZXJTdHJpbmdzW10sCiAgICAgLy8gV2UgcHJlc2VydmUgc3lt
Ym9scyBhdCB0aGUgYnVpbHQtaW4gbGV2ZWwgZnJvbSBjb21waWxlLXRvLWNvbXBpbGUuCiAgICAg
Ly8gU3RhcnQgcHVzaGluZyB0aGUgdXNlci1kZWZpbmVkIHN5bWJvbHMgYXQgZ2xvYmFsIGxldmVs
LgogICAgIHN5bWJvbFRhYmxlLnB1c2goKTsKLSAgICBpZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSkgewotICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4SW50ZXJuYWxF
cnJvcik7Ci0gICAgICAgIGluZm9TaW5rLmluZm8gPDwgIldyb25nIHN5bWJvbCB0YWJsZSBsZXZl
bCI7Ci0gICAgfQorICAgIGlmICghc3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpKQorICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJXcm9uZyBzeW1i
b2wgdGFibGUgbGV2ZWwiKTsKIAogICAgIC8vIFBhcnNlIHNoYWRlci4KICAgICBib29sIHN1Y2Nl
c3MgPQpAQCAtMjA2LDcgKzE4Miw3IEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNo
YXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKICAgICAgICAgc3VjY2VzcyA9IGludGVybWVkaWF0
ZS5wb3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAg
IHN1Y2Nlc3MgPSBkZXRlY3RDYWxsRGVwdGgocm9vdCwgaW5mb1NpbmssIChjb21waWxlT3B0aW9u
cyAmIFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEgpICE9IDApOworICAgICAgICAgICAgc3VjY2Vz
cyA9IGRldGVjdFJlY3Vyc2lvbihyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29t
cGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKSkKICAgICAgICAgICAgIHN1
Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QpOwpAQCAtMjI5LDEwICsyMDUsNiBAQCBi
b29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zdCBzaGFkZXJTdHJpbmdzW10s
CiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElS
RUNUX0FSUkFZX0JPVU5EUykpCiAgICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0lu
ZGlyZWN0QXJyYXlCb3VuZHNGb3JDbGFtcGluZyhyb290KTsKIAotICAgICAgICAvLyBEaXNhbGxv
dyBleHByZXNzaW9ucyBkZWVtZWQgdG9vIGNvbXBsZXguCi0gICAgICAgIGlmIChzdWNjZXNzICYm
IChjb21waWxlT3B0aW9ucyAmIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCi0gICAg
ICAgICAgICBzdWNjZXNzID0gbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKLQogICAg
ICAgICAvLyBDYWxsIG1hcExvbmdWYXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RBdHRyaWJz
VW5pZm9ybXMoKSBzbyBpbgogICAgICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgd2Ug
YWxyZWFkeSBoYXZlIHRoZSBtYXBwZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAvLyB3ZSBj
b3VsZCBjb21wb3NpdGUgbWFwcGVkIGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4KQEAgLTI0
NSw4ICsyMTcsNyBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zdCBz
aGFkZXJTdHJpbmdzW10sCiAgICAgICAgICAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTkZP
UkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TKSB7CiAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGVu
Zm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJv
cik7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgInRvbyBtYW55IHVuaWZv
cm1zIjsKKyAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhF
cnJvciwgInRvbyBtYW55IHVuaWZvcm1zIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0yOTIsMjQgKzI2MywxOCBAQCB2b2lkIFRDb21waWxlcjo6Y2xl
YXJSZXN1bHRzKCkKICAgICBuYW1lTWFwLmNsZWFyKCk7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpk
ZXRlY3RDYWxsRGVwdGgoVEludGVybU5vZGUqIHJvb3QsIFRJbmZvU2luayYgaW5mb1NpbmssIGJv
b2wgbGltaXRDYWxsU3RhY2tEZXB0aCkKK2Jvb2wgVENvbXBpbGVyOjpkZXRlY3RSZWN1cnNpb24o
VEludGVybU5vZGUqIHJvb3QpCiB7Ci0gICAgRGV0ZWN0Q2FsbERlcHRoIGRldGVjdChpbmZvU2lu
aywgbGltaXRDYWxsU3RhY2tEZXB0aCwgbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgIERldGVjdFJl
Y3Vyc2lvbiBkZXRlY3Q7CiAgICAgcm9vdC0+dHJhdmVyc2UoJmRldGVjdCk7Ci0gICAgc3dpdGNo
IChkZXRlY3QuZGV0ZWN0Q2FsbERlcHRoKCkpIHsKLSAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVw
dGg6OmtFcnJvck5vbmU6CisgICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0UmVjdXJzaW9uKCkpIHsK
KyAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck5vbmU6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1pc3NpbmdN
YWluOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIk1pc3NpbmcgbWFpbigpIjsKKyAgICAgICAgY2Fz
ZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck1pc3NpbmdNYWluOgorICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIk1pc3NpbmcgbWFpbigpIik7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JS
ZWN1cnNpb246Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3Ip
OwotICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVj
dGVkIjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBEZXRlY3RDYWxs
RGVwdGg6OmtFcnJvck1heERlcHRoRXhjZWVkZWQ6Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZv
LnByZWZpeChFUHJlZml4RXJyb3IpOwotICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVu
Y3Rpb24gY2FsbCBzdGFjayB0b28gZGVlcCI7CisgICAgICAgIGNhc2UgRGV0ZWN0UmVjdXJzaW9u
OjprRXJyb3JSZWN1cnNpb246CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIik7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwpAQCAtMzU1LDI4ICszMjAsNiBAQCBib29sIFRDb21waWxlcjo6ZW5mb3JjZVRpbWluZ1Jlc3Ry
aWN0aW9ucyhUSW50ZXJtTm9kZSogcm9vdCwgYm9vbCBvdXRwdXRHcmFwaCkKICAgICB9CiB9CiAK
LWJvb2wgVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KFRJbnRlcm1Ob2RlKiBy
b290KQotewotICAgIFRJbnRlcm1UcmF2ZXJzZXIgdHJhdmVyc2VyOwotICAgIHJvb3QtPnRyYXZl
cnNlKCZ0cmF2ZXJzZXIpOwotICAgIFREZXBlbmRlbmN5R3JhcGggZ3JhcGgocm9vdCk7Ci0KLSAg
ICBmb3IgKFRGdW5jdGlvbkNhbGxWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBncmFwaC5i
ZWdpblVzZXJEZWZpbmVkRnVuY3Rpb25DYWxscygpOwotICAgICAgICAgaXRlciAhPSBncmFwaC5l
bmRVc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKTsKLSAgICAgICAgICsraXRlcikKLSAgICB7Ci0g
ICAgICAgIFRHcmFwaEZ1bmN0aW9uQ2FsbCogc2FtcGxlclN5bWJvbCA9ICppdGVyOwotICAgICAg
ICBURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyIGdyYXBoVHJhdmVyc2VyOwotICAgICAgICBzYW1w
bGVyU3ltYm9sLT50cmF2ZXJzZSgmZ3JhcGhUcmF2ZXJzZXIpOwotICAgIH0KLQotICAgIGlmICh0
cmF2ZXJzZXIuZ2V0TWF4RGVwdGgoKSA+IG1heEV4cHJlc3Npb25Db21wbGV4aXR5KSB7Ci0gICAg
ICAgIGluZm9TaW5rLmluZm8gPDwgIkV4cHJlc3Npb24gdG9vIGNvbXBsZXguIjsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBUQ29tcGls
ZXI6OmVuZm9yY2VGcmFnbWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9ucyhjb25zdCBURGVwZW5k
ZW5jeUdyYXBoJiBncmFwaCkKIHsKICAgICBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nIHJl
c3RyaWN0b3IoaW5mb1NpbmsuaW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaAppbmRleCAzMmFmNGQzLi5mZDlkOTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRV
bmlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFu
dFVuaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgogLy8KQEAgLTE0LDcgKzE0LDYgQEAgcHVibGljOgogICAgIENvbnN0YW50VW5pb24oKQogICAg
IHsKICAgICAgICAgaUNvbnN0ID0gMDsKLSAgICAgICAgdHlwZSA9IEVidFZvaWQ7CiAgICAgfQog
CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKSAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0
ZWN0Q2FsbERlcHRoLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9E
ZXRlY3RDYWxsRGVwdGguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGRmNTJj
Ny4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0
ZWN0Q2FsbERlcHRoLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgiCi0jaW5j
bHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKLQotRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5v
ZGU6OkZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSkKLSAgICA6IG5hbWUoZm5hbWUp
LAotICAgICAgdmlzaXQoUHJlVmlzaXQpCi17Ci19Ci0KLWNvbnN0IFRTdHJpbmcmIERldGVjdENh
bGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpnZXROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbmFt
ZTsKLX0KLQotdm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6YWRkQ2FsbGVlKAot
ICAgIERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlKiBjYWxsZWUpCi17Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChjYWxs
ZWVzW2ldID09IGNhbGxlZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FsbGVl
cy5wdXNoX2JhY2soY2FsbGVlKTsKLX0KLQotaW50IERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25O
b2RlOjpkZXRlY3RDYWxsRGVwdGgoRGV0ZWN0Q2FsbERlcHRoKiBkZXRlY3RDYWxsRGVwdGgsIGlu
dCBkZXB0aCkKLXsKLSAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwotICAgIEFTU0VSVChk
ZXRlY3RDYWxsRGVwdGgpOwotCi0gICAgaW50IG1heERlcHRoID0gZGVwdGg7Ci0gICAgdmlzaXQg
PSBJblZpc2l0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsr
aSkgewotICAgICAgICBzd2l0Y2ggKGNhbGxlZXNbaV0tPnZpc2l0KSB7Ci0gICAgICAgICAgICBj
YXNlIEluVmlzaXQ6Ci0gICAgICAgICAgICAgICAgLy8gY3ljbGUgZGV0ZWN0ZWQsIGkuZS4sIHJl
Y3Vyc2lvbiBkZXRlY3RlZC4KLSAgICAgICAgICAgICAgICByZXR1cm4ga0luZmluaXRlQ2FsbERl
cHRoOwotICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7Ci0gICAgICAgICAgICAgICAgLy8gQ2hlY2sg
YmVmb3JlIHdlIHJlY3Vyc2Ugc28gd2UgZG9uJ3QgZ28gdG9vIGRlcHRoCi0gICAgICAgICAgICAg
ICAgaWYgKGRldGVjdENhbGxEZXB0aC0+Y2hlY2tFeGNlZWRzTWF4RGVwdGgoZGVwdGgpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZGVwdGg7Ci0gICAgICAgICAgICAgICAgaW50IGNhbGxE
ZXB0aCA9IGNhbGxlZXNbaV0tPmRldGVjdENhbGxEZXB0aChkZXRlY3RDYWxsRGVwdGgsIGRlcHRo
ICsgMSk7Ci0gICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWZ0ZXIgd2UgcmVjdXJzZSBzbyB3ZSBj
YW4gZXhpdCBpbW1lZGlhdGVseSBhbmQgcHJvdmlkZSBpbmZvLgotICAgICAgICAgICAgICAgIGlm
IChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERlcHRoKGNhbGxEZXB0aCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZGV0ZWN0Q2FsbERlcHRoLT5nZXRJbmZvU2luaygpLmluZm8gPDwg
IjwtIiA8PCBjYWxsZWVzW2ldLT5nZXROYW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBjYWxsRGVwdGg7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1heERlcHRo
ID0gc3RkOjptYXgoY2FsbERlcHRoLCBtYXhEZXB0aCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgdmlzaXQgPSBQb3N0VmlzaXQ7Ci0gICAgcmV0dXJuIG1heERlcHRoOwotfQotCi12b2lkIERl
dGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpyZXNldCgpCi17Ci0gICAgdmlzaXQgPSBQcmVW
aXNpdDsKLX0KLQotRGV0ZWN0Q2FsbERlcHRoOjpEZXRlY3RDYWxsRGVwdGgoVEluZm9TaW5rJiBp
bmZvU2luaywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgp
Ci0gICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSksCi0gICAg
ICBjdXJyZW50RnVuY3Rpb24oTlVMTCksCi0gICAgICBpbmZvU2luayhpbmZvU2luayksCi0gICAg
ICBtYXhEZXB0aChsaW1pdENhbGxTdGFja0RlcHRoID8gbWF4Q2FsbFN0YWNrRGVwdGggOiBGdW5j
dGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkKLXsKLX0KLQotRGV0ZWN0Q2FsbERlcHRoOjp+
RGV0ZWN0Q2FsbERlcHRoKCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9u
cy5zaXplKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tpXTsKLX0KLQotYm9vbCBE
ZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVn
YXRlKiBub2RlKQotewotICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKLSAgICB7Ci0gICAgICAg
IGNhc2UgRU9wUHJvdG90eXBlOgotICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24u
Ci0gICAgICAgICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhlcmUgYmVjYXVzZSBub2Rl
LT5nZXROYW1lKCkgaXMgdGhlCi0gICAgICAgICAgICAvLyB1bm1hbmdsZWQgZnVuY3Rpb24gbmFt
ZS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcEZ1bmN0aW9uOiB7Ci0gICAg
ICAgICAgICAvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgotICAgICAgICAgICAgaWYgKHZpc2l0ID09
IFByZVZpc2l0KSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gZmluZEZ1bmN0
aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRG
dW5jdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9
IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb25zLnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0gZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KSB7Ci0gICAgICAgICAg
ICAgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOiB7Ci0gICAg
ICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLgotICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZp
c2l0KSB7Ci0gICAgICAgICAgICAgICAgRnVuY3Rpb25Ob2RlKiBmdW5jID0gZmluZEZ1bmN0aW9u
QnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVM
TCkgewotICAgICAgICAgICAgICAgICAgICBmdW5jID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5n
ZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMucHVzaF9iYWNrKGZ1bmMp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZ1bmN0aW9u
KQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24tPmFkZENhbGxlZShmdW5jKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgRGV0ZWN0Q2FsbERlcHRoOjpjaGVja0V4Y2VlZHNNYXhEZXB0aChpbnQgZGVwdGgpCi17
Ci0gICAgcmV0dXJuIGRlcHRoID49IG1heERlcHRoOwotfQotCi12b2lkIERldGVjdENhbGxEZXB0
aDo6cmVzZXRGdW5jdGlvbk5vZGVzKCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1
bmN0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBmdW5jdGlvbnNbaV0tPnJlc2V0KCk7Ci0g
ICAgfQotfQotCi1EZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBEZXRlY3RDYWxsRGVwdGg6OmRl
dGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKEZ1bmN0aW9uTm9kZSogZnVuYykKLXsKLSAgICBjdXJy
ZW50RnVuY3Rpb24gPSBOVUxMOwotICAgIHJlc2V0RnVuY3Rpb25Ob2RlcygpOwotCi0gICAgaW50
IG1heENhbGxEZXB0aCA9IGZ1bmMtPmRldGVjdENhbGxEZXB0aCh0aGlzLCAxKTsKLQotICAgIGlm
IChtYXhDYWxsRGVwdGggPT0gRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCi0gICAg
ICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247Ci0KLSAgICBpZiAobWF4Q2FsbERlcHRoID49IG1h
eERlcHRoKQotICAgICAgICByZXR1cm4ga0Vycm9yTWF4RGVwdGhFeGNlZWRlZDsKLQotICAgIHJl
dHVybiBrRXJyb3JOb25lOwotfQotCi1EZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBEZXRlY3RD
YWxsRGVwdGg6OmRldGVjdENhbGxEZXB0aCgpCi17Ci0gICAgaWYgKG1heERlcHRoICE9IEZ1bmN0
aW9uTm9kZTo6a0luZmluaXRlQ2FsbERlcHRoKSB7Ci0gICAgICAgIC8vIENoZWNrIGFsbCBmdW5j
dGlvbnMgYmVjYXVzZSB0aGUgZHJpdmVyIG1heSBmYWlsIG9uIHRoZW0KLSAgICAgICAgLy8gVE9E
TzogQmVmb3JlIGRldGVjdGluZ1JlY3Vyc2lvbiwgc3RyaXAgdW51c2VkIGZ1bmN0aW9ucy4KLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIEVycm9yQ29kZSBlcnJvciA9IGRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKGZ1
bmN0aW9uc1tpXSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgIT0ga0Vycm9yTm9uZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBGdW5jdGlvbk5vZGUqIG1haW4gPSBmaW5kRnVuY3Rpb25CeU5hbWUoIm1haW4oIik7Ci0gICAg
ICAgIGlmIChtYWluID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4ga0Vycm9yTWlzc2luZ01h
aW47Ci0KLSAgICAgICAgcmV0dXJuIGRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKG1haW4pOwot
ICAgIH0KLQotICAgIHJldHVybiBrRXJyb3JOb25lOwotfQotCi1EZXRlY3RDYWxsRGVwdGg6OkZ1
bmN0aW9uTm9kZSogRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25CeU5hbWUoCi0gICAgY29u
c3QgVFN0cmluZyYgbmFtZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9u
cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5nZXROYW1lKCkgPT0g
bmFtZSkKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbnNbaV07Ci0gICAgfQotICAgIHJldHVy
biBOVUxMOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5
ZTg1ZjguLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0RldGVjdENhbGxEZXB0aC5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotI2lmbmRlZiBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCi0jZGVm
aW5lIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KLQotI2luY2x1ZGUgIkdMU0xBTkcvU2hh
ZGVyTGFuZy5oIgotCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSAiY29tcGlsZXIvaW50
ZXJtZWRpYXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFibGVJbmZvLmgiCi0KLWNsYXNz
IFRJbmZvU2luazsKLQotLy8gVHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBm
dW5jdGlvbiByZWN1cnNpb24uCi1jbGFzcyBEZXRlY3RDYWxsRGVwdGggOiBwdWJsaWMgVEludGVy
bVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJy
b3JNaXNzaW5nTWFpbiwKLSAgICAgICAga0Vycm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JN
YXhEZXB0aEV4Y2VlZGVkLAotICAgICAgICBrRXJyb3JOb25lCi0gICAgfTsKLQotICAgIERldGVj
dENhbGxEZXB0aChUSW5mb1NpbmsmIGluZm9TeW5jLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgs
IGludCBtYXhDYWxsU3RhY2tEZXB0aCk7Ci0gICAgfkRldGVjdENhbGxEZXB0aCgpOwotCi0gICAg
dmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKik7Ci0K
LSAgICBib29sIGNoZWNrRXhjZWVkc01heERlcHRoKGludCBkZXB0aCk7Ci0KLSAgICBFcnJvckNv
ZGUgZGV0ZWN0Q2FsbERlcHRoKCk7Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgRnVuY3Rpb25Ob2Rl
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0luZmluaXRlQ2FsbERl
cHRoID0gSU5UX01BWDsKLQotICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5h
bWUpOwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKLQotICAgICAg
ICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0aGlzIGJl
Y29tZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2RlKiBjYWxs
ZWUpOwotCi0gICAgICAgIC8vIFJldHVybnMga0luaWZpbml0eUNhbGxEZXB0aCBpZiByZWN1cnNp
dmUgZnVuY3Rpb24gY2FsbHMgYXJlIGRldGVjdGVkLgotICAgICAgICBpbnQgZGV0ZWN0Q2FsbERl
cHRoKERldGVjdENhbGxEZXB0aCogZGV0ZWN0Q2FsbERlcHRoLCBpbnQgZGVwdGgpOwotCi0gICAg
ICAgIC8vIFJlc2V0IHN0YXRlLgotICAgICAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICBwcml2YXRl
OgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVlLgotICAgICAgICBU
U3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJlIGRpcmVjdGx5IGNh
bGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGNh
bGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAgfTsKLQotICAgIEVycm9yQ29kZSBk
ZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlvbk5vZGUqIGZ1bmMpOwotICAgIEZ1bmN0
aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwotICAgIHZv
aWQgcmVzZXRGdW5jdGlvbk5vZGVzKCk7Ci0KLSAgICBUSW5mb1NpbmsmIGdldEluZm9TaW5rKCkg
eyByZXR1cm4gaW5mb1Npbms7IH0KLQotICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gZnVuY3Rp
b25zOwotICAgIEZ1bmN0aW9uTm9kZSogY3VycmVudEZ1bmN0aW9uOwotICAgIFRJbmZvU2luayYg
aW5mb1Npbms7Ci0gICAgaW50IG1heERlcHRoOwotCi0gICAgRGV0ZWN0Q2FsbERlcHRoKGNvbnN0
IERldGVjdENhbGxEZXB0aCYpOwotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IERldGVjdENhbGxE
ZXB0aCYpOwotfTsKLQotI2VuZGlmICAvLyBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVj
dXJzaW9uLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwOTc4MGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
RGV0ZWN0UmVjdXJzaW9uLmNwcApAQCAtMCwwICsxLDEyNSBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIgorCitEZXRlY3RSZWN1cnNp
b246OkZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKQorICAg
IDogbmFtZShmbmFtZSksCisgICAgICB2aXNpdChQcmVWaXNpdCkKK3sKK30KKworY29uc3QgVFN0
cmluZyYgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OmdldE5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBuYW1lOworfQorCit2b2lkIERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2Rl
OjphZGRDYWxsZWUoCisgICAgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGUqIGNhbGxlZSkK
K3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKGNhbGxlZXNbaV0gPT0gY2FsbGVlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBjYWxsZWVzLnB1c2hfYmFjayhjYWxsZWUpOworfQorCitib29sIERldGVjdFJlY3Vy
c2lvbjo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RSZWN1cnNpb24oKQoreworICAgIEFTU0VSVCh2aXNp
dCA9PSBQcmVWaXNpdCk7CisgICAgdmlzaXQgPSBJblZpc2l0OworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgeworICAgICAgICBzd2l0Y2ggKGNhbGxlZXNb
aV0tPnZpc2l0KSB7CisgICAgICAgICAgICBjYXNlIEluVmlzaXQ6CisgICAgICAgICAgICAgICAg
Ly8gY3ljbGUgZGV0ZWN0ZWQsIGkuZS4sIHJlY3Vyc2lvbiBkZXRlY3RlZC4KKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0OgorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogeworICAgICAgICAgICAg
ICAgIGJvb2wgcmVjdXJzaW9uID0gY2FsbGVlc1tpXS0+ZGV0ZWN0UmVjdXJzaW9uKCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgdmlzaXQgPSBQb3N0VmlzaXQ7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitEZXRlY3RSZWN1cnNpb246OkRldGVjdFJlY3Vyc2lvbigpCisgICAg
OiBjdXJyZW50RnVuY3Rpb24oTlVMTCkKK3sKK30KKworRGV0ZWN0UmVjdXJzaW9uOjp+RGV0ZWN0
UmVjdXJzaW9uKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXpl
KCk7ICsraSkKKyAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tpXTsKK30KKworYm9vbCBEZXRlY3RS
ZWN1cnNpb246OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKiBu
b2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICAgIGNhc2Ug
RU9wUHJvdG90eXBlOgorICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCisgICAg
ICAgICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhlcmUgYmVjYXVzZSBub2RlLT5nZXRO
YW1lKCkgaXMgdGhlCisgICAgICAgICAgICAvLyB1bm1hbmdsZWQgZnVuY3Rpb24gbmFtZS4KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZ1bmN0aW9uOiB7CisgICAgICAgICAg
ICAvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZp
c2l0KSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gZmluZEZ1bmN0aW9uQnlO
YW1lKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGdW5jdGlv
biA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IG5ldyBG
dW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b25zLnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRU9w
RnVuY3Rpb25DYWxsOiB7CisgICAgICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLgorICAgICAgICAg
ICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGN1cnJl
bnRGdW5jdGlvbiAhPSBOVUxMKTsKKyAgICAgICAgICAgICAgICBGdW5jdGlvbk5vZGUqIGZ1bmMg
PSBmaW5kRnVuY3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBuZXcgRnVuY3Rp
b25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5w
dXNoX2JhY2soZnVuYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGN1cnJl
bnRGdW5jdGlvbi0+YWRkQ2FsbGVlKGZ1bmMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRGV0ZWN0UmVjdXJzaW9uOjpFcnJvckNvZGUg
RGV0ZWN0UmVjdXJzaW9uOjpkZXRlY3RSZWN1cnNpb24oKQoreworICAgIEZ1bmN0aW9uTm9kZSog
bWFpbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZSgibWFpbigiKTsKKyAgICBpZiAobWFpbiA9PSBOVUxM
KQorICAgICAgICByZXR1cm4ga0Vycm9yTWlzc2luZ01haW47CisgICAgaWYgKG1haW4tPmRldGVj
dFJlY3Vyc2lvbigpKQorICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9uOworICAgIHJldHVy
biBrRXJyb3JOb25lOworfQorCitEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZSogRGV0ZWN0
UmVjdXJzaW9uOjpmaW5kRnVuY3Rpb25CeU5hbWUoCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSkK
K3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5nZXROYW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbnNbaV07CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJz
aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJz
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJhYzc5ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uaApAQCAtMCwwICsxLDYwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVm
IENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KKyNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JF
Q1VSU0lPTl9IXworCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKKyNpbmNsdWRl
ICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKKyNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUlu
Zm8uaCIKKworLy8gVHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlv
biByZWN1cnNpb24uCitjbGFzcyBEZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZl
cnNlciB7CitwdWJsaWM6CisgICAgZW51bSBFcnJvckNvZGUgeworICAgICAgICBrRXJyb3JNaXNz
aW5nTWFpbiwKKyAgICAgICAga0Vycm9yUmVjdXJzaW9uLAorICAgICAgICBrRXJyb3JOb25lCisg
ICAgfTsKKworICAgIERldGVjdFJlY3Vyc2lvbigpOworICAgIH5EZXRlY3RSZWN1cnNpb24oKTsK
KworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSopOworCisgICAgRXJyb3JDb2RlIGRldGVjdFJlY3Vyc2lvbigpOworCitwcml2YXRlOgorICAg
IGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBGdW5jdGlvbk5vZGUo
Y29uc3QgVFN0cmluZyYgZm5hbWUpOworCisgICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUo
KSBjb25zdDsKKworICAgICAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNh
bGxlZSBsaXN0LCB0aGlzIGJlY29tZXMgYSBuby1vcC4KKyAgICAgICAgdm9pZCBhZGRDYWxsZWUo
RnVuY3Rpb25Ob2RlKiBjYWxsZWUpOworCisgICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vy
c2l2ZSBmdW5jdGlvbiBjYWxscyBhcmUgZGV0ZWN0ZWQuCisgICAgICAgIGJvb2wgZGV0ZWN0UmVj
dXJzaW9uKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5h
bWUgaXMgdW5pcXVlLgorICAgICAgICBUU3RyaW5nIG5hbWU7CisKKyAgICAgICAgLy8gZnVuY3Rp
b25zIHRoYXQgYXJlIGRpcmVjdGx5IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBU
VmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGNhbGxlZXM7CisKKyAgICAgICAgVmlzaXQgdmlzaXQ7Cisg
ICAgfTsKKworICAgIEZ1bmN0aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJp
bmcmIG5hbWUpOworCisgICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7CisgICAg
RnVuY3Rpb25Ob2RlKiBjdXJyZW50RnVuY3Rpb247Cit9OworCisjZW5kaWYgIC8vIENPTVBJTEVS
X0RFVEVDVF9SRUNVUlNJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwCmluZGV4IDhhMzhjNDEuLjA2ZjM3MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNz
LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNldmVy
aXR5IHNldmVyaXR5LAogICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBtSW5mb1NpbmsuaW5mbzsK
ICAgICAvKiBWQysrIGZvcm1hdDogZmlsZShsaW5lbnVtKSA6IGVycm9yICM6ICd0b2tlbicgOiBl
eHRyYWluZm8gKi8KICAgICBzaW5rLnByZWZpeChwcmVmaXgpOwotICAgIHNpbmsubG9jYXRpb24o
bG9jLmZpbGUsIGxvYy5saW5lKTsKKyAgICBzaW5rLmxvY2F0aW9uKEVuY29kZVNvdXJjZUxvYyhs
b2MuZmlsZSwgbG9jLmxpbmUpKTsKICAgICBzaW5rIDw8ICInIiA8PCB0b2tlbiA8PCAgIicgOiAi
IDw8IHJlYXNvbiA8PCAiICIgPDwgZXh0cmEgPDwgIlxuIjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCmluZGV4
IDI3YTEzZWEuLmZkYzNmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKQEAgLTEsNSArMSw1IEBACiAvLwotLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9y
TG9vcFVucm9sbDo6Z2V0TG9vcEluY3JlbWVudChUSW50ZXJtTG9vcCogbm9kZSkKIGludCBGb3JM
b29wVW5yb2xsOjpldmFsdWF0ZUludENvbnN0YW50KFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2Rl
KQogewogICAgIEFTU0VSVCgobm9kZSAhPSBOVUxMKSAmJiAobm9kZS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKSAhPSBOVUxMKSk7Ci0gICAgcmV0dXJuIG5vZGUtPmdldElDb25zdCgwKTsKKyAgICBy
ZXR1cm4gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCmlu
ZGV4IGQyMGE2YzAuLmJhMzJmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9JbmZvU2luay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcApAQCAtNiw4ICs2LDggQEAKIAogI2luY2x1ZGUgImNv
bXBpbGVyL0luZm9TaW5rLmgiCiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVmaXhU
eXBlIHApIHsKLSAgICBzd2l0Y2gocCkgewordm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFBy
ZWZpeFR5cGUgbWVzc2FnZSkgeworICAgIHN3aXRjaChtZXNzYWdlKSB7CiAgICAgICAgIGNhc2Ug
RVByZWZpeE5vbmU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFUHJlZml4V2Fy
bmluZzoKQEAgLTMxLDI0ICszMSwyOSBAQCB2b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJl
Zml4VHlwZSBwKSB7CiAgICAgfQogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGlu
dCBmaWxlLCBpbnQgbGluZSkgewordm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNl
TG9jIGxvYykgeworICAgIGludCBzdHJpbmcgPSAwLCBsaW5lID0gMDsKKyAgICBEZWNvZGVTb3Vy
Y2VMb2MobG9jLCAmc3RyaW5nLCAmbGluZSk7CisKICAgICBUUGVyc2lzdFN0cmluZ1N0cmVhbSBz
dHJlYW07CiAgICAgaWYgKGxpbmUpCi0gICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6IiA8PCBs
aW5lOworICAgICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOwogICAgIGVsc2UK
LSAgICAgICAgc3RyZWFtIDw8IGZpbGUgPDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBzdHJp
bmcgPDwgIjo/ICI7CiAgICAgc3RyZWFtIDw8ICI6ICI7CiAKICAgICBzaW5rLmFwcGVuZChzdHJl
YW0uc3RyKCkpOwogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxvYykgewotICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBsb2MuZmlyc3RfbGlu
ZSk7Cit2b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFByZWZpeFR5cGUgbWVzc2FnZSwgY29u
c3QgY2hhciogcykgeworICAgIHByZWZpeChtZXNzYWdlKTsKKyAgICBzaW5rLmFwcGVuZChzKTsK
KyAgICBzaW5rLmFwcGVuZCgiXG4iKTsKIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNlOjptZXNzYWdl
KFRQcmVmaXhUeXBlIHAsIGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciogbSkgewot
ICAgIHByZWZpeChwKTsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBt
ZXNzYWdlLCBjb25zdCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgeworICAgIHByZWZpeChtZXNz
YWdlKTsKICAgICBsb2NhdGlvbihsb2MpOwotICAgIHNpbmsuYXBwZW5kKG0pOworICAgIHNpbmsu
YXBwZW5kKHMpOwogICAgIHNpbmsuYXBwZW5kKCJcbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAppbmRleCA2ODg4ODM4Li5lMjIyNGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1Np
bmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1Npbmsu
aApAQCAtOTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYg
c3RyKCkgY29uc3QgeyByZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29u
c3QgeyByZXR1cm4gc2luay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4VHlw
ZSBwKTsKLSAgICB2b2lkIGxvY2F0aW9uKGludCBmaWxlLCBpbnQgbGluZSk7Ci0gICAgdm9pZCBs
b2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpOwotICAgIHZvaWQgbWVzc2FnZShUUHJlZml4
VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIqIG0pOworICAgIHZvaWQg
cHJlZml4KFRQcmVmaXhUeXBlIG1lc3NhZ2UpOworICAgIHZvaWQgbG9jYXRpb24oVFNvdXJjZUxv
YyBsb2MpOworICAgIHZvaWQgbWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25zdCBjaGFy
KiBzKTsKKyAgICB2b2lkIG1lc3NhZ2UoVFByZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciog
cywgVFNvdXJjZUxvYyBsb2MpOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNpbms7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlh
bGl6ZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6
ZS5jcHAKaW5kZXggMzMyMjlhMi4uOTdiNDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcApAQCAtMTYsNiArMTYsMzczIEBA
CiAKIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8KKy8vIFByb3RvdHlwZXMgZm9yIGJ1aWx0LWlu
IGZ1bmN0aW9ucyBzZWVuIGJ5IGJvdGggdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzLgorLy8K
Ky8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQorc3RhdGljIFRTdHJpbmcgQnVpbHRJbkZ1bmN0aW9uc0Nv
bW1vbihjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKK3sKKyAgICBUU3RyaW5n
IHM7CisKKyAgICAvLworICAgIC8vIEFuZ2xlIGFuZCBUcmlnb25vbWV0cmljIEZ1bmN0aW9ucy4K
KyAgICAvLworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHJhZGlhbnMoZmxvYXQgZGVncmVl
cyk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHJhZGlhbnModmVjMiAgZGVncmVl
cyk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHJhZGlhbnModmVjMyAgZGVncmVl
cyk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHJhZGlhbnModmVjNCAgZGVncmVl
cyk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGVncmVlcyhmbG9hdCByYWRp
YW5zKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZGVncmVlcyh2ZWMyICByYWRp
YW5zKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZGVncmVlcyh2ZWMzICByYWRp
YW5zKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZGVncmVlcyh2ZWM0ICByYWRp
YW5zKTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzaW4oZmxvYXQgYW5nbGUp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzaW4odmVjMiAgYW5nbGUpOyIpKTsK
KyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzaW4odmVjMyAgYW5nbGUpOyIpKTsKKyAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzaW4odmVjNCAgYW5nbGUpOyIpKTsKKworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGNvcyhmbG9hdCBhbmdsZSk7IikpOworICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIGNvcyh2ZWMyICBhbmdsZSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIGNvcyh2ZWMzICBhbmdsZSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IGNvcyh2ZWM0ICBhbmdsZSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgdGFu
KGZsb2F0IGFuZ2xlKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgdGFuKHZlYzIg
IGFuZ2xlKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgdGFuKHZlYzMgIGFuZ2xl
KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgdGFuKHZlYzQgIGFuZ2xlKTsiKSk7
CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhc2luKGZsb2F0IHgpOyIpKTsKKyAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhc2luKHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBhc2luKHZlYzMgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBhc2luKHZlYzQgIHgpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGFj
b3MoZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFjb3ModmVjMiAg
eCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFjb3ModmVjMyAgeCk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGFjb3ModmVjNCAgeCk7IikpOworCisgICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5LCBmbG9hdCB4KTsiKSk7CisgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgYXRhbih2ZWMyICB5LCB2ZWMyICB4KTsiKSk7CisgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgYXRhbih2ZWMzICB5LCB2ZWMzICB4KTsiKSk7CisgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCAgYXRhbih2ZWM0ICB5LCB2ZWM0ICB4KTsiKSk7CisKKyAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhdGFuKGZsb2F0IHlfb3Zlcl94KTsiKSk7CisgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgYXRhbih2ZWMyICB5X292ZXJfeCk7IikpOworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeV9vdmVyX3gpOyIpKTsKKyAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0ICBhdGFuKHZlYzQgIHlfb3Zlcl94KTsiKSk7CisKKyAgICAvLworICAg
IC8vIEV4cG9uZW50aWFsIEZ1bmN0aW9ucy4KKyAgICAvLworICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IHBvdyhmbG9hdCB4LCBmbG9hdCB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgcG93KHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBwb3codmVjMyAgeCwgdmVjMyAgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIHBvdyh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBleHAoZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGV4cCh2
ZWMyICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZXhwKHZlYzMgIHgpOyIp
KTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBleHAodmVjNCAgeCk7IikpOworCisgICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbG9nKGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBsb2codmVjMiAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIGxvZyh2ZWMzICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbG9nKHZl
YzQgIHgpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGV4cDIoZmxvYXQgeCk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGV4cDIodmVjMiAgeCk7IikpOworICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cDIodmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgIGV4cDIodmVjNCAgeCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgbG9nMihmbG9hdCB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
bG9nMih2ZWMyICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbG9nMih2ZWMz
ICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbG9nMih2ZWM0ICB4KTsiKSk7
CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzcXJ0KGZsb2F0IHgpOyIpKTsKKyAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzcXJ0KHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBzcXJ0KHZlYzMgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBzcXJ0KHZlYzQgIHgpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGlu
dmVyc2VzcXJ0KGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBpbnZl
cnNlc3FydCh2ZWMyICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgaW52ZXJz
ZXNxcnQodmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGludmVyc2Vz
cXJ0KHZlYzQgIHgpOyIpKTsKKworICAgIC8vCisgICAgLy8gQ29tbW9uIEZ1bmN0aW9ucy4KKyAg
ICAvLworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGFicyhmbG9hdCB4KTsiKSk7CisgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgYWJzKHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBhYnModmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIGFicyh2ZWM0ICB4KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzaWdu
KGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzaWduKHZlYzIgIHgp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzaWduKHZlYzMgIHgpOyIpKTsKKyAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzaWduKHZlYzQgIHgpOyIpKTsKKworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGZsb29yKGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMyICBmbG9vcih2ZWMyICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgZmxvb3IodmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZsb29y
KHZlYzQgIHgpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNlaWwoZmxvYXQg
eCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGNlaWwodmVjMiAgeCk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNlaWwodmVjMyAgeCk7IikpOworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgIGNlaWwodmVjNCAgeCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0
cmluZygiZmxvYXQgZnJhY3QoZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIGZyYWN0KHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBmcmFj
dCh2ZWMzICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZnJhY3QodmVjNCAg
eCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbW9kKGZsb2F0IHgsIGZsb2F0
IHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtb2QodmVjMiAgeCwgZmxvYXQg
eSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1vZCh2ZWMzICB4LCBmbG9hdCB5
KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbW9kKHZlYzQgIHgsIGZsb2F0IHkp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtb2QodmVjMiAgeCwgdmVjMiAgeSk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1vZCh2ZWMzICB4LCB2ZWMzICB5KTsi
KSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbW9kKHZlYzQgIHgsIHZlYzQgIHkpOyIp
KTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1pbihmbG9hdCB4LCBmbG9hdCB5KTsi
KSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWluKHZlYzIgIHgsIGZsb2F0IHkpOyIp
KTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtaW4odmVjMyAgeCwgZmxvYXQgeSk7Iikp
OworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1pbih2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7
CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWluKHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsK
KyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtaW4odmVjMyAgeCwgdmVjMyAgeSk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1pbih2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7CisK
KyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtYXgoZmxvYXQgeCwgZmxvYXQgeSk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1heCh2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Cisg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWF4KHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKKyAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtYXgodmVjNCAgeCwgZmxvYXQgeSk7IikpOworICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1heCh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7CisgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWF4KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKKyAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtYXgodmVjNCAgeCwgdmVjNCAgeSk7IikpOworCisgICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgY2xhbXAoZmxvYXQgeCwgZmxvYXQgbWluVmFsLCBmbG9h
dCBtYXhWYWwpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjbGFtcCh2ZWMyICB4
LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIGNsYW1wKHZlYzMgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Cisg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY2xhbXAodmVjNCAgeCwgZmxvYXQgbWluVmFsLCBm
bG9hdCBtYXhWYWwpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjbGFtcCh2ZWMy
ICB4LCB2ZWMyICBtaW5WYWwsIHZlYzIgIG1heFZhbCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzMgIGNsYW1wKHZlYzMgIHgsIHZlYzMgIG1pblZhbCwgdmVjMyAgbWF4VmFsKTsiKSk7
CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY2xhbXAodmVjNCAgeCwgdmVjNCAgbWluVmFs
LCB2ZWM0ICBtYXhWYWwpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1peChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBhKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgbWl4KHZlYzIgIHgsIHZlYzIgIHksIGZsb2F0IGEpOyIpKTsKKyAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBtaXgodmVjMyAgeCwgdmVjMyAgeSwgZmxvYXQgYSk7IikpOworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgIG1peCh2ZWM0ICB4LCB2ZWM0ICB5LCBmbG9hdCBhKTsiKSk7Cisg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWl4KHZlYzIgIHgsIHZlYzIgIHksIHZlYzIgIGEp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtaXgodmVjMyAgeCwgdmVjMyAgeSwg
dmVjMyAgYSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1peCh2ZWM0ICB4LCB2
ZWM0ICB5LCB2ZWM0ICBhKTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzdGVw
KGZsb2F0IGVkZ2UsIGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBz
dGVwKHZlYzIgIGVkZ2UsIHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBzdGVwKHZlYzMgIGVkZ2UsIHZlYzMgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBzdGVwKHZlYzQgIGVkZ2UsIHZlYzQgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBzdGVwKGZsb2F0IGVkZ2UsIHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBzdGVwKGZsb2F0IGVkZ2UsIHZlYzMgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBzdGVwKGZsb2F0IGVkZ2UsIHZlYzQgIHgpOyIpKTsKKworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCBm
bG9hdCB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc21vb3Roc3RlcCh2ZWMy
ICBlZGdlMCwgdmVjMiAgZWRnZTEsIHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBzbW9vdGhzdGVwKHZlYzMgIGVkZ2UwLCB2ZWMzICBlZGdlMSwgdmVjMyAgeCk7Iikp
OworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNtb290aHN0ZXAodmVjNCAgZWRnZTAsIHZl
YzQgIGVkZ2UxLCB2ZWM0ICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc21v
b3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzIgIHgpOyIpKTsKKyAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwg
dmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNtb290aHN0ZXAoZmxv
YXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWM0ICB4KTsiKSk7CisKKyAgICAvLworICAgIC8vIEdl
b21ldHJpYyBGdW5jdGlvbnMuCisgICAgLy8KKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBs
ZW5ndGgoZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2
ZWMyICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzMgIHgp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjNCAgeCk7IikpOwor
CisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UoZmxvYXQgcDAsIGZsb2F0IHAx
KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UodmVjMiAgcDAsIHZl
YzIgIHAxKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UodmVjMyAg
cDAsIHZlYzMgIHAxKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2Uo
dmVjNCAgcDAsIHZlYzQgIHAxKTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBk
b3QoZmxvYXQgeCwgZmxvYXQgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRv
dCh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90
KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3Qo
dmVjNCAgeCwgdmVjNCAgeSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyBjcm9z
cyh2ZWMzIHgsIHZlYzMgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vcm1h
bGl6ZShmbG9hdCB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbm9ybWFsaXpl
KHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBub3JtYWxpemUodmVj
MyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG5vcm1hbGl6ZSh2ZWM0ICB4
KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmYWNlZm9yd2FyZChmbG9hdCBO
LCBmbG9hdCBJLCBmbG9hdCBOcmVmKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
ZmFjZWZvcndhcmQodmVjMiAgTiwgdmVjMiAgSSwgdmVjMiAgTnJlZik7IikpOworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIGZhY2Vmb3J3YXJkKHZlYzMgIE4sIHZlYzMgIEksIHZlYzMgIE5y
ZWYpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmYWNlZm9yd2FyZCh2ZWM0ICBO
LCB2ZWM0ICBJLCB2ZWM0ICBOcmVmKTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCByZWZsZWN0KGZsb2F0IEksIGZsb2F0IE4pOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICByZWZsZWN0KHZlYzIgIEksIHZlYzIgIE4pOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICByZWZsZWN0KHZlYzMgIEksIHZlYzMgIE4pOyIpKTsKKyAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICByZWZsZWN0KHZlYzQgIEksIHZlYzQgIE4pOyIpKTsKKworICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IHJlZnJhY3QoZmxvYXQgSSwgZmxvYXQgTiwgZmxvYXQgZXRhKTsiKSk7
CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcmVmcmFjdCh2ZWMyICBJLCB2ZWMyICBOLCBm
bG9hdCBldGEpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByZWZyYWN0KHZlYzMg
IEksIHZlYzMgIE4sIGZsb2F0IGV0YSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IHJlZnJhY3QodmVjNCAgSSwgdmVjNCAgTiwgZmxvYXQgZXRhKTsiKSk7CisKKyAgICAvLworICAg
IC8vIE1hdHJpeCBGdW5jdGlvbnMuCisgICAgLy8KKyAgICBzLmFwcGVuZChUU3RyaW5nKCJtYXQy
IG1hdHJpeENvbXBNdWx0KG1hdDIgeCwgbWF0MiB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygibWF0MyBtYXRyaXhDb21wTXVsdChtYXQzIHgsIG1hdDMgeSk7IikpOworICAgIHMuYXBwZW5k
KFRTdHJpbmcoIm1hdDQgbWF0cml4Q29tcE11bHQobWF0NCB4LCBtYXQ0IHkpOyIpKTsKKworICAg
IC8vCisgICAgLy8gVmVjdG9yIHJlbGF0aW9uYWwgZnVuY3Rpb25zLgorICAgIC8vCisgICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW4odmVjMiB4LCB2ZWMyIHkpOyIpKTsKKyAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhhbih2ZWMzIHgsIHZlYzMgeSk7IikpOworICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuKHZlYzQgeCwgdmVjNCB5KTsiKSk7CisK
KyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbihpdmVjMiB4LCBpdmVjMiB5KTsi
KSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW4oaXZlYzMgeCwgaXZlYzMg
eSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuKGl2ZWM0IHgsIGl2
ZWM0IHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuRXF1YWwo
dmVjMiB4LCB2ZWMyIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhh
bkVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQg
bGVzc1RoYW5FcXVhbCh2ZWM0IHgsIHZlYzQgeSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzIgbGVzc1RoYW5FcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7CisgICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Cisg
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVzc1RoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5
KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhhbih2ZWMyIHgs
IHZlYzIgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuKHZl
YzMgeCwgdmVjMyB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRo
YW4odmVjNCB4LCB2ZWM0IHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdy
ZWF0ZXJUaGFuKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjMyBncmVhdGVyVGhhbihpdmVjMyB4LCBpdmVjMyB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzQgZ3JlYXRlclRoYW4oaXZlYzQgeCwgaXZlYzQgeSk7IikpOworCisgICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW5FcXVhbCh2ZWMyIHgsIHZlYzIgeSk7Iikp
OworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuRXF1YWwodmVjMyB4LCB2
ZWMzIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbkVxdWFs
KHZlYzQgeCwgdmVjNCB5KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVh
dGVyVGhhbkVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKKyAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbkVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIp
KTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKHZlYzIgeCwgdmVjMiB5KTsi
KSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZXF1YWwodmVjMyB4LCB2ZWMzIHkpOyIp
KTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbCh2ZWM0IHgsIHZlYzQgeSk7Iikp
OworCisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGl2ZWMzIHgsIGl2ZWMzIHkp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChpdmVjNCB4LCBpdmVjNCB5
KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbChidmVjMiB4LCBidmVj
MiB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZXF1YWwoYnZlYzMgeCwgYnZl
YzMgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGVxdWFsKGJ2ZWM0IHgsIGJ2
ZWM0IHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKHZlYzIg
eCwgdmVjMiB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbm90RXF1YWwodmVj
MyB4LCB2ZWMzIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBub3RFcXVhbCh2
ZWM0IHgsIHZlYzQgeSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbm90RXF1
YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5v
dEVxdWFsKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVj
NCBub3RFcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMiBub3RFcXVhbChidmVjMiB4LCBidmVjMiB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzMgbm90RXF1YWwoYnZlYzMgeCwgYnZlYzMgeSk7IikpOworICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWM0IG5vdEVxdWFsKGJ2ZWM0IHgsIGJ2ZWM0IHkpOyIpKTsKKworICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWMyIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3Ry
aW5nKCJib29sIGFueShidmVjMyB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBh
bnkoYnZlYzQgeCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzIg
eCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMzIHgpOyIpKTsKKyAg
ICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjNCB4KTsiKSk7CisKKyAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjMiBub3QoYnZlYzIgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWMzIG5vdChidmVjMyB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90
KGJ2ZWM0IHgpOyIpKTsKKworICAgIC8vCisgICAgLy8gVGV4dHVyZSBGdW5jdGlvbnMuCisgICAg
Ly8KKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVyMkQgc2FtcGxl
ciwgdmVjMiBjb29yZCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJE
UHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOworICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZUN1YmUoc2FtcGxlckN1YmUg
c2FtcGxlciwgdmVjMyBjb29yZCk7IikpOworCisgICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2lt
YWdlX2V4dGVybmFsKSB7CisgICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJE
KHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7CisgICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyRXh0ZXJuYWxPRVMgc2Ft
cGxlciwgdmVjMyBjb29yZCk7IikpOworICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRl
eHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsK
KyAgICB9CisKKyAgICBpZiAocmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkgeworICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3Qoc2FtcGxlcjJEUmVjdCBz
YW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7CisgICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
dGV4dHVyZTJEUmVjdFByb2ooc2FtcGxlcjJEUmVjdCBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7
CisgICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUmVjdFByb2ooc2FtcGxl
cjJEUmVjdCBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7CisgICAgfQorCisgICAgLy8KKyAgICAv
LyBOb2lzZSBmdW5jdGlvbnMuCisgICAgLy8KKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IG5vaXNlMShmbG9hdCB4KTsiKSk7CisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lz
ZTEodmVjMiAgeCk7IikpOworICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZl
YzMgIHgpOyIpKTsKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWM0ICB4
KTsiKSk7CisKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzIgbm9pc2UyKGZsb2F0IHgpOyIp
KTsKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzIgbm9pc2UyKHZlYzIgIHgpOyIpKTsKKyAg
ICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzIgbm9pc2UyKHZlYzMgIHgpOyIpKTsKKyAgICAvL3Mu
YXBwZW5kKFRTdHJpbmcoInZlYzIgbm9pc2UyKHZlYzQgIHgpOyIpKTsKKworICAgIC8vcy5hcHBl
bmQoVFN0cmluZygidmVjMyBub2lzZTMoZmxvYXQgeCk7IikpOworICAgIC8vcy5hcHBlbmQoVFN0
cmluZygidmVjMyBub2lzZTModmVjMiAgeCk7IikpOworICAgIC8vcy5hcHBlbmQoVFN0cmluZygi
dmVjMyBub2lzZTModmVjMyAgeCk7IikpOworICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMyBu
b2lzZTModmVjNCAgeCk7IikpOworCisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IG5vaXNl
NChmbG9hdCB4KTsiKSk7CisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IG5vaXNlNCh2ZWMy
ICB4KTsiKSk7CisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IG5vaXNlNCh2ZWMzICB4KTsi
KSk7CisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IG5vaXNlNCh2ZWM0ICB4KTsiKSk7CisK
KyAgICByZXR1cm4gczsKK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLworLy8gUHJvdG90
eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rpb25zIHNlZW4gYnkgdmVydGV4IHNoYWRlcnMgb25seS4K
Ky8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3N0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlv
bnNWZXJ0ZXgoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCit7CisgICAgVFN0
cmluZyBzOworCisgICAgLy8KKyAgICAvLyBHZW9tZXRyaWMgRnVuY3Rpb25zLgorICAgIC8vCisg
ICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IGZ0cmFuc2Zvcm0oKTsiKSk7CisKKyAgICAvLwor
ICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgorICAgIC8vCisgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCB0ZXh0dXJlMkRMb2Qoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzIgY29vcmQsIGZsb2F0IGxv
ZCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1w
bGVyMkQgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQgbG9kKTsiKSk7CisgICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNv
b3JkLCBmbG9hdCBsb2QpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVD
dWJlTG9kKHNhbXBsZXJDdWJlIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwor
CisgICAgcmV0dXJuIHM7Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8KIC8vIFByb3Rv
dHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IGZyYWdtZW50IHNoYWRlcnMgb25s
eS4KIC8vCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTEzMywxMiArNTAwLDE1IEBAIHZvaWQg
VEJ1aWx0SW5zOjppbml0aWFsaXplKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3Bl
YywKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoKICAg
ICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25GcmFnbWVudCgp
KTsKKyAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNDb21t
b24ocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdElu
RnVuY3Rpb25zRnJhZ21lbnQocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1
c2hfYmFjayhTdGFuZGFyZFVuaWZvcm1zKCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
U0hfVkVSVEVYX1NIQURFUjoKICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1
bHRQcmVjaXNpb25WZXJ0ZXgoKSk7CisgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhC
dWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcykpOworICAgICAgICBidWlsdEluU3RyaW5n
cy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc1ZlcnRleChyZXNvdXJjZXMpKTsKICAgICAgICAg
YnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKFN0YW5kYXJkVW5pZm9ybXMoKSk7CiAgICAgICAgIGJy
ZWFrOwogCkBAIC0xNjksMTAgKzUzOSw2IEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRl
clR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsCiAgICAgICAgIGlmIChzcGVjICE9IFNIX0NT
U19TSEFERVJTX1NQRUMpIHsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRW
YXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0NvbG9yIiksICAgICAgICAgICAgICAgICAg
IFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdDb2xvciwgICA0KSkpOwogICAgICAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJn
bF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10iKSwgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1
bSwgRXZxRnJhZ0RhdGEsICAgIDQpKSk7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9m
cmFnX2RlcHRoKSB7Ci0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZh
cmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwgICAgICAgICAgICBUVHlw
ZShFYnRGbG9hdCwgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBF
YnBNZWRpdW0sIEV2cUZyYWdEZXB0aCwgMSkpKTsKLSAgICAgICAgICAgICAgICBzeW1ib2xUYWJs
ZS5yZWxhdGVUb0V4dGVuc2lvbigiZ2xfRnJhZ0RlcHRoRVhUIiwgIkdMX0VYVF9mcmFnX2RlcHRo
Iik7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImNzc19NaXhDb2xvciIp
LCAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFHbG9iYWws
ICAgICAgNCkpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJs
ZShOZXdQb29sVFN0cmluZygiY3NzX0NvbG9yTWF0cml4IiksICAgICAgICAgICAgICAgIFRUeXBl
KEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUdsb2JhbCwgICAgICA0LCB0cnVlKSkpOwpAQCAtMjkw
LDYgKzY1Niw0IEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVpbHRJblJl
c291cmNlcyYgcmVzb3VyY2VzLAogICAgICAgICBleHRCZWhhdmlvclsiR0xfQVJCX3RleHR1cmVf
cmVjdGFuZ2xlIl0gPSBFQmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5FWFRfZHJhd19i
dWZmZXJzKQogICAgICAgICBleHRCZWhhdmlvclsiR0xfRVhUX2RyYXdfYnVmZmVycyJdID0gRUJo
VW5kZWZpbmVkOwotICAgIGlmIChyZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpCi0gICAgICAgIGV4
dEJlaGF2aW9yWyJHTF9FWFRfZnJhZ19kZXB0aCJdID0gRUJoVW5kZWZpbmVkOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNw
cAppbmRleCAzMzRmMGQ3Li5jMGIwOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
IC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTMxLDcgKzEzMSw3IEBAIGNv
bnN0IGNoYXIqIGdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciBvcCkgewogLy8KIC8vIFJldHVy
bnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRk
U3ltYm9sKGludCBpZCwgY29uc3QgVFN0cmluZyYgbmFtZSwgY29uc3QgVFR5cGUmIHR5cGUsIGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUpCitUSW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRT
eW1ib2woaW50IGlkLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgVFNv
dXJjZUxvYyBsaW5lKQogewogICAgIFRJbnRlcm1TeW1ib2wqIG5vZGUgPSBuZXcgVEludGVybVN5
bWJvbChpZCwgbmFtZSwgdHlwZSk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTE0NCw3
ICsxNDQsNyBAQCBUSW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2woaW50IGlk
LCBjb25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZQogLy8KIC8vIFJldHVybnMgdGhlIGFk
ZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRo
KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVy
bVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUsIFRTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNl
IEVPcEVxdWFsOgpAQCAtMjAwLDYgKzIwMCw4IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkQmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEluCiAg
ICAgLy8gb25lIGFuZCBwcm9tb3RlIGl0IHRvIHRoZSByaWdodCB0eXBlLgogICAgIC8vCiAgICAg
VEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9wKTsKKyAgICBpZiAobGlu
ZSA9PSAwKQorICAgICAgICBsaW5lID0gcmlnaHQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRM
aW5lKGxpbmUpOwogCiAgICAgbm9kZS0+c2V0TGVmdChsZWZ0KTsKQEAgLTIyOCwxMyArMjMwLDE1
IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0aChUT3BlcmF0b3Ig
b3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEluCiAvLwogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9k
ZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUT3BlcmF0b3Ig
b3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNl
TG9jIGxpbmUpCiB7CiAgICAgLy8KICAgICAvLyBMaWtlIGFkZGluZyBiaW5hcnkgbWF0aCwgZXhj
ZXB0IHRoZSBjb252ZXJzaW9uIGNhbiBvbmx5IGdvCiAgICAgLy8gZnJvbSByaWdodCB0byBsZWZ0
LgogICAgIC8vCiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9w
KTsKKyAgICBpZiAobGluZSA9PSAwKQorICAgICAgICBsaW5lID0gbGVmdC0+Z2V0TGluZSgpOwog
ICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAKICAgICBUSW50ZXJtVHlwZWQqIGNoaWxkID0gYWRk
Q29udmVyc2lvbihvcCwgbGVmdC0+Z2V0VHlwZSgpLCByaWdodCk7CkBAIC0yNTYsOSArMjYwLDEx
IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwg
VEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgog
Ly8gVGhlIGNhbGxlciBzaG91bGQgc2V0IHRoZSB0eXBlIG9mIHRoZSByZXR1cm5lZCBub2RlLgog
Ly8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVyYXRvciBv
cCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291cmNlTG9jIGxp
bmUpCiB7CiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9wKTsK
KyAgICBpZiAobGluZSA9PSAwKQorICAgICAgICBsaW5lID0gaW5kZXgtPmdldExpbmUoKTsKICAg
ICBub2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldExlZnQoYmFzZSk7CiAgICAgbm9k
ZS0+c2V0UmlnaHQoaW5kZXgpOwpAQCAtMjczLDEzICsyNzksMTMgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtZWRpYXRlOjphZGRJbmRleChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogYmFzZSwg
VEludGVybVQKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBl
ZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUq
IGNoaWxkTm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKFRPcGVyYXRv
ciBvcCwgVEludGVybU5vZGUqIGNoaWxkTm9kZSwgVFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFi
bGUmIHN5bWJvbFRhYmxlKQogewogICAgIFRJbnRlcm1VbmFyeSogbm9kZTsKICAgICBUSW50ZXJt
VHlwZWQqIGNoaWxkID0gY2hpbGROb2RlLT5nZXRBc1R5cGVkKCk7CiAKICAgICBpZiAoY2hpbGQg
PT0gMCkgewotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGxpbmUsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgiKTsKKyAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHR5cGUgaW4gQWRkVW5hcnlN
YXRoIiwgbGluZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMzQyLDYgKzM0OCw4
IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKFRPcGVyYXRvciBv
cCwgVEludGVybU5vZGUqIGNoaWxkTm9kZSwKICAgICAvLyBNYWtlIGEgbmV3IG5vZGUgZm9yIHRo
ZSBvcGVyYXRvci4KICAgICAvLwogICAgIG5vZGUgPSBuZXcgVEludGVybVVuYXJ5KG9wKTsKKyAg
ICBpZiAobGluZSA9PSAwKQorICAgICAgICBsaW5lID0gY2hpbGQtPmdldExpbmUoKTsKICAgICBu
b2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldE9wZXJhbmQoY2hpbGQpOwogCkBAIC0z
NjgsNyArMzc2LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgo
VE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLAogLy8gUmV0dXJucyBhbiBhZ2dy
ZWdhdGUgbm9kZSwgd2hpY2ggY291bGQgYmUgdGhlIG9uZSBwYXNzZWQgaW4gaWYKIC8vIGl0IHdh
cyBhbHJlYWR5IGFuIGFnZ3JlZ2F0ZSBidXQgbm8gb3BlcmF0b3Igd2FzIHNldC4KIC8vCi1USW50
ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJt
Tm9kZSogbm9kZSwgVE9wZXJhdG9yIG9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQorVEludGVy
bUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6c2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVybU5v
ZGUqIG5vZGUsIFRPcGVyYXRvciBvcCwgVFNvdXJjZUxvYyBsaW5lKQogewogICAgIFRJbnRlcm1B
Z2dyZWdhdGUqIGFnZ05vZGU7CiAKQEAgLTM4Myw2ICszOTEsOCBAQCBUSW50ZXJtQWdncmVnYXRl
KiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSogbm9kZSwg
VE9wZXJhdAogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGFnZ05vZGUgPSBuZXcgVEludGVy
bUFnZ3JlZ2F0ZSgpOwogICAgICAgICAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2Jh
Y2sobm9kZSk7CisgICAgICAgICAgICBpZiAobGluZSA9PSAwKQorICAgICAgICAgICAgICAgIGxp
bmUgPSBub2RlLT5nZXRMaW5lKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgYWdn
Tm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKCk7CkBAIC0zOTEsNyArNDAxLDggQEAgVEludGVy
bUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6c2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVybU5v
ZGUqIG5vZGUsIFRPcGVyYXQKICAgICAvLyBTZXQgdGhlIG9wZXJhdG9yLgogICAgIC8vCiAgICAg
YWdnTm9kZS0+c2V0T3Aob3ApOwotICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CisgICAgaWYg
KGxpbmUgIT0gMCkKKyAgICAgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVy
biBhZ2dOb2RlOwogfQpAQCAtNDgwLDcgKzQ5MSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6YWRkQ29udmVyc2lvbihUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiB0eXBlLCBUSW50
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29udkludFRv
RmxvYXQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgbmV3T3Ag
PSBFT3BDb252Qm9vbFRvRmxvYXQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIG5vZGUiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC00ODksNyArNTAwLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRDb252ZXJzaW9uKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUmIHR5cGUsIFRJbnQK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgbmV3T3AgPSBFT3BDb252SW50VG9C
b29sOyAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OiBuZXdPcCA9
IEVPcENvbnZGbG9hdFRvQm9vbDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5h
bEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTQ5OCwxMiArNTA5LDEyIEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6YWRkQ29udmVyc2lvbihUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiB0eXBlLCBUSW50
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogICBuZXdPcCA9IEVPcENvbnZCb29s
VG9JbnQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogIG5ld09w
ID0gRU9wQ29udkZsb2F0VG9JbnQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIG5vZGUiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAi
QmFkIHByb21vdGlvbiB0eXBlIik7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiB0eXBlIiwgbm9kZS0+Z2V0
TGluZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkBAIC01MjMs
NyArNTM0LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaW9uKFRP
cGVyYXRvciBvcCwgY29uc3QgVFR5cGUmIHR5cGUsIFRJbnQKIC8vIFJldHVybnMgdGhlIHJlc3Vs
dGluZyBhZ2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNzZWQgaW4gZm9yCiAvLyBib3RoIGV4aXN0
aW5nIG5vZGVzLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dy
ZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdh
dGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJjZUxvYyBsaW5l
KQogewogICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC01NDAsNyArNTUxLDggQEAgVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jv
d0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHIKICAgICBpZiAocmln
aHQpCiAgICAgICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCkucHVzaF9iYWNrKHJpZ2h0KTsKIAot
ICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CisgICAgaWYgKGxpbmUgIT0gMCkKKyAgICAgICAg
YWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNTUw
LDE0ICs1NjIsMTggQEAgVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3Jl
Z2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHIKIC8vCiAvLyBSZXR1cm5zIGFu
IGFnZ3JlZ2F0ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IgdGhlIGV4aXN0aW5nIG5vZGUu
CiAvLwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50
ZXJtTm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUq
IFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VM
b2MgbGluZSkKIHsKICAgICBpZiAobm9kZSA9PSAwKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKICAgICBh
Z2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhub2RlKTsKLSAgICBhZ2dOb2RlLT5zZXRM
aW5lKGxpbmUpOworCisgICAgaWYgKGxpbmUgIT0gMCkKKyAgICAgICAgYWdnTm9kZS0+c2V0TGlu
ZShsaW5lKTsKKyAgICBlbHNlCisgICAgICAgIGFnZ05vZGUtPnNldExpbmUobm9kZS0+Z2V0TGlu
ZSgpKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNTY5LDcgKzU4NSw3IEBAIFRJbnRl
cm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5v
ZGUsIGNvbnN0IFRTb3VyY2VMCiAvLwogLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3Jl
YXRlZC4KIC8vCi1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRl
cm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyLCBjb25zdCBUU291cmNlTG9j
JiBsaW5lKQorVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJt
VHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBub2RlUGFpciwgVFNvdXJjZUxvYyBsaW5lKQog
ewogICAgIC8vCiAgICAgLy8gRm9yIGNvbXBpbGUgdGltZSBjb25zdGFudCBzZWxlY3Rpb25zLCBw
cnVuZSB0aGUgY29kZSBhbmQKQEAgLTU3Nyw3ICs1OTMsNyBAQCBUSW50ZXJtTm9kZSogVEludGVy
bWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWly
IG5vZAogICAgIC8vCiAKICAgICBpZiAoY29uZC0+Z2V0QXNUeXBlZCgpICYmIGNvbmQtPmdldEFz
VHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsKLSAgICAgICAgaWYgKGNvbmQtPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRCQ29uc3QoMCkgPT0gdHJ1ZSkKKyAgICAgICAgaWYgKGNvbmQt
PmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVy
KCktPmdldEJDb25zdCgpID09IHRydWUpCiAgICAgICAgICAgICByZXR1cm4gbm9kZVBhaXIubm9k
ZTEgPyBzZXRBZ2dyZWdhdGVPcGVyYXRvcihub2RlUGFpci5ub2RlMSwgRU9wU2VxdWVuY2UsIG5v
ZGVQYWlyLm5vZGUxLT5nZXRMaW5lKCkpIDogTlVMTDsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgcmV0dXJuIG5vZGVQYWlyLm5vZGUyID8gc2V0QWdncmVnYXRlT3BlcmF0b3Iobm9kZVBhaXIu
bm9kZTIsIEVPcFNlcXVlbmNlLCBub2RlUGFpci5ub2RlMi0+Z2V0TGluZSgpKSA6IE5VTEw7CkBA
IC01OTAsNyArNjA2LDcgQEAgVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlv
bihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBub2QKIH0KIAogCi1USW50ZXJt
VHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVy
bVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK1RJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkQ29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJp
Z2h0LCBUU291cmNlTG9jIGxpbmUpCiB7CiAgICAgaWYgKGxlZnQtPmdldFR5cGUoKS5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFDb25zdCAmJiByaWdodC0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09
IEV2cUNvbnN0KSB7CiAgICAgICAgIHJldHVybiByaWdodDsKQEAgLTYxMCw3ICs2MjYsNyBAQCBU
SW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwg
VEludGVybVR5cGVkKiByaWdodCwgYwogLy8KIC8vIFJldHVybnMgdGhlIHNlbGVjdGlvbiBub2Rl
IGNyZWF0ZWQsIG9yIDAgaWYgb25lIGNvdWxkIG5vdCBiZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJ
bnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBl
ZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJt
VHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNl
QmxvY2ssIFRTb3VyY2VMb2MgbGluZSkKIHsKICAgICAvLwogICAgIC8vIEdldCBjb21wYXRpYmxl
IHR5cGVzLgpAQCAtNjMxLDcgKzY0Nyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6
YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlCiAgICAg
Ly8KIAogICAgIGlmIChjb25kLT5nZXRBc0NvbnN0YW50VW5pb24oKSAmJiB0cnVlQmxvY2stPmdl
dEFzQ29uc3RhbnRVbmlvbigpICYmIGZhbHNlQmxvY2stPmdldEFzQ29uc3RhbnRVbmlvbigpKSB7
Ci0gICAgICAgIGlmIChjb25kLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0QkNvbnN0KDApKQor
ICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCktPmdldEJDb25zdCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWVCbG9jazsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlQmxvY2s7CkBAIC02NTMsNyArNjY5LDcg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVk
KiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWUKIC8vIFJldHVybnMgdGhlIGNvbnN0YW50IHVuaW9u
IG5vZGUgY3JlYXRlZC4KIC8vCiAKLVRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRl
OjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQb2ludGVyLCBjb25z
dCBUVHlwZSYgdCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK1RJbnRlcm1Db25zdGFudFVuaW9u
KiBUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJy
YXlQb2ludGVyLCBjb25zdCBUVHlwZSYgdCwgVFNvdXJjZUxvYyBsaW5lKQogewogICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uKiBub2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHVuaW9uQXJy
YXlQb2ludGVyLCB0KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtNjYxLDcgKzY3Nyw3
IEBAIFRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9u
KENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFk
ZFN3aXp6bGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUU291cmNlTG9jIGxpbmUpCiB7CiAKICAg
ICBUSW50ZXJtQWdncmVnYXRlKiBub2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVu
Y2UpOwpAQCAtNjg0LDcgKzcwMCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRk
U3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmCiAvLwogLy8g
Q3JlYXRlIGxvb3Agbm9kZXMuCiAvLwotVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZExv
b3AoVExvb3BUeXBlIHR5cGUsIFRJbnRlcm1Ob2RlKiBpbml0LCBUSW50ZXJtVHlwZWQqIGNvbmQs
IFRJbnRlcm1UeXBlZCogZXhwciwgVEludGVybU5vZGUqIGJvZHksIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpCitUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlw
ZSwgVEludGVybU5vZGUqIGluaXQsIFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiBl
eHByLCBUSW50ZXJtTm9kZSogYm9keSwgVFNvdXJjZUxvYyBsaW5lKQogewogICAgIFRJbnRlcm1O
b2RlKiBub2RlID0gbmV3IFRJbnRlcm1Mb29wKHR5cGUsIGluaXQsIGNvbmQsIGV4cHIsIGJvZHkp
OwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC02OTUsMTIgKzcxMSwxMiBAQCBUSW50ZXJt
Tm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUq
IGluaXQsIFRJbnRlcm1UeQogLy8KIC8vIEFkZCBicmFuY2hlcy4KIC8vCi1USW50ZXJtQnJhbmNo
KiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKQorVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRP
cGVyYXRvciBicmFuY2hPcCwgVFNvdXJjZUxvYyBsaW5lKQogewogICAgIHJldHVybiBhZGRCcmFu
Y2goYnJhbmNoT3AsIDAsIGxpbmUpOwogfQogCi1USW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRl
OjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24s
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjph
ZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24sIFRT
b3VyY2VMb2MgbGluZSkKIHsKICAgICBUSW50ZXJtQnJhbmNoKiBub2RlID0gbmV3IFRJbnRlcm1C
cmFuY2goYnJhbmNoT3AsIGV4cHJlc3Npb24pOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBA
IC04MzAsNyArODQ2LDYgQEAgYm9vbCBUSW50ZXJtVW5hcnk6OnByb21vdGUoVEluZm9TaW5rJikK
ICAgICB9CiAKICAgICBzZXRUeXBlKG9wZXJhbmQtPmdldFR5cGUoKSk7Ci0gICAgdHlwZS5zZXRR
dWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODQ1LDcg
Kzg2MCw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGluZm9TaW5r
KQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gb25seSBoYW5kbGVzIHNjYWxhcnMsIHZlY3RvcnMs
IGFuZCBtYXRyaWNlcy4KICAgICBpZiAobGVmdC0+aXNBcnJheSgpIHx8IHJpZ2h0LT5pc0FycmF5
KCkpIHsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBnZXRMaW5lKCksICJJbnZhbGlkIG9wZXJhdGlvbiBmb3IgYXJyYXlzIik7CisgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3BlcmF0
aW9uIGZvciBhcnJheXMiLCBnZXRMaW5lKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC05NTAsNyArOTY1LDcgQEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZv
U2luayYgaW5mb1NpbmspCiAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNU
eXBlLCBoaWdoZXJQcmVjaXNpb24sIEV2cVRlbXBvcmFyeSwgc2l6ZSwgZmFsc2UpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiTWlzc2lu
ZyBlbHNlcyIpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIk1pc3NpbmcgZWxzZXMiLCBnZXRMaW5lKCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAt
OTc5LDcgKzk5NCw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGlu
Zm9TaW5rKQogICAgICAgICAgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGln
aGVyUHJlY2lzaW9uLCBFdnFUZW1wb3JhcnksIHNpemUsIGZhbHNlKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIk1pc3NpbmcgZWxzZXMi
KTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFs
RXJyb3IsICJNaXNzaW5nIGVsc2VzIiwgZ2V0TGluZSgpKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMTksMjIg
KzEwMzQsMjMgQEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaW5mb1Np
bmspCiAKIGJvb2wgQ29tcGFyZVN0cnVjdChjb25zdCBUVHlwZSYgbGVmdE5vZGVUeXBlLCBDb25z
dGFudFVuaW9uKiByaWdodFVuaW9uQXJyYXksIENvbnN0YW50VW5pb24qIGxlZnRVbmlvbkFycmF5
KQogewotICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IGxlZnROb2RlVHlwZS5nZXRTdHJ1
Y3QoKS0+ZmllbGRzKCk7CisgICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBsZWZ0Tm9kZVR5
cGUuZ2V0U3RydWN0KCk7CiAKLSAgICBzaXplX3Qgc3RydWN0U2l6ZSA9IGZpZWxkcy5zaXplKCk7
Ci0gICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBzaXplX3Qgc3RydWN0U2l6ZSA9IGZpZWxkcy0+
c2l6ZSgpOworICAgIGludCBpbmRleCA9IDA7CiAKICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IHN0cnVjdFNpemU7IGorKykgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IGZpZWxkc1tqXS0+dHlw
ZSgpLT5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoZmllbGRzW2pdLT50eXBlKCktPmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCkgewotICAgICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVy
ZSgqKGZpZWxkc1tqXS0+dHlwZSgpKSwgJnJpZ2h0VW5pb25BcnJheVtpbmRleF0sICZsZWZ0VW5p
b25BcnJheVtpbmRleF0pKQorICAgICAgICBpbnQgc2l6ZSA9ICgqZmllbGRzKVtqXS50eXBlLT5n
ZXRPYmplY3RTaXplKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7
CisgICAgICAgICAgICBpZiAoKCpmaWVsZHMpW2pdLnR5cGUtPmdldEJhc2ljVHlwZSgpID09IEVi
dFN0cnVjdCkgeworICAgICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZSgqKCpmaWVs
ZHMpW2pdLnR5cGUsICZyaWdodFVuaW9uQXJyYXlbaW5kZXhdLCAmbGVmdFVuaW9uQXJyYXlbaW5k
ZXhdKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBpZiAobGVmdFVuaW9uQXJyYXlbaW5kZXhdICE9IHJpZ2h0
VW5pb25BcnJheVtpbmRleF0pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgICAgICBpbmRleCsrOwogICAgICAgICAgICAgfQorCiAgICAgICAgIH0KICAgICB9
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDQ2LDEwICsxMDYyLDEwIEBAIGJvb2wgQ29tcGFyZVN0
cnVjdHVyZShjb25zdCBUVHlwZSYgbGVmdE5vZGVUeXBlLCBDb25zdGFudFVuaW9uKiByaWdodFVu
aW9uQXJyYXksCiAgICAgICAgIFRUeXBlIHR5cGVXaXRob3V0QXJyYXluZXNzID0gbGVmdE5vZGVU
eXBlOwogICAgICAgICB0eXBlV2l0aG91dEFycmF5bmVzcy5jbGVhckFycmF5bmVzcygpOwogCi0g
ICAgICAgIHNpemVfdCBhcnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7Cisg
ICAgICAgIGludCBhcnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CiAKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkgewotICAgICAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHR5cGVXaXRob3V0QXJyYXluZXNzLmdldE9iamVjdFNpemUoKSAq
IGk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKKyAgICAg
ICAgICAgIGludCBvZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkg
KiBpOwogICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0KHR5cGVXaXRob3V0QXJyYXluZXNz
LCAmcmlnaHRVbmlvbkFycmF5W29mZnNldF0sICZsZWZ0VW5pb25BcnJheVtvZmZzZXRdKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEwNjksNyArMTA4NSw3
IEBAIGJvb2wgQ29tcGFyZVN0cnVjdHVyZShjb25zdCBUVHlwZSYgbGVmdE5vZGVUeXBlLCBDb25z
dGFudFVuaW9uKiByaWdodFVuaW9uQXJyYXksCiBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFu
dFVuaW9uOjpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZGUsIFRJ
bmZvU2luayYgaW5mb1NpbmspCiB7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IGdl
dFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgc2l6ZV90IG9iamVjdFNpemUgPSBnZXRUeXBlKCku
Z2V0T2JqZWN0U2l6ZSgpOworICAgIGludCBvYmplY3RTaXplID0gZ2V0VHlwZSgpLmdldE9iamVj
dFNpemUoKTsKIAogICAgIGlmIChjb25zdGFudE5vZGUpIHsgIC8vIGJpbmFyeSBvcGVyYXRpb25z
CiAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlID0gY29uc3RhbnROb2RlLT5nZXRB
c0NvbnN0YW50VW5pb24oKTsKQEAgLTEwNzksMTMgKzEwOTUsMTMgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogY29u
c3RhbnROb2QKICAgICAgICAgLy8gZm9yIGEgY2FzZSBsaWtlIGZsb2F0IGYgPSAxLjIgKyB2ZWM0
KDIsMyw0LDUpOwogICAgICAgICBpZiAoY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0
U2l6ZSgpID09IDEgJiYgb2JqZWN0U2l6ZSA+IDEpIHsKICAgICAgICAgICAgIHJpZ2h0VW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyArK2kpCisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG9iamVjdFNpemU7ICsraSkKICAgICAgICAgICAgICAgICByaWdodFVuaW9uQXJy
YXlbaV0gPSAqbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgICAgIHJldHVy
blR5cGUgPSBnZXRUeXBlKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uc3RhbnROb2RlLT5nZXRU
eXBlKCkuZ2V0T2JqZWN0U2l6ZSgpID4gMSAmJiBvYmplY3RTaXplID09IDEpIHsKICAgICAgICAg
ICAgIC8vIGZvciBhIGNhc2UgbGlrZSBmbG9hdCBmID0gdmVjNCgyLDMsNCw1KSArIDEuMjsKICAg
ICAgICAgICAgIHVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltjb25zdGFudE5vZGUtPmdl
dFR5cGUoKS5nZXRPYmplY3RTaXplKCldOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7ICsraSkKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2Jq
ZWN0U2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgdW5pb25BcnJheVtpXSA9ICpnZXRVbmlv
bkFycmF5UG9pbnRlcigpOwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IG5vZGUtPmdldFR5cGUo
KTsKICAgICAgICAgICAgIG9iamVjdFNpemUgPSBjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRP
YmplY3RTaXplKCk7CkBAIC0xMDk5LDE0ICsxMTE1LDE0IEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bUNvbnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGNvbnN0YW50
Tm9kCiAgICAgICAgICAgICBjYXNlIEVPcEFkZDoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RB
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsv
LyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKyByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BT
dWI6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltv
YmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisg
ICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQog
ICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ld
IC0gcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTExMTYsMTMgKzExMzIsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29u
c3RhbnRVbmlvbjo6Zm9sZChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogY29uc3RhbnROb2QK
ICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CiAgICAgICAgICAgICAgICAg
dGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAg
ICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAg
ICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICogcmlnaHRVbmlvbkFycmF5W2ld
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAgaWYgKGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCB8fCBub2RlLT5nZXRCYXNpY1R5cGUoKSAhPSBF
YnRGbG9hdCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJl
IGRvbmUgZm9yIG1hdHJpeCBtdWx0aXBseSIpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNh
bm5vdCBiZSBkb25lIGZvciBtYXRyaXggbXVsdGlwbHkiLCBnZXRMaW5lKCkpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ey8vIHN1cHBvcnQgTVNWQysrNi4wCkBAIC0xMTQxLDExICsxMTU3LDExIEBAIFRJbnRlcm1UeXBl
ZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQq
IGNvbnN0YW50Tm9kCiAgICAgICAgICAgICBjYXNlIEVPcERpdjoKICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAg
ICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0VW5pb25BcnJheVtpXSA9PSAw
LjBmKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50
IGZvbGRpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRp
bmciLCBnZXRMaW5lKCkpOwogICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5z
ZXRGQ29uc3QodW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSA8IDAgPyAtRkxUX01BWCA6IEZMVF9N
QVgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXS5zZXRGQ29uc3QodW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSAvIHJpZ2h0VW5p
b25BcnJheVtpXS5nZXRGQ29uc3QoKSk7CkBAIC0xMTUzLDEzICsxMTY5LDEzIEBAIFRJbnRlcm1U
eXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQqIGNvbnN0YW50Tm9kCiAKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAg
ICAgIGlmIChyaWdodFVuaW9uQXJyYXlbaV0gPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBi
eSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CisgICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgIkRpdmlkZSBieSB6ZXJv
IGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KElOVF9NQVgpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJ
Q29uc3QodW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAvIHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJ
Q29uc3QoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgZm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgXCIvXCIi
KTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFs
RXJyb3IsICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIsIGdldExp
bmUoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTExNjgsNyArMTE4NCw3IEBAIFRJbnRlcm1U
eXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQqIGNvbnN0YW50Tm9kCiAKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3Ig
bWF0cml4IHRpbWVzIHZlY3RvciIpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBi
ZSBkb25lIGZvciBtYXRyaXggdGltZXMgdmVjdG9yIiwgZ2V0TGluZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRl
bXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bZ2V0Tm9taW5hbFNpemUoKV07CkBAIC0x
MTg5LDcgKzEyMDUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZAogCiAgICAgICAgICAgICBj
YXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgogICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJDb25zdGFu
dCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0cml4Iik7CisgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1lcyBtYXRy
aXgiLCBnZXRMaW5lKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTEyMDcsNyArMTIyMyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNv
bnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGNvbnN0YW50Tm9k
CiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVu
IGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5
CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmpl
Y3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAg
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAg
ICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICYm
IHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMjE1LDcgKzEyMzEsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFu
dFVuaW9uOjpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZAogICAg
ICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBw
b3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAg
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIHx8IHJpZ2h0
VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMjIzLDcgKzEyMzksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZAogICAgICAgICAg
ICAgY2FzZSBFT3BMb2dpY2FsWG9yOgogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBv
cnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6IHRlbXBDb25z
dEFycmF5W2ldLnNldEJDb25zdCgodW5pb25BcnJheVtpXSA9PSByaWdodFVuaW9uQXJyYXlbaV0p
ID8gZmFsc2UgOiB0cnVlKTsgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OiBhc3NlcnQoZmFs
c2UgJiYgIkRlZmF1bHQgbWlzc2luZyIpOwpAQCAtMTI2OSw3ICsxMjg1LDcgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBl
ZCogY29uc3RhbnROb2QKICAgICAgICAgICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0dXJl
KG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwgdW5pb25BcnJh
eSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dW5pb25BcnJheVtpXSAhPSByaWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMjk1LDcgKzEzMTEsNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKFRPcGVyYXRvciBvcCwg
VEludGVybVR5cGVkKiBjb25zdGFudE5vZAogICAgICAgICAgICAgICAgICAgICBpZiAoQ29tcGFy
ZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCks
IHVuaW9uQXJyYXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMxNyw3
ICsxMzMzLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZChUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogY29uc3RhbnROb2QKICAgICAgICAgICAgICAgICByZXR1
cm4gdGVtcE5vZGU7CiAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJJbnZh
bGlkIG9wZXJhdG9yIGZvciBjb25zdGFudCBmb2xkaW5nIik7CisgICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiSW52YWxpZCBvcGVyYXRv
ciBmb3IgY29uc3RhbnQgZm9sZGluZyIsIGdldExpbmUoKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgdGVtcE5vZGUgPSBuZXcgVEludGVybUNvbnN0YW50
VW5pb24odGVtcENvbnN0QXJyYXksIHJldHVyblR5cGUpOwpAQCAtMTMzMCwxNCArMTM0NiwxNCBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKFRPcGVyYXRvciBvcCwg
VEludGVybVR5cGVkKiBjb25zdGFudE5vZAogICAgICAgICAvLwogICAgICAgICBUSW50ZXJtQ29u
c3RhbnRVbmlvbiAqbmV3Tm9kZSA9IDA7CiAgICAgICAgIENvbnN0YW50VW5pb24qIHRlbXBDb25z
dEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBzd2l0Y2gob3ApIHsKICAgICAg
ICAgICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRGbG9hdDogdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KC11bmlvbkFycmF5W2ldLmdl
dEZDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDog
ICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QoLXVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkp
OyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFu
dCIsIGdldExpbmUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzQ1
LDcgKzEzNjEsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZAogICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRCb29sOiAgdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNvbnN0KCF1bmlvbkFy
cmF5W2ldLmdldEJDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xk
ZWQgaW50byBjb25zdGFudCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3Qg
Zm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRMaW5lKCkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTM2MSw2NCArMTM3Nyw2NSBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1D
b25zdGFudFVuaW9uOjpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5v
ZAogCiBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OnByb21vdGVDb25zdGFudFVuaW9uKFRC
YXNpY1R5cGUgcHJvbW90ZVRvLCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKLSAgICBz
aXplX3Qgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgQ29uc3Rh
bnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsK
KyAgICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAKICAgICBD
b25zdGFudFVuaW9uICpsZWZ0VW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW3NpemVdOwog
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBmb3IgKGludCBp
PTA7IGkgPCBzaXplOyBpKyspIHsKIAogICAgICAgICBzd2l0Y2ggKHByb21vdGVUbykgewogICAg
ICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidElu
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChz
dGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9v
bDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChz
dGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0
YXRpY19jYXN0PGZsb2F0PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZs
b2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0
KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkp
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0gPSByaWdodFVu
aW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHBy
b21vdGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9kZS0+Z2V0TGluZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVu
aW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0SUNvbnN0KHN0
YXRpY19jYXN0PGludD4oaSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25B
cnJheVtpXSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2Rl
LT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihyaWdodFVu
aW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+
Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihpKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5p
b25BcnJheVtpXS5nZXRGQ29uc3QoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUo
KSwgIkNhbm5vdCBwcm9tb3RlIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIsIG5vZGUt
PmdldExpbmUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEJv
b2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBl
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0SUNvbnN0KHN0YXRp
Y19jYXN0PGludD4oaSkpICE9IDApOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0QkNvbnN0KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAhPSAwKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRC
Q29uc3Qobm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNv
bnN0KG5vZGUtPmdldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4oaSkpICE9IDAuMGYpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KHJpZ2h0VW5p
b25BcnJheVtpXS5nZXRGQ29uc3QoKSAhPSAwLjBmKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5n
ZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUi
LCBub2RlLT5nZXRMaW5lKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50
ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiSW5jb3JyZWN0IGRhdGEgdHlwZSBmb3VuZCIp
OworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgIkluY29ycmVjdCBkYXRhIHR5cGUgZm91bmQiLCBub2RlLT5nZXRMaW5lKCkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcAppbmRleCAxMGE0NTFjLi4y
MDZmNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
T3V0cHV0R0xTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L091dHB1dEdMU0wuY3BwCkBAIC0xOSwxNyArMTksMyBAQCBib29sIFRPdXRwdXRHTFNMOjp3cml0
ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24pCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQot
Ci12b2lkIFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQotewot
ICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKLQotICAgIGlmIChub2RlLT5nZXRT
eW1ib2woKSA9PSAiZ2xfRnJhZ0RlcHRoRVhUIikKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiZ2xf
RnJhZ0RlcHRoIjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgVE91dHB1dEdMU0xC
YXNlOjp2aXNpdFN5bWJvbChub2RlKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAppbmRleCBmYTY4YWM4Li4xOTliNmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0
R0xTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRH
TFNMLmgKQEAgLTIwLDcgKzIwLDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbik7Ci0gICAgdmlydHVhbCB2
b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpOwogfTsKIAogI2VuZGlmICAvLyBD
Uk9TU0NPTVBJTEVSR0xTTF9PVVRQVVRHTFNMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAppbmRleCBkNjc3Yzc1
Li4xYjlhMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvT3V0cHV0R0xTTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAKQEAgLTc5LDkgKzc5LDI1IEBAIHZvaWQgVE91dHB1
dEdMU0xCYXNlOjp3cml0ZVZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSYgdHlwZSkKICAgICBpZiAo
KHF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKSkK
ICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCkgPDwgIiAiOwogICAgIC8v
IERlY2xhcmUgdGhlIHN0cnVjdCBpZiB3ZSBoYXZlIG5vdCBkb25lIHNvIGFscmVhZHkuCi0gICAg
aWYgKCh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYgIXN0cnVjdERlY2xhcmVk
KHR5cGUuZ2V0U3RydWN0KCkpKQorICAgIGlmICgodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRT
dHJ1Y3QpICYmCisgICAgICAgIChtRGVjbGFyZWRTdHJ1Y3RzLmZpbmQodHlwZS5nZXRUeXBlTmFt
ZSgpKSA9PSBtRGVjbGFyZWRTdHJ1Y3RzLmVuZCgpKSkKICAgICB7Ci0gICAgICAgIGRlY2xhcmVT
dHJ1Y3QodHlwZS5nZXRTdHJ1Y3QoKSk7CisgICAgICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFz
aE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAie1xuIjsKKyAgICAgICAgY29uc3QgVFR5cGVM
aXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBBU1NFUlQoc3RydWN0
dXJlICE9IE5VTEwpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+
c2l6ZSgpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5
cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKKyAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUg
IT0gTlVMTCk7CisgICAgICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZFR5
cGUtPmdldFByZWNpc2lvbigpKSkKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAg
ICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKCpmaWVsZFR5cGUpIDw8ICIgIiA8PCBoYXNoTmFtZShm
aWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpKTsKKyAgICAgICAgICAgIGlmIChmaWVsZFR5cGUtPmlz
QXJyYXkoKSkKKyAgICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cygqZmllbGRUeXBl
KTsKKyAgICAgICAgICAgIG91dCA8PCAiO1xuIjsKKyAgICAgICAgfQorICAgICAgICBvdXQgPDwg
In0iOworICAgICAgICBtRGVjbGFyZWRTdHJ1Y3RzLmluc2VydCh0eXBlLmdldFR5cGVOYW1lKCkp
OwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTIyLDI1ICsxMzgsMjQgQEAgY29uc3QgQ29u
c3RhbnRVbmlvbiogVE91dHB1dEdMU0xCYXNlOjp3cml0ZUNvbnN0YW50VW5pb24oY29uc3QgVFR5
cGUmIHR5cGUsCiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCiAg
ICAgewotICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVj
dCgpOwotICAgICAgICBvdXQgPDwgaGFzaE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICIoIjsK
LQotICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPDwgIigiOworICAgICAg
ICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3Qg
VFR5cGUqIGZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOworICAgICAgICAgICAgY29uc3Qg
VFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwogICAgICAgICAgICAgQVNT
RVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKICAgICAgICAgICAgIHBDb25zdFVuaW9uID0gd3JpdGVD
b25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIHBDb25zdFVuaW9uKTsKLSAgICAgICAgICAgIGlmIChp
ICE9IGZpZWxkcy5zaXplKCkgLSAxKSBvdXQgPDwgIiwgIjsKKyAgICAgICAgICAgIGlmIChpICE9
IHN0cnVjdHVyZS0+c2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CiAgICAgICAgIH0KICAgICAgICAg
b3V0IDw8ICIpIjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgc2l6ZV90IHNpemUg
PSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVj
dFNpemUoKTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgaWYg
KHdyaXRlVHlwZSkgb3V0IDw8IGdldFR5cGVOYW1lKHR5cGUpIDw8ICIoIjsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2ksICsrcENvbnN0VW5pb24pCisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQogICAgICAgICB7CiAg
ICAgICAgICAgICBzd2l0Y2ggKHBDb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICB7
CkBAIC0yNDUsMTggKzI2MCwxMiBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnko
VmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkqIG5vZGUpCiAgICAgICAgIGNhc2UgRU9wSW5kZXhE
aXJlY3RTdHJ1Y3Q6CiAgICAgICAgICAgICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAvLyBIZXJlIHdlIGFyZSB3cml0aW5nIG91dCAiZm9vLmJh
ciIsIHdoZXJlICJmb28iIGlzIHN0cnVjdAotICAgICAgICAgICAgICAgIC8vIGFuZCAiYmFyIiBp
cyBmaWVsZC4gSW4gQVNULCBpdCBpcyByZXByZXNlbnRlZCBhcyBhIGJpbmFyeQotICAgICAgICAg
ICAgICAgIC8vIG5vZGUsIHdoZXJlIGxlZnQgY2hpbGQgcmVwcmVzZW50cyAiZm9vIiBhbmQgcmln
aHQgY2hpbGQgImJhciIuCi0gICAgICAgICAgICAgICAgLy8gVGhlIG5vZGUgaXRzZWxmIHJlcHJl
c2VudHMgIi4iLiBUaGUgc3RydWN0IGZpZWxkICJiYXIiIGlzCi0gICAgICAgICAgICAgICAgLy8g
YWN0dWFsbHkgc3RvcmVkIGFzIGFuIGluZGV4IGludG8gVFN0cnVjdHVyZTo6ZmllbGRzLgogICAg
ICAgICAgICAgICAgIG91dCA8PCAiLiI7Ci0gICAgICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24qIGluZGV4ID0gbm9kZS0+
Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
VEZpZWxkKiBmaWVsZCA9IHN0cnVjdHVyZS0+ZmllbGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07
CisgICAgICAgICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAorICAgICAgICAgICAgICAg
IFRTdHJpbmcgZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOwogCi0g
ICAgICAgICAgICAgICAgVFN0cmluZyBmaWVsZE5hbWUgPSBmaWVsZC0+bmFtZSgpOwotICAgICAg
ICAgICAgICAgIGlmICghbVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKHN0cnVjdHVyZS0+bmFtZSgp
KSkKKyAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgc3RydWN0VHlwZSA9IG5vZGUtPmdldExl
ZnQoKS0+Z2V0VHlwZSgpOworICAgICAgICAgICAgICAgIGlmICghbVN5bWJvbFRhYmxlLmZpbmRC
dWlsdEluKHN0cnVjdFR5cGUuZ2V0VHlwZU5hbWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGZp
ZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CiAKICAgICAgICAgICAgICAgICBvdXQgPDwg
ZmllbGROYW1lOwpAQCAtNTg3LDcgKzU5Niw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNp
dEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUo
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1
Y3QpOwotICAgICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5u
YW1lKCkpIDw8ICIoIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRU
eXBlTmFtZSgpKSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh2
aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzU2LDcgKzc2NSw3IEBAIFRTdHJp
bmcgVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb25zdCBUVHlwZSYgdHlwZSkKICAgICBl
bHNlCiAgICAgewogICAgICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3Qp
Ci0gICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKTsK
KyAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBvdXQgPDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAgIH0K
QEAgLTc4OSwyOSArNzk4LDMgQEAgVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlv
bk5hbWUoY29uc3QgVFN0cmluZyYgbWFuZ2xlZF9uYW1lKQogICAgICAgICByZXR1cm4gbmFtZTsK
ICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9Ci0KLWJvb2wgVE91dHB1dEdMU0xCYXNlOjpz
dHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmluZChzdHJ1Y3R1cmUtPm5hbWUoKSkgIT0gbURlY2xh
cmVkU3RydWN0cy5lbmQoKTsKLX0KLQotdm9pZCBUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVTdHJ1
Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIFRJbmZvU2lua0Jhc2UmIG91
dCA9IG9ialNpbmsoKTsKLQotICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUoc3RydWN0
dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOwotICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHN0
cnVjdHVyZS0+ZmllbGRzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6
ZSgpOyArK2kpCi0gICAgewotICAgICAgICBjb25zdCBURmllbGQqIGZpZWxkID0gZmllbGRzW2ld
OwotICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZC0+dHlwZSgpLT5nZXRQ
cmVjaXNpb24oKSkpCi0gICAgICAgICAgICBvdXQgPDwgIiAiOwotICAgICAgICBvdXQgPDwgZ2V0
VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZC0+bmFtZSgp
KTsKLSAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKLSAgICAgICAgICAgIG91
dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKLSAgICAgICAgb3V0IDw8ICI7XG4i
OwotICAgIH0KLSAgICBvdXQgPDwgIn0iOwotCi0gICAgbURlY2xhcmVkU3RydWN0cy5pbnNlcnQo
c3RydWN0dXJlLT5uYW1lKCkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaAppbmRleCBkZjRhZDY4Li5jOWY3MmQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xT
TEJhc2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0
R0xTTEJhc2UuaApAQCAtNTIsOSArNTIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgVFN0cmluZyBoYXNo
RnVuY3Rpb25OYW1lKGNvbnN0IFRTdHJpbmcmIG1hbmdsZWRfbmFtZSk7CiAKIHByaXZhdGU6Ci0g
ICAgYm9vbCBzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0
OwotICAgIHZvaWQgZGVjbGFyZVN0cnVjdChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpOwot
CiAgICAgVEluZm9TaW5rQmFzZSYgbU9ialNpbms7CiAgICAgYm9vbCBtRGVjbGFyaW5nVmFyaWFi
bGVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
T3V0cHV0SExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0
cHV0SExTTC5jcHAKaW5kZXggY2JjNzgzNC4uNjA2NzhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcApAQCAtNTIsNyArNTIs
NiBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvbnRleHQpIDogVElu
dGVybVRyYXZlcnNlcih0cnVlLCB0cnVlLCB0cgogICAgIG1Vc2VzUG9pbnRDb29yZCA9IGZhbHNl
OwogICAgIG1Vc2VzRnJvbnRGYWNpbmcgPSBmYWxzZTsKICAgICBtVXNlc1BvaW50U2l6ZSA9IGZh
bHNlOwotICAgIG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7CiAgICAgbVVzZXNYb3IgPSBmYWxzZTsK
ICAgICBtVXNlc01vZDEgPSBmYWxzZTsKICAgICBtVXNlc01vZDJ2ID0gZmFsc2U7CkBAIC0xOTAs
MTEgKzE4OSw2IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgb3V0IDw8ICJc
biIKICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0ge2Zsb2F0NCgw
LCAwLCAwLCAwKX07XG4iOwogCi0gICAgICAgIGlmIChtVXNlc0ZyYWdEZXB0aCkKLSAgICAgICAg
ewotICAgICAgICAgICAgb3V0IDw8ICJzdGF0aWMgZmxvYXQgZ2xfRGVwdGggPSAwLjA7XG4iOwot
ICAgICAgICB9Ci0KICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkKQogICAgICAgICB7CiAgICAg
ICAgICAgICBvdXQgPDwgInN0YXRpYyBmbG9hdDQgZ2xfRnJhZ0Nvb3JkID0gZmxvYXQ0KDAsIDAs
IDAsIDApO1xuIjsKQEAgLTUxNSwxMSArNTA5LDYgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIo
KQogICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19QT0lOVF9TSVpFXG4iOwogICAgIH0K
IAotICAgIGlmIChtVXNlc0ZyYWdEZXB0aCkKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiI2RlZmlu
ZSBHTF9VU0VTX0ZSQUdfREVQVEhcbiI7Ci0gICAgfQotCiAgICAgaWYgKG1Vc2VzRGVwdGhSYW5n
ZSkKICAgICB7CiAgICAgICAgIG91dCA8PCAic3RydWN0IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJz
XG4iCkBAIC04NTQsMTEgKzg0Myw2IEBAIHZvaWQgT3V0cHV0SExTTDo6dmlzaXRTeW1ib2woVElu
dGVybVN5bWJvbCAqbm9kZSkKICAgICAgICAgbVVzZXNQb2ludFNpemUgPSB0cnVlOwogICAgICAg
ICBvdXQgPDwgbmFtZTsKICAgICB9Ci0gICAgZWxzZSBpZiAobmFtZSA9PSAiZ2xfRnJhZ0RlcHRo
RVhUIikKLSAgICB7Ci0gICAgICAgIG1Vc2VzRnJhZ0RlcHRoID0gdHJ1ZTsKLSAgICAgICAgb3V0
IDw8ICJnbF9EZXB0aCI7Ci0gICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbGlmaWVyID0gbm9kZS0+Z2V0UXVhbGlmaWVyKCk7CkBAIC05NjgsMTAgKzk1Miw3IEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkg
Km5vZGUpCiAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgogICAgICAgICBpZiAodmlz
aXQgPT0gSW5WaXNpdCkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSog
c3RydWN0dXJlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAg
ICAgICAgICBjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdo
dCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmll
bGQgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwotICAgICAgICAg
ICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVm
dCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQo
bm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUo
KSk7CiAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtOTkzLDcgKzk3
NCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1C
aW5hcnkgKm5vZGUpCiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+
Z2V0SUNvbnN0KDApOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkgPSBlbGVtZW50LT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGkpCiAgICAgICAgICAgICAgICAgICAgICAgICB7CkBAIC0xMDQwLDE4
ICsxMDIxLDE4IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1CaW5hcnkgKm5vZGUpCiAgICAgICAgICAgICAgICAgb3V0IDw8ICIhKCI7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdl
dExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAgICAgIGNv
bnN0IFRUeXBlTGlzdCAqZmllbGRzID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCk7CiAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUo
KTsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUo
KTsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmll
bGQgPSBmaWVsZHNbaV07CisgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9
ICgqZmllbGRzKVtpXS50eXBlOwogCiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50
cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVGaWVs
ZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSkgKyAiID09ICI7Cisg
ICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGRUeXBlLT5nZXRG
aWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpICsgIiA9PSAiOwogICAgICAg
ICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAg
ICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExl
ZnQoKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVG
aWVsZChmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUo
KSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoaSA8IGZpZWxkcy5zaXplKCkgLSAxKQorICAgICAg
ICAgICAgICAgIGlmIChpIDwgZmllbGRzLT5zaXplKCkgLSAxKQogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgJiYgIjsKICAgICAgICAgICAgICAgICB9CkBA
IC0xMjU3LDcgKzEyMzgsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAobUluc2lkZUZ1bmN0aW9uKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1
dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOworICAgICAgICAgICAg
ICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKICAgICAgICAgICAgICAg
ICBvdXQgPDwgIntcbiI7CiAKICAgICAgICAgICAgICAgICBtU2NvcGVEZXB0aCsrOwpAQCAtMTI3
NCw3ICsxMjU1LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIAogICAgICAgICAgICAgZm9yIChUSW50ZXJtU2Vx
dWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgc2l0ICE9
IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHNpdCsrKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRMaW5lKCkuZmlyc3RfbGlu
ZSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZSgoKnNpdCktPmdldExpbmUo
KSk7CiAKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMoKnNpdCk7CiAKQEAgLTEy
ODMsNyArMTI2NCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAKICAgICAgICAgICAgIGlmIChtSW5zaWRlRnVu
Y3Rpb24pCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2
ZShub2RlLT5nZXRMaW5lKCkubGFzdF9saW5lKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldEVuZExpbmUoKSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ9
XG4iOwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgtLTsKQEAgLTEzMDIsNyArMTI4Myw3
IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1B
Z2dyZWdhdGUgKm5vZGUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKHZhcmlh
YmxlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJsZS0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1
Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKSwgTlVMTCk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHZhcmlhYmxlLT5nZXRUeXBlKCksIHNjb3Bl
ZFN0cnVjdCh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5nZXRBc1N5bWJv
bE5vZGUoKSB8fCB2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpICE9ICIi
KSAgIC8vIFZhcmlhYmxlIGRlY2xhcmF0aW9uCkBAIC0xNDIwLDcgKzE0MDEsNyBAQCBib29sIE91
dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+
Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3Ry
dWN0KHN5bWJvbC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkpLCBOVUxMKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29w
ZWRTdHJ1Y3Qoc3ltYm9sLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksIE5VTEwpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3Ry
aW5nKHN5bWJvbCk7CkBAIC0xNjY5LDggKzE2NTAsOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0
QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogICAgICAgICBv
dXRwdXRUcmlwbGV0KHZpc2l0LCAibWF0NCgiLCAiLCAiLCAiKSIpOwogICAgICAgICBicmVhazsK
ICAgICAgIGNhc2UgRU9wQ29uc3RydWN0U3RydWN0OgotICAgICAgICBhZGRDb25zdHJ1Y3Rvcihu
b2RlLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdChub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkt
Pm5hbWUoKSksICZub2RlLT5nZXRTZXF1ZW5jZSgpKTsKLSAgICAgICAgb3V0cHV0VHJpcGxldCh2
aXNpdCwgc3RydWN0TG9va3VwKG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKSAr
ICJfY3RvcigiLCAiLCAiLCAiKSIpOworICAgICAgICBhZGRDb25zdHJ1Y3Rvcihub2RlLT5nZXRU
eXBlKCksIHNjb3BlZFN0cnVjdChub2RlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksICZub2Rl
LT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgc3RydWN0TG9v
a3VwKG5vZGUtPmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSArICJfY3RvcigiLCAiLCAiLCAiKSIp
OwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wTGVzc1RoYW46ICAgICAgICAgb3V0cHV0
VHJpcGxldCh2aXNpdCwgIigiLCAiIDwgIiwgIikiKTsgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjogICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIs
ICIgPiAiLCAiKSIpOyAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzYwLDcgKzE3NDEsNyBA
QCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2Vs
ZWN0aW9uICpub2RlKQogCiAgICAgICAgIG91dCA8PCAiKVxuIjsKICAgICAgICAgCi0gICAgICAg
IG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOworICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CiAgICAgICAgIG91dCA8PCAi
e1xuIjsKIAogICAgICAgICBpZiAobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpCkBAIC0xNzY4LDIwICsx
NzQ5LDIwIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJ
bnRlcm1TZWxlY3Rpb24gKm5vZGUpCiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9k
ZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CisgICAgICAgIG91dHB1dExpbmVEaXJl
Y3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKICAgICAgICAgb3V0IDw8ICI7XG59XG4iOwogCiAgICAg
ICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91
dCA8PCAiZWxzZVxuIjsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKKyAgICAgICAgICAgIG91dHB1
dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkpOwogICAgICAg
ICAgICAgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5v
ZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOworICAgICAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CiAg
ICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0RmFsc2VCbG9jaygpKTsKIAot
ICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdl
dExpbmUoKS5maXJzdF9saW5lKTsKKyAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9k
ZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkpOwogICAgICAgICAgICAgb3V0IDw8ICI7XG59
XG4iOwogICAgICAgICB9CiAgICAgfQpAQCAtMTgxNCw3ICsxNzk1LDcgQEAgYm9vbCBPdXRwdXRI
TFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQogICAgIHsKICAg
ICAgICAgb3V0IDw8ICJ7ZG9cbiI7CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2Rl
LT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9k
ZS0+Z2V0TGluZSgpKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KICAgICBlbHNlCkBA
IC0xODQyLDcgKzE4MjMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNp
dCwgVEludGVybUxvb3AgKm5vZGUpCiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAK
LSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7
CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKICAgICAgICAg
b3V0IDw8ICJ7XG4iOwogICAgIH0KIApAQCAtMTg1MSwxMiArMTgzMiwxMiBAQCBib29sIE91dHB1
dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKm5vZGUpCiAgICAgICAg
IHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRCb2R5KCkpOwogICAgIH0KIAotICAgIG91dHB1
dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOworICAgIG91dHB1dExp
bmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKICAgICBvdXQgPDwgIjt9XG4iOwogCiAgICAg
aWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUpCiAgICAgewotICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlvbigpLT5nZXRMaW5lKCkuZmlyc3RfbGlu
ZSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0Q29uZGl0aW9uKCktPmdl
dExpbmUoKSk7CiAgICAgICAgIG91dCA8PCAid2hpbGUoXG4iOwogCiAgICAgICAgIG5vZGUtPmdl
dENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTE5OTYsNyArMTk3Nyw3IEBAIGJvb2wg
T3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW50ZXJtTG9vcCAqbm9kZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50
ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzeW1ib2w7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjAxOCw3ICsx
OTk5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbnRlcm1Mb29w
ICpub2RlKQogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAg
ICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOworICAgICAg
ICAgICAgICAgICAgICBsaW1pdCA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpWzBd
LmdldElDb25zdCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMjAzOSw3ICsyMDIwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVM
b29wKFRJbnRlcm1Mb29wICpub2RlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlm
IChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21p
bmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBp
bnQgdmFsdWUgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOworICAgICAgICAgICAgICAgICAgICBp
bnQgdmFsdWUgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3Qo
KTsKIAogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAg
ICB7CkBAIC0yMTI4LDcgKzIxMDksNyBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2
ZUxvb3AoVEludGVybUxvb3AgKm5vZGUpCiAgICAgICAgICAgICAgICAgb3V0IDw8IGluY3JlbWVu
dDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGlu
ZSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkp
OwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5nZXRCb2R5KCkpCkBAIC0yMTM2LDcgKzIxMTcsNyBAQCBib29sIE91dHB1dEhMU0w6Omhh
bmRsZUV4Y2Vzc2l2ZUxvb3AoVEludGVybUxvb3AgKm5vZGUpCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3Rf
bGluZSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5l
KCkpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAgICAgICAgICAgICBp
ZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjIzMiwyMyArMjIxMywyMiBAQCBUU3RyaW5nIE91
dHB1dEhMU0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpCiB7CiAgICAgaWYgKHR5cGUu
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgY29uc3QgVFN0cmlu
ZyYgdHlwZU5hbWUgPSB0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCk7Ci0gICAgICAgIGlmICh0eXBl
TmFtZSAhPSAiIikKKyAgICAgICAgaWYgKHR5cGUuZ2V0VHlwZU5hbWUoKSAhPSAiIikKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CisgICAgICAg
ICAgICByZXR1cm4gc3RydWN0TG9va3VwKHR5cGUuZ2V0VHlwZU5hbWUoKSk7CiAgICAgICAgIH0K
ICAgICAgICAgZWxzZSAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBsYWNlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0
U3RydWN0KCktPmZpZWxkcygpOworICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0ICZmaWVsZHMg
PSAqdHlwZS5nZXRTdHJ1Y3QoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcgPSAic3Ry
dWN0XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ld
OworICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZCA9ICpmaWVsZHNbaV0udHlwZTsK
IAotICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKCpmaWVsZC0+
dHlwZSgpKSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsgYXJyYXlTdHJpbmcoKmZp
ZWxkLT50eXBlKCkpICsgIjtcbiI7CisgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgICAgIiAr
IHR5cGVTdHJpbmcoZmllbGQpICsgIiAiICsgZGVjb3JhdGUoZmllbGQuZ2V0RmllbGROYW1lKCkp
ICsgYXJyYXlTdHJpbmcoZmllbGQpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIHN0cmluZyArPSAifSAiOwpAQCAtMjMyNCwxMiArMjMwNCwxMSBAQCBUU3RyaW5nIE91dHB1
dEhMU0w6OmluaXRpYWxpemVyKGNvbnN0IFRUeXBlICZ0eXBlKQogewogICAgIFRTdHJpbmcgc3Ry
aW5nOwogCi0gICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKLSAgICBmb3Ig
KHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBjb21wb25lbnQrKykKKyAg
ICBmb3IgKGludCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNpemUo
KTsgY29tcG9uZW50KyspCiAgICAgewogICAgICAgICBzdHJpbmcgKz0gIjAiOwogCi0gICAgICAg
IGlmIChjb21wb25lbnQgKyAxIDwgc2l6ZSkKKyAgICAgICAgaWYgKGNvbXBvbmVudCA8IHR5cGUu
Z2V0T2JqZWN0U2l6ZSgpIC0gMSkKICAgICAgICAgewogICAgICAgICAgICAgc3RyaW5nICs9ICIs
ICI7CiAgICAgICAgIH0KQEAgLTIzNjgsMTMgKzIzNDcsMTMgQEAgdm9pZCBPdXRwdXRITFNMOjph
ZGRDb25zdHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmbmFtZSwgY29u
c3QgVEkKICAgICAgICAgc3RydWN0dXJlICs9ICJzdHJ1Y3QgIiArIGRlY29yYXRlKG5hbWUpICsg
IlxuIgogICAgICAgICAgICAgICAgICAgICAgIntcbiI7CiAKLSAgICAgICAgY29uc3QgVEZpZWxk
TGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAgIGNvbnN0
IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CiAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CisgICAgICAgICAgICBj
b25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7CiAKLSAgICAgICAgICAgIHN0cnVj
dHVyZSArPSAiICAgICIgKyB0eXBlU3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICIgIiArIGRlY29y
YXRlRmllbGQoZmllbGQtPm5hbWUoKSwgdHlwZSkgKyBhcnJheVN0cmluZygqZmllbGQtPnR5cGUo
KSkgKyAiO1xuIjsKKyAgICAgICAgICAgIHN0cnVjdHVyZSArPSAiICAgICIgKyB0eXBlU3RyaW5n
KGZpZWxkKSArICIgIiArIGRlY29yYXRlRmllbGQoZmllbGQuZ2V0RmllbGROYW1lKCksIHR5cGUp
ICsgYXJyYXlTdHJpbmcoZmllbGQpICsgIjtcbiI7CiAgICAgICAgIH0KIAogICAgICAgICBzdHJ1
Y3R1cmUgKz0gIn07XG4iOwpAQCAtMjM4Niw3ICsyMzY1LDcgQEAgdm9pZCBPdXRwdXRITFNMOjph
ZGRDb25zdHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmbmFtZSwgY29u
c3QgVEkKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXpl
KCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY3RvclBhcmFtZXRlcnMucHVzaF9iYWNr
KCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgICAgICBjdG9yUGFyYW1ldGVycy5wdXNoX2Jh
Y2soKmZpZWxkc1tpXS50eXBlKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChwYXJh
bWV0ZXJzKQpAQCAtMjQ3OSwzMCArMjQ1OCwyNyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0
cnVjdG9yKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nICZuYW1lLCBjb25zdCBUSQog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBzaXplX3QgcmVtYWluaW5nQ29tcG9uZW50
cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKLSAgICAgICAgc2l6ZV90IHBhcmFtZXRlcklu
ZGV4ID0gMDsKKyAgICAgICAgaW50IHJlbWFpbmluZ0NvbXBvbmVudHMgPSBjdG9yVHlwZS5nZXRP
YmplY3RTaXplKCk7CisgICAgICAgIGludCBwYXJhbWV0ZXJJbmRleCA9IDA7CiAKICAgICAgICAg
d2hpbGUgKHJlbWFpbmluZ0NvbXBvbmVudHMgPiAwKQogICAgICAgICB7CiAgICAgICAgICAgICBj
b25zdCBUVHlwZSAmcGFyYW1ldGVyID0gY3RvclBhcmFtZXRlcnNbcGFyYW1ldGVySW5kZXhdOwot
ICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHBhcmFtZXRlclNpemUgPSBwYXJhbWV0ZXIuZ2V0T2Jq
ZWN0U2l6ZSgpOwotICAgICAgICAgICAgYm9vbCBtb3JlUGFyYW1ldGVycyA9IHBhcmFtZXRlcklu
ZGV4ICsgMSA8IGN0b3JQYXJhbWV0ZXJzLnNpemUoKTsKKyAgICAgICAgICAgIGJvb2wgbW9yZVBh
cmFtZXRlcnMgPSBwYXJhbWV0ZXJJbmRleCA8IChpbnQpY3RvclBhcmFtZXRlcnMuc2l6ZSgpIC0g
MTsKIAogICAgICAgICAgICAgY29uc3RydWN0b3IgKz0gIngiICsgc3RyKHBhcmFtZXRlckluZGV4
KTsKIAogICAgICAgICAgICAgaWYgKHBhcmFtZXRlci5pc1NjYWxhcigpKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBv
bmVudHMpOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVy
U2l6ZTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRlci5n
ZXRPYmplY3RTaXplKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChwYXJh
bWV0ZXIuaXNWZWN0b3IoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocmVt
YWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKQorICAg
ICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFtZXRlci5nZXRPYmpl
Y3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsK
LSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXpl
OworICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRlci5n
ZXRPYmplY3RTaXplKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtZXRlci5n
ZXROb21pbmFsU2l6ZSgpKSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChyZW1haW5pbmdDb21w
b25lbnRzIDwgcGFyYW1ldGVyLmdldE5vbWluYWxTaXplKCkpCiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlbWFpbmluZ0NvbXBvbmVudHMpCiAgICAgICAg
ICAgICAgICAgICAgIHsKQEAgLTI1MTksMTAgKzI0OTUsOSBAQCB2b2lkIE91dHB1dEhMU0w6OmFk
ZENvbnN0cnVjdG9yKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nICZuYW1lLCBjb25z
dCBUSQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocGFyYW1ldGVyLmlzTWF0
cml4KCkgfHwgcGFyYW1ldGVyLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIEFTU0VSVChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFtZXRlclNpemUgfHwgbW9y
ZVBhcmFtZXRlcnMpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJl
bWFpbmluZ0NvbXBvbmVudHMpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZW1haW5pbmdDb21w
b25lbnRzID09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0g
cGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBh
cmFtZXRlci5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
IFVOUkVBQ0hBQkxFKCk7CiAKQEAgLTI1NTksMTcgKzI1MzQsMTcgQEAgY29uc3QgQ29uc3RhbnRV
bmlvbiAqT3V0cHV0SExTTDo6d3JpdGVDb25zdGFudFVuaW9uKGNvbnN0IFRUeXBlICZ0eXBlLCBj
b25zdCBDb24KIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKICAg
ICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9va3VwKHR5cGUuZ2V0VHlwZU5h
bWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZp
ZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgICAgICBjb25zdCBUVHlwZUxp
c3QgKnN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7CiAKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RydWN0dXJlLT5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOworICAgICAgICAgICAgY29u
c3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwogCiAgICAgICAgICAg
ICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIGNvbnN0VW5pb24p
OwogCi0gICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkKKyAgICAgICAgICAg
IGlmIChpICE9IHN0cnVjdHVyZS0+c2l6ZSgpIC0gMSkKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgIH0KQEAgLTI1NzksNyArMjU1NCw3IEBA
IGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ29uc3RhbnRVbmlvbihjb25z
dCBUVHlwZSAmdHlwZSwgY29uc3QgQ29uCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAg
IHNpemVfdCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGludCBzaXplID0g
dHlwZS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgIGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+IDE7
CiAgICAgICAgIAogICAgICAgICBpZiAod3JpdGVUeXBlKQpAQCAtMjU4Nyw3ICsyNTYyLDcgQEAg
Y29uc3QgQ29uc3RhbnRVbmlvbiAqT3V0cHV0SExTTDo6d3JpdGVDb25zdGFudFVuaW9uKGNvbnN0
IFRUeXBlICZ0eXBlLCBjb25zdCBDb24KICAgICAgICAgICAgIG91dCA8PCB0eXBlU3RyaW5nKHR5
cGUpIDw8ICIoIjsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrLCBjb25zdFVuaW9uKyspCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrLCBjb25zdFVuaW9uKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAoY29u
c3RVbmlvbi0+Z2V0VHlwZSgpKQogICAgICAgICAgICAgewpAQCAtMjY4MCw3ICsyNjU1LDcgQEAg
VFN0cmluZyBPdXRwdXRITFNMOjpkZWNvcmF0ZVVuaWZvcm0oY29uc3QgVFN0cmluZyAmc3RyaW5n
LCBjb25zdCBUVHlwZSAmdHlwZSkKIAogVFN0cmluZyBPdXRwdXRITFNMOjpkZWNvcmF0ZUZpZWxk
KGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnN0cnVjdHVyZSkKIHsKLSAgICBp
ZiAoc3RydWN0dXJlLmdldFN0cnVjdCgpLT5uYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikgIT0g
MCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVOYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikg
IT0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNM
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCmlu
ZGV4IDNhNGMxZGEuLmRjODQzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9PdXRwdXRITFNMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaApAQCAtOTcsNyArOTcsNiBAQCBjbGFzcyBPdXRwdXRI
TFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICBib29sIG1Vc2VzUG9pbnRDb29yZDsK
ICAgICBib29sIG1Vc2VzRnJvbnRGYWNpbmc7CiAgICAgYm9vbCBtVXNlc1BvaW50U2l6ZTsKLSAg
ICBib29sIG1Vc2VzRnJhZ0RlcHRoOwogICAgIGJvb2wgbVVzZXNYb3I7CiAgICAgYm9vbCBtVXNl
c01vZDE7CiAgICAgYm9vbCBtVXNlc01vZDJ2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAKaW5kZXggZmQyZTk1My4uMTc2OGM3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNl
SGVscGVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFy
c2VIZWxwZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC0yMiw3ICsyMiw3IEBACiAvLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVj
dG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0cwogLy8gZm9yIGEgdmVjdG9yLgog
Ly8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYg
Y29tcFN0cmluZywgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNv
dXJjZUxvYyYgbGluZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29u
c3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmIGZpZWxk
cywgaW50IGxpbmUpCiB7CiAgICAgZmllbGRzLm51bSA9IChpbnQpIGNvbXBTdHJpbmcuc2l6ZSgp
OwogICAgIGlmIChmaWVsZHMubnVtID4gNCkgewpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywg
aW50IHZlY1NpemUsIFRWCiAvLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBh
bmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBh
cnNlQ29udGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywg
aW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYg
Y29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmIGZpZWxkcywgaW50IGxpbmUp
CiB7CiAgICAgZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0g
ZmFsc2U7CkBAIC0xNzUsMjQgKzE3NSwyMiBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIo
KQogLy8KIC8vIFVzZWQgYnkgZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFy
c2luZyBlcnJvcnMuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihjb25zdCBUU291cmNl
TG9jJiBsb2MsCit2b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9yKFRTb3VyY2VMb2MgbG9jLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRv
a2VuLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQog
ewogICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7Ci0gICAgc3JjTG9jLmZpbGUgPSBsb2Mu
Zmlyc3RfZmlsZTsKLSAgICBzcmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOworICAgIERlY29k
ZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKICAgICBkaWFnbm9z
dGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQg
VFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsCit2b2lkIFRQYXJz
ZUNvbnRleHQ6Ondhcm5pbmcoVFNvdXJjZUxvYyBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNl
TG9jYXRpb24gc3JjTG9jOwotICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7Ci0gICAg
c3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKKyAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAm
c3JjTG9jLmZpbGUsICZzcmNMb2MubGluZSk7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBw
OjpEaWFnbm9zdGljczo6V0FSTklORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9j
LCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogfQpAQCAtMjA1LDcgKzIwMyw3IEBAIHZvaWQg
VFBhcnNlQ29udGV4dDo6dHJhY2UoY29uc3QgY2hhciogc3RyKQogLy8KIC8vIFNhbWUgZXJyb3Ig
bWVzc2FnZSBmb3IgYWxsIHBsYWNlcyBhc3NpZ25tZW50cyBkb24ndCB3b3JrLgogLy8KLXZvaWQg
VFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
Y2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQgVFBhcnNlQ29udGV4
dDo6YXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRT
dHJpbmcgcmlnaHQpCiB7CiAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwog
ICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiY2Fubm90IGNvbnZlcnQgZnJvbSAnIiA8PCByaWdodCA8
PCAiJyB0byAnIiA8PCBsZWZ0IDw8ICInIjsKQEAgLTIxNiw3ICsyMTQsNyBAQCB2b2lkIFRQYXJz
ZUNvbnRleHQ6OmFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIq
IG9wLCBUU3RyaW5nCiAvLwogLy8gU2FtZSBlcnJvciBtZXNzYWdlIGZvciBhbGwgcGxhY2VzIHVu
YXJ5IG9wZXJhdGlvbnMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OnVuYXJ5
T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBv
cGVyYW5kKQordm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0
IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCiB7CiAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0
cmFJbmZvU3RyZWFtOwogICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9uICciIDw8
IG9wIDw8ICInIGV4aXN0cyB0aGF0IHRha2VzIGFuIG9wZXJhbmQgb2YgdHlwZSAiIDw8IG9wZXJh
bmQgCkBAIC0yMjgsNyArMjI2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3Io
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcKIC8vCiAvLyBT
YW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkgb3BlcmF0aW9ucyBkb24ndCB3b3JrLgog
Ly8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQordm9pZCBU
UGFyc2VDb250ZXh0OjpiaW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0
cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJh
SW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBv
cCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVyYW5kIG9mIHR5cGUgJyIg
PDwgbGVmdCAKQEAgLTIzNyw3ICsyMzUsNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9w
RXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbgogICAg
IGVycm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlcyAiLCBvcCwgZXh0cmFJbmZvLmNfc3Ry
KCkpOyAKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUp
eworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKGludCBsaW5lLCBUUHJl
Y2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKXsKICAgICBpZiAoIWNoZWNrc1ByZWNp
c2lvbkVycm9ycykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHN3aXRjaCggdHlwZSApewpA
QCAtMjY1LDcgKzI2Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHJlY2lzaW9uIHByZWNpCiAvLwogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFs
dWVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50
ZXJtVHlwZWQqIG5vZGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50
IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqIG5vZGUpCiB7CiAgICAgVEludGVy
bVN5bWJvbCogc3ltTm9kZSA9IG5vZGUtPmdldEFzU3ltYm9sTm9kZSgpOwogICAgIFRJbnRlcm1C
aW5hcnkqIGJpbmFyeU5vZGUgPSBub2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsKQEAgLTI4OCw3ICsy
ODYsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdnck5vZGUtPmdl
dFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHArKykgewot
ICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRJQ29uc3QoMCk7CisgICAgICAgICAgICAgICAgICAgIGludCB2
YWx1ZSA9ICgqcCktPmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpOwogICAgICAgICAgICAgICAgICAgICBvZmZzZXRb
dmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2YWx1ZV0gPiAx
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgb2Ygc3dp
enpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKQEAgLTMxOSw2ICsz
MTcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbgogICAgIGNhc2UgRXZxQXR0cmlidXRlOiAg
ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGF0dHJpYnV0ZSI7ICAgYnJlYWs7CiAgICAg
Y2FzZSBFdnFVbmlmb3JtOiAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSB1bmlmb3Jt
IjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cVZhcnlpbmdJbjogICAgICBtZXNzYWdlID0gImNh
bid0IG1vZGlmeSBhIHZhcnlpbmciOyAgICAgIGJyZWFrOworICAgIGNhc2UgRXZxSW5wdXQ6ICAg
ICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGlucHV0IjsgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfRnJh
Z0Nvb3JkIjsgICBicmVhazsKICAgICBjYXNlIEV2cUZyb250RmFjaW5nOiAgICBtZXNzYWdlID0g
ImNhbid0IG1vZGlmeSBnbF9Gcm9udEZhY2luZyI7IGJyZWFrOwogICAgIGNhc2UgRXZxUG9pbnRD
b29yZDogICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX1BvaW50Q29vcmQiOyAgYnJlYWs7
CkBAIC00MTAsNyArNDA5LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjppbnRlZ2VyRXJyb3JDaGVj
ayhUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IGNoYXIqIHRva2VuKQogLy8KIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Z2xvYmFs
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hh
ciogdG9rZW4pCitib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soaW50IGxpbmUs
IGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbikKIHsKICAgICBpZiAoZ2xvYmFsKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjksNyArNDI4LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgZ2xvYmFsLCBj
b25zdAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9v
bCBUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2
ZWRFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiByZXNlcnZlZEVyck1zZyA9ICJyZXNlcnZlZCBidWlsdC1pbiBu
YW1lIjsKICAgICBpZiAoIXN5bWJvbFRhYmxlLmF0QnVpbHRJbkxldmVsKCkpIHsKQEAgLTQ2Nyw3
ICs0NjYsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZAogLy8KIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gY29uc3RydWN0aW9uLgogLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRl
cm1Ob2RlKiBub2RlLCBURnVuY3Rpb24mIGZ1bmN0aW9uLCBUT3BlcmF0b3Igb3AsIFRUeXBlKiB0
eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2soaW50IGxpbmUs
IFRJbnRlcm1Ob2RlKiBub2RlLCBURnVuY3Rpb24mIGZ1bmN0aW9uLCBUT3BlcmF0b3Igb3AsIFRU
eXBlKiB0eXBlKQogewogICAgICp0eXBlID0gZnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpOwogCkBA
IC00ODgsNyArNDg3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqIG4KICAgICAvLyBhZ2Fpbiwg
dGhlcmUgaXMgYW4gZXh0cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1
ZS4KICAgICAvLwogCi0gICAgc2l6ZV90IHNpemUgPSAwOworICAgIGludCBzaXplID0gMDsKICAg
ICBib29sIGNvbnN0VHlwZSA9IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9v
bCBvdmVyRnVsbCA9IGZhbHNlOwpAQCAtNTM1LDcgKzUzNCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4
dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1O
b2RlKiBuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBpZiAob3AgPT0g
RU9wQ29uc3RydWN0U3RydWN0ICYmICF0eXBlLT5pc0FycmF5KCkgJiYgaW50KHR5cGUtPmdldFN0
cnVjdCgpLT5maWVsZHMoKS5zaXplKCkpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgewor
ICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBp
bnQodHlwZS0+Z2V0U3RydWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgp
KSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJOdW1iZXIgb2YgY29uc3RydWN0b3IgcGFyYW1ldGVy
cyBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHN0cnVjdHVyZSBmaWVsZHMiLCAiY29uc3Ry
dWN0b3IiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNTY5LDcgKzU2OCw3IEBA
IGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiBuCiAvLwogLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2Yg
YW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQdWJsaWNU
eXBlJiBwdWJUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayhpbnQgbGlu
ZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1YmxpY1R5cGUmIHB1YlR5cGUp
CiB7CiAgICAgaWYgKHB1YlR5cGUudHlwZSA9PSBFYnRWb2lkKSB7CiAgICAgICAgIGVycm9yKGxp
bmUsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsIGlkZW50aWZpZXIuY19zdHIoKSk7CkBA
IC01ODMsNyArNTgyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGkKIC8vCiAvLyByZXR1cm5z
IHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0eXBl
KQorYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVElu
dGVybVR5cGVkKiB0eXBlKQogewogICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRC
b29sIHx8IHR5cGUtPmlzQXJyYXkoKSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVj
dG9yKCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3Rl
ZCIsICIiKTsKQEAgLTU5Nyw3ICs1OTYsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRJbnRlcm1UeXBlZCogdAogLy8K
IC8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250
ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGlj
VHlwZSYgcFR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsaW5l
LCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCiB7CiAgICAgaWYgKHBUeXBlLnR5cGUgIT0gRWJ0
Qm9vbCB8fCBwVHlwZS5hcnJheSB8fCBwVHlwZS5tYXRyaXggfHwgKHBUeXBlLnNpemUgPiAxKSkg
ewogICAgICAgICBlcnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9uIGV4cGVjdGVkIiwgIiIp
OwpAQCAtNjA3LDcgKzYwNiw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciog
cmVhc29uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwg
Y29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24pCiB7CiAgICAgaWYg
KHBUeXBlLnR5cGUgPT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIGlmIChjb250YWluc1NhbXBsZXIo
KnBUeXBlLnVzZXJEZWYpKSB7CkBAIC02MjYsNyArNjI1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpzYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGlj
VHlwZSYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0
UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGlj
VHlwZSYgcFR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yQ2hl
Y2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBl
LnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlp
bmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5
cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKQEAgLTY0MSw3ICs2NDAsNyBAQCBib29sIFRQYXJzZUNv
bnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFB1YgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0Ojpw
YXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlm
aWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBh
cmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwg
Y29uc3QgVFR5cGUmIHR5cGUpCiB7CiAgICAgaWYgKChxdWFsaWZpZXIgPT0gRXZxT3V0IHx8IHF1
YWxpZmllciA9PSBFdnFJbk91dCkgJiYgCiAgICAgICAgICAgICAgdHlwZS5nZXRCYXNpY1R5cGUo
KSAhPSBFYnRTdHJ1Y3QgJiYgSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKSB7CkBAIC02
NTgsOSArNjU3LDkgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb250YWluc1NhbXBsZXIoVFR5cGUm
IHR5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5
cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2Ft
cGxlcigqZmllbGRzW2ldLT50eXBlKCkpKQorICAgICAgICBUVHlwZUxpc3QmIHN0cnVjdHVyZSA9
ICp0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHN0cnVjdHVyZS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxl
cigqc3RydWN0dXJlW2ldLnR5cGUpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjczLDcgKzY3Miw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29u
dGFpbnNTYW1wbGVyKFRUeXBlJiB0eXBlKQogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3
YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXplKQor
Ym9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKGludCBsaW5lLCBUSW50ZXJt
VHlwZWQqIGV4cHIsIGludCYgc2l6ZSkKIHsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogY29u
c3RhbnQgPSBleHByLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAoY29uc3RhbnQgPT0g
MCB8fCBjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0SW50KSB7CkBAIC02ODEsNyArNjgw
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXgKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgc2l6ZSA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CisgICAgc2l6ZSA9IGNvbnN0
YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKIAogICAgIGlmIChzaXpl
IDw9IDApIHsKICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0
aXZlIGludGVnZXIiLCAiIik7CkBAIC02OTcsNyArNjk2LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVNpemVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBl
ZCogZXgKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCiAvLwotYm9v
bCBUUGFyc2VDb250ZXh0OjphcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFs
aWZpZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUHVibGljVHlwZSB0eXBlKQogewogICAgIGlmICgo
dHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKSB8fCAodHlwZS5xdWFsaWZpZXIgPT0gRXZx
Q29uc3QpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2Yg
dGhpcyBxdWFsaWZpZXIiLCBUVHlwZSh0eXBlKS5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkp
OwpAQCAtNzEyLDcgKzcxMSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlCiAvLwogLy8gUmV0
dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6
YXJyYXlUeXBlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0
eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKGludCBsaW5lLCBU
UHVibGljVHlwZSB0eXBlKQogewogICAgIC8vCiAgICAgLy8gQ2FuIHRoZSB0eXBlIGJlIGFuIGFy
cmF5PwpAQCAtNzMzLDcgKzczMiw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlUeXBlRXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlCiAvLwogLy8g
UmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OmFycmF5RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVu
dGlmaWVyLCBUUHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKK2Jvb2wgVFBh
cnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVy
LCBUUHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAg
IC8vIERvbid0IGNoZWNrIGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93
IGl0J3Mgbm90IGluIHRoZSBzeW1ib2wgdGFibGUsCkBAIC03NzgsNiArNzc3LDE2IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRT
dHJpbmcmIGlkZW50aWZpZXIsCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
CisgICAgICAgIFRUeXBlKiB0ID0gdmFyaWFibGUtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7
CisgICAgICAgIHdoaWxlICh0ICE9IDApIHsKKyAgICAgICAgICAgIGlmICh0LT5nZXRNYXhBcnJh
eVNpemUoKSA+IHR5cGUuYXJyYXlTaXplKSB7CisgICAgICAgICAgICAgICAgZXJyb3IobGluZSwg
ImhpZ2hlciBpbmRleCB2YWx1ZSBhbHJlYWR5IHVzZWQgZm9yIHRoZSBhcnJheSIsIGlkZW50aWZp
ZXIuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB0LT5zZXRBcnJheVNpemUodHlwZS5hcnJheVNpemUpOworICAgICAgICAg
ICAgdCA9IHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7CisgICAgICAgIH0KKwogICAgICAg
ICBpZiAodHlwZS5hcnJheVNpemUpCiAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNl
dEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7CiAgICAgfSAKQEAgLTc4OCwxMiArNzk3LDU2IEBA
IGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFRQ
YXJzZUNvbnRleHQ6OmFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sICpub2RlLCBUVHlwZSog
dHlwZSwgaW50IHNpemUsIGJvb2wgdXBkYXRlRmxhZywgVFNvdXJjZUxvYyBsaW5lKQoreworICAg
IGJvb2wgYnVpbHRJbiA9IGZhbHNlOworICAgIFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxl
LmZpbmQobm9kZS0+Z2V0U3ltYm9sKCksICZidWlsdEluKTsKKyAgICBpZiAoc3ltYm9sID09IDAp
IHsKKyAgICAgICAgZXJyb3IobGluZSwgIiB1bmRlY2xhcmVkIGlkZW50aWZpZXIiLCBub2RlLT5n
ZXRTeW1ib2woKS5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIFRW
YXJpYWJsZSogdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPihzeW1ib2wpOworCisg
ICAgdHlwZS0+c2V0QXJyYXlJbmZvcm1hdGlvblR5cGUodmFyaWFibGUtPmdldEFycmF5SW5mb3Jt
YXRpb25UeXBlKCkpOworICAgIHZhcmlhYmxlLT51cGRhdGVBcnJheUluZm9ybWF0aW9uVHlwZSh0
eXBlKTsKKworICAgIC8vIHNwZWNpYWwgY2FzaW5nIHRvIHRlc3QgaW5kZXggdmFsdWUgb2YgZ2xf
RnJhZ0RhdGEuIElmIHRoZSBhY2Nlc3NlZCBpbmRleCBpcyA+PSBnbF9NYXhEcmF3QnVmZmVycwor
ICAgIC8vIGl0cyBhbiBlcnJvcgorICAgIGlmIChub2RlLT5nZXRTeW1ib2woKSA9PSAiZ2xfRnJh
Z0RhdGEiKSB7CisgICAgICAgIFRTeW1ib2wqIGZyYWdEYXRhID0gc3ltYm9sVGFibGUuZmluZCgi
Z2xfTWF4RHJhd0J1ZmZlcnMiLCAmYnVpbHRJbik7CisgICAgICAgIEFTU0VSVChmcmFnRGF0YSk7
CisKKyAgICAgICAgaW50IGZyYWdEYXRhVmFsdWUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPihm
cmFnRGF0YSktPmdldENvbnN0UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICBpZiAo
ZnJhZ0RhdGFWYWx1ZSA8PSBzaXplKSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAiIiwgIlsi
LCAiZ2xfRnJhZ0RhdGEgY2FuIG9ubHkgaGF2ZSBhIG1heCBhcnJheSBzaXplIG9mIHVwIHRvIGds
X01heERyYXdCdWZmZXJzIik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIHdlIGRvbnQgd2FudCB0byB1cGRhdGUgdGhlIG1heEFycmF5U2l6ZSB3
aGVuIHRoaXMgZmxhZyBpcyBub3Qgc2V0LCB3ZSBqdXN0IHdhbnQgdG8gaW5jbHVkZSB0aGlzIAor
ICAgIC8vIG5vZGUgdHlwZSBpbiB0aGUgY2hhaW4gb2Ygbm9kZSB0eXBlcyBzbyB0aGF0IGl0cyB1
cGRhdGVkIHdoZW4gYSBoaWdoZXIgbWF4QXJyYXlTaXplIGNvbWVzIGluLgorICAgIGlmICghdXBk
YXRlRmxhZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZSsrOworICAgIHZhcmlh
YmxlLT5nZXRUeXBlKCkuc2V0TWF4QXJyYXlTaXplKHNpemUpOworICAgIHR5cGUtPnNldE1heEFy
cmF5U2l6ZShzaXplKTsKKyAgICBUVHlwZSogdHQgPSB0eXBlOworCisgICAgd2hpbGUodHQtPmdl
dEFycmF5SW5mb3JtYXRpb25UeXBlKCkgIT0gMCkgeworICAgICAgICB0dCA9IHR0LT5nZXRBcnJh
eUluZm9ybWF0aW9uVHlwZSgpOworICAgICAgICB0dC0+c2V0TWF4QXJyYXlTaXplKHNpemUpOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8KIC8vIEVuZm9yY2Ugbm9uLWluaXRp
YWxpemVyIHR5cGUvcXVhbGlmaWVyIHJ1bGVzLgogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVy
ZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29u
c3RFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYg
dHlwZSwgYm9vbCBhcnJheSkKIHsKICAgICBpZiAodHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29uc3Qp
CiAgICAgewpAQCAtODI1LDcgKzg3OCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdENv
bnN0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVuCiAvLwog
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNv
bnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcm
IGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKK2Jv
b2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlk
ZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAg
ICBpZiAocmVzZXJ2ZWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIpKQogICAgICAgICByZWNv
dmVyKCk7CkBAIC04NDUsNyArODk4LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWUKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBh
cmFtUXVhbGlmaWVyLCBUVHlwZSogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJv
ckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1
YWxpZmllciwgVFR5cGUqIHR5cGUpCiB7ICAgIAogICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29u
c3QgJiYgcXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewogICAgICAgICBlcnJvcihsaW5lLCAi
cXVhbGlmaWVyIG5vdCBhbGxvd2VkIG9uIGZ1bmN0aW9uIHBhcmFtZXRlciIsIGdldFF1YWxpZmll
clN0cmluZyhxdWFsaWZpZXIpKTsKQEAgLTg2NCw3ICs5MTcsNyBAQCBib29sIFRQYXJzZUNvbnRl
eHQ6OnBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1
YWxpZmllcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpleHRl
bnNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4
dGVuc2lvbikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGlu
ZSwgY29uc3QgVFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhh
dmlvciYgZXh0QmVoYXZpb3IgPSBleHRlbnNpb25CZWhhdmlvcigpOwogICAgIFRFeHRlbnNpb25C
ZWhhdmlvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dEJlaGF2aW9yLmZpbmQoZXh0ZW5zaW9u
LmNfc3RyKCkpOwpAQCAtODkyLDYgKzk0NSwyMCBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikKICAgICByZXR1cm4gKGl0ZXIgIT0g
ZXh0YmVoYXZpb3IuZW5kKCkpOwogfQogCit2b2lkIFRQYXJzZUNvbnRleHQ6OmhhbmRsZUV4dGVu
c2lvbkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3QgY2hhciog
YmVoYXZpb3IpCit7CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYzsKKyAgICBEZWNvZGVTb3Vy
Y2VMb2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxpbmUpOworICAgIGRpcmVjdGl2ZUhhbmRsZXIu
aGFuZGxlRXh0ZW5zaW9uKGxvYywgZXh0TmFtZSwgYmVoYXZpb3IpOworfQorCit2b2lkIFRQYXJz
ZUNvbnRleHQ6OmhhbmRsZVByYWdtYURpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgY2hhciogdmFsdWUpCit7CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYzsKKyAg
ICBEZWNvZGVTb3VyY2VMb2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxpbmUpOworICAgIGRpcmVj
dGl2ZUhhbmRsZXIuaGFuZGxlUHJhZ21hKGxvYywgbmFtZSwgdmFsdWUpOworfQorCiAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KIC8vCiAvLyBOb24tRXJyb3JzLgpAQCAtOTAzLDcgKzk3MCw3IEBA
IGJvb2wgVFBhcnNlQ29udGV4dDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5z
aW9uKQogLy8KIC8vIFJldHVybiB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndp
c2UgMC4KIC8vCi1jb25zdCBURnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBURnVuY3Rpb24qIGNhbGwsIGJvb2wgKmJ1aWx0SW4pCitj
b25zdCBURnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1
bmN0aW9uKiBjYWxsLCBib29sICpidWlsdEluKQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5t
YW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgog
ICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgpAQCAt
OTI1LDMyICs5OTIsMTEgQEAgY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVu
Y3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKgogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBURnVuY3Rpb24qPihzeW1ib2wpOwogfQogCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OmlzVmFyaWFibGVCdWlsdEluKGNvbnN0IFRWYXJpYWJsZSogdmFyKQotewotICAgIGJvb2wg
YnVpbHRJbiA9IGZhbHNlOwotICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8g
Y2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgotICAgIC8vIGhpZGRlbiBi
eSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgotICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQodmFyLT5nZXROYW1lKCksICZidWlsdEluKTsKLSAg
ICBpZiAoc3ltYm9sID09IDApIHsKLSAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZCh2
YXItPmdldE1hbmdsZWROYW1lKCksICZidWlsdEluKTsKLSAgICB9Ci0KLSAgICBpZiAoc3ltYm9s
ID09IDApIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghc3ltYm9s
LT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJl
dHVybiBidWlsdEluOwotfQotCiAvLwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJh
bCBwbGFjZXMgaW4gdGhlIGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8gaGFu
ZGxlIHRoZW0gaGVyZS4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXpl
cihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlw
ZSYgcFR5cGUsIAorYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJj
ZUxvYyBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFs
aXplciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQogewog
ICAgIFRUeXBlIHR5cGUgPSBUVHlwZShwVHlwZSk7CkBAIC0xMDAyLDcgKzEwNDgsMTMgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgVFN0cmluZyYgaWRlbnRpZmkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIGlmIChpbml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsgCi0gICAg
ICAgICAgICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKKyAgICAgICAgICAgIENvbnN0
YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQb2ludGVyKCk7CisKKyAg
ICAgICAgICAgIGlmICh0eXBlLmdldE9iamVjdFNpemUoKSA9PSAxICYmIHR5cGUuZ2V0QmFzaWNU
eXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgICAgICAgICAgICAgKnVuaW9uQXJyYXkgPSAoaW5p
dGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKVsw
XTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyaWFibGUtPnNoYXJl
Q29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlh
bGl6ZXItPmdldEFzU3ltYm9sTm9kZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBUU3ltYm9sKiBz
eW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKGluaXRpYWxpemVyLT5nZXRBc1N5bWJvbE5vZGUoKS0+
Z2V0U3ltYm9sKCkpOwogICAgICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB0VmFyID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKQEAgLTEwNTYsMTYgKzExMDgsMTYgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0OjphcmVBbGxDaGlsZENvbnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFn
Z3JOb2RlKQogLy8KIC8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0cnVjdGVk
IG5vZGUgKGFnZ3JlZ2F0ZSBvciB0eXBlZCkgZm9yIG5vIGVycm9yLgogLy8KLVRJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0
IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3Rv
cihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEZ1
bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkKIHsKICAgICBpZiAobm9kZSA9PSAwKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlID0gbm9k
ZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKICAgICAKLSAgICBURmllbGRMaXN0Ojpjb25zdF9pdGVyYXRv
ciBtZW1iZXJGaWVsZHM7CisgICAgVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciBtZW1iZXJUeXBl
czsKICAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAgICAgICBtZW1iZXJGaWVs
ZHMgPSB0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuYmVnaW4oKTsKKyAgICAgICAgbWVtYmVy
VHlwZXMgPSB0eXBlLT5nZXRTdHJ1Y3QoKS0+YmVnaW4oKTsKICAgICAKICAgICBUVHlwZSBlbGVt
ZW50VHlwZSA9ICp0eXBlOwogICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCkBAIC0xMDg3LDcgKzEx
MzksNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9yKFRJbnRl
cm1Ob2RlKiBub2RlLCBjb25zdCBUVHlwZSogdHlwZQogICAgICAgICBpZiAodHlwZS0+aXNBcnJh
eSgpKQogICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2RlLCAmZWxlbWVu
dFR5cGUsIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBlbHNlIGlmIChvcCA9
PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3Ry
dWN0KG5vZGUsICgqbWVtYmVyRmllbGRzKS0+dHlwZSgpLCAxLCBub2RlLT5nZXRMaW5lKCksIGZh
bHNlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1i
ZXJUeXBlcykudHlwZSwgMSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCBub2RlLCBu
b2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKIApAQCAtMTExOCw3ICsxMTcwLDcgQEAgVEludGVybVR5
cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29u
c3QgVFR5cGUqIHR5cGUKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAg
IG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsICZlbGVtZW50VHlwZSwgcGFyYW1Db3VudCsx
LCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25z
dHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KCpwLCBt
ZW1iZXJGaWVsZHNbcGFyYW1Db3VudF0tPnR5cGUoKSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRM
aW5lKCksIHRydWUpOworICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdCgqcCwg
KG1lbWJlclR5cGVzW3BhcmFtQ291bnRdKS50eXBlLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExp
bmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1
Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKICAgICAgICAg
CkBAIC0xMTY0LDcgKzEyMTYsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmZvbGRD
b25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlLCBjbwogLy8KIC8vIFJl
dHVybnMgMCBmb3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0cnVjdGVkIG5vZGUuCiAvLwotVEludGVy
bVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiB0eXBl
LCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVp
bHRJbihjb25zdCBUVHlwZSogdHlwZSwgVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogbm9kZSwg
VFNvdXJjZUxvYyBsaW5lLCBib29sIHN1YnNldCkKIHsKICAgICBUSW50ZXJtVHlwZWQqIG5ld05v
ZGU7CiAgICAgVE9wZXJhdG9yIGJhc2ljT3A7CkBAIC0xMjI2LDcgKzEyNzgsNyBAQCBUSW50ZXJt
VHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUs
IFRPcGVyYXRvciBvcCwgVAogLy8KIC8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3IgdGhlIGlu
cHV0IG5vZGUgaXRzZWxmIGlmIHRoZSBleHBlY3RlZCBhbmQgdGhlIGdpdmVuIHBhcmFtZXRlciB0
eXBlcyBtYXRjaC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdFN0
cnVjdChUSW50ZXJtTm9kZSogbm9kZSwgVFR5cGUqIHR5cGUsIGludCBwYXJhbUNvdW50LCBjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6Y29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50
IHBhcmFtQ291bnQsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCiB7CiAgICAgaWYgKCp0
eXBlID09IG5vZGUtPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpKSB7CiAgICAgICAgIGlmIChzdWJz
ZXQpCkBAIC0xMjUzLDcgKzEzMDUsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNv
bnN0cnVjdFN0cnVjdChUSW50ZXJtTm9kZSogbm9kZSwgVFR5cGUqIHR5cGUsIGludAogLy8gbm9k
ZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRpb24gb2Yg
YWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgCiAv
LyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBlZCogbm9k
ZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgVEludGVybVR5cGVkKiBu
b2RlLCBUU291cmNlTG9jIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7CiAg
ICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKQEAgLTEyNjEsNiArMTMxMyw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgVEludGVy
bVR5CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKICAgICBpZiAodGVtcENvbnN0YW50
Tm9kZSkgewogICAgICAgICB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKTsKKyAgICAgICAgQVNTRVJUKHVuaW9uQXJyYXkpOwogCiAgICAgICAgIGlm
ICghdW5pb25BcnJheSkgewogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CkBAIC0xMjc1LDcgKzEz
MjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9kZShU
VmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeQogICAgIENvbnN0YW50VW5pb24qIGNvbnN0
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltmaWVsZHMubnVtXTsKIAogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKSB7Ci0gICAgICAgIGlmIChmaWVsZHMub2Zmc2V0c1tp
XSA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkgeworICAgICAgICBpZiAoZmll
bGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSkgewogICAg
ICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICAgICAg
ZXh0cmFJbmZvU3RyZWFtIDw8ICJ2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAn
IiA8PCBmaWVsZHMub2Zmc2V0c1tpXSA8PCAiJyI7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyBl
eHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CkBAIC0xMjk3LDcgKzEzNTAsNyBAQCBU
SW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmll
bGRzJiBmaWVsZHMsIFRJbnRlcm1UeQogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBi
ZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgpdGhhdCBy
ZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUgdGhlIHRyZWUg
cmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3aGVyZSBzIGlz
IGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1h
dHJpeE5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkK
IHsKICAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlv
biogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTMz
Miw3ICsxMzg1LDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJp
eE5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIGMKIC8vIHRvIHRoZSBmdW5jdGlv
biBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAoYVswXSB3aGVyZSBhIGlzIGEgY29uc3Rh
bnQgYXJyYXkpdGhhdCByZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBhcnJheSBvciBpdCBjb3Vs
ZCBiZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3RhbnQgYXJyYXkgKHMuYTFb
MF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKIC8vCi1USW50ZXJtVHlwZWQqIFRQ
YXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBu
b2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJj
ZUxvYyBsaW5lKQogewogICAgIFRJbnRlcm1UeXBlZCogdHlwZWROb2RlOwogICAgIFRJbnRlcm1D
b25zdGFudFVuaW9uKiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9u
KCk7CkBAIC0xMzQ4LDggKzE0MDEsOSBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjbwogICAgICAg
ICBpbmRleCA9IDA7CiAgICAgfQogCisgICAgaW50IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVs
ZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKKwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7
Ci0gICAgICAgICBzaXplX3QgYXJyYXlFbGVtZW50U2l6ZSA9IGFycmF5RWxlbWVudFR5cGUuZ2V0
T2JqZWN0U2l6ZSgpOwogICAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHRlbXBD
b25zdGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgICB0eXBlZE5vZGUg
PSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbigmdW5pb25BcnJheVthcnJheUVsZW1lbnRT
aXplICogaW5kZXhdLCB0ZW1wQ29uc3RhbnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOwogICAgIH0g
ZWxzZSB7CkBAIC0xMzY4LDIxICsxNDIyLDIyIEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvCiAv
LyBJZiB0aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHByb3ByaWF0ZWx5
IGNhbGxzIGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IKIC8v
IGZ1bmN0aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZhbHVlcyBvZiB0
aGUgZW1iZWRkZWQvbmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9k
ZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgaWRlbnRpZmllciwgVEludGVybVR5cGVkKiBub2RlLCBU
U291cmNlTG9jIGxpbmUpCiB7Ci0gICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gbm9kZS0+
Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKLQotICAgIHNpemVfdCBpbnN0YW5jZVNp
emUgPSAwOwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgp
OyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRp
ZmllcikgeworICAgIGNvbnN0IFRUeXBlTGlzdCogZmllbGRzID0gbm9kZS0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpOworICAgIFRJbnRlcm1UeXBlZCAqdHlwZWROb2RlOworICAgIGludCBpbnN0YW5j
ZVNpemUgPSAwOworICAgIHVuc2lnbmVkIGludCBpbmRleCA9IDA7CisgICAgVEludGVybUNvbnN0
YW50VW5pb24gKnRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsK
KworICAgIGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMtPnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICBpZiAoKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSBp
ZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGluc3RhbmNlU2l6ZSArPSBmaWVsZHNbaW5kZXhdLT50eXBlKCktPmdldE9iamVjdFNp
emUoKTsKKyAgICAgICAgICAgIGluc3RhbmNlU2l6ZSArPSAoKmZpZWxkcylbaW5kZXhdLnR5cGUt
PmdldE9iamVjdFNpemUoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIFRJbnRlcm1UeXBlZCog
dHlwZWROb2RlID0gMDsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50Tm9k
ZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2Rl
KSB7CiAgICAgICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdGVtcENvbnN0YW50Tm9k
ZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKIApAQCAtMTM5Nyw3ICsxNDUyLDcgQEAgVEludGVy
bVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVy
LCBUSW50ZXJtVHlwZWQqIG4KICAgICByZXR1cm4gdHlwZWROb2RlOwogfQogCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6ZW50ZXJTdHJ1
Y3REZWNsYXJhdGlvbihpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAg
ICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQyMywyMSArMTQ3OCwyMSBAQCBjb25zdCBp
bnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1ib29s
IFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpCitib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5l
c3RpbmdFcnJvckNoZWNrKFRTb3VyY2VMb2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkK
IHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVsZC50eXBlKCktPmdldEJhc2ljVHlwZSgp
ICE9IEVidFN0cnVjdCkgeworICAgIGlmIChmaWVsZFR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0
U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBXZSdyZSBh
bHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFk
ZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1Y3QgbmVzdGluZy4KLSAgICBpZiAoMSAr
IGZpZWxkLnR5cGUoKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSA+IGtXZWJHTE1heFN0cnVj
dE5lc3RpbmcpIHsKKyAgICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGlu
ZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewogICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNl
IG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGQubmFtZSgpCisgICAgICAgIGV4dHJhSW5mb1N0cmVh
bSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdldFR5cGVOYW1l
KCkgCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSBzdHJ1Y3Qg
bmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAgICAgICAgIHN0ZDo6c3Ry
aW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAgICAgICAgZXJyb3IobGlu
ZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5oCmluZGV4IGIyMDI1YjguLjI2YTNlYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhl
bHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhl
bHBlci5oCkBAIC0zMyw4ICszMywxMCBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAgICAgICAg
ICAgICBjb21waWxlT3B0aW9ucyhvcHRpb25zKSwKICAgICAgICAgICAgIHNvdXJjZVBhdGgoc291
cmNlUGF0aCksCiAgICAgICAgICAgICB0cmVlUm9vdCgwKSwKKyAgICAgICAgICAgIGxleEFmdGVy
VHlwZShmYWxzZSksCiAgICAgICAgICAgICBsb29wTmVzdGluZ0xldmVsKDApLAogICAgICAgICAg
ICAgc3RydWN0TmVzdGluZ0xldmVsKDApLAorICAgICAgICAgICAgaW5UeXBlUGFyZW4oZmFsc2Up
LAogICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uVHlwZShOVUxMKSwKICAgICAgICAgICAgIGZ1
bmN0aW9uUmV0dXJuc1ZhbHVlKGZhbHNlKSwKICAgICAgICAgICAgIGNoZWNrc1ByZWNpc2lvbkVy
cm9ycyhjaGVja3NQcmVjRXJyb3JzKSwKQEAgLTQ5LDEzICs1MSwxNiBAQCBzdHJ1Y3QgVFBhcnNl
Q29udGV4dCB7CiAgICAgaW50IGNvbXBpbGVPcHRpb25zOwogICAgIGNvbnN0IGNoYXIqIHNvdXJj
ZVBhdGg7ICAgICAgLy8gUGF0aCBvZiBzb3VyY2UgZmlsZSBvciBOVUxMLgogICAgIFRJbnRlcm1O
b2RlKiB0cmVlUm9vdDsgICAgICAgLy8gcm9vdCBvZiBwYXJzZSB0cmVlIGJlaW5nIGNyZWF0ZWQK
KyAgICBib29sIGxleEFmdGVyVHlwZTsgICAgICAgICAgIC8vIHRydWUgaWYgd2UndmUgcmVjb2du
aXplZCBhIHR5cGUsIHNvIGNhbiBvbmx5IGJlIGxvb2tpbmcgZm9yIGFuIGlkZW50aWZpZXIKICAg
ICBpbnQgbG9vcE5lc3RpbmdMZXZlbDsgICAgICAgIC8vIDAgaWYgb3V0c2lkZSBhbGwgbG9vcHMK
ICAgICBpbnQgc3RydWN0TmVzdGluZ0xldmVsOyAgICAgIC8vIGluY3JlbWVudGVkIHdoaWxlIHBh
cnNpbmcgYSBzdHJ1Y3QgZGVjbGFyYXRpb24KKyAgICBib29sIGluVHlwZVBhcmVuOyAgICAgICAg
ICAgIC8vIHRydWUgaWYgaW4gcGFyZW50aGVzZXMsIGxvb2tpbmcgb25seSBmb3IgYW4gaWRlbnRp
ZmllcgogICAgIGNvbnN0IFRUeXBlKiBjdXJyZW50RnVuY3Rpb25UeXBlOyAgLy8gdGhlIHJldHVy
biB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0J3MgY3VycmVudGx5IGJlaW5nIHBhcnNlZAogICAg
IGJvb2wgZnVuY3Rpb25SZXR1cm5zVmFsdWU7ICAgLy8gdHJ1ZSBpZiBhIG5vbi12b2lkIGZ1bmN0
aW9uIGhhcyBhIHJldHVybgogICAgIGJvb2wgY2hlY2tzUHJlY2lzaW9uRXJyb3JzOyAgLy8gdHJ1
ZSBpZiBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZCB3aGVuIGEgdmFyaWFibGUgaXMgZGVjbGFy
ZWQgd2l0aG91dCBwcmVjaXNpb24sIGV4cGxpY2l0IG9yIGltcGxpY2l0LgogICAgIGJvb2wgZnJh
Z21lbnRQcmVjaXNpb25IaWdoOyAgLy8gdHJ1ZSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9y
dGVkIGluIHRoZSBmcmFnbWVudCBsYW5ndWFnZS4KICAgICBUU3RyaW5nIEhhc2hFcnJNc2c7Cisg
ICAgYm9vbCBBZnRlckVPRjsKICAgICBURGlhZ25vc3RpY3MgZGlhZ25vc3RpY3M7CiAgICAgVERp
cmVjdGl2ZUhhbmRsZXIgZGlyZWN0aXZlSGFuZGxlcjsKICAgICBwcDo6UHJlcHJvY2Vzc29yIHBy
ZXByb2Nlc3NvcjsKQEAgLTYzLDY4ICs2OCw3MSBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAK
ICAgICBpbnQgbnVtRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gZGlhZ25vc3RpY3MubnVtRXJyb3Jz
KCk7IH0KICAgICBUSW5mb1NpbmsmIGluZm9TaW5rKCkgeyByZXR1cm4gZGlhZ25vc3RpY3MuaW5m
b1NpbmsoKTsgfQotICAgIHZvaWQgZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBj
aGFyICpyZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLAorICAgIHZvaWQgZXJyb3IoVFNvdXJjZUxv
YyBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBleHRyYUluZm89IiIpOwotICAgIHZvaWQgd2FybmluZyhjb25zdCBU
U291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCisg
ICAgdm9pZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0
IGNoYXIqIHRva2VuLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm89IiIp
OwogICAgIHZvaWQgdHJhY2UoY29uc3QgY2hhciogc3RyKTsKICAgICB2b2lkIHJlY292ZXIoKTsK
IAotICAgIGJvb2wgcGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCB2ZWNTaXpl
LCBUVmVjdG9yRmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7Ci0gICAgYm9vbCBwYXJz
ZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMm
LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsKKyAgICBib29sIHBhcnNlVmVjdG9yRmllbGRzKGNv
bnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGludCBsaW5lKTsKKyAg
ICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0U2l6ZSwgVE1h
dHJpeEZpZWxkcyYsIGludCBsaW5lKTsKIAotICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOwotICAgIHZv
aWQgYXNzaWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRT
dHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7Ci0gICAgdm9pZCB1bmFyeU9wRXJyb3IoY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgb3BlcmFuZCk7Ci0gICAg
dm9pZCBiaW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9w
LCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2lj
VHlwZSB0eXBlKTsKLSAgICBib29sIGxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCopOworICAgIGJvb2wgcmVzZXJ2ZWRF
cnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lk
IGFzc2lnbkVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3Ry
aW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVuYXJ5T3BFcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciog
b3AsIFRTdHJpbmcgb3BlcmFuZCk7CisgICAgdm9pZCBiaW5hcnlPcEVycm9yKGludCBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICBib29sIHBy
ZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNU
eXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgY2hh
ciogb3AsIFRJbnRlcm1UeXBlZCopOwogICAgIGJvb2wgY29uc3RFcnJvckNoZWNrKFRJbnRlcm1U
eXBlZCogbm9kZSk7CiAgICAgYm9vbCBpbnRlZ2VyRXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5v
ZGUsIGNvbnN0IGNoYXIqIHRva2VuKTsKLSAgICBib29sIGdsb2JhbEVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKTsKLSAgICBi
b29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJt
Tm9kZSosIFRGdW5jdGlvbiYsIFRPcGVyYXRvciwgVFR5cGUqKTsKLSAgICBib29sIGFycmF5U2l6
ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBp
bnQmIHNpemUpOwotICAgIGJvb2wgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOwotICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKTsKLSAgICBib29s
IGFycmF5RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlm
aWVyLCBUUHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7Ci0gICAgYm9vbCB2
b2lkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQ
dWJsaWNUeXBlJik7Ci0gICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwg
Y29uc3QgVEludGVybVR5cGVkKik7Ci0gICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKLSAgICBib29sIHNhbXBsZXJFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3Qg
Y2hhciogcmVhc29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKTsKLSAgICBib29sIHBh
cmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZp
ZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgYm9vbCBub25Jbml0Q29uc3RF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBib29sIG5vbkluaXRFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7Ci0gICAgYm9vbCBwYXJhbUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIg
cGFyYW1RdWFsaWZpZXIsIFRUeXBlKiB0eXBlKTsKLSAgICBib29sIGV4dGVuc2lvbkVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYpOworICAgIGJvb2wgZ2xv
YmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKTsK
KyAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybU5vZGUqLCBU
RnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7CisgICAgYm9vbCBhcnJheVNpemVFcnJvckNo
ZWNrKGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7CisgICAgYm9vbCBh
cnJheVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAg
IGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7Cisg
ICAgYm9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZvaWRFcnJv
ckNoZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7CisgICAgYm9v
bCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOworICAgIGJvb2wgYm9v
bEVycm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVy
cm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciog
cmVhc29uKTsKKyAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIGNv
bnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7CisgICAgYm9vbCBwYXJhbWV0ZXJTYW1wbGVyRXJyb3JD
aGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsK
KyAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50
aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKKyAgICBib29sIG5vbkluaXRF
cnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlw
ZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGludCBs
aW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5
cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3Qg
VFN0cmluZyYpOwogCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29uc3QgeyByZXR1cm4g
ZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlv
ciYgZXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLmV4
dGVuc2lvbkJlaGF2aW9yKCk7IH0KICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IGNo
YXIqIGV4dGVuc2lvbik7CisgICAgdm9pZCBoYW5kbGVFeHRlbnNpb25EaXJlY3RpdmUoaW50IGxp
bmUsIGNvbnN0IGNoYXIqIGV4dE5hbWUsIGNvbnN0IGNoYXIqIGJlaGF2aW9yKTsKKworICAgIGNv
bnN0IFRQcmFnbWEmIHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJh
Z21hKCk7IH0KKyAgICB2b2lkIGhhbmRsZVByYWdtYURpcmVjdGl2ZShpbnQgbGluZSwgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpOwogCiAgICAgYm9vbCBjb250YWluc1NhbXBs
ZXIoVFR5cGUmIHR5cGUpOwogICAgIGJvb2wgYXJlQWxsQ2hpbGRDb25zdChUSW50ZXJtQWdncmVn
YXRlKiBhZ2dyTm9kZSk7Ci0gICAgY29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0gMCk7
Ci0gICAgYm9vbCBpc1ZhcmlhYmxlQnVpbHRJbihjb25zdCBUVmFyaWFibGUqIHBWYXIpOwotICAg
IGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcm
IGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwKKyAgICBjb25zdCBURnVuY3Rpb24qIGZp
bmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0g
MCk7CisgICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBUU3RyaW5n
JiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2Rl
LCBUVmFyaWFibGUqIHZhcmlhYmxlID0gMCk7CisgICAgYm9vbCBhcnJheVNldE1heFNpemUoVElu
dGVybVN5bWJvbCosIFRUeXBlKiwgaW50LCBib29sLCBUU291cmNlTG9jKTsKIAotICAgIFRJbnRl
cm1UeXBlZCogYWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqLCBjb25zdCBUVHlwZSosIFRPcGVy
YXRvciwgVEZ1bmN0aW9uKiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCog
YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqLCBjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVEZ1
bmN0aW9uKiwgVFNvdXJjZUxvYyk7CiAgICAgVEludGVybVR5cGVkKiBmb2xkQ29uc3RDb25zdHJ1
Y3RvcihUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9kZSwgY29uc3QgVFR5cGUmIHR5cGUpOwotICAg
IFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiwgVFR5cGUqLCBpbnQs
IGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBjb25z
dHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBUSW50ZXJtTm9kZSosIGNvbnN0
IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFZl
Y3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2Mm
KTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQgLCBUSW50ZXJtVHlw
ZWQqLCBjb25zdCBUU291cmNlTG9jJik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdEFycmF5
Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1U
eXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVjdFN0
cnVjdChUSW50ZXJtTm9kZSosIFRUeXBlKiwgaW50LCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7
CisgICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJh
dG9yLCBUSW50ZXJtTm9kZSosIFRTb3VyY2VMb2MsIGJvb2wgc3Vic2V0KTsKKyAgICBUSW50ZXJt
VHlwZWQqIGFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiwgVEludGVybVR5cGVkKiwg
VFNvdXJjZUxvYyk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdE1hdHJpeE5vZGUoaW50ICwg
VEludGVybVR5cGVkKiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdEFy
cmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKTsK
KyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0U3RydWN0KFRTdHJpbmcmICwgVEludGVybVR5cGVk
KiwgVFNvdXJjZUxvYyk7CiAKICAgICAvLyBQZXJmb3JtcyBhbiBlcnJvciBjaGVjayBmb3IgZW1i
ZWRkZWQgc3RydWN0IGRlY2xhcmF0aW9ucy4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW4gZXJy
b3Igd2FzIHJhaXNlZCBkdWUgdG8gdGhlIGRlY2xhcmF0aW9uIG9mCiAgICAgLy8gdGhpcyBzdHJ1
Y3QuCi0gICAgYm9vbCBlbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIGJvb2wgZW50ZXJTdHJ1Y3REZWNs
YXJhdGlvbihUU291cmNlTG9jIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOwogICAg
IHZvaWQgZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAKLSAgICBib29sIHN0cnVjdE5lc3RpbmdF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwor
ICAgIGJvb2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBU
VHlwZSYgZmllbGRUeXBlKTsKIH07CiAKIGludCBQYVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQs
IGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwCmluZGV4
IDNmMGY1YTYuLjllZjRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Qb29sQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Qb29sQWxsb2MuY3BwCkBAIC0yMjgsMjcgKzIyOCwyNCBAQCB2b2lkIFRQb29s
QWxsb2NhdG9yOjpwb3BBbGwoKQogCiB2b2lkKiBUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6
ZV90IG51bUJ5dGVzKQogewotICAgIC8vCi0gICAgLy8gSnVzdCBrZWVwIHNvbWUgaW50ZXJlc3Rp
bmcgc3RhdGlzdGljcy4KLSAgICAvLwotICAgICsrbnVtQ2FsbHM7Ci0gICAgdG90YWxCeXRlcyAr
PSBudW1CeXRlczsKLQogICAgIC8vIElmIHdlIGFyZSB1c2luZyBndWFyZCBibG9ja3MsIGFsbCBh
bGxvY2F0aW9ucyBhcmUgYnJhY2tldGVkIGJ5CiAgICAgLy8gdGhlbTogW2d1YXJkYmxvY2tdW2Fs
bG9jYXRpb25dW2d1YXJkYmxvY2tdLiAgbnVtQnl0ZXMgaXMgaG93CiAgICAgLy8gbXVjaCBtZW1v
cnkgdGhlIGNhbGxlciBhc2tlZCBmb3IuICBhbGxvY2F0aW9uU2l6ZSBpcyB0aGUgdG90YWwKICAg
ICAvLyBzaXplIGluY2x1ZGluZyBndWFyZCBibG9ja3MuICBJbiByZWxlYXNlIGJ1aWxkLAogICAg
IC8vIGd1YXJkQmxvY2tTaXplPTAgYW5kIHRoaXMgYWxsIGdldHMgb3B0aW1pemVkIGF3YXkuCiAg
ICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gVEFsbG9jYXRpb246OmFsbG9jYXRpb25TaXplKG51
bUJ5dGVzKTsKLSAgICAvLyBEZXRlY3QgaW50ZWdlciBvdmVyZmxvdy4KLSAgICBpZiAoYWxsb2Nh
dGlvblNpemUgPCBudW1CeXRlcykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgLy8KKyAg
ICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgorICAgIC8vCisgICAg
KytudW1DYWxsczsKKyAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOwogCiAgICAgLy8KICAgICAv
LyBEbyB0aGUgYWxsb2NhdGlvbiwgbW9zdCBsaWtlbHkgY2FzZSBmaXJzdCwgZm9yIGVmZmljaWVu
Y3kuCiAgICAgLy8gVGhpcyBzdGVwIGNvdWxkIGJlIG1vdmVkIHRvIGJlIGlubGluZSBzb21ldGlt
ZS4KICAgICAvLwotICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQ
YWdlT2Zmc2V0KSB7CisgICAgaWYgKGN1cnJlbnRQYWdlT2Zmc2V0ICsgYWxsb2NhdGlvblNpemUg
PD0gcGFnZVNpemUpIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gU2FmZSB0byBhbGxvY2F0ZSBm
cm9tIGN1cnJlbnRQYWdlT2Zmc2V0LgogICAgICAgICAvLwpAQCAtMjU5LDE2ICsyNTYsMTIgQEAg
dm9pZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKICAgICAgICAg
cmV0dXJuIGluaXRpYWxpemVBbGxvY2F0aW9uKGluVXNlTGlzdCwgbWVtb3J5LCBudW1CeXRlcyk7
CiAgICAgfQogCi0gICAgaWYgKGFsbG9jYXRpb25TaXplID4gcGFnZVNpemUgLSBoZWFkZXJTa2lw
KSB7CisgICAgaWYgKGFsbG9jYXRpb25TaXplICsgaGVhZGVyU2tpcCA+IHBhZ2VTaXplKSB7CiAg
ICAgICAgIC8vCiAgICAgICAgIC8vIERvIGEgbXVsdGktcGFnZSBhbGxvY2F0aW9uLiAgRG9uJ3Qg
bWl4IHRoZXNlIHdpdGggdGhlIG90aGVycy4KICAgICAgICAgLy8gVGhlIE9TIGlzIGVmZmljaWVu
dCBhbmQgYWxsb2NhdGluZyBhbmQgZnJlZS1pbmcgbXVsdGlwbGUgcGFnZXMuCiAgICAgICAgIC8v
CiAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQWxsb2MgPSBhbGxvY2F0aW9uU2l6ZSArIGhlYWRl
clNraXA7Ci0gICAgICAgIC8vIERldGVjdCBpbnRlZ2VyIG92ZXJmbG93LgotICAgICAgICBpZiAo
bnVtQnl0ZXNUb0FsbG9jIDwgYWxsb2NhdGlvblNpemUpCi0gICAgICAgICAgICByZXR1cm4gMDsK
LQogICAgICAgICB0SGVhZGVyKiBtZW1vcnkgPSByZWludGVycHJldF9jYXN0PHRIZWFkZXIqPig6
Om5ldyBjaGFyW251bUJ5dGVzVG9BbGxvY10pOwogICAgICAgICBpZiAobWVtb3J5ID09IDApCiAg
ICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9TaEhhbmRsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1NoSGFuZGxlLmgKaW5kZXggZjg2M2U1NC4uZGFlY2Q4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgKQEAgLTgxLDggKzgxLDgg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjb25zdCBTaEJ1
aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcyk7CiAgICAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIGZy
b20gdGhlIHByZXZpb3VzIGNvbXBpbGF0aW9uLgogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7Ci0g
ICAgLy8gUmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gcmVjdXJzaW9uIGlzIGRldGVjdGVkIG9yIGNh
bGwgZGVwdGggZXhjZWVkZWQuCi0gICAgYm9vbCBkZXRlY3RDYWxsRGVwdGgoVEludGVybU5vZGUq
IHJvb3QsIFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCk7Cisg
ICAgLy8gUmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gcmVjdXJzaW9uIGlzIGRldGVjdGVkLgorICAg
IGJvb2wgZGV0ZWN0UmVjdXJzaW9uKFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBSZXdyaXRl
cyBhIHNoYWRlcidzIGludGVybWVkaWF0ZSB0cmVlIGFjY29yZGluZyB0byB0aGUgQ1NTIFNoYWRl
cnMgc3BlYy4KICAgICB2b2lkIHJld3JpdGVDU1NTaGFkZXIoVEludGVybU5vZGUqIHJvb3QpOwog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2hhZGVyIGRvZXMgbm90IGV4Y2VlZCB0
aGUgbWluaW11bQpAQCAtMTA0LDggKzEwNCw2IEBAIHByb3RlY3RlZDoKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIHNoYWRlciBkb2VzIG5vdCB1c2Ugc2FtcGxlciBkZXBlbmRlbnQgdmFsdWVz
IHRvIGFmZmVjdCBjb250cm9sIAogICAgIC8vIGZsb3cgb3IgaW4gb3BlcmF0aW9ucyB3aG9zZSB0
aW1lIGNhbiBkZXBlbmQgb24gdGhlIGlucHV0IHZhbHVlcy4KICAgICBib29sIGVuZm9yY2VGcmFn
bWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9ucyhjb25zdCBURGVwZW5kZW5jeUdyYXBoJiBncmFw
aCk7Ci0gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG1heGltdW0gZXhwcmVzc2lvbiBjb21wbGV4
aXR5IGJlbG93IHRoZSBsaW1pdC4KLSAgICBib29sIGxpbWl0RXhwcmVzc2lvbkNvbXBsZXhpdHko
VEludGVybU5vZGUqIHJvb3QpOwogICAgIC8vIEdldCBidWlsdC1pbiBleHRlbnNpb25zIHdpdGgg
ZGVmYXVsdCBiZWhhdmlvci4KICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGdldEV4dGVu
c2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAKQEAgLTExOCw4ICsxMTYsNiBAQCBwcml2YXRlOgogICAg
IFNoU2hhZGVyU3BlYyBzaGFkZXJTcGVjOwogCiAgICAgaW50IG1heFVuaWZvcm1WZWN0b3JzOwot
ICAgIGludCBtYXhFeHByZXNzaW9uQ29tcGxleGl0eTsKLSAgICBpbnQgbWF4Q2FsbFN0YWNrRGVw
dGg7CiAKICAgICAvLyBCdWlsdC1pbiBzeW1ib2wgdGFibGUgZm9yIHRoZSBnaXZlbiBsYW5ndWFn
ZSwgc3BlYywgYW5kIHJlc291cmNlcy4KICAgICAvLyBJdCBpcyBwcmVzZXJ2ZWQgZnJvbSBjb21w
aWxlLXRvLWNvbXBpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvU2hhZGVyTGFuZy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvU2hhZGVyTGFuZy5jcHAKaW5kZXggYTY3YTYyNy4uZGNmOGI5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcApAQCAt
MTI2LDcgKzEyNiw2IEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXNv
dXJjZXMqIHJlc291cmNlcykKICAgICByZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwg
PSAwOwogICAgIHJlc291cmNlcy0+QVJCX3RleHR1cmVfcmVjdGFuZ2xlID0gMDsKICAgICByZXNv
dXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOwotICAgIHJlc291cmNlcy0+RVhUX2ZyYWdfZGVw
dGggPSAwOwogCiAgICAgLy8gRGlzYWJsZSBoaWdocCBwcmVjaXNpb24gaW4gZnJhZ21lbnQgc2hh
ZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVzb3VyY2VzLT5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJv
bFRhYmxlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xU
YWJsZS5jcHAKaW5kZXggNTExODBhZi4uODQ3YzFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCkBAIC0xNywzNCArMTcs
NDggQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1
ZGUgPGNsaW1pdHM+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogCiBUVHlwZTo6
VFR5cGUoY29uc3QgVFB1YmxpY1R5cGUgJnApIDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwg
cHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNp
emUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlT
aXplKSwgc3RydWN0dXJlKDApCisgICAgICAgICAgICB0eXBlKHAudHlwZSksIHByZWNpc2lvbihw
LnByZWNpc2lvbiksIHF1YWxpZmllcihwLnF1YWxpZmllciksIHNpemUocC5zaXplKSwgbWF0cml4
KHAubWF0cml4KSwgYXJyYXkocC5hcnJheSksIGFycmF5U2l6ZShwLmFycmF5U2l6ZSksCisgICAg
ICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDApLCBzdHJ1Y3R1
cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nKDApLCBmaWVsZE5h
bWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikKKyAg
ICBpZiAocC51c2VyRGVmKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3Ry
dWN0KCk7CisgICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRU
eXBlTmFtZSgpLmNfc3RyKCkpOworICAgICAgICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3Rpbmco
KTsKKyAgICB9CiB9CiAKIC8vCiAvLyBSZWN1cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVz
LgogLy8KLVRTdHJpbmcgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAordm9pZCBUVHlw
ZTo6YnVpbGRNYW5nbGVkTmFtZShUU3RyaW5nJiBtYW5nbGVkTmFtZSkKIHsKLSAgICBUU3RyaW5n
IG1hbmdsZWROYW1lOwogICAgIGlmIChpc01hdHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSAr
PSAnbSc7CiAgICAgZWxzZSBpZiAoaXNWZWN0b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
J3YnOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgbWFu
Z2xlZE5hbWUgKz0gJ2YnOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0SW50OiAgICAgICAgIG1h
bmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEJvb2w6ICAgICAgICBt
YW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAg
bWFuZ2xlZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6
IG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKLSAgICBjYXNlIEVidFN0cnVjdDogICAg
ICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJyZWFrOwotICAgIGRl
ZmF1bHQ6ICAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0RmxvYXQ6ICAgICAgICAgICAg
ICBtYW5nbGVkTmFtZSArPSAnZic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRJbnQ6ICAgICAg
ICAgICAgICAgIG1hbmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJv
b2w6ICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2InOyAgICAgIGJyZWFrOworICAgIGNh
c2UgRWJ0U2FtcGxlcjJEOiAgICAgICAgICBtYW5nbGVkTmFtZSArPSAiczIiOyAgICAgYnJlYWs7
CisgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZTogICAgICAgIG1hbmdsZWROYW1lICs9ICJzQyI7ICAg
ICBicmVhazsKKyAgICBjYXNlIEVidFN0cnVjdDoKKyAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInN0
cnVjdC0iOworICAgICAgICBpZiAodHlwZU5hbWUpCisgICAgICAgICAgICBtYW5nbGVkTmFtZSAr
PSAqdHlwZU5hbWU7CisgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAorICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJy0nOworICAgICAgICAgICAgICAgICgqc3Ry
dWN0dXJlKVtpXS50eXBlLT5idWlsZE1hbmdsZWROYW1lKG1hbmdsZWROYW1lKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIG1hbmdsZWROYW1lICs9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXpl
KCkpOwpAQCAtNTUsNzIgKzY5LDUzIEBAIFRTdHJpbmcgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUo
KSBjb25zdAogICAgICAgICBtYW5nbGVkTmFtZSArPSBidWY7CiAgICAgICAgIG1hbmdsZWROYW1l
ICs9ICddJzsKICAgICB9Ci0gICAgcmV0dXJuIG1hbmdsZWROYW1lOwogfQogCi1zaXplX3QgVFR5
cGU6OmdldE9iamVjdFNpemUoKSBjb25zdAoraW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkgY29u
c3QKIHsKLSAgICBzaXplX3QgdG90YWxTaXplID0gMDsKLQotICAgIGlmIChnZXRCYXNpY1R5cGUo
KSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgIHRvdGFsU2l6ZSA9IHN0cnVjdHVyZS0+b2JqZWN0U2l6
ZSgpOwotICAgIGVsc2UgaWYgKG1hdHJpeCkKLSAgICAgICAgdG90YWxTaXplID0gc2l6ZSAqIHNp
emU7Ci0gICAgZWxzZQotICAgICAgICB0b3RhbFNpemUgPSBzaXplOwotCi0gICAgaWYgKGlzQXJy
YXkoKSkgewotICAgICAgICBzaXplX3QgYXJyYXlTaXplID0gZ2V0QXJyYXlTaXplKCk7Ci0gICAg
ICAgIGlmIChhcnJheVNpemUgPiBJTlRfTUFYIC8gdG90YWxTaXplKQotICAgICAgICAgICAgdG90
YWxTaXplID0gSU5UX01BWDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdG90YWxTaXplICo9
IGFycmF5U2l6ZTsKKyAgICBpZiAoIWdldFN0cnVjdCgpKSB7CisgICAgICAgIGFzc2VydChmYWxz
ZSAmJiAiTm90IGEgc3RydWN0Iik7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJl
dHVybiB0b3RhbFNpemU7CisgICAgaWYgKHN0cnVjdHVyZVNpemUgPT0gMCkKKyAgICAgICAgZm9y
IChUVHlwZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIHRsID0gZ2V0U3RydWN0KCktPmJlZ2luKCk7IHRs
ICE9IGdldFN0cnVjdCgpLT5lbmQoKTsgdGwrKykKKyAgICAgICAgICAgIHN0cnVjdHVyZVNpemUg
Kz0gKCgqdGwpLnR5cGUpLT5nZXRPYmplY3RTaXplKCk7CisKKyAgICByZXR1cm4gc3RydWN0dXJl
U2l6ZTsKIH0KIAotYm9vbCBUU3RydWN0dXJlOjpjb250YWluc0FycmF5cygpIGNvbnN0Cit2b2lk
IFRUeXBlOjpjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKQogewotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgVFR5cGUq
IGZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0tPnR5cGUoKTsKLSAgICAgICAgaWYgKGZpZWxkVHlw
ZS0+aXNBcnJheSgpIHx8IGZpZWxkVHlwZS0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWdldFN0cnVjdCgpKSB7CisgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQogCi1UU3RyaW5nIFRTdHJ1
Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAotewotICAgIFRTdHJpbmcgbWFuZ2xlZE5h
bWUoInN0cnVjdC0iKTsKLSAgICBtYW5nbGVkTmFtZSArPSAqbU5hbWU7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgewotICAgICAgICBtYW5nbGVkTmFt
ZSArPSAnLSc7Ci0gICAgICAgIG1hbmdsZWROYW1lICs9ICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+
Z2V0TWFuZ2xlZE5hbWUoKTsKKyAgICBpbnQgbWF4TmVzdGluZyA9IDA7CisgICAgZm9yIChUVHlw
ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIHRsID0gZ2V0U3RydWN0KCktPmJlZ2luKCk7IHRsICE9IGdl
dFN0cnVjdCgpLT5lbmQoKTsgKyt0bCkgeworICAgICAgICBtYXhOZXN0aW5nID0gc3RkOjptYXgo
bWF4TmVzdGluZywgKCgqdGwpLnR5cGUpLT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpKTsKICAg
ICB9Ci0gICAgcmV0dXJuIG1hbmdsZWROYW1lOworCisgICAgZGVlcGVzdFN0cnVjdE5lc3Rpbmcg
PSAxICsgbWF4TmVzdGluZzsKIH0KIAotc2l6ZV90IFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZU9iamVj
dFNpemUoKSBjb25zdAorYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkg
Y29uc3QKIHsKLSAgICBzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtRmllbGRzLT5zaXplKCk7ICsraSkgewotICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCpt
RmllbGRzKVtpXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAgIGlmIChmaWVsZFNp
emUgPiBJTlRfTUFYIC0gc2l6ZSkKLSAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzaXplICs9IGZpZWxkU2l6ZTsKKyAgICBpZiAoIXN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHNpemU7
Ci19CiAKLWludCBUU3RydWN0dXJlOjpjYWxjdWxhdGVEZWVwZXN0TmVzdGluZygpIGNvbnN0Ci17
Ci0gICAgaW50IG1heE5lc3RpbmcgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZp
ZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgbWF4TmVzdGluZyA9IHN0ZDo6bWF4KG1heE5l
c3RpbmcsICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSk7
CisgICAgZm9yIChUVHlwZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIG1lbWJlciA9IHN0cnVjdHVyZS0+
YmVnaW4oKTsgbWVtYmVyICE9IHN0cnVjdHVyZS0+ZW5kKCk7IG1lbWJlcisrKQorICAgIHsKKyAg
ICAgICAgaWYgKG1lbWJlci0+dHlwZS0+aXNBcnJheSgpIHx8CisgICAgICAgICAgICBtZW1iZXIt
PnR5cGUtPmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMSArIG1heE5l
c3Rpbmc7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC8vCkBAIC0yMDEsOCArMTk2LDg0IEBA
IHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvT3BlcmF0b3IoY29uc3QgY2hhciogbmFt
ZSwgVE9wZXJhdG9yIG9wKQogdm9pZCBUU3ltYm9sVGFibGVMZXZlbDo6cmVsYXRlVG9FeHRlbnNp
b24oY29uc3QgY2hhciogbmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KQogewogICAgIGZvciAodExl
dmVsOjppdGVyYXRvciBpdCA9IGxldmVsLmJlZ2luKCk7IGl0ICE9IGxldmVsLmVuZCgpOyArK2l0
KSB7Ci0gICAgICAgIFRTeW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgIGlmIChz
eW1ib2wtPmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVUb0V4
dGVuc2lvbihleHQpOworICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5jdGlvbigpKSB7Cisg
ICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4o
aXQtPnNlY29uZCk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSBuYW1l
KQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOworICAg
ICAgICB9CisgICAgfQorfQorCitUU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRTeW1ib2wmIGNvcHlP
ZikKK3sKKyAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUtPmNfc3RyKCkpOwor
ICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOworfQorCitUVmFyaWFibGU6OlRWYXJpYWJs
ZShjb25zdCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5
bWJvbChjb3B5T2YpCit7CisgICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlwZSwgcmVtYXBwZXIp
OworICAgIHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOworICAgIC8vIGZvciBidWlsdEluIHN5
bWJvbCB0YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1hdGlvbiBwb2ludGVy
cyBzaG91bGQgYmUgTlVMTAorICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5cGUg
PT0gMCk7CisgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOworCisgICAgaWYgKGNvcHlPZi51
bmlvbkFycmF5KSB7CisgICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0U3RydWN0KCkpOwor
ICAgICAgICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09IDEpOworICAgICAg
ICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CisgICAgICAgIHVuaW9uQXJyYXlb
MF0gPSBjb3B5T2YudW5pb25BcnJheVswXTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5pb25BcnJh
eSA9IDA7Cit9CisKK1RWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3RydWN0dXJlTWFwJiBy
ZW1hcHBlcikKK3sKKyAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgqdGhp
cywgcmVtYXBwZXIpOworCisgICAgcmV0dXJuIHZhcmlhYmxlOworfQorCitURnVuY3Rpb246OlRG
dW5jdGlvbihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIp
IDogVFN5bWJvbChjb3B5T2YpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBj
b3B5T2YucGFyYW1ldGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBUUGFyYW1ldGVyIHBhcmFt
OworICAgICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7CisgICAgICAgIHBhcmFtZXRl
cnMuYmFjaygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVtYXBwZXIpOworICAg
IH0KKworICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5cGUsIHJlbWFwcGVy
KTsKKyAgICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKKyAgICBvcCA9IGNvcHlP
Zi5vcDsKKyAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Cit9CisKK1RGdW5jdGlvbiogVEZ1
bmN0aW9uOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKK3sKKyAgICBURnVuY3Rpb24g
KmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOworCisgICAgcmV0dXJu
IGZ1bmN0aW9uOworfQorCitUU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRhYmxlTGV2ZWw6OmNs
b25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQoreworICAgIFRTeW1ib2xUYWJsZUxldmVsICpz
eW1UYWJsZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7CisgICAgdExldmVsOjppdGVy
YXRvciBpdGVyOworICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0ZXIgIT0gbGV2ZWwu
ZW5kKCk7ICsraXRlcikgeworICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNlcnQoKml0ZXItPnNl
Y29uZC0+Y2xvbmUocmVtYXBwZXIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3ltVGFibGVMZXZl
bDsKK30KKwordm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFibGUm
IGNvcHlPZikKK3sKKyAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOworICAgIHVuaXF1ZUlkID0g
Y29weU9mLnVuaXF1ZUlkOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9m
LnRhYmxlLnNpemUoKTsgKytpKSB7CisgICAgICAgIHRhYmxlLnB1c2hfYmFjayhjb3B5T2YudGFi
bGVbaV0tPmNsb25lKHJlbWFwcGVyKSk7CisgICAgfQorICAgIGZvciggdW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7CisgICAgICAgIHBy
ZWNpc2lvblN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNrW2ldICk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5
bWJvbFRhYmxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuaAppbmRleCBmNmUxOTU5Li5kMjdhYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaApAQCAtMzIsNyArMzIsNiBAQAog
CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJt
ZWRpYXRlLmgiCiAKQEAgLTUwLDE2ICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2V0VW5pcXVl
SWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0KICAgICBpbnQgZ2V0VW5pcXVlSWQoKSBjb25z
dCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAm
aW5mb1NpbmspIGNvbnN0ID0gMDsKLSAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRT
dHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRF
eHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KLQotcHJpdmF0ZToKLSAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN5bWJvbCk7CisgICAgdmlydHVhbCB2b2lkIGR1bXAo
VEluZm9TaW5rICZpbmZvU2luaykgY29uc3QgPSAwOwkKKyAgICBUU3ltYm9sKGNvbnN0IFRTeW1i
b2wmKTsKKyAgICB2aXJ0dWFsIFRTeW1ib2wqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVy
KSA9IDA7CiAKK3Byb3RlY3RlZDoKICAgICBjb25zdCBUU3RyaW5nICpuYW1lOwogICAgIHVuc2ln
bmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBjb21wYXJpbmcgZHVyaW5nIGNvZGUg
Z2VuZXJhdGlvbgotICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwogfTsKIAogLy8KQEAgLTc0LDEzICs3
MCwxNSBAQCBwcml2YXRlOgogLy8KIGNsYXNzIFRWYXJpYWJsZSA6IHB1YmxpYyBUU3ltYm9sIHsK
IHB1YmxpYzoKLSAgICBUVmFyaWFibGUoY29uc3QgVFN0cmluZyAqbmFtZSwgY29uc3QgVFR5cGUm
IHQsIGJvb2wgdVQgPSBmYWxzZSApIDogVFN5bWJvbChuYW1lKSwgdHlwZSh0KSwgdXNlclR5cGUo
dVQpLCB1bmlvbkFycmF5KDApIHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1l
LCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBl
KHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDAp
IHsgfQogICAgIHZpcnR1YWwgflRWYXJpYWJsZSgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Zh
cmlhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfSAgICAKICAgICBUVHlwZSYgZ2V0VHlwZSgp
IHsgcmV0dXJuIHR5cGU7IH0gICAgCiAgICAgY29uc3QgVFR5cGUmIGdldFR5cGUoKSBjb25zdCB7
IHJldHVybiB0eXBlOyB9CiAgICAgYm9vbCBpc1VzZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gdXNl
clR5cGU7IH0KICAgICB2b2lkIHNldFF1YWxpZmllcihUUXVhbGlmaWVyIHF1YWxpZmllcikgeyB0
eXBlLnNldFF1YWxpZmllcihxdWFsaWZpZXIpOyB9CisgICAgdm9pZCB1cGRhdGVBcnJheUluZm9y
bWF0aW9uVHlwZShUVHlwZSAqdCkgeyBhcnJheUluZm9ybWF0aW9uVHlwZSA9IHQ7IH0KKyAgICBU
VHlwZSogZ2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSB7IHJldHVybiBhcnJheUluZm9ybWF0aW9u
VHlwZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29u
c3Q7CiAKQEAgLTEwMiwxNSArMTAwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgZGVsZXRlW10gdW5p
b25BcnJheTsKICAgICAgICAgdW5pb25BcnJheSA9IGNvbnN0QXJyYXk7ICAKICAgICB9CisgICAg
VFZhcmlhYmxlKGNvbnN0IFRWYXJpYWJsZSYsIFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsgLy8g
Y29weSBjb25zdHJ1Y3RvcgorICAgIHZpcnR1YWwgVFZhcmlhYmxlKiBjbG9uZShUU3RydWN0dXJl
TWFwJiByZW1hcHBlcik7CiAKLXByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
KFRWYXJpYWJsZSk7Ci0KK3Byb3RlY3RlZDoKICAgICBUVHlwZSB0eXBlOwogICAgIGJvb2wgdXNl
clR5cGU7CiAgICAgLy8gd2UgYXJlIGFzc3VtaW5nIHRoYXQgUG9vbCBBbGxvY2F0b3Igd2lsbCBm
cmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIHRvIHVuaW9uQXJyYXkKICAgICAvLyB3aGVuIHRoaXMg
b2JqZWN0IGlzIGRlc3Ryb3llZAogICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXk7CisgICAg
VFR5cGUgKmFycmF5SW5mb3JtYXRpb25UeXBlOyAgLy8gdGhpcyBpcyB1c2VkIGZvciB1cGRhdGlu
ZyBtYXhBcnJheVNpemUgaW4gYWxsIHRoZSByZWZlcmVuY2VzIHRvIGEgZ2l2ZW4gc3ltYm9sCiB9
OwogCiAvLwpAQCAtMTIwLDYgKzExOSwxMSBAQCBwcml2YXRlOgogc3RydWN0IFRQYXJhbWV0ZXIg
ewogICAgIFRTdHJpbmcgKm5hbWU7CiAgICAgVFR5cGUqIHR5cGU7CisgICAgdm9pZCBjb3B5UGFy
YW0oY29uc3QgVFBhcmFtZXRlciYgcGFyYW0sIFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQorICAg
IHsKKyAgICAgICAgbmFtZSA9IE5ld1Bvb2xUU3RyaW5nKHBhcmFtLm5hbWUtPmNfc3RyKCkpOwor
ICAgICAgICB0eXBlID0gcGFyYW0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOworICAgIH0KIH07CiAK
IC8vCkBAIC0xNTksNiArMTYzLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRv
cihUT3BlcmF0b3IgbykgeyBvcCA9IG87IH0KICAgICBUT3BlcmF0b3IgZ2V0QnVpbHRJbk9wKCkg
Y29uc3QgeyByZXR1cm4gb3A7IH0KIAorICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNpb24oY29uc3Qg
VFN0cmluZyYgZXh0KSB7IGV4dGVuc2lvbiA9IGV4dDsgfQorICAgIGNvbnN0IFRTdHJpbmcmIGdl
dEV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIGV4dGVuc2lvbjsgfQorCiAgICAgdm9pZCBzZXRE
ZWZpbmVkKCkgeyBkZWZpbmVkID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNEZWZpbmVkKCkgeyByZXR1
cm4gZGVmaW5lZDsgfQogCkBAIC0xNjYsMTUgKzE3MywxNiBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
VFBhcmFtZXRlciYgZ2V0UGFyYW0oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnNb
aV07IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0
OworICAgIFRGdW5jdGlvbihjb25zdCBURnVuY3Rpb24mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBl
cik7CisgICAgdmlydHVhbCBURnVuY3Rpb24qIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVy
KTsKIAotcHJpdmF0ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVEZ1bmN0aW9uKTsK
LQorcHJvdGVjdGVkOgogICAgIHR5cGVkZWYgVFZlY3RvcjxUUGFyYW1ldGVyPiBUUGFyYW1MaXN0
OwogICAgIFRQYXJhbUxpc3QgcGFyYW1ldGVyczsKICAgICBUVHlwZSByZXR1cm5UeXBlOwogICAg
IFRTdHJpbmcgbWFuZ2xlZE5hbWU7CiAgICAgVE9wZXJhdG9yIG9wOworICAgIFRTdHJpbmcgZXh0
ZW5zaW9uOwogICAgIGJvb2wgZGVmaW5lZDsKIH07CiAKQEAgLTIyMyw2ICsyMzEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWxhdGVUb09wZXJhdG9yKGNvbnN0IGNoYXIqIG5hbWUsIFRPcGVyYXRv
ciBvcCk7CiAgICAgdm9pZCByZWxhdGVUb0V4dGVuc2lvbihjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBUU3RyaW5nJiBleHQpOwogICAgIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25z
dDsKKyAgICBUU3ltYm9sVGFibGVMZXZlbCogY2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdExldmVsIGxldmVsOwpAQCAtMzEyLDYgKzMyMSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgaW50IGdldE1heFN5bWJvbElkKCkgeyByZXR1cm4gdW5pcXVlSWQ7
IH0KICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7CisgICAgdm9pZCBj
b3B5VGFibGUoY29uc3QgVFN5bWJvbFRhYmxlJiBjb3B5T2YpOwogCiAgICAgYm9vbCBzZXREZWZh
dWx0UHJlY2lzaW9uKCBjb25zdCBUUHVibGljVHlwZSYgdHlwZSwgVFByZWNpc2lvbiBwcmVjICl7
CiAgICAgICAgIGlmIChJc1NhbXBsZXIodHlwZS50eXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UeXBlcy5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgKaW5kZXggMzg0NmU2Yy4uZDQ1NzY2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgKQEAgLTcsODUgKzcs
MzAgQEAKICNpZm5kZWYgX1RZUEVTX0lOQ0xVREVECiAjZGVmaW5lIF9UWVBFU19JTkNMVURFRAog
Ci0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLQogI2luY2x1ZGUgImNvbXBpbGVyL0Jh
c2VUeXBlcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL2RlYnVnLmgiCiAKLXN0cnVjdCBUUHVibGljVHlwZTsKIGNsYXNzIFRUeXBlOworc3RydWN0
IFRQdWJsaWNUeXBlOwogCi1jbGFzcyBURmllbGQKLXsKLXB1YmxpYzoKLSAgICBQT09MX0FMTE9D
QVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpOwotICAgIFRGaWVsZChUVHlwZSog
dHlwZSwgVFN0cmluZyogbmFtZSkgOiBtVHlwZSh0eXBlKSwgbU5hbWUobmFtZSkge30KLQotICAg
IC8vIFRPRE8oYWxva3ApOiBXZSBzaG91bGQgb25seSByZXR1cm4gY29uc3QgdHlwZS4KLSAgICAv
LyBGaXggaXQgYnkgdHdlYWtpbmcgZ3JhbW1hci4KLSAgICBUVHlwZSogdHlwZSgpIHsgcmV0dXJu
IG1UeXBlOyB9Ci0gICAgY29uc3QgVFR5cGUqIHR5cGUoKSBjb25zdCB7IHJldHVybiBtVHlwZTsg
fQotCi0gICAgY29uc3QgVFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuICptTmFtZTsgfQot
Ci1wcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihURmllbGQpOwotICAgIFRU
eXBlKiBtVHlwZTsKLSAgICBUU3RyaW5nKiBtTmFtZTsKKy8vCisvLyBOZWVkIHRvIGhhdmUgYXNz
b2NpYXRpb24gb2YgbGluZSBudW1iZXJzIHRvIHR5cGVzIGluIGEgbGlzdCBmb3IgYnVpbGRpbmcg
c3RydWN0cy4KKy8vCitzdHJ1Y3QgVFR5cGVMaW5lIHsKKyAgICBUVHlwZSogdHlwZTsKKyAgICBp
bnQgbGluZTsKIH07Cit0eXBlZGVmIFRWZWN0b3I8VFR5cGVMaW5lPiBUVHlwZUxpc3Q7CiAKLXR5
cGVkZWYgVFZlY3RvcjxURmllbGQqPiBURmllbGRMaXN0OwotaW5saW5lIFRGaWVsZExpc3QqIE5l
d1Bvb2xURmllbGRMaXN0KCkKK2lubGluZSBUVHlwZUxpc3QqIE5ld1Bvb2xUVHlwZUxpc3QoKQog
ewotICAgIHZvaWQqIG1lbW9yeSA9IEdsb2JhbFBvb2xBbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZW9m
KFRGaWVsZExpc3QpKTsKLSAgICByZXR1cm4gbmV3KG1lbW9yeSkgVEZpZWxkTGlzdDsKKyAgICB2
b2lkKiBtZW1vcnkgPSBHbG9iYWxQb29sQWxsb2NhdG9yLmFsbG9jYXRlKHNpemVvZihUVHlwZUxp
c3QpKTsKKyAgICByZXR1cm4gbmV3KG1lbW9yeSkgVFR5cGVMaXN0OwogfQogCi1jbGFzcyBUU3Ry
dWN0dXJlCi17Ci1wdWJsaWM6Ci0gICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQ
b29sQWxsb2NhdG9yKTsKLSAgICBUU3RydWN0dXJlKFRTdHJpbmcqIG5hbWUsIFRGaWVsZExpc3Qq
IGZpZWxkcykKLSAgICAgICAgOiBtTmFtZShuYW1lKSwKLSAgICAgICAgICBtRmllbGRzKGZpZWxk
cyksCi0gICAgICAgICAgbU9iamVjdFNpemUoMCksCi0gICAgICAgICAgbURlZXBlc3ROZXN0aW5n
KDApIHsKLSAgICB9Ci0KLSAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
Km1OYW1lOyB9Ci0gICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzKCkgY29uc3QgeyByZXR1cm4g
Km1GaWVsZHM7IH0KLQotICAgIGNvbnN0IFRTdHJpbmcmIG1hbmdsZWROYW1lKCkgY29uc3Qgewot
ICAgICAgICBpZiAobU1hbmdsZWROYW1lLmVtcHR5KCkpCi0gICAgICAgICAgICBtTWFuZ2xlZE5h
bWUgPSBidWlsZE1hbmdsZWROYW1lKCk7Ci0gICAgICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7Ci0g
ICAgfQotICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QgewotICAgICAgICBpZiAobU9iamVj
dFNpemUgPT0gMCkKLSAgICAgICAgICAgIG1PYmplY3RTaXplID0gY2FsY3VsYXRlT2JqZWN0U2l6
ZSgpOwotICAgICAgICByZXR1cm4gbU9iamVjdFNpemU7Ci0gICAgfTsKLSAgICBpbnQgZGVlcGVz
dE5lc3RpbmcoKSBjb25zdCB7Ci0gICAgICAgIGlmIChtRGVlcGVzdE5lc3RpbmcgPT0gMCkKLSAg
ICAgICAgICAgIG1EZWVwZXN0TmVzdGluZyA9IGNhbGN1bGF0ZURlZXBlc3ROZXN0aW5nKCk7Ci0g
ICAgICAgIHJldHVybiBtRGVlcGVzdE5lc3Rpbmc7Ci0gICAgfQotICAgIGJvb2wgY29udGFpbnNB
cnJheXMoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04o
VFN0cnVjdHVyZSk7Ci0gICAgVFN0cmluZyBidWlsZE1hbmdsZWROYW1lKCkgY29uc3Q7Ci0gICAg
c2l6ZV90IGNhbGN1bGF0ZU9iamVjdFNpemUoKSBjb25zdDsKLSAgICBpbnQgY2FsY3VsYXRlRGVl
cGVzdE5lc3RpbmcoKSBjb25zdDsKLQotICAgIFRTdHJpbmcqIG1OYW1lOwotICAgIFRGaWVsZExp
c3QqIG1GaWVsZHM7Ci0KLSAgICBtdXRhYmxlIFRTdHJpbmcgbU1hbmdsZWROYW1lOwotICAgIG11
dGFibGUgc2l6ZV90IG1PYmplY3RTaXplOwotICAgIG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGlu
ZzsKLX07Cit0eXBlZGVmIFRNYXA8VFR5cGVMaXN0KiwgVFR5cGVMaXN0Kj4gVFN0cnVjdHVyZU1h
cDsKK3R5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlwZUxpc3QqPjo6aXRlcmF0b3IgVFN0cnVj
dHVyZU1hcEl0ZXJhdG9yOwogCiAvLwogLy8gQmFzZSBjbGFzcyBmb3IgdGhpbmdzIHRoYXQgaGF2
ZSBhIHR5cGUuCkBAIC05NiwxMyArNDEsNjkgQEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9S
X05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikKICAgICBUVHlwZSgpIHt9CiAgICAgVFR5
cGUoVEJhc2ljVHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRlbXBvcmFy
eSwgaW50IHMgPSAxLCBib29sIG0gPSBmYWxzZSwgYm9vbCBhID0gZmFsc2UpIDoKLSAgICAgICAg
ICAgIHR5cGUodCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgo
bSksIGFycmF5KGEpLCBhcnJheVNpemUoMCksIHN0cnVjdHVyZSgwKQorICAgICAgICAgICAgdHlw
ZSh0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZpZXIocSksIHNpemUocyksIG1hdHJpeChtKSwgYXJy
YXkoYSksIGFycmF5U2l6ZSgwKSwKKyAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJ
bmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVz
dFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkK
ICAgICB7CiAgICAgfQogICAgIGV4cGxpY2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKTsK
LSAgICBUVHlwZShUU3RydWN0dXJlKiB1c2VyRGVmLCBUUHJlY2lzaW9uIHAgPSBFYnBVbmRlZmlu
ZWQpIDoKLSAgICAgICAgICAgIHR5cGUoRWJ0U3RydWN0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZp
ZXIoRXZxVGVtcG9yYXJ5KSwgc2l6ZSgxKSwgbWF0cml4KGZhbHNlKSwgYXJyYXkoZmFsc2UpLCBh
cnJheVNpemUoMCksIHN0cnVjdHVyZSh1c2VyRGVmKQorICAgIFRUeXBlKFRUeXBlTGlzdCogdXNl
ckRlZiwgY29uc3QgVFN0cmluZyYgbiwgVFByZWNpc2lvbiBwID0gRWJwVW5kZWZpbmVkKSA6Cisg
ICAgICAgICAgICB0eXBlKEVidFN0cnVjdCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKEV2cVRl
bXBvcmFyeSksIHNpemUoMSksIG1hdHJpeChmYWxzZSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXpl
KDApLAorICAgICAgICAgICAgbWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9uVHlwZSgw
KSwgc3RydWN0dXJlKHVzZXJEZWYpLCBzdHJ1Y3R1cmVTaXplKDApLCBkZWVwZXN0U3RydWN0TmVz
dGluZygwKSwgZmllbGROYW1lKDApLCBtYW5nbGVkKDApCisgICAgeworICAgICAgICB0eXBlTmFt
ZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7CisgICAgfQorCisgICAgdm9pZCBjb3B5VHlw
ZShjb25zdCBUVHlwZSYgY29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKICAgICB7Cisg
ICAgICAgIHR5cGUgPSBjb3B5T2YudHlwZTsKKyAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnBy
ZWNpc2lvbjsKKyAgICAgICAgcXVhbGlmaWVyID0gY29weU9mLnF1YWxpZmllcjsKKyAgICAgICAg
c2l6ZSA9IGNvcHlPZi5zaXplOworICAgICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OworICAg
ICAgICBhcnJheSA9IGNvcHlPZi5hcnJheTsKKyAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFy
cmF5U2l6ZTsKKworICAgICAgICBUU3RydWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKKyAgICAgICAg
aWYgKGNvcHlPZi5zdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVy
LmZpbmQoc3RydWN0dXJlKSkgPT0gcmVtYXBwZXIuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBjcmVhdGUgdGhlIG5ldyBzdHJ1Y3R1cmUgaGVyZQorICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IGNvcHlPZi5zdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICAgICAgICAgIFRUeXBlTGluZSB0eXBlTGluZTsKKyAgICAgICAgICAgICAgICAgICAgdHlwZUxp
bmUubGluZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0ubGluZTsKKyAgICAgICAgICAgICAgICAg
ICAgdHlwZUxpbmUudHlwZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVt
YXBwZXIpOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGlu
ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUgPSBpdGVyLT5zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgc3RydWN0dXJlID0gMDsKKworICAgICAgICBmaWVsZE5hbWUgPSAw
OworICAgICAgICBpZiAoY29weU9mLmZpZWxkTmFtZSkKKyAgICAgICAgICAgIGZpZWxkTmFtZSA9
IE5ld1Bvb2xUU3RyaW5nKGNvcHlPZi5maWVsZE5hbWUtPmNfc3RyKCkpOworICAgICAgICB0eXBl
TmFtZSA9IDA7CisgICAgICAgIGlmIChjb3B5T2YudHlwZU5hbWUpCisgICAgICAgICAgICB0eXBl
TmFtZSA9IE5ld1Bvb2xUU3RyaW5nKGNvcHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7CisKKyAgICAg
ICAgbWFuZ2xlZCA9IDA7CisgICAgICAgIGlmIChjb3B5T2YubWFuZ2xlZCkKKyAgICAgICAgICAg
IG1hbmdsZWQgPSBOZXdQb29sVFN0cmluZyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7CisKKyAg
ICAgICAgc3RydWN0dXJlU2l6ZSA9IGNvcHlPZi5zdHJ1Y3R1cmVTaXplOworICAgICAgICBtYXhB
cnJheVNpemUgPSBjb3B5T2YubWF4QXJyYXlTaXplOworICAgICAgICBkZWVwZXN0U3RydWN0TmVz
dGluZyA9IGNvcHlPZi5kZWVwZXN0U3RydWN0TmVzdGluZzsKKyAgICAgICAgYXNzZXJ0KGNvcHlP
Zi5hcnJheUluZm9ybWF0aW9uVHlwZSA9PSAwKTsKKyAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5
cGUgPSAwOyAvLyBhcnJheUluZm9ybWF0aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVp
bHRJbiBzeW1ib2wgdGFibGUgbGV2ZWwKKyAgICB9CisKKyAgICBUVHlwZSogY2xvbmUoVFN0cnVj
dHVyZU1hcCYgcmVtYXBwZXIpCisgICAgeworICAgICAgICBUVHlwZSAqbmV3VHlwZSA9IG5ldyBU
VHlwZSgpOworICAgICAgICBuZXdUeXBlLT5jb3B5VHlwZSgqdGhpcywgcmVtYXBwZXIpOworCisg
ICAgICAgIHJldHVybiBuZXdUeXBlOwogICAgIH0KIAogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNU
eXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZTsgfQpAQCAtMTE4LDcgKzExOSwyMiBAQCBwdWJsaWM6
CiAgICAgaW50IGdldE5vbWluYWxTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZTsgfQogICAgIHZv
aWQgc2V0Tm9taW5hbFNpemUoaW50IHMpIHsgc2l6ZSA9IHM7IH0KICAgICAvLyBGdWxsIHNpemUg
b2Ygc2luZ2xlIGluc3RhbmNlIG9mIHR5cGUKLSAgICBzaXplX3QgZ2V0T2JqZWN0U2l6ZSgpIGNv
bnN0OworICAgIGludCBnZXRPYmplY3RTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIGludCB0
b3RhbFNpemU7CisKKyAgICAgICAgaWYgKGdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKKyAg
ICAgICAgICAgIHRvdGFsU2l6ZSA9IGdldFN0cnVjdFNpemUoKTsKKyAgICAgICAgZWxzZSBpZiAo
bWF0cml4KQorICAgICAgICAgICAgdG90YWxTaXplID0gc2l6ZSAqIHNpemU7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemU7CisKKyAgICAgICAgaWYgKGlzQXJyYXko
KSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBzdGQ6Om1heChnZXRBcnJheVNpemUoKSwgZ2V0
TWF4QXJyYXlTaXplKCkpOworCisgICAgICAgIHJldHVybiB0b3RhbFNpemU7CisgICAgfQogCiAg
ICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1hdHJpeCA/IHRydWUgOiBmYWxzZTsg
fQogICAgIHZvaWQgc2V0TWF0cml4KGJvb2wgbSkgeyBtYXRyaXggPSBtOyB9CkBAIC0xMjYsMjAg
KzE0Miw0NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FycmF5KCkgY29uc3QgIHsgcmV0dXJuIGFy
cmF5ID8gdHJ1ZSA6IGZhbHNlOyB9CiAgICAgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIGFycmF5U2l6ZTsgfQogICAgIHZvaWQgc2V0QXJyYXlTaXplKGludCBzKSB7IGFycmF5ID0g
dHJ1ZTsgYXJyYXlTaXplID0gczsgfQotICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKSB7IGFycmF5
ID0gZmFsc2U7IGFycmF5U2l6ZSA9IDA7IH0KKyAgICBpbnQgZ2V0TWF4QXJyYXlTaXplICgpIGNv
bnN0IHsgcmV0dXJuIG1heEFycmF5U2l6ZTsgfQorICAgIHZvaWQgc2V0TWF4QXJyYXlTaXplIChp
bnQgcykgeyBtYXhBcnJheVNpemUgPSBzOyB9CisgICAgdm9pZCBjbGVhckFycmF5bmVzcygpIHsg
YXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgbWF4QXJyYXlTaXplID0gMDsgfQorICAgIHZv
aWQgc2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoVFR5cGUqIHQpIHsgYXJyYXlJbmZvcm1hdGlvblR5
cGUgPSB0OyB9CisgICAgVFR5cGUqIGdldEFycmF5SW5mb3JtYXRpb25UeXBlKCkgY29uc3QgeyBy
ZXR1cm4gYXJyYXlJbmZvcm1hdGlvblR5cGU7IH0KIAogICAgIGJvb2wgaXNWZWN0b3IoKSBjb25z
dCB7IHJldHVybiBzaXplID4gMSAmJiAhbWF0cml4OyB9CiAgICAgYm9vbCBpc1NjYWxhcigpIGNv
bnN0IHsgcmV0dXJuIHNpemUgPT0gMSAmJiAhbWF0cml4ICYmICFzdHJ1Y3R1cmU7IH0KIAotICAg
IFRTdHJ1Y3R1cmUqIGdldFN0cnVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZTsgfQotICAg
IHZvaWQgc2V0U3RydWN0KFRTdHJ1Y3R1cmUqIHMpIHsgc3RydWN0dXJlID0gczsgfQorICAgIFRU
eXBlTGlzdCogZ2V0U3RydWN0KCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlOyB9CisgICAgdm9p
ZCBzZXRTdHJ1Y3QoVFR5cGVMaXN0KiBzKSB7IHN0cnVjdHVyZSA9IHM7IGNvbXB1dGVEZWVwZXN0
U3RydWN0TmVzdGluZygpOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBnZXRUeXBlTmFtZSgpIGNv
bnN0CisgICAgeworICAgICAgICBhc3NlcnQodHlwZU5hbWUpOworICAgICAgICByZXR1cm4gKnR5
cGVOYW1lOworICAgIH0KKyAgICB2b2lkIHNldFR5cGVOYW1lKGNvbnN0IFRTdHJpbmcmIG4pCisg
ICAgeworICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7CisgICAg
fQorCisgICAgYm9vbCBpc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmllbGROYW1lICE9IDA7IH0K
KyAgICBjb25zdCBUU3RyaW5nJiBnZXRGaWVsZE5hbWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
YXNzZXJ0KGZpZWxkTmFtZSk7CisgICAgICAgIHJldHVybiAqZmllbGROYW1lOworICAgIH0KKyAg
ICB2b2lkIHNldEZpZWxkTmFtZShjb25zdCBUU3RyaW5nJiBuKQorICAgIHsKKyAgICAgICAgZmll
bGROYW1lID0gTmV3UG9vbFRTdHJpbmcobi5jX3N0cigpKTsKKyAgICB9CiAKLSAgICBjb25zdCBU
U3RyaW5nJiBnZXRNYW5nbGVkTmFtZSgpIGNvbnN0IHsKLSAgICAgICAgaWYgKG1hbmdsZWQuZW1w
dHkoKSkgewotICAgICAgICAgICAgbWFuZ2xlZCA9IGJ1aWxkTWFuZ2xlZE5hbWUoKTsKLSAgICAg
ICAgICAgIG1hbmdsZWQgKz0gJzsnOworICAgIFRTdHJpbmcmIGdldE1hbmdsZWROYW1lKCkgewor
ICAgICAgICBpZiAoIW1hbmdsZWQpIHsKKyAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQb29sVFN0
cmluZygiIik7CisgICAgICAgICAgICBidWlsZE1hbmdsZWROYW1lKCptYW5nbGVkKTsKKyAgICAg
ICAgICAgICptYW5nbGVkICs9ICc7JyA7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1hbmds
ZWQ7CisKKyAgICAgICAgcmV0dXJuICptYW5nbGVkOwogICAgIH0KIAogICAgIGJvb2wgc2FtZUVs
ZW1lbnRUeXBlKGNvbnN0IFRUeXBlJiByaWdodCkgY29uc3QgewpAQCAtMTg3LDM0ICsyMzAsMzIg
QEAgcHVibGljOgogICAgIC8vIEZvciB0eXBlICJuZXN0aW5nMiIsIHRoaXMgbWV0aG9kIHdvdWxk
IHJldHVybiAyIC0tIHRoZSBudW1iZXIKICAgICAvLyBvZiBzdHJ1Y3R1cmVzIHRocm91Z2ggd2hp
Y2ggaW5kaXJlY3Rpb24gbXVzdCBvY2N1ciB0byByZWFjaCB0aGUKICAgICAvLyBkZWVwZXN0IGZp
ZWxkIChuZXN0aW5nMi5maWVsZDEucG9zaXRpb24pLgotICAgIGludCBnZXREZWVwZXN0U3RydWN0
TmVzdGluZygpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+
ZGVlcGVzdE5lc3RpbmcoKSA6IDA7Ci0gICAgfQorICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOyB9CiAKLSAgICBib29s
IGlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIHN0
cnVjdHVyZSA/IHN0cnVjdHVyZS0+Y29udGFpbnNBcnJheXMoKSA6IGZhbHNlOwotICAgIH0KKyAg
ICBib29sIGlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpIGNvbnN0OwogCi1wcml2YXRlOgot
ICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0OworcHJvdGVjdGVkOgorICAgIHZv
aWQgYnVpbGRNYW5nbGVkTmFtZShUU3RyaW5nJik7CisgICAgaW50IGdldFN0cnVjdFNpemUoKSBj
b25zdDsKKyAgICB2b2lkIGNvbXB1dGVEZWVwZXN0U3RydWN0TmVzdGluZygpOwogCi0jaWZkZWYg
X19HTlVDX18KLSAgICBUQmFzaWNUeXBlIHR5cGU7Ci0gICAgVFByZWNpc2lvbiBwcmVjaXNpb247
Ci0gICAgVFF1YWxpZmllciBxdWFsaWZpZXI7Ci0jZWxzZQogICAgIFRCYXNpY1R5cGUgdHlwZSAg
ICAgIDogNjsKICAgICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKICAgICBUUXVhbGlmaWVyIHF1YWxp
ZmllciA6IDc7Ci0jZW5kaWYKICAgICBpbnQgc2l6ZSAgICAgICAgICAgICA6IDg7IC8vIHNpemUg
b2YgdmVjdG9yIG9yIG1hdHJpeCwgbm90IHNpemUgb2YgYXJyYXkKICAgICB1bnNpZ25lZCBpbnQg
bWF0cml4ICA6IDE7CiAgICAgdW5zaWduZWQgaW50IGFycmF5ICAgOiAxOwogICAgIGludCBhcnJh
eVNpemU7CisgICAgaW50IG1heEFycmF5U2l6ZTsKKyAgICBUVHlwZSogYXJyYXlJbmZvcm1hdGlv
blR5cGU7CiAKLSAgICBUU3RydWN0dXJlKiBzdHJ1Y3R1cmU7ICAgICAgLy8gMCB1bmxlc3MgdGhp
cyBpcyBhIHN0cnVjdAorICAgIFRUeXBlTGlzdCogc3RydWN0dXJlOyAgICAgIC8vIDAgdW5sZXNz
IHRoaXMgaXMgYSBzdHJ1Y3QKKyAgICBtdXRhYmxlIGludCBzdHJ1Y3R1cmVTaXplOworICAgIGlu
dCBkZWVwZXN0U3RydWN0TmVzdGluZzsKIAotICAgIG11dGFibGUgVFN0cmluZyBtYW5nbGVkOwor
ICAgIFRTdHJpbmcgKmZpZWxkTmFtZTsgICAgICAgICAvLyBmb3Igc3RydWN0dXJlIGZpZWxkIG5h
bWVzCisgICAgVFN0cmluZyAqbWFuZ2xlZDsKKyAgICBUU3RyaW5nICp0eXBlTmFtZTsgICAgICAg
ICAgLy8gZm9yIHN0cnVjdHVyZSBmaWVsZCB0eXBlIG5hbWUKIH07CiAKIC8vCkBAIC0yMzYsOSAr
Mjc3LDkgQEAgc3RydWN0IFRQdWJsaWNUeXBlCiAgICAgYm9vbCBhcnJheTsKICAgICBpbnQgYXJy
YXlTaXplOwogICAgIFRUeXBlKiB1c2VyRGVmOwotICAgIFRTb3VyY2VMb2MgbGluZTsKKyAgICBp
bnQgbGluZTsKIAotICAgIHZvaWQgc2V0QmFzaWMoVEJhc2ljVHlwZSBidCwgVFF1YWxpZmllciBx
LCBjb25zdCBUU291cmNlTG9jJiBsbikKKyAgICB2b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUgYnQs
IFRRdWFsaWZpZXIgcSwgaW50IGxuID0gMCkKICAgICB7CiAgICAgICAgIHR5cGUgPSBidDsKICAg
ICAgICAgcXVhbGlmaWVyID0gcTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAKaW5kZXggODRkYjgwNy4uZWI2YmVhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5m
by5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxl
SW5mby5jcHAKQEAgLTEzMSwxMyArMTMxLDEyIEBAIHZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJs
ZUluZm8oY29uc3QgVFR5cGUmIHR5cGUsCiB7CiAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0U3RydWN0KTsKIAotICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUu
Z2V0U3RydWN0KCktPmZpZWxkcygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUgPSAqKGZpZWxk
c1tpXS0+dHlwZSgpKTsKLSAgICAgICAgY29uc3QgVFN0cmluZyYgZmllbGROYW1lID0gZmllbGRz
W2ldLT5uYW1lKCk7Ci0gICAgICAgIGdldFZhcmlhYmxlSW5mbyhmaWVsZFR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBuYW1lICsgIi4iICsgZmllbGROYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmllbGRO
YW1lLCBoYXNoRnVuY3Rpb24pLAorICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlw
ZS5nZXRTdHJ1Y3QoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJl
KVtpXS50eXBlOworICAgICAgICBnZXRWYXJpYWJsZUluZm8oKmZpZWxkVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWUgKyAiLiIgKyBmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJz
ZXI6Omhhc2goZmllbGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwgaGFzaEZ1bmN0aW9uKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZm9MaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgaGFz
aEZ1bmN0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTIwYzgyNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjg5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0vLyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0vLyBUaGlzIGZpbGUg
aXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3RhYmxlLnB5LgotLy8gICAg
ICAgICAgICAgICAgICogRE8gTk9UIEhBTkQgTU9ESUZZICoKLS8vICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSNpbmNsdWRlICJj
b21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJv
bFRhYmxlLmgiCi0KLXN0YXRpYyB2b2lkIGJ1aWx0aW4xKFRTeW1ib2xUYWJsZSogdCwgVFR5cGUq
IHJ2YWx1ZSwgY29uc3QgY2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hhciogcG5h
bWUxKQotewotICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5nKG5hbWUp
LCAqcnZhbHVlKTsKLSAgVFBhcmFtZXRlciBwYXJhbSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBw
dHlwZTF9OwotICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0pOwotICB0LT5pbnNlcnQoKmYpOwotfQot
Ci1zdGF0aWMgdm9pZCBidWlsdGluMihUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNv
bnN0IGNoYXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUq
IHB0eXBlMiwgY29uc3QgY2hhciogcG5hbWUyKQotewotICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1
bmN0aW9uKG5ldyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKLSAgVFBhcmFtZXRlciBwYXJhbTEg
PSB7bmV3IFRTdHJpbmcocG5hbWUxKSwgcHR5cGUxfTsKLSAgZi0+YWRkUGFyYW1ldGVyKHBhcmFt
MSk7Ci0gIFRQYXJhbWV0ZXIgcGFyYW0yID0ge25ldyBUU3RyaW5nKHBuYW1lMiksIHB0eXBlMn07
Ci0gIGYtPmFkZFBhcmFtZXRlcihwYXJhbTIpOwotICB0LT5pbnNlcnQoKmYpOwotfQotCi1zdGF0
aWMgdm9pZCBidWlsdGluMyhUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNvbnN0IGNo
YXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUqIHB0eXBl
MiwgY29uc3QgY2hhciogcG5hbWUyLCBUVHlwZSogcHR5cGUzLCBjb25zdCBjaGFyKiBwbmFtZTMp
Ci17Ci0gIFRGdW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRTdHJpbmcobmFtZSksICpy
dmFsdWUpOwotICBUUGFyYW1ldGVyIHBhcmFtMSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBwdHlw
ZTF9OwotICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0xKTsKLSAgVFBhcmFtZXRlciBwYXJhbTIgPSB7
bmV3IFRTdHJpbmcocG5hbWUyKSwgcHR5cGUyfTsKLSAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMik7
Ci0gIFRQYXJhbWV0ZXIgcGFyYW0zID0ge25ldyBUU3RyaW5nKHBuYW1lMyksIHB0eXBlM307Ci0g
IGYtPmFkZFBhcmFtZXRlcihwYXJhbTMpOwotICB0LT5pbnNlcnQoKmYpOwotfQotCi12b2lkIElu
c2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNv
dXJjZXMsIFRTeW1ib2xUYWJsZSogdCkgewotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5z
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImRlZ3JlZXMiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJkZWdyZWVzIik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
ZGVncmVlcyIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImRlZ3Jl
ZXMiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7
Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIpOwotICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiKTsKLSAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7Ci0gICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJz
aW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiYW5nbGUiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic2luIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
ImFuZ2xlIik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOwot
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKLSAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
ImNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJhbmdsZSIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb3MiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiYW5nbGUiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7
Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOwotICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKLSAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFzaW4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhc2luIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAiYXNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgImFzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhY29zIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWNvcyIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0g
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgImFjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJhY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5X292
ZXJfeCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInlfb3Zlcl94Iik7
Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieV9vdmVyX3giKTsKLSAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOwotICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgInBvdyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAicG93IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJw
b3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0g
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cDIiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJleHAyIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAiZXhwMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2cyIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibG9nMiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgImxvZzIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJsb2cyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic3FydCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNxcnQiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAic3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImludmVyc2Vz
cXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNxcnQiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNlc3FydCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4
Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgInNpZ24iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzaWduIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAiZmxvb3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJmbG9vciIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
LSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgImNlaWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjZWls
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7
Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJm
cmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIp
OwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0g
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1p
biIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInki
KTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOwot
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMyh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7Ci0g
ICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgIm1heFZhbCIpOwotICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKLSAgICBidWlsdGluMyh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7Ci0g
ICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIm1heFZhbCIpOwotICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKLSAgICBidWlsdGluMyh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7Ci0g
ICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
YSIpOwotICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImEiKTsKLSAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJhIik7Ci0gICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOwotICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImEiKTsKLSAgICBidWlsdGluMyh0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
bWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhIik7Ci0gICAgYnVpbHRpbjModCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYSIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0
aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKLSAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJl
ZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjModCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOwot
ICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
ImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjMo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIpOwotICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2Uw
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVu
Z3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKLSAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKLSAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKLSAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKLSAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJkb3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJjcm9zcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
bm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXpl
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAg
ICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgIk5yZWYiKTsKLSAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKLSAgICBidWlsdGluMyh0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
ZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKLSAgICBi
dWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIk5yZWYiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgIk4iKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJJIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIk4iKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIk4iKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIk4iKTsKLSAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiZXRhIik7Ci0gICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInJlZnJhY3Qi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV0YSIpOwotICAgIGJ1aWx0aW4zKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJyZWZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJldGEiKTsKLSAgICBi
dWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
ZXRhIik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgdHJ1ZSwgZmFsc2UpLCAibWF0cml4Q29tcE11bHQiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVlLCBmYWxzZSksICJ4Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSwgZmFs
c2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENvbXBNdWx0IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUs
IGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxzZSksICJtYXRyaXhDb21wTXVsdCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0
cnVlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5ldyBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuIiwgbmV3IFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVh
bCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1
YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVx
dWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRo
YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRl
clRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZ3Jl
YXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
Z3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJn
cmVhdGVyVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImdy
ZWF0ZXJUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3Jl
YXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0g
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIp
OwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iiwg
bmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5
Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7
Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVx
dWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBu
ZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iiwg
bmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieSIpOwotICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InkiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5
Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW55IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImFueSIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbnkiLCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWxsIiwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwotICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImFsbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJh
bGwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90IiwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwot
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKLSAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJub3QiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ4Iik7Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRCIs
IG5ldyBUVHlwZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOwotICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ0ZXh0dXJlMkRQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7
Ci0gICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUoRWJ0U2Ft
cGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBs
ZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAiY29vcmQiKTsKLSAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZUN1YmUi
LCBuZXcgVFR5cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOwotICAgIGlmIChyZXNvdXJj
ZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgewotICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
dGV4dHVyZTJEIiwgbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7
Ci0gICAgfQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgewotICAg
ICAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5ldyBUVHlwZShFYnRTYW1w
bGVyRXh0ZXJuYWxPRVMsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOwotICAgIH0KLSAgICBpZiAocmVzb3VyY2VzLk9F
U19FR0xfaW1hZ2VfZXh0ZXJuYWwpIHsKLSAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1
cmUyRFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsK
LSAgICB9Ci0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKLSAgICAg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3QiLCBuZXcgVFR5cGUoRWJ0U2FtcGxl
cjJEUmVjdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1w
bGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgImNvb3JkIik7Ci0gICAgfQotICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1
cmVfcmVjdGFuZ2xlKSB7Ci0gICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRSZWN0
UHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKLSAgICB9Ci0g
ICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKLSAgICAgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3RQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRFJl
Y3QsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJjb29yZCIpOwotICAgIH0KLX0KLQotdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25z
VmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUq
IHQpIHsKLSAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJETG9kIiwgbmV3IFRUeXBlKEVi
dFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJz
YW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOwotICAgIGJ1aWx0aW4zKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ0ZXh0dXJlMkRQcm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3Jk
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImxvZCIpOwotICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qTG9k
IiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOwotICAg
IGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlQ3ViZUxvZCIsIG5ldyBUVHlwZShFYnRTYW1wbGVy
Q3ViZSwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVy
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTA0YjYxLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLSNpZm5k
ZWYgX0JVSUxUSU5fU1lNQk9MX1RBQkxFX0lOQ0xVREVEXwotI2RlZmluZSBfQlVJTFRJTl9TWU1C
T0xfVEFCTEVfSU5DTFVERURfCi0KLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLQot
Y2xhc3MgVFN5bWJvbFRhYmxlOwotCi1leHRlcm4gdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25z
Q29tbW9uKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUq
IHQpOwotZXh0ZXJuIHZvaWQgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc1ZlcnRleChjb25zdCBTaEJ1
aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcywgVFN5bWJvbFRhYmxlKiB0KTsKLQotI2VuZGlmIC8v
IF9CVUlMVElOX1NZTUJPTF9UQUJMRV9JTkNMVURFRF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbHMuanNvbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbHMuanNvbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDM3OGM5OC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xzLmpzb24KKysrIC9kZXYv
bnVsbApAQCAtMSwxODE2ICswLDAgQEAKLXsKLSJ0dHlwZW1hcCIgOiB7Ci0gImZsb2F0IjoibmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSIsCi0gImludCI6Im5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpIiwKLSAiYm9vbCI6Im5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSIsCi0gInZlYzIiOiJuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpIiwKLSAidmVj
MyI6Im5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSkiLAotICJ2ZWM0IjoibmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSIsCi0gImJ2ZWMyIjoibmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpIiwKLSAiYnZlYzMiOiJu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSkiLAotICJidmVjNCI6Im5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSIsCi0gIml2ZWMyIjoibmV3IFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSkiLAotICJpdmVjMyI6Im5ldyBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpIiwKLSAi
aXZlYzQiOiJuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSIsCi0gIm1hdDIiOiJuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCB0cnVlLCBmYWxzZSkiLAotICJtYXQzIjoibmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSwgZmFsc2UpIiwKLSAibWF0NCI6Im5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUsIGZhbHNl
KSIsCi0gInNhbXBsZXIyRCI6Im5ldyBUVHlwZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpIiwKLSAic2FtcGxlckN1YmUiOiJuZXcgVFR5cGUo
RWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
IiwKLSAic2FtcGxlckV4dGVybmFsT0VTIjoibmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9F
UywgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSkiLAotICJzYW1wbGVy
MkRSZWN0IjoibmV3IFRUeXBlKEVidFNhbXBsZXIyRFJlY3QsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpIgotfSwKLQotImNvbW1vbiIgOiBbCi0gewotICAibmFtZSI6
ICJyYWRpYW5zIiwKLSAgInJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsK
LSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogImRlZ3JlZXMifQotICBdCi0gfSwKLSB7Ci0g
ICJuYW1lIjogInJhZGlhbnMiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0
ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogImRlZ3JlZXMifQotICBdCi0gfSwK
LSB7Ci0gICJuYW1lIjogInJhZGlhbnMiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJw
YXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogImRlZ3JlZXMifQotICBd
Ci0gfSwKLSB7Ci0gICJuYW1lIjogInJhZGlhbnMiLAotICAicmV0dXJuX3R5cGUiOiAidmVjNCIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogImRlZ3JlZXMi
fQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImRlZ3JlZXMiLAotICAicmV0dXJuX3R5cGUiOiAi
ZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAi
cmFkaWFucyJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZGVncmVlcyIsCi0gICJyZXR1cm5f
dHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5h
bWUiOiAicmFkaWFucyJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZGVncmVlcyIsCi0gICJy
ZXR1cm5fdHlwZSI6ICJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMz
IiwgIm5hbWUiOiAicmFkaWFucyJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZGVncmVlcyIs
Ci0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6
ICJ2ZWM0IiwgIm5hbWUiOiAicmFkaWFucyJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic2lu
IiwKLSAgInJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlw
ZSI6ICJmbG9hdCIsICJuYW1lIjogImFuZ2xlIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJz
aW4iLAotICAicmV0dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5
cGUiOiAidmVjMiIsICJuYW1lIjogImFuZ2xlIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJz
aW4iLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5
cGUiOiAidmVjMyIsICJuYW1lIjogImFuZ2xlIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJz
aW4iLAotICAicmV0dXJuX3R5cGUiOiAidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5
cGUiOiAidmVjNCIsICJuYW1lIjogImFuZ2xlIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJj
b3MiLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0
eXBlIjogImZsb2F0IiwgIm5hbWUiOiAiYW5nbGUifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjog
ImNvcyIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsi
dHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAiYW5nbGUifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjog
ImNvcyIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsi
dHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAiYW5nbGUifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjog
ImNvcyIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsi
dHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAiYW5nbGUifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjog
InRhbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7
InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJhbmdsZSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUi
OiAidGFuIiwKLSAgInJldHVybl90eXBlIjogInZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJhbmdsZSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUi
OiAidGFuIiwKLSAgInJldHVybl90eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJhbmdsZSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUi
OiAidGFuIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJhbmdsZSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUi
OiAiYXNpbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0g
ICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6
ICJhc2luIiwKLSAgInJldHVybl90eXBlIjogInZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJh
c2luIiwKLSAgInJldHVybl90eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0
eXBlIjogInZlYzMiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJhc2lu
IiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBl
IjogInZlYzQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJhY29zIiwK
LSAgInJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6
ICJmbG9hdCIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImFjb3MiLAot
ICAicmV0dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAi
dmVjMiIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImFjb3MiLAotICAi
cmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVj
MyIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImFjb3MiLAotICAicmV0
dXJuX3R5cGUiOiAidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIs
ICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImF0YW4iLAotICAicmV0dXJu
X3R5cGUiOiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0Iiwg
Im5hbWUiOiAieSJ9LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9
LAotIHsKLSAgIm5hbWUiOiAiYXRhbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBh
cmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieSJ9LAotICAgeyJ0eXBl
IjogInZlYzIiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJhdGFuIiwK
LSAgInJldHVybl90eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjog
InZlYzMiLCAibmFtZSI6ICJ5In0sCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifQot
ICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImF0YW4iLAotICAicmV0dXJuX3R5cGUiOiAidmVjNCIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogInkifSwKLSAg
IHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAi
YXRhbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7
InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ5X292ZXJfeCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAiYXRhbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsK
LSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieV9vdmVyX3gifQotICBdCi0gfSwKLSB7Ci0g
ICJuYW1lIjogImF0YW4iLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIi
OiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogInlfb3Zlcl94In0KLSAgXQotIH0sCi0g
ewotICAibmFtZSI6ICJhdGFuIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1l
dGVyIjogWwotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ5X292ZXJfeCJ9Ci0gIF0KLSB9
LAotIHsKLSAgIm5hbWUiOiAicG93IiwKLSAgInJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBh
cmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogIngifSwKLSAgIHsidHlw
ZSI6ICJmbG9hdCIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInBvdyIs
Ci0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6
ICJ2ZWMyIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ5In0K
LSAgXQotIH0sCi0gewotICAibmFtZSI6ICJwb3ciLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifSwKLSAg
IHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAi
cG93IiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0
eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjog
InkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImV4cCIsCi0gICJyZXR1cm5fdHlwZSI6ICJm
bG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ4
In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJleHAiLAotICAicmV0dXJuX3R5cGUiOiAidmVj
MiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogIngifQot
ICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImV4cCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMzIiwK
LSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieCJ9Ci0gIF0K
LSB9LAotIHsKLSAgIm5hbWUiOiAiZXhwIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAi
cGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0s
Ci0gewotICAibmFtZSI6ICJsb2ciLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQiLAotICAicGFy
YW1ldGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAot
IHsKLSAgIm5hbWUiOiAibG9nIiwKLSAgInJldHVybl90eXBlIjogInZlYzIiLAotICAicGFyYW1l
dGVyIjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewot
ICAibmFtZSI6ICJsb2ciLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIi
OiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJu
YW1lIjogImxvZyIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsK
LSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUi
OiAiZXhwMiIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0g
ICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6
ICJleHAyIiwKLSAgInJldHVybl90eXBlIjogInZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJl
eHAyIiwKLSAgInJldHVybl90eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0
eXBlIjogInZlYzMiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJleHAy
IiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBl
IjogInZlYzQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJsb2cyIiwK
LSAgInJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6
ICJmbG9hdCIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImxvZzIiLAot
ICAicmV0dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAi
dmVjMiIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImxvZzIiLAotICAi
cmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVj
MyIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImxvZzIiLAotICAicmV0
dXJuX3R5cGUiOiAidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIs
ICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInNxcnQiLAotICAicmV0dXJu
X3R5cGUiOiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0Iiwg
Im5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic3FydCIsCi0gICJyZXR1cm5f
dHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5h
bWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic3FydCIsCi0gICJyZXR1cm5fdHlw
ZSI6ICJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUi
OiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic3FydCIsCi0gICJyZXR1cm5fdHlwZSI6
ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAi
eCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiaW52ZXJzZXNxcnQiLAotICAicmV0dXJuX3R5
cGUiOiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5h
bWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiaW52ZXJzZXNxcnQiLAotICAicmV0
dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIs
ICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImludmVyc2VzcXJ0IiwKLSAg
InJldHVybl90eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZl
YzMiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJpbnZlcnNlc3FydCIs
Ci0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6
ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiYWJzIiwKLSAg
InJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJm
bG9hdCIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImFicyIsCi0gICJy
ZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMy
IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiYWJzIiwKLSAgInJldHVy
bl90eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzMiLCAi
bmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJhYnMiLAotICAicmV0dXJuX3R5
cGUiOiAidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1l
IjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInNpZ24iLAotICAicmV0dXJuX3R5cGUi
OiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUi
OiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic2lnbiIsCi0gICJyZXR1cm5fdHlwZSI6
ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAi
eCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic2lnbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2
ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieCJ9
Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic2lnbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0
IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0g
IF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZmxvb3IiLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQi
LAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAieCJ9Ci0g
IF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZmxvb3IiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMiIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogIngifQotICBd
Ci0gfSwKLSB7Ci0gICJuYW1lIjogImZsb29yIiwKLSAgInJldHVybl90eXBlIjogInZlYzMiLAot
ICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ4In0KLSAgXQot
IH0sCi0gewotICAibmFtZSI6ICJmbG9vciIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAg
InBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9
LAotIHsKLSAgIm5hbWUiOiAiY2VpbCIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJw
YXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0s
Ci0gewotICAibmFtZSI6ICJjZWlsIiwKLSAgInJldHVybl90eXBlIjogInZlYzIiLAotICAicGFy
YW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0g
ewotICAibmFtZSI6ICJjZWlsIiwKLSAgInJldHVybl90eXBlIjogInZlYzMiLAotICAicGFyYW1l
dGVyIjogWwotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewot
ICAibmFtZSI6ICJjZWlsIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVy
IjogWwotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAi
bmFtZSI6ICJmcmFjdCIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIi
OiBbCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAi
bmFtZSI6ICJmcmFjdCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6
IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAiZnJhY3QiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBb
Ci0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1l
IjogImZyYWN0IiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwot
ICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6
ICJtb2QiLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5h
bWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibW9kIiwKLSAgInJldHVybl90eXBl
IjogInZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6
ICJ4In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewot
ICAibmFtZSI6ICJtb2QiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIi
OiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJmbG9h
dCIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogIm1vZCIsCi0gICJyZXR1
cm5fdHlwZSI6ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0Iiwg
Im5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9
LAotIHsKLSAgIm5hbWUiOiAibW9kIiwKLSAgInJldHVybl90eXBlIjogInZlYzIiLAotICAicGFy
YW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUi
OiAidmVjMiIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogIm1vZCIsCi0g
ICJyZXR1cm5fdHlwZSI6ICJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2
ZWMzIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ5In0KLSAg
XQotIH0sCi0gewotICAibmFtZSI6ICJtb2QiLAotICAicmV0dXJuX3R5cGUiOiAidmVjNCIsCi0g
ICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIngifSwKLSAgIHsi
dHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibWlu
IiwKLSAgInJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlw
ZSI6ICJmbG9hdCIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjog
InkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogIm1pbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2
ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieCJ9
LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAibWluIiwKLSAgInJldHVybl90eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwot
ICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAi
bmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJtaW4iLAotICAicmV0dXJuX3R5
cGUiOiAidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1l
IjogIngifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7
Ci0gICJuYW1lIjogIm1pbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRl
ciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZl
YzIiLCAibmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJtaW4iLAotICAicmV0
dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMyIs
ICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9
LAotIHsKLSAgIm5hbWUiOiAibWluIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFy
YW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUi
OiAidmVjNCIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogIm1heCIsCi0g
ICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAi
ZmxvYXQiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ5In0K
LSAgXQotIH0sCi0gewotICAibmFtZSI6ICJtYXgiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMiIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogIngifSwKLSAg
IHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjog
Im1heCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsi
dHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUi
OiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibWF4IiwKLSAgInJldHVybl90eXBlIjog
InZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4
In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewotICAi
bmFtZSI6ICJtYXgiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBb
Ci0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWMyIiwg
Im5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibWF4IiwKLSAgInJldHVybl90
eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzMiLCAibmFt
ZSI6ICJ4In0sCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7
Ci0gICJuYW1lIjogIm1heCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAgInBhcmFtZXRl
ciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZl
YzQiLCAibmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJjbGFtcCIsCi0gICJy
ZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAiZmxv
YXQiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJtaW5WYWwi
fSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogIm1heFZhbCJ9Ci0gIF0KLSB9LAotIHsK
LSAgIm5hbWUiOiAiY2xhbXAiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0
ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJm
bG9hdCIsICJuYW1lIjogIm1pblZhbCJ9LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAi
bWF4VmFsIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJjbGFtcCIsCi0gICJyZXR1cm5fdHlw
ZSI6ICJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUi
OiAieCJ9LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAibWluVmFsIn0sCi0gICB7InR5
cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJtYXhWYWwifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjog
ImNsYW1wIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFt
ZSI6ICJtaW5WYWwifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogIm1heFZhbCJ9Ci0g
IF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiY2xhbXAiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMiIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogIngifSwKLSAg
IHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAibWluVmFsIn0sCi0gICB7InR5cGUiOiAidmVjMiIs
ICJuYW1lIjogIm1heFZhbCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiY2xhbXAiLAotICAi
cmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVj
MyIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAibWluVmFsIn0s
Ci0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIm1heFZhbCJ9Ci0gIF0KLSB9LAotIHsKLSAg
Im5hbWUiOiAiY2xhbXAiLAotICAicmV0dXJuX3R5cGUiOiAidmVjNCIsCi0gICJwYXJhbWV0ZXIi
OiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWM0
IiwgIm5hbWUiOiAibWluVmFsIn0sCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIm1heFZh
bCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibWl4IiwKLSAgInJldHVybl90eXBlIjogImZs
b2F0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogIngi
fSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogInkifSwKLSAgIHsidHlwZSI6ICJmbG9h
dCIsICJuYW1lIjogImEifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogIm1peCIsCi0gICJyZXR1
cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwg
Im5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ5In0sCi0gICB7InR5
cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJhIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJtaXgi
LAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUi
OiAidmVjMyIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieSJ9
LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAiYSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAibWl4IiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwot
ICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAidmVjNCIsICJu
YW1lIjogInkifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogImEifQotICBdCi0gfSwK
LSB7Ci0gICJuYW1lIjogIm1peCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFt
ZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjog
InZlYzIiLCAibmFtZSI6ICJ5In0sCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogImEifQot
ICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogIm1peCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMzIiwK
LSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieCJ9LAotICAg
eyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ5In0sCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1l
IjogImEifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogIm1peCIsCi0gICJyZXR1cm5fdHlwZSI6
ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAi
eCJ9LAotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ5In0sCi0gICB7InR5cGUiOiAidmVj
NCIsICJuYW1lIjogImEifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInN0ZXAiLAotICAicmV0
dXJuX3R5cGUiOiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0
IiwgIm5hbWUiOiAiZWRnZSJ9LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAieCJ9Ci0g
IF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic3RlcCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwK
LSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAiZWRnZSJ9LAot
ICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6
ICJzdGVwIiwKLSAgInJldHVybl90eXBlIjogInZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJlZGdlIn0sCi0gICB7InR5cGUiOiAidmVjMyIsICJu
YW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInN0ZXAiLAotICAicmV0dXJuX3R5
cGUiOiAidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1l
IjogImVkZ2UifSwKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAot
IHsKLSAgIm5hbWUiOiAic3RlcCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMyIiwKLSAgInBhcmFt
ZXRlciI6IFsKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogImVkZ2UifSwKLSAgIHsidHlw
ZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic3RlcCIs
Ci0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6
ICJmbG9hdCIsICJuYW1lIjogImVkZ2UifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAi
eCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAic3RlcCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2
ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogImVk
Z2UifSwKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAg
Im5hbWUiOiAic21vb3Roc3RlcCIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJh
bWV0ZXIiOiBbCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJlZGdlMCJ9LAotICAgeyJ0
eXBlIjogImZsb2F0IiwgIm5hbWUiOiAiZWRnZTEifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJu
YW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInNtb290aHN0ZXAiLAotICAicmV0
dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIs
ICJuYW1lIjogImVkZ2UwIn0sCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogImVkZ2UxIn0s
Ci0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1l
IjogInNtb290aHN0ZXAiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIi
OiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogImVkZ2UwIn0sCi0gICB7InR5cGUiOiAi
dmVjMyIsICJuYW1lIjogImVkZ2UxIn0sCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngi
fQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInNtb290aHN0ZXAiLAotICAicmV0dXJuX3R5cGUi
OiAidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjog
ImVkZ2UwIn0sCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogImVkZ2UxIn0sCi0gICB7InR5
cGUiOiAidmVjNCIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInNtb290
aHN0ZXAiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7
InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJlZGdlMCJ9LAotICAgeyJ0eXBlIjogImZsb2F0Iiwg
Im5hbWUiOiAiZWRnZTEifSwKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieCJ9Ci0gIF0K
LSB9LAotIHsKLSAgIm5hbWUiOiAic21vb3Roc3RlcCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMz
IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogImVkZ2Uw
In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJlZGdlMSJ9LAotICAgeyJ0eXBlIjog
InZlYzMiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJzbW9vdGhzdGVw
IiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBl
IjogImZsb2F0IiwgIm5hbWUiOiAiZWRnZTAifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1l
IjogImVkZ2UxIn0sCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIngifQotICBdCi0gfSwK
LSB7Ci0gICJuYW1lIjogImxlbmd0aCIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJw
YXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0s
Ci0gewotICAibmFtZSI6ICJsZW5ndGgiLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQiLAotICAi
cGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0s
Ci0gewotICAibmFtZSI6ICJsZW5ndGgiLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQiLAotICAi
cGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0s
Ci0gewotICAibmFtZSI6ICJsZW5ndGgiLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQiLAotICAi
cGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0s
Ci0gewotICAibmFtZSI6ICJkaXN0YW5jZSIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0g
ICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJwMCJ9LAotICAg
eyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAicDEifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjog
ImRpc3RhbmNlIiwKLSAgInJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsK
LSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAicDAifSwKLSAgIHsidHlwZSI6ICJ2ZWMyIiwg
Im5hbWUiOiAicDEifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImRpc3RhbmNlIiwKLSAgInJl
dHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMz
IiwgIm5hbWUiOiAicDAifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAicDEifQotICBd
Ci0gfSwKLSB7Ci0gICJuYW1lIjogImRpc3RhbmNlIiwKLSAgInJldHVybl90eXBlIjogImZsb2F0
IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAicDAifSwK
LSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAicDEifQotICBdCi0gfSwKLSB7Ci0gICJuYW1l
IjogImRvdCIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0g
ICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAi
bmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJkb3QiLAotICAicmV0dXJuX3R5
cGUiOiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFt
ZSI6ICJ4In0sCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7
Ci0gICJuYW1lIjogImRvdCIsCi0gICJyZXR1cm5fdHlwZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0
ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2
ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZG90IiwKLSAgInJl
dHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0
IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJ5In0KLSAgXQot
IH0sCi0gewotICAibmFtZSI6ICJjcm9zcyIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMzIiwKLSAg
InBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0
eXBlIjogInZlYzMiLCAibmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJub3Jt
YWxpemUiLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAi
bm9ybWFsaXplIiwKLSAgInJldHVybl90eXBlIjogInZlYzIiLAotICAicGFyYW1ldGVyIjogWwot
ICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6
ICJub3JtYWxpemUiLAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBb
Ci0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifQotICBdCi0gfSwKLSB7Ci0gICJuYW1l
IjogIm5vcm1hbGl6ZSIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6
IFsKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAiZmFjZWZvcndhcmQiLAotICAicmV0dXJuX3R5cGUiOiAiZmxvYXQiLAotICAicGFyYW1l
dGVyIjogWwotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAiTiJ9LAotICAgeyJ0eXBlIjog
ImZsb2F0IiwgIm5hbWUiOiAiSSJ9LAotICAgeyJ0eXBlIjogImZsb2F0IiwgIm5hbWUiOiAiTnJl
ZiJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZmFjZWZvcndhcmQiLAotICAicmV0dXJuX3R5
cGUiOiAidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1l
IjogIk4ifSwKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAiSSJ9LAotICAgeyJ0eXBlIjog
InZlYzIiLCAibmFtZSI6ICJOcmVmIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJmYWNlZm9y
d2FyZCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsi
dHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAiTiJ9LAotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6
ICJJIn0sCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIk5yZWYifQotICBdCi0gfSwKLSB7
Ci0gICJuYW1lIjogImZhY2Vmb3J3YXJkIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAi
cGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJOIn0sCi0gICB7InR5
cGUiOiAidmVjNCIsICJuYW1lIjogIkkifSwKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAi
TnJlZiJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAicmVmbGVjdCIsCi0gICJyZXR1cm5fdHlw
ZSI6ICJmbG9hdCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFt
ZSI6ICJJIn0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJOIn0KLSAgXQotIH0sCi0g
ewotICAibmFtZSI6ICJyZWZsZWN0IiwKLSAgInJldHVybl90eXBlIjogInZlYzIiLAotICAicGFy
YW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJJIn0sCi0gICB7InR5cGUi
OiAidmVjMiIsICJuYW1lIjogIk4ifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInJlZmxlY3Qi
LAotICAicmV0dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUi
OiAidmVjMyIsICJuYW1lIjogIkkifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAiTiJ9
Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAicmVmbGVjdCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2
ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAiSSJ9
LAotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJOIn0KLSAgXQotIH0sCi0gewotICAibmFt
ZSI6ICJyZWZyYWN0IiwKLSAgInJldHVybl90eXBlIjogImZsb2F0IiwKLSAgInBhcmFtZXRlciI6
IFsKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogIkkifSwKLSAgIHsidHlwZSI6ICJmbG9h
dCIsICJuYW1lIjogIk4ifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogImV0YSJ9Ci0g
IF0KLSB9LAotIHsKLSAgIm5hbWUiOiAicmVmcmFjdCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWMy
IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAiSSJ9LAot
ICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJOIn0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAi
bmFtZSI6ICJldGEifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogInJlZnJhY3QiLAotICAicmV0
dXJuX3R5cGUiOiAidmVjMyIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMyIs
ICJuYW1lIjogIkkifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAiTiJ9LAotICAgeyJ0
eXBlIjogImZsb2F0IiwgIm5hbWUiOiAiZXRhIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJy
ZWZyYWN0IiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAg
eyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJJIn0sCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1l
IjogIk4ifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjogImV0YSJ9Ci0gIF0KLSB9LAot
IHsKLSAgIm5hbWUiOiAibWF0cml4Q29tcE11bHQiLAotICAicmV0dXJuX3R5cGUiOiAibWF0MiIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAibWF0MiIsICJuYW1lIjogIngifSwKLSAg
IHsidHlwZSI6ICJtYXQyIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAi
bWF0cml4Q29tcE11bHQiLAotICAicmV0dXJuX3R5cGUiOiAibWF0MyIsCi0gICJwYXJhbWV0ZXIi
OiBbCi0gICB7InR5cGUiOiAibWF0MyIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJtYXQz
IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibWF0cml4Q29tcE11bHQi
LAotICAicmV0dXJuX3R5cGUiOiAibWF0NCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUi
OiAibWF0NCIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJtYXQ0IiwgIm5hbWUiOiAieSJ9
Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibGVzc1RoYW4iLAotICAicmV0dXJuX3R5cGUiOiAi
YnZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4
In0sCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7Ci0gICJu
YW1lIjogImxlc3NUaGFuIiwKLSAgInJldHVybl90eXBlIjogImJ2ZWMzIiwKLSAgInBhcmFtZXRl
ciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZl
YzMiLCAibmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJsZXNzVGhhbiIsCi0g
ICJyZXR1cm5fdHlwZSI6ICJidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAi
dmVjNCIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieSJ9Ci0g
IF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibGVzc1RoYW4iLAotICAicmV0dXJuX3R5cGUiOiAiYnZl
YzIiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWMyIiwgIm5hbWUiOiAieCJ9
LAotICAgeyJ0eXBlIjogIml2ZWMyIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAibGVzc1RoYW4iLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzMiLAotICAicGFyYW1ldGVy
IjogWwotICAgeyJ0eXBlIjogIml2ZWMzIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogIml2
ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibGVzc1RoYW4iLAot
ICAicmV0dXJuX3R5cGUiOiAiYnZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjog
Iml2ZWM0IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogIml2ZWM0IiwgIm5hbWUiOiAieSJ9
Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibGVzc1RoYW5FcXVhbCIsCi0gICJyZXR1cm5fdHlw
ZSI6ICJidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1l
IjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsK
LSAgIm5hbWUiOiAibGVzc1RoYW5FcXVhbCIsCi0gICJyZXR1cm5fdHlwZSI6ICJidmVjMyIsCi0g
ICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifSwKLSAgIHsi
dHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibGVz
c1RoYW5FcXVhbCIsCi0gICJyZXR1cm5fdHlwZSI6ICJidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBb
Ci0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWM0Iiwg
Im5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibGVzc1RoYW5FcXVhbCIsCi0g
ICJyZXR1cm5fdHlwZSI6ICJidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAi
aXZlYzIiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAiaXZlYzIiLCAibmFtZSI6ICJ5In0K
LSAgXQotIH0sCi0gewotICAibmFtZSI6ICJsZXNzVGhhbkVxdWFsIiwKLSAgInJldHVybl90eXBl
IjogImJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJpdmVjMyIsICJuYW1l
IjogIngifSwKLSAgIHsidHlwZSI6ICJpdmVjMyIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7
Ci0gICJuYW1lIjogImxlc3NUaGFuRXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzQiLAot
ICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWM0IiwgIm5hbWUiOiAieCJ9LAotICAg
eyJ0eXBlIjogIml2ZWM0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAi
Z3JlYXRlclRoYW4iLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzIiLAotICAicGFyYW1ldGVyIjog
WwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAidmVjMiIs
ICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImdyZWF0ZXJUaGFuIiwKLSAg
InJldHVybl90eXBlIjogImJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2
ZWMzIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ5In0KLSAg
XQotIH0sCi0gewotICAibmFtZSI6ICJncmVhdGVyVGhhbiIsCi0gICJyZXR1cm5fdHlwZSI6ICJi
dmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIngi
fSwKLSAgIHsidHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAiZ3JlYXRlclRoYW4iLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzIiLAotICAicGFyYW1l
dGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWMyIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjog
Iml2ZWMyIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZ3JlYXRlclRo
YW4iLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0
eXBlIjogIml2ZWMzIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogIml2ZWMzIiwgIm5hbWUi
OiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZ3JlYXRlclRoYW4iLAotICAicmV0dXJu
X3R5cGUiOiAiYnZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWM0Iiwg
Im5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogIml2ZWM0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9
LAotIHsKLSAgIm5hbWUiOiAiZ3JlYXRlclRoYW5FcXVhbCIsCi0gICJyZXR1cm5fdHlwZSI6ICJi
dmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogIngi
fSwKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAiZ3JlYXRlclRoYW5FcXVhbCIsCi0gICJyZXR1cm5fdHlwZSI6ICJidmVjMyIsCi0gICJw
YXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjogIngifSwKLSAgIHsidHlw
ZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZ3JlYXRl
clRoYW5FcXVhbCIsCi0gICJyZXR1cm5fdHlwZSI6ICJidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBb
Ci0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWM0Iiwg
Im5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZ3JlYXRlclRoYW5FcXVhbCIs
Ci0gICJyZXR1cm5fdHlwZSI6ICJidmVjMiIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUi
OiAiaXZlYzIiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAiaXZlYzIiLCAibmFtZSI6ICJ5
In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJncmVhdGVyVGhhbkVxdWFsIiwKLSAgInJldHVy
bl90eXBlIjogImJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJpdmVjMyIs
ICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJpdmVjMyIsICJuYW1lIjogInkifQotICBdCi0g
fSwKLSB7Ci0gICJuYW1lIjogImdyZWF0ZXJUaGFuRXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAi
YnZlYzQiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWM0IiwgIm5hbWUiOiAi
eCJ9LAotICAgeyJ0eXBlIjogIml2ZWM0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAg
Im5hbWUiOiAiZXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzIiLAotICAicGFyYW1ldGVy
IjogWwotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAidmVj
MiIsICJuYW1lIjogInkifQotICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogImVxdWFsIiwKLSAgInJl
dHVybl90eXBlIjogImJ2ZWMzIiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMz
IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ5In0KLSAgXQot
IH0sCi0gewotICAibmFtZSI6ICJlcXVhbCIsCi0gICJyZXR1cm5fdHlwZSI6ICJidmVjNCIsCi0g
ICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIngifSwKLSAgIHsi
dHlwZSI6ICJ2ZWM0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZXF1
YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0
eXBlIjogIml2ZWMyIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogIml2ZWMyIiwgIm5hbWUi
OiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZXF1YWwiLAotICAicmV0dXJuX3R5cGUi
OiAiYnZlYzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWMzIiwgIm5hbWUi
OiAieCJ9LAotICAgeyJ0eXBlIjogIml2ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsK
LSAgIm5hbWUiOiAiZXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzQiLAotICAicGFyYW1l
dGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWM0IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjog
Iml2ZWM0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZXF1YWwiLAot
ICAicmV0dXJuX3R5cGUiOiAiYnZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjog
ImJ2ZWMyIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogImJ2ZWMyIiwgIm5hbWUiOiAieSJ9
Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiZXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZl
YzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWMzIiwgIm5hbWUiOiAieCJ9
LAotICAgeyJ0eXBlIjogImJ2ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAiZXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzQiLAotICAicGFyYW1ldGVyIjog
WwotICAgeyJ0eXBlIjogImJ2ZWM0IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogImJ2ZWM0
IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibm90RXF1YWwiLAotICAi
cmV0dXJuX3R5cGUiOiAiYnZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInZl
YzIiLCAibmFtZSI6ICJ4In0sCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogInkifQotICBd
Ci0gfSwKLSB7Ci0gICJuYW1lIjogIm5vdEVxdWFsIiwKLSAgInJldHVybl90eXBlIjogImJ2ZWMz
IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAieCJ9LAot
ICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJ5In0KLSAgXQotIH0sCi0gewotICAibmFtZSI6
ICJub3RFcXVhbCIsCi0gICJyZXR1cm5fdHlwZSI6ICJidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBb
Ci0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogIngifSwKLSAgIHsidHlwZSI6ICJ2ZWM0Iiwg
Im5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibm90RXF1YWwiLAotICAicmV0
dXJuX3R5cGUiOiAiYnZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWMy
IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogIml2ZWMyIiwgIm5hbWUiOiAieSJ9Ci0gIF0K
LSB9LAotIHsKLSAgIm5hbWUiOiAibm90RXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzMi
LAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogIml2ZWMzIiwgIm5hbWUiOiAieCJ9LAot
ICAgeyJ0eXBlIjogIml2ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUi
OiAibm90RXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzQiLAotICAicGFyYW1ldGVyIjog
WwotICAgeyJ0eXBlIjogIml2ZWM0IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogIml2ZWM0
IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibm90RXF1YWwiLAotICAi
cmV0dXJuX3R5cGUiOiAiYnZlYzIiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2
ZWMyIiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogImJ2ZWMyIiwgIm5hbWUiOiAieSJ9Ci0g
IF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibm90RXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZl
YzMiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWMzIiwgIm5hbWUiOiAieCJ9
LAotICAgeyJ0eXBlIjogImJ2ZWMzIiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5h
bWUiOiAibm90RXF1YWwiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzQiLAotICAicGFyYW1ldGVy
IjogWwotICAgeyJ0eXBlIjogImJ2ZWM0IiwgIm5hbWUiOiAieCJ9LAotICAgeyJ0eXBlIjogImJ2
ZWM0IiwgIm5hbWUiOiAieSJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiYW55IiwKLSAgInJl
dHVybl90eXBlIjogImJvb2wiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWMy
IiwgIm5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiYW55IiwKLSAgInJldHVy
bl90eXBlIjogImJvb2wiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWMzIiwg
Im5hbWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiYW55IiwKLSAgInJldHVybl90
eXBlIjogImJvb2wiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWM0IiwgIm5h
bWUiOiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiYWxsIiwKLSAgInJldHVybl90eXBl
IjogImJvb2wiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWMyIiwgIm5hbWUi
OiAieCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiYWxsIiwKLSAgInJldHVybl90eXBlIjog
ImJvb2wiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWMzIiwgIm5hbWUiOiAi
eCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAiYWxsIiwKLSAgInJldHVybl90eXBlIjogImJv
b2wiLAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWM0IiwgIm5hbWUiOiAieCJ9
Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAibm90IiwKLSAgInJldHVybl90eXBlIjogImJ2ZWMy
IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJidmVjMiIsICJuYW1lIjogIngifQot
ICBdCi0gfSwKLSB7Ci0gICJuYW1lIjogIm5vdCIsCi0gICJyZXR1cm5fdHlwZSI6ICJidmVjMyIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAiYnZlYzMiLCAibmFtZSI6ICJ4In0KLSAg
XQotIH0sCi0gewotICAibmFtZSI6ICJub3QiLAotICAicmV0dXJuX3R5cGUiOiAiYnZlYzQiLAot
ICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogImJ2ZWM0IiwgIm5hbWUiOiAieCJ9Ci0gIF0K
LSB9LAotIHsKLSAgIm5hbWUiOiAidGV4dHVyZTJEIiwKLSAgInJldHVybl90eXBlIjogInZlYzQi
LAotICAicGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInNhbXBsZXIyRCIsICJuYW1lIjogInNh
bXBsZXIifSwKLSAgIHsidHlwZSI6ICJ2ZWMyIiwgIm5hbWUiOiAiY29vcmQifQotICBdCi0gfSwK
LSB7Ci0gICJuYW1lIjogInRleHR1cmUyRFByb2oiLAotICAicmV0dXJuX3R5cGUiOiAidmVjNCIs
Ci0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAic2FtcGxlcjJEIiwgIm5hbWUiOiAic2Ft
cGxlciJ9LAotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJjb29yZCJ9Ci0gIF0KLSB9LAot
IHsKLSAgIm5hbWUiOiAidGV4dHVyZTJEUHJvaiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwK
LSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJzYW1wbGVyMkQiLCAibmFtZSI6ICJzYW1w
bGVyIn0sCi0gICB7InR5cGUiOiAidmVjNCIsICJuYW1lIjogImNvb3JkIn0KLSAgXQotIH0sCi0g
ewotICAibmFtZSI6ICJ0ZXh0dXJlQ3ViZSIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAg
InBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJzYW1wbGVyQ3ViZSIsICJuYW1lIjogInNhbXBs
ZXIifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAiY29vcmQifQotICBdCi0gfSwKLSB7
Ci0gICJuYW1lIjogInRleHR1cmUyRCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwKLSAgInBh
cmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJzYW1wbGVyRXh0ZXJuYWxPRVMiLCAibmFtZSI6ICJz
YW1wbGVyIn0sCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogImNvb3JkIn0KLSAgXSwKLSAg
ImNvbmRpdGlvbiI6InJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsIgotIH0sCi0gewot
ICAibmFtZSI6ICJ0ZXh0dXJlMkRQcm9qIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAi
cGFyYW1ldGVyIjogWwotICAgeyJ0eXBlIjogInNhbXBsZXJFeHRlcm5hbE9FUyIsICJuYW1lIjog
InNhbXBsZXIifSwKLSAgIHsidHlwZSI6ICJ2ZWMzIiwgIm5hbWUiOiAiY29vcmQifQotICBdLAot
ICAiY29uZGl0aW9uIjoicmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiCi0gfSwKLSB7
Ci0gICJuYW1lIjogInRleHR1cmUyRFByb2oiLAotICAicmV0dXJuX3R5cGUiOiAidmVjNCIsCi0g
ICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAic2FtcGxlckV4dGVybmFsT0VTIiwgIm5hbWUi
OiAic2FtcGxlciJ9LAotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJjb29yZCJ9Ci0gIF0s
Ci0gICJjb25kaXRpb24iOiJyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIKLSB9LAot
IHsKLSAgIm5hbWUiOiAidGV4dHVyZTJEUmVjdCIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwK
LSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJzYW1wbGVyMkRSZWN0IiwgIm5hbWUiOiAi
c2FtcGxlciJ9LAotICAgeyJ0eXBlIjogInZlYzIiLCAibmFtZSI6ICJjb29yZCJ9Ci0gIF0sCi0g
ICJjb25kaXRpb24iOiJyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlIgotIH0sCi0gewot
ICAibmFtZSI6ICJ0ZXh0dXJlMkRSZWN0UHJvaiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwK
LSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJzYW1wbGVyMkRSZWN0IiwgIm5hbWUiOiAi
c2FtcGxlciJ9LAotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJjb29yZCJ9Ci0gIF0sCi0g
ICJjb25kaXRpb24iOiJyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlIgotIH0sCi0gewot
ICAibmFtZSI6ICJ0ZXh0dXJlMkRSZWN0UHJvaiIsCi0gICJyZXR1cm5fdHlwZSI6ICJ2ZWM0IiwK
LSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJzYW1wbGVyMkRSZWN0IiwgIm5hbWUiOiAi
c2FtcGxlciJ9LAotICAgeyJ0eXBlIjogInZlYzQiLCAibmFtZSI6ICJjb29yZCJ9Ci0gIF0sCi0g
ICJjb25kaXRpb24iOiJyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlIgotIH0KLV0sCi0g
Ci0idmVydGV4IiA6IFsKLSB7Ci0gICJuYW1lIjogInRleHR1cmUyRExvZCIsCi0gICJyZXR1cm5f
dHlwZSI6ICJ2ZWM0IiwKLSAgInBhcmFtZXRlciI6IFsKLSAgIHsidHlwZSI6ICJzYW1wbGVyMkQi
LCAibmFtZSI6ICJzYW1wbGVyIn0sCi0gICB7InR5cGUiOiAidmVjMiIsICJuYW1lIjogImNvb3Jk
In0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJsb2QifQotICBdCi0gfSwKLSB7Ci0g
ICJuYW1lIjogInRleHR1cmUyRFByb2pMb2QiLAotICAicmV0dXJuX3R5cGUiOiAidmVjNCIsCi0g
ICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAic2FtcGxlcjJEIiwgIm5hbWUiOiAic2FtcGxl
ciJ9LAotICAgeyJ0eXBlIjogInZlYzMiLCAibmFtZSI6ICJjb29yZCJ9LAotICAgeyJ0eXBlIjog
ImZsb2F0IiwgIm5hbWUiOiAibG9kIn0KLSAgXQotIH0sCi0gewotICAibmFtZSI6ICJ0ZXh0dXJl
MkRQcm9qTG9kIiwKLSAgInJldHVybl90eXBlIjogInZlYzQiLAotICAicGFyYW1ldGVyIjogWwot
ICAgeyJ0eXBlIjogInNhbXBsZXIyRCIsICJuYW1lIjogInNhbXBsZXIifSwKLSAgIHsidHlwZSI6
ICJ2ZWM0IiwgIm5hbWUiOiAiY29vcmQifSwKLSAgIHsidHlwZSI6ICJmbG9hdCIsICJuYW1lIjog
ImxvZCJ9Ci0gIF0KLSB9LAotIHsKLSAgIm5hbWUiOiAidGV4dHVyZUN1YmVMb2QiLAotICAicmV0
dXJuX3R5cGUiOiAidmVjNCIsCi0gICJwYXJhbWV0ZXIiOiBbCi0gICB7InR5cGUiOiAic2FtcGxl
ckN1YmUiLCAibmFtZSI6ICJzYW1wbGVyIn0sCi0gICB7InR5cGUiOiAidmVjMyIsICJuYW1lIjog
ImNvb3JkIn0sCi0gICB7InR5cGUiOiAiZmxvYXQiLCAibmFtZSI6ICJsb2QifQotICBdCi0gfQot
XQotCi19IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2dlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3RhYmxlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2dlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3RhYmxlLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1ZmRmNjI2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nZW5lcmF0ZV9idWlsdGluX3N5bWJvbF90YWJsZS5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotCi0j
IENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0KLWltcG9ydCBqc29uCi0KLSMgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBm
b3IgYWxsIHRoZSBidWlsdGluIGluIEpTT04gZm9ybWF0LgotanNvbl9kYXRhID0gb3BlbignYnVp
bHRpbl9zeW1ib2xzLmpzb24nKQotYnVpbHRpbiA9IGpzb24ubG9hZChqc29uX2RhdGEpCi0KLSMg
VGhpcyBtYXBzIHRoZSBzaGFkZXIgbGFuZ3VhZ2UncyB0eXBlcyBhbmQgaG93IHRvIGNyZWF0ZSB0
aGUgVFR5cGVzIGluIHRoZSBzeW1ib2wgdGFibGUuCi10dHlwZU1hcCA9IGJ1aWx0aW5bInR0eXBl
bWFwIl0KLQotIyBUaGlzIGlzIHRoZSBvdXRwdXQgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gZ2VuZXJh
dGUuCi1vdXRwdXQgPSBvcGVuKCdidWlsdGluX3N5bWJvbF90YWJsZS5jcHAnLCAndycpOwotCi0j
IFRoZSBoZWFkZXIgcGFydCBvZiB0aGUgZmlsZS4KLWhlYWRlciA9ICIiIi8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0v
LyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCi0vLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX2J1aWx0aW5fc3lt
Ym9sX3RhYmxlLnB5LgotLy8gICAgICAgICAgICAgICAgICogRE8gTk9UIEhBTkQgTU9ESUZZICoK
LS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKLSNpbmNsdWRlICJjb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5oIgotI2lu
Y2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCi0iIiIKLW91dHB1dC53cml0ZShoZWFkZXIp
Ci0KLXJlZ2lzdGVyZnVuYyA9ICIiIgotc3RhdGljIHZvaWQgYnVpbHRpbjEoVFN5bWJvbFRhYmxl
KiB0LCBUVHlwZSogcnZhbHVlLCBjb25zdCBjaGFyKiBuYW1lLCBUVHlwZSogcHR5cGUxLCBjb25z
dCBjaGFyKiBwbmFtZTEpCi17Ci0gIFRGdW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRT
dHJpbmcobmFtZSksICpydmFsdWUpOwotICBUUGFyYW1ldGVyIHBhcmFtID0ge25ldyBUU3RyaW5n
KHBuYW1lMSksIHB0eXBlMX07Ci0gIGYtPmFkZFBhcmFtZXRlcihwYXJhbSk7Ci0gIHQtPmluc2Vy
dCgqZik7Ci19Ci0KLXN0YXRpYyB2b2lkIGJ1aWx0aW4yKFRTeW1ib2xUYWJsZSogdCwgVFR5cGUq
IHJ2YWx1ZSwgY29uc3QgY2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hhciogcG5h
bWUxLCBUVHlwZSogcHR5cGUyLCBjb25zdCBjaGFyKiBwbmFtZTIpCi17Ci0gIFRGdW5jdGlvbiog
ZiA9IG5ldyBURnVuY3Rpb24obmV3IFRTdHJpbmcobmFtZSksICpydmFsdWUpOwotICBUUGFyYW1l
dGVyIHBhcmFtMSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBwdHlwZTF9OwotICBmLT5hZGRQYXJh
bWV0ZXIocGFyYW0xKTsKLSAgVFBhcmFtZXRlciBwYXJhbTIgPSB7bmV3IFRTdHJpbmcocG5hbWUy
KSwgcHR5cGUyfTsKLSAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMik7Ci0gIHQtPmluc2VydCgqZik7
Ci19Ci0KLXN0YXRpYyB2b2lkIGJ1aWx0aW4zKFRTeW1ib2xUYWJsZSogdCwgVFR5cGUqIHJ2YWx1
ZSwgY29uc3QgY2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hhciogcG5hbWUxLCBU
VHlwZSogcHR5cGUyLCBjb25zdCBjaGFyKiBwbmFtZTIsIFRUeXBlKiBwdHlwZTMsIGNvbnN0IGNo
YXIqIHBuYW1lMykKLXsKLSAgVEZ1bmN0aW9uKiBmID0gbmV3IFRGdW5jdGlvbihuZXcgVFN0cmlu
ZyhuYW1lKSwgKnJ2YWx1ZSk7Ci0gIFRQYXJhbWV0ZXIgcGFyYW0xID0ge25ldyBUU3RyaW5nKHBu
YW1lMSksIHB0eXBlMX07Ci0gIGYtPmFkZFBhcmFtZXRlcihwYXJhbTEpOwotICBUUGFyYW1ldGVy
IHBhcmFtMiA9IHtuZXcgVFN0cmluZyhwbmFtZTIpLCBwdHlwZTJ9OwotICBmLT5hZGRQYXJhbWV0
ZXIocGFyYW0yKTsKLSAgVFBhcmFtZXRlciBwYXJhbTMgPSB7bmV3IFRTdHJpbmcocG5hbWUzKSwg
cHR5cGUzfTsKLSAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMyk7Ci0gIHQtPmluc2VydCgqZik7Ci19
Ci0KLSIiIgotb3V0cHV0LndyaXRlKHJlZ2lzdGVyZnVuYykKLQotIyBBIGZ1bmN0aW9uIHRoYXQg
cGFyc2VzIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgbGlzdCBvZiBidWlsdGluIGZ1bmN0
aW9ucy4KLWRlZiBwYXJzZUJ1aWx0aW4obmFtZSk6Ci0gICAgZm9yIGZ1bmMgaW4gYnVpbHRpbltu
YW1lXToKLSAgICAgICAgb3V0ID0gIiIKLSAgICAgICAgaW5kZW50ID0gIiAgICAiOwotICAgICAg
ICBzaXplID0gbGVuKGZ1bmNbJ3BhcmFtZXRlciddKQotICAgICAgICBpZiAnY29uZGl0aW9uJyBp
biBmdW5jOgotICAgICAgICAgICAgb3V0ICs9IGluZGVudCArICJpZiAoIiArIGZ1bmNbJ2NvbmRp
dGlvbiddICsgIikge1xuIgotICAgICAgICAgICAgaW5kZW50ICs9IGluZGVudDsKLSAgICAgICAg
b3V0ICs9IGluZGVudCArICJidWlsdGluIiArIHN0cihzaXplKSArICIodCwgIgotICAgICAgICBv
dXQgKz0gdHR5cGVNYXBbZnVuY1sncmV0dXJuX3R5cGUnXV0KLSAgICAgICAgb3V0ICs9ICIsIFwi
IiArIGZ1bmNbJ25hbWUnXSArICJcIiIKLSAgICAgICAgcGFyYW1saXN0ID0gZnVuY1sncGFyYW1l
dGVyJ10KLSAgICAgICAgcGFyYW1kZWYgPSAiIjsKLSAgICAgICAgZm9yIHBhcmFtIGluIHBhcmFt
bGlzdDoKLSAgICAgICAgICAgIHBhcmFtZGVmICs9ICIsICIKLSAgICAgICAgICAgIHBhcmFtZGVm
ICs9IHR0eXBlTWFwW3BhcmFtWyd0eXBlJ11dIAotICAgICAgICAgICAgcGFyYW1kZWYgKz0gIiwg
XCIiICsgcGFyYW1bJ25hbWUnXSArICJcIiIKLSAgICAgICAgb3V0ICs9IHBhcmFtZGVmICsgIik7
XG4iCi0gICAgICAgIGlmICdjb25kaXRpb24nIGluIGZ1bmM6Ci0gICAgICAgICAgICBvdXQgKz0g
IiAgICB9XG4iCi0gICAgICAgIG91dHB1dC53cml0ZShvdXQpCi0KLWNvbW1vbkhlYWRlciA9ICJ2
b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2Vz
JiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCkge1xuIgotb3V0cHV0LndyaXRlKGNvbW1vbkhl
YWRlcikKLXBhcnNlQnVpbHRpbigiY29tbW9uIikKLW91dHB1dC53cml0ZSgifVxuXG4iKQotCi12
ZXJ0ZXhIZWFkZXIgPSAidm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KGNvbnN0IFNo
QnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUqIHQpIHtcbiIKLW91dHB1
dC53cml0ZSh2ZXJ0ZXhIZWFkZXIpCi1wYXJzZUJ1aWx0aW4oInZlcnRleCIpCi1vdXRwdXQud3Jp
dGUoIn1cblxuIikKLQotanNvbl9kYXRhLmNsb3NlKCkKLW91dHB1dC5jbG9zZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAppbmRleCA0MDQ5ODc1
Li4xNDBhOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvZ2xzbGFuZy5sCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nLmwKQEAgLTQ3LDEwICs0Nyw3IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBM
RVhFUiAoZ2xzbGFuZ19sZXguY3BwKS4KICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDEwMikK
ICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIHl5bGxvYy0+Zmlyc3RfZmlsZSA9IHl5bGxvYy0+bGFzdF9maWxlID0g
eXljb2x1bW47IFwKLSAgICB5eWxsb2MtPmZpcnN0X2xpbmUgPSB5eWxsb2MtPmxhc3RfbGluZSA9
IHl5bGluZW5vOwotCisjZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUgPSB5
eWxpbmVubzsKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAgICAg
cmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKQEAgLTYw
LDggKzU3LDEwIEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIp
OwogJX0KIAogJW9wdGlvbiBub3l5d3JhcCBub3VucHV0IG5ldmVyLWludGVyYWN0aXZlCi0lb3B0
aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRpb25zCislb3B0
aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UKKyVvcHRpb24gc3RhY2sKICVvcHRp
b24gZXh0cmEtdHlwZT0iVFBhcnNlQ29udGV4dCoiCisleCBDT01NRU5UIEZJRUxEUwogCiBEICAg
ICAgICAgICBbMC05XQogTCAgICAgICAgICAgW2EtekEtWl9dCkBAIC03MSw2MCArNzAsNzMgQEAg
TyAgICAgICAgICAgWzAtN10KIAogJSUKIAotImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJ
QU5UOyB9Ci0iaGlnaHAiICAgICAgICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQotIm1lZGl1
bXAiICAgICAgeyByZXR1cm4gTUVESVVNX1BSRUNJU0lPTjsgfQotImxvd3AiICAgICAgICAgeyBy
ZXR1cm4gTE9XX1BSRUNJU0lPTjsgfQotInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9O
OyB9Ci0KLSJhdHRyaWJ1dGUiICAgIHsgcmV0dXJuIEFUVFJJQlVURTsgfQotImNvbnN0IiAgICAg
ICAgeyByZXR1cm4gQ09OU1RfUVVBTDsgfQotInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9S
TTsgfQotInZhcnlpbmciICAgICAgeyByZXR1cm4gVkFSWUlORzsgfQotCi0iYnJlYWsiICAgICAg
ICB7IHJldHVybiBCUkVBSzsgfQotImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0K
LSJkbyIgICAgICAgICAgIHsgcmV0dXJuIERPOyB9Ci0iZm9yIiAgICAgICAgICB7IHJldHVybiBG
T1I7IH0KLSJ3aGlsZSIgICAgICAgIHsgcmV0dXJuIFdISUxFOyB9Ci0KLSJpZiIgICAgICAgICAg
IHsgcmV0dXJuIElGOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9Ci0KLSJpbiIg
ICAgICAgICAgIHsgcmV0dXJuIElOX1FVQUw7IH0KLSJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9V
VF9RVUFMOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9Ci0KLSJmbG9h
dCIgICAgICAgIHsgcmV0dXJuIEZMT0FUX1RZUEU7IH0KLSJpbnQiICAgICAgICAgIHsgcmV0dXJu
IElOVF9UWVBFOyB9Ci0idm9pZCIgICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KLSJib29s
IiAgICAgICAgIHsgcmV0dXJuIEJPT0xfVFlQRTsgfQotInRydWUiICAgICAgICAgeyB5eWx2YWwt
PmxleC5iID0gdHJ1ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KLSJmYWxzZSIgICAgICAgIHsg
eXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9Ci0KLSJkaXNjYXJk
IiAgICAgIHsgcmV0dXJuIERJU0NBUkQ7IH0KLSJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVS
TjsgfQotCi0ibWF0MiIgICAgICAgICB7IHJldHVybiBNQVRSSVgyOyB9Ci0ibWF0MyIgICAgICAg
ICB7IHJldHVybiBNQVRSSVgzOyB9Ci0ibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9
Ci0KLSJ2ZWMyIiAgICAgICAgIHsgcmV0dXJuIFZFQzI7IH0KLSJ2ZWMzIiAgICAgICAgIHsgcmV0
dXJuIFZFQzM7IH0KLSJ2ZWM0IiAgICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KLSJpdmVjMiIgICAg
ICAgIHsgcmV0dXJuIElWRUMyOyB9Ci0iaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQot
Iml2ZWM0IiAgICAgICAgeyByZXR1cm4gSVZFQzQ7IH0KLSJidmVjMiIgICAgICAgIHsgcmV0dXJu
IEJWRUMyOyB9Ci0iYnZlYzMiICAgICAgICB7IHJldHVybiBCVkVDMzsgfQotImJ2ZWM0IiAgICAg
ICAgeyByZXR1cm4gQlZFQzQ7IH0KLQotInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FN
UExFUjJEOyB9Ci0ic2FtcGxlckN1YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQot
InNhbXBsZXJFeHRlcm5hbE9FUyIgeyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJz
YW1wbGVyMkRSZWN0IiAgICAgIHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KLQotInN0cnVjdCIg
ICAgICAgeyByZXR1cm4gU1RSVUNUOyB9CisleworICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQg
PSB5eWV4dHJhOworJX0KKworICAgIC8qIFNpbmdsZS1saW5lIGNvbW1lbnRzICovCisiLy8iW15c
bl0qIDsKKworICAgIC8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8KKyIvKiIgICAgICAgICAgIHsg
eXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cis8Q09NTUVOVD4uIHwKKzxDT01N
RU5UPlxuIDsKKzxDT01NRU5UPiIqLyIgIHsgeXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KKwor
ImludmFyaWFudCIgICAgeyByZXR1cm4oSU5WQVJJQU5UKTsgfQorImhpZ2hwIiAgICAgICAgeyBy
ZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9CisibWVkaXVtcCIgICAgICB7IHJldHVybihNRURJVU1f
UFJFQ0lTSU9OKTsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4oTE9XX1BSRUNJU0lPTik7IH0K
KyJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBSRUNJU0lPTik7IH0KKworImF0dHJpYnV0ZSIgICAg
eyByZXR1cm4oQVRUUklCVVRFKTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1cm4oQ09OU1RfUVVB
TCk7IH0KKyJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuKFVOSUZPUk0pOyB9CisidmFyeWluZyIgICAg
ICB7IHJldHVybihWQVJZSU5HKTsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVybihCUkVBSyk7
IH0KKyJjb250aW51ZSIgICAgIHsgcmV0dXJuKENPTlRJTlVFKTsgfQorImRvIiAgICAgICAgICAg
eyByZXR1cm4oRE8pOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybihGT1IpOyB9Cisid2hpbGUi
ICAgICAgICB7IHJldHVybihXSElMRSk7IH0KKworImlmIiAgICAgICAgICAgeyByZXR1cm4oSUYp
OyB9CisiZWxzZSIgICAgICAgICB7IHJldHVybihFTFNFKTsgfQorCisiaW4iICAgICAgICAgICB7
IHJldHVybihJTl9RVUFMKTsgfQorIm91dCIgICAgICAgICAgeyByZXR1cm4oT1VUX1FVQUwpOyB9
CisiaW5vdXQiICAgICAgICB7IHJldHVybihJTk9VVF9RVUFMKTsgfQorCisiZmxvYXQiICAgICAg
ICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQor
ImludCIgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oSU5U
X1RZUEUpOyB9Cisidm9pZCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7
IHJldHVybihWT0lEX1RZUEUpOyB9CisiYm9vbCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9CisidHJ1ZSIgICAgICAgICB7IHl5bHZh
bC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFOVCk7IH0KKyJmYWxzZSIgICAgICAg
IHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQorCisiZGlz
Y2FyZCIgICAgICB7IHJldHVybihESVNDQVJEKTsgfQorInJldHVybiIgICAgICAgeyByZXR1cm4o
UkVUVVJOKTsgfQorCisibWF0MiIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybihNQVRSSVgyKTsgfQorIm1hdDMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7IH0KKyJtYXQ0IiAgICAgICAgIHsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDQpOyB9CisKKyJ2ZWMyIiAgICAg
ICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChWRUMyKTsgfQorInZl
YzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMp
OyB9CisidmVjNCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
biAoVkVDNCk7IH0KKyJpdmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChJVkVDMik7IH0KKyJpdmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0KKyJpdmVjNCIgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDNCk7IH0KKyJidmVjMiIgICAgICAgIHsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMik7IH0KKyJidmVjMyIg
ICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0K
KyJidmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChC
VkVDNCk7IH0KKworInNhbXBsZXIyRCIgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Cisic2FtcGxlckN1YmUiICAgICB7IGNvbnRleHQtPmxl
eEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRlcm5h
bE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUl9FWFRF
Uk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0IiB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9CisKKyJzdHJ1Y3QiICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7IH0KIAogImFzbSIgICAgICAgICAg
eyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAKQEAgLTE3MSwxMSArMTgzLDEz
IEBAIE8gICAgICAgICAgIFswLTddCiAiZnZlYzMiICAgICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KICJmdmVjNCIgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsgfQogCi0ic2FtcGxlcjFEIiAgICAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9Ci0ic2FtcGxlcjNEIiAgICAgICAgICAgeyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9Ci0ic2FtcGxlcjFEU2hhZG93IiAgICAgeyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Ci0ic2FtcGxlcjJEU2hhZG93IiAgICAgeyByZXR1cm4g
cmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Ci0ic2FtcGxlcjNEUmVjdCIgICAgICAgeyByZXR1
cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cisic2FtcGxlcjFEIiAgICB7IHJldHVybiBy
ZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0QiICAgIHsgcmV0dXJuIHJlc2Vy
dmVkX3dvcmQoeXlzY2FubmVyKTsgfQorCisic2FtcGxlcjFEU2hhZG93IiB7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciIHsgcmV0dXJuIHJlc2Vy
dmVkX3dvcmQoeXlzY2FubmVyKTsgfQorCisic2FtcGxlcjNEUmVjdCIgeyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAic2FtcGxlcjJEUmVjdFNoYWRvdyIgeyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAKICJzaXplb2YiICAgICAgIHsgcmV0dXJuIHJlc2Vy
dmVkX3dvcmQoeXlzY2FubmVyKTsgfQpAQCAtMTg5LDY0ICsyMDMsNzIgQEAgTyAgICAgICAgICAg
WzAtN10KICAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7CiB9CiAKLTBbeFhde0h9KyAg
ICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwg
MCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KLTB7T30rICAgICAgICAgICAgIHsgeXlsdmFs
LT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4g
SU5UQ09OU1RBTlQ7IH0KLXtEfSsgICAgICAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRp
Y19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0K
LQote0R9K3tFfSAgICAgICAgICAgeyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQote0R9KyIuIntEfSoo
e0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4
dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQotIi4ie0R9Kyh7RX0pPyAgICAgeyB5eWx2YWwt
PmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxP
QVRDT05TVEFOVDsgfQotCi0iKz0iICAgICAgICAgICAgeyByZXR1cm4gQUREX0FTU0lHTjsgfQot
Ii09IiAgICAgICAgICAgIHsgcmV0dXJuIFNVQl9BU1NJR047IH0KLSIqPSIgICAgICAgICAgICB7
IHJldHVybiBNVUxfQVNTSUdOOyB9Ci0iLz0iICAgICAgICAgICAgeyByZXR1cm4gRElWX0FTU0lH
TjsgfQotIiU9IiAgICAgICAgICAgIHsgcmV0dXJuIE1PRF9BU1NJR047IH0KLSI8PD0iICAgICAg
ICAgICB7IHJldHVybiBMRUZUX0FTU0lHTjsgfQotIj4+PSIgICAgICAgICAgIHsgcmV0dXJuIFJJ
R0hUX0FTU0lHTjsgfQotIiY9IiAgICAgICAgICAgIHsgcmV0dXJuIEFORF9BU1NJR047IH0KLSJe
PSIgICAgICAgICAgICB7IHJldHVybiBYT1JfQVNTSUdOOyB9Ci0ifD0iICAgICAgICAgICAgeyBy
ZXR1cm4gT1JfQVNTSUdOOyB9Ci0KLSIrKyIgICAgICAgICAgICB7IHJldHVybiBJTkNfT1A7IH0K
LSItLSIgICAgICAgICAgICB7IHJldHVybiBERUNfT1A7IH0KLSImJiIgICAgICAgICAgICB7IHJl
dHVybiBBTkRfT1A7IH0KLSJ8fCIgICAgICAgICAgICB7IHJldHVybiBPUl9PUDsgfQotIl5eIiAg
ICAgICAgICAgIHsgcmV0dXJuIFhPUl9PUDsgfQotIjw9IiAgICAgICAgICAgIHsgcmV0dXJuIExF
X09QOyB9Ci0iPj0iICAgICAgICAgICAgeyByZXR1cm4gR0VfT1A7IH0KLSI9PSIgICAgICAgICAg
ICB7IHJldHVybiBFUV9PUDsgfQotIiE9IiAgICAgICAgICAgIHsgcmV0dXJuIE5FX09QOyB9Ci0i
PDwiICAgICAgICAgICAgeyByZXR1cm4gTEVGVF9PUDsgfQotIj4+IiAgICAgICAgICAgIHsgcmV0
dXJuIFJJR0hUX09QOyB9Ci0iOyIgICAgICAgICAgICAgeyByZXR1cm4gU0VNSUNPTE9OOyB9Ci0o
InsifCI8JSIpICAgICAgeyByZXR1cm4gTEVGVF9CUkFDRTsgfQotKCJ9InwiJT4iKSAgICAgIHsg
cmV0dXJuIFJJR0hUX0JSQUNFOyB9Ci0iLCIgICAgICAgICB7IHJldHVybiBDT01NQTsgfQotIjoi
ICAgICAgICAgeyByZXR1cm4gQ09MT047IH0KLSI9IiAgICAgICAgIHsgcmV0dXJuIEVRVUFMOyB9
Ci0iKCIgICAgICAgICB7IHJldHVybiBMRUZUX1BBUkVOOyB9Ci0iKSIgICAgICAgICB7IHJldHVy
biBSSUdIVF9QQVJFTjsgfQotKCJbInwiPDoiKSAgeyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9Ci0o
Il0ifCI6PiIpICB7IHJldHVybiBSSUdIVF9CUkFDS0VUOyB9Ci0iLiIgICAgICAgICB7IHJldHVy
biBET1Q7IH0KLSIhIiAgICAgICAgIHsgcmV0dXJuIEJBTkc7IH0KLSItIiAgICAgICAgIHsgcmV0
dXJuIERBU0g7IH0KLSJ+IiAgICAgICAgIHsgcmV0dXJuIFRJTERFOyB9Ci0iKyIgICAgICAgICB7
IHJldHVybiBQTFVTOyB9Ci0iKiIgICAgICAgICB7IHJldHVybiBTVEFSOyB9Ci0iLyIgICAgICAg
ICB7IHJldHVybiBTTEFTSDsgfQotIiUiICAgICAgICAgeyByZXR1cm4gUEVSQ0VOVDsgfQotIjwi
ICAgICAgICAgeyByZXR1cm4gTEVGVF9BTkdMRTsgfQotIj4iICAgICAgICAgeyByZXR1cm4gUklH
SFRfQU5HTEU7IH0KLSJ8IiAgICAgICAgIHsgcmV0dXJuIFZFUlRJQ0FMX0JBUjsgfQotIl4iICAg
ICAgICAgeyByZXR1cm4gQ0FSRVQ7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuIEFNUEVSU0FORDsg
fQotIj8iICAgICAgICAgeyByZXR1cm4gUVVFU1RJT047IH0KLQotWyBcdFx2XG5cZlxyXSB7IH0K
LTw8RU9GPj4gICAgeyB5eXRlcm1pbmF0ZSgpOyB9Ci0uICAgICAgICAgIHsgYXNzZXJ0KGZhbHNl
KTsgcmV0dXJuIDA7IH0KKzBbeFhde0h9KyAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRp
Y19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9
Ciswe099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0
cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQorMHtEfSsgICAgICAg
ICAgICAgeyBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgIkludmFsaWQgT2N0YWwgbnVtYmVyLiIs
IHl5dGV4dCk7IGNvbnRleHQtPnJlY292ZXIoKTsgcmV0dXJuIDA7fQore0R9KyAgICAgICAgICAg
ICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAw
KSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KKwore0R9K3tFfSAgICAgICAgICAgeyB5eWx2YWwt
PmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxP
QVRDT05TVEFOVCk7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRp
Y19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9
CisiLiJ7RH0rKHtFfSk/ICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQorCisiKz0iICAgICAg
ICAgICAgeyAgcmV0dXJuKEFERF9BU1NJR04pOyB9CisiLT0iICAgICAgICAgICAgeyAgcmV0dXJu
KFNVQl9BU1NJR04pOyB9CisiKj0iICAgICAgICAgICAgeyAgcmV0dXJuKE1VTF9BU1NJR04pOyB9
CisiLz0iICAgICAgICAgICAgeyAgcmV0dXJuKERJVl9BU1NJR04pOyB9CisiJT0iICAgICAgICAg
ICAgeyAgcmV0dXJuKE1PRF9BU1NJR04pOyB9CisiPDw9IiAgICAgICAgICAgeyAgcmV0dXJuKExF
RlRfQVNTSUdOKTsgfQorIj4+PSIgICAgICAgICAgIHsgIHJldHVybihSSUdIVF9BU1NJR04pOyB9
CisiJj0iICAgICAgICAgICAgeyAgcmV0dXJuKEFORF9BU1NJR04pOyB9CisiXj0iICAgICAgICAg
ICAgeyAgcmV0dXJuKFhPUl9BU1NJR04pOyB9CisifD0iICAgICAgICAgICAgeyAgcmV0dXJuKE9S
X0FTU0lHTik7IH0KKworIisrIiAgICAgICAgICAgIHsgIHJldHVybihJTkNfT1ApOyB9CisiLS0i
ICAgICAgICAgICAgeyAgcmV0dXJuKERFQ19PUCk7IH0KKyImJiIgICAgICAgICAgICB7ICByZXR1
cm4oQU5EX09QKTsgfQorInx8IiAgICAgICAgICAgIHsgIHJldHVybihPUl9PUCk7IH0KKyJeXiIg
ICAgICAgICAgICB7ICByZXR1cm4oWE9SX09QKTsgfQorIjw9IiAgICAgICAgICAgIHsgIHJldHVy
bihMRV9PUCk7IH0KKyI+PSIgICAgICAgICAgICB7ICByZXR1cm4oR0VfT1ApOyB9CisiPT0iICAg
ICAgICAgICAgeyAgcmV0dXJuKEVRX09QKTsgfQorIiE9IiAgICAgICAgICAgIHsgIHJldHVybihO
RV9PUCk7IH0KKyI8PCIgICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9PUCk7IH0KKyI+PiIgICAg
ICAgICAgICB7ICByZXR1cm4oUklHSFRfT1ApOyB9CisiOyIgICAgICAgICAgICAgeyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKFNFTUlDT0xPTik7IH0KKygieyJ8IjwlIikg
ICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oTEVGVF9CUkFDRSk7
IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybihSSUdIVF9CUkFDRSk7IH0KKyIsIiAgICAgICAg
IHsgaWYgKGNvbnRleHQtPmluVHlwZVBhcmVuKSBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxz
ZTsgcmV0dXJuKENPTU1BKTsgfQorIjoiICAgICAgICAgeyByZXR1cm4oQ09MT04pOyB9CisiPSIg
ICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9
CisiKCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyBjb250ZXh0LT5p
blR5cGVQYXJlbiA9IHRydWU7IHJldHVybihMRUZUX1BBUkVOKTsgfQorIikiICAgICAgICAgeyBj
b250ZXh0LT5pblR5cGVQYXJlbiA9IGZhbHNlOyByZXR1cm4oUklHSFRfUEFSRU4pOyB9CisoIlsi
fCI8OiIpICAgICAgeyByZXR1cm4oTEVGVF9CUkFDS0VUKTsgfQorKCJdInwiOj4iKSAgICAgIHsg
cmV0dXJuKFJJR0hUX0JSQUNLRVQpOyB9CisiLiIgICAgICAgICB7IEJFR0lOKEZJRUxEUyk7ICBy
ZXR1cm4oRE9UKTsgfQorIiEiICAgICAgICAgeyByZXR1cm4oQkFORyk7IH0KKyItIiAgICAgICAg
IHsgcmV0dXJuKERBU0gpOyB9CisifiIgICAgICAgICB7IHJldHVybihUSUxERSk7IH0KKyIrIiAg
ICAgICAgIHsgcmV0dXJuKFBMVVMpOyB9CisiKiIgICAgICAgICB7IHJldHVybihTVEFSKTsgfQor
Ii8iICAgICAgICAgeyByZXR1cm4oU0xBU0gpOyB9CisiJSIgICAgICAgICB7IHJldHVybihQRVJD
RU5UKTsgfQorIjwiICAgICAgICAgeyByZXR1cm4oTEVGVF9BTkdMRSk7IH0KKyI+IiAgICAgICAg
IHsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQorInwiICAgICAgICAgeyByZXR1cm4oVkVSVElDQUxf
QkFSKTsgfQorIl4iICAgICAgICAgeyByZXR1cm4oQ0FSRVQpOyB9CisiJiIgICAgICAgICB7IHJl
dHVybihBTVBFUlNBTkQpOyB9CisiPyIgICAgICAgICB7IHJldHVybihRVUVTVElPTik7IH0KKwor
PEZJRUxEUz57TH0oe0x9fHtEfSkqIHsgCisgICAgQkVHSU4oSU5JVElBTCk7CisgICAgeXlsdmFs
LT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCisgICAgcmV0dXJuIEZJRUxE
X1NFTEVDVElPTjsKK30KKzxGSUVMRFM+WyBcdFx2XGZccl0ge30KKworWyBcdFx2XG5cZlxyXSAg
IHsgIH0KKzwqPjw8RU9GPj4gICAgICB7IGNvbnRleHQtPkFmdGVyRU9GID0gdHJ1ZTsgeXl0ZXJt
aW5hdGUoKTsgfQorPCo+LiAgICAgICAgICAgIHsgY29udGV4dC0+d2FybmluZyh5eWxpbmVubywg
IlVua25vd24gY2hhciIsIHl5dGV4dCwgIiIpOyByZXR1cm4gMDsgfQogCiAlJQogCkBAIC0yNTYs
OCArMjc4LDcgQEAgeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIHl5X3NpemVfdCBt
YXhfc2l6ZSwgeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2Vu
LnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlm
IChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigp
LCBsZW4pOwotICAgIHl5c2V0X2NvbHVtbih0b2tlbi5sb2NhdGlvbi5maWxlLCB5eXNjYW5uZXIp
OwotICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLCB5eXNjYW5uZXIpOworICAg
IHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4u
bG9jYXRpb24ubGluZSksIHl5c2Nhbm5lcik7CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQog
ICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yNzEs
MTAgKzI5MiwxMiBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICAK
ICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRTeW1ib2wqIHN5bWJvbCA9IHl5ZXh0
cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBpZiAoc3ltYm9sICYmIHN5bWJvbC0+
aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9PSBmYWxzZSAm
JiBzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKICAgICAgICAgVFZhcmlhYmxlKiB2
YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0gICAgICAgIGlmICh2
YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQorICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNlclR5cGUo
KSkgeworICAgICAgICAgICAgeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsKICAgICAgICAg
ICAgIHRva2VuID0gVFlQRV9OQU1FOworICAgICAgICB9CiAgICAgfQogICAgIHl5bHZhbC0+bGV4
LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47CkBAIC0yODMsMTEgKzMwNiwyMiBA
QCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKIGludCByZXNlcnZlZF93b3Jk
KHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJ
bGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CisgICAgeXlleHRyYS0+
ZXJyb3IoeXlsaW5lbm8sICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAi
Iik7CiAgICAgeXlleHRyYS0+cmVjb3ZlcigpOwogICAgIHJldHVybiAwOwogfQogCit2b2lkIHl5
ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAg
c3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5l
cjsKKworICAgIGlmIChjb250ZXh0LT5BZnRlckVPRikgeworICAgICAgICBjb250ZXh0LT5lcnJv
cih5eWxpbmVubywgcmVhc29uLCAidW5leHBlY3RlZCBFT0YiKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCB5eXRleHQpOworICAgIH0KKyAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Cit9CisKIGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNl
Q29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlm
ICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2FubmVyKSkKQEAgLTMxMCw4ICszNDQsOCBA
QCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiBpbnQgZ2xz
bGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0
IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCkg
ewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2FubmVyKTsKLSAgICB5eXNldF9jb2x1
bW4oMCwgY29udGV4dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKDEsIGNvbnRleHQtPnNj
YW5uZXIpOworICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2MoMCwgMSksIGNvbnRleHQt
PnNjYW5uZXIpOworICAgIGNvbnRleHQtPkFmdGVyRU9GID0gZmFsc2U7CiAKICAgICAvLyBJbml0
aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRleHQtPnByZXByb2Nlc3Nvci5pbml0
KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2dsc2xhbmcueQppbmRleCBkODk5NDZkLi5mYzc1MDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55CisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkKQEAgLTEsNiArMSw2IEBA
CiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zOSw2ICszOSw3
IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2xhbmdfdGFiLmNwcCBB
TkQgZ2xzbGFuZ190YWIuaCkuCiAjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKICNk
ZWZpbmUgWVlFTkFCTEVfTkxTIDAKKyNkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKIAogI2Rl
ZmluZSBZWUxFWF9QQVJBTSBjb250ZXh0LT5zY2FubmVyCiAlfQpAQCAtNDYsMTIgKzQ3LDEwIEBA
IFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2xhbmdfdGFiLmNwcCBBTkQg
Z2xzbGFuZ190YWIuaCkuCiAlZXhwZWN0IDEgLyogT25lIHNoaWZ0IHJlZHVjZSBjb25mbGljdCBi
ZWNhdXNlIG9mIGlmIHwgZWxzZSAqLwogJXB1cmUtcGFyc2VyCiAlcGFyc2UtcGFyYW0ge1RQYXJz
ZUNvbnRleHQqIGNvbnRleHR9Ci0lbG9jYXRpb25zCiAKICV1bmlvbiB7Ci0jZGVmaW5lIFlZTFRZ
UEUgVFNvdXJjZUxvYwotI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKICAgICBzdHJ1Y3Qg
eworICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
IFRTdHJpbmcgKnN0cmluZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC02MSw2ICs2MCw3IEBA
IFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2xhbmdfdGFiLmNwcCBBTkQg
Z2xzbGFuZ190YWIuaCkuCiAgICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAg
ICBzdHJ1Y3QgeworICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBv
cDsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7
CkBAIC03NCwzMSArNzQsMjMgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAo
Z2xzbGFuZ190YWIuY3BwIEFORCBnbHNsYW5nX3RhYi5oKS4KICAgICAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbGlmaWVyOwogICAgICAgICAgICAgVEZ1bmN0aW9uKiBmdW5jdGlvbjsKICAgICAgICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBURmllbGQqIGZpZWxkOwotICAgICAg
ICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0OworICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVM
aW5lOworICAgICAgICAgICAgVFR5cGVMaXN0KiB0eXBlTGlzdDsKICAgICAgICAgfTsKICAgICB9
IGludGVybTsKIH0KIAogJXsKLWV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxU
WVBFKiB5eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7Ci1zdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZ
UEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsK
LQotI2RlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZ
UkhTTE9DKFJocywgMSkuZmlyc3RfZmlsZTsgIFwKLSAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xp
bmUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2xpbmU7ICBcCi0gICAgICAgIChDdXJyZW50KS5s
YXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfZmlsZTsgICAgXAotICAgICAgICAoQ3Vy
cmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKLSAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCku
bGFzdF9maWxlOyAgIFwKLSAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhS
aHMsIDApLmxhc3RfbGluZTsgICBcCi0gICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJI
U0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICAgXAotICAgICAgICAoQ3VycmVudCkubGFzdF9saW5l
ID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgIFwKLSAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gd2hpbGUgKDAp
CitleHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVy
KTsKK2V4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
ciogcmVhc29uKTsKKworI2RlZmluZSBGUkFHX1ZFUlRfT05MWShTLCBMKSB7ICBcCisgICAgaWYg
KGNvbnRleHQtPnNoYWRlclR5cGUgIT0gU0hfRlJBR01FTlRfU0hBREVSICYmICBcCisgICAgICAg
IGNvbnRleHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXAorICAgICAgICBj
b250ZXh0LT5lcnJvcihMLCAiIHN1cHBvcnRlZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBv
bmx5ICIsIFMpOyAgXAorICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCisgICAgfSAgXAor
fQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+c2hh
ZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCkBAIC0xMjQsNiArMTE2LDcgQEAgc3Rh
dGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IGNoYXIqIHJlYXNvbikKICV0b2tlbiA8bGV4PiBTQU1QTEVSMkQgU0FNUExFUkNVQkUg
U0FNUExFUl9FWFRFUk5BTF9PRVMgU0FNUExFUjJEUkVDVAogCiAldG9rZW4gPGxleD4gSURFTlRJ
RklFUiBUWVBFX05BTUUgRkxPQVRDT05TVEFOVCBJTlRDT05TVEFOVCBCT09MQ09OU1RBTlQKKyV0
b2tlbiA8bGV4PiBGSUVMRF9TRUxFQ1RJT04KICV0b2tlbiA8bGV4PiBMRUZUX09QIFJJR0hUX09Q
CiAldG9rZW4gPGxleD4gSU5DX09QIERFQ19PUCBMRV9PUCBHRV9PUCBFUV9PUCBORV9PUAogJXRv
a2VuIDxsZXg+IEFORF9PUCBPUl9PUCBYT1JfT1AgTVVMX0FTU0lHTiBESVZfQVNTSUdOIEFERF9B
U1NJR04KQEAgLTEzNCw3ICsxMjcsNiBAQCBzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5
bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKQogJXRva2Vu
IDxsZXg+IENPTU1BIENPTE9OIEVRVUFMIFNFTUlDT0xPTiBCQU5HIERBU0ggVElMREUgUExVUyBT
VEFSIFNMQVNIIFBFUkNFTlQKICV0b2tlbiA8bGV4PiBMRUZUX0FOR0xFIFJJR0hUX0FOR0xFIFZF
UlRJQ0FMX0JBUiBDQVJFVCBBTVBFUlNBTkQgUVVFU1RJT04KIAotJXR5cGUgPGxleD4gaWRlbnRp
ZmllcgogJXR5cGUgPGludGVybT4gYXNzaWdubWVudF9vcGVyYXRvciB1bmFyeV9vcGVyYXRvcgog
JXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IHZhcmlhYmxlX2lkZW50aWZpZXIgcHJpbWFy
eV9leHByZXNzaW9uIHBvc3RmaXhfZXhwcmVzc2lvbgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBl
ZE5vZGU+IGV4cHJlc3Npb24gaW50ZWdlcl9leHByZXNzaW9uIGFzc2lnbm1lbnRfZXhwcmVzc2lv
bgpAQCAtMTYyLDggKzE1NCw4IEBAIHN0YXRpYyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9j
LCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pCiAldHlwZSA8aW50
ZXJtLnR5cGU+IHR5cGVfcXVhbGlmaWVyIGZ1bGx5X3NwZWNpZmllZF90eXBlIHR5cGVfc3BlY2lm
aWVyCiAldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgdHlwZV9zcGVj
aWZpZXJfbm9uYXJyYXkKICV0eXBlIDxpbnRlcm0udHlwZT4gc3RydWN0X3NwZWNpZmllcgotJXR5
cGUgPGludGVybS5maWVsZD4gc3RydWN0X2RlY2xhcmF0b3IKLSV0eXBlIDxpbnRlcm0uZmllbGRM
aXN0PiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IHN0cnVjdF9kZWNsYXJhdGlvbiBzdHJ1Y3RfZGVj
bGFyYXRpb25fbGlzdAorJXR5cGUgPGludGVybS50eXBlTGluZT4gc3RydWN0X2RlY2xhcmF0b3IK
KyV0eXBlIDxpbnRlcm0udHlwZUxpc3Q+IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3Qgc3RydWN0X2Rl
Y2xhcmF0aW9uIHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CiAldHlwZSA8aW50ZXJtLmZ1bmN0aW9u
PiBmdW5jdGlvbl9oZWFkZXIgZnVuY3Rpb25fZGVjbGFyYXRvciBmdW5jdGlvbl9pZGVudGlmaWVy
CiAldHlwZSA8aW50ZXJtLmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJz
IGZ1bmN0aW9uX2NhbGxfaGVhZGVyCiAldHlwZSA8aW50ZXJtPiBmdW5jdGlvbl9jYWxsX2hlYWRl
cl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1ldGVycyBmdW5j
dGlvbl9jYWxsX2dlbmVyaWMgZnVuY3Rpb25fcHJvdG90eXBlCkBAIC0xNzIsMTcgKzE2NCwxMyBA
QCBzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29u
dGV4dCwgY29uc3QgY2hhciogcmVhc29uKQogJXN0YXJ0IHRyYW5zbGF0aW9uX3VuaXQKICUlCiAK
LWlkZW50aWZpZXIKLSAgICA6IElERU5USUZJRVIKLSAgICB8IFRZUEVfTkFNRQotCiB2YXJpYWJs
ZV9pZGVudGlmaWVyCiAgICAgOiBJREVOVElGSUVSIHsKICAgICAgICAgLy8gVGhlIHN5bWJvbCB0
YWJsZSBzZWFyY2ggd2FzIGRvbmUgaW4gdGhlIGxleGljYWwgcGhhc2UKICAgICAgICAgY29uc3Qg
VFN5bWJvbCogc3ltYm9sID0gJDEuc3ltYm9sOwogICAgICAgICBjb25zdCBUVmFyaWFibGUqIHZh
cmlhYmxlOwogICAgICAgICBpZiAoc3ltYm9sID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZp
ZXIiLCAkMS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkKTsKICAgICAg
ICAgICAgIFRWYXJpYWJsZSogZmFrZVZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgkMS5zdHJpbmcs
IHR5cGUpOwpAQCAtMTkxLDE3ICsxNzksMTAgQEAgdmFyaWFibGVfaWRlbnRpZmllcgogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBpZGVudGlmaWVyIGNhbiBvbmx5IGJlIGEg
dmFyaWFibGUgdHlwZSBzeW1ib2wKICAgICAgICAgICAgIGlmICghIHN5bWJvbC0+aXNWYXJpYWJs
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJ2YXJpYWJsZSBleHBl
Y3RlZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoJDEubGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9Ci0KICAgICAg
ICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsK
LQotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzVmFyaWFibGVCdWlsdEluKHZhcmlhYmxlKSAm
JiAKLSAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCB2YXJpYWJs
ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQx
LnN0cmluZywgaXQncyB1c2VkIGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wKQEAgLTIx
MCwxMiArMTkxLDExIEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgaWYgKHZhcmlhYmxl
LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgKSB7CiAgICAgICAgICAgICBD
b25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigpOwog
ICAgICAgICAgICAgVFR5cGUgdCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwg
QDEpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbihjb25zdEFycmF5LCB0LCAkMS5saW5lKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1
ZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUt
PmdldFR5cGUoKSwgJDEubGluZSk7CiAgICAgfQogICAgIDsKIApAQCAtMjI5LDIyICsyMDksMjIg
QEAgcHJpbWFyeV9leHByZXNzaW9uCiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBmb3Ig
Y29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoJDEuaSkgPj0gKDEgPDwgMTYp
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92
ZXJmbG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiBpbnRl
Z2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCQxLmkpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsKKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKICAgICB9
CiAgICAgfCBGTE9BVENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3Qo
JDEuZik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBA
MSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5s
aW5lKTsKICAgICB9CiAgICAgfCBCT09MQ09OU1RBTlQgewogICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXkt
PnNldEJDb25zdCgkMS5iKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgQDEpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29u
c3QpLCAkMS5saW5lKTsKICAgICB9CiAgICAgfCBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRf
UEFSRU4gewogICAgICAgICAkJCA9ICQyOwpAQCAtMjU4LDk3ICsyMzgsMTAxIEBAIHBvc3RmaXhf
ZXhwcmVzc2lvbgogICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIExFRlRfQlJBQ0tFVCBpbnRlZ2Vy
X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIGlmICghJDEtPmlzQXJyYXkoKSAm
JiAhJDEtPmlzTWF0cml4KCkgJiYgISQxLT5pc1ZlY3RvcigpKSB7CiAgICAgICAgICAgICBpZiAo
JDEtPmdldEFzU3ltYm9sTm9kZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAy
LCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAi
LCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5
cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICQxLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0
U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoQDIsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJp
eCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDIubGluZSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4
LCBvciB2ZWN0b3IgIiwgImV4cHJlc3Npb24iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCkt
PmdldElDb25zdCgwKTsKLSAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKLSAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgIGluZm9T
dHJlYW0gPDwgaW5kZXg7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9IGluZm9T
dHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJuZWdhdGl2
ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgaWYgKCQxLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0KSB7CisgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBm
b2xkaW5nIGZvciBhcnJheXMKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0
QXJyYXlOb2RlKCQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KS0+Z2V0SUNvbnN0KCksICQxLCAkMi5saW5lKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEt
PmlzVmVjdG9yKCkpIHsgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKKyAgICAgICAg
ICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKKyAgICAgICAgICAgICAgICBmaWVsZHMubnVt
ID0gMTsKKyAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQg
dG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5
CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRz
LCAkMSwgJDIubGluZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7
IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIG1hdHJpY2VzCisgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgJDEsICQyLmxpbmUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFu
dCBmb2xkaW5nIGZvciBhcnJheXMKLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5h
ZGRDb25zdEFycmF5Tm9kZShpbmRleCwgJDEsIEAyKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCQxLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0g
ICAgICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgICAg
ICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNb
MF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMg
ZmllbGRzIGludGVnZXIgYXJyYXkKLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5h
ZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgQDIpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMK
LSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5k
ZXgsICQxLCBAMik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5kZXggPj0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFu
Z2UgJyIgPDwgaW5kZXggPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4ID0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCgkMS0+aXNWZWN0
b3IoKSB8fCAkMS0+aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgp
IDw9IGluZGV4KSB7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoJDMtPmdldFF1
YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgaWYgKCgkMS0+aXNWZWN0
b3IoKSB8fCAkMS0+aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgp
IDw9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0
SUNvbnN0KCkgJiYgISQxLT5pc0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFJ
bmZvU3RyZWFtIDw8ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8
ICInIjsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJmaWVsZCBzZWxl
Y3Rpb24gb3V0IG9mIHJhbmdlICciIDw8ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwogICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIo
KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIiLCAiWyIs
IGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgk
MS0+aXNBcnJheSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUo
KS5nZXRBcnJheVNpemUoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCQxLT5nZXRUeXBlKCkuZ2V0TWF4QXJyYXlTaXplKCkgPD0gJDMtPmdldEFzQ29uc3RhbnRVbmlv
bigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTZXRNYXhTaXplKCQxLT5nZXRB
c1N5bWJvbE5vZGUoKSwgJDEtPmdldFR5cGVQb2ludGVyKCksICQzLT5nZXRBc0NvbnN0YW50VW5p
b24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksIHRydWUsICQyLmxpbmUp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoJDEtPmdldEFzU3lt
Ym9sTm9kZSgpLCAkMS0+Z2V0VHlwZVBvaW50ZXIoKSwgMCwgZmFsc2UsICQyLmxpbmUpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+
Z2V0SUNvbnN0KCkgPj0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGluZGV4
IG91dCBvZiByYW5nZSAnIiA8PCAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJy
YXlQb2ludGVyKCktPmdldElDb25zdCgpIDw8ICInIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwg
ZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJ
bmRleChFT3BJbmRleERpcmVjdCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICgkMS0+aXNBcnJheSgp
ICYmICQxLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgeworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCAiYXJyYXkgbXVzdCBiZSByZWRl
Y2xhcmVkIHdpdGggYSBzaXplIGJlZm9yZSBiZWluZyBpbmRleGVkIHdpdGggYSB2YXJpYWJsZSIp
OwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGluZGV4ID0gICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+c2V0SUNvbnN0KGluZGV4KTsKLSAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEs
ICQzLCBAMik7CisKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRJbmRleChFT3BJbmRleEluZGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOwogICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCBAMik7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCQkID09IDApIHsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJy
YXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEZD
b25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0
KSwgQDIpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCAk
Mi5saW5lKTsKICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNBcnJheSgpKSB7CiAgICAgICAgICAg
ICBpZiAoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKLSAgICAgICAgICAgICAgICAkJC0+c2V0
VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CisgICAgICAgICAgICAgICAg
JCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSwgJDEtPmdldFR5cGUo
KS5nZXRUeXBlTmFtZSgpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJCQt
PnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2
cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5pc01hdHJpeCgpKSk7CiAKICAg
ICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQog
ICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29u
c3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7Ci0gICAgICAgICAgICBU
UXVhbGlmaWVyIHF1YWxpZmllciA9ICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgICAgICQkLT5zZXRUeXBl
KFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIs
ICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9y
KCkpIHsKLSAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gJDEtPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OwotICAg
ICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJl
Y2lzaW9uKCksIHF1YWxpZmllcikpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2Ug
aWYgKCQxLT5pc01hdHJpeCgpICYmICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpCisgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCks
ICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Cisg
ICAgICAgIGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKQorICAgICAgICAgICAgJCQtPnNldFR5cGUo
VFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFy
eSwgJDEtPmdldE5vbWluYWxTaXplKCkpKTsKKyAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9y
KCkgJiYgJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKKyAgICAgICAg
ICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lv
bigpLCBFdnFDb25zdCkpOworICAgICAgICBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKKyAgICAg
ICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNp
c2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgJCQtPnNl
dFR5cGUoJDEtPmdldFR5cGUoKSk7Ci0gICAgICAgIH0KICAgICB9CiAgICAgfCBmdW5jdGlvbl9j
YWxsIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBwb3N0Zml4X2V4cHJlc3Npb24g
RE9UIGlkZW50aWZpZXIgeworICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIERPVCBGSUVMRF9TRUxF
Q1RJT04gewogICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDMsICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4i
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQzLmxpbmUsICJjYW5ub3QgYXBwbHkgZG90
IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS0+aXNWZWN0b3IoKSkgewogICAgICAg
ICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5w
YXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRz
LCBAMykpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCok
My5zdHJpbmcsICQxLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsICQzLmxpbmUpKSB7CiAgICAg
ICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNl
dHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9yIGZpZWxkcwotICAgICAg
ICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsIEAz
KTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVs
ZHMsICQxLCAkMy5saW5lKTsKICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgICAgICQk
ID0gJDE7CkBAIC0zNTcsMTMgKzM0MSwxMyBAQCBwb3N0Zml4X2V4cHJlc3Npb24KICAgICAgICAg
ICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0
UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAoKiQzLnN0cmluZykuc2l6ZSgpKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFRTdHJpbmcgdmVjdG9yU3RyaW5nID0g
KiQzLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCBAMyk7Ci0gICAgICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wVmVjdG9yU3dpenpsZSwgJDEs
IGluZGV4LCBAMik7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywgJDMubGluZSk7CisgICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wVmVjdG9yU3dpenps
ZSwgJDEsIGluZGV4LCAkMi5saW5lKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlw
ZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAo
aW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRz
OwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0cmlu
ZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgQDMpKSB7CisgICAgICAgICAgICBpZiAo
ISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNp
emUoKSwgZmllbGRzLCAkMy5saW5lKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZVJv
dyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZUNvbCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMzcyLDc4ICszNTYsODQgQEAgcG9zdGZp
eF9leHByZXNzaW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChmaWVsZHMud2hv
bGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDIsICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVudGVkIHlldCIsICIuIik7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxk
cyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25z
dCgwKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5kZXgsIEAyKTsKKyAg
ICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgJDMubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBpbmRleCwgJDIubGluZSk7CiAg
ICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+
Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9taW5hbFNpemUoKSkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+
c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0Tm9taW5hbFNpemUoKSArIGZpZWxkcy5yb3cp
OwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCBAMyk7Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBpbmRleCwgQDIpOworICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAkMy5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKICAgICAg
ICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQ
cmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCQxLT5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAgIGJvb2wgZmllbGRGb3VuZCA9
IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gJDEtPmdldFR5
cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsK
LSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZmllbGRzW2ldLT5uYW1lKCkgPT0gKiQzLnN0cmluZykgewotICAgICAg
ICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZp
ZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFk
ZENvbnN0U3RydWN0KCokMy5zdHJpbmcsICQxLCBAMik7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJCA9ICQxOworICAgICAgICAgICAgY29uc3QgVFR5
cGVMaXN0KiBmaWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAg
aWYgKGZpZWxkcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICQkID0gJDE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOworICAg
ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICgoKmZpZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0g
KiQzLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICQkLT5z
ZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBj
aGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0
dXJlIGZpZWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJlIGRl
ZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgotICAgICAgICAg
ICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25z
dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09
IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENv
bnN0U3RydWN0KCokMy5zdHJpbmcsICQxLCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkJCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRo
ZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJl
dHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICQk
LT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOworICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlw
ZSwgJDMubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCAkMi5saW5l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlw
ZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07Ci0gICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChpKTsK
LSAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpmaWVsZHNbaV0tPnR5cGUoKSwg
QDMpOwotICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJ
bmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCBAMik7Ci0gICAgICAgICAgICAg
ICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUi
LCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CisgICAgICAgICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwg
IiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gJDE7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMiwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9y
IG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBz
dHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgJDMuc3RyaW5n
LT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICQkID0gJDE7CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQzLnN0cmluZywg
aXQncyBmcm9tIHRoZSBwb29sCiAgICAgfQogICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIElOQ19P
UCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAyLCAiKysiLCAkMSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCQyLmxpbmUsICIrKyIsICQx
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNyZW1lbnQsICQxLCBAMiwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwgJDEsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVu
YXJ5T3BFcnJvcihAMiwgIisrIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQyLmxpbmUsICIrKyIsICQxLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQk
ID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gREVDX09Q
IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICItLSIsICQxKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIubGluZSwgIi0tIiwgJDEp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwgJDEsIEAyLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAkMSwgJDIubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5h
cnlPcEVycm9yKEAyLCAiLS0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDIubGluZSwgIi0tIiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQg
PSAkMTsKICAgICAgICAgfQpAQCAtNDcxLDE4ICs0NjEsMTggQEAgZnVuY3Rpb25fY2FsbAogICAg
ICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJlIHZlcmlmaWVkIGFsZ29yaXRobWlj
YWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVi
cFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhlIHR5cGUgYmFjawotICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEuaW50ZXJtTm9kZSwg
KmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVj
dG9yRXJyb3JDaGVjaygkMS5saW5lLCAkMS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUp
KSB7CiAgICAgICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1Y3Rvciwgb2Yg
dHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAkJCA9IGNv
bnRleHQtPmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCBA
MSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRl
cm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgJDEubGluZSk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3Jl
Z2F0ZU9wZXJhdG9yKDAsIG9wLCBAMSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoMCwgb3AsICQxLmxpbmUpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgJCQtPnNldFR5cGUodHlwZSk7CiAgICAgICAgIH0gZWxzZSB7
CkBAIC00OTEsMTMgKzQ4MSwxMyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgY29uc3QgVEZ1bmN0aW9uKiBmbkNhbmRpZGF0ZTsKICAgICAgICAgICAgIGJvb2wg
YnVpbHRJbjsKLSAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9u
KEAxLCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4
dC0+ZmluZEZ1bmN0aW9uKCQxLmxpbmUsIGZuQ2FsbCwgJmJ1aWx0SW4pOwogICAgICAgICAgICAg
aWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAv
LyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAg
ICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYm
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVuc2lvbkVycm9yQ2hlY2soQDEsIGZu
Q2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygkMS5saW5lLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9u
KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVpbHRJbk9w
KCk7CkBAIC01MDksNyArNDk5LDcgQEAgZnVuY3Rpb25fY2FsbAogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyZWF0IGl0IGxpa2UgYSBidWls
dC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAg
ICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgo
b3AsICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3As
ICQxLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgkJCA9PSAwKSAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHRyYUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVuYXJ5IG9wZXJhdG9yIGZ1bmN0aW9u
LiAgVHlwZTogIiA8PCBzdGF0aWNfY2FzdDxUSW50ZXJtVHlwZWQqPigkMS5pbnRlcm1Ob2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAgLTUxOCwxMiArNTA4LDEyIEBAIGZ1bmN0aW9uX2NhbGwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9SOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEu
aW50ZXJtQWdncmVnYXRlLCBvcCwgQDEpOworICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVn
YXRlLCBvcCwgJDEubGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVhbCBmdW5jdGlv
biBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
c2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlvbkNhbGws
IEAxKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0
QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlvbkNhbGwsICQx
LmxpbmUpOwogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShmbkNhbmRpZGF0ZS0+Z2V0
UmV0dXJuVHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhvdyB3ZSBr
bm93IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVpbHRJbiBmdW5jdGlvbiBvciBh
IHVzZXIgZGVmaW5lZCBmdW5jdGlvbgpAQCAtNTUwLDcgKzU0MCw3IEBAIGZ1bmN0aW9uX2NhbGwK
ICAgICAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2RlIGZvciBlcnJvciByZWNvdmVy
eQogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7
Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
IEAxKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgJDEubGluZSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC01NjMsNyArNTUzLDcgQEAgZnVuY3Rpb25fY2FsbF9v
cl9tZXRob2QKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBwb3N0Zml4X2V4cHJlc3Np
b24gRE9UIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKEAz
LCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKKyAgICAgICAgY29udGV4dC0+ZXJy
b3IoJDMubGluZSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CiAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgJCQgPSAkMzsKICAgICB9CkBAIC01NzIsOSArNTYy
LDExIEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiBmdW5jdGlvbl9jYWxsX2dlbmVyaWMKICAg
ICA6IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBSSUdIVF9QQVJFTiB7CiAg
ICAgICAgICQkID0gJDE7CisgICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwogICAgIH0KICAgICB8
IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMgUklHSFRfUEFSRU4gewogICAgICAg
ICAkJCA9ICQxOworICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICB9CiAgICAgOwogCkBA
IC02MDAsNyArNTkyLDcgQEAgZnVuY3Rpb25fY2FsbF9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzCiAg
ICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgkMy0+Z2V0VHlwZSgpKSB9
OwogICAgICAgICAkMS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAgJCQu
ZnVuY3Rpb24gPSAkMS5mdW5jdGlvbjsKLSAgICAgICAgJCQuaW50ZXJtTm9kZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsICQzLCBAMik7CisgICAg
ICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgk
MS5pbnRlcm1Ob2RlLCAkMywgJDIubGluZSk7CiAgICAgfQogICAgIDsKIApAQCAtNjI1LDM5ICs2
MTcsMzkgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoK
ICAgICAgICAgICAgICAgICBpZiAoJDEubWF0cml4KSB7CiAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25z
dHJ1Y3RNYXQyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BD
b25zdHJ1Y3RNYXQzOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogb3AgPSBF
T3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ag
PSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkg
ewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0VmVjMjsg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0VmVj
MzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0
VmVjNDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0VmVjMzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNo
KCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0SW50
OyAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RJVmVj
MjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdElWZWMz
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0SW50OyAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoIml2ZWMyIiwgJDEubGluZSk7IG9w
ID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogICAg
ICAgRlJBR19WRVJUX09OTFkoIml2ZWMzIiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0SVZl
YzM7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFko
Iml2ZWM0IiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0
Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAg
IGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDM6IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZF
UlRfT05MWSgiYnZlYzIiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzMiLCAk
MS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzQiLCAkMS5saW5lKTsgb3AgPSBFT3BD
b25zdHJ1Y3RCVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUiLCBnZXRCYXNpY1N0cmluZygkMS50
eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImNhbm5vdCBj
b25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmcoJDEudHlwZSkpOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAkMS50eXBlID0gRWJ0
RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKQEAgLTY2OSw3
ICs2NjEsMTQgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAgICAkJCA9IGZ1bmN0aW9uOwog
ICAgIH0KICAgICB8IElERU5USUZJRVIgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKEAxLCAqJDEuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVk
RXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKKyAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAg
ICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigkMS5zdHJpbmcsIHR5cGUp
OworICAgICAgICAkJCA9IGZ1bmN0aW9uOworICAgIH0KKyAgICB8IEZJRUxEX1NFTEVDVElPTiB7
CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDEubGluZSwgKiQxLnN0
cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRUeXBlIHR5
cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9
IG5ldyBURnVuY3Rpb24oJDEuc3RyaW5nLCB0eXBlKTsKQEAgLTY4MiwyOCArNjgxLDI4IEBAIHVu
YXJ5X2V4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBJTkNfT1AgdW5h
cnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAx
LCAiKysiLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCQxLmxp
bmUsICIrKyIsICQyKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3JlbWVudCwg
JDIsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT51bmFyeU9wRXJyb3IoQDEsICIrKyIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAiKysiLCAkMi0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAkJCA9ICQyOwogICAgICAgICB9CiAgICAgfQogICAgIHwgREVDX09QIHVuYXJ5X2V4
cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjayhAMSwgIi0t
IiwgJDIpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygkMS5saW5lLCAi
LS0iLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQsICQyLCBA
MSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAkMiwgJDEubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+dW5hcnlPcEVycm9yKEAxLCAiLS0iLCAkMi0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgIi0tIiwgJDItPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAgICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5
X2V4cHJlc3Npb24gewogICAgICAgICBpZiAoJDEub3AgIT0gRU9wTnVsbCkgewotICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCQxLm9wLCAkMiwgQDEs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZXJyb3JPcCA9ICIiOwogICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5vcCkgewpAQCAt
NzExLDcgKzcxMCw3IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAgICAgICAgICAgICAgICBjYXNlIEVP
cExvZ2ljYWxOb3Q6IGVycm9yT3AgPSAiISI7IGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb250ZXh0LT51
bmFyeU9wRXJyb3IoQDEsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgZXJyb3JPcCwgJDItPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICAgICAgfQpAQCAtNzIyLDI2ICs3MjEs
MjggQEAgdW5hcnlfZXhwcmVzc2lvbgogLy8gR3JhbW1hciBOb3RlOiAgTm8gdHJhZGl0aW9uYWwg
c3R5bGUgdHlwZSBjYXN0cy4KIAogdW5hcnlfb3BlcmF0b3IKLSAgICA6IFBMVVMgIHsgJCQub3Ag
PSBFT3BOdWxsOyB9Ci0gICAgfCBEQVNIICB7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KLSAgICB8
IEJBTkcgIHsgJCQub3AgPSBFT3BMb2dpY2FsTm90OyB9CisgICAgOiBQTFVTICB7ICQkLmxpbmUg
PSAkMS5saW5lOyAkJC5vcCA9IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsgJCQubGluZSA9ICQx
LmxpbmU7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KKyAgICB8IEJBTkcgIHsgJCQubGluZSA9ICQx
LmxpbmU7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAgIDsKIC8vIEdyYW1tYXIgTm90ZTog
IE5vICcqJyBvciAnJicgdW5hcnkgb3BzLiAgUG9pbnRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuCiAK
IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KICAgICA6IHVuYXJ5X2V4cHJlc3Npb24geyAkJCA9
ICQxOyB9CiAgICAgfCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIFNUQVIgdW5hcnlfZXhwcmVz
c2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wTXVsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgIEZSQUdf
VkVSVF9PTkxZKCIqIiwgJDIubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoQDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGlu
ZSwgIioiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsK
ICAgICAgICAgfQogICAgIH0KICAgICB8IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24gU0xBU0gg
dW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wRGl2LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgJDIubGluZSk7CisgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAkMSwgJDMsICQyLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCks
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoJDIubGluZSwgIi8iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNzUxLDE3ICs3NTIsMTcgQEAgbXVsdGlwbGljYXRp
dmVfZXhwcmVzc2lvbgogYWRkaXRpdmVfZXhwcmVzc2lvbgogICAgIDogbXVsdGlwbGljYXRpdmVf
ZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gUExVUyBt
dWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BBZGQsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBp
ZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIisi
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiKyIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgfQog
ICAgIHwgYWRkaXRpdmVfZXhwcmVzc2lvbiBEQVNIIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24g
ewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcFN1
YiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcFN1YiwgJDEsICQzLCAkMi5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKCQyLmxpbmUsICItIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc3NSw0MyArNzc2LDQzIEBAIHNoaWZ0X2V4cHJl
c3Npb24KIHJlbGF0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogc2hpZnRfZXhwcmVzc2lvbiB7ICQk
ID0gJDE7IH0KICAgICB8IHJlbGF0aW9uYWxfZXhwcmVzc2lvbiBMRUZUX0FOR0xFIHNoaWZ0X2V4
cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExlc3NUaGFuLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4s
ICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIjwiLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPCIsICQxLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2Up
OwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIp
OworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIu
bGluZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gUklH
SFRfQU5HTEUgc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAkMSwgJDMsIEAyLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcihAMiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5l
LCAiPiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBy
ZWxhdGlvbmFsX2V4cHJlc3Npb24gTEVfT1Agc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWws
ICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsICQy
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI8PSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI8PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
My0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gR0VfT1Agc2hpZnRf
ZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoQDIsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI+
PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgQDIpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAt
ODE5LDIzICs4MjAsMjMgQEAgcmVsYXRpb25hbF9leHByZXNzaW9uCiBlcXVhbGl0eV9leHByZXNz
aW9uCiAgICAgOiByZWxhdGlvbmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBlcXVh
bGl0eV9leHByZXNzaW9uIEVRX09QIHJlbGF0aW9uYWxfZXhwcmVzc2lvbiAgewotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcihAMiwgIj09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
JDIubGluZSwgIj09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENv
bnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAg
ICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CisgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKICAgICAgICAgfQogICAgIH0K
ICAgICB8IGVxdWFsaXR5X2V4cHJlc3Npb24gTkVfT1AgcmVsYXRpb25hbF9leHByZXNzaW9uIHsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RF
cXVhbCwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAkMSwgJDMsICQy
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIhPSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIhPSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
My0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAtODU1LDEzICs4NTYsMTMgQEAgaW5jbHVzaXZlX29y
X2V4cHJlc3Npb24KIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24KICAgICA6IGluY2x1c2l2ZV9vcl9l
eHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9hbmRfZXhwcmVzc2lvbiBBTkRf
T1AgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQxLCAkMywgQDIsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoQDIsICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUs
ICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpA
QCAtODY5LDEzICs4NzAsMTMgQEAgbG9naWNhbF9hbmRfZXhwcmVzc2lvbgogbG9naWNhbF94b3Jf
ZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9hbmRfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAg
ICB8IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24gWE9SX09QIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24g
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BM
b2dpY2FsWG9yLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEs
ICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiXl4iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiXl4iLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
LSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAyKTsK
KyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxp
bmUpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg4MywxMyArODg0LDEzIEBAIGxvZ2lj
YWxfeG9yX2V4cHJlc3Npb24KIGxvZ2ljYWxfb3JfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF94
b3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfb3JfZXhwcmVzc2lvbiBP
Ul9PUCBsb2dpY2FsX3hvcl9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMsIEAyLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoQDIsICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUs
ICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpA
QCAtODk3LDE1ICs4OTgsMTUgQEAgbG9naWNhbF9vcl9leHByZXNzaW9uCiBjb25kaXRpb25hbF9l
eHByZXNzaW9uCiAgICAgOiBsb2dpY2FsX29yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAg
fCBsb2dpY2FsX29yX2V4cHJlc3Npb24gUVVFU1RJT04gZXhwcmVzc2lvbiBDT0xPTiBhc3NpZ25t
ZW50X2V4cHJlc3Npb24gewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAMiwg
JDEpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUsIEAyKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUsICQyLmxpbmUpOwog
ICAgICAgICBpZiAoJDMtPmdldFR5cGUoKSAhPSAkNS0+Z2V0VHlwZSgpKQogICAgICAgICAgICAg
JCQgPSAwOwogCiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxp
bmUsICI6IiwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCksICQ1LT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDU7
CiAgICAgICAgIH0KQEAgLTkxNSwxMSArOTE2LDExIEBAIGNvbmRpdGlvbmFsX2V4cHJlc3Npb24K
IGFzc2lnbm1lbnRfZXhwcmVzc2lvbgogICAgIDogY29uZGl0aW9uYWxfZXhwcmVzc2lvbiB7ICQk
ID0gJDE7IH0KICAgICB8IHVuYXJ5X2V4cHJlc3Npb24gYXNzaWdubWVudF9vcGVyYXRvciBhc3Np
Z25tZW50X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVj
ayhAMiwgImFzc2lnbiIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hl
Y2soJDIubGluZSwgImFzc2lnbiIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCQyLm9wLCAk
MSwgJDMsIEAyKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWdu
KCQyLm9wLCAkMSwgJDMsICQyLmxpbmUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YXNzaWduRXJyb3IoJDIubGluZSwgImFzc2lnbiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
My0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC05MjcsMTEgKzkyOCwxMSBAQCBh
c3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA7CiAKIGFzc2lnbm1lbnRfb3BlcmF0b3IKLSAgICA6
IEVRVUFMICAgICAgICB7ICQkLm9wID0gRU9wQXNzaWduOyB9Ci0gICAgfCBNVUxfQVNTSUdOICAg
eyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQotICAgIHwgRElWX0FTU0lHTiAgIHsgJCQub3AgPSBF
T3BEaXZBc3NpZ247IH0KLSAgICB8IEFERF9BU1NJR04gICB7ICQkLm9wID0gRU9wQWRkQXNzaWdu
OyB9Ci0gICAgfCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQorICAgIDog
RVFVQUwgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC5saW5l
ID0gJDEubGluZTsgJCQub3AgPSBFT3BBc3NpZ247IH0KKyAgICB8IE1VTF9BU1NJR04gICB7IEZS
QUdfVkVSVF9PTkxZKCIqPSIsICQxLmxpbmUpOyAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9w
ID0gRU9wTXVsQXNzaWduOyB9CisgICAgfCBESVZfQVNTSUdOICAgeyBGUkFHX1ZFUlRfT05MWSgi
Lz0iLCAkMS5saW5lKTsgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcERpdkFzc2ln
bjsgfQorICAgIHwgQUREX0FTU0lHTiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BBZGRBc3NpZ247IH0KKyAgICB8IFNV
Ql9BU1NJR04gICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQubGluZSA9
ICQxLmxpbmU7ICQkLm9wID0gRU9wU3ViQXNzaWduOyB9CiAgICAgOwogCiBleHByZXNzaW9uCkBA
IC05MzksOSArOTQwLDkgQEAgZXhwcmVzc2lvbgogICAgICAgICAkJCA9ICQxOwogICAgIH0KICAg
ICB8IGV4cHJlc3Npb24gQ09NTUEgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoJDEsICQzLCBAMik7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQxLCAkMywgJDIubGluZSk7CiAgICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAy
LCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIsIiwgJDEtPmdl
dENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDM7CiAgICAgICAgIH0KQEAg
LTk2OSwxMyArOTcwLDEzIEBAIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICBjb25zdCBUUGFyYW1l
dGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAgICAgICAgICAgaWYgKHBhcmFt
Lm5hbWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUVmFyaWFibGUgdmFy
aWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJs
ZSAqdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRTeW1ib2wodmFyaWFibGUuZ2V0VW5pcXVlSWQoKSwgdmFyaWFibGUuZ2V0TmFtZSgpLCB2YXJp
YWJsZS5nZXRUeXBlKCksIEAxKSwgQDEpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUtPmdl
dE5hbWUoKSwgdmFyaWFibGUtPmdldFR5cGUoKSwgJDEubGluZSksICQxLmxpbmUpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlw
ZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsIEAx
KSwgQDEpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAKQEAgLTk5MSwxMSArOTkyLDExIEBAIGRlY2xhcmF0aW9uCiAg
ICAgfQogICAgIHwgUFJFQ0lTSU9OIHByZWNpc2lvbl9xdWFsaWZpZXIgdHlwZV9zcGVjaWZpZXJf
bm9fcHJlYyBTRU1JQ09MT04gewogICAgICAgICBpZiAoKCQyID09IEVicEhpZ2gpICYmIChjb250
ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmZyYWdt
ZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJwcmVj
aXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBv
cnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNvbnRleHQtPnN5bWJvbFRhYmxl
LnNldERlZmF1bHRQcmVjaXNpb24oICQzLCAkMiApKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVh
bGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNp
b24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICQkID0gMDsKQEAgLTEwMTUsMTIg
KzEwMTYsMTIgQEAgZnVuY3Rpb25fcHJvdG90eXBlCiAgICAgICAgIFRGdW5jdGlvbiogcHJldkRl
YyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoJDEt
PmdldE1hbmdsZWROYW1lKCkpKTsKICAgICAgICAgaWYgKHByZXZEZWMpIHsKICAgICAgICAgICAg
IGlmIChwcmV2RGVjLT5nZXRSZXR1cm5UeXBlKCkgIT0gJDEtPmdldFJldHVyblR5cGUoKSkgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMg
bXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgJDEtPmdldFJldHVyblR5cGUoKS5nZXRC
YXNpY1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAi
b3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgJDEt
PmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHByZXZEZWMtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpICE9ICQxLT5n
ZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2Ft
ZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZp
ZXJTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxp
ZmllcnMiLCAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQpAQCAtMTAzMiw2ICsxMDMzLDcgQEAgZnVuY3Rpb25fcHJvdG90eXBlCiAg
ICAgICAgIC8vIGJlaW5nIHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFy
YXRpb24sIG5vdCB0aGUgb25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAg
ICAgICQkLmZ1bmN0aW9uID0gJDE7CisgICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwogCiAgICAg
ICAgIC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUgZnVuY3Rpb24ncyBh
cmd1bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9u
IHByb3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KQEAgLTEwNjcsNyAr
MTA2OSw3IEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKICAgICAgICAgICAgIC8v
CiAgICAgICAgICAgICAvLyBUaGlzIHBhcmFtZXRlciA+IGZpcnN0IGlzIHZvaWQKICAgICAgICAg
ICAgIC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBhbiBhcmd1
bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOworICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBm
b3IgJyh2b2lkKSciLCAidm9pZCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgZGVsZXRlICQzLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0x
MDgxLDExICsxMDgzLDExIEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKIGZ1bmN0
aW9uX2hlYWRlcgogICAgIDogZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZUX1BB
UkVOIHsKICAgICAgICAgaWYgKCQxLnF1YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgJDEucXVhbGlm
aWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJu
byBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0
cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmll
clN0cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogICAgICAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZvbHZl
ZCBhcyB3ZWxsLi4uCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKEAyLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCQyLmxpbmUsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAg
ICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQg
KHdlIGRvIG5vdCBzdXBwb3J0IHJlY3Vyc2lvbikKQEAgLTExMDAsMzEgKzExMDIsMzMgQEAgZnVu
Y3Rpb25faGVhZGVyCiAKIHBhcmFtZXRlcl9kZWNsYXJhdG9yCiAgICAgLy8gVHlwZSArIG5hbWUK
LSAgICA6IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgeworICAgIDogdHlwZV9zcGVjaWZpZXIg
SURFTlRJRklFUiB7CiAgICAgICAgIGlmICgkMS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5z
dHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImls
bGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHskMi5zdHJpbmcs
IG5ldyBUVHlwZSgkMSl9OworICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICAgICAgJCQu
cGFyYW0gPSBwYXJhbTsKICAgICB9Ci0gICAgfCB0eXBlX3NwZWNpZmllciBpZGVudGlmaWVyIExF
RlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgdHlw
ZV9zcGVjaWZpZXIgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBS
SUdIVF9CUkFDS0VUIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFrZSBhbiBhcnJh
eSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNo
ZWNrKEAzLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQz
LmxpbmUsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAkMS5zZXRBcnJheSh0cnVl
LCBzaXplKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgkMSk7CiAgICAgICAg
IFRQYXJhbWV0ZXIgcGFyYW0gPSB7ICQyLnN0cmluZywgdHlwZSB9OworICAgICAgICAkJC5saW5l
ID0gJDIubGluZTsKICAgICAgICAgJCQucGFyYW0gPSBwYXJhbTsKICAgICB9CiAgICAgOwpAQCAt
MTE0MCwxNCArMTE0NCwxNCBAQCBwYXJhbWV0ZXJfZGVjbGFyYXRpb24KICAgICAvLwogICAgIDog
dHlwZV9xdWFsaWZpZXIgcGFyYW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfZGVjbGFyYXRvciB7
CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2so
QDMsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKCQzLmxpbmUsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBhcmFt
ZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQyOwot
ICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soQDIsICQxLCAq
JDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJy
b3JDaGVjaygkMi5saW5lLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAyLCBF
dnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBh
cmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgLy8KQEAgLTExNTUs
MTQgKzExNTksMTQgQEAgcGFyYW1ldGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICB8IHR5cGVf
cXVhbGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsK
ICAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhA
MywgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIHwgcGFyYW1l
dGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgewogICAgICAgICAkJCA9ICQy
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soQDIsICQx
LCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVy
RXJyb3JDaGVjaygkMi5saW5lLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAy
LCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgOwpAQCAtMTE5
Myw4MyArMTE5Nyw4MyBAQCBpbml0X2RlY2xhcmF0b3JfbGlzdAogICAgIDogc2luZ2xlX2RlY2xh
cmF0aW9uIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3Jf
bGlzdCBDT01NQSBpZGVudGlmaWVyIHsKKyAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1B
IElERU5USUZJRVIgewogICAgICAgICBpZiAoJDEudHlwZS50eXBlID09IEVidEludmFyaWFudCAm
JiAhJDMuc3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywg
InVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmct
PmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgInVuZGVjbGFy
ZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKLSAgICAgICAg
VEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAqJDMuc3RyaW5nLCBUVHlwZSgkMS50eXBlKSwgQDMpOwotICAgICAgICAkJC5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2Rl
LCBzeW1ib2wsIEAzKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDMuc3RyaW5nLCBUVHlwZSgkMS50eXBlKSwgJDMu
bGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIHN5bWJvbCwgJDMubGluZSk7CiAgICAgICAg
IAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMywgJCQu
dHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQz
LmxpbmUsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAg
ICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAk
JC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNo
ZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkJC50
eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygk
My5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAg
ICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0gICAg
fCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdI
VF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hl
Y2soQDMsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJ
RklFUiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RF
cnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDMubGluZSwgKiQzLnN0cmluZywgJDEudHlw
ZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQg
PSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhANCwgJDEu
dHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKEA0LCAkMS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDQubGluZSwgJDEudHlw
ZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZh
cmlhYmxlOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQz
LnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5RXJyb3JDaGVjaygkNC5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQotICAg
IHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29u
c3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJh
dG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lv
biBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soJDMubGluZSwgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soQDMsICok
My5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENv
bnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0LCAkMS50eXBlKSB8fCBjb250ZXh0
LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5cGUpKQorICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5h
cnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7
Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhANCwgJDUsIHNp
emUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDQubGlu
ZSwgJDUsIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFi
bGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hl
Y2soQDQsICokMy5zdHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5hcnJheUVycm9yQ2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFy
aWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IFRUeXBlIHR5cGUgPSBUVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJyYXlT
aXplKHNpemUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwgKiQz
LnN0cmluZywgdHlwZSwgQDMpLCBAMyk7CisgICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlID8gdmFyaWFibGUtPmdldFVuaXF1
ZUlkKCkgOiAwLCAqJDMuc3RyaW5nLCB0eXBlLCAkMy5saW5lKSwgJDMubGluZSk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIEVR
VUFMIGluaXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soQDMsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEg
SURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgVEludGVybU5v
ZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVy
KEAzLCAqJDMuc3RyaW5nLCAkMS50eXBlLCAkNSwgaW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYg
KCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoJDMubGluZSwgKiQzLnN0cmluZywgJDEudHlw
ZSwgJDUsIGludGVybU5vZGUpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVp
bGQgdGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAg
ICAgICAgIGlmIChpbnRlcm1Ob2RlKQotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2Rl
LCBANCk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGludGVybU5vZGUsICQ0LmxpbmUpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9ICQxLmlu
dGVybUFnZ3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEyODIsNzkgKzEyODYsNzkgQEAg
aW5pdF9kZWNsYXJhdG9yX2xpc3QKIHNpbmdsZV9kZWNsYXJhdGlvbgogICAgIDogZnVsbHlfc3Bl
Y2lmaWVkX3R5cGUgewogICAgICAgICAkJC50eXBlID0gJDE7Ci0gICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCQxKSwgQDEpLCBAMSk7CisgICAgICAg
ICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCQxKSwgJDEubGlu
ZSksICQxLmxpbmUpOwogICAgIH0KLSAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZp
ZXIgewotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgQDIpOwotICAgICAgICAkJC5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1i
b2wsIEAyKTsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgeworICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7CisgICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIu
bGluZSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjayhAMiwgJCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKCQyLmxpbmUsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAy
LCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25J
bml0Q29uc3RFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgJCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soQDIsICokMi5zdHJpbmcsICQkLnR5
cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQy
LmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAg
ICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIH0KLSAgICB8
IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIFJJR0hUX0JSQUNL
RVQgewotICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRp
b25zIG5vdCBzdXBwb3J0ZWQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgIHwgZnVsbHlfc3Bl
Y2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAg
ICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBu
b3Qgc3VwcG9ydGVkIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCBAMik7Ci0gICAgICAg
ICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KHN5bWJvbCwgQDIpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7
CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtl
QWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CiAgICAgICAgICQkLnR5cGUgPSAkMTsKICAgICB9
Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25z
dGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5
cGUgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFD
S0VUIHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCQxKTsKICAgICAgICAgaW50IHNpemU7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKEAyLCAkNCwgc2l6ZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQyLmxpbmUsICQ0LCBz
aXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5zZXRB
cnJheVNpemUoc2l6ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgQDIpOwotICAgICAg
ICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0
ZShzeW1ib2wsIEAyKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCB0eXBlLCAkMi5saW5lKTsKKyAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JD
aGVjayhAMiwgKiQyLnN0cmluZywgJDEsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQudHlwZSA9ICQxOwogCi0g
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAzLCAkMSkgfHwgY29udGV4
dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKCQzLmxpbmUsICQxKSB8fCBjb250ZXh0LT5hcnJheVF1YWxp
ZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkKKyAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQzLmxpbmUsICQ0LCBzaXplKSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICQxLnNl
dEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7
Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKEAzLCAqJDIuc3RyaW5n
LCAkMSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVj
aygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAg
ICAgICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVR
VUFMIGluaXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soQDIsICQxKSkKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIg
RVFVQUwgaW5pdGlhbGl6ZXIgeworICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKICAgICAgICAgJCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1O
b2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0
cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1
dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIuc3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7
CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlv
bgogICAgICAgICAvLwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAgICAgICAg
ICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0
ZShpbnRlcm1Ob2RlLCBAMyk7CisgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgJDMubGluZSk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0g
MDsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEzNjMsNTAgKzEzNjcsMTE4IEBAIHNpbmdsZV9kZWNs
YXJhdGlvbgogICAgICAgICB9CiAgICAgfQogICAgIHwgSU5WQVJJQU5UIElERU5USUZJRVIgewot
ICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgQDEpOwotICAgICAg
ICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgVkVSVEVYX09O
TFkoImludmFyaWFudCBkZWNsYXJhdGlvbiIsICQxLmxpbmUpOworICAgICAgICBpZiAoY29udGV4
dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJp
YW50VmFyeWluZ091dCwgQDIpOworICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFu
dCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgJDIubGluZSk7CiAgICAgICAgIGlmICghJDIuc3lt
Ym9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInVuZGVjbGFy
ZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInVuZGVjbGFyZWQgaWRlbnRp
ZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAkJC5p
bnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewot
ICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkJC50eXBlKSwgQDIpOwotICAgICAgICAg
ICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoc3ltYm9sLCBAMik7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBlKCQkLnR5cGUp
LCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CiAgICAgICAgIH0KICAg
ICB9CisKKy8vCisvLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFnZXMu
CisvLworLy8gICAgfCBidWZmZXJfc3BlY2lmaWVyIHsKKy8vICAgICAgICAkJC5pbnRlcm1BZ2dy
ZWdhdGUgPSAwOworLy8gICAgfQogICAgIDsKIAorLy8gR3JhbW1hciBOb3RlOiAgTm8gJ2VudW0n
LCBvciAndHlwZWRlZicuCisKKy8vCisvLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFj
ayBsYW5ndWFnZXMuCisvLworLy8ldHlwZSA8aW50ZXJtPiBidWZmZXJfZGVjbGFyYXRpb24KKy8v
JXR5cGUgPGludGVybS50eXBlPiBidWZmZXJfc3BlY2lmaWVyIGlucHV0X29yX291dHB1dCBidWZm
ZXJfZGVjbGFyYXRpb25fbGlzdAorLy9idWZmZXJfc3BlY2lmaWVyCisvLyAgICA6IGlucHV0X29y
X291dHB1dCBMRUZUX0JSQUNFIGJ1ZmZlcl9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsK
Ky8vICAgIH0KKy8vICAgIDsKKy8vCisvL2lucHV0X29yX291dHB1dAorLy8gICAgOiBJTlBVVCB7
CisvLyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW5wdXQiKSkKKy8vICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworLy8gICAgICAgIFVOUEFDS19PTkxZKCJpbnB1dCIsICQxLmxp
bmUpOworLy8gICAgICAgICQkLnF1YWxpZmllciA9IEV2cUlucHV0OworLy8gICAgfQorLy8gICAg
fCBPVVRQVVQgeworLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxp
bmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgIm91dHB1dCIpKQorLy8g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisvLyAgICAgICAgUEFDS19PTkxZKCJvdXRw
dXQiLCAkMS5saW5lKTsKKy8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFPdXRwdXQ7CisvLyAg
ICB9CisvLyAgICA7CisKKy8vCisvLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBs
YW5ndWFnZXMuCisvLworLy9idWZmZXJfZGVjbGFyYXRpb25fbGlzdAorLy8gICAgOiBidWZmZXJf
ZGVjbGFyYXRpb24geworLy8gICAgfQorLy8gICAgfCBidWZmZXJfZGVjbGFyYXRpb25fbGlzdCBi
dWZmZXJfZGVjbGFyYXRpb24geworLy8gICAgfQorLy8gICAgOworCisvLworLy8gSW5wdXQvb3V0
cHV0IHNlbWFudGljczoKKy8vICAgZmxvYXQgbXVzdCBiZSAxNiBvciAzMiBiaXRzCisvLyAgIGZs
b2F0IGFsaWdubWVudCByZXN0cmljdGlvbnM/CisvLyAgIGNoZWNrIGZvciBvbmx5IG9uZSBpbnB1
dCBhbmQgb25seSBvbmUgb3V0cHV0CisvLyAgIHN1bSBvZiBiaXRmaWVsZHMgaGFzIHRvIGJlIG11
bHRpcGxlIG9mIDMyCisvLworCisvLworLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBh
Y2sgbGFuZ3VhZ2VzLgorLy8KKy8vYnVmZmVyX2RlY2xhcmF0aW9uCisvLyAgICA6IHR5cGVfc3Bl
Y2lmaWVyIElERU5USUZJRVIgQ09MT04gY29uc3RhbnRfZXhwcmVzc2lvbiBTRU1JQ09MT04gewor
Ly8gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0
cmluZywgY29udGV4dCkpCisvLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKy8vICAg
ICAgICAkJC52YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDIuc3RyaW5nLCAkMSk7CisvLyAgICAg
ICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCokJC52YXJpYWJsZSkpIHsKKy8v
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInJlZGVmaW5pdGlvbiIsICQkLnZh
cmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisvLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKKy8vICAgICAgICAgICAgLy8gZG9uJ3QgaGF2ZSB0byBkZWxldGUgJCQudmFyaWFibGUs
IHRoZSBwb29sIHBvcCB3aWxsIHRha2UgY2FyZSBvZiBpdAorLy8gICAgICAgIH0KKy8vICAgIH0K
Ky8vICAgIDsKKwogZnVsbHlfc3BlY2lmaWVkX3R5cGUKICAgICA6IHR5cGVfc3BlY2lmaWVyIHsK
ICAgICAgICAgJCQgPSAkMTsKIAogICAgICAgICBpZiAoJDEuYXJyYXkpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAxLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAi
Zmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICQxLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IHR5
cGVfcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyICB7CiAgICAgICAgIGlmICgkMi5hcnJheSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNs
YXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAibm90IHN1
cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgJDIuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCQxLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAgICAgICAgICgk
Mi50eXBlID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0
cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVy
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCgkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8ICQxLnF1YWxpZmllciA9PSBFdnFW
YXJ5aW5nT3V0KSAmJgogICAgICAgICAgICAgKCQyLnR5cGUgPT0gRWJ0Qm9vbCB8fCAkMi50eXBl
ID09IEVidEludCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90IGJl
IGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdl
dFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQyOwpAQCAtMTQxNiwzNCArMTQ4OCwz
NCBAQCBmdWxseV9zcGVjaWZpZWRfdHlwZQogCiB0eXBlX3F1YWxpZmllcgogICAgIDogQ09OU1Rf
UVVBTCB7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCBAMSk7CisgICAg
ICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAkMS5saW5lKTsKICAgICB9CiAgICAg
fCBBVFRSSUJVVEUgewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRlIiwgQDEpOwotICAg
ICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCisgICAgICAgIFZFUlRFWF9PTkxZKCJh
dHRyaWJ1dGUiLCAkMS5saW5lKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hl
Y2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmli
dXRlIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnNldEJh
c2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRW
b2lkLCBFdnFBdHRyaWJ1dGUsICQxLmxpbmUpOwogICAgIH0KICAgICB8IFZBUllJTkcgewotICAg
ICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCksICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCBAMSk7CisgICAgICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAkMS5saW5lKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCBAMSk7Cisg
ICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICQxLmxpbmUpOwog
ICAgIH0KICAgICB8IElOVkFSSUFOVCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmds
b2JhbEVycm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwg
ImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNo
ZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFy
aWFudCB2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMSk7CisgICAg
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAkMS5s
aW5lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
SW52YXJpYW50VmFyeWluZ0luLCBAMSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sICQxLmxpbmUpOwogICAgIH0KICAgICB8IFVOSUZPUk0g
ewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAoY29udGV4
dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sIEAxKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwgJDEubGluZSk7CiAgICAgfQogICAgIDsKIApA
QCAtMTQ1Myw3ICsxNTI1LDcgQEAgdHlwZV9zcGVjaWZpZXIKIAogICAgICAgICBpZiAoJCQucHJl
Y2lzaW9uID09IEVicFVuZGVmaW5lZCkgewogICAgICAgICAgICAgJCQucHJlY2lzaW9uID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS50eXBlKTsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKEAxLCAkJC5wcmVjaXNpb24sICQx
LnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjaygk
MS5saW5lLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDgzLDExICsxNTU1
LDExIEBAIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMKICAgICB8IHR5cGVfc3BlY2lmaWVyX25vbmFy
cmF5IExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewogICAg
ICAgICAkJCA9ICQxOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KEAyLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQyLmxp
bmUsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNp
emVFcnJvckNoZWNrKEAyLCAkMywgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAg
ICAgICAgIH0KQEAgLTE0OTcsMTA1ICsxNTY5LDExOCBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVj
CiB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgIDogVk9JRF9UWVBFIHsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBxdWFs
LCBAMSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICQxLmxpbmUpOwogICAg
IH0KICAgICB8IEZMT0FUX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNl
dEJhc2ljKEVidEZsb2F0LCBxdWFsLCAkMS5saW5lKTsKICAgICB9CiAgICAgfCBJTlRfVFlQRSB7
CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0SW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEu
bGluZSk7CiAgICAgfQogICAgIHwgQk9PTF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CisgICAg
ICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUpOwogICAgIH0KKy8vICAgIHwg
VU5TSUdORUQgSU5UX1RZUEUgeworLy8gICAgICAgIFBBQ0tfVU5QQUNLX09OTFkoInVuc2lnbmVk
IiwgJDEubGluZSk7CisvLyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OworLy8gICAg
ICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisvLyAgICB9CiAgICAgfCBW
RUMyIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwg
cXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAg
fCBWRUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9h
dCwgcXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9CiAg
ICAgfCBWRUM0IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAk
JC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9
CiAgICAgfCBCVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhF
YnRCb29sLCBxdWFsLCAkMS5saW5lKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDIpOwogICAg
IH0KICAgICB8IEJWRUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNldEJhc2lj
KEVidEJvb2wsIHF1YWwsICQxLmxpbmUpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAg
ICAgfQogICAgIHwgQlZFQzQgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsK
ICAgICB9CiAgICAgfCBJVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNldEJh
c2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsK
ICAgICB9CiAgICAgfCBJVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNldEJh
c2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsK
ICAgICB9CiAgICAgfCBJVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNldEJh
c2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsK
ICAgICB9CiAgICAgfCBNQVRSSVgyIHsKKyAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDIiLCAk
MS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9h
dCwgcXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKICAg
ICB9CiAgICAgfCBNQVRSSVgzIHsKKyAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDMiLCAkMS5s
aW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwg
cXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKICAgICB9
CiAgICAgfCBNQVRSSVg0IHsKKyAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDQiLCAkMS5saW5l
KTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgJDEubGluZSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKICAgICB9CiAg
ICAgfCBTQU1QTEVSMkQgeworICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgJDEu
bGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0U2FtcGxlcjJELCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNh
bXBsZXIyRCwgcXVhbCwgJDEubGluZSk7CiAgICAgfQogICAgIHwgU0FNUExFUkNVQkUgeworICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckN1YmUiLCAkMS5saW5lKTsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3Vi
ZSwgcXVhbCwgQDEpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwg
JDEubGluZSk7CiAgICAgfQogICAgIHwgU0FNUExFUl9FWFRFUk5BTF9PRVMgewogICAgICAgICBp
ZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFs
IikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIs
ICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxp
bmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CisgICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCJzYW1wbGVyRXh0ZXJuYWxPRVMiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1
YWwsIEAxKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFs
LCAkMS5saW5lKTsKICAgICB9CiAgICAgfCBTQU1QTEVSMkRSRUNUIHsKICAgICAgICAgaWYgKCFj
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1w
bGVyMkRSZWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidW5zdXBw
b3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KKyAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJlY3Qi
LCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAk
JC5zZXRCYXNpYyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNldEJh
c2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsICQxLmxpbmUpOwogICAgIH0KICAgICB8IHN0cnVj
dF9zcGVjaWZpZXIgeworICAgICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgJDEubGluZSk7
CiAgICAgICAgICQkID0gJDE7CiAgICAgICAgICQkLnF1YWxpZmllciA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICB9
CkBAIC0xNjA2LDI5ICsxNjkxLDI5IEBAIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAgICAgICAg
IC8vCiAgICAgICAgIFRUeXBlJiBzdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPigk
MS5zeW1ib2wpLT5nZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCBAMSk7CisgICAgICAgICQkLnNl
dEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgJDEubGluZSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSAm
c3RydWN0dXJlOwogICAgIH0KICAgICA7CiAKIHN0cnVjdF9zcGVjaWZpZXIKLSAgICA6IFNUUlVD
VCBpZGVudGlmaWVyIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJh
dGlvbihAMiwgKiQyLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFy
YXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soQDIsICokMi5zdHJpbmcpKQorICAgIDogU1RSVUNUIElERU5USUZJRVIgTEVGVF9C
UkFDRSB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCQyLmxpbmUsICokMi5z
dHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklH
SFRfQlJBQ0UgeworICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxp
bmUsICokMi5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAg
ICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUobmV3IFRTdHJ1Y3R1cmUoJDIuc3RyaW5n
LCAkNSkpOworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ1LCAqJDIuc3Ry
aW5nKTsKICAgICAgICAgVFZhcmlhYmxlKiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoJDIu
c3RyaW5nLCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9s
VGFibGUuaW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KEAyLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5n
LT5jX3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAx
KTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICQxLmxpbmUp
OwogICAgICAgICAkJC51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0
U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICB9Ci0gICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlm
IChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkgY29udGV4
dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAg
ICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29s
VFN0cmluZygiIiksICQ0KSk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVt
cG9yYXJ5LCBAMSk7CisgICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250ZXh0LT5lbnRl
clN0cnVjdERlY2xhcmF0aW9uKCQyLmxpbmUsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVy
KCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBUVHlw
ZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ0LCBUU3RyaW5nKCIiKSk7CisgICAgICAgICQkLnNl
dEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKICAgICAgICAgJCQudXNl
ckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9u
KCk7CiAgICAgfQpAQCAtMTY0MCwxNSArMTcyNSwxNCBAQCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlz
dAogICAgIH0KICAgICB8IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IHN0cnVjdF9kZWNsYXJhdGlv
biB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgJDIt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBURmllbGQqIGZpZWxkID0gKCokMilbaV07Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICQkLT5zaXplKCk7ICsraikgewotICAg
ICAgICAgICAgICAgIGlmICgoKiQkKVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJkdXBsaWNhdGUgZmllbGQgbmFt
ZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgJDItPnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8ICQkLT5zaXplKCk7ICsraikgewor
ICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAoKiQy
KVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoKiQyKVtpXS5saW5lLCAiZHVwbGljYXRlIGZpZWxkIG5hbWUgaW4gc3RydWN0dXJl
OiIsICJzdHJ1Y3QiLCAoKiQyKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKS5jX3N0cigpKTsKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICQkLT5wdXNoX2JhY2soZmllbGQpOworICAgICAg
ICAgICAgJCQtPnB1c2hfYmFjaygoKiQyKVtpXSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpA
QCAtMTY1NywxNCArMTc0MSwxNCBAQCBzdHJ1Y3RfZGVjbGFyYXRpb24KICAgICA6IHR5cGVfc3Bl
Y2lmaWVyIHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgU0VNSUNPTE9OIHsKICAgICAgICAgJCQgPSAk
MjsKIAotICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soQDEsICgqJDIpWzBdLT5u
YW1lKCksICQxKSkgeworICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soJDEubGlu
ZSwgKCokMilbMF0udHlwZS0+Z2V0RmllbGROYW1lKCksICQxKSkgewogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgJCQtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
Ly8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtub3duIGFzcGVjdHMgb2YgdHlwZSwg
bGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgVFR5cGUqIHR5cGUg
PSAoKiQkKVtpXS0+dHlwZSgpOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKiQkKVtpXS50
eXBlOwogICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCQxLnR5cGUpOwogICAgICAgICAg
ICAgdHlwZS0+c2V0Tm9taW5hbFNpemUoJDEuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXRN
YXRyaXgoJDEubWF0cml4KTsKQEAgLTE2NzIsMjMgKzE3NTYsMjYgQEAgc3RydWN0X2RlY2xhcmF0
aW9uCiAKICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAg
ICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhAMSwgJDEpKQorICAgICAgICAgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQxLmxpbmUsICQxKSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCQx
LmFycmF5KQogICAgICAgICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgkMS5hcnJheVNpemUp
OwotICAgICAgICAgICAgaWYgKCQxLnVzZXJEZWYpCisgICAgICAgICAgICBpZiAoJDEudXNlckRl
ZikgewogICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgkMS51c2VyRGVmLT5nZXRTdHJ1
Y3QoKSk7CisgICAgICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoJDEudXNlckRlZi0+Z2V0
VHlwZU5hbWUoKSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhAMSwgKigqJCQpW2ldKSkKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjaygkMS5saW5lLCAqdHlwZSkpIHsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAgICAgOwogCiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOiBzdHJ1Y3RfZGVj
bGFyYXRvciB7Ci0gICAgICAgICQkID0gTmV3UG9vbFRGaWVsZExpc3QoKTsKKyAgICAgICAgJCQg
PSBOZXdQb29sVFR5cGVMaXN0KCk7CiAgICAgICAgICQkLT5wdXNoX2JhY2soJDEpOwogICAgIH0K
ICAgICB8IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgc3RydWN0X2RlY2xhcmF0b3IgewpA
QCAtMTY5NywyNCArMTc4NCwyNiBAQCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOwogCiBz
dHJ1Y3RfZGVjbGFyYXRvcgotICAgIDogaWRlbnRpZmllciB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQorICAgIDogSURFTlRJRklFUiB7
CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDEubGluZSwgKiQxLnN0
cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgVFR5cGUq
IHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgJCQgPSBu
ZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZyk7CisgICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUo
RWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7CisgICAg
ICAgICQkLnR5cGUtPnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKICAgICB9Ci0gICAgfCBpZGVu
dGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewot
ICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAxLCAqJDEuc3RyaW5nKSkK
KyAgICB8IElERU5USUZJRVIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRf
QlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDEubGlu
ZSwgKiQxLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAg
ICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAg
ICAgaW50IHNpemUgPSAwOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVj
ayhAMywgJDMsIHNpemUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CisgICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUo
RWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7CisgICAg
ICAgICQkLnR5cGUtPnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKIAotICAgICAgICAkJCA9IG5l
dyBURmllbGQodHlwZSwgJDEuc3RyaW5nKTsKKyAgICAgICAgaW50IHNpemU7CisgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQyLmxpbmUsICQzLCBzaXplKSkKKyAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgJCQudHlwZS0+c2V0QXJyYXlTaXpl
KHNpemUpOwogICAgIH0KICAgICA7CiAKQEAgLTE3NDYsNyArMTgzNSw3IEBAIGNvbXBvdW5kX3N0
YXRlbWVudAogICAgIHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsg
fSBzdGF0ZW1lbnRfbGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9IFJJR0hUX0JS
QUNFIHsKICAgICAgICAgaWYgKCQzICE9IDApIHsKICAgICAgICAgICAgICQzLT5zZXRPcChFT3BT
ZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMy0+c2V0TGluZShAJCk7CisgICAgICAgICAgICAkMy0+
c2V0RW5kTGluZSgkNS5saW5lKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQzOwogICAgIH0K
QEAgLTE3NzAsNyArMTg1OSw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUKICAg
ICB8IExFRlRfQlJBQ0Ugc3RhdGVtZW50X2xpc3QgUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAo
JDIpIHsKICAgICAgICAgICAgICQyLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAk
Mi0+c2V0TGluZShAJCk7CisgICAgICAgICAgICAkMi0+c2V0RW5kTGluZSgkMy5saW5lKTsKICAg
ICAgICAgfQogICAgICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTE3NzgsMTAgKzE4NjcsMTAgQEAg
Y29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDog
c3RhdGVtZW50IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZSgkMSwgQCQpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdn
cmVnYXRlKCQxLCAwKTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRfbGlzdCBzdGF0ZW1lbnQgewot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwg
QCQpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQx
LCAkMiwgMCk7CiAgICAgfQogICAgIDsKIApAQCAtMTc5Miw5ICsxODgxLDkgQEAgZXhwcmVzc2lv
bl9zdGF0ZW1lbnQKIAogc2VsZWN0aW9uX3N0YXRlbWVudAogICAgIDogSUYgTEVGVF9QQVJFTiBl
eHByZXNzaW9uIFJJR0hUX1BBUkVOIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAMSwgJDMpKQorICAgICAgICBpZiAoY29udGV4
dC0+Ym9vbEVycm9yQ2hlY2soJDEubGluZSwgJDMpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24o
JDMsICQ1LCBAMSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVj
dGlvbigkMywgJDUsICQxLmxpbmUpOwogICAgIH0KICAgICA7CiAKQEAgLTE4MTgsMTQgKzE5MDcs
MTQgQEAgY29uZGl0aW9uCiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+
Z2V0TGluZSgpLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQot
ICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBFUVVBTCBpbml0aWFsaXplciB7
CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIEVRVUFMIGluaXRpYWxpemVy
IHsKICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAy
LCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMi5saW5lLCAkMSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0
LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5zdHJpbmcsICQxLCAkNCwgaW50ZXJtTm9kZSkp
CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCQyLmxpbmUsICokMi5z
dHJpbmcsICQxLCAkNCwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0OwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTE4MzcsMTkgKzE5
MjYsMTkgQEAgY29uZGl0aW9uCiBpdGVyYXRpb25fc3RhdGVtZW50CiAgICAgOiBXSElMRSBMRUZU
X1BBUkVOIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0
aW5nTGV2ZWw7IH0gY29uZGl0aW9uIFJJR0hUX1BBUkVOIHN0YXRlbWVudF9ub19uZXdfc2NvcGUg
ewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAkNCwgMCwgJDYsIEAxKTsK
KyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAw
LCAkNCwgMCwgJDYsICQxLmxpbmUpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7CiAgICAgfQogICAgIHwgRE8geyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gc3Rh
dGVtZW50X3dpdGhfc2NvcGUgV0hJTEUgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVO
IFNFTUlDT0xPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAOCwgJDYp
KQorICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soJDgubGluZSwgJDYpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsIEA0KTsKKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICQ2
LCAwLCAkMywgJDQubGluZSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsK
ICAgICB9CiAgICAgfCBGT1IgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2go
KTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3Jf
cmVzdF9zdGF0ZW1lbnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAg
ICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJt
VHlwZWQqPigkNS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9k
ZTIpLCAkNywgQDEpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29w
KEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMSks
IHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTIpLCAkNywgJDEubGluZSk7
CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgOwpAQCAt
MTg4NiwzOSArMTk3NSwzOSBAQCBmb3JfcmVzdF9zdGF0ZW1lbnQKIGp1bXBfc3RhdGVtZW50CiAg
ICAgOiBDT05USU5VRSBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3Rp
bmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImNvbnRpbnVl
IHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigkMS5saW5lLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBs
b29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUs
IEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcENv
bnRpbnVlLCAkMS5saW5lKTsKICAgICB9CiAgICAgfCBCUkVBSyBTRU1JQ09MT04gewogICAgICAg
ICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgImJyZWFrIHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAi
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiYnJlYWsgc3RhdGVtZW50
IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
cmFuY2goRU9wQnJlYWssIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQnJhbmNoKEVPcEJyZWFrLCAkMS5saW5lKTsKICAgICB9CiAgICAgfCBSRVRVUk4gU0VNSUNP
TE9OIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJl
dHVybiwgQDEpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2go
RU9wUmV0dXJuLCAkMS5saW5lKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlv
blR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAibm9uLXZvaWQgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1
cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJub24tdm9pZCBmdW5j
dGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgUkVUVVJOIGV4cHJlc3Npb24g
U0VNSUNPTE9OIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNo
KEVPcFJldHVybiwgJDIsIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQnJhbmNoKEVPcFJldHVybiwgJDIsICQxLmxpbmUpOwogICAgICAgICBjb250ZXh0LT5mdW5j
dGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVu
Y3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIiwgInJl
dHVybiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgInZvaWQgZnVuY3Rp
b24gY2Fubm90IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0
aW9uVHlwZSkgIT0gJDItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJmdW5jdGlvbiByZXR1cm4gaXMgbm90IG1hdGNoaW5nIHR5cGU6IiwgInJldHVybiIpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIHJldHVybiBpcyBu
b3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBESVNDQVJEIFNFTUlDT0xPTiB7Ci0gICAg
ICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsIEAxKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGwsIEAxKTsKKyAgICAgICAgRlJBR19PTkxZKCJkaXNj
YXJkIiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJy
YW5jaChFT3BLaWxsLCAkMS5saW5lKTsKICAgICB9CiAgICAgOwogCkBAIC0xOTMwLDcgKzIwMTks
NyBAQCB0cmFuc2xhdGlvbl91bml0CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gJCQ7CiAg
ICAgfQogICAgIHwgdHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCBAJCk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQy
LCAwKTsKICAgICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgOwpAQCAt
MTk1Miw3ICsyMDQxLDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAg
aWYgKGJ1aWx0SW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAi
YnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFt
ZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImJ1aWx0
LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5j
X3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTE5NjYsNyArMjA1NSw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVuIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBi
b2R5LgogICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiZnVu
Y3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5IiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBhbHJlYWR5IGhh
cyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERlZmluZWQo
KTsKQEAgLTE5NzYsMTEgKzIwNjUsMTEgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAv
LwogICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAg
ICAgIGlmIChmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAxLCAiZnVuY3Rpb24gY2Fubm90IHRha2UgYW55IHBhcmFtZXRlcihz
KSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocyki
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0
UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFz
aWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1
cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBh
IHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0yMDA4LDcgKzIwOTcsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9u
CiAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0
aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYg
KCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0
TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5s
aW5lLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICBk
ZWxldGUgdmFyaWFibGU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjAxOSwxNSArMjEwOCwxNCBA
QCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgJDEubGluZSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxLmxpbmUpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsIEAxKSwgQDEpOworICAgICAgICAgICAgICAg
IHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5v
ZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwg
JDEubGluZSksICQxLmxpbmUpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQ
YXJhbWV0ZXJzLCBAMSk7CisgICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdh
dGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAkMS5saW5lKTsKICAgICAgICAg
JDEuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5l
c3RpbmdMZXZlbCA9IDA7CiAgICAgfQpAQCAtMjAzNSwxMiArMjEyMywxMiBAQCBmdW5jdGlvbl9k
ZWZpbml0aW9uCiAgICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFs
dWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9u
ZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYg
KGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQg
JiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEu
ZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCQxLmxpbmUsICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEuZnVu
Y3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCBAJCk7Ci0gICAgICAgIGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkJCwgRU9wRnVuY3Rpb24s
IEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgk
MS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRl
LnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwgJDEubGluZSk7CiAgICAgICAg
ICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFt
ZSgpLmNfc3RyKCkpOwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgkMS5m
dW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtMjA0OSwxNyArMjEzNywxNSBAQCBmdW5j
dGlvbl9kZWZpbml0aW9uCiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6
ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0
ZSgpLT5zZXREZWJ1Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7CiAKKyAgICAgICAgaWYgKCQz
ICYmICQzLT5nZXRBc0FnZ3JlZ2F0ZSgpKQorICAgICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRl
KCktPnNldEVuZExpbmUoJDMtPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7CisKICAg
ICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIDsKIAogJSUKIAot
dm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29u
c3QgY2hhciogcmVhc29uKSB7Ci0gICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAi
Iik7Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwotfQotCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFy
c2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19s
ZXguY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4
LmNwcAppbmRleCBhNGEyZTA3Li5hNjBkYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAKQEAgLTM4NCw4ICszODQsOCBA
QCBzdGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyIG1zZ1tdICx5eXNjYW5f
dCB5eXNjYW5uZXIgKTsKIAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlf
Y3A7CiAKLSNkZWZpbmUgWVlfTlVNX1JVTEVTIDE0NwotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVS
IDE0OAorI2RlZmluZSBZWV9OVU1fUlVMRVMgMTU1CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIg
MTU2CiAvKiBUaGlzIHN0cnVjdCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQg
aXRzIHByZXNlbmNlIGlzIG5lY2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0z
OTMsNTcgKzM5Myw1OCBAQCBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92
ZXJpZnk7CiAJZmxleF9pbnQzMl90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9p
bnQxNl90IHl5X2FjY2VwdFs0NDNdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9h
Y2NlcHRbNDU5XSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAxNDgsICAxNDYsICAx
NDUsICAxNDUsICAxMzIsICAxMzgsICAxNDMsICAxMjcsCi0gICAgICAxMjgsICAxMzYsICAxMzUs
ICAxMjQsICAxMzMsICAxMzEsICAxMzcsICAgOTYsICAgOTYsICAxMjUsCi0gICAgICAxMjEsICAx
MzksICAxMjYsICAxNDAsICAxNDQsICAgOTMsICAxMjksICAxMzAsICAxNDIsICAgOTMsCi0gICAg
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsCi0gICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAxMjIsCi0gICAgICAxNDEsICAxMjMsICAxMzQsICAxMTgsICAxMDQsICAxMjMsICAx
MTIsICAxMDcsICAxMDIsICAxMTAsCi0gICAgICAxMDAsICAxMTEsICAxMDEsICAgOTksICAxMDMs
ICAgOTgsICAgOTUsICAgOTYsICAgIDAsICAgIDAsCi0gICAgICAxMzAsICAxMjIsICAxMjksICAx
MTksICAxMTUsICAxMTcsICAxMTYsICAxMjAsICAgOTMsICAxMDgsCi0gICAgICAxMTQsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCi0gICAgICAg
OTMsICAgMTIsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
Ci0KLSAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICAxNSwgICAxNywgICA5Mywg
ICA5MywgICA5MywKLSAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywKLSAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKLSAgICAgICA5MywgICA5MywgICA5MywgICA5
MywgIDEwOSwgIDExMywgICAgMCwgICA5OCwgICAgMCwgICAgMCwKLSAgICAgICA5NywgICA5NCwg
IDEwNSwgIDEwNiwgICA0NSwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKLSAgICAgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywK
LSAgICAgICA5MywgICA5MywgICA5MywgICAxMywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywKLSAgICAgICA5MywgICA5MywgICAyMSwgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywKLSAgICAgICA5MywgICAxOCwgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywKLSAgICAgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKLQotICAgICAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgICAwLCAgIDk5LCAgICAwLCAgIDk4LCAgIDkzLAotICAgICAgIDIz
LCAgIDkzLCAgIDkzLCAgIDkwLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAot
ICAgICAgIDkzLCAgIDE2LCAgIDQ4LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY0LCAgIDkzLCAgIDkz
LCAgIDUzLAotICAgICAgIDY4LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDY1LAotICAgICAgICA0LCAgIDI4LCAgIDI5LCAgIDMwLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAotICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAotICAgICAgIDUxLCAgIDI0LCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDMxLCAgIDMyLAotICAgICAgIDMzLCAg
IDIyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDEwLCAgIDM3LCAgIDM4LCAgIDM5LCAgIDQ2LAotICAg
ICAgICA3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDc3LCAgIDc4LCAgIDc5LCAgIDkzLCAg
IDI1LAotICAgICAgIDY5LCAgIDIwLCAgIDgwLCAgIDgxLCAgIDgyLCAgICAyLCAgIDc0LCAgIDc1
LCAgIDc2LCAgIDkzLAotCi0gICAgICAgMTksICAgNzIsICAgOTMsICAgOTMsICAgMzQsICAgMzUs
ICAgMzYsICAgOTMsICAgOTMsICAgOTMsCi0gICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgNjYsICAgOTMsICAgOTMsICAgOTMsCi0gICAgICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgNDcsICAgOTMsICAgOTIsICAgOTMsICAgOTMsCi0gICAgICAgMTQsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgNjcsICAgNjEsICAgNTYsICAgOTMsICAgOTMsCi0gICAg
ICAgOTMsICAgOTMsICAgOTMsICAgNzMsICAgNTIsICAgOTMsICAgNTksICAgMjcsICAgOTMsICAg
ODksCi0gICAgICAgNjAsICAgNDQsICAgNzEsICAgNTQsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCi0gICAgICAgOTMsICAgOTMsICAgNTUsICAgMjYsICAgOTMsICAgOTMsICAg
OTMsICAgIDMsICAgOTMsICAgOTMsCi0gICAgICAgOTMsICAgOTMsICAgOTMsICAgNDksICAgIDgs
ICAgOTMsICAgIDksICAgOTMsICAgOTMsICAgMTEsCi0gICAgICAgNjIsICAgOTMsICAgOTMsICAg
OTMsICAgNTcsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCi0gICAgICAgOTMsICAgNTAs
ICAgNzAsICAgNTgsICAgIDYsICAgNjMsICAgIDEsICAgOTEsICAgIDUsICAgODMsCi0KLSAgICAg
ICA0MCwgICA4NCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywKLSAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA0MSwgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywKLSAgICAgICA5MywgICA5MywgICA0MywgICA5MywgICA4NywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywKLSAgICAgICA4NSwgICA5MywgICA4NiwgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA0MiwKLSAgICAgICA4OCwgICAgMAorICAgICAgICAw
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMTU2LCAgMTU0LCAgMTUzLCAgMTUzLAor
ICAgICAgMTM4LCAgMTQ0LCAgMTQ5LCAgMTMzLCAgMTM0LCAgMTQyLCAgMTQxLCAgMTMwLCAgMTM5
LCAgMTM3LAorICAgICAgMTQzLCAgMTAyLCAgMTAyLCAgMTMxLCAgMTI3LCAgMTQ1LCAgMTMyLCAg
MTQ2LCAgMTUwLCAgIDk4LAorICAgICAgMTM1LCAgMTM2LCAgMTQ4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAorICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAorICAgICAgIDk4LCAgIDk4LCAgIDk4
LCAgMTI4LCAgMTQ3LCAgMTI5LCAgMTQwLCAgICAzLCAgICA0LCAgICAzLAorICAgICAgMTUyLCAg
MTU1LCAgMTUxLCAgMTI0LCAgMTEwLCAgMTI5LCAgMTE4LCAgMTEzLCAgMTA4LCAgMTE2LAorICAg
ICAgMTA2LCAgMTE3LCAgMTA3LCAgMTA1LCAgICAyLCAgICAxLCAgMTA5LCAgMTA0LCAgMTAwLCAg
MTAxLAorICAgICAgICAwLCAgICAwLCAgMTAyLCAgMTM2LCAgMTI4LCAgMTM1LCAgMTI1LCAgMTIx
LCAgMTIzLCAgMTIyLAorICAgICAgMTI2LCAgIDk4LCAgMTE0LCAgMTIwLCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LAorCisgICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
MTcsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCisgICAgICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjAsICAgMjIsCisgICAgICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCisgICAg
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsCisgICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAxMTUs
ICAxMTksICAgIDUsCisgICAgICAxNTEsICAgIDAsICAgIDEsICAxMDQsICAgIDAsICAgIDAsICAx
MDMsICAgOTksICAxMTEsICAxMTIsCisgICAgICAgNTAsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCisgICAgICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMTgsCisgICAgICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjYsICAgOTgsCisgICAgICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjMsICAgOTgsICAgOTgs
CisKKyAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwKKyAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwKKyAgICAgICA5OCwgICAgMCwgIDEwNSwgICAgMCwgIDEwNCwg
ICA5OCwgICAyOCwgICA5OCwgICA5OCwgICA5NSwKKyAgICAgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICAyMSwgICA1MywgICA5OCwKKyAgICAgICA5OCwgICA5OCwg
ICA2OSwgICA5OCwgICA5OCwgICA1OCwgICA3MywgICA5OCwgICA5OCwgICA5OCwKKyAgICAgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA3MCwgICAgOSwgICAzMywgICAzNCwgICAzNSwK
KyAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwKKyAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1Niwg
ICAyOSwgICA5OCwgICA5OCwKKyAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAzNiwgICAz
NywgICAzOCwgICAyNywgICA5OCwgICA5OCwKKyAgICAgICA5OCwgICAxNSwgICA0MiwgICA0Mywg
ICA0NCwgICA1MSwgICAxMiwgICA5OCwgICA5OCwgICA5OCwKKworICAgICAgIDk4LCAgIDgyLCAg
IDgzLCAgIDg0LCAgIDk4LCAgIDMwLCAgIDc0LCAgIDI1LCAgIDg1LCAgIDg2LAorICAgICAgIDg3
LCAgICA3LCAgIDc5LCAgIDgwLCAgIDgxLCAgIDk4LCAgIDI0LCAgIDc3LCAgIDk4LCAgIDk4LAor
ICAgICAgIDM5LCAgIDQwLCAgIDQxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LAorICAgICAgIDk4LCAgIDk4LCAgIDcxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LAorICAgICAgIDk4LCAgIDUyLCAgIDk4LCAgIDk3LCAgIDk4LCAgIDk4
LCAgIDE5LCAgIDk4LCAgIDk4LCAgIDk4LAorICAgICAgIDk4LCAgIDcyLCAgIDY2LCAgIDYxLCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDc4LAorICAgICAgIDU3LCAgIDk4LCAgIDY0
LCAgIDMyLCAgIDk4LCAgIDk0LCAgIDY1LCAgIDQ5LCAgIDc2LCAgIDU5LAorICAgICAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDYwLCAgIDMxLAorICAg
ICAgIDk4LCAgIDk4LCAgIDk4LCAgICA4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDU0LAorICAgICAgIDEzLCAgIDk4LCAgIDE0LCAgIDk4LCAgIDk4LCAgIDE2LCAgIDY3LCAgIDk4
LCAgIDk4LCAgIDk4LAorCisgICAgICAgNjIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgNTUsICAgNzUsICAgNjMsCisgICAgICAgMTEsICAgNjgsICAgIDYsICAgOTYsICAg
MTAsICAgODgsICAgNDUsICAgODksICAgOTgsICAgOTgsCisgICAgICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCisgICAgICAgNDYsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNDgsICAgOTgsCisgICAg
ICAgOTIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTAsICAgOTgsICAgOTEsICAg
OTgsCisgICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNDcsICAgOTMsICAgIDAK
ICAgICB9IDsKIAogc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAt
NDgwLDE5OCArNDgxLDIxMiBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2
XSA9CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAgICAgeyAg
IDAsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAg
IDIsICAgIDIsICAgIDIsICAgIDIsCi0gICAgICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAgIDIsCi0gICAgICAgIDIsICAgIDMsICAgIDMsICAg
IDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDIsCi0gICAgICAgIDIsICAgIDIs
ICAgIDIsICAgIDIsICAgIDIsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAg
IDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
Ci0gICAgICAgIDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAgICAgICAg
MSwgICAgMSwgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwK
KyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywKKyAgICAgICAgMywgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAg
NCwgICAgMSwgICAgMSwgICAgMSwgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMywgICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwKKyAgICAgICAgNCwgICAgNCwgICAg
NCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwKKyAgICAgICAgNCwg
ICAgNCwgICAgNCwgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXlj
b25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0NDVdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MTZfdCB5eV9iYXNlWzQ2NF0gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgNTg3LCAg
NTg4LCAgNTg4LCAgNTg4LCAgNTYxLCAgIDQzLCAgIDY0LCAgNTg4LAotICAgICAgNTg4LCAgNTYw
LCAgIDYxLCAgNTg4LCAgIDYwLCAgIDU4LCAgNTU5LCAgIDc3LCAgIDg2LCAgNTU3LAotICAgICAg
NTg4LCAgMTA0LCAgNTU3LCAgIDU1LCAgNTg4LCAgICAwLCAgNTg4LCAgNTg4LCAgIDc1LCAgIDI2
LAotICAgICAgIDU3LCAgIDgyLCAgIDgzLCAgIDczLCAgIDkzLCAgNTI4LCAgIDk3LCAgIDk1LCAg
NTI3LCAgIDQ0LAotICAgICAgIDcxLCAgNTIxLCAgMTA0LCAgNTM0LCAgMTEwLCAgMTE2LCAgIDM1
LCAgMTExLCAgNTMwLCAgNTg4LAotICAgICAgMTE0LCAgNTg4LCAgNTg4LCAgNTg4LCAgNTg4LCAg
NTg4LCAgNTg4LCAgNTg4LCAgNTg4LCAgNTg4LAotICAgICAgNTg4LCAgNTg4LCAgNTg4LCAgMTY1
LCAgNTg4LCAgMTcyLCAgMjAyLCAgMjExLCAgMjMzLCAgICAwLAotICAgICAgNTg4LCAgNTg4LCAg
NTg4LCAgNTUxLCAgNTg4LCAgNTg4LCAgNTg4LCAgNTUwLCAgICAwLCAgNTg4LAotICAgICAgNTg4
LCAgNTIzLCAgNTE2LCAgNTE5LCAgNTI3LCAgNTI2LCAgNTEzLCAgNTI4LCAgNTE1LCAgNTIxLAot
ICAgICAgNTA5LCAgNTA2LCAgNTE5LCAgNTA2LCAgNTAzLCAgNTAzLCAgNTA5LCAgNDk3LCAgMTA4
LCAgNTAyLAotCi0gICAgICA1MTIsICA0OTgsICA1MDQsICA1MDcsICA1MDgsICAgIDAsICAxNDUs
ICA1MDcsICAxMTMsICA0OTMsCi0gICAgICA1MDYsICA0OTcsICA0OTksICA0ODksICA1MDMsICA1
MDAsICA1MDIsICA0ODUsICA0OTAsICA0ODcsCi0gICAgICA0NzYsICAxNTcsICA0ODQsICA0ODks
ICA0ODUsICA0ODcsICA0NzYsICA0NzksICAxMTgsICA0ODQsCi0gICAgICA0NzYsICA0ODgsICAg
NzAsICA0ODEsICA1ODgsICA1ODgsICAyNDYsICAyNTMsICAyNzAsICAyMTksCi0gICAgICAyODMs
ICAgIDAsICA1ODgsICA1ODgsICAgIDAsICA0NzMsICA0NzcsICA0ODYsICA0ODMsICA0NjcsCi0g
ICAgICA0NjcsICAxMTksICA0ODIsICA0NzksICA0NzksICA0NzcsICA0NzQsICA0NjYsICA0NzIs
ICA0NTksCi0gICAgICA0NzAsICA0NTYsICA0NzIsICAgIDAsICA0NjksICA0NTcsICA0NjQsICA0
NjEsICA0NjUsICA0NTgsCi0gICAgICA0NDcsICA0NDYsICA0NTksICA0NjIsICA0NTksICA0NTQs
ICA0NDUsICAxODgsICA0NTAsICA0NTMsCi0gICAgICA0NDQsICA0NDEsICA0NDUsICA0NTEsICA0
NDIsICA0MzMsICA0MzYsICA0MzQsICA0NDQsICA0MzAsCi0gICAgICA0MjgsICA0NDEsICA0Mjcs
ICA0MjksICA0MjYsICA0MzcsICA0MzYsICAxMjQsICA0MzEsICA0MjYsCi0KLSAgICAgIDQxNSwg
IDI1OCwgIDQzMywgIDQzNSwgIDQyNCwgIDI5MCwgIDI5NywgIDMwNCwgIDMxMSwgIDQyNSwKLSAg
ICAgICAgMCwgIDQyMywgIDI3NSwgICAgMCwgIDQxNSwgIDQxMywgIDQyMSwgIDQxMCwgIDQyNywg
IDQxNiwKLSAgICAgIDMxNiwgICAgMCwgICAgMCwgIDQxMCwgIDQyMCwgIDQyMCwgICAgMCwgIDQw
NSwgIDMxOSwgICAgMCwKLSAgICAgICAgMCwgIDQwNywgIDMyMiwgIDQwOCwgIDQwMiwgIDQwMSwg
IDQwMiwgIDQwMSwgIDMyNSwgICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDM5
NywgIDM5OCwgIDQwMywgIDM5NCwgIDQwNywgIDQwMiwKLSAgICAgIDQwMSwgIDM5MywgIDM5Nywg
IDM4OSwgIDM5MiwgIDM5NiwgIDQwMSwgIDM4NywgIDM5OSwgIDM5MCwKLSAgICAgICAgMCwgICAg
MCwgIDM5NiwgIDM4NSwgIDM4NSwgIDM5MCwgIDM4OSwgIDM4NiwgICAgMCwgICAgMCwKLSAgICAg
ICAgMCwgICAgMCwgIDM3NiwgIDM4OCwgIDM5MCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAg
MCwKLSAgICAgICAgMCwgIDM3OCwgIDM3OSwgIDM3MywgIDM4MywgICAgMCwgICAgMCwgICAgMCwg
IDM3NCwgICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAg
MCwgICAgMCwgICAgMCwgIDM4MSwKLQotICAgICAgICAwLCAgICAwLCAgMzc5LCAgMzc1LCAgICAw
LCAgICAwLCAgICAwLCAgMzcxLCAgMzY3LCAgMzcyLAotICAgICAgMzYyLCAgMzc1LCAgMzYxLCAg
Mzc0LCAgMzYzLCAgMzcwLCAgICAwLCAgMzY4LCAgMzcwLCAgMzU0LAotICAgICAgMzU2LCAgMzYy
LCAgMzY4LCAgMzYzLCAgMzUxLCAgICAwLCAgMzUzLCAgICAwLCAgMzUyLCAgMzU1LAotICAgICAg
ICAwLCAgMzQ0LCAgMzQzLCAgMzQzLCAgMzU2LCAgICAwLCAgMzU4LCAgICAwLCAgMzU3LCAgMzU2
LAotICAgICAgMzQxLCAgMzU0LCAgMzQxLCAgICAwLCAgICAwLCAgMzQ0LCAgICAwLCAgICAwLCAg
MzM2LCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMzMzLCAgMzQ0LCAgMzM3
LCAgMzQzLCAgMzQwLCAgMzM1LAotICAgICAgMzI3LCAgMzM5LCAgICAwLCAgICAwLCAgMzMyLCAg
MzM5LCAgMzI4LCAgICAwLCAgMzM3LCAgMzM0LAotICAgICAgMzI0LCAgMzI5LCAgMzMyLCAgICAw
LCAgICAwLCAgMzMyLCAgICAwLCAgMzMwLCAgMzI5LCAgICAwLAotICAgICAgICAwLCAgMzI4LCAg
MzE0LCAgMzI2LCAgICAwLCAgMzE3LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzA3LAotICAgICAgMzAz
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMzI4LAot
Ci0gICAgICAxNjYsICAzMjUsICAzMTYsICAyOTksICAzMDgsICAzMTAsICAzMDYsICAzMDgsICAz
MDcsICAzMDYsCi0gICAgICAzMDksICAzMDYsICAyNTYsICAyNTMsICAgIDAsICAyMjgsICAyMzgs
ICAyMjIsICAyMzUsICAyMDMsCi0gICAgICAyMDcsICAyMDQsICAyMTIsICAxOTEsICAgIDAsICAy
MDEsICAxNjUsICAxNjcsICAxNTMsICAxNjEsCi0gICAgICAgIDAsICAxNzAsICAgIDAsICAxNzUs
ICAxNTEsICAxNDEsICAxMDAsICAxMTQsICAgNTksICAgIDAsCi0gICAgICAgIDAsICA1ODgsICAz
NTksICAxMTMKKyAgICAgICAgMCwgICAgMCwgICA2NSwgICA2NiwgICA3NSwgICAgMCwgIDY4MCwg
IDY4MSwgIDY4MSwgIDY4MSwKKyAgICAgIDY1NCwgICA0NSwgIDEzNywgIDY4MSwgIDY4MSwgIDY1
MywgIDEzNCwgIDY4MSwgIDEzMywgIDEzMSwKKyAgICAgIDE0NiwgIDE1OSwgIDE2OCwgIDY1MSwg
IDY4MSwgIDE4NiwgIDY1MSwgICA0NywgIDY4MSwgICAgMCwKKyAgICAgIDY4MSwgIDY4MSwgIDEy
OCwgIDEwMCwgIDExMCwgIDE1MiwgIDE1NiwgIDE0NiwgIDE2NiwgIDYyMiwKKyAgICAgIDE3Mywg
IDEwOSwgIDYyMSwgIDEyNiwgIDE3NywgIDYxNSwgIDE3OCwgIDYyOCwgIDE4NywgIDE4NCwKKyAg
ICAgIDE0MSwgIDE5NywgIDYyNCwgIDY4MSwgIDE1NywgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwg
IDY1NiwKKyAgICAgIDY4MSwgIDY4MSwgICAgMCwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4
MSwgIDY4MSwgIDY4MSwKKyAgICAgIDY4MSwgIDY4MSwgIDY4MSwgIDIzNiwgIDY4MSwgICAgMCwg
IDY4MSwgIDI0MywgIDI3MywgIDI4MiwKKyAgICAgIDMwNCwgICAgMCwgIDMxNCwgIDY4MSwgIDY4
MSwgIDY4MSwgIDY0NCwgIDY4MSwgIDY4MSwgIDY4MSwKKyAgICAgIDY0MywgICAgMCwgIDY4MSwg
IDY4MSwgIDYxNiwgIDYwOSwgIDYxMiwgIDYyMCwgIDYxOSwgIDYwNiwKKworICAgICAgNjIxLCAg
NjA4LCAgNjE0LCAgNjAyLCAgNTk5LCAgNjEyLCAgNTk5LCAgNTk2LCAgNTk2LCAgNjAyLAorICAg
ICAgNTkwLCAgMTg5LCAgNTk1LCAgNjA1LCAgNTkxLCAgNTk3LCAgNjAwLCAgNjAxLCAgICAwLCAg
MjE2LAorICAgICAgNjAwLCAgMTg4LCAgNTg2LCAgNTk5LCAgNTkwLCAgNTkyLCAgNTgyLCAgNTk2
LCAgNTkzLCAgNTk1LAorICAgICAgNTc4LCAgNTgzLCAgNTgwLCAgNTY5LCAgMTgzLCAgNTc3LCAg
NTgyLCAgNTc4LCAgNTgwLCAgNTY5LAorICAgICAgNTcyLCAgMjIwLCAgNTc3LCAgNTY5LCAgNTgx
LCAgMTc2LCAgNTc0LCAgNjgxLCAgNjgxLCAgNjgxLAorICAgICAgICAwLCAgMzMxLCAgICAwLCAg
MzQ0LCAgMzYxLCAgMjkwLCAgMzc0LCAgICAwLCAgNjgxLCAgNjgxLAorICAgICAgICAwLCAgNTY2
LCAgNTcwLCAgNTc5LCAgNTc2LCAgNTYwLCAgNTYwLCAgMjE1LCAgNTc1LCAgNTcyLAorICAgICAg
NTcyLCAgNTcwLCAgNTY3LCAgNTU5LCAgNTY1LCAgNTUyLCAgNTYzLCAgNTQ5LCAgNTY1LCAgICAw
LAorICAgICAgNTYyLCAgNTUwLCAgNTU3LCAgNTU0LCAgNTU4LCAgNTUxLCAgNTQwLCAgNTM5LCAg
NTUyLCAgNTU1LAorICAgICAgNTUyLCAgNTQ3LCAgNTM4LCAgMjYwLCAgNTQzLCAgNTQ2LCAgNTM3
LCAgNTM0LCAgNTM4LCAgNTQ0LAorCisgICAgICA1MzUsICA1MjYsICA1MjksICA1MjcsICA1Mzcs
ICA1MjMsICA1MjEsICA1MzQsICA1MjAsICA1MjIsCisgICAgICA1MTksICA1MzAsICA1MjksICAy
ODMsICA1MjQsICA1MTksICA1MDgsICAyNjQsICA1MjYsICA1MjgsCisgICAgICA1MTcsICAzODEs
ICAzODgsICAzOTUsICA0MDIsICA1MTgsICAgIDAsICA1MTYsICAzMjAsICAgIDAsCisgICAgICA1
MDgsICA1MDYsICA1MTQsICA1MDMsICA1MjAsICA1MDksICAzMzYsICAgIDAsICAgIDAsICA1MDMs
CisgICAgICA1MTMsICA1MTMsICAgIDAsICA0OTgsICAzNDksICAgIDAsICAgIDAsICA1MDAsICAz
NjYsICA1MDEsCisgICAgICA0OTUsICA0OTQsICA0OTUsICA0OTQsICA0MDcsICAgIDAsICAgIDAs
ICAgIDAsICAgIDAsICAgIDAsCisgICAgICA0OTAsICA0OTEsICA0OTYsICA0ODcsICA1MDAsICA0
OTUsICA0OTQsICA0ODYsICA0OTAsICA0ODIsCisgICAgICA0ODUsICA0ODksICA0OTQsICA0ODAs
ICA0OTIsICA0ODMsICAgIDAsICAgIDAsICA0ODksICA0NzgsCisgICAgICA0NzgsICA0ODMsICA0
ODIsICA0NzksICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NjksICA0ODEsCisgICAgICA0ODMs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NzEsICA0NzIsICA0NjYsCisK
KyAgICAgIDQ3NiwgICAgMCwgICAgMCwgICAgMCwgIDQ2NywgICAgMCwgICAgMCwgICAgMCwgICAg
MCwgICAgMCwKKyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3NCwgICAgMCwg
ICAgMCwgIDQ3MiwgIDQ2OCwKKyAgICAgICAgMCwgICAgMCwgICAgMCwgIDQ2NCwgIDQ2MCwgIDQ2
NSwgIDQ1NSwgIDQ2OCwgIDQ1NCwgIDQ2NywKKyAgICAgIDQ1NiwgIDQ2MywgICAgMCwgIDQ2MSwg
IDQ2MywgIDQ0NywgIDQ0OSwgIDQ1NSwgIDQ2MSwgIDQ1NiwKKyAgICAgIDQ0NCwgICAgMCwgIDQ0
NiwgICAgMCwgIDQ0NSwgIDQ0OCwgICAgMCwgIDQzNywgIDQzNiwgIDQzNiwKKyAgICAgIDQ0OSwg
ICAgMCwgIDQ1MSwgICAgMCwgIDQ1MCwgIDQ0OSwgIDQzNCwgIDQ0NywgIDQzNCwgICAgMCwKKyAg
ICAgICAgMCwgIDQzNywgICAgMCwgICAgMCwgIDQyOSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwg
ICAgMCwKKyAgICAgIDQyNiwgIDQzNywgIDQzMCwgIDQzNiwgIDQzMywgIDQyOCwgIDQyMCwgIDQz
MiwgICAgMCwgICAgMCwKKyAgICAgIDQyNSwgIDQzMiwgIDQyMSwgICAgMCwgIDQzMCwgIDQyNywg
IDQxNywgIDQxMSwgIDQyNSwgICAgMCwKKyAgICAgICAgMCwgIDQyNSwgICAgMCwgIDQyMywgIDQy
MiwgICAgMCwgICAgMCwgIDQyMSwgIDQwNywgIDQxOSwKKworICAgICAgICAwLCAgNDEwLCAgNDMx
LCAgNDMwLCAgNDI5LCAgNDAwLCAgMzk2LCAgICAwLCAgICAwLCAgICAwLAorICAgICAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgNDIxLCAgMjUwLCAgNDIxLCAgNDExLCAgMzg0LAorICAg
ICAgMzkyLCAgMzk0LCAgMzkwLCAgMzkyLCAgMzkxLCAgMzkwLCAgMzkzLCAgMzkwLCAgMzkxLCAg
Mzg4LAorICAgICAgICAwLCAgMzMyLCAgMzQzLCAgMzE3LCAgMzI5LCAgMzEzLCAgMzE3LCAgMzA0
LCAgMzIxLCAgMjkxLAorICAgICAgICAwLCAgMzAyLCAgMjgwLCAgMjcxLCAgMjU1LCAgMjYyLCAg
ICAwLCAgMjU2LCAgICAwLCAgMjMyLAorICAgICAgMjA2LCAgMjEyLCAgMTQ4LCAgMTU5LCAgMTEz
LCAgICAwLCAgICAwLCAgNjgxLCAgNDQyLCAgNDQ0LAorICAgICAgNDQ2LCAgNDUwLCAgMTYxCiAg
ICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDQ1XSA9CitzdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ2NF0gPQogICAgIHsgICAwLAotICAgICAg
NDQyLCAgICAxLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LAotICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLAotICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQzLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQzLAotICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAotICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQyLAotICAgICAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAotICAgICAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQ0LAot
ICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQz
LCAgNDQyLAotICAgICAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAotICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAotCi0gICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0g
ICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsCi0gICAgICA0NDIsICA0NDQsICA0NDIsICA0NDIsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCi0KLSAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MywKLSAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKLSAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKLSAgICAgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKLSAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKLSAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKLSAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKLSAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKLSAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKLSAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKLQotICAgICAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAotICAgICAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LAotICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLAotICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLAotICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAotICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAotICAgICAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAotICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAot
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAotICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAotCi0gICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0gICAgICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCi0g
ICAgICA0NDMsICAgIDAsICA0NDIsICA0NDIKKyAgICAgIDQ1OCwgICAgMSwgIDQ1OSwgIDQ1OSwg
IDQ1OCwgICAgNSwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKyAgICAgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKyAgICAgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwKKyAg
ICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKyAgICAgIDQ1OCwgIDQ1OCwgIDQ2MSwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKyAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ2MiwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKyAgICAgIDQ1OCwgIDQ2
MywgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKyAgICAg
IDQ1OCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKKworICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4LCAgNDU4LCAgNDU4LAorICAgICAg
NDYxLCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4
LAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAorCisgICAgICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCisgICAgICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
CisgICAgICA0NjAsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsCisgICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCisgICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCisgICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCisgICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCisgICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCisg
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCisgICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsCisKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKKyAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKKyAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKKyAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKKyAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKKworICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAorICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgICAwLCAgNDU4LCAgNDU4LAorICAgICAg
NDU4LCAgNDU4LCAgNDU4CiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5
eV9ueHRbNjU2XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0Wzc0OV0gPQog
ICAgIHsgICAwLAotICAgICAgICA0LCAgICA1LCAgICA2LCAgICA3LCAgICA4LCAgICA5LCAgIDEw
LCAgIDExLCAgIDEyLCAgIDEzLAotICAgICAgIDE0LCAgIDE1LCAgIDE2LCAgIDE3LCAgIDE4LCAg
IDE5LCAgIDE5LCAgIDE5LCAgIDE5LCAgIDE5LAotICAgICAgIDE5LCAgIDIwLCAgIDIxLCAgIDIy
LCAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI2LCAgIDI2LAotICAgICAgIDI2LCAgIDI2LCAg
IDI2LCAgIDI2LCAgIDI2LCAgIDI2LCAgIDI3LCAgIDI4LCAgIDI5LCAgIDMwLAotICAgICAgIDMx
LCAgIDMyLCAgIDMzLCAgIDM0LCAgIDM1LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI2LCAgIDM5LAot
ICAgICAgIDQwLCAgIDQxLCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDQ1LCAgIDQ2LCAgIDQ3LCAgIDQ4
LCAgIDQ5LAotICAgICAgIDI2LCAgIDI2LCAgIDI2LCAgIDUwLCAgIDUxLCAgIDUyLCAgIDUzLCAg
IDU1LCAgIDU2LCAgIDU3LAotICAgICAgIDYwLCAgIDYyLCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0
LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDc3LAotICAgICAgIDc4LCAgIDgyLCAgIDgzLCAgMTEwLCAg
IDYzLCAgIDYxLCAgMTI5LCAgMTExLCAgIDU4LCAgIDY2LAotICAgICAgMTMwLCAgIDY3LCAgIDY3
LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAgIDY2LCAgIDgwLAotCi0gICAgICAgNjgs
ICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjksICAgNzIsICAgODQsCi0g
ICAgICAxMTIsICAgODUsICAgNzAsICAgODEsICAxNDIsICAgODYsICAgNjksICAyMDMsICA0NDEs
ICAyMDQsCi0gICAgICAgNjksICAgODcsICAgOTQsICAxMTMsICAgOTUsICAgNzMsICAgOTAsICAg
NzQsICAgNzUsICAgNjksCi0gICAgICAgOTEsICAgODgsICAgOTcsICAgOTYsICAgODksICAgOTIs
ICAxMDMsICAgNzAsICAxMzUsICAxMDYsCi0gICAgICAgOTgsICAgOTMsICAgOTksICAxMTUsICAx
MDQsICAxMDAsICAxMDcsICAxNjIsICA0NDAsICAxMTksCi0gICAgICAxMzEsICAxMDEsICA0Mzks
ICAxMDgsICAxMzIsICAxMDUsICAxMjAsICAxMjEsICAxMTYsICAxMjUsCi0gICAgICAxNjMsICAx
MTcsICAxMjYsICAxMzMsICAxNzYsICAxOTgsICAxMjIsICAxMjMsICAyNjQsICAxMjQsCi0gICAg
ICAxMjcsICA0MzgsICAxNzcsICAxOTksICAyMTYsICAyMTcsICAyNjUsICAxMjgsICAxMzYsICAg
NjQsCi0gICAgICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAxMzgsICAxMzgs
ICAxMzgsICAxMzgsCi0gICAgICAxMzgsICAxMzgsICAxMzgsICA0MzcsICAxNzAsICAxMzcsICAx
OTAsICAxNzEsICAxNzIsICA0MDYsCi0KLSAgICAgIDQwNywgIDE3MywgIDEzOSwgIDE3NCwgIDI0
MiwgIDI0MywgIDI0NCwgIDQzNiwgIDEzNywgIDQzNSwKLSAgICAgIDQzNCwgIDE5MSwgIDQzMywg
IDQzMiwgICA2NiwgIDEzOSwgICA2NywgICA2NywgICA2NywgICA2NywKLSAgICAgICA2NywgICA2
NywgICA2OCwgICA2NiwgIDQzMSwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwKLSAgICAg
ICA2OCwgICA2OCwgICA2OSwgIDE0MSwgIDE0MSwgIDE0MSwgIDE0MSwgIDE0MSwgIDE0MSwgIDE0
MSwKLSAgICAgIDQzMCwgICA2OSwgIDE0MCwgIDQyOSwgIDE0MCwgICA2OSwgIDQyOCwgIDE0MSwg
IDE0MSwgIDE0MSwKLSAgICAgIDE0MSwgIDE0MSwgIDE0MSwgIDE0MSwgICA2OSwgIDIwNiwgIDQy
NywgIDIwNiwgIDQyNiwgIDQyNSwKLSAgICAgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywg
IDIwNywgIDIwNywgIDEzOCwgIDEzOCwgIDEzOCwKLSAgICAgIDEzOCwgIDEzOCwgIDEzOCwgIDEz
OCwgIDI2OSwgIDI3MCwgIDI3MSwgIDQyNCwgIDQyMywgIDIwOCwKLSAgICAgIDQyMiwgIDIwOCwg
IDQyMSwgIDEzOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwKLSAgICAgIDIw
OSwgIDI3NywgIDI3OCwgIDI3OSwgIDQyMCwgIDQxOSwgIDEzOSwgIDE0MSwgIDE0MSwgIDE0MSwK
LQotICAgICAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAg
MjA3LCAgMjA3LAotICAgICAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3
LCAgMjA3LCAgMjA5LCAgMjA5LAotICAgICAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAg
MjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LAotICAgICAgMjA5LCAgMjA5LCAgMjg2LCAgMjg3
LCAgMjg4LCAgMjkzLCAgMjk0LCAgMjk1LCAgMjk3LCAgMjk4LAotICAgICAgMjk5LCAgMzA1LCAg
MzA2LCAgMzA3LCAgMzg3LCAgMzg4LCAgMzg5LCAgNDE4LCAgNDE3LCAgNDE2LAotICAgICAgNDE1
LCAgNDE0LCAgNDEzLCAgNDEyLCAgNDExLCAgNDEwLCAgNDA5LCAgMzkwLCAgNDA4LCAgMzkxLAot
ICAgICAgIDc5LCAgIDc5LCAgNDA1LCAgNDA0LCAgNDAzLCAgNDAyLCAgNDAxLCAgNDAwLCAgMzk5
LCAgMzk4LAotICAgICAgMzk3LCAgMzk2LCAgMzk1LCAgMzk0LCAgMzkzLCAgMzkyLCAgMzg2LCAg
Mzg1LCAgMzg0LCAgMzgzLAotICAgICAgMzgyLCAgMzgxLCAgMzgwLCAgMzc5LCAgMzc4LCAgMzc3
LCAgMzc2LCAgMzc1LCAgMzc0LCAgMzczLAotICAgICAgMzcyLCAgMzcxLCAgMzcwLCAgMzY5LCAg
MzY4LCAgMzY3LCAgMzY2LCAgMzY1LCAgMzY0LCAgMzYzLAotCi0gICAgICAzNjIsICAzNjEsICAz
NjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsICAzNTQsICAzNTMsCi0gICAgICAzNTIs
ICAzNTEsICAzNTAsICAzNDksICAzNDgsICAzNDcsICAzNDYsICAzNDUsICAzNDQsICAzNDMsCi0g
ICAgICAzNDIsICAzNDEsICAzNDAsICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQs
ICAzMzMsCi0gICAgICAzMzIsICAzMzEsICAzMzAsICAzMjksICAzMjgsICAzMjcsICAzMjYsICAz
MjUsICAzMjQsICAzMjMsCi0gICAgICAzMjIsICAzMjEsICAzMjAsICAzMTksICAzMTgsICAzMTcs
ICAzMTYsICAzMTUsICAzMTQsICAzMTMsCi0gICAgICAzMTIsICAzMTEsICAzMTAsICAzMDksICAz
MDgsICAzMDQsICAzMDMsICAzMDIsICAzMDEsICAzMDAsCi0gICAgICAyOTYsICAyOTIsICAyOTEs
ICAyOTAsICAyODksICAyODUsICAyODQsICAyODMsICAyODIsICAyODEsCi0gICAgICAyODAsICAy
NzYsICAyNzUsICAyNzQsICAyNzMsICAyNzIsICAyNjgsICAyNjcsICAyNjYsICAyNjMsCi0gICAg
ICAyNjIsICAyNjEsICAyNjAsICAyNTksICAyNTgsICAyNTcsICAyNTYsICAyNTUsICAyNTQsICAy
NTMsCi0gICAgICAyNTIsICAyNTEsICAyNTAsICAyNDksICAyNDgsICAyNDcsICAyNDYsICAyNDUs
ICAyNDEsICAyNDAsCi0KLSAgICAgIDIzOSwgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIzNCwg
IDIzMywgIDIzMiwgIDIzMSwgIDIzMCwKLSAgICAgIDIyOSwgIDIyOCwgIDIyNywgIDIyNiwgIDIy
NSwgIDIyNCwgIDIyMywgIDIyMiwgIDIyMSwgIDIyMCwKLSAgICAgIDIxOSwgIDIxOCwgIDIxNSwg
IDIxNCwgIDIxMywgIDIxMiwgIDIxMSwgIDIxMCwgIDIwNSwgIDIwMiwKLSAgICAgIDIwMSwgIDIw
MCwgIDE5NywgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MywgIDE5MiwgIDE4OSwgIDE4OCwKLSAgICAg
IDE4NywgIDE4NiwgIDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3
OCwKLSAgICAgIDE3NSwgIDE2OSwgIDE2OCwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MSwg
IDE2MCwgIDE1OSwKLSAgICAgIDE1OCwgIDE1NywgIDE1NiwgIDE1NSwgIDE1NCwgIDE1MywgIDE1
MiwgIDE1MSwgIDE1MCwgIDE0OSwKLSAgICAgIDE0OCwgIDE0NywgIDE0NiwgIDE0NSwgIDE0NCwg
IDE0MywgIDEzNCwgIDExOCwgIDExNCwgIDEwOSwKLSAgICAgIDEwMiwgICA3NiwgICA3MSwgICA2
NSwgICA1OSwgICA1NCwgIDQ0MiwgICAgMywgIDQ0MiwgIDQ0MiwKLSAgICAgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKLQotICAgICAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LAotICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLAotICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLAotICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAotICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAotICAgICAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyCisgICAgICAgIDgsICAgIDksICAgMTAsICAgMTEsICAgMTIsICAgMTMs
ICAgMTQsICAgMTUsICAgMTYsICAgMTcsCisgICAgICAgMTgsICAgMTksICAgMjAsICAgMjEsICAg
MjIsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsCisgICAgICAgMjMsICAgMjQsICAgMjUs
ICAgMjYsICAgMjcsICAgMjgsICAgMjksICAgMzAsICAgMzAsICAgMzAsCisgICAgICAgMzAsICAg
MzAsICAgMzAsICAgMzAsICAgMzAsICAgMzAsICAgMzEsICAgMzIsICAgMzMsICAgMzQsCisgICAg
ICAgMzUsICAgMzYsICAgMzcsICAgMzgsICAgMzksICAgNDAsICAgNDEsICAgNDIsICAgMzAsICAg
NDMsCisgICAgICAgNDQsICAgNDUsICAgNDYsICAgNDcsICAgNDgsICAgNDksICAgNTAsICAgNTEs
ICAgNTIsICAgNTMsCisgICAgICAgMzAsICAgMzAsICAgMzAsICAgNTQsICAgNTUsICAgNTYsICAg
NTcsICAgNTksICAgNTksICAgNjUsCisgICAgICAgNjYsICAgOTAsICAgOTEsICAgNjAsICAgNjAs
ICAgIDgsICAgNjEsICAgNjIsICAgIDgsICAgIDgsCisgICAgICAgIDgsICAgIDgsICAgIDgsICAg
IDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsCisgICAgICAgIDgsICAgIDgs
ICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsCisKKyAgICAg
ICAgOCwgICAgOCwgICA2MywgICA2MywgICA2MywgICA2MywgICA2MywgICA2MywgICA2MywgICA2
MywKKyAgICAgICA2MywgICAgOCwgICAgOCwgICAgOCwgICA2MywgICA2MywgICA2MywgICA2Mywg
ICA2MywgICA2MywKKyAgICAgICA2MywgICA2MywgICA2MywgICA2MywgICA2MywgICA2MywgICA2
MywgICA2MywgICA2MywgICA2MywKKyAgICAgICA2MywgICA2MywgICA2MywgICA2MywgICA2Mywg
ICA2MywgICA2MywgICA2MywgICAgOCwgICAgOCwKKyAgICAgICAgOCwgICAgOCwgICA2NywgICA3
MCwgICA3MiwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwKKyAgICAgICA3NCwgICA3NCwg
ICA5MywgIDExOSwgICA3NSwgICA5NSwgICA5NiwgICA3MywgICA3MSwgICA3NiwKKyAgICAgIDEy
MCwgICA2OCwgICA5NywgIDE1OCwgICA5OCwgIDEyMywgICA5NCwgIDEyMSwgICA5OSwgIDEyNCwK
KyAgICAgICA3NywgICA3OCwgIDQ1NywgICA3OSwgICA3OSwgICA3OSwgICA3OSwgICA3OSwgICA3
OSwgICA4MCwKKyAgICAgICA3OCwgIDE0OCwgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywgICA4MywgICA4MSwKKyAgICAgICA4NSwgIDEwMCwgIDE0MiwgIDQ1NiwgICA4MiwgIDEw
NywgIDE0MywgIDEwOCwgICA4MSwgIDEwMywKKworICAgICAgNDU1LCAgMTAxLCAgIDgxLCAgMTA0
LCAgMTAyLCAgMTEwLCAgMTA5LCAgIDg2LCAgMTA1LCAgIDg3LAorICAgICAgIDg4LCAgIDgxLCAg
MTE2LCAgMTExLCAgMTA2LCAgMTEyLCAgMTI1LCAgMTI4LCAgMTEzLCAgIDgyLAorICAgICAgMTE3
LCAgMTQ5LCAgMjA2LCAgMjE5LCAgMTE0LCAgMjIwLCAgMTMyLCAgMTM4LCAgMTc4LCAgMTI2LAor
ICAgICAgMTM5LCAgMTE4LCAgMTI5LCAgMTMzLCAgMTM0LCAgMTMwLCAgMTQ0LCAgMjA3LCAgMTQw
LCAgMTkyLAorICAgICAgMTQ1LCAgMTc5LCAgNDU0LCAgMTM1LCAgMTM2LCAgMTQxLCAgMTM3LCAg
MTkzLCAgNDUzLCAgMTQ2LAorICAgICAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0
LCAgIDc0LCAgMTU0LCAgMTU0LCAgMTU0LAorICAgICAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAg
NDUyLCAgMTg2LCAgMTUyLCAgMjE0LCAgMTg3LCAgMTg4LAorICAgICAgMjMyLCAgMjMzLCAgMTg5
LCAgMTU1LCAgMTkwLCAgMjE1LCAgMjU4LCAgMjU5LCAgMjYwLCAgMTUyLAorICAgICAgMjg1LCAg
Mjg2LCAgMjg3LCAgNDIyLCAgNDIzLCAgIDc4LCAgMTU1LCAgIDc5LCAgIDc5LCAgIDc5LAorICAg
ICAgIDc5LCAgIDc5LCAgIDc5LCAgIDgwLCAgIDc4LCAgNDUxLCAgIDgwLCAgIDgwLCAgIDgwLCAg
IDgwLAorCisgICAgICAgODAsICAgODAsICAgODAsICAgODEsICAxNTcsICAxNTcsICAxNTcsICAx
NTcsICAxNTcsICAxNTcsCisgICAgICAxNTcsICA0NTAsICAgODEsICAxNTYsICA0NDksICAxNTYs
ICAgODEsICA0NDgsICAxNTcsICAxNTcsCisgICAgICAxNTcsICAxNTcsICAxNTcsICAxNTcsICAx
NTcsICAgODEsICAgNzgsICAyODAsICAgODMsICAgODMsCisgICAgICAgODMsICAgODMsICAgODMs
ICAgODMsICAgODMsICAyODEsICAyOTMsICAyOTQsICAyOTUsICA0NDcsCisgICAgICAyMjIsICA0
NDYsICAyMjIsICA0NDUsICAgODEsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsCisgICAg
ICAyMjMsICAyMjMsICAzMDIsICAzMDMsICAzMDQsICA0NDQsICA0NDMsICAgODEsICAxNTQsICAx
NTQsCisgICAgICAxNTQsICAxNTQsICAxNTQsICAxNTQsICAxNTQsICAzMDksICAzMTAsICAzMTEs
ICA0NDIsICA0NDEsCisgICAgICAyMjQsICA0NDAsICAyMjQsICA0MzksICAxNTUsICAyMjUsICAy
MjUsICAyMjUsICAyMjUsICAyMjUsCisgICAgICAyMjUsICAyMjUsICAzMTMsICAzMTQsICAzMTUs
ICA0MzgsICA0MzcsICAxNTUsICAxNTcsICAxNTcsCisgICAgICAxNTcsICAxNTcsICAxNTcsICAx
NTcsICAxNTcsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsCisKKyAgICAgIDIyMywgIDIy
MywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyNSwKKyAgICAg
IDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIy
NSwKKyAgICAgIDIyNSwgIDIyNSwgIDIyNSwgIDMyMSwgIDMyMiwgIDMyMywgIDQwMywgIDQwNCwg
IDQwNSwgIDQzNiwKKyAgICAgIDQzNSwgIDQzNCwgIDQzMywgIDQzMiwgIDQzMSwgIDQzMCwgIDQy
OSwgIDQyOCwgIDQyNywgIDQwNiwKKyAgICAgIDQyNiwgIDQwNywgICA1OCwgICA1OCwgICA1OCwg
ICA1OCwgICA5MiwgICA5MiwgIDE1MSwgIDE1MSwKKyAgICAgIDE1MywgIDQyNSwgIDE1MywgIDE1
MywgIDQyNCwgIDQyMSwgIDQyMCwgIDQxOSwgIDQxOCwgIDQxNywKKyAgICAgIDQxNiwgIDQxNSwg
IDQxNCwgIDQxMywgIDQxMiwgIDQxMSwgIDQxMCwgIDQwOSwgIDQwOCwgIDQwMiwKKyAgICAgIDQw
MSwgIDQwMCwgIDM5OSwgIDM5OCwgIDM5NywgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwK
KyAgICAgIDM5MSwgIDM5MCwgIDM4OSwgIDM4OCwgIDM4NywgIDM4NiwgIDM4NSwgIDM4NCwgIDM4
MywgIDM4MiwKKyAgICAgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3NiwgIDM3NSwg
IDM3NCwgIDM3MywgIDM3MiwKKworICAgICAgMzcxLCAgMzcwLCAgMzY5LCAgMzY4LCAgMzY3LCAg
MzY2LCAgMzY1LCAgMzY0LCAgMzYzLCAgMzYyLAorICAgICAgMzYxLCAgMzYwLCAgMzU5LCAgMzU4
LCAgMzU3LCAgMzU2LCAgMzU1LCAgMzU0LCAgMzUzLCAgMzUyLAorICAgICAgMzUxLCAgMzUwLCAg
MzQ5LCAgMzQ4LCAgMzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLCAgMzQyLAorICAgICAgMzQx
LCAgMzQwLCAgMzM5LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMzLCAgMzMyLAor
ICAgICAgMzMxLCAgMzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0LCAgMzIw
LCAgMzE5LAorICAgICAgMzE4LCAgMzE3LCAgMzE2LCAgMzEyLCAgMzA4LCAgMzA3LCAgMzA2LCAg
MzA1LCAgMzAxLCAgMzAwLAorICAgICAgMjk5LCAgMjk4LCAgMjk3LCAgMjk2LCAgMjkyLCAgMjkx
LCAgMjkwLCAgMjg5LCAgMjg4LCAgMjg0LAorICAgICAgMjgzLCAgMjgyLCAgMjc5LCAgMjc4LCAg
Mjc3LCAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcyLAorICAgICAgMjcxLCAgMjcwLCAgMjY5
LCAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAgMjYzLCAgMjYyLAorICAgICAgMjYxLCAg
MjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLCAgMjUyLCAgMjUxLCAgMjUwLCAgMjQ5LAorCisg
ICAgICAyNDgsICAyNDcsICAyNDYsICAyNDUsICAyNDQsICAyNDMsICAyNDIsICAyNDEsICAyNDAs
ICAyMzksCisgICAgICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAyMzEsICAyMzAsICAy
MjksICAyMjgsICAyMjcsCisgICAgICAyMjYsICAyMjEsICAyMTgsICAyMTcsICAyMTYsICAyMTMs
ICAyMTIsICAyMTEsICAyMTAsICAyMDksCisgICAgICAyMDgsICAyMDUsICAyMDQsICAyMDMsICAy
MDIsICAyMDEsICAyMDAsICAxOTksICAxOTgsICAxOTcsCisgICAgICAxOTYsICAxOTUsICAxOTQs
ICAxOTEsICAxODUsICAxODQsICAxODMsICAxODIsICAxODEsICAxODAsCisgICAgICAxNzcsICAx
NzYsICAxNzUsICAxNzQsICAxNzMsICAxNzIsICAxNzEsICAxNzAsICAxNjksICAxNjgsCisgICAg
ICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjMsICAxNjIsICAxNjEsICAxNjAsICAxNTksICAx
NTAsCisgICAgICAxNDcsICAxMzEsICAxMjcsICAxMjIsICAxMTUsICAgODksICAgODQsICAgNjks
ICAgNjQsICA0NTgsCisgICAgICAgIDcsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsCisgICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCisKKyAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKyAgICAgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKyAgICAg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwKKyAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwKKyAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OAogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzY1
Nl0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s3NDldID0KICAgICB7ICAg
MCwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwKQEAgLTY3OSw4NSArNjk0LDk1IEBAIHN0YXRpYyB5eWNvbnN0
IGZsZXhfaW50MTZfdCB5eV9jaGtbNjU2XSA9CiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCi0g
ICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgs
ICAgIDksCi0gICAgICAgMTMsICAgMTUsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAg
MTYsICAgMTYsICAgMjQsCi0gICAgICAgMjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMs
ICAgNDcsICAgNDAsICAgIDksICAgMTgsCi0gICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAg
MTgsICAgMTgsICAgMTgsICAgMTgsICAgMTksICAgMjksCi0KLSAgICAgICAxOSwgICAxOSwgICAx
OSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOCwgICAyMiwgICAzMSwKLSAgICAgICA0MSwg
ICAzMSwgICAxOCwgICAyOSwgIDQ0NCwgICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKLSAg
ICAgICAxOCwgICAzMiwgICAzNCwgICA0MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwg
ICAxOSwKLSAgICAgICAzMywgICAzMiwgICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAx
OCwgICA1MSwgICAzOCwKLSAgICAgICAzNSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwg
ICAzOCwgICA5OSwgIDQzOCwgICA0NSwKLSAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0
OCwgICAzNywgICA0NSwgICA0NSwgICA0MywgICA0NiwKLSAgICAgICA5OSwgICA0MywgICA0Niwg
ICA0OCwgIDEwOSwgIDEyOSwgICA0NSwgICA0NSwgIDE5OCwgICA0NSwKLSAgICAgICA0NiwgIDQz
NiwgIDEwOSwgIDEyOSwgIDE1MiwgIDE1MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKLSAgICAg
ICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2
NiwKLSAgICAgICA2NiwgICA2NiwgICA2NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywg
IDEwNywgIDQwMSwKLQotICAgICAgNDAxLCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAg
MTc4LCAgNDM0LCAgIDY0LCAgNDMyLAotICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3
LCAgIDY2LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3LAotICAgICAgIDY3LCAgIDY3LCAgIDY3LCAg
IDY4LCAgNDI3LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LAotICAgICAgIDY4LCAgIDY4
LCAgIDY3LCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAotICAgICAg
NDI2LCAgIDY4LCAgIDY5LCAgNDI0LCAgIDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5
LAotICAgICAgIDY5LCAgIDY5LCAgIDY5LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAg
NDIxLCAgNDIwLAotICAgICAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3
LCAgMTM4LCAgMTM4LCAgMTM4LAotICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAg
MjAyLCAgMjAyLCAgNDE5LCAgNDE4LCAgMTM5LAotICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4
LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LAotICAgICAgMTM5LCAgMjEzLCAg
MjEzLCAgMjEzLCAgNDE0LCAgNDEzLCAgMTM4LCAgMTQxLCAgMTQxLCAgMTQxLAotCi0gICAgICAx
NDEsICAxNDEsICAxNDEsICAxNDEsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYs
Ci0gICAgICAyMDYsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAy
MDgsICAyMDgsCi0gICAgICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDks
ICAyMDksICAyMDksICAyMDksCi0gICAgICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAy
MjksICAyMjksICAyMjksICAyMzMsICAyMzMsCi0gICAgICAyMzMsICAyMzksICAyMzksICAyMzks
ICAzNzIsICAzNzIsICAzNzIsICA0MTIsICA0MTEsICA0MTAsCi0gICAgICA0MDksICA0MDgsICA0
MDcsICA0MDYsICA0MDUsICA0MDQsICA0MDMsICAzNzIsICA0MDIsICAzNzIsCi0gICAgICA0NDMs
ICA0NDMsICA0MDAsICAzOTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCi0g
ICAgICAzODMsICAzODIsICAzNzksICAzNzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjks
ICAzNjcsCi0gICAgICAzNjYsICAzNjUsICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAz
NTcsICAzNTYsICAzNTUsCi0gICAgICAzNDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAs
ICAzMzksICAzMzcsICAzMzUsICAzMzQsCi0KLSAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwg
IDMyNywgIDMyNSwgIDMyNCwgIDMyMywgIDMyMiwgIDMyMSwKLSAgICAgIDMyMCwgIDMxOSwgIDMx
OCwgIDMxNiwgIDMxNSwgIDMxNCwgIDMxMywgIDMxMiwgIDMxMSwgIDMxMCwKLSAgICAgIDMwOSwg
IDMwOCwgIDMwNCwgIDMwMywgIDMwMCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKLSAg
ICAgIDI3NSwgIDI3NCwgIDI3MywgIDI2OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2Mywg
IDI2MCwKLSAgICAgIDI1OSwgIDI1OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1
MiwgIDI1MSwgIDI1MCwKLSAgICAgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwg
IDIzNywgIDIzNiwgIDIzNSwgIDIzNCwKLSAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIy
NCwgIDIyMCwgIDIxOSwgIDIxOCwgIDIxNywgIDIxNiwKLSAgICAgIDIxNSwgIDIxMiwgIDIxMCwg
IDIwNSwgIDIwNCwgIDIwMywgIDIwMSwgIDIwMCwgIDE5OSwgIDE5NywKLSAgICAgIDE5NiwgIDE5
NSwgIDE5NCwgIDE5MywgIDE5MiwgIDE5MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKLSAgICAg
IDE4NiwgIDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3
NiwKLQotICAgICAgMTc1LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4
LCAgMTY3LCAgMTY2LAotICAgICAgMTY1LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAg
MTU4LCAgMTU3LCAgMTU2LCAgMTU1LAotICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5
LCAgMTQ4LCAgMTQ3LCAgMTQ2LCAgMTM0LCAgMTMyLAotICAgICAgMTMxLCAgMTMwLCAgMTI4LCAg
MTI3LCAgMTI2LCAgMTI1LCAgMTI0LCAgMTIzLCAgMTIxLCAgMTIwLAotICAgICAgMTE5LCAgMTE4
LCAgMTE3LCAgMTE2LCAgMTE1LCAgMTE0LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAotICAgICAg
MTA4LCAgMTA1LCAgMTA0LCAgMTAzLCAgMTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2
LAotICAgICAgIDk1LCAgIDk0LCAgIDkzLCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAg
IDg3LCAgIDg2LAotICAgICAgIDg1LCAgIDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5
LCAgIDQ0LCAgIDQyLCAgIDM5LAotICAgICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAg
ICA3LCAgICAzLCAgNDQyLCAgNDQyLCAgNDQyLAotICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAotCi0gICAgICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCi0gICAgICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
Ci0gICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsCi0gICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsCi0gICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCi0gICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MywgICAgNCwgICAxMiwKKyAgICAgICAxMiwgICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwKKyAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKKyAgICAgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKKworICAgICAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAorICAg
ICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LAorICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LAorICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LAorICAgICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5
LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLAorICAgICAgIDIwLCAgIDIwLCAgIDMzLCAg
IDQyLCAgIDIxLCAgIDM0LCAgIDM0LCAgIDE5LCAgIDE3LCAgIDIxLAorICAgICAgIDQyLCAgIDEz
LCAgIDM1LCAgNDYzLCAgIDM1LCAgIDQ0LCAgIDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAorICAgICAg
IDIxLCAgIDIyLCAgNDU1LCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIy
LAorICAgICAgIDIzLCAgIDU1LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAg
IDIzLCAgIDIyLAorICAgICAgIDI2LCAgIDM2LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUx
LCAgIDM4LCAgIDIzLCAgIDM3LAorCisgICAgICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYs
ICAgMzksICAgMzgsICAgMjYsICAgMzcsICAgMjYsCisgICAgICAgMjYsICAgMjMsICAgNDEsICAg
MzksICAgMzcsICAgMzksICAgNDUsICAgNDcsICAgMzksICAgMjIsCisgICAgICAgNDEsICAgNTUs
ICAxMzUsICAxNDYsICAgMzksICAxNDYsICAgNDksICAgNTAsICAxMTIsICAgNDUsCisgICAgICAg
NTAsICAgNDEsICAgNDcsICAgNDksICAgNDksICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIs
CisgICAgICAgNTIsICAxMTIsICA0NTIsICAgNDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0
NTEsICAgNTIsCisgICAgICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQs
ICAgNzgsICAgNzgsICAgNzgsCisgICAgICAgNzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAx
MjAsICAgNzQsICAxNDIsICAxMjAsICAxMjAsCisgICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgs
ICAxMjAsICAxNDIsICAxOTQsICAxOTQsICAxOTQsICAgNzQsCisgICAgICAyMTgsICAyMTgsICAy
MTgsICA0MTcsICA0MTcsICAgNzksICAgNzgsICAgNzksICAgNzksICAgNzksCisgICAgICAgNzks
ICAgNzksICAgNzksICAgNzksICAgODAsICA0NDgsICAgODAsICAgODAsICAgODAsICAgODAsCisK
KyAgICAgICA4MCwgICA4MCwgICA4MCwgICA3OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1
NiwgIDE1NiwKKyAgICAgIDE1NiwgIDQ0NiwgICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwg
IDQ0NCwgICA4MSwgICA4MSwKKyAgICAgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4
MCwgICA4MywgIDIxNCwgICA4MywgICA4MywKKyAgICAgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywgIDIxNCwgIDIyOSwgIDIyOSwgIDIyOSwgIDQ0MywKKyAgICAgIDE1MiwgIDQ0MiwgIDE1
MiwgIDQ0MCwgICA4MywgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwKKyAgICAgIDE1Miwg
IDE1MiwgIDIzNywgIDIzNywgIDIzNywgIDQzOSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKKyAg
ICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywg
IDQzNiwKKyAgICAgIDE1NSwgIDQzNSwgIDE1NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1
NSwgIDE1NSwgIDE1NSwKKyAgICAgIDE1NSwgIDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywg
IDQzMiwgIDE1NCwgIDE1NywgIDE1NywKKyAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1
NywgIDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwKKworICAgICAgMjIyLCAgMjIyLCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjI0LAorICAgICAgMjI0LCAg
MjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAorICAg
ICAgMjI1LCAgMjI1LCAgMjI1LCAgMjU1LCAgMjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAg
NDMwLAorICAgICAgNDI5LCAgNDI4LCAgNDI3LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIy
LCAgNDIxLCAgMzg4LAorICAgICAgNDIwLCAgMzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAg
NDYwLCAgNDYwLCAgNDYxLCAgNDYxLAorICAgICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4
LCAgNDE2LCAgNDA3LCAgNDA2LCAgNDA1LCAgNDA0LAorICAgICAgNDAzLCAgNDAyLCAgNDAwLCAg
Mzk5LCAgMzk4LCAgMzk1LCAgMzk0LCAgMzkyLCAgMzg5LCAgMzg3LAorICAgICAgMzg2LCAgMzg1
LCAgMzgzLCAgMzgyLCAgMzgxLCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LAorICAgICAg
MzczLCAgMzcyLCAgMzcxLCAgMzY1LCAgMzYyLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1
LAorICAgICAgMzUzLCAgMzUxLCAgMzUwLCAgMzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAg
MzQxLCAgMzQwLAorCisgICAgICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAz
MzIsICAzMzEsICAzMzAsICAzMjksCisgICAgICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQs
ICAzMjAsICAzMTksICAzMTYsICAzMDUsICAzMDEsCisgICAgICAzMDAsICAyOTksICAyOTgsICAy
OTEsICAyOTAsICAyODksICAyODQsICAyODMsICAyODIsICAyODEsCisgICAgICAyODAsICAyNzks
ICAyNzYsICAyNzUsICAyNzQsICAyNzMsICAyNzIsICAyNzEsICAyNzAsICAyNjksCisgICAgICAy
NjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQsICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMs
CisgICAgICAyNTIsICAyNTEsICAyNTAsICAyNDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAy
MzYsICAyMzUsCisgICAgICAyMzQsICAyMzMsICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEs
ICAyMjAsICAyMTksICAyMTcsCisgICAgICAyMTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAy
MTAsICAyMDksICAyMDgsICAyMDcsICAyMDYsCisgICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIs
ICAyMDEsICAyMDAsICAxOTksICAxOTgsICAxOTcsICAxOTYsCisgICAgICAxOTUsICAxOTMsICAx
OTIsICAxOTEsICAxOTAsICAxODksICAxODgsICAxODcsICAxODYsICAxODUsCisKKyAgICAgIDE4
NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE3OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwK
KyAgICAgIDE3MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2
NCwgIDE2MywKKyAgICAgIDE2MiwgIDE0NywgIDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwg
IDEzOSwgIDEzOCwgIDEzNywKKyAgICAgIDEzNiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEz
MCwgIDEyOSwgIDEyOCwgIDEyNywgIDEyNiwKKyAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwg
IDExOCwgIDExNywgIDExNiwgIDExNSwgIDExNCwgIDExMywKKyAgICAgIDExMSwgIDExMCwgIDEw
OSwgIDEwOCwgIDEwNywgIDEwNiwgIDEwNSwgIDEwNCwgIDEwMywgIDEwMiwKKyAgICAgIDEwMSwg
IDEwMCwgICA5OSwgICA5OCwgICA5NywgICA5NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKKyAg
ICAgICA1MywgICA0OCwgICA0NiwgICA0MywgICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwg
ICAgNywKKyAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwKKyAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKKworICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAorICAgICAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAorICAgICAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAorICAg
ICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LAorICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
CiAgICAgfSA7CiAKIC8qIFRhYmxlIG9mIGJvb2xlYW5zLCB0cnVlIGlmIHJ1bGUgY291bGQgbWF0
Y2ggZW9sLiAqLwotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNo
X2VvbFsxNDhdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9ydWxlX2Nhbl9tYXRj
aF9lb2xbMTU2XSA9CiAgICAgeyAgIDAsCi0wLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKzAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAog
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsICAg
ICB9OworICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAs
ICAgICB9OwogCiAvKiBUaGUgaW50ZW50IGJlaGluZCB0aGlzIGRlZmluaXRpb24gaXMgdGhhdCBp
dCdsbCBjYXRjaAogICogYW55IHVzZXMgb2YgUkVKRUNUIHdoaWNoIGZsZXggbWlzc2VkLgpAQCAt
NzkyLDEwICs4MTcsNyBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xh
bmdfbGV4LmNwcCkuCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxMDIpCiAjZW5kaWYKIAot
I2RlZmluZSBZWV9VU0VSX0FDVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB5eWxsb2MtPmZpcnN0X2ZpbGUgPSB5eWxsb2MtPmxhc3RfZmlsZSA9IHl5Y29sdW1uOyBc
Ci0gICAgeXlsbG9jLT5maXJzdF9saW5lID0geXlsbG9jLT5sYXN0X2xpbmUgPSB5eWxpbmVubzsK
LQorI2RlZmluZSBZWV9VU0VSX0FDVElPTiB5eWx2YWwtPmxleC5saW5lID0geXlsaW5lbm87CiAj
ZGVmaW5lIFlZX0lOUFVUKGJ1ZiwgcmVzdWx0LCBtYXhfc2l6ZSkgXAogICAgIHJlc3VsdCA9IHN0
cmluZ19pbnB1dChidWYsIG1heF9zaXplLCB5eXNjYW5uZXIpOwogCkBAIC04MDQsNiArODI2LDgg
QEAgc3RhdGljIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50
IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBJTklUSUFMIDAK
KyNkZWZpbmUgQ09NTUVOVCAxCisjZGVmaW5lIEZJRUxEUyAyCiAKICNkZWZpbmUgWVlfRVhUUkFf
VFlQRSBUUGFyc2VDb250ZXh0KgogCkBAIC04NDEsOCArODY1LDYgQEAgc3RydWN0IHl5Z3V0c190
CiAKICAgICBZWVNUWVBFICogeXlsdmFsX3I7CiAKLSAgICBZWUxUWVBFICogeXlsbG9jX3I7Ci0K
ICAgICB9OyAvKiBlbmQgc3RydWN0IHl5Z3V0c190ICovCiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9n
bG9iYWxzICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKQEAgLTg1MSw4ICs4NzMsNiBAQCBzdGF0aWMg
aW50IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAgICAgICogZnJvbSBi
aXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAxLiovCiAgICAgIyAgICBkZWZpbmUgeXlsdmFsIHl5Zy0+
eXlsdmFsX3IKICAgICAKLSAgICAjICAgIGRlZmluZSB5eWxsb2MgeXlnLT55eWxsb2NfcgotICAg
IAogaW50IHl5bGV4X2luaXQgKHl5c2Nhbl90KiBzY2FubmVyKTsKIAogaW50IHl5bGV4X2luaXRf
ZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNlcl9kZWZpbmVkLHl5c2Nhbl90KiBzY2FubmVyKTsKQEAg
LTg5MCwxMCArOTEwLDYgQEAgWVlTVFlQRSAqIHl5Z2V0X2x2YWwgKHl5c2Nhbl90IHl5c2Nhbm5l
ciApOwogCiB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0gLHl5c2Nhbl90
IHl5c2Nhbm5lciApOwogCi0gICAgICAgWVlMVFlQRSAqeXlnZXRfbGxvYyAoeXlzY2FuX3QgeXlz
Y2FubmVyICk7Ci0gICAgCi0gICAgICAgIHZvaWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAqIHl5bGxv
Y19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7Ci0gICAgCiAvKiBNYWNyb3MgYWZ0ZXIgdGhp
cyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRkZW4gYnkgdXNlciBkZWZpbml0aW9ucyBpbgogICog
c2VjdGlvbiAxLgogICovCkBAIC05MjQsNiArOTQwLDEyIEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5
c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5kaWYKIAorICAgIHN0YXRpYyB2b2lkIHl5X3B1c2hf
c3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nhbl90IHl5c2Nhbm5lcik7CisgICAgCisgICAgc3Rh
dGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAgICAKKyAgICBz
dGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCiAvKiBB
bW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAgd2l0aCBlYWNoIHJlYWQuICovCiAjaWZuZGVmIFlZ
X1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlfUkVBRF9CVUZfU0laRSA4MTkyCkBAIC0xMDAwLDEw
ICsxMDIyLDEwIEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogI2Rl
ZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBleHRlcm4gaW50IHl5bGV4IFwKLSAgICAgICAgICAg
ICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtLFlZTFRZUEUgKiB5eWxsb2NfcGFyYW0gLHl5c2Nh
bl90IHl5c2Nhbm5lcik7CisgICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAs
eXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBZWV9ERUNMIGludCB5eWxleCBcCi0gICAg
ICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSwgWVlMVFlQRSAqIHl5bGxvY19wYXJh
bSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFs
X3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQogI2VuZGlmIC8qICFZWV9ERUNMICovCiAKIC8q
IENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJ1bGUsIGFmdGVyIHl5dGV4
dCBhbmQgeXlsZW5nCkBAIC0xMDMwLDkgKzEwNTIsMTEgQEAgWVlfREVDTAogCXJlZ2lzdGVyIGlu
dCB5eV9hY3Q7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCop
eXlzY2FubmVyOwogCi0gICAgeXlsdmFsID0geXlsdmFsX3BhcmFtOworICAgIFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQgPSB5eWV4dHJhOwogCi0gICAgeXlsbG9jID0geXlsbG9jX3BhcmFtOworICAg
IC8qIFNpbmdsZS1saW5lIGNvbW1lbnRzICovCisKKyAgICB5eWx2YWwgPSB5eWx2YWxfcGFyYW07
CiAKIAlpZiAoICF5eWctPnl5X2luaXQgKQogCQl7CkBAIC0xMDg1LDEzICsxMTA5LDEzIEBAIHl5
X21hdGNoOgogCQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5
X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9jdXJyZW50X3N0YXRlID0g
KGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICggeXlfY3VycmVudF9zdGF0
ZSA+PSA0NDMgKQorCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NTkgKQogCQkJCQl5eV9j
ID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCQl9CiAJCQl5eV9jdXJyZW50X3N0
YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5
eV9jXTsKIAkJCSsreXlfY3A7CiAJCQl9Ci0JCXdoaWxlICggeXlfY3VycmVudF9zdGF0ZSAhPSA0
NDIgKTsKKwkJd2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDQ1OCApOwogCQl5eV9jcCA9IHl5
Zy0+eXlfbGFzdF9hY2NlcHRpbmdfY3BvczsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5Zy0+eXlf
bGFzdF9hY2NlcHRpbmdfc3RhdGU7CiAKQEAgLTExMjUsMTk5ICsxMTQ5LDE5OCBAQCBkb19hY3Rp
b246CS8qIFRoaXMgbGFiZWwgaXMgdXNlZCBvbmx5IHRvIGFjY2VzcyBFT0YgYWN0aW9ucy4gKi8K
IAogY2FzZSAxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gSU5WQVJJQU5UOyB9Cis7CiAJWVlf
QlJFQUsKKy8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIEhJR0hfUFJFQ0lTSU9OOyB9Cit7IHl5X3B1c2hfc3RhdGUoQ09NTUVOVCwgeXlz
Y2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDM6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybiBN
RURJVU1fUFJFQ0lTSU9OOyB9Ci0JWVlfQlJFQUsKIGNhc2UgNDoKKy8qIHJ1bGUgNCBjYW4gbWF0
Y2ggZW9sICovCiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9Cis7CiAJ
WVlfQlJFQUsKIGNhc2UgNToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFBSRUNJU0lPTjsgfQor
eyB5eV9wb3Bfc3RhdGUoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybiBBVFRSSUJVVEU7IH0KK3sgcmV0dXJuKElOVkFSSUFOVCk7IH0KIAlZ
WV9CUkVBSwogY2FzZSA3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gQ09OU1RfUVVBTDsgfQor
eyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuIFVOSUZPUk07IH0KK3sgcmV0dXJuKE1FRElVTV9QUkVDSVNJT04pOyB9
CiAJWVlfQlJFQUsKIGNhc2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFZBUllJTkc7IH0K
K3sgcmV0dXJuKExPV19QUkVDSVNJT04pOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybiBCUkVBSzsgfQoreyByZXR1cm4oUFJFQ0lTSU9OKTsgfQogCVlZX0JS
RUFLCiBjYXNlIDExOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gQ09OVElOVUU7IH0KK3sgcmV0
dXJuKEFUVFJJQlVURSk7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuIERPOyB9Cit7IHJldHVybihDT05TVF9RVUFMKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEz
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRk9SOyB9Cit7IHJldHVybihVTklGT1JNKTsgfQog
CVlZX0JSRUFLCiBjYXNlIDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gV0hJTEU7IH0KK3sg
cmV0dXJuKFZBUllJTkcpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybiBJRjsgfQoreyByZXR1cm4oQlJFQUspOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybiBFTFNFOyB9Cit7IHJldHVybihDT05USU5VRSk7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIElOX1FVQUw7IH0KK3sg
cmV0dXJuKERPKTsgfQogCVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4gT1VUX1FVQUw7IH0KK3sgcmV0dXJuKEZPUik7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuIElOT1VUX1FVQUw7IH0KK3sgcmV0dXJuKFdISUxFKTsgfQog
CVlZX0JSRUFLCiBjYXNlIDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRkxPQVRfVFlQRTsg
fQoreyByZXR1cm4oSUYpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybiBJTlRfVFlQRTsgfQoreyByZXR1cm4oRUxTRSk7IH0KIAlZWV9CUkVBSwogY2FzZSAy
MjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFZPSURfVFlQRTsgfQoreyByZXR1cm4oSU5fUVVB
TCk7IH0KIAlZWV9CUkVBSwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEJPT0xf
VFlQRTsgfQoreyByZXR1cm4oT1VUX1FVQUwpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZWV9S
VUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuIEJPT0xDT05TVEFOVDsg
fQoreyByZXR1cm4oSU5PVVRfUVVBTCk7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JVTEVf
U0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9Cit7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQogCVlZ
X0JSRUFLCiBjYXNlIDI2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRElTQ0FSRDsgfQoreyBj
b250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMjc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBSRVRVUk47IH0KK3sgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFZPSURfVFlQRSk7IH0KIAlZWV9CUkVBSwog
Y2FzZSAyODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIE1BVFJJWDI7IH0KK3sgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEJPT0xfVFlQRSk7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAyOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIE1BVFJJWDM7IH0KK3sgeXlsdmFsLT5sZXgu
YiA9IHRydWU7ICByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQogCVlZX0JSRUFLCiBjYXNlIDMwOgog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4gTUFUUklYNDsgfQoreyB5eWx2YWwtPmxleC5iID0gZmFs
c2U7IHJldHVybihCT09MQ09OU1RBTlQpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybiBWRUMyOyB9Cit7IHJldHVybihESVNDQVJEKTsgfQogCVlZX0JSRUFL
CiBjYXNlIDMyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gVkVDMzsgfQoreyByZXR1cm4oUkVU
VVJOKTsgfQogCVlZX0JSRUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gVkVD
NDsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMik7IH0K
IAlZWV9CUkVBSwogY2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIElWRUMyOyB9Cit7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgzKTsgfQogCVlZX0JS
RUFLCiBjYXNlIDM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gSVZFQzM7IH0KK3sgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDQpOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMzY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBJVkVDNDsgfQoreyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybiBCVkVDMjsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybiBCVkVDMzsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gKFZFQzQpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybiBCVkVDNDsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElW
RUMyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gU0FN
UExFUjJEOyB9Cit7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzMp
OyB9CiAJWVlfQlJFQUsKIGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBTQU1QTEVS
Q1VCRTsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUM0KTsg
fQogCVlZX0JSRUFLCiBjYXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gU0FNUExFUl9F
WFRFUk5BTF9PRVM7IH0KK3sgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChC
VkVDMik7IH0KIAlZWV9CUkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFNB
TVBMRVIyRFJFQ1Q7IH0KK3sgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChC
VkVDMyk7IH0KIAlZWV9CUkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFNU
UlVDVDsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUM0KTsg
fQogCVlZX0JSRUFLCiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9Cit7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
biBTQU1QTEVSMkQ7IH0KIAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gU0FNUExFUkNVQkU7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JV
TEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KIAlZ
WV9CUkVBSwogY2FzZSA0ODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FN
UExFUjJEUkVDVDsgfQogCVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybihTVFJVQ1QpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxFX1NF
VFVQCkBAIC0xNDkzLDIyOSArMTUxNiwyNjcgQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFLCiBj
YXNlIDkzOgogWVlfUlVMRV9TRVRVUAotewotICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9v
bFRTdHJpbmcoeXl0ZXh0KTsgCi0gICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5uZXIpOwotfQor
eyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTQ6
CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRv
bCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VUVVAK
LXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVy
KTsgfQogCVlZX0JSRUFLCiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5p
ID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05T
VEFOVDsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsK
IGNhc2UgOTc6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9Cit7IHJldHVy
biByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZX1JV
TEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5
eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KK3sKKyAgIHl5bHZhbC0+bGV4LnN0cmlu
ZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7IAorICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2Fu
bmVyKTsKK30KIAlZWV9CUkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5s
ZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FU
Q09OU1RBTlQ7IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5
dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAw
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gQUREX0FTU0lHTjsgfQoreyB5eWx2YWwtPmxleC5p
ID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05T
VEFOVCk7IH0KIAlZWV9CUkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBT
VUJfQVNTSUdOOyB9Cit7IGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBu
dW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3ZlcigpOyByZXR1cm4gMDt9CiAJWVlfQlJF
QUsKIGNhc2UgMTAyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gTVVMX0FTU0lHTjsgfQoreyB5
eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJl
dHVybihJTlRDT05TVEFOVCk7IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybiBESVZfQVNTSUdOOyB9Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQogCVlZX0JS
RUFLCiBjYXNlIDEwNDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIE1PRF9BU1NJR047IH0KK3sg
eXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0
dXJuKEZMT0FUQ09OU1RBTlQpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4gTEVGVF9BU1NJR047IH0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0
PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTA2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gUklHSFRfQVNTSUdOOyB9
Cit7ICByZXR1cm4oQUREX0FTU0lHTik7IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybiBBTkRfQVNTSUdOOyB9Cit7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBYT1JfQVNTSUdO
OyB9Cit7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiBPUl9BU1NJR047IH0KK3sgIHJldHVybihESVZfQVNTSUdOKTsg
fQogCVlZX0JSRUFLCiBjYXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIElOQ19PUDsg
fQoreyAgcmV0dXJuKE1PRF9BU1NJR04pOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4gREVDX09QOyB9Cit7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTEyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gQU5EX09QOyB9Cit7
ICByZXR1cm4oUklHSFRfQVNTSUdOKTsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuIE9SX09QOyB9Cit7ICByZXR1cm4oQU5EX0FTU0lHTik7IH0KIAlZWV9C
UkVBSwogY2FzZSAxMTQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBYT1JfT1A7IH0KK3sgIHJl
dHVybihYT1JfQVNTSUdOKTsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIExFX09QOyB9Cit7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQogCVlZX0JSRUFLCiBj
YXNlIDExNjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEdFX09QOyB9Cit7ICByZXR1cm4oSU5D
X09QKTsgfQogCVlZX0JSRUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVR
X09QOyB9Cit7ICByZXR1cm4oREVDX09QKTsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZX1JV
TEVfU0VUVVAKLXsgcmV0dXJuIE5FX09QOyB9Cit7ICByZXR1cm4oQU5EX09QKTsgfQogCVlZX0JS
RUFLCiBjYXNlIDExOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIExFRlRfT1A7IH0KK3sgIHJl
dHVybihPUl9PUCk7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybiBSSUdIVF9PUDsgfQoreyAgcmV0dXJuKFhPUl9PUCk7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MjE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBTRU1JQ09MT047IH0KK3sgIHJldHVybihMRV9P
UCk7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBMRUZU
X0JSQUNFOyB9Cit7ICByZXR1cm4oR0VfT1ApOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgogWVlf
UlVMRV9TRVRVUAoteyByZXR1cm4gUklHSFRfQlJBQ0U7IH0KK3sgIHJldHVybihFUV9PUCk7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBDT01NQTsgfQor
eyAgcmV0dXJuKE5FX09QKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIENPTE9OOyB9Cit7ICByZXR1cm4oTEVGVF9PUCk7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUVVBTDsgfQoreyAgcmV0dXJuKFJJR0hU
X09QKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIExF
RlRfUEFSRU47IH0KK3sgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihTRU1J
Q09MT04pOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4g
UklHSFRfUEFSRU47IH0KK3sgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihM
RUZUX0JSQUNFKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuIExFRlRfQlJBQ0tFVDsgfQoreyByZXR1cm4oUklHSFRfQlJBQ0UpOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTMwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gUklHSFRfQlJBQ0tFVDsgfQoreyBp
ZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyBy
ZXR1cm4oQ09NTUEpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4gRE9UOyB9Cit7IHJldHVybihDT0xPTik7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybiBCQU5HOyB9Cit7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4gREFTSDsgfQoreyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsg
Y29udGV4dC0+aW5UeXBlUGFyZW4gPSB0cnVlOyByZXR1cm4oTEVGVF9QQVJFTik7IH0KIAlZWV9C
UkVBSwogY2FzZSAxMzQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBUSUxERTsgfQoreyBjb250
ZXh0LT5pblR5cGVQYXJlbiA9IGZhbHNlOyByZXR1cm4oUklHSFRfUEFSRU4pOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gUExVUzsgfQoreyByZXR1cm4o
TEVGVF9CUkFDS0VUKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuIFNUQVI7IH0KK3sgcmV0dXJuKFJJR0hUX0JSQUNLRVQpOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTM3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gU0xBU0g7IH0KK3sgQkVHSU4oRklFTERT
KTsgIHJldHVybihET1QpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4gUEVSQ0VOVDsgfQoreyByZXR1cm4oQkFORyk7IH0KIAlZWV9CUkVBSwogY2FzZSAx
Mzk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBMRUZUX0FOR0xFOyB9Cit7IHJldHVybihEQVNI
KTsgfQogCVlZX0JSRUFLCiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFJJR0hU
X0FOR0xFOyB9Cit7IHJldHVybihUSUxERSk7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiBWRVJUSUNBTF9CQVI7IH0KK3sgcmV0dXJuKFBMVVMpOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gQ0FSRVQ7IH0KK3sg
cmV0dXJuKFNUQVIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4gQU1QRVJTQU5EOyB9Cit7IHJldHVybihTTEFTSCk7IH0KIAlZWV9CUkVBSwogY2FzZSAx
NDQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBRVUVTVElPTjsgfQoreyByZXR1cm4oUEVSQ0VO
VCk7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDU6Ci0vKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9sICov
CiBZWV9SVUxFX1NFVFVQCi17IH0KLQlZWV9CUkVBSwotY2FzZSBZWV9TVEFURV9FT0YoSU5JVElB
TCk6Ci17IHl5dGVybWluYXRlKCk7IH0KK3sgcmV0dXJuKExFRlRfQU5HTEUpOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTQ2OgogWVlfUlVMRV9TRVRVUAoteyBhc3NlcnQoZmFsc2UpOyByZXR1cm4gMDsg
fQoreyByZXR1cm4oUklHSFRfQU5HTEUpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQ3OgogWVlfUlVM
RV9TRVRVUAoreyByZXR1cm4oVkVSVElDQUxfQkFSKTsgfQorCVlZX0JSRUFLCitjYXNlIDE0ODoK
K1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuKENBUkVUKTsgfQorCVlZX0JSRUFLCitjYXNlIDE0OToK
K1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuKEFNUEVSU0FORCk7IH0KKwlZWV9CUkVBSworY2FzZSAx
NTA6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybihRVUVTVElPTik7IH0KKwlZWV9CUkVBSworY2Fz
ZSAxNTE6CitZWV9SVUxFX1NFVFVQCit7IAorICAgIEJFR0lOKElOSVRJQUwpOworICAgIHl5bHZh
bC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7IAorICAgIHJldHVybiBGSUVM
RF9TRUxFQ1RJT047Cit9CisJWVlfQlJFQUsKK2Nhc2UgMTUyOgorWVlfUlVMRV9TRVRVUAore30K
KwlZWV9CUkVBSworY2FzZSAxNTM6CisvKiBydWxlIDE1MyBjYW4gbWF0Y2ggZW9sICovCitZWV9S
VUxFX1NFVFVQCit7ICB9CisJWVlfQlJFQUsKK2Nhc2UgWVlfU1RBVEVfRU9GKElOSVRJQUwpOgor
Y2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6CitjYXNlIFlZX1NUQVRFX0VPRihGSUVMRFMpOgor
eyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5dGVybWluYXRlKCk7IH0KKwlZWV9CUkVBSwor
Y2FzZSAxNTQ6CitZWV9SVUxFX1NFVFVQCit7IGNvbnRleHQtPndhcm5pbmcoeXlsaW5lbm8sICJV
bmtub3duIGNoYXIiLCB5eXRleHQsICIiKTsgcmV0dXJuIDA7IH0KKwlZWV9CUkVBSworY2FzZSAx
NTU6CitZWV9SVUxFX1NFVFVQCiBFQ0hPOwogCVlZX0JSRUFLCiAKQEAgLTIwMTAsNyArMjA3MSw3
IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAJ
CXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9j
dXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZb
eXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gNDQzICkKKwkJ
CWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NTkgKQogCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNp
Z25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jh
c2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKQEAgLTIwMzksMTEg
KzIxMDAsMTEgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nh
bm5lcikKIAl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10g
IT0geXlfY3VycmVudF9zdGF0ZSApCiAJCXsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5
X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKLQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyAp
CisJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NTkgKQogCQkJeXlfYyA9IHl5X21ldGFbKHVu
c2lnbmVkIGludCkgeXlfY107CiAJCX0KIAl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jh
c2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKLQl5eV9pc19qYW0g
PSAoeXlfY3VycmVudF9zdGF0ZSA9PSA0NDIpOworCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0
YXRlID09IDQ1OCk7CiAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7
CiB9CkBAIC0yNDg3LDYgKzI1NDgsNDYgQEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fYnl0ZXMg
ICh5eWNvbnN0IGNoYXIgKiB5eWJ5dGVzLCB5eV9zaXplX3QgIF95eWJ5dGVzX2xlbgogCXJldHVy
biBiOwogfQogCisgICAgc3RhdGljIHZvaWQgeXlfcHVzaF9zdGF0ZSAoaW50ICBuZXdfc3RhdGUg
LCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0
cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworCWlmICggeXlnLT55eV9zdGFydF9zdGFja19wdHIg
Pj0geXlnLT55eV9zdGFydF9zdGFja19kZXB0aCApCisJCXsKKwkJeXlfc2l6ZV90IG5ld19zaXpl
OworCisJCXl5Zy0+eXlfc3RhcnRfc3RhY2tfZGVwdGggKz0gWVlfU1RBUlRfU1RBQ0tfSU5DUjsK
KwkJbmV3X3NpemUgPSB5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRoICogc2l6ZW9mKCBpbnQgKTsK
KworCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCisJCQl5eWctPnl5X3N0YXJ0X3N0YWNr
ID0gKGludCAqKSB5eWFsbG9jKG5ld19zaXplICx5eXNjYW5uZXIgKTsKKworCQllbHNlCisJCQl5
eWctPnl5X3N0YXJ0X3N0YWNrID0gKGludCAqKSB5eXJlYWxsb2MoKHZvaWQgKikgeXlnLT55eV9z
dGFydF9zdGFjayxuZXdfc2l6ZSAseXlzY2FubmVyICk7CisKKwkJaWYgKCAhIHl5Zy0+eXlfc3Rh
cnRfc3RhY2sgKQorCQkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgbWVtb3J5IGV4cGFuZGluZyBz
dGFydC1jb25kaXRpb24gc3RhY2siICk7CisJCX0KKworCXl5Zy0+eXlfc3RhcnRfc3RhY2tbeXln
LT55eV9zdGFydF9zdGFja19wdHIrK10gPSBZWV9TVEFSVDsKKworCUJFR0lOKG5ld19zdGF0ZSk7
Cit9CisKKyAgICBzdGF0aWMgdm9pZCB5eV9wb3Bfc3RhdGUgICh5eXNjYW5fdCB5eXNjYW5uZXIp
Cit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2Fu
bmVyOworCWlmICggLS15eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA8IDAgKQorCQlZWV9GQVRBTF9F
UlJPUiggInN0YXJ0LWNvbmRpdGlvbiBzdGFjayB1bmRlcmZsb3ciICk7CisKKwlCRUdJTih5eWct
Pnl5X3N0YXJ0X3N0YWNrW3l5Zy0+eXlfc3RhcnRfc3RhY2tfcHRyXSk7Cit9CisKKyAgICBzdGF0
aWMgaW50IHl5X3RvcF9zdGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBzdHJ1Y3Qg
eXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisJcmV0dXJuIHl5
Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9zdGFja19wdHIgLSAxXTsKK30KKwogI2lm
bmRlZiBZWV9FWElUX0ZBSUxVUkUKICNkZWZpbmUgWVlfRVhJVF9GQUlMVVJFIDIKICNlbmRpZgpA
QCAtMjY3MiwxOCArMjc3Myw2IEBAIHZvaWQgeXlzZXRfbHZhbCAoWVlTVFlQRSAqICB5eWx2YWxf
cGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiAgICAgeXlsdmFsID0geXlsdmFsX3BhcmFtOwog
fQogCi1ZWUxUWVBFICp5eWdldF9sbG9jICAoeXlzY2FuX3QgeXlzY2FubmVyKQotewotICAgIHN0
cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKLSAgICBy
ZXR1cm4geXlsbG9jOwotfQotICAgIAotdm9pZCB5eXNldF9sbG9jIChZWUxUWVBFICogIHl5bGxv
Y19wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5
eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0gICAgeXlsbG9jID0geXlsbG9jX3Bh
cmFtOwotfQotICAgIAogLyogVXNlci12aXNpYmxlIEFQSSAqLwogCiAvKiB5eWxleF9pbml0IGlz
IHNwZWNpYWwgYmVjYXVzZSBpdCBjcmVhdGVzIHRoZSBzY2FubmVyIGl0c2VsZiwgc28gaXQgaXMK
QEAgLTI4NjUsOCArMjk1NCw3IEBAIHl5X3NpemVfdCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCB5
eV9zaXplX3QgbWF4X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHl5X3NpemVfdCBs
ZW4gPSB0b2tlbi50eXBlID09IHBwOjpUb2tlbjo6TEFTVCA/IDAgOiB0b2tlbi50ZXh0LnNpemUo
KTsKICAgICBpZiAobGVuIDwgbWF4X3NpemUpCiAgICAgICAgIG1lbWNweShidWYsIHRva2VuLnRl
eHQuY19zdHIoKSwgbGVuKTsKLSAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9jYXRpb24uZmlsZSx5
eXNjYW5uZXIpOwotICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLHl5c2Nhbm5l
cik7CisgICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYyh0b2tlbi5sb2NhdGlvbi5maWxl
LCB0b2tlbi5sb2NhdGlvbi5saW5lKSx5eXNjYW5uZXIpOwogCiAgICAgaWYgKGxlbiA+PSBtYXhf
c2l6ZSkKICAgICAgICAgWVlfRkFUQUxfRVJST1IoIklucHV0IGJ1ZmZlciBvdmVyZmxvdyIpOwpA
QCAtMjg4MCwxMCArMjk2OCwxMiBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIp
IHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRTeW1ib2wqIHN5bWJv
bCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBpZiAoc3ltYm9sICYm
IHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9
PSBmYWxzZSAmJiBzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKICAgICAgICAgVFZh
cmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0gICAg
ICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQorICAgICAgICBpZiAodmFyaWFibGUtPmlz
VXNlclR5cGUoKSkgeworICAgICAgICAgICAgeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsK
ICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOworICAgICAgICB9CiAgICAgfQogICAgIHl5
bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47CkBAIC0yODkyLDEx
ICsyOTgyLDIyIEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogaW50IHJl
c2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgc3RydWN0IHl5Z3V0c190KiB5
eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlzY2FubmVyOwogCi0gICAgeXlleHRyYS0+ZXJyb3Io
Knl5bGxvYywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKKyAg
ICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdvcmQi
LCB5eXRleHQsICIiKTsKICAgICB5eWV4dHJhLT5yZWNvdmVyKCk7CiAgICAgcmV0dXJuIDA7CiB9
CiAKK3ZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFz
b24pIHsKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250
ZXh0LT5zY2FubmVyOworCisgICAgaWYgKGNvbnRleHQtPkFmdGVyRU9GKSB7CisgICAgICAgIGNv
bnRleHQtPmVycm9yKHl5bGluZW5vLCByZWFzb24sICJ1bmV4cGVjdGVkIEVPRiIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCByZWFzb24sIHl5dGV4dCk7
CisgICAgfQorICAgIGNvbnRleHQtPnJlY292ZXIoKTsKK30KKwogaW50IGdsc2xhbmdfaW5pdGlh
bGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlzY2FuX3Qgc2Nhbm5lciA9IE5V
TEw7CiAgICAgaWYgKHl5bGV4X2luaXRfZXh0cmEoY29udGV4dCwmc2Nhbm5lcikpCkBAIC0yOTE5
LDggKzMwMjAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0
KSB7CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4
dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLGNvbnRleHQtPnNjYW5uZXIpOwotICAg
IHl5c2V0X2NvbHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOwotICAgIHl5c2V0X2xpbmVubygxLGNv
bnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2MoMCwgMSks
Y29udGV4dC0+c2Nhbm5lcik7CisgICAgY29udGV4dC0+QWZ0ZXJFT0YgPSBmYWxzZTsKIAogICAg
IC8vIEluaXRpYWxpemUgcHJlcHJvY2Vzc29yLgogICAgIGlmICghY29udGV4dC0+cHJlcHJvY2Vz
c29yLmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCmluZGV4IGJjMjUzY2EuLjQw
MTEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nX3RhYi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2dsc2xhbmdfdGFiLmNwcApAQCAtNTYsNyArNTYsNyBAQAogI2RlZmluZSBZWVBVUkUgMQogCiAv
KiBVc2luZyBsb2NhdGlvbnMuICAqLwotI2RlZmluZSBZWUxTUF9ORUVERUQgMQorI2RlZmluZSBZ
WUxTUF9ORUVERUQgMAogCiAKIApAQCAtMTEzLDUxICsxMTMsNTIgQEAKICAgICAgRkxPQVRDT05T
VEFOVCA9IDMwMiwKICAgICAgSU5UQ09OU1RBTlQgPSAzMDMsCiAgICAgIEJPT0xDT05TVEFOVCA9
IDMwNCwKLSAgICAgTEVGVF9PUCA9IDMwNSwKLSAgICAgUklHSFRfT1AgPSAzMDYsCi0gICAgIElO
Q19PUCA9IDMwNywKLSAgICAgREVDX09QID0gMzA4LAotICAgICBMRV9PUCA9IDMwOSwKLSAgICAg
R0VfT1AgPSAzMTAsCi0gICAgIEVRX09QID0gMzExLAotICAgICBORV9PUCA9IDMxMiwKLSAgICAg
QU5EX09QID0gMzEzLAotICAgICBPUl9PUCA9IDMxNCwKLSAgICAgWE9SX09QID0gMzE1LAotICAg
ICBNVUxfQVNTSUdOID0gMzE2LAotICAgICBESVZfQVNTSUdOID0gMzE3LAotICAgICBBRERfQVNT
SUdOID0gMzE4LAotICAgICBNT0RfQVNTSUdOID0gMzE5LAotICAgICBMRUZUX0FTU0lHTiA9IDMy
MCwKLSAgICAgUklHSFRfQVNTSUdOID0gMzIxLAotICAgICBBTkRfQVNTSUdOID0gMzIyLAotICAg
ICBYT1JfQVNTSUdOID0gMzIzLAotICAgICBPUl9BU1NJR04gPSAzMjQsCi0gICAgIFNVQl9BU1NJ
R04gPSAzMjUsCi0gICAgIExFRlRfUEFSRU4gPSAzMjYsCi0gICAgIFJJR0hUX1BBUkVOID0gMzI3
LAotICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCi0gICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCi0g
ICAgIExFRlRfQlJBQ0UgPSAzMzAsCi0gICAgIFJJR0hUX0JSQUNFID0gMzMxLAotICAgICBET1Qg
PSAzMzIsCi0gICAgIENPTU1BID0gMzMzLAotICAgICBDT0xPTiA9IDMzNCwKLSAgICAgRVFVQUwg
PSAzMzUsCi0gICAgIFNFTUlDT0xPTiA9IDMzNiwKLSAgICAgQkFORyA9IDMzNywKLSAgICAgREFT
SCA9IDMzOCwKLSAgICAgVElMREUgPSAzMzksCi0gICAgIFBMVVMgPSAzNDAsCi0gICAgIFNUQVIg
PSAzNDEsCi0gICAgIFNMQVNIID0gMzQyLAotICAgICBQRVJDRU5UID0gMzQzLAotICAgICBMRUZU
X0FOR0xFID0gMzQ0LAotICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKLSAgICAgVkVSVElDQUxfQkFS
ID0gMzQ2LAotICAgICBDQVJFVCA9IDM0NywKLSAgICAgQU1QRVJTQU5EID0gMzQ4LAotICAgICBR
VUVTVElPTiA9IDM0OQorICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCisgICAgIExFRlRfT1Ag
PSAzMDYsCisgICAgIFJJR0hUX09QID0gMzA3LAorICAgICBJTkNfT1AgPSAzMDgsCisgICAgIERF
Q19PUCA9IDMwOSwKKyAgICAgTEVfT1AgPSAzMTAsCisgICAgIEdFX09QID0gMzExLAorICAgICBF
UV9PUCA9IDMxMiwKKyAgICAgTkVfT1AgPSAzMTMsCisgICAgIEFORF9PUCA9IDMxNCwKKyAgICAg
T1JfT1AgPSAzMTUsCisgICAgIFhPUl9PUCA9IDMxNiwKKyAgICAgTVVMX0FTU0lHTiA9IDMxNywK
KyAgICAgRElWX0FTU0lHTiA9IDMxOCwKKyAgICAgQUREX0FTU0lHTiA9IDMxOSwKKyAgICAgTU9E
X0FTU0lHTiA9IDMyMCwKKyAgICAgTEVGVF9BU1NJR04gPSAzMjEsCisgICAgIFJJR0hUX0FTU0lH
TiA9IDMyMiwKKyAgICAgQU5EX0FTU0lHTiA9IDMyMywKKyAgICAgWE9SX0FTU0lHTiA9IDMyNCwK
KyAgICAgT1JfQVNTSUdOID0gMzI1LAorICAgICBTVUJfQVNTSUdOID0gMzI2LAorICAgICBMRUZU
X1BBUkVOID0gMzI3LAorICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKKyAgICAgTEVGVF9CUkFDS0VU
ID0gMzI5LAorICAgICBSSUdIVF9CUkFDS0VUID0gMzMwLAorICAgICBMRUZUX0JSQUNFID0gMzMx
LAorICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKKyAgICAgRE9UID0gMzMzLAorICAgICBDT01NQSA9
IDMzNCwKKyAgICAgQ09MT04gPSAzMzUsCisgICAgIEVRVUFMID0gMzM2LAorICAgICBTRU1JQ09M
T04gPSAzMzcsCisgICAgIEJBTkcgPSAzMzgsCisgICAgIERBU0ggPSAzMzksCisgICAgIFRJTERF
ID0gMzQwLAorICAgICBQTFVTID0gMzQxLAorICAgICBTVEFSID0gMzQyLAorICAgICBTTEFTSCA9
IDM0MywKKyAgICAgUEVSQ0VOVCA9IDM0NCwKKyAgICAgTEVGVF9BTkdMRSA9IDM0NSwKKyAgICAg
UklHSFRfQU5HTEUgPSAzNDYsCisgICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywKKyAgICAgQ0FSRVQg
PSAzNDgsCisgICAgIEFNUEVSU0FORCA9IDM0OSwKKyAgICAgUVVFU1RJT04gPSAzNTAKICAgIH07
CiAjZW5kaWYKIC8qIFRva2Vucy4gICovCkBAIC0yMDgsNTEgKzIwOSw1MiBAQAogI2RlZmluZSBG
TE9BVENPTlNUQU5UIDMwMgogI2RlZmluZSBJTlRDT05TVEFOVCAzMDMKICNkZWZpbmUgQk9PTENP
TlNUQU5UIDMwNAotI2RlZmluZSBMRUZUX09QIDMwNQotI2RlZmluZSBSSUdIVF9PUCAzMDYKLSNk
ZWZpbmUgSU5DX09QIDMwNwotI2RlZmluZSBERUNfT1AgMzA4Ci0jZGVmaW5lIExFX09QIDMwOQot
I2RlZmluZSBHRV9PUCAzMTAKLSNkZWZpbmUgRVFfT1AgMzExCi0jZGVmaW5lIE5FX09QIDMxMgot
I2RlZmluZSBBTkRfT1AgMzEzCi0jZGVmaW5lIE9SX09QIDMxNAotI2RlZmluZSBYT1JfT1AgMzE1
Ci0jZGVmaW5lIE1VTF9BU1NJR04gMzE2Ci0jZGVmaW5lIERJVl9BU1NJR04gMzE3Ci0jZGVmaW5l
IEFERF9BU1NJR04gMzE4Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzE5Ci0jZGVmaW5lIExFRlRfQVNT
SUdOIDMyMAotI2RlZmluZSBSSUdIVF9BU1NJR04gMzIxCi0jZGVmaW5lIEFORF9BU1NJR04gMzIy
Ci0jZGVmaW5lIFhPUl9BU1NJR04gMzIzCi0jZGVmaW5lIE9SX0FTU0lHTiAzMjQKLSNkZWZpbmUg
U1VCX0FTU0lHTiAzMjUKLSNkZWZpbmUgTEVGVF9QQVJFTiAzMjYKLSNkZWZpbmUgUklHSFRfUEFS
RU4gMzI3Ci0jZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjgKLSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAz
MjkKLSNkZWZpbmUgTEVGVF9CUkFDRSAzMzAKLSNkZWZpbmUgUklHSFRfQlJBQ0UgMzMxCi0jZGVm
aW5lIERPVCAzMzIKLSNkZWZpbmUgQ09NTUEgMzMzCi0jZGVmaW5lIENPTE9OIDMzNAotI2RlZmlu
ZSBFUVVBTCAzMzUKLSNkZWZpbmUgU0VNSUNPTE9OIDMzNgotI2RlZmluZSBCQU5HIDMzNwotI2Rl
ZmluZSBEQVNIIDMzOAotI2RlZmluZSBUSUxERSAzMzkKLSNkZWZpbmUgUExVUyAzNDAKLSNkZWZp
bmUgU1RBUiAzNDEKLSNkZWZpbmUgU0xBU0ggMzQyCi0jZGVmaW5lIFBFUkNFTlQgMzQzCi0jZGVm
aW5lIExFRlRfQU5HTEUgMzQ0Ci0jZGVmaW5lIFJJR0hUX0FOR0xFIDM0NQotI2RlZmluZSBWRVJU
SUNBTF9CQVIgMzQ2Ci0jZGVmaW5lIENBUkVUIDM0NwotI2RlZmluZSBBTVBFUlNBTkQgMzQ4Ci0j
ZGVmaW5lIFFVRVNUSU9OIDM0OQorI2RlZmluZSBGSUVMRF9TRUxFQ1RJT04gMzA1CisjZGVmaW5l
IExFRlRfT1AgMzA2CisjZGVmaW5lIFJJR0hUX09QIDMwNworI2RlZmluZSBJTkNfT1AgMzA4Cisj
ZGVmaW5lIERFQ19PUCAzMDkKKyNkZWZpbmUgTEVfT1AgMzEwCisjZGVmaW5lIEdFX09QIDMxMQor
I2RlZmluZSBFUV9PUCAzMTIKKyNkZWZpbmUgTkVfT1AgMzEzCisjZGVmaW5lIEFORF9PUCAzMTQK
KyNkZWZpbmUgT1JfT1AgMzE1CisjZGVmaW5lIFhPUl9PUCAzMTYKKyNkZWZpbmUgTVVMX0FTU0lH
TiAzMTcKKyNkZWZpbmUgRElWX0FTU0lHTiAzMTgKKyNkZWZpbmUgQUREX0FTU0lHTiAzMTkKKyNk
ZWZpbmUgTU9EX0FTU0lHTiAzMjAKKyNkZWZpbmUgTEVGVF9BU1NJR04gMzIxCisjZGVmaW5lIFJJ
R0hUX0FTU0lHTiAzMjIKKyNkZWZpbmUgQU5EX0FTU0lHTiAzMjMKKyNkZWZpbmUgWE9SX0FTU0lH
TiAzMjQKKyNkZWZpbmUgT1JfQVNTSUdOIDMyNQorI2RlZmluZSBTVUJfQVNTSUdOIDMyNgorI2Rl
ZmluZSBMRUZUX1BBUkVOIDMyNworI2RlZmluZSBSSUdIVF9QQVJFTiAzMjgKKyNkZWZpbmUgTEVG
VF9CUkFDS0VUIDMyOQorI2RlZmluZSBSSUdIVF9CUkFDS0VUIDMzMAorI2RlZmluZSBMRUZUX0JS
QUNFIDMzMQorI2RlZmluZSBSSUdIVF9CUkFDRSAzMzIKKyNkZWZpbmUgRE9UIDMzMworI2RlZmlu
ZSBDT01NQSAzMzQKKyNkZWZpbmUgQ09MT04gMzM1CisjZGVmaW5lIEVRVUFMIDMzNgorI2RlZmlu
ZSBTRU1JQ09MT04gMzM3CisjZGVmaW5lIEJBTkcgMzM4CisjZGVmaW5lIERBU0ggMzM5CisjZGVm
aW5lIFRJTERFIDM0MAorI2RlZmluZSBQTFVTIDM0MQorI2RlZmluZSBTVEFSIDM0MgorI2RlZmlu
ZSBTTEFTSCAzNDMKKyNkZWZpbmUgUEVSQ0VOVCAzNDQKKyNkZWZpbmUgTEVGVF9BTkdMRSAzNDUK
KyNkZWZpbmUgUklHSFRfQU5HTEUgMzQ2CisjZGVmaW5lIFZFUlRJQ0FMX0JBUiAzNDcKKyNkZWZp
bmUgQ0FSRVQgMzQ4CisjZGVmaW5lIEFNUEVSU0FORCAzNDkKKyNkZWZpbmUgUVVFU1RJT04gMzUw
CiAKIAogCkBAIC0yODUsNiArMjg3LDcgQEAKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcu
aCIKIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAorI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwg
MQogCiAjZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKIApAQCAtMzExLDkgKzMx
NCw4IEBACiB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKIAogewotI2RlZmluZSBZWUxUWVBFIFRTb3Vy
Y2VMb2MKLSNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCiAgICAgc3RydWN0IHsKKyAgICAg
ICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5n
ICpzdHJpbmc7CiAgICAgICAgICAgICBmbG9hdCBmOwpAQCAtMzIzLDYgKzMyNSw3IEBAIHR5cGVk
ZWYgdW5pb24gWVlTVFlQRQogICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAgICAgfSBsZXg7CiAg
ICAgc3RydWN0IHsKKyAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICBUT3BlcmF0b3Ig
b3A7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2Rl
OwpAQCAtMzM2LDggKzMzOSw4IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAg
VFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uOwog
ICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7
Ci0gICAgICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CisgICAgICAgICAgICBUVHlwZUxp
bmUgdHlwZUxpbmU7CisgICAgICAgICAgICBUVHlwZUxpc3QqIHR5cGVMaXN0OwogICAgICAgICB9
OwogICAgIH0gaW50ZXJtOwogfQpAQCAtMzQ5LDQxICszNTIsMjEgQEAgdHlwZWRlZiB1bmlvbiBZ
WVNUWVBFCiAjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlmCiAKLSNpZiAhIGRl
ZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNMQVJFRAotdHlwZWRlZiBz
dHJ1Y3QgWVlMVFlQRQotewotICBpbnQgZmlyc3RfbGluZTsKLSAgaW50IGZpcnN0X2NvbHVtbjsK
LSAgaW50IGxhc3RfbGluZTsKLSAgaW50IGxhc3RfY29sdW1uOwotfSBZWUxUWVBFOwotIyBkZWZp
bmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwot
IyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZWUxUWVBFX0lTX1RSSVZJ
QUwgMQotI2VuZGlmCiAKIAogLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJh
dGlvbnMuICAqLwogCiAKLWV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBF
KiB5eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7Ci1zdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUq
IHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKLQot
I2RlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhT
TE9DKFJocywgMSkuZmlyc3RfZmlsZTsgIFwKLSAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUg
PSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2xpbmU7ICBcCi0gICAgICAgIChDdXJyZW50KS5sYXN0
X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfZmlsZTsgICAgXAotICAgICAgICAoQ3VycmVu
dCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKLSAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFz
dF9maWxlOyAgIFwKLSAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMs
IDApLmxhc3RfbGluZTsgICBcCi0gICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xP
QyhSaHMsIDApLmxhc3RfZmlsZTsgICAgXAotICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0g
WVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgIFwKLSAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gd2hpbGUgKDApCitl
eHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVyKTsK
K2V4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
cmVhc29uKTsKKworI2RlZmluZSBGUkFHX1ZFUlRfT05MWShTLCBMKSB7ICBcCisgICAgaWYgKGNv
bnRleHQtPnNoYWRlclR5cGUgIT0gU0hfRlJBR01FTlRfU0hBREVSICYmICBcCisgICAgICAgIGNv
bnRleHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXAorICAgICAgICBjb250
ZXh0LT5lcnJvcihMLCAiIHN1cHBvcnRlZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBvbmx5
ICIsIFMpOyAgXAorICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCisgICAgfSAgXAorfQog
CiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+c2hhZGVy
VHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCkBAIC01NTksMTYgKzU0MiwxNCBAQCB2b2lk
IGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KIAogI2lm
ICghIGRlZmluZWQgeXlvdmVyZmxvdyBcCiAgICAgICYmICghIGRlZmluZWQgX19jcGx1c3BsdXMg
XAotCSB8fCAoZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFM
IFwKLQkgICAgICYmIGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFMICYmIFlZU1RZUEVfSVNfVFJJ
VklBTCkpKQorCSB8fCAoZGVmaW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19U
UklWSUFMKSkpCiAKIC8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBz
dGFjayBtZW1iZXIuICAqLwogdW5pb24geXlhbGxvYwogewogICB5eXR5cGVfaW50MTYgeXlzczsK
ICAgWVlTVFlQRSB5eXZzOwotICAgIFlZTFRZUEUgeXlsczsKLX07CisgIH07CiAKIC8qIFRoZSBz
aXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUg
bmV4dC4gICovCiAjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5
YWxsb2MpIC0gMSkKQEAgLTU3Niw4ICs1NTcsOCBAQCB1bmlvbiB5eWFsbG9jCiAvKiBUaGUgc2l6
ZSBvZiBhbiBhcnJheSBsYXJnZSB0byBlbm91Z2ggdG8gaG9sZCBhbGwgc3RhY2tzLCBlYWNoIHdp
dGgKICAgIE4gZWxlbWVudHMuICAqLwogIyBkZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCi0gICAg
ICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVv
ZiAoWVlMVFlQRSkpIFwKLSAgICAgICsgMiAqIFlZU1RBQ0tfR0FQX01BWElNVU0pCisgICAgICgo
TikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBFKSkgXAorICAgICAg
KyBZWVNUQUNLX0dBUF9NQVhJTVVNKQogCiAvKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBGUk9N
IHRvIFRPLiAgVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZG8KICAgIG5vdCBvdmVybGFwLiAg
Ki8KQEAgLTYxNiwyMiArNTk3LDIyIEBAIHVuaW9uIHl5YWxsb2MKICNlbmRpZgogCiAvKiBZWUZJ
TkFMIC0tIFN0YXRlIG51bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLwotI2RlZmlu
ZSBZWUZJTkFMICA3NAorI2RlZmluZSBZWUZJTkFMICA3MQogLyogWVlMQVNUIC0tIExhc3QgaW5k
ZXggaW4gWVlUQUJMRS4gICovCi0jZGVmaW5lIFlZTEFTVCAgIDE0OTAKKyNkZWZpbmUgWVlMQVNU
ICAgMTQxNgogCiAvKiBZWU5UT0tFTlMgLS0gTnVtYmVyIG9mIHRlcm1pbmFscy4gICovCi0jZGVm
aW5lIFlZTlRPS0VOUyAgOTUKKyNkZWZpbmUgWVlOVE9LRU5TICA5NgogLyogWVlOTlRTIC0tIE51
bWJlciBvZiBub250ZXJtaW5hbHMuICAqLwotI2RlZmluZSBZWU5OVFMgIDg0CisjZGVmaW5lIFlZ
Tk5UUyAgODMKIC8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBydWxlcy4gICovCi0jZGVmaW5lIFlZ
TlJVTEVTICAyMDIKKyNkZWZpbmUgWVlOUlVMRVMgIDIwMQogLyogWVlOUlVMRVMgLS0gTnVtYmVy
IG9mIHN0YXRlcy4gICovCi0jZGVmaW5lIFlZTlNUQVRFUyAgMzA3CisjZGVmaW5lIFlZTlNUQVRF
UyAgMzA0CiAKIC8qIFlZVFJBTlNMQVRFKFlZTEVYKSAtLSBCaXNvbiBzeW1ib2wgbnVtYmVyIGNv
cnJlc3BvbmRpbmcgdG8gWVlMRVguICAqLwogI2RlZmluZSBZWVVOREVGVE9LICAyCi0jZGVmaW5l
IFlZTUFYVVRPSyAgIDM0OQorI2RlZmluZSBZWU1BWFVUT0sgICAzNTAKIAogI2RlZmluZSBZWVRS
QU5TTEFURShZWVgpCQkJCQkJXAogICAoKHVuc2lnbmVkIGludCkgKFlZWCkgPD0gWVlNQVhVVE9L
ID8geXl0cmFuc2xhdGVbWVlYXSA6IFlZVU5ERUZUT0spCkBAIC02NzMsNyArNjU0LDggQEAgc3Rh
dGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdID0KICAgICAgIDU1LCAgICA1Niwg
ICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LAog
ICAgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcy
LCAgICA3MywgICAgNzQsCiAgICAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAg
IDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwKLSAgICAgIDg1LCAgICA4NiwgICAgODcs
ICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0CisgICAgICA4
NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkz
LCAgICA5NCwKKyAgICAgIDk1CiB9OwogCiAjaWYgWVlERUJVRwpAQCAtNjgxLDExNiArNjYzLDEx
NSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gPQogICAgWVlSSFMu
ICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlwcmhzW10gPQogewotICAgICAgIDAs
ICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNSwg
ICAgMTcsCi0gICAgICAyMSwgICAgMjMsICAgIDI4LCAgICAzMCwgICAgMzQsICAgIDM3LCAgICA0
MCwgICAgNDIsICAgIDQ0LCAgICA0NiwKLSAgICAgIDUwLCAgICA1MywgICAgNTYsICAgIDU5LCAg
ICA2MSwgICAgNjQsICAgIDY4LCAgICA3MSwgICAgNzMsICAgIDc1LAotICAgICAgNzcsICAgIDgw
LCAgICA4MywgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk0LCAgICA5OCwgICAxMDIs
Ci0gICAgIDEwNCwgICAxMDgsICAgMTEyLCAgIDExNCwgICAxMTYsICAgMTIwLCAgIDEyNCwgICAx
MjgsICAgMTMyLCAgIDEzNCwKLSAgICAgMTM4LCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwg
ICAxNTAsICAgMTU0LCAgIDE1NiwgICAxNjAsICAgMTYyLAotICAgICAxNjYsICAgMTY4LCAgIDE3
NCwgICAxNzYsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCi0gICAg
IDE5MiwgICAxOTYsICAgMTk4LCAgIDIwMSwgICAyMDQsICAgMjA5LCAgIDIxMiwgICAyMTQsICAg
MjE2LCAgIDIxOSwKLSAgICAgMjIzLCAgIDIyNywgICAyMzAsICAgMjM2LCAgIDI0MCwgICAyNDMs
ICAgMjQ3LCAgIDI1MCwgICAyNTEsICAgMjUzLAotICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAy
NjEsICAgMjY1LCAgIDI3MSwgICAyNzgsICAgMjg0LCAgIDI4NiwgICAyODksCi0gICAgIDI5NCwg
ICAzMDAsICAgMzA1LCAgIDMwOCwgICAzMTAsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzE5LCAg
IDMyMiwKLSAgICAgMzI0LCAgIDMyNiwgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzM3
LCAgIDM0MiwgICAzNDQsICAgMzQ2LAorICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAg
ICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNywgICAgMTksCisgICAgICAyNCwgICAgMjYs
ICAgIDMwLCAgICAzMywgICAgMzYsICAgIDM4LCAgICA0MCwgICAgNDIsICAgIDQ2LCAgICA0OSwK
KyAgICAgIDUyLCAgICA1NSwgICAgNTcsICAgIDYwLCAgICA2NCwgICAgNjcsICAgIDY5LCAgICA3
MSwgICAgNzMsICAgIDc1LAorICAgICAgNzgsICAgIDgxLCAgICA4NCwgICAgODYsICAgIDg4LCAg
ICA5MCwgICAgOTIsICAgIDk2LCAgIDEwMCwgICAxMDIsCisgICAgIDEwNiwgICAxMTAsICAgMTEy
LCAgIDExNCwgICAxMTgsICAgMTIyLCAgIDEyNiwgICAxMzAsICAgMTMyLCAgIDEzNiwKKyAgICAg
MTQwLCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTIsICAgMTU0LCAgIDE1OCwgICAx
NjAsICAgMTY0LAorICAgICAxNjYsICAgMTcyLCAgIDE3NCwgICAxNzgsICAgMTgwLCAgIDE4Miwg
ICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCisgICAgIDE5NCwgICAxOTYsICAgMTk5LCAgIDIw
MiwgICAyMDcsICAgMjEwLCAgIDIxMiwgICAyMTQsICAgMjE3LCAgIDIyMSwKKyAgICAgMjI1LCAg
IDIyOCwgICAyMzQsICAgMjM4LCAgIDI0MSwgICAyNDUsICAgMjQ4LCAgIDI0OSwgICAyNTEsICAg
MjUzLAorICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjMsICAgMjY5LCAgIDI3NiwgICAyODIs
ICAgMjg0LCAgIDI4NywgICAyOTIsCisgICAgIDI5OCwgICAzMDMsICAgMzA2LCAgIDMwOCwgICAz
MTEsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzIwLCAgIDMyMiwKKyAgICAgMzI0LCAgIDMyNywg
ICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzQwLCAgIDM0MiwgICAzNDQsICAgMzQ2LAog
ICAgICAzNDgsICAgMzUwLCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAgMzYy
LCAgIDM2NCwgICAzNjYsCi0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAg
Mzc4LCAgIDM4MCwgICAzODIsICAgMzg0LCAgIDM4NiwKLSAgICAgMzg3LCAgIDM5NCwgICAzOTUs
ICAgNDAxLCAgIDQwMywgICA0MDYsICAgNDEwLCAgIDQxMiwgICA0MTYsICAgNDE4LAotICAgICA0
MjMsICAgNDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQz
OSwgICA0NDEsCi0gICAgIDQ0NCwgICA0NDUsICAgNDQ2LCAgIDQ1MiwgICA0NTQsICAgNDU2LCAg
IDQ1NywgICA0NjAsICAgNDYxLCAgIDQ2NCwKLSAgICAgNDY3LCAgIDQ3MSwgICA0NzMsICAgNDc2
LCAgIDQ3OCwgICA0ODEsICAgNDg3LCAgIDQ5MSwgICA0OTMsICAgNDk1LAotICAgICA1MDAsICAg
NTAxLCAgIDUwOCwgICA1MDksICAgNTE4LCAgIDUxOSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1
MzMsCi0gICAgIDUzNCwgICA1MzcsICAgNTQxLCAgIDU0NCwgICA1NDcsICAgNTUwLCAgIDU1NCwg
ICA1NTcsICAgNTU5LCAgIDU2MiwKLSAgICAgNTY0LCAgIDU2NiwgICA1NjcKKyAgICAgMzY4LCAg
IDM3MCwgICAzNzIsICAgMzc0LCAgIDM3NiwgICAzNzgsICAgMzgwLCAgIDM4MiwgICAzODQsICAg
Mzg1LAorICAgICAzOTIsICAgMzkzLCAgIDM5OSwgICA0MDEsICAgNDA0LCAgIDQwOCwgICA0MTAs
ICAgNDE0LCAgIDQxNiwgICA0MjEsCisgICAgIDQyMywgICA0MjUsICAgNDI3LCAgIDQyOSwgICA0
MzEsICAgNDMzLCAgIDQzNSwgICA0MzcsICAgNDM5LCAgIDQ0MiwKKyAgICAgNDQzLCAgIDQ0NCwg
ICA0NTAsICAgNDUyLCAgIDQ1NCwgICA0NTUsICAgNDU4LCAgIDQ1OSwgICA0NjIsICAgNDY1LAor
ICAgICA0NjksICAgNDcxLCAgIDQ3NCwgICA0NzYsICAgNDc5LCAgIDQ4NSwgICA0ODksICAgNDkx
LCAgIDQ5MywgICA0OTgsCisgICAgIDQ5OSwgICA1MDYsICAgNTA3LCAgIDUxNiwgICA1MTcsICAg
NTI1LCAgIDUyNywgICA1MjksICAgNTMxLCAgIDUzMiwKKyAgICAgNTM1LCAgIDUzOSwgICA1NDIs
ICAgNTQ1LCAgIDU0OCwgICA1NTIsICAgNTU1LCAgIDU1NywgICA1NjAsICAgNTYyLAorICAgICA1
NjQsICAgNTY1CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhl
IHJ1bGVzJyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIHsK
LSAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgNDYsICAgIC0xLCAgICA0
NSwgICAgLTEsICAgIDk3LAotICAgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsICAgIC0xLCAg
ICA0OSwgICAgLTEsICAgIDcxLCAgIDEyNCwgICAgNzIsCi0gICAgICAtMSwgICAgOTgsICAgIC0x
LCAgICA5OSwgICAgNzMsICAgMTAwLCAgICA3NCwgICAgLTEsICAgMTAxLCAgICAtMSwKLSAgICAg
IDk5LCAgICA3NywgICAgOTYsICAgIC0xLCAgICA5OSwgICAgNTIsICAgIC0xLCAgICA5OSwgICAg
NTMsICAgIC0xLAotICAgICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsICAgMTAzLCAgICAtMSwg
ICAgOTksICAgIDc3LCAgIDEwMywgICAgLTEsCi0gICAgIDEwNSwgICAgNzIsICAgIC0xLCAgIDEw
NCwgICAgNzIsICAgIC0xLCAgIDEwNiwgICAgMzksICAgIC0xLCAgIDEwNiwKLSAgICAgIC0xLCAg
IDEwNiwgICAxMjIsICAgIC0xLCAgIDEwNSwgICAgNzgsICAgMTIyLCAgICAtMSwgICAxMDcsICAg
IDcxLAotICAgICAgLTEsICAgMTQyLCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5OSwgICAgLTEs
ICAgIDUyLCAgIDEwOCwgICAgLTEsCi0gICAgICA1MywgICAxMDgsICAgIC0xLCAgIDEwOSwgICAx
MDgsICAgIC0xLCAgICA4NSwgICAgLTEsICAgIDgzLCAgICAtMSwKLSAgICAgIDgyLCAgICAtMSwg
ICAxMDgsICAgIC0xLCAgIDExMCwgICAgODYsICAgMTA4LCAgICAtMSwgICAxMTAsICAgIDg3LAot
ICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NSwgICAxMTAsICAgIC0x
LCAgIDExMSwgICAgODMsCi0gICAgIDExMCwgICAgLTEsICAgMTExLCAgICAtMSwgICAxMTIsICAg
IC0xLCAgIDExMywgICAgODksICAgMTEyLCAgICAtMSwKLSAgICAgMTEzLCAgICA5MCwgICAxMTIs
ICAgIC0xLCAgIDExMywgICAgNTQsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU1LAotICAgICAx
MTIsICAgIC0xLCAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NiwgICAxMTMsICAgIC0xLCAgIDEx
NCwgICAgNTcsCi0gICAgIDExMywgICAgLTEsICAgMTE0LCAgICAtMSwgICAxMTUsICAgIC0xLCAg
IDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwKLSAgICAgMTE4LCAgICA1OCwgICAxMTcsICAgIC0x
LCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MCwgICAxMTgsICAgIC0xLAotICAgICAxMTksICAg
IC0xLCAgIDEyMCwgICAgNTksICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0xLCAgIDEyMCwgICAg
OTQsCi0gICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEwOCwg
ICAxMjMsICAgMTIyLCAgICAtMSwKLSAgICAgIDgwLCAgICAtMSwgICAgNjEsICAgIC0xLCAgICA2
MiwgICAgLTEsICAgIDYzLCAgICAtMSwgICAgNzAsICAgIC0xLAotICAgICAxMjIsICAgIC0xLCAg
IDEyNCwgICAgNzgsICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEyNywgICAgODEsCi0g
ICAgICAtMSwgICAxMzUsICAgIDgxLCAgICAtMSwgICAgIDcsICAgMTQwLCAgIDE0MSwgICAgODEs
ICAgIC0xLCAgIDEyOCwKLSAgICAgIDcyLCAgICAtMSwgICAxMzAsICAgIC0xLCAgIDEyOSwgICAg
LTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LAotICAgICAgNzgsICAgMTMyLCAgICAtMSwg
ICAxMzcsICAgIDQ1LCAgICA3MSwgICAgLTEsICAgMTM5LCAgICA5NiwgICAgLTEsCi0gICAgIDEz
OSwgICAgOTYsICAgIDczLCAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTMx
LCAgICAtMSwKLSAgICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTM4LCAgIDEzMywgICAxMzQsICAg
IC0xLCAgIDEzMywgICAxMzQsICAgIC0xLAotICAgICAgLTEsICAgIDMzLCAgICAtMSwgICAgMzQs
ICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsCi0gICAgICAtMSwgICAx
MzUsICAgIDc4LCAgICA5NiwgICAgLTEsICAgMTM1LCAgICA3OCwgICAgOTYsICAgIDczLCAgICA3
NCwKLSAgICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0LCAg
ICAtMSwgICAxMzUsICAgIDc4LAotICAgICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEsICAgMTM3
LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICAtMSwgICAxMzcsCi0gICAgICA5NiwgICAgNzMsICAg
IDc0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0LCAgICAtMSwKLSAg
ICAgMTM3LCAgICA5NiwgICAgODAsICAgMTUwLCAgICAtMSwgICAgIDMsICAgIDQ1LCAgICAtMSwg
ICAxMzksICAgIC0xLAotICAgICAxMzgsICAgMTM5LCAgICAtMSwgICAgIDksICAgIC0xLCAgICAg
OCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsCi0gICAgICAzNywgICAgLTEsICAgIDM2LCAg
ICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAgNCwKLSAgICAgIC0x
LCAgICAgNSwgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAgIDE0MiwgICAgNzMs
ICAgMTI1LAotICAgICAgNzQsICAgIC0xLCAgICAzOSwgICAgLTEsICAgIDExLCAgICAtMSwgICAg
MTIsICAgIC0xLCAgICAxMCwgICAgLTEsCi0gICAgICAyNywgICAgLTEsICAgIDI4LCAgICAtMSwg
ICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwKLSAgICAgIDIzLCAgICAt
MSwgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwgICAgMzAsICAgIC0x
LAotICAgICAgMzEsICAgIC0xLCAgICAzMiwgICAgLTEsICAgIDQxLCAgICAtMSwgICAgNDIsICAg
IC0xLCAgICA0MywgICAgLTEsCi0gICAgICA0NCwgICAgLTEsICAgMTQzLCAgICAtMSwgICAgNDYs
ICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDk2LCAgICA3NSwKLSAgICAgMTQ0LCAgIDE0NiwgICAg
NzYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc1LCAgIDE0NSwgICAxNDYsICAgIDc2LAotICAg
ICAgLTEsICAgMTQ3LCAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAxMzksICAgMTQ4LCAg
ICA4MSwgICAgLTEsCi0gICAgIDE0OSwgICAgLTEsICAgMTQ4LCAgICA3OCwgICAxNDksICAgIC0x
LCAgICA5NiwgICAgLTEsICAgIDk2LCAgICA3MywKLSAgICAgMTI1LCAgICA3NCwgICAgLTEsICAg
MTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUzLAotICAgICAgLTEs
ICAgMTUxLCAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTY3LCAgICAtMSwg
ICAxNzQsCi0gICAgICAtMSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3
NSwgICAxNTUsICAgMTYyLCAgIDE1NiwKLSAgICAgIDc2LCAgICAtMSwgICAxNjEsICAgIC0xLCAg
IDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLAotICAgICAgLTEsICAgMTYw
LCAgIDE1MywgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIDc1LCAgIDE2MiwgICAgNzYs
Ci0gICAgICAtMSwgICAxNTIsICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0xLCAgICA4MSwgICAg
LTEsICAgMTI0LCAgICA4MSwKLSAgICAgIC0xLCAgICAxOCwgICAgNzEsICAgMTI0LCAgICA3Miwg
ICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LAotICAgICAgLTEsICAgMTU4LCAgICAt
MSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEsCi0gICAg
ICAtMSwgICAgNDAsICAgIDcxLCAgIDE2OCwgICAxNjYsICAgIDcyLCAgIDE1NywgICAgLTEsICAg
IC0xLCAgICAxNSwKLSAgICAgMTY5LCAgIDE1OCwgICAgNDAsICAgIDcxLCAgIDEyNCwgICAgNzIs
ICAgIDgxLCAgICAtMSwgICAgLTEsICAgIDE3LAotICAgICAgNzEsICAgMTcwLCAgIDE3MSwgICAx
NzMsICAgIDcyLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEsCi0gICAgICAtMSwg
ICAxNjYsICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgxLCAgICAtMSwgICAxNzIsICAgIDgxLCAg
IDEyNCwKLSAgICAgIC0xLCAgICAxNCwgICAgODEsICAgIC0xLCAgICAxMywgICAgODEsICAgIC0x
LCAgICAyMCwgICAgODEsICAgIC0xLAotICAgICAgMjAsICAgMTI0LCAgICA4MSwgICAgLTEsICAg
IDE5LCAgICA4MSwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsCi0gICAgIDE3NiwgICAgLTEs
ICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAgMTc4LCAgIDE2MSwK
LSAgICAgIC0xCisgICAgIDE3NSwgICAgIDAsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDk3LCAg
ICAtMSwgICAgNDgsICAgIC0xLCAgICA0NywKKyAgICAgIC0xLCAgICA0OSwgICAgLTEsICAgIDcy
LCAgIDEyNCwgICAgNzMsICAgIC0xLCAgICA5OCwgICAgLTEsICAgIDk5LAorICAgICAgNzQsICAg
MTAwLCAgICA3NSwgICAgLTEsICAgMTAxLCAgICAtMSwgICAgOTksICAgIDc4LCAgICA1MCwgICAg
LTEsCisgICAgICA5OSwgICAgNTMsICAgIC0xLCAgICA5OSwgICAgNTQsICAgIC0xLCAgIDEyNCwg
ICAgLTEsICAgMTAyLCAgICAtMSwKKyAgICAgMTAzLCAgICAtMSwgICAgOTksICAgIDc4LCAgIDEw
MywgICAgLTEsICAgMTA1LCAgICA3MywgICAgLTEsICAgMTA0LAorICAgICAgNzMsICAgIC0xLCAg
IDEwNiwgICAgMzksICAgIC0xLCAgIDEwNiwgICAgLTEsICAgMTA2LCAgIDEyMiwgICAgLTEsCisg
ICAgIDEwNSwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMDcsICAgIDcyLCAgICAtMSwgICAxNDIs
ICAgIC0xLCAgICA0NSwKKyAgICAgIC0xLCAgICA1MCwgICAgLTEsICAgIDk5LCAgICAtMSwgICAg
NTMsICAgMTA4LCAgICAtMSwgICAgNTQsICAgMTA4LAorICAgICAgLTEsICAgMTA5LCAgIDEwOCwg
ICAgLTEsICAgIDg2LCAgICAtMSwgICAgODQsICAgIC0xLCAgICA4MywgICAgLTEsCisgICAgIDEw
OCwgICAgLTEsICAgMTEwLCAgICA4NywgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODgsICAgMTA4
LCAgICAtMSwKKyAgICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDg2LCAgIDExMCwgICAgLTEsICAg
MTExLCAgICA4NCwgICAxMTAsICAgIC0xLAorICAgICAxMTEsICAgIC0xLCAgIDExMiwgICAgLTEs
ICAgMTEzLCAgICA5MCwgICAxMTIsICAgIC0xLCAgIDExMywgICAgOTEsCisgICAgIDExMiwgICAg
LTEsICAgMTEzLCAgICA1NSwgICAxMTIsICAgIC0xLCAgIDExMywgICAgNTYsICAgMTEyLCAgICAt
MSwKKyAgICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU3LCAgIDExMywgICAgLTEsICAgMTE0LCAg
ICA1OCwgICAxMTMsICAgIC0xLAorICAgICAxMTQsICAgIC0xLCAgIDExNSwgICAgLTEsICAgMTE2
LCAgICAtMSwgICAxMTcsICAgIC0xLCAgIDExOCwgICAgNTksCisgICAgIDExNywgICAgLTEsICAg
MTE4LCAgICAtMSwgICAxMTksICAgIDYxLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICAtMSwKKyAg
ICAgMTIwLCAgICA2MCwgICAxMTksICAgIC0xLCAgIDEyMCwgICAgLTEsICAgMTIwLCAgICA5NSwg
ICAxMjQsICAgIDgwLAorICAgICAxMjIsICAgIC0xLCAgIDEyMSwgICAgLTEsICAgMTA4LCAgIDEy
MywgICAxMjIsICAgIC0xLCAgICA4MSwgICAgLTEsCisgICAgICA2MiwgICAgLTEsICAgIDYzLCAg
ICAtMSwgICAgNjQsICAgIC0xLCAgICA3MSwgICAgLTEsICAgMTIyLCAgICAtMSwKKyAgICAgMTI0
LCAgICA3OSwgICAxMjIsICAgIC0xLCAgIDEyMSwgICAgLTEsICAgMTI3LCAgICA4MiwgICAgLTEs
ICAgMTM1LAorICAgICAgODIsICAgIC0xLCAgICAgNywgICAxNDAsICAgMTQxLCAgICA4MiwgICAg
LTEsICAgMTI4LCAgICA3MywgICAgLTEsCisgICAgIDEzMCwgICAgLTEsICAgMTI5LCAgICAtMSwg
ICAxMzAsICAgMTMyLCAgICAtMSwgICAxMjksICAgIDc5LCAgIDEzMiwKKyAgICAgIC0xLCAgIDEz
NywgICAgNDUsICAgIDcyLCAgICAtMSwgICAxMzksICAgIDQ1LCAgICAtMSwgICAxMzksICAgIDQ1
LAorICAgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM4LCAgIDEzMywgICAxMzEsICAg
IC0xLCAgIDEzMywgICAxMzEsCisgICAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzNCwgICAgLTEs
ICAgMTMzLCAgIDEzNCwgICAgLTEsICAgIC0xLCAgICAzMywKKyAgICAgIC0xLCAgICAzNCwgICAg
LTEsICAgIDM1LCAgICAtMSwgICAxMzksICAgIC0xLCAgIDEzNiwgICAgLTEsICAgMTM1LAorICAg
ICAgNzksICAgIDQ1LCAgICAtMSwgICAxMzUsICAgIDc5LCAgICA0NSwgICAgNzQsICAgIDc1LCAg
ICAtMSwgICAxMzUsCisgICAgICA3OSwgICAgNDUsICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0x
LCAgIDEzNSwgICAgNzksICAgIDQ1LCAgICA4MSwKKyAgICAgMTUwLCAgICAtMSwgICAxMzcsICAg
IC0xLCAgIDEzNywgICAgNDUsICAgIC0xLCAgIDEzNywgICAgNDUsICAgIDc0LAorICAgICAgNzUs
ICAgIC0xLCAgIDEzNywgICAgNDUsICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLCAgIDEzNywg
ICAgNDUsCisgICAgICA4MSwgICAxNTAsICAgIC0xLCAgICAgMywgICAgNDUsICAgIC0xLCAgIDEz
OSwgICAgLTEsICAgMTM4LCAgIDEzOSwKKyAgICAgIC0xLCAgICAgOSwgICAgLTEsICAgICA4LCAg
ICAtMSwgICAgMzcsICAgIC0xLCAgICAgMywgICAgMzcsICAgIC0xLAorICAgICAgMzYsICAgIC0x
LCAgIDE0MSwgICAgLTEsICAgMTQwLCAgIDE0MSwgICAgLTEsICAgICA0LCAgICAtMSwgICAgIDUs
CisgICAgICAtMSwgICAgIDYsICAgIC0xLCAgIDE0MiwgICAgLTEsICAgMTQyLCAgICA3NCwgICAx
MjUsICAgIDc1LCAgICAtMSwKKyAgICAgIDM5LCAgICAtMSwgICAgMTEsICAgIC0xLCAgICAxMiwg
ICAgLTEsICAgIDEwLCAgICAtMSwgICAgMjcsICAgIC0xLAorICAgICAgMjgsICAgIC0xLCAgICAy
OSwgICAgLTEsICAgIDIxLCAgICAtMSwgICAgMjIsICAgIC0xLCAgICAyMywgICAgLTEsCisgICAg
ICAyNCwgICAgLTEsICAgIDI1LCAgICAtMSwgICAgMjYsICAgIC0xLCAgICAzMCwgICAgLTEsICAg
IDMxLCAgICAtMSwKKyAgICAgIDMyLCAgICAtMSwgICAgNDEsICAgIC0xLCAgICA0MiwgICAgLTEs
ICAgIDQzLCAgICAtMSwgICAgNDQsICAgIC0xLAorICAgICAxNDMsICAgIC0xLCAgICA0NiwgICAg
LTEsICAgIC0xLCAgICAzOCwgICAgNDUsICAgIDc2LCAgIDE0NCwgICAxNDYsCisgICAgICA3Nywg
ICAgLTEsICAgIC0xLCAgICAzOCwgICAgNzYsICAgMTQ1LCAgIDE0NiwgICAgNzcsICAgIC0xLCAg
IDE0NywKKyAgICAgIC0xLCAgIDE0NiwgICAxNDcsICAgIC0xLCAgIDEzOSwgICAxNDgsICAgIDgy
LCAgICAtMSwgICAxNDksICAgIC0xLAorICAgICAxNDgsICAgIDc5LCAgIDE0OSwgICAgLTEsICAg
IDQ1LCAgICAtMSwgICAgNDUsICAgIDc0LCAgIDEyNSwgICAgNzUsCisgICAgICAtMSwgICAxMjIs
ICAgIC0xLCAgIDEyNiwgICAgLTEsICAgMTU0LCAgICAtMSwgICAxNTMsICAgIC0xLCAgIDE1MSwK
KyAgICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTY0LCAgICAtMSwgICAxNjcsICAgIC0xLCAgIDE3
NCwgICAgLTEsICAgIDc2LAorICAgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAg
IDE1NSwgICAxNjIsICAgMTU2LCAgICA3NywgICAgLTEsCisgICAgIDE2MSwgICAgLTEsICAgMTUz
LCAgICAtMSwgICAgLTEsICAgMTU5LCAgIDE2MSwgICAgLTEsICAgIC0xLCAgIDE2MCwKKyAgICAg
MTUzLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAtMSwgICAgNzYsICAgMTYyLCAgICA3NywgICAg
LTEsICAgMTUyLAorICAgICAgLTEsICAgMTYyLCAgIDE1MiwgICAgLTEsICAgIDgyLCAgICAtMSwg
ICAxMjQsICAgIDgyLCAgICAtMSwgICAgMTgsCisgICAgICA3MiwgICAxMjQsICAgIDczLCAgIDE2
NSwgICAgLTEsICAgMTU4LCAgICAxNiwgICAxNTgsICAgIC0xLCAgIDE1OCwKKyAgICAgIC0xLCAg
IDEyNCwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgODEsICAgMTUwLCAgICAtMSwgICAgLTEsICAg
IDQwLAorICAgICAgNzIsICAgMTY4LCAgIDE2NiwgICAgNzMsICAgMTU3LCAgICAtMSwgICAgLTEs
ICAgIDE1LCAgIDE2OSwgICAxNTgsCisgICAgICA0MCwgICAgNzIsICAgMTI0LCAgICA3MywgICAg
ODIsICAgIC0xLCAgICAtMSwgICAgMTcsICAgIDcyLCAgIDE3MCwKKyAgICAgMTcxLCAgIDE3Mywg
ICAgNzMsICAgMTU3LCAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE1MSwgICAgLTEsICAgMTY2LAor
ICAgICAgLTEsICAgIC0xLCAgIDE3MiwgICAgODIsICAgIC0xLCAgIDE3MiwgICAgODIsICAgMTI0
LCAgICAtMSwgICAgMTQsCisgICAgICA4MiwgICAgLTEsICAgIDEzLCAgICA4MiwgICAgLTEsICAg
IDIwLCAgICA4MiwgICAgLTEsICAgIDIwLCAgIDEyNCwKKyAgICAgIDgyLCAgICAtMSwgICAgMTks
ICAgIDgyLCAgICAtMSwgICAxNzYsICAgIC0xLCAgIDE3NSwgICAxNzYsICAgIC0xLAorICAgICAx
NzcsICAgIC0xLCAgIDEyNiwgICAgLTEsICAgIC0xLCAgIDEyNywgICAxNzgsICAgMTYxLCAgICAt
MQogfTsKIAogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVy
IFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5l
W10gPQogewotICAgICAgIDAsICAgMTc2LCAgIDE3NiwgICAxNzcsICAgMTgwLCAgIDIyMywgICAy
MjYsICAgMjM5LCAgIDI0NCwgICAyNDksCi0gICAgIDI1NSwgICAyNTgsICAgMzMzLCAgIDMzNiwg
ICA0MzEsICAgNDQxLCAgIDQ1NCwgICA0NjIsICAgNTYyLCAgIDU2NSwKLSAgICAgNTczLCAgIDU3
NiwgICA1ODIsICAgNTg2LCAgIDU5MywgICA1OTksICAgNjA4LCAgIDYxNiwgICA2NzEsICAgNjgx
LAotICAgICA2ODQsICAgNjk0LCAgIDcwNCwgICA3MjUsICAgNzI2LCAgIDcyNywgICA3MzIsICAg
NzMzLCAgIDc0MSwgICA3NTIsCi0gICAgIDc1MywgICA3NjEsICAgNzcyLCAgIDc3NiwgICA3Nzcs
ICAgNzg3LCAgIDc5NywgICA4MDcsICAgODIwLCAgIDgyMSwKLSAgICAgODMxLCAgIDg0NCwgICA4
NDgsICAgODUyLCAgIDg1NiwgICA4NTcsICAgODcwLCAgIDg3MSwgICA4ODQsICAgODg1LAotICAg
ICA4OTgsICAgODk5LCAgIDkxNiwgICA5MTcsICAgOTMwLCAgIDkzMSwgICA5MzIsICAgOTMzLCAg
IDkzNCwgICA5MzgsCi0gICAgIDk0MSwgICA5NTIsICAgOTYwLCAgIDk4NywgICA5OTIsICAxMDA2
LCAgMTA0MywgIDEwNDYsICAxMDUzLCAgMTA2MSwKLSAgICAxMDgyLCAgMTEwMywgIDExMTMsICAx
MTQxLCAgMTE0NiwgIDExNTYsICAxMTYxLCAgMTE3MSwgIDExNzQsICAxMTc3LAotICAgIDExODAs
ICAxMTg2LCAgMTE5MywgIDExOTYsICAxMjE4LCAgMTIzNiwgIDEyNjAsICAxMjgzLCAgMTI4Nywg
IDEzMDUsCi0gICAgMTMxMywgIDEzNDUsICAxMzY1LCAgMTM4NiwgIDEzOTUsICAxNDE4LCAgMTQy
MSwgIDE0MjcsICAxNDM1LCAgMTQ0MywKLSAgICAxNDUxLCAgMTQ2MSwgIDE0NjgsICAxNDcxLCAg
MTQ3NCwgIDE0ODAsICAxNDgzLCAgMTQ5OCwgIDE1MDIsICAxNTA2LAotICAgIDE1MTAsICAxNTE0
LCAgMTUxOSwgIDE1MjQsICAxNTI5LCAgMTUzNCwgIDE1MzksICAxNTQ0LCAgMTU0OSwgIDE1NTQs
Ci0gICAgMTU1OSwgIDE1NjQsICAxNTY5LCAgMTU3NCwgIDE1NzgsICAxNTgyLCAgMTU5MCwgIDE1
OTgsICAxNjAyLCAgMTYxNSwKLSAgICAxNjE1LCAgMTYyOSwgIDE2MjksICAxNjM4LCAgMTY0MSwg
IDE2NTcsICAxNjkwLCAgMTY5NCwgIDE3MDAsICAxNzA3LAotICAgIDE3MjIsICAxNzI2LCAgMTcz
MCwgIDE3MzEsICAxNzM3LCAgMTczOCwgIDE3MzksICAxNzQwLCAgMTc0MSwgIDE3NDUsCi0gICAg
MTc0NiwgIDE3NDYsICAxNzQ2LCAgMTc1NiwgIDE3NTcsICAxNzYxLCAgMTc2MSwgIDE3NjIsICAx
NzYyLCAgMTc2NywKLSAgICAxNzcwLCAgMTc4MCwgIDE3ODMsICAxNzg5LCAgMTc5MCwgIDE3OTQs
ICAxODAyLCAgMTgwNiwgIDE4MTYsICAxODIxLAotICAgIDE4MzgsICAxODM4LCAgMTg0MywgIDE4
NDMsICAxODUwLCAgMTg1MCwgIDE4NTgsICAxODYxLCAgMTg2NywgIDE4NzAsCi0gICAgMTg3Niwg
IDE4ODAsICAxODg3LCAgMTg5NCwgIDE5MDEsICAxOTA4LCAgMTkxOSwgIDE5MjgsICAxOTMyLCAg
MTkzOSwKLSAgICAxOTQyLCAgMTk0OCwgIDE5NDgKKyAgICAgICAwLCAgIDE2OCwgICAxNjgsICAg
MjAzLCAgIDIwNiwgICAyMTksICAgMjI0LCAgIDIyOSwgICAyMzUsICAgMjM4LAorICAgICAzMTcs
ICAgMzIwLCAgIDQyMSwgICA0MzEsICAgNDQ0LCAgIDQ1MiwgICA1NTIsICAgNTU1LCAgIDU2Mywg
ICA1NjcsCisgICAgIDU3NCwgICA1NzgsICAgNTg1LCAgIDU5MSwgICA2MDAsICAgNjA4LCAgIDY2
MywgICA2NzAsICAgNjgwLCAgIDY4MywKKyAgICAgNjkzLCAgIDcwMywgICA3MjQsICAgNzI1LCAg
IDcyNiwgICA3MzEsICAgNzMyLCAgIDc0MSwgICA3NTMsICAgNzU0LAorICAgICA3NjIsICAgNzcz
LCAgIDc3NywgICA3NzgsICAgNzg4LCAgIDc5OCwgICA4MDgsICAgODIxLCAgIDgyMiwgICA4MzIs
CisgICAgIDg0NSwgICA4NDksICAgODUzLCAgIDg1NywgICA4NTgsICAgODcxLCAgIDg3MiwgICA4
ODUsICAgODg2LCAgIDg5OSwKKyAgICAgOTAwLCAgIDkxNywgICA5MTgsICAgOTMxLCAgIDkzMiwg
ICA5MzMsICAgOTM0LCAgIDkzNSwgICA5MzksICAgOTQyLAorICAgICA5NTMsICAgOTYxLCAgIDk4
OCwgICA5OTMsICAxMDA3LCAgMTA0NSwgIDEwNDgsICAxMDU1LCAgMTA2MywgIDEwODQsCisgICAg
MTEwNSwgIDExMTYsICAxMTQ1LCAgMTE1MCwgIDExNjAsICAxMTY1LCAgMTE3NSwgIDExNzgsICAx
MTgxLCAgMTE4NCwKKyAgICAxMTkwLCAgMTE5NywgIDEyMDAsICAxMjIyLCAgMTI0MCwgIDEyNjQs
ICAxMjg3LCAgMTI5MSwgIDEzMDksICAxMzE3LAorICAgIDEzNDksICAxMzY5LCAgMTQ1OCwgIDE0
NjcsICAxNDkwLCAgMTQ5MywgIDE0OTksICAxNTA3LCAgMTUxNSwgIDE1MjMsCisgICAgMTUzMywg
IDE1NDAsICAxNTQzLCAgMTU0NiwgIDE1NTIsICAxNTU1LCAgMTU3MCwgIDE1NzQsICAxNTc4LCAg
MTU4MiwKKyAgICAxNTkxLCAgMTU5NiwgIDE2MDEsICAxNjA2LCAgMTYxMSwgIDE2MTYsICAxNjIx
LCAgMTYyNiwgIDE2MzEsICAxNjM2LAorICAgIDE2NDIsICAxNjQ4LCAgMTY1NCwgIDE2NTksICAx
NjY0LCAgMTY3MywgIDE2ODIsICAxNjg3LCAgMTcwMCwgIDE3MDAsCisgICAgMTcxNCwgIDE3MTQs
ICAxNzIzLCAgMTcyNiwgIDE3NDEsICAxNzc3LCAgMTc4MSwgIDE3ODcsICAxNzk1LCAgMTgxMSwK
KyAgICAxODE1LCAgMTgxOSwgIDE4MjAsICAxODI2LCAgMTgyNywgIDE4MjgsICAxODI5LCAgMTgz
MCwgIDE4MzQsICAxODM1LAorICAgIDE4MzUsICAxODM1LCAgMTg0NSwgIDE4NDYsICAxODUwLCAg
MTg1MCwgIDE4NTEsICAxODUxLCAgMTg1NiwgIDE4NTksCisgICAgMTg2OSwgIDE4NzIsICAxODc4
LCAgMTg3OSwgIDE4ODMsICAxODkxLCAgMTg5NSwgIDE5MDUsICAxOTEwLCAgMTkyNywKKyAgICAx
OTI3LCAgMTkzMiwgIDE5MzIsICAxOTM5LCAgMTkzOSwgIDE5NDcsICAxOTUwLCAgMTk1NiwgIDE5
NTksICAxOTY1LAorICAgIDE5NjksICAxOTc2LCAgMTk4MywgIDE5OTAsICAxOTk3LCAgMjAwOCwg
IDIwMTcsICAyMDIxLCAgMjAyOCwgIDIwMzEsCisgICAgMjAzNywgIDIwMzcKIH07CiAjZW5kaWYK
IApAQCAtODA3LDE1ICs3ODgsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVb
XSA9CiAgICJNQVRSSVgzIiwgIk1BVFJJWDQiLCAiSU5fUVVBTCIsICJPVVRfUVVBTCIsICJJTk9V
VF9RVUFMIiwgIlVOSUZPUk0iLAogICAiVkFSWUlORyIsICJTVFJVQ1QiLCAiVk9JRF9UWVBFIiwg
IldISUxFIiwgIlNBTVBMRVIyRCIsICJTQU1QTEVSQ1VCRSIsCiAgICJTQU1QTEVSX0VYVEVSTkFM
X09FUyIsICJTQU1QTEVSMkRSRUNUIiwgIklERU5USUZJRVIiLCAiVFlQRV9OQU1FIiwKLSAgIkZM
T0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkxFRlRfT1AiLCAi
UklHSFRfT1AiLAotICAiSU5DX09QIiwgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9PUCIsICJFUV9P
UCIsICJORV9PUCIsICJBTkRfT1AiLAotICAiT1JfT1AiLCAiWE9SX09QIiwgIk1VTF9BU1NJR04i
LCAiRElWX0FTU0lHTiIsICJBRERfQVNTSUdOIiwKLSAgIk1PRF9BU1NJR04iLCAiTEVGVF9BU1NJ
R04iLCAiUklHSFRfQVNTSUdOIiwgIkFORF9BU1NJR04iLCAiWE9SX0FTU0lHTiIsCi0gICJPUl9B
U1NJR04iLCAiU1VCX0FTU0lHTiIsICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwgIkxFRlRf
QlJBQ0tFVCIsCi0gICJSSUdIVF9CUkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRfQlJBQ0Ui
LCAiRE9UIiwgIkNPTU1BIiwgIkNPTE9OIiwKLSAgIkVRVUFMIiwgIlNFTUlDT0xPTiIsICJCQU5H
IiwgIkRBU0giLCAiVElMREUiLCAiUExVUyIsICJTVEFSIiwgIlNMQVNIIiwKLSAgIlBFUkNFTlQi
LCAiTEVGVF9BTkdMRSIsICJSSUdIVF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLCAiQ0FSRVQiLAot
ICAiQU1QRVJTQU5EIiwgIlFVRVNUSU9OIiwgIiRhY2NlcHQiLCAiaWRlbnRpZmllciIsICJ2YXJp
YWJsZV9pZGVudGlmaWVyIiwKKyAgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9P
TENPTlNUQU5UIiwgIkZJRUxEX1NFTEVDVElPTiIsCisgICJMRUZUX09QIiwgIlJJR0hUX09QIiwg
IklOQ19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLAorICAiTkVfT1Ai
LCAiQU5EX09QIiwgIk9SX09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04i
LAorICAiQUREX0FTU0lHTiIsICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FT
U0lHTiIsICJBTkRfQVNTSUdOIiwKKyAgIlhPUl9BU1NJR04iLCAiT1JfQVNTSUdOIiwgIlNVQl9B
U1NJR04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9QQVJFTiIsCisgICJMRUZUX0JSQUNLRVQiLCAi
UklHSFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIsCisgICJD
T01NQSIsICJDT0xPTiIsICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJ
TERFIiwgIlBMVVMiLAorICAiU1RBUiIsICJTTEFTSCIsICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUi
LCAiUklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFSIiwKKyAgIkNBUkVUIiwgIkFNUEVSU0FORCIs
ICJRVUVTVElPTiIsICIkYWNjZXB0IiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAogICAicHJpbWFy
eV9leHByZXNzaW9uIiwgInBvc3RmaXhfZXhwcmVzc2lvbiIsICJpbnRlZ2VyX2V4cHJlc3Npb24i
LAogICAiZnVuY3Rpb25fY2FsbCIsICJmdW5jdGlvbl9jYWxsX29yX21ldGhvZCIsICJmdW5jdGlv
bl9jYWxsX2dlbmVyaWMiLAogICAiZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1ldGVycyIs
CkBAIC04NjEsNjAgKzg0Miw2MCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251
bVtdID0KICAgICAgMzE1LCAgIDMxNiwgICAzMTcsICAgMzE4LCAgIDMxOSwgICAzMjAsICAgMzIx
LCAgIDMyMiwgICAzMjMsICAgMzI0LAogICAgICAzMjUsICAgMzI2LCAgIDMyNywgICAzMjgsICAg
MzI5LCAgIDMzMCwgICAzMzEsICAgMzMyLCAgIDMzMywgICAzMzQsCiAgICAgIDMzNSwgICAzMzYs
ICAgMzM3LCAgIDMzOCwgICAzMzksICAgMzQwLCAgIDM0MSwgICAzNDIsICAgMzQzLCAgIDM0NCwK
LSAgICAgMzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4LCAgIDM0OQorICAgICAzNDUsICAgMzQ2LCAg
IDM0NywgICAzNDgsICAgMzQ5LCAgIDM1MAogfTsKICMgZW5kaWYKIAogLyogWVlSMVtZWU5dIC0t
IFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICovCiBzdGF0
aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiB7Ci0gICAgICAgMCwgICAgOTUsICAgIDk2
LCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwKLSAgICAg
IDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAgOTksICAgMTAwLCAgIDEwMSwgICAx
MDIsICAgMTAyLAotICAgICAxMDMsICAgMTAzLCAgIDEwNCwgICAxMDQsICAgMTA1LCAgIDEwNSwg
ICAxMDYsICAgMTA3LCAgIDEwNywgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEw
OSwgICAxMDksICAgMTA5LCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMSwKLSAgICAgMTExLCAg
IDExMSwgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTQsICAg
MTE0LAotICAgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOCwgICAxMTks
ICAgMTE5LCAgIDEyMCwgICAxMjAsCi0gICAgIDEyMSwgICAxMjEsICAgMTIyLCAgIDEyMiwgICAx
MjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyNCwKLSAgICAgMTI0LCAgIDEyNSwg
ICAxMjYsICAgMTI2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOCwgICAxMjksICAgMTI5LAot
ICAgICAxMzAsICAgMTMxLCAgIDEzMSwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMz
LCAgIDEzMywgICAxMzMsCi0gICAgIDEzMywgICAxMzQsICAgMTM1LCAgIDEzNSwgICAxMzUsICAg
MTM1LCAgIDEzNSwgICAxMzYsICAgMTM2LCAgIDEzNiwKLSAgICAgMTM2LCAgIDEzNiwgICAxMzYs
ICAgMTM3LCAgIDEzNywgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LAotICAgICAx
MzksICAgMTM5LCAgIDE0MCwgICAxNDAsICAgMTQwLCAgIDE0MSwgICAxNDEsICAgMTQyLCAgIDE0
MiwgICAxNDIsCisgICAgICAgMCwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTgsICAgIDk4LCAg
ICA5OCwgICAgOTgsICAgIDk5LCAgICA5OSwKKyAgICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5
LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMiwgICAxMDMsICAgMTAzLAorICAgICAxMDQsICAg
MTA0LCAgIDEwNSwgICAxMDUsICAgMTA2LCAgIDEwNywgICAxMDcsICAgMTA3LCAgIDEwOCwgICAx
MDgsCisgICAgIDEwOCwgICAxMDgsICAgMTA5LCAgIDEwOSwgICAxMDksICAgMTEwLCAgIDExMCwg
ICAxMTAsICAgMTExLCAgIDExMSwKKyAgICAgMTExLCAgIDExMiwgICAxMTMsICAgMTEzLCAgIDEx
MywgICAxMTMsICAgMTEzLCAgIDExNCwgICAxMTQsICAgMTE0LAorICAgICAxMTUsICAgMTE2LCAg
IDExNywgICAxMTgsICAgMTE4LCAgIDExOSwgICAxMTksICAgMTIwLCAgIDEyMCwgICAxMjEsCisg
ICAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMs
ICAgMTI0LCAgIDEyNCwKKyAgICAgMTI1LCAgIDEyNiwgICAxMjYsICAgMTI2LCAgIDEyNywgICAx
MjgsICAgMTI4LCAgIDEyOSwgICAxMjksICAgMTMwLAorICAgICAxMzEsICAgMTMxLCAgIDEzMiwg
ICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMsICAgMTMzLCAgIDEzMywgICAxMzMsCisgICAgIDEz
NCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNiwgICAxMzYsICAgMTM2
LCAgIDEzNiwKKyAgICAgMTM2LCAgIDEzNiwgICAxMzcsICAgMTM3LCAgIDEzOCwgICAxMzgsICAg
MTM4LCAgIDEzOCwgICAxMzgsICAgMTM5LAorICAgICAxMzksICAgMTQwLCAgIDE0MCwgICAxNDAs
ICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsCiAgICAgIDE0MiwgICAx
NDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0
MiwKLSAgICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAg
IDE0MiwgICAxNDIsICAgMTQ0LAotICAgICAxNDMsICAgMTQ1LCAgIDE0MywgICAxNDYsICAgMTQ2
LCAgIDE0NywgICAxNDgsICAgMTQ4LCAgIDE0OSwgICAxNDksCi0gICAgIDE1MCwgICAxNTEsICAg
MTUyLCAgIDE1MiwgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1NCwKLSAg
ICAgMTU1LCAgIDE1NiwgICAxNTQsICAgMTU3LCAgIDE1NywgICAxNTksICAgMTU4LCAgIDE2MCwg
ICAxNTgsICAgMTYxLAotICAgICAxNjEsICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2
NCwgICAxNjUsICAgMTY1LCAgIDE2NiwgICAxNjYsCi0gICAgIDE2OCwgICAxNjcsICAgMTY5LCAg
IDE2NywgICAxNzAsICAgMTY3LCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwKLSAgICAgMTcz
LCAgIDE3MywgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwgICAxNzUs
ICAgMTc2LAotICAgICAxNzYsICAgMTc4LCAgIDE3NworICAgICAxNDIsICAgMTQyLCAgIDE0Miwg
ICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0NCwgICAxNDMsCisgICAgIDE0
NSwgICAxNDMsICAgMTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5
LCAgIDE1MCwKKyAgICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAg
MTUzLCAgIDE1MywgICAxNTQsICAgMTU1LAorICAgICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcs
ICAgMTU5LCAgIDE1OCwgICAxNjAsICAgMTU4LCAgIDE2MSwgICAxNjEsCisgICAgIDE2MiwgICAx
NjIsICAgMTYzLCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LCAgIDE2
OCwKKyAgICAgMTY3LCAgIDE2OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAg
IDE3MiwgICAxNzIsICAgMTczLAorICAgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0
LCAgIDE3NCwgICAxNzUsICAgMTc1LCAgIDE3NiwgICAxNzYsCisgICAgIDE3OCwgICAxNzcKIH07
CiAKIC8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFu
ZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltd
ID0KIHsKLSAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAzLAotICAgICAgIDEsICAgICA0LCAgICAgMSwgICAgIDMsICAg
ICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsCi0gICAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwK
LSAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MywgICAgIDMsICAgICAxLAotICAgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAg
ICAgMywgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsCi0gICAgICAgMywgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywKLSAgICAg
ICAxLCAgICAgNSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLAotICAgICAgIDMsICAgICAxLCAgICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwg
ICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMsCi0gICAgICAgMywgICAgIDIsICAgICA1LCAgICAg
MywgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDAsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAzLCAgICAgNSwgICAgIDYsICAgICA1LCAgICAgMSwgICAgIDIsICAg
ICA0LAotICAgICAgIDUsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMiwgICAgIDEsCi0gICAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAwLCAgICAgMiwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LAor
ICAgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAz
LCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDIsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAg
IDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAxLCAgICAg
MywgICAgIDMsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAg
ICAgMywgICAgIDEsICAgICAzLCAgICAgMSwKKyAgICAgICA1LCAgICAgMSwgICAgIDMsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLAorICAgICAgIDEsICAg
ICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAgMywgICAg
IDMsCisgICAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMCwg
ICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDMsICAgICA1LCAgICAg
NiwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDQsICAgICA1LAorICAgICAgIDQsICAgICAyLCAg
ICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsCisg
ICAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICA0LCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsCi0gICAgICAg
NiwgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAx
LCAgICAgNCwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAyLAotICAgICAgIDAsICAgICAwLCAgICAgNSwgICAgIDEs
ICAgICAxLCAgICAgMCwgICAgIDIsICAgICAwLCAgICAgMiwgICAgIDIsCi0gICAgICAgMywgICAg
IDEsICAgICAyLCAgICAgMSwgICAgIDIsICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAg
NCwKLSAgICAgICAwLCAgICAgNiwgICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAwLAotICAgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEsCi0gICAgICAgMSwgICAgIDAsICAg
ICAzCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAwLCAgICAgNiwKKyAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAg
MywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsICAgICAxLAorICAgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAsCisg
ICAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIs
ICAgICAyLCAgICAgMywKKyAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAg
IDMsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAwLAorICAgICAgIDYsICAgICAwLCAgICAgOCwg
ICAgIDAsICAgICA3LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDIsCisgICAgICAg
MywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAx
LCAgICAgMSwKKyAgICAgICAwLCAgICAgMwogfTsKIAogLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0g
LS0gRGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCkBAIC05MjIsNDE2ICs5MDMs
NDAwIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KICAgIG1lYW5zIHRoZSBk
ZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZh
Y3RbXSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAgMTEyLCAgIDExMywgICAxMTQsICAgICAwLCAg
IDEwNiwgICAxMDUsICAgMTIwLCAgIDExOCwKLSAgICAgMTE5LCAgIDEyNCwgICAxMjUsICAgMTI2
LCAgIDEyNywgICAxMjgsICAgMTI5LCAgIDEyMSwgICAxMjIsICAgMTIzLAotICAgICAxMzAsICAg
MTMxLCAgIDEzMiwgICAxMDksICAgMTA3LCAgICAgMCwgICAxMTcsICAgMTMzLCAgIDEzNCwgICAx
MzUsCi0gICAgIDEzNiwgICAxMzgsICAgMjAwLCAgIDIwMSwgICAgIDAsICAgIDc3LCAgICA4Nywg
ICAgIDAsICAgIDkyLCAgICA5NywKLSAgICAgICAwLCAgIDEwMywgICAgIDAsICAgMTEwLCAgIDEx
NSwgICAxMzcsICAgICAwLCAgIDE5NywgICAxOTksICAgMTA4LAotICAgICAxMDIsICAgICAwLCAg
ICAgMiwgICAgIDMsICAgMTQxLCAgICAgMCwgICAgNzIsICAgICAwLCAgICA3NSwgICAgODcsCi0g
ICAgICAgMCwgICAgODgsICAgIDg5LCAgICA5MCwgICAgNzgsICAgICAwLCAgICA4NywgICAgIDAs
ICAgIDczLCAgICAgMiwKLSAgICAgIDk4LCAgIDEwNCwgICAxMTEsICAgICAwLCAgICAgMSwgICAx
OTgsICAgICAwLCAgICAgMCwgICAxMzksICAgICAwLAotICAgICAyMDIsICAgIDc5LCAgICA4NCwg
ICAgODYsICAgIDkxLCAgICAgMCwgICAgOTMsICAgIDgwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
NCwgICAgIDcsICAgICA2LCAgICAgOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzUsICAgIDM0
LCAgICAzMywKLSAgICAgICA1LCAgICAxMCwgICAgMjksICAgIDEyLCAgICAxNywgICAgMTgsICAg
ICAwLCAgICAgMCwgICAgMjMsICAgICAwLAotICAgICAgMzYsICAgICAwLCAgICAzOSwgICAgNDIs
ICAgIDQzLCAgICA0OCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsCi0gICAgICA1NiwgICAg
NTgsICAgIDYwLCAgICA3MSwgICAgIDAsICAgIDI3LCAgICA3NCwgICAgIDAsICAgICAwLCAgIDE0
MywKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTgyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTYwLAotICAgICAxNjksICAgMTczLCAgICAzNiwgICAgNjIsICAgIDY5
LCAgICAgMCwgICAxNTEsICAgICAwLCAgIDExNSwgICAxNTQsCi0gICAgIDE3MSwgICAxNTMsICAg
MTUyLCAgICAgMCwgICAxNTUsICAgMTU2LCAgIDE1NywgICAxNTgsICAgIDgxLCAgICA4MywKLSAg
ICAgIDg1LCAgICAgMCwgICAgIDAsICAgIDk5LCAgICAgMCwgICAxNTAsICAgMTAxLCAgICAzMCwg
ICAgMzEsICAgICAwLAotICAgICAgMTQsICAgIDE1LCAgICAgMCwgICAgIDAsICAgIDIxLCAgICAy
MCwgICAgIDAsICAgIDIyLCAgICAyNCwgICAgMjYsCi0gICAgICAzMiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTYsICAgMTQ4LCAgICAgMCwgICAxNDYs
ICAgMTQyLAotICAgICAxNDQsICAgICAwLCAgIDE5MywgICAxOTIsICAgMTY3LCAgIDE4NCwgICAg
IDAsICAgMTk2LCAgIDE5NCwgICAgIDAsCi0gICAgIDE4MCwgICAxNTksICAgICAwLCAgICA2NSwg
ICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjQsICAgICAwLCAgICAgMCwKLSAgICAgMTc0LCAgIDE3
MCwgICAxNzIsICAgICAwLCAgICA5NCwgICAgIDAsICAgIDk2LCAgIDEwMCwgICAgIDksICAgICAw
LAotICAgICAgMTYsICAgICAyLCAgICAgMywgICAgMTMsICAgIDE5LCAgICAyNSwgICAgMzcsICAg
IDM4LCAgICA0MSwgICAgNDAsCi0gICAgICA0NiwgICAgNDcsICAgIDQ0LCAgICA0NSwgICAgNDks
ICAgIDUwLCAgICA1NSwgICAgNTcsICAgIDU5LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAx
NDUsICAgMTQwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk1LAotICAg
ICAgIDAsICAgMTYxLCAgICA2MywgICAgNzAsICAgICAwLCAgICA5NSwgICAgMTEsICAgICAwLCAg
ICAgMCwgICAxNDcsCi0gICAgICAgMCwgICAxNjYsICAgMTY4LCAgIDE4NywgICAxODYsICAgMTg5
LCAgIDE2NywgICAxNzgsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICA4MiwgICAgNjEsICAg
MTQ5LCAgICAgMCwgICAxODgsICAgICAwLCAgICAgMCwgICAxNzcsICAgMTc1LAotICAgICAgIDAs
ICAgICAwLCAgIDE2MiwgICAgIDAsICAgMTkwLCAgICAgMCwgICAxNjcsICAgICAwLCAgIDE2NCwg
ICAxODEsCi0gICAgIDE2MywgICAgIDAsICAgMTkxLCAgIDE4NSwgICAxNzYsICAgMTc5LCAgIDE4
MworICAgICAgIDAsICAgICAwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgICAgMCwgICAxMDUsICAg
MTA0LCAgIDExOSwgICAxMTcsCisgICAgIDExOCwgICAxMjMsICAgMTI0LCAgIDEyNSwgICAxMjYs
ICAgMTI3LCAgIDEyOCwgICAxMjAsICAgMTIxLCAgIDEyMiwKKyAgICAgMTI5LCAgIDEzMCwgICAx
MzEsICAgMTA4LCAgIDEwNiwgICAgIDAsICAgMTE2LCAgIDEzMiwgICAxMzMsICAgMTM0LAorICAg
ICAxMzUsICAgMTM3LCAgIDE5OSwgICAyMDAsICAgICAwLCAgICA3NiwgICAgODYsICAgICAwLCAg
ICA5MSwgICAgOTYsCisgICAgICAgMCwgICAxMDIsICAgICAwLCAgIDEwOSwgICAxMTQsICAgMTM2
LCAgICAgMCwgICAxOTYsICAgMTk4LCAgIDEwNywKKyAgICAgMTAxLCAgICAgMCwgICAgIDAsICAg
MTQwLCAgICA3MSwgICAgIDAsICAgIDc0LCAgICA4NiwgICAgIDAsICAgIDg3LAorICAgICAgODgs
ICAgIDg5LCAgICA3NywgICAgIDAsICAgIDg2LCAgICAgMCwgICAgNzIsICAgIDk3LCAgIDEwMywg
ICAxMTAsCisgICAgICAgMCwgICAgIDEsICAgMTk3LCAgICAgMCwgICAxMzgsICAgICAwLCAgICAg
MCwgICAyMDEsICAgIDc4LCAgICA4MywKKyAgICAgIDg1LCAgICA5MCwgICAgIDAsICAgIDkyLCAg
ICA3OSwgICAgIDAsICAgICAwLCAgICAgMiwgICAgIDUsICAgICA0LAorICAgICAgIDYsICAgIDI3
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzNCwgICAgMzMsICAgIDMyLCAgICAgMywgICAgIDgs
CisgICAgICAyOCwgICAgMTAsICAgIDE1LCAgICAxNiwgICAgIDAsICAgICAwLCAgICAyMSwgICAg
IDAsICAgIDM1LCAgICAgMCwKKyAgICAgIDM4LCAgICA0MSwgICAgNDIsICAgIDQ3LCAgICA1MCwg
ICAgNTEsICAgIDUyLCAgICA1MywgICAgNTUsICAgIDU3LAorICAgICAgNTksICAgIDcwLCAgICAg
MCwgICAgMjUsICAgIDczLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MiwgICAgIDAsCisgICAg
ICAgMCwgICAxODEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTksICAg
MTY4LCAgIDE3MiwKKyAgICAgIDM1LCAgICA2MSwgICAgNjgsICAgICAwLCAgIDE1MCwgICAgIDAs
ICAgMTE0LCAgIDE1MywgICAxNzAsICAgMTUyLAorICAgICAxNTEsICAgICAwLCAgIDE1NCwgICAx
NTUsICAgMTU2LCAgIDE1NywgICAgODAsICAgIDgyLCAgICA4NCwgICAgIDAsCisgICAgICAgMCwg
ICAgOTgsICAgICAwLCAgIDE0OSwgICAxMDAsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDEyLCAg
ICAxMywKKyAgICAgICAwLCAgICAgMCwgICAgMTksICAgIDE4LCAgICAgMCwgICAgMjAsICAgIDIy
LCAgICAyNCwgICAgMzEsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDExNSwgICAgIDAsICAgMTQ3LCAgICAgMCwgICAxNDUsICAgMTQxLCAgIDE0MywK
KyAgICAgMTkyLCAgIDE5MSwgICAxNjYsICAgMTgzLCAgICAgMCwgICAxOTUsICAgMTkzLCAgICAg
MCwgICAxNzksICAgMTU4LAorICAgICAgIDAsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAg
ICA2MywgICAgIDAsICAgICAwLCAgIDE3MywgICAxNjksCisgICAgIDE3MSwgICAgIDAsICAgIDkz
LCAgICAgMCwgICAgOTUsICAgIDk5LCAgICAgNywgICAgIDAsICAgIDE0LCAgICAyNiwKKyAgICAg
IDExLCAgICAxNywgICAgMjMsICAgIDM2LCAgICAzNywgICAgNDAsICAgIDM5LCAgICA0NSwgICAg
NDYsICAgIDQzLAorICAgICAgNDQsICAgIDQ4LCAgICA0OSwgICAgNTQsICAgIDU2LCAgICA1OCwg
ICAgIDAsICAgMTM5LCAgICAgMCwgICAgIDAsCisgICAgIDE0NCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgIDE5NCwgICAgIDAsICAgMTYwLCAgICA2MiwKKyAgICAgIDY5LCAg
ICAgMCwgICAgOTQsICAgICA5LCAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMCwgICAxNjUsICAg
MTY3LAorICAgICAxODYsICAgMTg1LCAgIDE4OCwgICAxNjYsICAgMTc3LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA4MSwgICAgNjAsCisgICAgIDE0OCwgICAgIDAsICAgMTg3LCAgICAgMCwgICAg
IDAsICAgMTc2LCAgIDE3NCwgICAgIDAsICAgICAwLCAgIDE2MSwKKyAgICAgICAwLCAgIDE4OSwg
ICAgIDAsICAgMTY2LCAgICAgMCwgICAxNjMsICAgMTgwLCAgIDE2MiwgICAgIDAsICAgMTkwLAor
ICAgICAxODQsICAgMTc1LCAgIDE3OCwgICAxODIKIH07CiAKIC8qIFlZREVGR09UT1tOVEVSTS1O
VU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3RvW10gPQogewotICAg
ICAgLTEsICAgMTk2LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDIyOSwgICAxMDMsICAgMTA0LCAg
IDEwNSwgICAxMDYsCi0gICAgIDEwNywgICAxMDgsICAgMTA5LCAgIDE0MiwgICAxMTEsICAgMTEy
LCAgIDExMywgICAxMTQsICAgMTE1LCAgIDExNiwKLSAgICAgMTE3LCAgIDExOCwgICAxMTksICAg
MTIwLCAgIDEyMSwgICAxMjIsICAgMTQzLCAgIDE0NCwgICAyMTgsICAgMTQ1LAotICAgICAxMjQs
ICAgMTQ2LCAgIDE0NywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgODIsICAgIDY0LCAgICA2NSwg
ICAgODMsCi0gICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0
MywgICAxMjUsICAgIDQ1LCAgIDEzMCwKLSAgICAgIDc3LCAgIDEyOCwgICAxMjksICAgMTk3LCAg
IDE5OCwgICAxNjYsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLAotICAgICAyMTIsICAgMjgw
LCAgIDI5OSwgICAyNTQsICAgMjU1LCAgIDI1NiwgICAzMDAsICAgMTUzLCAgIDE1NCwgICAxNTUs
Ci0gICAgIDI4OSwgICAyNzksICAgMTU2LCAgIDI2MCwgICAyMDQsICAgMjU3LCAgIDI3NSwgICAy
ODYsICAgMjg3LCAgIDE1NywKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDU3CisgICAgICAt
MSwgICAgOTgsICAgIDk5LCAgIDEwMCwgICAyMjcsICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0
LCAgIDEwNSwKKyAgICAgMTA2LCAgIDEwNywgICAxNDAsICAgMTA5LCAgIDExMCwgICAxMTEsICAg
MTEyLCAgIDExMywgICAxMTQsICAgMTE1LAorICAgICAxMTYsICAgMTE3LCAgIDExOCwgICAxMTks
ICAgMTIwLCAgIDE0MSwgICAxNDIsICAgMjE2LCAgIDE0MywgICAxMjIsCisgICAgIDE0NCwgICAx
NDUsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDc5LCAgICA2MiwgICAgNjMsICAgIDgwLCAgICAz
NywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgMTIzLCAg
ICA0NSwgICAxMjUsICAgIDc1LAorICAgICAxMjcsICAgMTI4LCAgIDE5NiwgICAxOTcsICAgMTY0
LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAyMTAsCisgICAgIDI3NywgICAyOTYsICAg
MjUxLCAgIDI1MiwgICAyNTMsICAgMjk3LCAgIDE1MSwgICAxNTIsICAgMTUzLCAgIDI4NiwKKyAg
ICAgMjc2LCAgIDE1NCwgICAyNTcsICAgMjAyLCAgIDI1NCwgICAyNzIsICAgMjgzLCAgIDI4NCwg
ICAxNTUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA1NQogfTsKIAogLyogWVlQQUNUW1NU
QVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCiAg
ICBTVEFURS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMjYxCisjZGVmaW5lIFlZUEFD
VF9OSU5GIC0yNjYKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogewotICAg
IDEzMjcsICAgLTIwLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDExMywgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIC0yNjEsCi0gICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKLSAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwgICAtMTksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAotICAgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgICAtNjEsICAgLTQwLCAgIC0yOCwgICAgNzUsICAgIC03LCAgLTI2MSwg
ICAgMjQsCi0gICAgMTM3MCwgIC0yNjEsICAxNDQ0LCAgLTI2MSwgICAtMTEsICAtMjYxLCAgMTI4
MywgIC0yNjEsICAtMjYxLCAgLTI2MSwKLSAgICAtMjYxLCAgMTQ0NCwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgICAgIDYsICAtMjYxLCAgICA1NCwgIC0yNjEsICAgIDg4LAotICAgICAgNjIsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTM3MCwgICAgNTksICAgIDkxLCAgLTI2MSwgICAgMzYs
Ci0gICAgIC01MCwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICA2MywgIDEz
NzAsICAtMjYxLCAgIDI5MywKLSAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA5MSwg
IDEzNzAsICAgLTEyLCAgLTI2MSwgICA4NTYsICAxMDUxLAotICAgICAgNzcsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCi0gICAg
LTI2MSwgIC0yNjEsICAgLTE0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA4NCwgICAtNDQsICAx
MTE2LCAgICA5NSwKLSAgICAtMjYxLCAgMTA1MSwgICAgNTMsICAgICAzLCAgLTI2MSwgICAtMzYs
ICAgIDg5LCAgLTI2MSwgIC0yNjEsICAtMjYxLAotICAgICAxMDQsICAgMTA3LCAgIC00NSwgIC0y
NjEsICAgIDk2LCAgLTI2MSwgIC0yNjEsICAgIDkxLCAgMTE4NCwgIC0yNjEsCi0gICAgMTM3MCwg
ICAgOTIsICAgIDkzLCAgLTI2MSwgICAgOTgsICAgMTAxLCAgICA5NCwgICA5MjEsICAgMTA1LCAg
IDEwMiwKLSAgICAtMjYxLCAgLTI2MSwgICAgNzIsICAtMjYxLCAgLTI2MSwgICAgIDksICAtMjYx
LCAgIC02MSwgICAgNDIsICAtMjYxLAotICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAzNzYsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDEwNiwgIC0yNjEsCi0gICAgLTI2MSwgICA5ODYs
ICAxMDUxLCAgLTI2MSwgICAxMDMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC00MSwK
LSAgICAtMjYxLCAgLTI2MSwgIDEwNTEsICAxNDA3LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDEx
MCwgIC0yNjEsICAtMjYxLAotICAgIC0yNjEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAg
MTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsCi0gICAgMTA1MSwgIDEwNTEsICAxMDUx
LCAgMTA1MSwgIDEwNTEsICAtMjYxLCAgIDEwOSwgICAgMjMsICAtMjYxLCAgLTI2MSwKLSAgICAt
MjYxLCAgMTIyNywgIC0yNjEsICAtMjYxLCAgIDExMSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgIC0y
NjEsICAgIDI1LAotICAgIC0yNjEsICAtMjYxLCAgIDQ1OSwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgMTA1MSwgIDEwNTEsCi0gICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1
MSwgIC0yNjEsICAgMTE0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDExNSwKLSAgICAgMTEyLCAg
ICA3NywgICAxMTYsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgNTMsICAg
IDUzLAotICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTM2LCAgIC0zNiwgIC0yNjEs
ICAgMTA0LCAgIDEwNywgICAgNzYsCi0gICAgMTA1MSwgICAgOTEsICAtMjYxLCAgLTI2MSwgICAx
NDUsICAgIDU0LCAgIDYyNSwgICA3MDgsICAgIC02LCAgLTI2MSwKLSAgICAgNzkxLCAgIDQ1OSwg
IC0yNjEsICAtMjYxLCAgIDExNywgIC0yNjEsICAtMjYxLCAgMTA1MSwgICAxMjAsICAtMjYxLAot
ICAgICAxMjQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDc5MSwgICAxMTEsICAgMTEy
LCAgICA5MSwgICAxMjUsCi0gICAgIDEyMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAt
MjYxLCAgIDExOCwgICAxMjgsICAgMTgwLCAgLTI2MSwKLSAgICAgMTI2LCAgIDU0MiwgIC0yNjEs
ICAgIC01LCAgMTA1MSwgICA1NDIsICAgMTExLCAgMTA1MSwgIC0yNjEsICAtMjYxLAotICAgIC0y
NjEsICAgMTIzLCAgIDExMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEKKyAgICAxMjUzLCAg
IC0yMCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxNDgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LAorICAgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsCisgICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAgLTM5LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKKyAgICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgLTE4LCAgICAtMiwgICAgIDYsICAgIDIxLCAgIC02MSwgIC0yNjYsICAgIDUxLAor
ICAgIDEyOTYsICAtMjY2LCAgMTM3MCwgIC0yNjYsICAgIDI1LCAgLTI2NiwgIDEyMDksICAtMjY2
LCAgLTI2NiwgIC0yNjYsCisgICAgLTI2NiwgIDEzNzAsICAgIDQyLCAgLTI2NiwgIC0yNjYsICAg
IDUwLCAgLTI2NiwgICAgNzEsICAgIDk1LCAgLTI2NiwKKyAgICAtMjY2LCAgLTI2NiwgIC0yNjYs
ICAxMjk2LCAgIDEyMywgICAxMDUsICAtMjY2LCAgICAgOSwgIC0yNjYsICAtMjY2LAorICAgICA5
NzQsICAtMjY2LCAgLTI2NiwgICAgODEsICAtMjY2LCAgMTI5NiwgICAyOTAsICAtMjY2LCAgLTI2
NiwgIC0yNjYsCisgICAgLTI2NiwgICAxMjUsICAxMjk2LCAgIC0xMywgIC0yNjYsICAgNzc2LCAg
IDk3NCwgICAgOTksICAtMjY2LCAgLTI2NiwKKyAgICAtMjY2LCAgLTI2NiwgICA5NzQsICAgOTc0
LCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAorICAgICAgMzUsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAgMTAwLCAgICAtNiwgIDEwNDAsICAgMTA0LCAgLTI2NiwgICA5
NzQsCisgICAgICAzNiwgICAtNjQsICAtMjY2LCAgIC0yMSwgICAxMDIsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgMTEzLCAgIDExNywKKyAgICAgLTUxLCAgLTI2NiwgICAxMDgsICAtMjY2LCAgLTI2
NiwgIDEyOTYsICAgMTI5LCAgMTEwOSwgIC0yNjYsICAgIDk3LAorICAgICAxMDMsICAtMjY2LCAg
IDExMiwgICAxMTQsICAgMTA2LCAgIDg0MiwgICAxMTUsICAgMTE2LCAgLTI2NiwgIC0yNjYsCisg
ICAgICAzOSwgIC0yNjYsICAtMjY2LCAgIC00MywgIC0yNjYsICAgLTE4LCAgICA0NywgIC0yNjYs
ICAtMjY2LCAgLTI2NiwKKyAgICAtMjY2LCAgIDM3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAgMTE4LCAgLTI2NiwgIC0yNjYsICAgOTA4LAorICAgICA5NzQsICAtMjY2LCAgIDEyMCwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgIDE5LCAgLTI2NiwgIC0yNjYsCisgICAgIDk3
NCwgIDEzMzMsICAtMjY2LCAgLTI2NiwgICA5NzQsICAgMTE5LCAgLTI2NiwgIC0yNjYsICAtMjY2
LCAgIDk3NCwKKyAgICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAg
OTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LAorICAgICA5NzQsICAgOTc0LCAgIDk3NCwgIC0yNjYs
ICAxMTUyLCAgIDEyMiwgICAtMjksICAtMjY2LCAgLTI2NiwgIC0yNjYsCisgICAgLTI2NiwgIC0y
NjYsICAgMTIxLCAgLTI2NiwgICA5NzQsICAtMjY2LCAgLTI2NiwgICAgIDUsICAtMjY2LCAgLTI2
NiwKKyAgICAgNDU4LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgOTc0LCAg
IDk3NCwgIC0yNjYsICAtMjY2LAorICAgIC0yNjYsICAgOTc0LCAgLTI2NiwgICAxMzcsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAgMTM4LCAgIDExMSwgIC0yNjYsCisgICAgIDE0MiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAgIDM2LCAgICAzNiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKKyAg
ICAtMjY2LCAgIC0yMSwgICAtMjEsICAtMjY2LCAgIDExMywgICAxMTcsICAgIDgyLCAgLTI2Niwg
ICA5NzQsICAgMTI5LAorICAgIC0yNjYsICAgMTc1LCAgICA1MCwgICA2MjYsICAgNzEwLCAgICAz
OCwgIC0yNjYsICAgMTk3LCAgIDQ1OCwgIC0yNjYsCisgICAgLTI2NiwgICAxNDEsICAtMjY2LCAg
LTI2NiwgICA5NzQsICAgMTU1LCAgLTI2NiwgICAxNDUsICAtMjY2LCAgLTI2NiwKKyAgICAtMjY2
LCAgLTI2NiwgICAxOTcsICAgMTIxLCAgIDExMSwgICAxODYsICAgMTU5LCAgIDE2MCwgIC0yNjYs
ICAtMjY2LAorICAgIC0yNjYsICAgOTc0LCAgLTI2NiwgICAxNjYsICAgMTc2LCAgIDIzNiwgIC0y
NjYsICAgMTc0LCAgIDU0MiwgIC0yNjYsCisgICAgICA0MywgICA5NzQsICAgNTQyLCAgIDEyMSwg
ICA5NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTc3LCAgIDExMSwKKyAgICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAtMjY2CiB9OwogCiAvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGlj
IGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogewotICAgIC0yNjEsICAgLTI0LCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAzNCwgIC0yNjEsCi0gICAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgICAzMiwgIC0yNjEsICAgLTMzLCAgLTI2MSwgICAtMjcsICAg
LTI2LCAgLTI2MSwKLSAgICAtMjYxLCAgLTI2MSwgICAgMTQsICAgIDE2LCAgICAxOCwgIC0yNjEs
ICAgLTY2LCAgIC04NywgIC0yNjEsICAgLTkyLAotICAgICAtODUsICAgIDExLCAgICAxMiwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgICAxNDEsICAgMTUwLCAgIDE2MSwgICAxNDMsCi0gICAgLTI2MSwg
IC0yNjEsICAtMjMxLCAgICAgNSwgICAtMzAsICAgMjI0LCAgIC0xOCwgICAgIDAsICAtMjYxLCAg
LTI2MSwKLSAgICAtMjYxLCAgIDEwMCwgIC0xMTksICAtMjYxLCAgIC0xNywgIC0xNTYsICAgLTI1
LCAgLTE0NSwgIC0yNDMsICAtMjYxLAotICAgIC0yNjEsICAtMjYxLCAgIC02NCwgIC0yNjAsICAt
MjYxLCAgLTI2MSwgICAtNTIsICAgIDIxLCAgIC0yMiwgIC0yNjEsCi0gICAgLTI2MSwgICAtMzks
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwK
LSAgICAtMjYxLCAgIDE5MSwgIC0yNjEsICAtMjYxCisgICAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgODUsICAtMjY2LCAgLTI2NiwKKyAgICAtMjY2
LCAgLTI2NiwgICAtNDQsICAtMjY2LCAgIC0xNSwgIC0yNjYsICAgLTU1LCAgIC0xOSwgIC0yNjYs
ICAtMjY2LAorICAgIC0yNjYsICAgIDcyLCAgICA3MCwgICAgNzMsICAtMjY2LCAgIC02NiwgICAt
ODMsICAtMjY2LCAgIC05MiwgICAtNzMsCisgICAgICAxMywgICAgMTQsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgMTgwLCAgIDIwNiwgICAyMDEsICAgMTg0LCAgLTI2NiwKKyAgICAtMjY2LCAgLTI0
MSwgICAtMjUsICAgLTMwLCAgIDI2MiwgICAgLTQsICAgICAwLCAgLTI2NiwgIC0yNjYsICAtMjY2
LAorICAgICAxNDMsICAtMTIyLCAgLTI2NiwgICAgMjIsICAtMTQ1LCAgICAxNiwgIC0xNDQsICAt
MjI2LCAgLTI2NiwgIC0yNjYsCisgICAgLTI2NiwgICAtMTcsICAtMjY1LCAgLTI2NiwgIC0yNjYs
ICAgLTU0LCAgICA2MywgICAgMjAsICAtMjY2LCAgLTI2NiwKKyAgICAgICA0LCAgLTI2NiwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAorICAg
ICAyMzEsICAtMjY2LCAgLTI2NgogfTsKIAogLyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVNXV0u
ICBXaGF0IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElmCiAgICBwb3NpdGl2ZSwgc2hpZnQg
dGhhdCB0b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hpY2gKICAgIG51bWJl
ciBpcyB0aGUgb3Bwb3NpdGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNUIHNheXMuCiAgICBJ
ZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCi0jZGVmaW5lIFlZVEFCTEVfTklORiAt
MTY2CisjZGVmaW5lIFlZVEFCTEVfTklORiAtMTY1CiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2
IHl5dGFibGVbXSA9CiB7Ci0gICAgICA0NCwgICAgNTUsICAgMTY1LCAgIDE2NCwgICAxNjksICAg
IDgwLCAgIDIyNiwgICAxMjMsICAgMjIyLCAgIDIwMCwKLSAgICAgIDcxLCAgICAzMiwgICAgMzMs
ICAgMjcyLCAgIDE5MywgICAgNzAsICAgMjg4LCAgICA0OSwgICAxODUsICAgMTg2LAotICAgICAg
NTYsICAgMTc4LCAgIDEyMywgICAgODgsICAgIDcyLCAgICA1MCwgICAgNTIsICAgIDUzLCAgIDE3
NSwgICAyNzgsCi0gICAgICA4OSwgICAyMjgsICAgIDU4LCAgICA3NiwgICAxNzYsICAgIDg0LCAg
IDMwNCwgICAyMTksICAgMTcwLCAgIDE3MSwKLSAgICAgIDQ0LCAgICA2NiwgICAgNDQsICAgIDg2
LCAgIDI3OCwgICAyMDksICAgIDQ0LCAgIDEyNywgICAyOTgsICAgMTk0LAotICAgICAgNTksICAg
IDQ0LCAgIDI5OCwgICAxODcsICAgMTg4LCAgICA4NCwgICAgNTQsICAgIDMyLCAgICAzMywgICAx
NzIsCi0gICAgIDE1OCwgICAxNjEsICAgIDczLCAgIDE3MywgICAgNjYsICAgIDQ0LCAgIDI3Niwg
ICAzMDEsICAgMTYyLCAgICA2OSwKLSAgICAgIDUzLCAgICA2NywgICAyMTksICAgMjE5LCAgICA2
OCwgICAxNjUsICAgMjI1LCAgICA0NCwgICAgNjAsICAgMTQ4LAotICAgICAyMzAsICAgIDc4LCAg
IDIwMCwgICAgIDYsICAgICA3LCAgICA0NCwgICAxODMsICAgMjE5LCAgIDE4NCwgICAyMzUsCi0g
ICAgIDIyMCwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgMTIzLCAgICAgNiwgICAgIDcs
ICAgMTI3LCAgICA0OSwKLSAgICAgMTI3LCAgIDI1MSwgICAyNDksICAgMjE5LCAgIDI1MiwgICAx
MTAsICAgMjU5LCAgICA4NywgICAgNjEsICAgIDYyLAotICAgICAgNjMsICAgIDIzLCAgICAyNCwg
ICAtMjcsICAgMjU4LCAgICA3MywgICAyMjIsICAgICAyLCAgICAgMywgICAgIDQsCi0gICAgIDEx
MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgMjMsICAgIDI0LCAgIDE2NywgICAxNjgsICAgIDQ0
LCAgICA3OSwKLSAgICAgIDQ0LCAgIDI2MiwgICAyNjMsICAgMjEzLCAgIDIxNCwgICAyMTUsICAg
IDUyLCAgICA1MywgICAyNjQsICAgMTgxLAotICAgICAxODIsICAgMzA1LCAgIDIxNiwgICAxODAs
ICAgMTI2LCAgIDE4OSwgICAxOTAsICAgLTc2LCAgIC0yOCwgICAyMzMsCi0gICAgIDIzOCwgICAy
MzksICAgMjE3LCAgIDE0OCwgICAyMTksICAgMjY3LCAgIDE3NCwgICAxMjMsICAgMjQwLCAgIDI0
MSwKLSAgICAgMjQyLCAgIDI0MywgICAxOTEsICAgMjQ0LCAgIDI0NSwgICAyNjgsICAgMTc5LCAg
IDE5MiwgICAyNzcsICAgMjA1LAotICAgICAxOTUsICAgMTI3LCAgIDIwNiwgICAyMDIsICAgMjAz
LCAgIDIwNywgICAyMTAsICAgMjI3LCAgIDIxMSwgICAyMjMsCi0gICAgIDI4MiwgIC0xMTcsICAg
MjUwLCAgIDI3NywgICAxMjMsICAgMjcwLCAgLTE2NSwgIC0xMzgsICAgMjY1LCAgIDI2NiwKLSAg
ICAgMjE5LCAgIDI4MSwgICAyOTMsICAgMTEwLCAgIDI4MywgICAyODQsICAgMjk2LCAgIDI5MSwg
ICAyOTIsICAgMjk0LAotICAgICAyOTUsICAgIDQ0LCAgIDMwMiwgICAyNzEsICAgMzA2LCAgIDI0
NiwgICAyOTcsICAgMjM0LCAgIDI0NywgICAgODEsCi0gICAgIDE2NSwgICAyNDgsICAgMTQ4LCAg
IDIzNiwgICAyMzcsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwKLSAgICAgMTEw
LCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTU5LCAgICA4NSwgICAxNjAs
ICAgIDUxLAotICAgICAyMDEsICAgMzAzLCAgIDI3MywgICAyNjEsICAgMjY5LCAgIDI3NCwgICAy
ODUsICAgIDc1LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgIDI5MCwgICAxMTAsICAgMTQ4LCAgIDE0OCwgICAgIDAsICAgICAw
LAotICAgICAxNDgsICAgMTQ4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTQ4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAx
MTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDAsICAgMTQ4LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0OCwgICAgIDEsICAgICAyLCAg
ICAgMywgICAgIDQsCi0gICAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEw
LCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwKLSAgICAgMTM0LCAgIDEzNSwgICAxMzYsICAg
MTM3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAotICAgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzOCwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDkwLCAgICAzMSwKLSAgICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAg
ICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgNDQsICAgIDc3
LCAgIDE2NywgICAxNjMsICAgMTIxLCAgIDE5OSwgICAgNTIsICAgMjIwLCAgIDI4NSwgICAxOTEs
CisgICAgICA2OCwgICAgNjQsICAgMTYyLCAgICAzMiwgICAgMzMsICAgMjI0LCAgIDI3NSwgICAg
NDksICAgIDY1LCAgIDEyMSwKKyAgICAgMTgxLCAgICA2NiwgICAxODIsICAgMTc2LCAgICA1OCwg
ICAgNTAsICAgMTA4LCAgIDI2OSwgICAzMDEsICAgICA2LAorICAgICAgIDcsICAgMjc1LCAgICA2
NCwgICAgODEsICAgMTgzLCAgIDE4NCwgICAyMTcsICAgIDUzLCAgICA2OSwgICAyMTgsCisgICAg
ICA0NCwgICAxMDgsICAgIDQ0LCAgIDIwNywgICAxOTIsICAgMTI2LCAgICA0NCwgICAgNzMsICAg
MTY1LCAgIDE2NiwKKyAgICAgMjQ5LCAgICA0NCwgICAgODEsICAgMjUwLCAgICA1OSwgICAgNjAs
ICAgIDYxLCAgICAyMywgICAgMjQsICAgIDMyLAorICAgICAgMzMsICAgMTU5LCAgIDI5NSwgICAg
NDQsICAgIDU0LCAgIDE3OCwgICAyOTUsICAgMTczLCAgIDE2MCwgICAxODUsCisgICAgIDE4Niwg
ICAgNTYsICAgMTk5LCAgIDE3NCwgICAgNTgsICAgIDQ0LCAgIDE0NiwgICAxNjMsICAgMjI4LCAg
ICAgNiwKKyAgICAgICA3LCAgICA4NCwgICAgNDQsICAgIDg1LCAgIDIxNywgICAgNTcsICAgMjIz
LCAgIDI1NiwgICAxNjgsICAgMTY5LAorICAgICAgODYsICAgMjMyLCAgIDIyNiwgICAxMjEsICAg
LTc1LCAgIDEyNiwgICAgNjcsICAgMTI2LCAgIDIxNywgICAgNzAsCisgICAgIDI0NiwgICAyMTEs
ICAgMjEyLCAgIDIxMywgICAgNTksICAgIDYwLCAgICA2MSwgICAgMjMsICAgIDI0LCAgIDE3MCwK
KyAgICAgMjE0LCAgIDI3MywgICAyNTUsICAgMTcxLCAgIDIyMCwgICAxMDgsICAgMjk4LCAgIDIx
NywgICAgNzQsICAgLTI1LAorICAgICAyMTUsICAgIDcwLCAgIDIxNywgICAxNzksICAgMTgwLCAg
ICA0NCwgICAgNzYsICAgIDQ0LCAgIDIzNywgICAyMzgsCisgICAgIDIzOSwgICAyNDAsICAgIDQ5
LCAgIDI1OSwgICAyNjAsICAgMjMzLCAgIDIzNCwgICAxMDgsICAgMTA4LCAgIDEwOCwKKyAgICAg
MTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAy
NjEsICAgMzAyLAorICAgICAgODMsICAgMTQ2LCAgICAgMiwgICAgIDMsICAgICA0LCAgIDEyMSwg
ICAgNTksICAgIDYwLCAgICA2MSwgICAxODcsCisgICAgIDE4OCwgICAyMTcsICAgMjY0LCAgIDEy
NCwgICAxMjYsICAgMjc0LCAgIDIzNSwgICAyMzYsICAgMjQxLCAgIDI0MiwKKyAgICAgMTU2LCAg
IC0yNiwgICAxODksICAgMTcyLCAgIDE5NSwgICAyNjUsICAgMTc3LCAgIDEwOCwgICAxOTAsICAg
MjAwLAorICAgICAyNzQsICAgMjc5LCAgIDEyMSwgICAxOTMsICAgMjAzLCAgIDIwMSwgICAyMDQs
ICAgMjA4LCAgIDIwNSwgICAyOTAsCisgICAgIDIxNywgIC0xMTYsICAgMjIxLCAgIDIwOSwgICAg
NDQsICAgMjI1LCAgIDI0OCwgIC0xNjQsICAgMjY4LCAgIDI5OSwKKyAgICAgIDU4LCAgICAgMiwg
ICAgIDMsICAgICA0LCAgIDEwOCwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAor
ICAgICAxNDYsICAgMTYzLCAgIDI2MiwgICAyNjMsICAgLTI3LCAgIDI2NywgICAyNzgsICAgMjgx
LCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgMjgwLCAgIDI4NywgICAyODgs
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDI4OSwgICAgMjcsICAgIDI4LAorICAgICAg
MjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgIDI5
MSwgICAyOTIsCisgICAgICA5MiwgICAgOTMsICAgMjkzLCAgIDE0NiwgICAxNDYsICAgMjk0LCAg
IDIzMSwgICAxNDYsICAgMTQ2LCAgIDMwMywKKyAgICAgMjQ0LCAgIDI0MywgICAxNTcsICAgIDc4
LCAgIDI0NSwgICAgODIsICAgMTU4LCAgICA1MSwgICAxOTQsICAgIDk0LAorICAgICAyNzAsICAg
MjY2LCAgIDE0NiwgICAyNTgsICAgMjcxLCAgIDMwMCwgICAyODIsICAgIDcyLCAgICAgMCwgICAg
IDAsCisgICAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMTQ2LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxNDYsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LAorICAgICAgIDgsICAgICA5LCAg
ICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsCisg
ICAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwKKyAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAorICAgICAxMzYsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCisgICAgICA5
MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAg
MSwKLSAgICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAg
ICAgOSwgICAgMTAsICAgMTMxLAotICAgICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1
LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsCi0gICAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywg
ICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5
MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCisgICAgICAgMCwgICAgIDAsICAgIDk0LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwKKyAgICAgICAw
LCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIs
ICAgICAzLAorICAgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgMTI5LCAgIDEzMCwgICAxMzEsCisgICAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwg
ICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgODcsCisgICAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEs
ICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAxMzksICAgMjIxLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwKLSAgICAgICAwLCAgICA5OSwgICAgIDEsICAg
ICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAotICAgICAgIDks
ICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwg
ICAxMzcsCi0gICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwKLSAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LAotICAgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAs
Ci0gICAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAxMzcsICAgMjE5LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsCisgICAg
ICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwKKyAgICAgIDEwLCAgIDEyOSwgICAxMzAsICAgMTMxLCAgICAgMCwgICAxMzIs
ICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLAorICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCisgICAgICAyMiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAg
ICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgICAwLAorICAgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAxNDEsICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAg
ICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsCi0gICAgICAgNiwgICAgIDcsICAgICA4
LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwKLSAgICAg
MTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LAorICAgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAg
MCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAg
MTMyLAorICAgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsCiAgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwKLSAgICAgIDI1LCAgICAyNiwg
ICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLAot
ICAgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA3OSwgICAgIDAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAg
MSwgICAgIDIsCi0gICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAg
ICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwKLSAgICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1
LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LAotICAgICAgMTUsICAg
IDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5
MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLAorICAgICAgMjUsICAgIDI2LCAg
IDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsCisg
ICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAs
ICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4
LCAgICAgMCwKLSAgICAgIDk5LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsCi0gICAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwKLSAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgIDAsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMx
LCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsCi0gICAgICA5NCwgICAgOTUsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDk2LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsCi0gICAgICA5NywgICAgOTgsICAgICAwLCAg
ICA5OSwgICAgNjAsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgNiwKLSAgICAgICA3
LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsCi0gICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwKLSAgICAgIDI2LCAgICAg
MCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDky
LAotICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
OTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAotICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDExLCAg
ICAxMiwgICAgMTMsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDc2LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLAorICAgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAxMjksCisgICAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEz
NSwgICAgMTEsICAgIDEyLCAgICAxMywKICAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjks
Ci0gICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAg
IDAsICAgIDk0LCAgICA5NSwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsCi0gICAg
IDE2MywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDk3LCAgICA5OCwKLSAgICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAotICAgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsCi0gICAgICAyNiwg
ICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAg
ICA5MiwKLSAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgODcs
ICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwK
KyAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwKKyAgICAg
IDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgMTEsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKKyAgICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LAorICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEs
ICAgIDg4LCAgICA4OSwgICAgOTAsCisgICAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAg
OTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAot
ICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMjA4LCAgICA5NywgICAgOTgsICAg
ICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgICAwLCAgICAgMCwgICAgOTQs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAx
MiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAg
IDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAg
OTUsCisgICAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwg
ICAgIDAsICAgICAwLCAgICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCisg
ICAgICAgMCwgICAxNjEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA5NSwKKyAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAorICAgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAy
NSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMx
LCAgICA4OCwKKyAgICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAg
IDkzLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAg
MCwKLSAgICAgMjI0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgOTcsICAgIDk4LAotICAgICAgIDAsICAgIDk5LCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCi0gICAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwKLSAg
ICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwg
ICAgOTEsICAgIDkyLAotICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAg
OTksICAgIDExLCAgICAxMiwgICAgMTMsCi0gICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAyNSwgICAxNzcsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5
LAotICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgOTUsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgIDIwNiwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLAorICAg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsCisgICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAorICAgICAgIDAs
ICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDIsICAgICAzLAotICAgICAgIDQsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NywgICAgOTgs
Ci0gICAgICAgMCwgICAgOTksICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDk0LCAgICAgMCwgICAgIDAsICAgMjIyLCAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDk1LCAgICA5
NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCiAgICAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAg
ICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLAotICAgICAgMzEsICAgICAyLCAgICAgMywgICAg
IDQsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAg
ICAxMiwKLSAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLAotICAgICAxOTksICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsCi0gICAgICAyOSwgICAgMzAs
ICAgICAwLCAgICAzMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDc0LCAgICAgMCwgICAgIDAsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICA0LAorICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsCisgICAgICAzMSwgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgOCwgICAgIDksICAgIDEwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTUsICAgIDk2LCAgICAgMCwKKyAgICAgIDk3LCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAg
IDE5LAorICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAyNSwgICAxNzUsCisgICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwKKyAgICAgIDkxLCAgICAgMCwg
ICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMiwgICAgIDMsICAg
ICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAgIDAs
ICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsCisgICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAgMCwgICAgMzEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsICAgIDE2LCAgICAxNywKKyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgIDAsICAgMTk4LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMjUsICAgIDI2LCAg
ICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMSwgICAgIDAsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA3MSwKKyAgICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAgIDksICAgIDEwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyNDcsCisgICAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgICAwLAorICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgICAwLCAgICAzMSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCiAgICAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMjUzLCAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICAxNCwgICAgMTUsICAgIDE2LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCiAgICAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywKICAg
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgIDAsICAgIDMxLAotICAgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwKLSAgICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywgICAgMjgsCi0gICAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMSwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAg
ICAyOCwgICAgMjksCisgICAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDksICAgIDEw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAorICAgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCisgICAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgMjI5LCAgICAzMSwKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgMjMwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
CiAgICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDI1LCAgICAyNiwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCi0gICAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUs
ICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAotICAgICAgMjksICAgIDMwLCAgIDIzMSwgICAy
MzIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAg
ICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCi0gICAgICAzMQorICAgICAg
IDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEKIH07CiAKIHN0YXRp
YyBjb25zdCB5eXR5cGVfaW50MTYgeXljaGVja1tdID0KIHsKLSAgICAgICAwLCAgICAyNSwgICAg
ODksICAgIDg4LCAgICA5NiwgICAgNTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LAotICAg
ICAgNDAsICAgICAwLCAgICAgMCwgICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYsICAgIDM3LCAg
ICA1NCwgICAgNTUsCi0gICAgICA4MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAgNDIsICAgIDQ1
LCAgICA0NSwgICAgNDYsICAgIDcyLCAgIDI2MCwKLSAgICAgIDgwLCAgICA3MiwgICAgNzIsICAg
IDUxLCAgICA3OCwgICAgNjUsICAgMjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAotICAgICAgNDAs
ICAgIDM2LCAgICA0MiwgICAgNjcsICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3LCAgIDI5MSwg
ICAgOTQsCi0gICAgICA3OCwgICAgNTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAgIDg1LCAgICA3
NSwgICAgNDYsICAgIDQ2LCAgICA3MywKLSAgICAgIDg0LCAgICA3MywgICAgNzMsICAgIDc3LCAg
ICA1OSwgICAgNjUsICAgIDcyLCAgICA3MiwgICAgODAsICAgIDQ1LAotICAgICAgNDYsICAgIDc4
LCAgICA3OCwgICAgNzgsICAgIDgxLCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAgMywgICAgNzks
Ci0gICAgIDE3MiwgICAgNzUsICAgMjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAgICA4MywgICAg
NzgsICAgIDg1LCAgIDE3NiwKLSAgICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0LCAgICAzNSwg
ICAxNjEsICAgICA4LCAgICAgOSwgICAxMjgsICAgIDM3LAotICAgICAxMzAsICAgIDc4LCAgIDE5
NCwgICAgNzgsICAgIDgxLCAgICA3MywgICAgODEsICAgIDcxLCAgICAzMywgICAgMzQsCi0gICAg
ICAzNSwgICAgMzYsICAgIDM3LCAgICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwgICAgIDQsICAg
ICA1LCAgICAgNiwKLSAgICAgIDg4LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcs
ICAgIDk0LCAgICA5NSwgICAxMjgsICAgIDc1LAotICAgICAxMzAsICAgMjE4LCAgIDIxOSwgICAg
NjEsICAgIDYyLCAgICA2MywgICAgNDUsICAgIDQ2LCAgIDIyMywgICAgODYsCi0gICAgICA4Nywg
ICAyOTcsICAgIDcwLCAgIDExMSwgICAgODEsICAgIDU2LCAgICA1NywgICAgNzIsICAgIDcxLCAg
IDE3MywKLSAgICAgMTgzLCAgIDE4NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAgNzksICAgIDcy
LCAgIDIyMywgICAxODUsICAgMTg2LAotICAgICAxODcsICAgMTg4LCAgICA1OCwgICAxODksICAg
MTkwLCAgIDI1MCwgICAgNzEsICAgIDYwLCAgIDI2MCwgICAgNzEsCi0gICAgICA3NCwgICAyMDEs
ICAgIDcxLCAgICA4MSwgICAgODEsICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2LCAgICA3MywK
LSAgICAgMjY3LCAgICA3MSwgICAgNzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAgIDc1LCAgICA3
MSwgICAgNzQsICAgIDc0LAotICAgICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEsICAgIDc0LCAg
ICA3MSwgICAgMTYsICAgIDcyLCAgICA3NiwgICAgODEsCi0gICAgICA3MiwgICAyMDEsICAgMjk0
LCAgIDI1NSwgICAgODEsICAgMTkxLCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1OSwKLSAgICAg
Mjk3LCAgIDE5MywgICAyMTIsICAgMTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAx
ODYsICAgMTg3LAotICAgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5Mywg
ICAgODUsICAgIDY2LCAgICA4NSwgICAgIDUsCi0gICAgIDEzMCwgICAyOTUsICAgMjU3LCAgIDIx
MiwgICAyNTEsICAgMjU3LCAgIDI3NSwgICAgNDYsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjc4LCAgIDIyMywgICAyNTYs
ICAgMjU3LCAgICAtMSwgICAgLTEsCi0gICAgIDI2MCwgICAyNjEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzUsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgIDI1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAyOTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
Mjk1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwKLSAgICAgICA3LCAgICAgOCwgICAgIDks
ICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLAotICAgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwKLSAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQw
LCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAg
IDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAgMCwgICAgNTUsICAgIDk0LCAgICA4NiwgICAgNzAsICAgMTI3LCAgICA0NSwg
ICAxNTEsICAgMjczLCAgICA2MCwKKyAgICAgIDQwLCAgICAzNiwgICAgODUsICAgICAwLCAgICAg
MCwgICAxNjAsICAgMjU3LCAgICAzNywgICAgNzksICAgIDg1LAorICAgICAgODQsICAgIDgyLCAg
ICA4NiwgICAxMDYsICAgICAzLCAgICA0NSwgICAgNzAsICAgMjUzLCAgIDI5MywgICAgIDgsCisg
ICAgICAgOSwgICAyNzIsICAgIDU3LCAgICA2MywgICAgNTUsICAgIDU2LCAgICA3OSwgICAgNzYs
ICAgIDQyLCAgICA4MiwKKyAgICAgIDQwLCAgICA4NSwgICAgNDIsICAgMTM1LCAgICA5NSwgICAg
NzUsICAgIDQ2LCAgICA1MSwgICAgOTIsICAgIDkzLAorICAgICAgNzksICAgIDUxLCAgICA4Miwg
ICAgODIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgNDYsCisgICAgICA0
NiwgICAgNzQsICAgMjg4LCAgICA2MywgICAgODIsICAgMTA5LCAgIDI5MiwgICAgNzMsICAgIDgx
LCAgICA5MCwKKyAgICAgIDkxLCAgICA3MywgICAxOTQsICAgIDc5LCAgICAgMywgICAgNzUsICAg
IDc2LCAgIDE2MCwgICAxNzAsICAgICA4LAorICAgICAgIDksICAgIDcyLCAgICA4MiwgICAgNzQs
ICAgIDc5LCAgICA3OSwgICAxNTksICAgIDgyLCAgICA1MywgICAgNTQsCisgICAgICA4MSwgICAx
NzQsICAgIDczLCAgIDE1OSwgICAgNzMsICAgMTI1LCAgICA0NSwgICAxMjcsICAgIDc5LCAgICA3
NCwKKyAgICAgMTkyLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICAzMywgICAgMzQsICAgIDM1LCAg
ICAzNiwgICAgMzcsICAgIDc0LAorICAgICAgNzEsICAgIDczLCAgIDIwNCwgICAgNzgsICAgMjU4
LCAgIDE1OSwgICAgNzMsICAgIDc5LCAgICA3NiwgICAgNzIsCisgICAgICA4MSwgICAgNzQsICAg
IDc5LCAgICA4NywgICAgODgsICAgMTI1LCAgICA3NiwgICAxMjcsICAgMTgzLCAgIDE4NCwKKyAg
ICAgMTg1LCAgIDE4NiwgICAgMzcsICAgMjE2LCAgIDIxNywgICAxNzksICAgMTgwLCAgIDE4MSwg
ICAxODIsICAgMTgzLAorICAgICAxODQsICAgMTg1LCAgIDE4NiwgICAxODcsICAgMTg4LCAgIDE4
OSwgICAxOTAsICAgMTkxLCAgIDIyMSwgICAyOTQsCisgICAgICA0NSwgICAxNTEsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgMjIxLCAgICAzMywgICAgMzQsICAgIDM1LCAgICA1NywKKyAgICAgIDU4
LCAgICA3OSwgICAgODAsICAgIDgyLCAgIDE5NCwgICAyNTcsICAgMTgxLCAgIDE4MiwgICAxODcs
ICAgMTg4LAorICAgICAgNDUsICAgIDcyLCAgICA1OSwgICAgNzMsICAgIDQ1LCAgIDI0OCwgICAg
NzIsICAgMjIxLCAgICA2MSwgICAgODIsCisgICAgIDI3MiwgICAyNjQsICAgMjQ4LCAgICA3NSwg
ICAgNzIsICAgIDgyLCAgICA3MiwgICAgNzIsICAgIDgyLCAgIDI4MSwKKyAgICAgIDc5LCAgICA3
MiwgICAgNzQsICAgIDc3LCAgIDE5NCwgICAgNzUsICAgIDc0LCAgICA3NiwgICAyNTIsICAgMjkx
LAorICAgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgMjQ4LCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgMTIsCisgICAgIDIxMCwgICAyOTQsICAgIDc1LCAgICA3NSwgICAgNzIs
ICAgIDQwLCAgICA3NSwgICAgNzIsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAg
ICAgNzUsICAgIDQ1LCAgICA3MywgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDc3LCAg
ICA0MSwgICAgNDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIDgyLCAgICA3MywKKyAgICAgIDUzLCAgICA1NCwgICAgMTYsICAg
MjUzLCAgIDI1NCwgICAgODEsICAgMTcxLCAgIDI1NywgICAyNTgsICAgIDgyLAorICAgICAxOTAs
ICAgMTg5LCAgICA4MiwgICAgNTcsICAgMTkxLCAgICA2NCwgICAgODIsICAgICA1LCAgIDEyNSwg
ICAgNzIsCisgICAgIDI1NCwgICAyNDksICAgMjcyLCAgIDIxMCwgICAyNTQsICAgMjkyLCAgIDI3
MiwgICAgNDYsICAgIC0xLCAgICAtMSwKKyAgICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyODgsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgIDI5MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
CisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAtMSwgICAg
MTcsICAgIDE4LCAgICAxOSwKKyAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCisgICAg
ICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwKKyAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAg
ICA3NiwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgz
LCAgICAtMSwgICAgODUsICAgICAzLAotICAgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsCi0gICAgICAxNCwgICAgMTUs
ICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywK
LSAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAg
ICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKKyAgICAg
IC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICA3NywgICAg
LTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwg
ICAgODYsICAgICAzLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIC0xLCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LAorICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAg
NDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLAog
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICA3NSwgICAgNzYs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLAotICAgICAg
LTEsICAgIDg1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsCi0gICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKLSAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0
LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAotICAgICAgMzEsICAg
IDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAg
NDAsCi0gICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICAtMSwKLSAgICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICA3NiwgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMs
ICAgIDg0LCAgICAtMSwKKyAgICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAg
IDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAorICAgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCisgICAgICAy
MiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAzMSwKKyAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAg
IDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAorICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsCisgICAgICAtMSwgICAg
NTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA4MSwgICAgODIsICAg
IDgzLCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKKyAg
ICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAorICAgICAgODIsICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCiAgICAgICAgOCwgICAgIDksICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywKICAgICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LAogICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAzNiwgICAgMzcsCiAgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0
OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LAotICAg
ICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsCi0gICAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKLSAgICAgIDI1LCAgICAyNiwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0Mywg
ICAgNDQsCi0gICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAt
MSwgICAgNTIsICAgIDUzLCAgICAtMSwKKyAgICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAg
ICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAg
LTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLAotICAgICAgODUsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsCi0gICAg
ICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAgMzIsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsCi0gICAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAg
ICAtMSwKLSAgICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MSwK
LSAgICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAgLTEsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDIx
LCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKLSAgICAg
IDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAg
MzcsICAgIDM4LAotICAgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwg
ICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCi0gICAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1
MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAg
ODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0x
LCAgICA4NiwgICAgIDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgLTEs
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAogICAgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAg
ICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAotICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgNzEsICAgIC0xLCAgICAtMSwKLSAgICAgIDc0LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLAotICAgICAgLTEsICAgIDg1LCAg
ICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCi0g
ICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAzOCwKLSAgICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAotICAgICAgNDksICAgIC0xLCAgICAtMSwg
ICAgNTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQy
LCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLCAgICAtMSwgICAgLTEsICAgIDUzLAorICAgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAt
MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgODIsICAgIDgzLAorICAgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0
LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCisgICAgICAxMCwgICAgMTEsICAg
IDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAg
ICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywg
ICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCisgICAgICAtMSwgICAgNDEsICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKKyAgICAgIDUw
LCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgODEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAgIDIz
LAorICAgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQs
ICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywKICAgICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAogICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAg
ICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwg
ICAgLTEsCi0gICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDgyLCAgICA4MywKLSAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAotICAgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgs
Ci0gICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAg
NDYsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1Mywg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsCisgICAg
ICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLAorICAgICAgLTEsICAgIDc1LCAgICAxMCwgICAg
MTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODMsCisgICAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAg
IDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsCisgICAgICA0OCwgICAgNDks
ICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwK
ICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKLSAgICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwg
ICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAg
IDExLAorICAgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQs
ICAgIC0xLCAgICA4NiwgICAgMjEsCisgICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAor
ICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICA1MCwgICAgLTEsCisgICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAg
NCwgICAgIDUsCi0gICAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgLTEsICAgIDgyLCAgICA4MywKLSAgICAgIC0xLCAgICA4NSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgNzIsICAg
IC0xLCAgICAtMSwgICAgNzUsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwKICAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsCi0g
ICAgICA0NiwgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAs
ICAgIDExLCAgICAxMiwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICA3
NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQx
LCAgICA0MiwKLSAgICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDAs
ICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICAtMSwgICAg
LTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAg
ICA1MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAg
ICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4Mywg
ICAgODQsICAgIC0xLAorICAgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwKKyAgICAgIC0x
LCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
ICAgIDQ5LAorICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgNzIsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEw
LAorICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKKyAgICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLAorICAg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAorICAgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgNzcsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgLTEsICAgIDQ2LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLAorICAgICAgLTEsICAgIC0x
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAs
CisgICAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA3NywKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsCisgICAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwKICAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwKICAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDM2LAogICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAg
IDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsCi0gICAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwK
LSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwKLSAgICAg
IDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAg
LTEsICAgIC0xLAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAg
IDIzLAorICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICAtMSwg
ICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0
LCAgICAyNSwgICAgMjYsCisgICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAg
IDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAzOCwgICAgMzks
ICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAorICAgICAg
MTAsICAgIDExLCAgICAxMiwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCiAgICAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKICAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAotICAgICAgLTEsICAg
IDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAg
MTIsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAotICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCi0g
ICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEs
ICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICAtMSwKLSAgICAgIDQ2CisgICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIC0xLCAgICA0NgogfTsKIAogLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5h
bCBudW1iZXIgb2YgdGhlKSBhY2Nlc3NpbmcKQEAgLTEzNDMsMzIgKzEzMDgsMzIgQEAgc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAgICAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDEsICAgIDQyLCAgICA0MywKICAgICAgIDQ0
LCAgICA0NiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAgMTMwLCAgIDEzNSwgICAxMzYs
ICAgMTM3LAogICAgICAxMzgsICAgMTM5LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywgICAx
NzUsICAgMTc2LCAgIDE3NywgICAgMzcsCi0gICAgICA0NSwgICAxNDAsICAgIDQ1LCAgICA0Niwg
ICAgNzUsICAgIDk2LCAgICA4MSwgICAxNzgsICAgIDcyLCAgICA3OCwKLSAgICAgICAzLCAgICAz
MywgICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OCwgICAgODEsICAgIDQ1
LAotICAgICAgOTYsICAgMTM5LCAgIDE0MSwgICAgNzMsICAgICAwLCAgIDE3NiwgICAxNDEsICAg
MTQ1LCAgICA3NSwgICAgNzUsCi0gICAgIDE2MSwgICAxMzIsICAgMTMxLCAgIDEzNCwgICAxMzks
ICAgMTMzLCAgICA5NiwgICAgNzEsICAgIDczLCAgICA4MCwKLSAgICAgIDQ1LCAgICA0NywgICAg
NDgsICAgIDQ5LCAgICA1MiwgICAgNTMsICAgIDcxLCAgICA4MiwgICAgODMsICAgIDg1LAotICAg
ICAgOTcsICAgIDk4LCAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAg
IDEwNiwgICAxMDcsCi0gICAgIDEwOCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEz
LCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywKLSAgICAgMTE4LCAgIDExOSwgICAxMjAsICAg
MTIxLCAgIDEyNSwgICAxNDIsICAgIDgxLCAgIDEzOSwgICAxNDYsICAgMTQ3LAotICAgICAxNDQs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwg
ICAgNzUsCi0gICAgICA3NiwgICAgODEsICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEy
NiwgICAxMjcsICAgMTQyLCAgIDE1MSwKLSAgICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTYyLCAg
IDE2MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgOTYsICAgMTMxLAotICAgICAxMzQsICAgIDcz
LCAgICA4MCwgICAgNzQsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQs
Ci0gICAgICA1MiwgICAgNTMsICAgIDczLCAgICA3NywgICAgNzIsICAgIDcyLCAgICA3OCwgICAg
MzksICAgMTIyLCAgICA3MSwKLSAgICAgMTA4LCAgICA4NiwgICAgODcsICAgIDgzLCAgICA4NSwg
ICAgNTQsICAgIDU1LCAgICA4OSwgICAgOTAsICAgIDU2LAotICAgICAgNTcsICAgIDU4LCAgICA2
MCwgICAgNTksICAgIDk0LCAgICA3NCwgICAgOTYsICAgMTQ4LCAgIDE0OSwgICAgNzYsCi0gICAg
IDE0NywgICAxNDYsICAgIDgxLCAgICA4MSwgICAxNjksICAgIDcxLCAgICA3MSwgICAgODEsICAg
IDgxLCAgIDEyNCwKLSAgICAgIDcxLCAgICA3NiwgICAxNTUsICAgIDYxLCAgICA2MiwgICAgNjMs
ICAgIDcwLCAgICA4MCwgICAxMjMsICAgIDc4LAotICAgICAgODEsICAgIDc2LCAgIDE1MiwgICAg
NzMsICAgIDc0LCAgIDEyNSwgICAxNTAsICAgIDc0LCAgICA3MiwgICAxMDAsCi0gICAgIDEyNCwg
ICAgNDUsICAgIDQ2LCAgICA5NiwgICAxMDMsICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAg
IDExMCwKLSAgICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3
LCAgIDExOCwgICAxMTksICAgMTI0LAotICAgICAgNzMsICAgIDc4LCAgICA4MSwgICAgNzYsICAg
MTU4LCAgIDE1OSwgICAxNjAsICAgMTcwLCAgIDEyNCwgICAgODEsCi0gICAgIDE2OCwgICAxNjIs
ICAgMTIyLCAgIDEyMiwgICAxMjUsICAgIDc0LCAgICA3NCwgICAgNzksICAgMTI1LCAgIDE0OSwK
LSAgICAgIDQwLCAgIDE2MSwgICAxNTMsICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDcyLCAgIDEy
NCwgICAxMzcsICAgMTY2LAotICAgICAxNTYsICAgIDc0LCAgIDEyMiwgICAgNzQsICAgIDcxLCAg
IDE2NiwgICAxNzIsICAgMTczLCAgIDE1OCwgICAxNjUsCi0gICAgICA5NiwgICAgNzIsICAgIDc2
LCAgIDEyNCwgICAgODEsICAgIDcyLCAgICAxNiwgICAgODAsICAgMTUzLCAgIDE1NywKLSAgICAg
MTYxLCAgICA3MiwgICAxMjQsICAgMTU3LCAgIDE1OCwgICAxNTAsICAgIDgxCisgICAgICA0NSwg
ICAxNDAsICAgIDQ1LCAgICA3NiwgICAgODIsICAgMTc4LCAgICA3MywgICAgNzksICAgICAzLCAg
ICAzMywKKyAgICAgIDM0LCAgICAzNSwgICAxMzIsICAgMTMzLCAgIDEzOCwgICAgNzksICAgIDgy
LCAgICA0NSwgICAxMzksICAgMTQxLAorICAgICAgNzQsICAgICAwLCAgIDE3NiwgICAxNDEsICAg
IDc2LCAgIDE0NSwgICAgNzYsICAgMTYxLCAgIDEzMiwgICAxMzEsCisgICAgIDEzNCwgICAxMzks
ICAgMTMzLCAgICA0NSwgICAgNzIsICAgIDc0LCAgICA4MSwgICAgNDUsICAgIDQ3LCAgICA0OCwK
KyAgICAgIDQ5LCAgICA1MCwgICAgNTMsICAgIDU0LCAgICA3MiwgICAgODMsICAgIDg0LCAgICA4
NiwgICAgOTcsICAgIDk4LAorICAgICAgOTksICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAg
IDEwNSwgICAxMDYsICAgMTA3LCAgIDEwOCwgICAxMDksCisgICAgIDExMCwgICAxMTEsICAgMTEy
LCAgIDExMywgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOSwKKyAgICAg
MTIwLCAgIDEyMSwgICAxMjUsICAgMTQyLCAgICA4MiwgICAxNDQsICAgMTM5LCAgIDE0NiwgICAx
NDcsICAgIDEzLAorICAgICAgMTQsICAgIDE1LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgNDAsICAgIDc2LCAgICA3NywgICAgODIsCisgICAgIDEwOCwgICAxMjEsICAgMTIyLCAgIDEy
NCwgICAxMjYsICAgMTI3LCAgIDE0MiwgICAxNTEsICAgMTUyLCAgIDE1MywKKyAgICAgMTU0LCAg
IDE2MiwgICAxNjMsICAgMTY0LCAgIDE2NywgICAxNzQsICAgIDQ1LCAgIDEzMSwgICAxMzQsICAg
IDc0LAorICAgICAgODEsICAgIDc1LCAgIDEyNSwgICAxMjIsICAgMTUwLCAgIDEwOCwgICAxMDgs
ICAgMTI0LCAgICA1MywgICAgNTQsCisgICAgICA3NCwgICAgNzgsICAgIDczLCAgICA3MywgICAg
NzksICAgIDM5LCAgIDEyMiwgICAgNzIsICAgMTA4LCAgICA4NywKKyAgICAgIDg4LCAgICA4NCwg
ICAgODYsICAgIDU1LCAgICA1NiwgICAgOTAsICAgIDkxLCAgICA1NywgICAgNTgsICAgIDU5LAor
ICAgICAgNjEsICAgIDYwLCAgICA5NSwgICAgNzUsICAgMTQ2LCAgICA0NSwgICAxNDgsICAgMTQ5
LCAgICA3NywgICAxNDcsCisgICAgICA4MiwgICAgODIsICAgMTY5LCAgICA3MiwgICAgNzIsICAg
IDgyLCAgICA4MiwgICAxMjQsICAgIDcyLCAgICA3NywKKyAgICAgMTU1LCAgICA2MiwgICAgNjMs
ICAgIDY0LCAgICA3MSwgICAgODEsICAgMTIzLCAgICA3OSwgICAgODIsICAgIDc3LAorICAgICAx
NTIsICAgIDc0LCAgICA3NSwgICAxMjUsICAgMTUwLCAgICA3NSwgICAgNzMsICAgMTAwLCAgIDEy
NCwgICAgNDUsCisgICAgICA1MCwgICAxMDMsICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAg
IDExMCwgICAxMTIsICAgMTEyLCAgIDExMiwKKyAgICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3
LCAgIDExOCwgICAxMTksICAgMTI0LCAgICA3NywgICAgNzQsICAgIDc5LAorICAgICAgODIsICAg
MTU4LCAgIDE1OSwgICAxNjAsICAgMTcwLCAgIDEyNCwgICAgODIsICAgMTY4LCAgIDE2MiwgICAx
MjIsCisgICAgIDEyMiwgICAxMjUsICAgIDc1LCAgICA3NSwgICAgODAsICAgMTI1LCAgIDE0OSwg
ICAgNDAsICAgMTYxLCAgIDE1MywKKyAgICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDczLCAgIDEy
NCwgICAxMzcsICAgMTY2LCAgIDE1NiwgICAgNzUsICAgMTIyLAorICAgICAgNzUsICAgIDcyLCAg
IDE2NiwgICAxNzIsICAgMTczLCAgIDE1OCwgICAxNjUsICAgIDQ1LCAgICA3MywgICAgNzcsCisg
ICAgIDEyNCwgICAgODIsICAgIDczLCAgICAxNiwgICAgODEsICAgMTUzLCAgIDE1NywgICAxNjEs
ICAgIDczLCAgIDEyNCwKKyAgICAgMTU3LCAgIDE1OCwgICAxNTAsICAgIDgyCiB9OwogCiAjZGVm
aW5lIHl5ZXJyb2sJCSh5eWVycnN0YXR1cyA9IDApCkBAIC0xNDAxLDcgKzEzNjYsNyBAQCBkbwkJ
CQkJCQkJXAogICAgIH0JCQkJCQkJCVwKICAgZWxzZQkJCQkJCQkJXAogICAgIHsJCQkJCQkJCVwK
LSAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yOiBjYW5u
b3QgYmFjayB1cCIpKTsgXAorICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJy
b3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCiAgICAgICBZWUVSUk9SOwkJCQkJCQlcCiAgICAgfQkJ
CQkJCQkJXAogd2hpbGUgKFlZSUQgKDApKQpAQCAtMTQ1Niw5ICsxNDIxLDkgQEAgd2hpbGUgKFlZ
SUQgKDApKQogLyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3Vt
ZW50cy4gICovCiAKICNpZmRlZiBZWUxFWF9QQVJBTQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5
eWx2YWwsICZ5eWxsb2MsIFlZTEVYX1BBUkFNKQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2
YWwsIFlZTEVYX1BBUkFNKQogI2Vsc2UKLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCAm
eXlsbG9jKQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwpCiAjZW5kaWYKIAogLyogRW5h
YmxlIGRlYnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLwpAQCAtMTQ4MSw3ICsxNDQ2LDcgQEAgZG8g
ewkJCQkJCQkJCSAgXAogICAgIHsJCQkJCQkJCQkgIFwKICAgICAgIFlZRlBSSU5URiAoc3RkZXJy
LCAiJXMgIiwgVGl0bGUpOwkJCQkJICBcCiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwJ
CQkJCQkgIFwKLQkJICBUeXBlLCBWYWx1ZSwgTG9jYXRpb24sIGNvbnRleHQpOyBcCisJCSAgVHlw
ZSwgVmFsdWUsIGNvbnRleHQpOyBcCiAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CQkJ
CQkJICBcCiAgICAgfQkJCQkJCQkJCSAgXAogfSB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDk1LDIw
ICsxNDYwLDE4IEBAIGRvIHsJCQkJCQkJCQkgIFwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBk
ZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRl
ZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxF
ICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZ
WUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
Cit5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNU
WVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxz
ZQogc3RhdGljIHZvaWQKLXl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwg
eXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5
eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsK
ICAgICBpbnQgeXl0eXBlOwogICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKLSAg
ICBZWUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCog
Y29udGV4dDsKICNlbmRpZgogewogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKLSAgWVlV
U0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5UCiAg
IGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCkBAIC0xNTMxLDE0ICsxNDk0LDEzIEBAIHl5X3N5bWJv
bF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBj
b250ZXh0KQogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBc
CiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRp
YyB2b2lkCi15eV9zeW1ib2xfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNU
WVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXAsIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0
aW9ucCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3N5bWJvbF9wcmludCAoRklMRSAqeXlv
dXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgVFBhcnNl
Q29udGV4dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50ICh5
eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCit5eV9zeW1i
b2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQogICAgIEZJTEUg
Knl5b3V0cHV0OwogICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5
dmFsdWVwOwotICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsKICAgICBUUGFy
c2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CkBAIC0xNTQ3LDkgKzE1MDksNyBAQCB5eV9z
eW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29u
dGV4dCkKICAgZWxzZQogICAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICJudGVybSAlcyAoIiwgeXl0
bmFtZVt5eXR5cGVdKTsKIAotICBZWV9MT0NBVElPTl9QUklOVCAoeXlvdXRwdXQsICp5eWxvY2F0
aW9ucCk7Ci0gIFlZRlBSSU5URiAoeXlvdXRwdXQsICI6ICIpOwotICB5eV9zeW1ib2xfdmFsdWVf
cHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCk7
CisgIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIGNv
bnRleHQpOwogICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiKSIpOwogfQogCkBAIC0xNTg5LDEyICsx
NTQ5LDExIEBAIGRvIHsJCQkJCQkJCVwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5eXZzcCwg
WVlMVFlQRSAqeXlsc3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9y
ZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBpbnQgeXlydWxlLCBUUGFyc2VDb250ZXh0KiBj
b250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxz
cCwgeXlydWxlLCBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxlLCBjb250
ZXh0KQogICAgIFlZU1RZUEUgKnl5dnNwOwotICAgIFlZTFRZUEUgKnl5bHNwOwogICAgIGludCB5
eXJ1bGU7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgpAQCAtMTYxMCw3ICsx
NTY5LDcgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIHl5cnVsZSwgY29udGV4dCkK
ICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOwogICAgICAgeXlf
c3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlpXSwKIAkJICAg
ICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAgICAgLCAmKHl5bHNwWyh5
eWkgKyAxKSAtICh5eW5yaHMpXSkJCSAgICAgICAsIGNvbnRleHQpOworCQkgICAgICAgCQkgICAg
ICAgLCBjb250ZXh0KTsKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7CiAgICAgfQogfQpA
QCAtMTYxOCw3ICsxNTc3LDcgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIHl5cnVs
ZSwgY29udGV4dCkKICMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAogZG8gewkJCQkJ
XAogICBpZiAoeXlkZWJ1ZykJCQkJXAotICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5bHNw
LCBSdWxlLCBjb250ZXh0KTsgXAorICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIFJ1bGUsIGNv
bnRleHQpOyBcCiB9IHdoaWxlIChZWUlEICgwKSkKIAogLyogTm9uemVybyBtZWFucyBwcmludCBw
YXJzZSB0cmFjZS4gIEl0IGlzIGxlZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0CkBAIC0xODY5LDE5
ICsxODI4LDE3IEBAIHl5c3ludGF4X2Vycm9yIChjaGFyICp5eXJlc3VsdCwgaW50IHl5c3RhdGUs
IGludCB5eWNoYXIpCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVO
Q19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQog
c3RhdGljIHZvaWQKLXl5ZGVzdHJ1Y3QgKGNvbnN0IGNoYXIgKnl5bXNnLCBpbnQgeXl0eXBlLCBZ
WVNUWVBFICp5eXZhbHVlcCwgWVlMVFlQRSAqeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNv
bnRleHQpCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQ
RSAqeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3RhdGljIHZvaWQK
LXl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4
dCkKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQogICAgIGNv
bnN0IGNoYXIgKnl5bXNnOwogICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSAqeXl2YWx1ZXA7
Ci0gICAgWVlMVFlQRSAqeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsK
ICNlbmRpZgogewogICBZWVVTRSAoeXl2YWx1ZXApOwotICBZWVVTRSAoeXlsb2NhdGlvbnApOwog
ICBZWVVTRSAoY29udGV4dCk7CiAKICAgaWYgKCF5eW1zZykKQEAgLTE5NTIsOCArMTkwOSw2IEBA
IFlZU1RZUEUgeXlsdmFsOwogCiAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAq
LwogaW50IHl5bmVycnM7Ci0vKiBMb2NhdGlvbiBkYXRhIGZvciB0aGUgbG9vay1haGVhZCBzeW1i
b2wuICAqLwotWVlMVFlQRSB5eWxsb2M7CiAKICAgaW50IHl5c3RhdGU7CiAgIGludCB5eW47CkBA
IC0xOTg3LDIxICsxOTQyLDE2IEBAIFlZTFRZUEUgeXlsbG9jOwogICBZWVNUWVBFICp5eXZzID0g
eXl2c2E7CiAgIFlZU1RZUEUgKnl5dnNwOwogCi0gIC8qIFRoZSBsb2NhdGlvbiBzdGFjay4gICov
Ci0gIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOwotICBZWUxUWVBFICp5eWxzID0geXlsc2E7
Ci0gIFlZTFRZUEUgKnl5bHNwOwotICAvKiBUaGUgbG9jYXRpb25zIHdoZXJlIHRoZSBlcnJvciBz
dGFydGVkIGFuZCBlbmRlZC4gICovCi0gIFlZTFRZUEUgeXllcnJvcl9yYW5nZVsyXTsKIAotI2Rl
ZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pLCB5eWxzcCAt
PSAoTikpCisKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09
IChOKSkKIAogICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOwogCiAgIC8qIFRo
ZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZy
b20gdGhlCiAgICAgIGFjdGlvbiByb3V0aW5lcy4gICovCiAgIFlZU1RZUEUgeXl2YWw7Ci0gIFlZ
TFRZUEUgeXlsb2M7CisKIAogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBv
ZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hv
dWxkIGJlIHBvcHBlZC4gICovCkBAIC0yMDIxLDEyICsxOTcxLDYgQEAgWVlMVFlQRSB5eWxsb2M7
CiAKICAgeXlzc3AgPSB5eXNzOwogICB5eXZzcCA9IHl5dnM7Ci0gIHl5bHNwID0geXlsczsKLSNp
ZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwKLSAgLyog
SW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBsb2NhdGlvbiBiZWZvcmUgcGFyc2luZyBzdGFydHMuICAq
LwotICB5eWxsb2MuZmlyc3RfbGluZSAgID0geXlsbG9jLmxhc3RfbGluZSAgID0gMTsKLSAgeXls
bG9jLmZpcnN0X2NvbHVtbiA9IHl5bGxvYy5sYXN0X2NvbHVtbiA9IDA7Ci0jZW5kaWYKIAogICBn
b3RvIHl5c2V0c3RhdGU7CiAKQEAgLTIwNTMsNyArMTk5Nyw3IEBAIFlZTFRZUEUgeXlsbG9jOwog
CSAgIG1lbW9yeS4gICovCiAJWVlTVFlQRSAqeXl2czEgPSB5eXZzOwogCXl5dHlwZV9pbnQxNiAq
eXlzczEgPSB5eXNzOwotCVlZTFRZUEUgKnl5bHMxID0geXlsczsKKwogCiAJLyogRWFjaCBzdGFj
ayBwb2ludGVyIGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2YgdGhlCiAJICAgZGF0
YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQgdG8gYmUgYQpAQCAt
MjA2Miw5ICsyMDA2LDkgQEAgWVlMVFlQRSB5eWxsb2M7CiAJeXlvdmVyZmxvdyAoWVlfKCJtZW1v
cnkgZXhoYXVzdGVkIiksCiAJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwK
IAkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotCQkgICAgJnl5bHMxLCB5
eXNpemUgKiBzaXplb2YgKCp5eWxzcCksCisKIAkJICAgICZ5eXN0YWNrc2l6ZSk7Ci0JeXlscyA9
IHl5bHMxOworCiAJeXlzcyA9IHl5c3MxOwogCXl5dnMgPSB5eXZzMTsKICAgICAgIH0KQEAgLTIw
ODcsNyArMjAzMSw3IEBAIFlZTFRZUEUgeXlsbG9jOwogCSAgZ290byB5eWV4aGF1c3RlZGxhYjsK
IAlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKIAlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKLQlZ
WVNUQUNLX1JFTE9DQVRFICh5eWxzKTsKKwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlm
ICh5eXNzMSAhPSB5eXNzYSkKIAkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMjA5Nyw3ICsy
MDQxLDcgQEAgWVlMVFlQRSB5eWxsb2M7CiAKICAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAt
IDE7CiAgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOwotICAgICAgeXlsc3AgPSB5eWxz
ICsgeXlzaXplIC0gMTsKKwogCiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXpl
IGluY3JlYXNlZCB0byAlbHVcbiIsCiAJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6
ZSkpOwpAQCAtMjE3NCw3ICsyMTE4LDcgQEAgeXliYWNrdXA6CiAKICAgeXlzdGF0ZSA9IHl5bjsK
ICAgKisreXl2c3AgPSB5eWx2YWw7Ci0gICorK3l5bHNwID0geXlsbG9jOworCiAgIGdvdG8geXlu
ZXdzdGF0ZTsKIAogCkBAIC0yMjA1LDE5ICsyMTQ5LDE4IEBAIHl5cmVkdWNlOgogICAgICBHQ0Mg
d2FybmluZyB0aGF0IFlZVkFMIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuICAqLwogICB5eXZh
bCA9IHl5dnNwWzEteXlsZW5dOwogCi0gIC8qIERlZmF1bHQgbG9jYXRpb24uICAqLwotICBZWUxM
T0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAtIHl5bGVuKSwgeXlsZW4pOworCiAgIFlZX1JFRFVD
RV9QUklOVCAoeXluKTsKICAgc3dpdGNoICh5eW4pCiAgICAgewotICAgICAgICBjYXNlIDQ6Cisg
ICAgICAgIGNhc2UgMjoKIAogICAgIHsKICAgICAgICAgLy8gVGhlIHN5bWJvbCB0YWJsZSBzZWFy
Y2ggd2FzIGRvbmUgaW4gdGhlIGxleGljYWwgcGhhc2UKICAgICAgICAgY29uc3QgVFN5bWJvbCog
c3ltYm9sID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zeW1ib2w7CiAgICAgICAgIGNvbnN0IFRW
YXJpYWJsZSogdmFyaWFibGU7CiAgICAgICAgIGlmIChzeW1ib2wgPT0gMCkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5kZWNsYXJlZCBpZGVudGlm
aWVyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5kZWNsYXJl
ZCBpZGVudGlmaWVyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgVFR5cGUgdHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogZmFrZVZhcmlh
YmxlID0gbmV3IFRWYXJpYWJsZSgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7
CkBAIC0yMjI2LDE3ICsyMTY5LDEwIEBAIHl5cmVkdWNlOgogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gVGhpcyBpZGVudGlmaWVyIGNhbiBvbmx5IGJlIGEgdmFyaWFibGUgdHlwZSBz
eW1ib2wKICAgICAgICAgICAgIGlmICghIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAidmFyaWFibGUgZXhw
ZWN0ZWQiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidmFy
aWFibGUgZXhwZWN0ZWQiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQotCiAg
ICAgICAgICAgICB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJv
bCk7Ci0KLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5pc1ZhcmlhYmxlQnVpbHRJbih2YXJpYWJs
ZSkgJiYgCi0gICAgICAgICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgp
ICYmCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXlsc3Bb
KDEpIC0gKDEpXSksIHZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKSkpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBkb24ndCBkZWxldGUgJDEuc3RyaW5nLCBpdCdzIHVzZWQgYnkgZXJyb3IgcmVjb3Zlcnks
IGFuZCB0aGUgcG9vbApAQCAtMjI0NSwyMyArMjE4MSwyMiBAQCB5eXJlZHVjZToKICAgICAgICAg
aWYgKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgKSB7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0
UG9pbnRlcigpOwogICAgICAgICAgICAgVFR5cGUgdCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5eWxzcFsoMSkgLSAoMSld
KSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFycmF5LCB0LCAoeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
dmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eWxzcFsoMSkg
LSAoMSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDU6CisgIGNh
c2UgMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDY6CisgIGNhc2UgNDoKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTIy
NjksMTUxICsyMjA0LDE1NSBAQCB5eXJlZHVjZToKICAgICAgICAgLy8gY2hlY2sgZm9yIG92ZXJm
bG93IGZvciBjb25zdGFudHMKICAgICAgICAgLy8KICAgICAgICAgaWYgKGFicygoeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLmkpID49ICgxIDw8IDE2KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIGludGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUs
ICIgaW50ZWdlciBjb25zdGFudCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3OgorICBjYXNlIDU6CiAKICAgICB7CiAgICAg
ICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAg
ICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuZik7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA4OgorICBjYXNlIDY6CiAKICAgICB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuYik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5s
aW5lKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOToKKyAgY2FzZSA3OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTA6CisgIGNhc2UgODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExOgorICBjYXNlIDk6CiAKICAgICB7CiAgICAg
ICAgIGlmICghKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJy
YXkoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0
cml4KCkgJiYgISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1Zl
Y3RvcigpKSB7CiAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBh
cnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUs
ICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIs
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5v
ZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAiIGxlZnQgb2YgJ1snIGlz
IG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGlu
ZSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3Ig
IiwgImV4cHJlc3Npb24iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXgg
PSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFu
dFVuaW9uKCktPmdldElDb25zdCgwKTsKLSAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKLSAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOwotICAgICAgICAgICAg
ICAgIGluZm9TdHJlYW0gPDwgaW5kZXg7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5m
byA9IGluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWygzKSAtICg0KV0pLCAibmVnYXRpdmUgaW5kZXgiLCBpbmZvLmNfc3RyKCkpOwotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICBpbmRleCA9IDA7
CisgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICYmICh5eXZzcFsoMykgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewor
ICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCisgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RB
cnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCld
LmxleCkubGluZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBmb2xkaW5n
IGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7CisgICAg
ICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CisgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNl
dHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXND
b25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpOyAvLyBu
ZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ugdi54eSBzZW5kcyBmaWVsZHMgaW50ZWdlciBh
cnJheQorICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAg
ICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENv
bnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgp
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGlu
ZyBmb3IgYXJyYXlzCi0gICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKGluZGV4LCAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0g
ICAgICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgICAg
ICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNb
MF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMg
ZmllbGRzIGludGVnZXIgYXJyYXkKLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCld
KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBt
YXRyaWNlcwotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGluZGV4ID49ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdl
ICciIDw8IGluZGV4IDw8ICInIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiIsICJbIiwgZXh0cmFJbmZv
LmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpIC0gMTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkg
PD0gaW5kZXgpIHsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICgoeXl2c3BbKDMp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QpIHsKKyAgICAgICAgICAgICAgICBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gKHl5dnNwWygzKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBl
eHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5k
ZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxk
IHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAiIiwgIlsiLCBleHRyYUluZm8uY19z
dHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAo
NCldLmxleCkubGluZSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5pc0FycmF5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6
ZSgpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRNYXhBcnJheVNpemUo
KSA8PSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25z
dGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUo
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9k
ZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBv
aW50ZXIoKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1
ZSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlTZXRNYXhTaXplKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCksIDAsIGZhbHNlLCAoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0
SUNvbnN0KCkgPj0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGluZGV4IG91dCBvZiByYW5nZSAnIiA8PCAo
eXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpIDw8ICInIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9T
dHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCku
bGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZv
cmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUiKTsKICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICBpbmRleCA9ICAoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxT
aXplKCkgLSAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAoeXl2c3BbKDMp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7Ci0gICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxz
cFsoMikgLSAoNCldKSk7CisKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVj
dCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxp
bmUpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4SW5kaXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICg0KV0pKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEZDb25z
dCgwLjBmKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwg
RXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwogICAgICAgICB9IGVsc2Ug
aWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkp
IHsKICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CisgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCku
Z2V0VHlwZU5hbWUoKSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNp
emUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4
KCkpKTsKIAogICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCiAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7Ci0gICAgICAgICAg
ICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25z
dCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAgICAgICB9IGVsc2Ug
aWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3Rvcigp
KSB7Ci0gICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyKSk7Ci0gICAg
ICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkK
KyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlw
ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBl
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNp
b24oKSwgRXZxQ29uc3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKQorICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3Jhcnks
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6
ZSgpKSk7CisgICAgICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5pc1ZlY3RvcigpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2
cUNvbnN0KSk7CisgICAgICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKQorICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKKyAgICAgICAg
ZWxzZQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBl
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpOwot
ICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEyOgorICBjYXNlIDEwOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTM6CisgIGNhc2UgMTE6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJjYW5ub3QgYXBwbHkgZG90IG9w
ZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8g
YW4gYXJyYXkiLCAiLiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5pc1ZlY3RvcigpKSB7CiAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAg
ICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCooeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKSkgeworICAg
ICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VWZWN0b3JGaWVsZHMoKih5eXZzcFsoMykgLSAo
MyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUp
KSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAgICAgICAgZmll
bGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Qp
IHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9yIGZpZWxkcwotICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9y
Tm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgp
LmxpbmUpOwogICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtMjQyMiwxMyArMjM2MSwxMyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCwgKGludCkgKCooeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLnN0cmluZykuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIFRTdHJpbmcgdmVjdG9yU3RyaW5nID0gKih5eXZzcFsoMykgLSAoMyldLmxleCku
c3RyaW5nOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSk7Ci0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3RvclN3aXp6bGUsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN3aXp6bGUoZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CiAg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRU
eXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5
cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNp
c2lvbigpLCBFdnFUZW1wb3JhcnksIChpbnQpIHZlY3RvclN0cmluZy5zaXplKCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgewogICAgICAgICAgICAgVE1hdHJpeEZpZWxkcyBm
aWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eWxzcFsoMykgLSAoMyld
KSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0cml4RmllbGRzKCooeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5saW5lKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZUNvbCA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGZpZWxkcy5yb3cgPSAwOwpAQCAtMjQzNyw1NyArMjM3Niw2MyBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGZpZWxkcy53aG9sZVJvdyB8fCBmaWVsZHMud2hv
bGVDb2wpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMp
XSksICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVudGVkIHlldCIsICIuIik7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAi
IG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0SUNvbnN0KDApOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5k
ZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDMpIC0gKDMpXSkp
OwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwor
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwogICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCks
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24o
KSxFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXROb21pbmFsU2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAg
ICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpICsgZmll
bGRzLnJvdyk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMykgLSAoMyldKSk7Ci0gICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
aW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CiAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAg
Ym9vbCBmaWVsZEZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBURmllbGRMaXN0JiBm
aWVsZHMgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlw
ZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwot
ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGlmIChmaWVsZHNbaV0tPm5hbWUoKSA9PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5zdHJpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlm
aWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKih5eXZzcFsoMykgLSAo
MyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKKyAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCogZmllbGRzID0gKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAg
ICAgICAgICAgIGlmIChmaWVsZHMgPT0gMCkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRz
IiwgIkludGVybmFsIEVycm9yIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgZmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoKCpmaWVsZHMpW2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpID09ICooeXl2c3BbKDMpIC0gKDMp
XS5sZXgpLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhl
IHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVu
IHZhcmlvdXMgc3RydWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNv
bnN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmFkZENvbnN0U3RydWN0KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoKigqZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUs
IG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMg
c3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5z
ZXRJQ29uc3QoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgKigq
ZmllbGRzKVtpXS50eXBlLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0U3RydWN0LCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoKigqZmllbGRzKVtpXS50eXBlKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAg
ICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgKmZpZWxkc1tpXS0+dHlwZSgpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOwot
ICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgz
KV0pKTsKLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBubyBzdWNoIGZpZWxkIGlu
IHN0cnVjdHVyZSIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwg
IiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3Ry
aW5nLT5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIg
ZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXggb24g
bGVmdCBoYW5kIHNpZGUiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUs
ICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXgg
b24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIo
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKICAgICAgICAgfQpAQCAtMjQ5NSwzNSArMjQ0MCwzNSBAQCB5eXJlZHVjZToK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ6CisgIGNhc2UgMTI6CiAKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwg
IisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAg
ICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxp
bmUsICIrKyIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0
SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWygyKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1h
dGgoRU9wUG9zdEluY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIs
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE1OgorICBjYXNlIDEzOgogCiAgICAgewotICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICItLSIsICh5
eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiLS0i
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVu
dCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBv
c3REZWNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAg
ICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNjoKKyAgY2FzZSAxNDoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRl
eHQtPmludGVnZXJFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAiW10iKSkKQEAgLTI1MzIsNyArMjQ3Nyw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNzoKKyAgY2FzZSAxNToKIAogICAgIHsKICAgICAgICAgVEZ1
bmN0aW9uKiBmbkNhbGwgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAt
MjU0NiwxOCArMjQ5MSwxOCBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFt
ZXRlcnMgd2lsbCBiZSB2ZXJpZmllZCBhbGdvcml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwog
ICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRo
aXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1
Y3RvckVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmludGVybU5vZGUsICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5s
aW5lLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICpmbkNhbGwsIG9wLCAm
dHlwZSkpIHsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAg
ICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1Y3Rvciwgb2YgdHlwZSAndHlwZScuCiAgICAgICAgICAg
ICAgICAgLy8KLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVy
bU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0
cnVjdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBm
bkNhbGwsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdn
cmVnYXRlT3BlcmF0b3IoMCwgb3AsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxp
bmUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5zZXRUeXBlKHR5cGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtMjU2NiwxMyArMjUx
MSwxMyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBjb25zdCBURnVu
Y3Rpb24qIGZuQ2FuZGlkYXRlOwogICAgICAgICAgICAgYm9vbCBidWlsdEluOwotICAgICAgICAg
ICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rpb24oKHl5bHNwWygxKSAtICgxKV0p
LCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+
ZmluZEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgZm5DYWxsLCAmYnVp
bHRJbik7CiAgICAgICAgICAgICBpZiAoZm5DYW5kaWRhdGUpIHsKICAgICAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgICAgIC8vIEEgZGVjbGFyZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgICAgICBpZiAoYnVpbHRJbiAmJiAhZm5DYW5kaWRhdGUtPmdldEV4
dGVuc2lvbigpLmVtcHR5KCkgJiYKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5z
aW9uRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNp
b24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVj
aygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNp
b24oKSkpIHsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBvcCA9IGZuQ2FuZGlkYXRlLT5nZXRCdWlsdElu
T3AoKTsKQEAgLTI1ODQsNyArMjUyOSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyZWF0IGl0IGxpa2UgYSBidWls
dC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAg
ICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmludGVybU5vZGUsICh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwgKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtKS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApICB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZv
U3RyZWFtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAi
YnVpbHQgaW4gdW5hcnkgb3BlcmF0b3IgZnVuY3Rpb24uICBUeXBlOiAiIDw8IHN0YXRpY19jYXN0
PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCk7CkBAIC0yNTkzLDEyICsyNTM4LDEyIEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFlZRVJST1I7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
c2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dy
ZWdhdGUsIG9wLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNl
dEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVn
YXRlLCBvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uIGNhbGwKIAotICAgICAgICAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdn
cmVnYXRlT3BlcmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUs
IEVPcEZ1bmN0aW9uQ2FsbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlLCBFT3BGdW5jdGlvbkNhbGwsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7
CiAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0
VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJuVHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAg
ICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEg
YnVpbHRJbiBmdW5jdGlvbiBvciBhIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgpAQCAtMjYyNSw3ICsy
NTcwLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9k
ZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlv
bkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygx
KSAtICgxKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMSkgLSAoMSld
LmludGVybSkubGluZSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjMzLDM3ICsyNTc4LDM5IEBAIHl5cmVkdWNlOgog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODoKKyAgY2FzZSAxNjoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOToKKyAgY2FzZSAxNzoKIAogICAgIHsKLSAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAibWV0aG9kcyBhcmUgbm90IHN1cHBv
cnRlZCIsICIiKTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtKS5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAo
MyldLmludGVybSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIwOgorICBjYXNlIDE4
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5s
ZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIxOgorICBjYXNlIDE5Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVy
bSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LmxpbmU7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIyOgorICBjYXNlIDIwOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5mdW5jdGlvbik7CkBAIC0yNjcxLDcgKzI2MTgsNyBAQCB5eXJlZHVjZToKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM6CisgIGNhc2UgMjE6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0
aW9uKTsKQEAgLTI2NzksNyArMjYyNiw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAyNDoKKyAgY2FzZSAyMjoKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBw
YXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRUeXBlKCkpIH07CkBAIC0yNjg5LDI0ICsyNjM2LDI0IEBAIHl5cmVkdWNlOgog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNToKKyAgY2FzZSAyMzoKIAogICAgIHsKICAg
ICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIH07CiAgICAgICAgICh5eXZzcFso
MSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5j
dGlvbjsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9k
ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMyldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVy
bU5vZGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNjoK
KyAgY2FzZSAyNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyNzoKKyAgY2FzZSAyNToKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTI3MjAsMzkg
KzI2NjcsMzkgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAg
ICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubWF0cml4KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
c2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0
MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0
TWF0MzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3Ry
dWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTogb3AgPSBF
T3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjogb3Ag
PSBFT3BDb25zdHJ1Y3RWZWMyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzog
b3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
NDogb3AgPSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RGbG9hdDsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOyAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RWZWM0OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAg
ICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0SW50OyAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0SW50OyAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoIml2ZWMyIiwgKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0SVZl
YzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IG9w
ID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjogb3Ag
PSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9
IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0g
RU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoImJ2
ZWMyIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0
cnVjdEJWZWMyOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJidmVjMyIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3Ag
PSBFT3BDb25zdHJ1Y3RCVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAg
ICBGUkFHX1ZFUlRfT05MWSgiYnZlYzQiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
bGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJjYW5ub3QgY29uc3RydWN0
IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJh
c2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS50eXBlKS50eXBlID0gRWJ0RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3Ag
PSBFT3BDb25zdHJ1Y3RGbG9hdDsKQEAgLTI3NjUsMTAgKzI3MTIsMTAgQEAgeXlyZWR1Y2U6CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI4OgorICBjYXNlIDI2OgogCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwg
Kih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJl
c2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0
aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJp
bmcsIHR5cGUpOwpAQCAtMjc3Niw0NiArMjcyMyw1NyBAQCB5eXJlZHVjZToKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMjk6CisgIGNhc2UgMjc6CisKKyAgICB7CisgICAgICAgIGlmIChj
b250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAq
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAg
ICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3RyaW5nLCB0eXBlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBm
dW5jdGlvbjsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMjg6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzMDoK
KyAgY2FzZSAyOToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hl
Y2soKHl5bHNwWygxKSAtICgyKV0pLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5
eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3JlbWVudCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3JlbWVudCwgKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXls
c3BbKDEpIC0gKDIpXSksICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5
T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDMxOgorICBjYXNlIDMw
OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3Bb
KDEpIC0gKDIpXSksICItLSIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygxKSAt
ICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFy
eU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAo
MildKSwgIi0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5
eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAg
IH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzI6CisgIGNhc2UgMzE6CiAKICAgICB7
CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLm9wICE9IEVPcE51bGwpIHsK
LSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMSkgLSAoMild
KSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJvck9wID0gIiI7CiAgICAgICAg
ICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkub3ApIHsKQEAgLTI4MjMs
NyArMjc4MSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIGNhc2UgRU9wTG9naWNhbE5v
dDogZXJyb3JPcCA9ICIhIjsgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cigoeXlsc3BbKDEpIC0gKDIpXSksIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lLCBlcnJv
ck9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICAgICAgfQpAQCAtMjgzMiwzMzcg
KzI3OTAsMzM5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzMzoK
KyAgY2FzZSAzMjoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOdWxsOyA7fQorICAg
IHsgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5
dmFsLmludGVybSkub3AgPSBFT3BOdWxsOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzQ6Cisg
IGNhc2UgMzM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTmVnYXRpdmU7IDt9Cisg
ICAgeyAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAo
eXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MzU6CisgIGNhc2UgMzQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5v
dDsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KICAgICBicmVhazsK
IAotICBjYXNlIDM2OgorICBjYXNlIDM1OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDM3OgorICBjYXNlIDM2OgogCiAgICAgewotICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BNdWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCIqIiwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wTXVsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIioi
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMzg6CisgIGNhc2UgMzc6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cERpdiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgRlJBR19WRVJUX09OTFkoIi8iLCAoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICIvIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiLyIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzOToK
KyAgY2FzZSAzODoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA0MDoKKyAgY2FzZSAzOToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
QWRkLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIp
IC0gKDMpXSksICIrIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiKyIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MToKKyAg
Y2FzZSA0MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wU3ViLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICItIiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCAiLSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAg
ICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MjoKKyAgY2FzZSA0MToKIAogICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2Fz
ZSA0MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA0NDoKKyAgY2FzZSA0MzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1Ro
YW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAiPCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIjwiLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAg
dW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXls
c3BbKDIpIC0gKDMpXSkpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDU6
CisgIGNhc2UgNDQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFu
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxz
cFsoMikgLSAoMyldKSwgIj4iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI+IiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5
bHNwWygyKSAtICgzKV0pKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDQ2
OgorICBjYXNlIDQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVx
dWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFs
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
KHl5bHNwWygyKSAtICgzKV0pLCAiPD0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI8PSIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA0NzoKKyAgY2FzZSA0NjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3Jl
YXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0g
KDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3Jl
YXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIj49IiwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CiAgICAgICAgIH0KICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNDg6CisgIGNhc2UgNDc6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDk6CisgIGNhc2UgNDg6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BFcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIj09IiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4
KS5saW5lLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CiAgICAgICAgIH0KICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgNTA6CisgIGNhc2UgNDk6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxz
cFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BOb3RFcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CiAgICAgICAgIH0KICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNTE6CisgIGNhc2UgNTA6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTI6CisgIGNhc2UgNTE6CiAKICAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTM6CisgIGNhc2UgNTI6
CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTQ6
CisgIGNhc2UgNTM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgNTU6CisgIGNhc2UgNTQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cExvZ2ljYWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgz
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2lj
YWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4
KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICImJiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiYm
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsK
ICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2
c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDU2OgorICBjYXNlIDU1OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDU3OgorICBjYXNlIDU2OgogCiAgICAgewotICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BMb2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMb2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiXl4iLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUsICJeXiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKICAgICAgICAgfQogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1ODoKKyAgY2FzZSA1NzoKIAogICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1OToKKyAgY2FzZSA1ODoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJ8fCIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgInx8IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwogICAgICAg
ICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDYwOgorICBjYXNlIDU5OgogCiAgICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDYxOgorICBjYXNl
IDYwOgogCiAgICAgewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3Bb
KDIpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
KyAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4
KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDUpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFso
MSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7CiAgICAgICAgIGlmICgoeXl2c3Bb
KDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5eXZzcFso
NSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDUpXSksICI6IiwgKHl5dnNwWygzKSAtICg1KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoNSkg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICg1KV0ubGV4KS5s
aW5lLCAiOiIsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDUp
IC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA2MjoKKyAgY2FzZSA2MToKIAogICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2MzoKKyAgY2FzZSA2MjoKIAogICAgIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgzKV0pLCAi
YXNzaWduIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAg
ICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5pbnRl
cm0pLmxpbmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24o
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCh5eXZzcFsoMikgLSAoMyld
LmludGVybSkub3AsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtKS5saW5lKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcigoeXlsc3BbKDIp
IC0gKDMpXSksICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YXNzaWduRXJyb3IoKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5saW5lLCAiYXNzaWduIiwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAorICBj
YXNlIDYzOgorCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRl
cm0pLm9wID0gRU9wQXNzaWduOyA7fQorICAgIGJyZWFrOworCiAgIGNhc2UgNjQ6CiAKLSAgICB7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyA7fQorICAgIHsgRlJBR19WRVJUX09OTFko
Iio9IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0pLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9w
TXVsQXNzaWduOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjU6CiAKLSAgICB7ICh5eXZhbC5p
bnRlcm0pLm9wID0gRU9wTXVsQXNzaWduOyA7fQorICAgIHsgRlJBR19WRVJUX09OTFkoIi89Iiwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNz
aWduOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjY6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0p
Lm9wID0gRU9wRGl2QXNzaWduOyA7fQorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
OyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgO30KICAgICBicmVhazsKIAogICBj
YXNlIDY3OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgO30KKyAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGlu
ZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BT
dWJBc3NpZ247IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2ODoKIAotICAgIHsgKHl5dmFsLmlu
dGVybSkub3AgPSBFT3BTdWJBc3NpZ247IDt9Ci0gICAgYnJlYWs7Ci0KLSAgY2FzZSA2OToKLQog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDcwOgorICBjYXNlIDY5OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEo
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLCIs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSwgIiwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAg
ICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzE6CisgIGNhc2UgNzA6CiAKICAg
ICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQpAQCAtMzE3MSw3ICszMTMxLDcgQEAgeXlyZWR1
Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDcyOgorICBjYXNlIDcxOgogCiAgICAg
ewogICAgICAgICBURnVuY3Rpb24gJmZ1bmN0aW9uID0gKigoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLmZ1bmN0aW9uKTsKQEAgLTMxODUsMTMgKzMxNDUsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICBjb25zdCBUUGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAg
ICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBUVmFyaWFibGUgdmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOworICAgICAg
ICAgICAgICAgIFRWYXJpYWJsZSAqdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFtLm5hbWUs
ICpwYXJhbS50eXBlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90b3R5
cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUuZ2V0VW5pcXVlSWQoKSwgdmFyaWFi
bGUuZ2V0TmFtZSgpLCB2YXJpYWJsZS5nZXRUeXBlKCksICh5eWxzcFsoMSkgLSAoMildKSksICh5
eWxzcFsoMSkgLSAoMildKSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgp
LCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eWxzcFsoMSkgLSAoMildKSks
ICh5eWxzcFsoMSkgLSAoMildKSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtKS5saW5lKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTMyMDIsNyArMzE2Miw3IEBAIHl5cmVkdWNlOgog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MzoKKyAgY2FzZSA3MjoKIAogICAgIHsKICAg
ICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJtQWdncmVnYXRlKQpAQCAt
MzIxMSwyMiArMzE3MSwyMiBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNzQ6CisgIGNhc2UgNzM6CiAKICAgICB7CiAgICAgICAgIGlmICgoKHl5dnNwWygyKSAtICg0
KV0uaW50ZXJtLnByZWNpc2lvbikgPT0gRWJwSGlnaCkgJiYgKGNvbnRleHQtPnNoYWRlclR5cGUg
PT0gU0hfRlJBR01FTlRfU0hBREVSKSAmJiAhY29udGV4dC0+ZnJhZ21lbnRQcmVjaXNpb25IaWdo
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDQpXSksICJwcmVj
aXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZSwgInBy
ZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdocCIpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICgh
Y29udGV4dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbiggKHl5dnNwWygzKSAtICg0
KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5pbnRlcm0ucHJlY2lzaW9uKSApKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDQpXSksICJpbGxlZ2Fs
IHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2lj
U3RyaW5nKCh5eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlKS50eXBlKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICJpbGxlZ2FsIHR5
cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3Ry
aW5nKCh5eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlKS50eXBlKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IDA7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc1OgorICBjYXNlIDc0
OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzI0MCwxMiArMzIwMCwxMiBAQCB5eXJlZHVjZToK
ICAgICAgICAgVEZ1bmN0aW9uKiBwcmV2RGVjID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oY29u
dGV4dC0+c3ltYm9sVGFibGUuZmluZCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24p
LT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAgICAgIGlmIChwcmV2RGVjKSB7CiAgICAgICAgICAg
ICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9ICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5mdW5jdGlvbiktPmdldFJldHVyblR5cGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2
ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlv
biktPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1
bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7ICsr
aSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5nZXRR
dWFsaWZpZXIoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJh
bShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhh
dmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIg
cXVhbGlmaWVycyIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdldFBhcmFt
KGkpLnR5cGUtPmdldFF1YWxpZmllclN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTMy
NTcsNiArMzIxNyw3IEBAIHl5cmVkdWNlOgogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAg
U28sIHBhc3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3lt
Ym9sIHRhYmxlLgogICAgICAgICAvLwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CisgICAgICAgICh5eXZhbC5pbnRl
cm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAKICAgICAgICAgLy8gV2Un
cmUgYXQgdGhlIGlubmVyIHNjb3BlIGxldmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBh
bmQgYm9keSBzdGF0ZW1lbnQuCiAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBl
IHRvIHRoZSBzdXJyb3VuZGluZyBzY29wZSBpbnN0ZWFkLgpAQCAtMzI2NCwyMSArMzIyNSwyMSBA
QCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzY6CisgIGNhc2UgNzU6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzc6
CisgIGNhc2UgNzY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgNzg6CisgIGNhc2UgNzc6CiAKICAgICB7CiAgICAgICAgIC8vIEFkZCB0aGUgcGFy
YW1ldGVyCkBAIC0zMjkwLDcgKzMyNTEsNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNzk6CisgIGNhc2UgNzg6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0zMzAx
LDcgKzMyNjIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBU
aGlzIHBhcmFtZXRlciA+IGZpcnN0IGlzIHZvaWQKICAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJjYW5ub3QgYmUgYW4gYXJndW1l
bnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgImNhbm5vdCBiZSBhbiBhcmd1
bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgZGVsZXRlICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybSkucGFyYW0udHlwZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTMzMTIsMTUgKzMyNzMsMTUg
QEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDgwOgorICBjYXNlIDc5
OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMikgLSAoMyldKSwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0
dXJuIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5x
dWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwg
Z2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZp
ZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAg
ICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZvbHZlZCBhcyB3ZWxsLi4uCi0gICAg
ICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAo
MyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCiAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gYXMgYSBwcm90b3R5cGUg
YWZ0ZXIgcGFyc2luZyBpdCAod2UgZG8gbm90IHN1cHBvcnQgcmVjdXJzaW9uKQpAQCAtMzMzMywx
MTAgKzMyOTQsMTEyIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4
MToKKyAgY2FzZSA4MDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS50eXBlKS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMikgLSAoMildKSwgImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgKHl5dnNw
WygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAn
dm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnRleHQt
PnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2so
KHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJp
bmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUUGFyYW1ldGVy
IHBhcmFtID0geyh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBuZXcgVFR5cGUoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKX07CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUg
PSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBh
cmFtID0gcGFyYW07CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDgyOgorICBjYXNlIDgx
OgogCiAgICAgewogICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBtYWtlIGFuIGFycmF5IG91
dCBvZiB0aGlzIHR5cGUKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2so
KHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZykp
CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFso
NCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5l
dyBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBUUGFyYW1l
dGVyIHBhcmFtID0geyAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSB9OworICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lOwog
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA4MzoKKyAgY2FzZSA4MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFy
YW1FcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5
eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJv
ckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmll
ciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NDoKKyAgY2FzZSA4MzoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0p
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5bHNw
WygyKSAtICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZz
cFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5w
YXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUs
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2
cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5p
bnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNr
KCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDg1OgorICBjYXNlIDg0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9y
Q2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSku
cXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmlu
dGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
dHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5
dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDg2OgorICBjYXNlIDg1OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0g
KDIpXSksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0p
LnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBp
ZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9y
YXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSku
cGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODc6
CisgIGNhc2UgODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9
IEV2cUluOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4ODoKKyAgY2FzZSA4NzoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDg5OgorICBjYXNlIDg4OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFPdXQ7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDkwOgorICBjYXNlIDg5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1
YWxpZmllcikgPSBFdnFJbk91dDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTE6Cisg
IGNhc2UgOTA6CiAKICAgICB7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBU
VHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpIH07CkBAIC0zNDQ0LDEwNCArMzQw
NywxMDQgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDkyOgorICBj
YXNlIDkxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDkzOgorICBjYXNlIDky
OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS50eXBlLnR5
cGUgPT0gRWJ0SW52YXJpYW50ICYmICEoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN5bWJvbCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAi
dW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykg
LSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNs
YXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIo
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtKS50eXBlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBzeW1ib2wsICh5eWxzcFso
MykgLSAoMyldKSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBU
VHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5s
ZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0p
LmludGVybU5vZGUsIHN5bWJvbCwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKICAgICAg
ICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxz
cFsoMykgLSAoMyldKSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwg
KHl5dmFsLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygzKSAt
ICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5
cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJp
bmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYg
KGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKih5eXZzcFso
MykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5s
ZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSku
dHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJp
YWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk0Ogor
ICBjYXNlIDkzOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSku
dHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5
eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4
dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2c3BbKDMp
IC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB0cnVl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxz
cFsoNCkgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSB8fCBjb250ZXh0
LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg1KV0pLCAoeXl2c3BbKDEp
IC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJy
b3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFso
NCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUuc2V0QXJyYXkodHJ1ZSk7CiAgICAgICAg
ICAgICBUVmFyaWFibGUqIHZhcmlhYmxlOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
RXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0
cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCku
bGluZSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTU6CisgIGNhc2Ug
OTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygz
KSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25J
bml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNild
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDYp
XS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAt
ICg2KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoNildLmludGVybSk7
CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAt
ICg2KV0pLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5
UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNild
LmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50
eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWyg0KSAtICg2
KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBz
aXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNw
Wyg0KSAtICg2KV0pLCAoeXl2c3BbKDUpIC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
c2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2
c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUuc2V0QXJyYXkodHJ1ZSwg
c2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAqKHl5dnNw
WygzKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwg
dmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2
c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCh5
eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLnNldEFycmF5
U2l6ZShzaXplKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNildLmlu
dGVybSkuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJs
ZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwgKih5eXZzcFsoMykgLSAoNildLmxleCku
c3RyaW5nLCB0eXBlLCAoeXlsc3BbKDMpIC0gKDYpXSkpLCAoeXlsc3BbKDMpIC0gKDYpXSkpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS5pbnRlcm1O
b2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlID8gdmFyaWFibGUt
PmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcsIHR5cGUs
ICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSksICh5eXZzcFsoMykgLSAoNildLmxleCkubGlu
ZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTY6CisgIGNhc2Ug
OTU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJt
Tm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygz
KSAtICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NSldLmludGVybSkudHlwZSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxp
emVyKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNSldLmxleCku
c3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsICh5eXZzcFsoNSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAo
eXlsc3BbKDQpIC0gKDUpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0pLmludGVybU5vZGUsIGludGVybU5vZGUsICh5eXZzcFsoNCkgLSAoNSldLmxleCku
bGluZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSku
aW50ZXJtQWdncmVnYXRlID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNTUxLDc3ICszNTE0LDc3IEBAIHl5cmVkdWNlOgog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoKKyAgY2FzZSA5NjoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSwgKHl5bHNwWygxKSAt
ICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpLCAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDk4OgorICBjYXNlIDk3OgogCiAgICAgewotICAgICAgICBUSW50ZXJtU3ltYm9sKiBz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKSwg
KHl5bHNwWygyKSAtICgyKV0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3Bb
KDIpIC0gKDIpXSkpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywg
VFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKSwgKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLmxpbmUpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmlu
ZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogCiAg
ICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKih5
eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJs
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTk6CisgIGNhc2UgOTg6CiAK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgInVuc2l6
ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0
ZWQiLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0
cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSwgKHl5bHNwWygyKSAt
ICg0KV0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDQpXSkp
OworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsK
KyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LnR5cGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDA6CisgIGNhc2UgOTk6CiAK
ICAgICB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0udHlwZSkpOwogICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNp
emVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWyg0KSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
KHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eWxzcFsoMikgLSAoNSldKSk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICg1KV0pKTsKKyAgICAg
ICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMikgLSAo
NSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAt
ICg1KV0ubGV4KS5saW5lKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0u
aW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5
eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlw
ZSksIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygo
eXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB0cnVlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtLnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5
cGVFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJt
LnR5cGUpKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAt
ICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5
eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0u
aW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3Bb
KDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUq
IHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2so
KHl5bHNwWygzKSAtICg1KV0pLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybS50eXBlKSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUp
LCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgICAgICBzeW1ib2wtPnNl
dElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKQEAgLTM2MjksMjEgKzM1OTIsMjEgQEAgeXly
ZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMToKKyAgY2FzZSAxMDA6CiAK
ICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5
eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAgVEludGVybU5vZGUqIGlu
dGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxz
cFsoMikgLSAoNCldKSwgKih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0udHlwZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0
aWFsaXplcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKICAgICAgICAgLy8K
ICAgICAgICAgLy8gQnVpbGQgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uCiAgICAgICAgIC8v
CiAgICAgICAgICAgICBpZihpbnRlcm1Ob2RlKQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KGludGVybU5vZGUsICh5eWxzcFsoMykgLSAoNCldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5lKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSAwOwogICAgICAgICB9IGVsc2UgewpAQCAtMzY1Myw1OCArMzYxNiw1OCBAQCB5eXJlZHVjZToK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAyOgorICBjYXNlIDEwMToKIAogICAgIHsK
LSAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNsYXJhdGlvbiIsICh5eWxzcFsoMSkg
LSAoMildKSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFso
MSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJp
YW50IHZhcnlpbmciKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNsYXJhdGlv
biIsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CisgICAgICAgIGlmIChjb250ZXh0LT5n
bG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkudHlwZS5zZXRC
YXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFsoMikgLSAo
MildKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUuc2V0QmFzaWMoRWJ0SW52YXJpYW50
LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwog
ICAgICAgICBpZiAoISh5eXZzcFsoMikgLSAoMildLmxleCkuc3ltYm9sKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVk
IGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGlu
dmFyaWFudCIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgKHl5
dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQogICAgICAgICBlbHNl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5n
LCBUVHlwZSgoeXl2YWwuaW50ZXJtKS50eXBlKSwgKHl5bHNwWygyKSAtICgyKV0pKTsKLSAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0pKTsKKyAgICAgICAg
ICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2woMCwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2YWwuaW50ZXJt
KS50eXBlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdn
cmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKICAgICAgICAgfQog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDM6CisgIGNhc2UgMTAyOgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpOwogCiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuYXJyYXkp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgIm5vdCBz
dXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIs
ICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KGZhbHNl
KTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDQ6CisgIGNhc2Ug
MTAzOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUp
LmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSks
ICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkubGluZSwgIm5vdCBzdXBw
b3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS5zZXRBcnJh
eShmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAgICAgICAgICgoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRCb29sIHx8ICh5eXZzcFsoMikg
LSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEludCkpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdl
dFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVy
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
dHlwZSkubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCgoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQpICYmCiAgICAg
ICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0Qm9vbCB8
fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3QgYmUgYm9v
bCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5
cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFs
aWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSk7CkBAIC0zNzEy
LDcxICszNjc1LDcxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MDU6CisgIGNhc2UgMTA0OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAoeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLmxpbmUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6Cisg
IGNhc2UgMTA1OgogCiAgICAgewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRlIiwgKHl5
bHNwWygxKSAtICgxKV0pKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2so
KHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCks
ICJhdHRyaWJ1dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNo
ZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0
cmlidXRlLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5s
aW5lKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA3OgorICBjYXNlIDEwNjoKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAt
ICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikp
CisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWlu
ZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4
dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0g
KDEpXSkpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFWYXJ5aW5nT3V0LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2
cVZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDg6CisgIGNhc2Ug
MTA3OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXls
c3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImlu
dmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNr
KCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NI
QURFUikKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFyeWlu
Z091dCwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRW
YXJ5aW5nSW4sICh5eWxzcFsoMSkgLSAoMildKSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgKHl5dnNwWygx
KSAtICgyKV0ubGV4KS5saW5lKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA5Ogor
ICBjYXNlIDEwODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hl
Y2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCksICJ1bmlmb3JtIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICh5
eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Vm9pZCwgRXZxVW5pZm9ybSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEwOgorICBjYXNlIDEwOToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsK
IAogICAgICAgICBpZiAoKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPT0gRWJwVW5kZWZp
bmVkKSB7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNpb24oKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLnR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9y
Q2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAo
Y29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlw
ZSkubGluZSwgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS50eXBlKSkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMTE6CisgIGNhc2UgMTEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
ID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwpAQCAtMzc4NCwyMzkgKzM3NDcsMjQ3
IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTI6CisgIGNhc2Ug
MTExOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBIaWdo
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTM6CisgIGNhc2UgMTEyOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBNZWRpdW07CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDExNDoKKyAgY2FzZSAxMTM6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExvdzsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTE1OgorICBjYXNlIDExNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTE2OgorICBjYXNlIDExNToKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAotICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygzKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxMTc6CisgIGNhc2UgMTE2OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Vm9pZCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTg6CisgIGNhc2UgMTE3OgogCiAgICAg
ewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEx
OToKKyAgY2FzZSAxMTg6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5
eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMjA6CisgIGNhc2UgMTE5OgogCiAgICAgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjE6CisgIGNhc2UgMTIwOgog
CiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QWdncmVnYXRlKDIpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjI6Cisg
IGNhc2UgMTIxOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxz
cFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxMjM6CisgIGNhc2UgMTIyOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMjQ6CisgIGNhc2UgMTIzOgogCiAgICAgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTI1OgorICBjYXNlIDEyNDoKIAogICAgIHsKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdh
dGUoMyk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEyNjoKKyAgY2FzZSAxMjU6CiAK
ICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QWdncmVnYXRlKDQpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjc6CisgIGNh
c2UgMTI2OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwg
cXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEy
ODoKKyAgY2FzZSAxMjc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5
eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTI5OgorICBjYXNlIDEyODoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwg
cXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxMzA6CisgIGNhc2UgMTI5OgogCiAgICAgeworICAgICAgICBGUkFHX1ZF
UlRfT05MWSgibWF0MiIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwg
dHJ1ZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzMToKKyAgY2FzZSAxMzA6CiAK
ICAgICB7CisgICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQzIiwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTMyOgorICBjYXNlIDEzMToKIAogICAgIHsKKyAgICAgICAgRlJBR19WRVJUX09OTFkoIm1h
dDQiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Rmxv
YXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQsIHRydWUpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzM6CisgIGNhc2UgMTMyOgogCiAgICAgeworICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5s
aW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkQs
IHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDEzNDoKKyAgY2FzZSAxMzM6CiAKICAgICB7CisgICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJzYW1wbGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTM1OgorICBjYXNlIDEzNDoKIAogICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNh
bXBsZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxP
RVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQorICAgICAg
ICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgcXVhbCwg
KHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzNjoKKyAgY2FzZSAxMzU6CiAKICAg
ICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90ZXh0
dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEp
IC0gKDEpXSksICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXIyRFJlY3QiKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgInVuc3VwcG9y
dGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CisgICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyMkRSZWN0Iiwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIy
RFJlY3QsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM3OgorICBjYXNlIDEz
NjoKIAogICAgIHsKKyAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIsICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS50eXBlKS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEz
ODoKKyAgY2FzZSAxMzc6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC00MDI1LDg2ICszOTk2LDg1
IEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0gc3Rh
dGljX2Nhc3Q8VFZhcmlhYmxlKj4oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zeW1ib2wpLT5nZXRU
eXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnVzZXJEZWYgPSAmc3RydWN0dXJlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
Mzk6CisgIGNhc2UgMTM4OgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJh
dGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2c3BbKDIpIC0gKDMpXS5sZXgpLnN0cmluZykp
IGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERl
Y2xhcmF0aW9uKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoMyld
LmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTQwOgorICBjYXNlIDEzOToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2Vy
dmVkRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDYpXSksICooeXl2c3BbKDIpIC0gKDYpXS5sZXgp
LnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNw
WygyKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRUeXBlKiBzdHJ1Y3R1
cmUgPSBuZXcgVFR5cGUobmV3IFRTdHJ1Y3R1cmUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJp
bmcsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5maWVsZExpc3QpKSk7CisgICAgICAgIFRUeXBl
KiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLnR5cGVMaXN0
KSwgKih5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKTsKICAgICAgICAgVFZhcmlhYmxlKiB1
c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcs
ICpzdHJ1Y3R1cmUsIHRydWUpOwogICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5p
bnNlcnQoKnVzZXJUeXBlRGVmKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygyKSAtICg2KV0pLCAicmVkZWZpbml0aW9uIiwgKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJp
bmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMikgLSAoNildLmxleCkubGluZSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNild
LmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5bHNwWygxKSAtICg2KV0pKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5
dnNwWygxKSAtICg2KV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS51
c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVjbGFyYXRp
b24oKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQxOgorICBjYXNlIDE0MDoKIAot
ICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAtICgy
KV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7
IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRl
eHQtPnJlY292ZXIoKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MjoKKyAgY2FzZSAxNDE6
CiAKICAgICB7Ci0gICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUobmV3IFRTdHJ1
Y3R1cmUoTmV3UG9vbFRTdHJpbmcoIiIpLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uZmllbGRM
aXN0KSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwg
RXZxVGVtcG9yYXJ5LCAoeXlsc3BbKDEpIC0gKDUpXSkpOworICAgICAgICBUVHlwZSogc3RydWN0
dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNCkgLSAoNSldLmludGVybS50eXBlTGlzdCksIFRTdHJp
bmcoIiIpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3Qs
IEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5l
eGl0U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQz
OgorICBjYXNlIDE0MjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3Qp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZUxpc3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGVMaXN0KTsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ0OgorICBjYXNlIDE0MzoKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmZpZWxkTGlzdCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBURmll
bGQqIGZpZWxkID0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uZmllbGRMaXN0KSlbaV07Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0
KS0+c2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLmZp
ZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgewotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJkdXBsaWNhdGUgZmllbGQg
bmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LnR5cGVMaXN0KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+c2l6
ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLnR5cGVMaXN0
KSlbal0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
dHlwZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ld
LmxpbmUsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsICgq
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0udHlwZS0+Z2V0RmllbGROYW1l
KCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCktPnB1c2hfYmFjayhmaWVsZCk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGVMaXN0KS0+cHVzaF9iYWNrKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0
KSlbaV0pOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NToKKyAg
Y2FzZSAxNDQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9ICh5
eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGVMaXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS50eXBlTGlzdCk7CiAKLSAgICAg
ICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKCooeXl2
c3BbKDIpIC0gKDMpXS5pbnRlcm0uZmllbGRMaXN0KSlbMF0tPm5hbWUoKSwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hl
Y2soKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmxpbmUsICgqKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtLnR5cGVMaXN0KSlbMF0udHlwZS0+Z2V0RmllbGROYW1lKCksICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS50eXBlKSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZhbC5p
bnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBDYXJlZnVsIG5vdCB0byByZXBsYWNlIGFscmVh
ZHkga25vd24gYXNwZWN0cyBvZiB0eXBlLCBsaWtlIGFycmF5LW5lc3MKICAgICAgICAgICAgIC8v
Ci0gICAgICAgICAgICBUVHlwZSogdHlwZSA9ICgqKHl5dmFsLmludGVybS5maWVsZExpc3QpKVtp
XS0+dHlwZSgpOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0udHlw
ZUxpc3QpKVtpXS50eXBlOwogICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCh5eXZzcFso
MSkgLSAoMyldLmludGVybS50eXBlKS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5vbWlu
YWxTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5zaXplKTsKICAgICAgICAgICAg
IHR5cGUtPnNldE1hdHJpeCgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubWF0cml4KTsK
QEAgLTQxMTIsNzcgKzQwODIsODcgQEAgeXlyZWR1Y2U6CiAKICAgICAgICAgICAgIC8vIGRvbid0
IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXls
c3BbKDEpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCisgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLnR5cGUpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuYXJyYXkpCiAgICAg
ICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50
eXBlKS5hcnJheVNpemUpOwotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS51c2VyRGVmKQorICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS51c2VyRGVmKSB7CiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0U3RydWN0KCh5eXZz
cFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7CisgICAgICAg
ICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUp
LnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAq
KCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2ldKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSku
bGluZSwgKnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NjoK
KyAgY2FzZSAxNDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9
IE5ld1Bvb2xURmllbGRMaXN0KCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+
cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5maWVsZCkpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGVMaXN0KSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlw
ZUxpbmUpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ3OgorICBjYXNlIDE0NjoK
IAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmZpZWxkKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZUxpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLnR5cGVMaW5lKSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0ODoKKyAgY2FzZSAxNDc6CiAKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0p
LCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFso
MSkgLSAoMSldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
IAotICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5zdHJpbmcpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5l
KS50eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZUxpbmUpLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5zdHJpbmcpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NDk6CisgIGNhc2UgMTQ4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoNCldKSwgKih5eXZzcFsoMSkgLSAoNCldLmxleCkuc3Ry
aW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEp
IC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZykpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcg
VFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgaW50IHNpemUgPSAwOwotICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDQpXSks
ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNp
emUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlID0gbmV3IFRUeXBlKEVi
dFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmU7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygxKSAtICg0KV0ubGV4KS5zdHJp
bmcpOwogCi0gICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGQpID0gbmV3IFRGaWVsZCh0eXBlLCAo
eXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7CisgICAgICAgIGludCBzaXplOworICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgp
LmxpbmUsICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkK
KyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlTGluZSkudHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNTA6CisgIGNhc2UgMTQ5OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE1MToKKyAgY2FzZSAxNTA6CiAKICAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTI6CisgIGNhc2UgMTUxOgogCiAgICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFn
Z3JlZ2F0ZSk7IDt9CiAgICAgYnJlYWs7CiAKKyAgY2FzZSAxNTI6CisKKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IDt9CisgICAgYnJlYWs7CisKICAgY2FzZSAxNTM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CkBAIC00
MjEwLDExNyArNDE5MCwxMTIgQEAgeXlyZWR1Y2U6CiAKICAgY2FzZSAxNTg6CiAKLSAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
Tm9kZSk7IDt9Ci0gICAgYnJlYWs7Ci0KLSAgY2FzZSAxNTk6Ci0KICAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtQWdncmVnYXRlKSA9IDA7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjA6Cisg
IGNhc2UgMTU5OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxNjE6CisgIGNhc2UgMTYwOgogCiAgICAgeyBjb250ZXh0LT5zeW1i
b2xUYWJsZS5wb3AoKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2MjoKKyAgY2FzZSAxNjE6
CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKSAhPSAwKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CisgICAg
ICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0RW5k
TGluZSgoeXl2c3BbKDUpIC0gKDUpXS5sZXgpLmxpbmUpOwogICAgICAgICB9CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9ICh5eXZzcFsoMykgLSAoNSldLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjM6CisgIGNh
c2UgMTYyOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY0Ogor
ICBjYXNlIDE2MzoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2
NToKKyAgY2FzZSAxNjQ6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE2NjoKKyAgY2FzZSAxNjU6CiAKICAgICB7IGNvbnRleHQt
PnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY3
OgorICBjYXNlIDE2NjoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTY4OgorICBjYXNlIDE2NzoKIAogICAgIHsgY29udGV4dC0+
c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjk6
CisgIGNhc2UgMTY4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcwOgorICBjYXNlIDE2OToKIAog
ICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVn
YXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CisgICAgICAgICAgICAo
eXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0RW5kTGluZSgoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRl
KTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcxOgorICBjYXNlIDE3MDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5v
ZGUpLCAoeXlsb2MpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpLCAwKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcyOgor
ICBjYXNlIDE3MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRl
cm1Ob2RlKSwgKHl5bG9jKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
Tm9kZSksIDApOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzM6CisgIGNhc2UgMTcy
OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE3NDoKKyAgY2FzZSAxNzM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBzdGF0aWNfY2FzdDxUSW50ZXJtTm9kZSo+KCh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3NToKKyAgY2Fz
ZSAxNzQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXls
c3BbKDEpIC0gKDUpXSksICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNSld
LmxleCkubGluZSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMp
IC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJt
Lm5vZGVQYWlyKSwgKHl5bHNwWygxKSAtICg1KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVy
bS5ub2RlUGFpciksICh5eXZzcFsoMSkgLSAoNSldLmxleCkubGluZSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE3NjoKKyAgY2FzZSAxNzU6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bU5vZGUpOwpAQCAtNDMyOCw3ICs0MzAzLDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE3NzoKKyAgY2FzZSAxNzY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5v
ZGUpOwpAQCAtNDMzNiw3ICs0MzExLDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE3ODoKKyAgY2FzZSAxNzc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOwpAQCAtNDM0NSwxNiArNDMyMCwxNiBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTc5OgorICBjYXNlIDE3ODoKIAogICAgIHsKICAgICAgICAgVEludGVy
bU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJF
cnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5
cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+
Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygy
KSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmICghY29udGV4dC0+ZXhl
Y3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5eXZzcFsoMikgLSAoNCldLmxl
eCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSksICh5eXZzcFsoNCkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAq
KHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5v
ZGUpKQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
Wyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpAQCAtNDM2Myw3OSArNDMzOCw3OSBAQCB5eXJl
ZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgwOgorICBjYXNlIDE3OToKIAog
ICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5n
TGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODE6CisgIGNhc2UgMTgwOgogCiAgICAg
ewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hp
bGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2
c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkgLSAoNildKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgMCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3Bb
KDEpIC0gKDYpXS5sZXgpLmxpbmUpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MjoKKyAgY2FzZSAxODE6CiAKICAg
ICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE4MzoKKyAgY2FzZSAxODI6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjaygoeXlsc3BbKDgpIC0gKDgpXSksICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZz
cFsoOCkgLSAoOCldLmxleCkubGluZSwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChF
TG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAo
OCldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9k
ZSksICh5eXZzcFsoNCkgLSAoOCldLmxleCkubGluZSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9v
cE5lc3RpbmdMZXZlbDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg0OgorICBjYXNl
IDE4MzoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxv
b3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2UgMTg0
OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29w
KEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksIHJlaW50ZXJw
cmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWly
KS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3
KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyldLmludGVybS5pbnRl
cm1Ob2RlKSwgKHl5bHNwWygxKSAtICg3KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRm9yLCAoeXl2c3Bb
KDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5
cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSksIHJlaW50ZXJw
cmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWly
KS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNwWygx
KSAtICg3KV0ubGV4KS5saW5lKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVs
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODY6CisgIGNhc2UgMTg1OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODc6Cisg
IGNhc2UgMTg2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxODg6CisgIGNhc2UgMTg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg5OgorICBjYXNlIDE4ODoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkwOgorICBjYXNlIDE4OToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ0NDMsNyArNDQxOCw3IEBAIHl5cmVkdWNlOgog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTE6CisgIGNhc2UgMTkwOgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDQ1MSw2MyArNDQyNiw2MyBAQCB5eXJlZHVj
ZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkyOgorICBjYXNlIDE5MToKIAogICAg
IHsKICAgICAgICAgaWYgKGNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWwgPD0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiY29udGludWUgc3RhdGVt
ZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgImNvbnRpbnVlIHN0YXRlbWVudCBvbmx5
IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eWxzcFsoMSkgLSAoMildKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTM6CisgIGNhc2UgMTkyOgogCiAgICAgewog
ICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJicmVhayBzdGF0ZW1lbnQgb25s
eSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBp
biBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2go
RU9wQnJlYWssICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE5NDoKKyAgY2FzZSAxOTM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJl
dHVybiwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3Bb
KDEpIC0gKDIpXS5sZXgpLmxpbmUpOwogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0
aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAibm9uLXZvaWQgZnVuY3Rpb24gbXVzdCByZXR1
cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMildLmxleCkubGluZSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEg
dmFsdWUiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk1OgorICBjYXNlIDE5NDoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgzKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJu
LCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAt
ICgzKV0ubGV4KS5saW5lKTsKICAgICAgICAgY29udGV4dC0+ZnVuY3Rpb25SZXR1cm5zVmFsdWUg
PSB0cnVlOwogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFz
aWNUeXBlKCkgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgzKV0pLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0
dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMpXS5sZXgp
LmxpbmUsICJ2b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfSBlbHNlIGlmICgqKGNv
bnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUpICE9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlw
ZToiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0g
KDMpXS5sZXgpLmxpbmUsICJmdW5jdGlvbiByZXR1cm4gaXMgbm90IG1hdGNoaW5nIHR5cGU6Iiwg
InJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5NjoKKyAgY2FzZSAxOTU6CiAKICAgICB7Ci0g
ICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eWxzcFsoMSkgLSAoMildKSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJh
bmNoKEVPcEtpbGwsICh5eWxzcFsoMSkgLSAoMildKSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlz
Y2FyZCIsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGws
ICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDE5NzoKKyAgY2FzZSAxOTY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00NTE1
LDI5ICs0NDkwLDI5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
OTg6CisgIGNhc2UgMTk3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9k
ZSksICh5eWxvYykpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwogICAg
ICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE5OToKKyAgY2FzZSAxOTg6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIwMDoKKyAgY2FzZSAx
OTk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDIwMToKKyAgY2FzZSAyMDA6CiAKICAgICB7CiAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rp
b24gPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtNDU0Niw3ICs0NTIx
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiYnVpbHQt
aW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNf
c3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtKS5saW5lLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5j
dGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDU2MCw3ICs0NTM1LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0aW9uIGFscmVhZHkg
aGFzIGEgYm9keS4KICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDEpXSksICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5Iiwg
ZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQogICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVkKCk7CkBAIC00NTcw
LDExICs0NTQ1LDExIEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBpZiAoZnVuY3Rp
b24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0
UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxz
cFsoMSkgLSAoMSldKSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBm
dW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtl
IGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQp
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICIi
LCBmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0
aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1
cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBh
IHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC00NjAyLDcgKzQ1NzcsNyBAQCB5eXJlZHVjZToKICAgICAgICAg
ICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wg
dGFibGUuCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0
LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRpb24iLCB2YXJpYWJs
ZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJyZWRlZmluaXRpb24iLCB2YXJpYWJs
ZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAg
ICAgICB9CkBAIC00NjEzLDMyICs0NTg4LDMxIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAg
IHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlLT5nZXRUeXBlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgx
KV0pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5
bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
KS5saW5lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKHBhcmFtTm9kZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIs
ICpwYXJhbS50eXBlLCAoeXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwor
ICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIi
LCAqcGFyYW0udHlwZSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKSwgKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5saW5lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2Rlcywg
RU9wUGFyYW1ldGVycywgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgY29udGV4dC0+aW50
ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMs
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CiAgICAgICAgICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4
dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIw
MjoKKyAgY2FzZSAyMDE6CiAKICAgICB7CiAgICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0
aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAg
TWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNv
ZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlw
ZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgzKV0pLCAiZnVuY3Rpb24gZG9l
cyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVu
Y3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBh
IHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXROYW1l
KCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2Mp
KTsKLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXlsc3BbKDEpIC0gKDMpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKSwgMCk7CisgICAgICAgIGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5saW5lKTsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0
TmFtZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgp
LmNfc3RyKCkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3Jl
Z2F0ZSgpLT5zZXRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmdldFJl
dHVyblR5cGUoKSk7CiAKQEAgLTQ2NDcsNiArNDYyMSw5IEBAIHl5cmVkdWNlOgogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShj
b250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRlYnVn
KTsKIAorICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpICYm
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKSkK
KyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCkt
PnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0Fn
Z3JlZ2F0ZSgpLT5nZXRFbmRMaW5lKCkpOworCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxl
LnBvcCgpOwogICAgIDt9CiAgICAgYnJlYWs7CkBAIC00NjYzLDcgKzQ2NDAsNyBAQCB5eXJlZHVj
ZToKICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKIAogICAqKyt5eXZzcCA9IHl5dmFs
OwotICAqKyt5eWxzcCA9IHl5bG9jOworCiAKICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBv
ZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRv
LCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCkBAIC00
Njg5LDcgKzQ2NjYsNyBAQCB5eWVycmxhYjoKICAgICB7CiAgICAgICArK3l5bmVycnM7CiAjaWYg
ISBZWUVSUk9SX1ZFUkJPU0UKLSAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygi
c3ludGF4IGVycm9yIikpOworICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJy
b3IiKSk7CiAjZWxzZQogICAgICAgewogCVlZU0laRV9UIHl5c2l6ZSA9IHl5c3ludGF4X2Vycm9y
ICgwLCB5eXN0YXRlLCB5eWNoYXIpOwpAQCAtNDcxMywxMSArNDY5MCwxMSBAQCB5eWVycmxhYjoK
IAlpZiAoMCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2dfYWxsb2MpCiAJICB7CiAJICAgICh2
b2lkKSB5eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7Ci0JICAgIHl5ZXJy
b3IgKCZ5eWxsb2MsIGNvbnRleHQsIHl5bXNnKTsKKwkgICAgeXllcnJvciAoY29udGV4dCwgeXlt
c2cpOwogCSAgfQogCWVsc2UKIAkgIHsKLQkgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwg
WVlfKCJzeW50YXggZXJyb3IiKSk7CisJICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4
IGVycm9yIikpOwogCSAgICBpZiAoeXlzaXplICE9IDApCiAJICAgICAgZ290byB5eWV4aGF1c3Rl
ZGxhYjsKIAkgIH0KQEAgLTQ3MjUsNyArNDcwMiw3IEBAIHl5ZXJybGFiOgogI2VuZGlmCiAgICAg
fQogCi0gIHl5ZXJyb3JfcmFuZ2VbMF0gPSB5eWxsb2M7CisKIAogICBpZiAoeXllcnJzdGF0dXMg
PT0gMykKICAgICB7CkBAIC00NzQxLDcgKzQ3MTgsNyBAQCB5eWVycmxhYjoKICAgICAgIGVsc2UK
IAl7CiAJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotCQkgICAgICB5eXRva2Vu
LCAmeXlsdmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZhbCwg
Y29udGV4dCk7CiAJICB5eWNoYXIgPSBZWUVNUFRZOwogCX0KICAgICB9CkBAIC00NzYyLDcgKzQ3
MzksNiBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQogICAgICBnb3RvIHl5
ZXJyb3JsYWI7CiAKLSAgeXllcnJvcl9yYW5nZVswXSA9IHl5bHNwWzEteXlsZW5dOwogICAvKiBE
byBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dl
cmVkCiAgICAgIHRoaXMgWVlFUlJPUi4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ3
OTYsOSArNDc3Miw5IEBAIHl5ZXJybGFiMToKICAgICAgIGlmICh5eXNzcCA9PSB5eXNzKQogCVlZ
QUJPUlQ7CiAKLSAgICAgIHl5ZXJyb3JfcmFuZ2VbMF0gPSAqeXlsc3A7CisKICAgICAgIHl5ZGVz
dHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCi0JCSAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwgeXls
c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIGNvbnRleHQpOwogICAg
ICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5eXN0YXRlID0gKnl5c3NwOwogICAgICAgWVlfU1RB
Q0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKQEAgLTQ4MDksMTEgKzQ3ODUsNiBAQCB5eWVycmxhYjE6
CiAKICAgKisreXl2c3AgPSB5eWx2YWw7CiAKLSAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bGxvYzsK
LSAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hhbmdlIHRoZSBsb2Nh
dGlvbiBvZgotICAgICB0aGUgbG9vay1haGVhZC4gIFlZTE9DIGlzIGF2YWlsYWJsZSB0aG91Z2gu
ICAqLwotICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWVycm9yX3JhbmdlIC0gMSksIDIpOwot
ICAqKyt5eWxzcCA9IHl5bG9jOwogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0b2tlbi4gICovCiAg
IFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXlzdG9zW3l5bl0sIHl5dnNwLCB5eWxzcCk7
CkBAIC00ODQxLDcgKzQ4MTIsNyBAQCB5eWFib3J0bGFiOgogfCB5eWV4aGF1c3RlZGxhYiAtLSBt
ZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0ZWRsYWI6Ci0gIHl5ZXJyb3Ig
KCZ5eWxsb2MsIGNvbnRleHQsIFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXllcnJvciAo
Y29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5eXJlc3VsdCA9IDI7CiAgIC8q
IEZhbGwgdGhyb3VnaC4gICovCiAjZW5kaWYKQEAgLTQ4NDksNyArNDgyMCw3IEBAIHl5ZXhoYXVz
dGVkbGFiOgogeXlyZXR1cm46CiAgIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZ
RU1QVFkpCiAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIs
Ci0JCSB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKKwkJIHl5dG9rZW4sICZ5
eWx2YWwsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUg
cnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlBQk9SVCBvciBZWUFDQ0VQ
VC4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ4NTcsNyArNDgyOCw3IEBAIHl5cmV0
dXJuOgogICB3aGlsZSAoeXlzc3AgIT0geXlzcykKICAgICB7CiAgICAgICB5eWRlc3RydWN0ICgi
Q2xlYW51cDogcG9wcGluZyIsCi0JCSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCB5eWxzcCwgY29u
dGV4dCk7CisJCSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCBjb250ZXh0KTsKICAgICAgIFlZUE9Q
U1RBQ0sgKDEpOwogICAgIH0KICNpZm5kZWYgeXlvdmVyZmxvdwpAQCAtNDg3NiwxMSArNDg0Nyw2
IEBAIHl5cmV0dXJuOgogCiAKIAotdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNl
Q29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7Ci0gICAgY29udGV4dC0+ZXJy
b3IoKnl5bGxvYywgcmVhc29uLCAiIik7Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwotfQotCiBp
bnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgcmV0dXJuIHl5
cGFyc2UoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9nbHNsYW5nX3RhYi5oCmluZGV4IDUxYjYyYTQuLjIzOTQ1YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCkBAIC04
Niw1MSArODYsNTIgQEAKICAgICAgRkxPQVRDT05TVEFOVCA9IDMwMiwKICAgICAgSU5UQ09OU1RB
TlQgPSAzMDMsCiAgICAgIEJPT0xDT05TVEFOVCA9IDMwNCwKLSAgICAgTEVGVF9PUCA9IDMwNSwK
LSAgICAgUklHSFRfT1AgPSAzMDYsCi0gICAgIElOQ19PUCA9IDMwNywKLSAgICAgREVDX09QID0g
MzA4LAotICAgICBMRV9PUCA9IDMwOSwKLSAgICAgR0VfT1AgPSAzMTAsCi0gICAgIEVRX09QID0g
MzExLAotICAgICBORV9PUCA9IDMxMiwKLSAgICAgQU5EX09QID0gMzEzLAotICAgICBPUl9PUCA9
IDMxNCwKLSAgICAgWE9SX09QID0gMzE1LAotICAgICBNVUxfQVNTSUdOID0gMzE2LAotICAgICBE
SVZfQVNTSUdOID0gMzE3LAotICAgICBBRERfQVNTSUdOID0gMzE4LAotICAgICBNT0RfQVNTSUdO
ID0gMzE5LAotICAgICBMRUZUX0FTU0lHTiA9IDMyMCwKLSAgICAgUklHSFRfQVNTSUdOID0gMzIx
LAotICAgICBBTkRfQVNTSUdOID0gMzIyLAotICAgICBYT1JfQVNTSUdOID0gMzIzLAotICAgICBP
Ul9BU1NJR04gPSAzMjQsCi0gICAgIFNVQl9BU1NJR04gPSAzMjUsCi0gICAgIExFRlRfUEFSRU4g
PSAzMjYsCi0gICAgIFJJR0hUX1BBUkVOID0gMzI3LAotICAgICBMRUZUX0JSQUNLRVQgPSAzMjgs
Ci0gICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCi0gICAgIExFRlRfQlJBQ0UgPSAzMzAsCi0gICAg
IFJJR0hUX0JSQUNFID0gMzMxLAotICAgICBET1QgPSAzMzIsCi0gICAgIENPTU1BID0gMzMzLAot
ICAgICBDT0xPTiA9IDMzNCwKLSAgICAgRVFVQUwgPSAzMzUsCi0gICAgIFNFTUlDT0xPTiA9IDMz
NiwKLSAgICAgQkFORyA9IDMzNywKLSAgICAgREFTSCA9IDMzOCwKLSAgICAgVElMREUgPSAzMzks
Ci0gICAgIFBMVVMgPSAzNDAsCi0gICAgIFNUQVIgPSAzNDEsCi0gICAgIFNMQVNIID0gMzQyLAot
ICAgICBQRVJDRU5UID0gMzQzLAotICAgICBMRUZUX0FOR0xFID0gMzQ0LAotICAgICBSSUdIVF9B
TkdMRSA9IDM0NSwKLSAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAotICAgICBDQVJFVCA9IDM0NywK
LSAgICAgQU1QRVJTQU5EID0gMzQ4LAotICAgICBRVUVTVElPTiA9IDM0OQorICAgICBGSUVMRF9T
RUxFQ1RJT04gPSAzMDUsCisgICAgIExFRlRfT1AgPSAzMDYsCisgICAgIFJJR0hUX09QID0gMzA3
LAorICAgICBJTkNfT1AgPSAzMDgsCisgICAgIERFQ19PUCA9IDMwOSwKKyAgICAgTEVfT1AgPSAz
MTAsCisgICAgIEdFX09QID0gMzExLAorICAgICBFUV9PUCA9IDMxMiwKKyAgICAgTkVfT1AgPSAz
MTMsCisgICAgIEFORF9PUCA9IDMxNCwKKyAgICAgT1JfT1AgPSAzMTUsCisgICAgIFhPUl9PUCA9
IDMxNiwKKyAgICAgTVVMX0FTU0lHTiA9IDMxNywKKyAgICAgRElWX0FTU0lHTiA9IDMxOCwKKyAg
ICAgQUREX0FTU0lHTiA9IDMxOSwKKyAgICAgTU9EX0FTU0lHTiA9IDMyMCwKKyAgICAgTEVGVF9B
U1NJR04gPSAzMjEsCisgICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKKyAgICAgQU5EX0FTU0lHTiA9
IDMyMywKKyAgICAgWE9SX0FTU0lHTiA9IDMyNCwKKyAgICAgT1JfQVNTSUdOID0gMzI1LAorICAg
ICBTVUJfQVNTSUdOID0gMzI2LAorICAgICBMRUZUX1BBUkVOID0gMzI3LAorICAgICBSSUdIVF9Q
QVJFTiA9IDMyOCwKKyAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAorICAgICBSSUdIVF9CUkFDS0VU
ID0gMzMwLAorICAgICBMRUZUX0JSQUNFID0gMzMxLAorICAgICBSSUdIVF9CUkFDRSA9IDMzMiwK
KyAgICAgRE9UID0gMzMzLAorICAgICBDT01NQSA9IDMzNCwKKyAgICAgQ09MT04gPSAzMzUsCisg
ICAgIEVRVUFMID0gMzM2LAorICAgICBTRU1JQ09MT04gPSAzMzcsCisgICAgIEJBTkcgPSAzMzgs
CisgICAgIERBU0ggPSAzMzksCisgICAgIFRJTERFID0gMzQwLAorICAgICBQTFVTID0gMzQxLAor
ICAgICBTVEFSID0gMzQyLAorICAgICBTTEFTSCA9IDM0MywKKyAgICAgUEVSQ0VOVCA9IDM0NCwK
KyAgICAgTEVGVF9BTkdMRSA9IDM0NSwKKyAgICAgUklHSFRfQU5HTEUgPSAzNDYsCisgICAgIFZF
UlRJQ0FMX0JBUiA9IDM0NywKKyAgICAgQ0FSRVQgPSAzNDgsCisgICAgIEFNUEVSU0FORCA9IDM0
OSwKKyAgICAgUVVFU1RJT04gPSAzNTAKICAgIH07CiAjZW5kaWYKIC8qIFRva2Vucy4gICovCkBA
IC0xODEsNTEgKzE4Miw1MiBAQAogI2RlZmluZSBGTE9BVENPTlNUQU5UIDMwMgogI2RlZmluZSBJ
TlRDT05TVEFOVCAzMDMKICNkZWZpbmUgQk9PTENPTlNUQU5UIDMwNAotI2RlZmluZSBMRUZUX09Q
IDMwNQotI2RlZmluZSBSSUdIVF9PUCAzMDYKLSNkZWZpbmUgSU5DX09QIDMwNwotI2RlZmluZSBE
RUNfT1AgMzA4Ci0jZGVmaW5lIExFX09QIDMwOQotI2RlZmluZSBHRV9PUCAzMTAKLSNkZWZpbmUg
RVFfT1AgMzExCi0jZGVmaW5lIE5FX09QIDMxMgotI2RlZmluZSBBTkRfT1AgMzEzCi0jZGVmaW5l
IE9SX09QIDMxNAotI2RlZmluZSBYT1JfT1AgMzE1Ci0jZGVmaW5lIE1VTF9BU1NJR04gMzE2Ci0j
ZGVmaW5lIERJVl9BU1NJR04gMzE3Ci0jZGVmaW5lIEFERF9BU1NJR04gMzE4Ci0jZGVmaW5lIE1P
RF9BU1NJR04gMzE5Ci0jZGVmaW5lIExFRlRfQVNTSUdOIDMyMAotI2RlZmluZSBSSUdIVF9BU1NJ
R04gMzIxCi0jZGVmaW5lIEFORF9BU1NJR04gMzIyCi0jZGVmaW5lIFhPUl9BU1NJR04gMzIzCi0j
ZGVmaW5lIE9SX0FTU0lHTiAzMjQKLSNkZWZpbmUgU1VCX0FTU0lHTiAzMjUKLSNkZWZpbmUgTEVG
VF9QQVJFTiAzMjYKLSNkZWZpbmUgUklHSFRfUEFSRU4gMzI3Ci0jZGVmaW5lIExFRlRfQlJBQ0tF
VCAzMjgKLSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUgTEVGVF9CUkFDRSAzMzAK
LSNkZWZpbmUgUklHSFRfQlJBQ0UgMzMxCi0jZGVmaW5lIERPVCAzMzIKLSNkZWZpbmUgQ09NTUEg
MzMzCi0jZGVmaW5lIENPTE9OIDMzNAotI2RlZmluZSBFUVVBTCAzMzUKLSNkZWZpbmUgU0VNSUNP
TE9OIDMzNgotI2RlZmluZSBCQU5HIDMzNwotI2RlZmluZSBEQVNIIDMzOAotI2RlZmluZSBUSUxE
RSAzMzkKLSNkZWZpbmUgUExVUyAzNDAKLSNkZWZpbmUgU1RBUiAzNDEKLSNkZWZpbmUgU0xBU0gg
MzQyCi0jZGVmaW5lIFBFUkNFTlQgMzQzCi0jZGVmaW5lIExFRlRfQU5HTEUgMzQ0Ci0jZGVmaW5l
IFJJR0hUX0FOR0xFIDM0NQotI2RlZmluZSBWRVJUSUNBTF9CQVIgMzQ2Ci0jZGVmaW5lIENBUkVU
IDM0NwotI2RlZmluZSBBTVBFUlNBTkQgMzQ4Ci0jZGVmaW5lIFFVRVNUSU9OIDM0OQorI2RlZmlu
ZSBGSUVMRF9TRUxFQ1RJT04gMzA1CisjZGVmaW5lIExFRlRfT1AgMzA2CisjZGVmaW5lIFJJR0hU
X09QIDMwNworI2RlZmluZSBJTkNfT1AgMzA4CisjZGVmaW5lIERFQ19PUCAzMDkKKyNkZWZpbmUg
TEVfT1AgMzEwCisjZGVmaW5lIEdFX09QIDMxMQorI2RlZmluZSBFUV9PUCAzMTIKKyNkZWZpbmUg
TkVfT1AgMzEzCisjZGVmaW5lIEFORF9PUCAzMTQKKyNkZWZpbmUgT1JfT1AgMzE1CisjZGVmaW5l
IFhPUl9PUCAzMTYKKyNkZWZpbmUgTVVMX0FTU0lHTiAzMTcKKyNkZWZpbmUgRElWX0FTU0lHTiAz
MTgKKyNkZWZpbmUgQUREX0FTU0lHTiAzMTkKKyNkZWZpbmUgTU9EX0FTU0lHTiAzMjAKKyNkZWZp
bmUgTEVGVF9BU1NJR04gMzIxCisjZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjIKKyNkZWZpbmUgQU5E
X0FTU0lHTiAzMjMKKyNkZWZpbmUgWE9SX0FTU0lHTiAzMjQKKyNkZWZpbmUgT1JfQVNTSUdOIDMy
NQorI2RlZmluZSBTVUJfQVNTSUdOIDMyNgorI2RlZmluZSBMRUZUX1BBUkVOIDMyNworI2RlZmlu
ZSBSSUdIVF9QQVJFTiAzMjgKKyNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOQorI2RlZmluZSBSSUdI
VF9CUkFDS0VUIDMzMAorI2RlZmluZSBMRUZUX0JSQUNFIDMzMQorI2RlZmluZSBSSUdIVF9CUkFD
RSAzMzIKKyNkZWZpbmUgRE9UIDMzMworI2RlZmluZSBDT01NQSAzMzQKKyNkZWZpbmUgQ09MT04g
MzM1CisjZGVmaW5lIEVRVUFMIDMzNgorI2RlZmluZSBTRU1JQ09MT04gMzM3CisjZGVmaW5lIEJB
TkcgMzM4CisjZGVmaW5lIERBU0ggMzM5CisjZGVmaW5lIFRJTERFIDM0MAorI2RlZmluZSBQTFVT
IDM0MQorI2RlZmluZSBTVEFSIDM0MgorI2RlZmluZSBTTEFTSCAzNDMKKyNkZWZpbmUgUEVSQ0VO
VCAzNDQKKyNkZWZpbmUgTEVGVF9BTkdMRSAzNDUKKyNkZWZpbmUgUklHSFRfQU5HTEUgMzQ2Cisj
ZGVmaW5lIFZFUlRJQ0FMX0JBUiAzNDcKKyNkZWZpbmUgQ0FSRVQgMzQ4CisjZGVmaW5lIEFNUEVS
U0FORCAzNDkKKyNkZWZpbmUgUVVFU1RJT04gMzUwCiAKIAogCkBAIC0yMzQsOSArMjM2LDggQEAK
IHR5cGVkZWYgdW5pb24gWVlTVFlQRQogCiB7Ci0jZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYwot
I2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKICAgICBzdHJ1Y3QgeworICAgICAgICBUU291
cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmlu
ZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC0yNDYsNiArMjQ3LDcgQEAgdHlwZWRlZiB1bmlv
biBZWVNUWVBFCiAgICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAgICBzdHJ1
Y3QgeworICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBvcDsKICAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CkBAIC0y
NTksOCArMjYxLDggQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUXVhbGlm
aWVyIHF1YWxpZmllcjsKICAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAg
ICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICAgICAgVEZpZWxkKiBmaWVsZDsKLSAgICAg
ICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsKKyAgICAgICAgICAgIFRUeXBlTGluZSB0eXBl
TGluZTsKKyAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7CiAgICAgICAgIH07CiAgICAg
fSBpbnRlcm07CiB9CkBAIC0yNzQsMTcgKzI3NiwzIEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQog
CiAKIAotI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xB
UkVECi10eXBlZGVmIHN0cnVjdCBZWUxUWVBFCi17Ci0gIGludCBmaXJzdF9saW5lOwotICBpbnQg
Zmlyc3RfY29sdW1uOwotICBpbnQgbGFzdF9saW5lOwotICBpbnQgbGFzdF9jb2x1bW47Ci19IFlZ
TFRZUEU7Ci0jIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUg
d2l0aGRyYXduICovCi0jIGRlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZ
TFRZUEVfSVNfVFJJVklBTCAxCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtT3V0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCmluZGV4IDEzYWE5NmEuLmY0OGEwNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1P
dXQuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1P
dXQuY3BwCkBAIC0xODksOSArMTg5LDcgQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdFVu
YXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkqIG5vZGUpCiAgICAgICAgIGNhc2UgRU9wQW55
OiAgICAgICAgICAgIG91dCA8PCAiYW55IjsgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBFT3BBbGw6ICAgICAgICAgICAgb3V0IDw8ICJhbGwiOyAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBvdXQucHJlZml4KEVQcmVm
aXhFcnJvcik7Ci0gICAgICAgICAgICBvdXQgPDwgIkJhZCB1bmFyeSBvcCI7CisgICAgICAgIGRl
ZmF1bHQ6IG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIkJhZCB1bmFyeSBvcCIpOwogICAgIH0K
IAogICAgIG91dCA8PCAiICgiIDw8IG5vZGUtPmdldENvbXBsZXRlU3RyaW5nKCkgPDwgIikiOwpA
QCAtMjA2LDggKzIwNCw3IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUpCiAgICAgVEluZm9TaW5rQmFzZSYg
b3V0ID0gc2luazsKIAogICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcE51bGwpIHsKLSAgICAg
ICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOwotICAgICAgICBvdXQgPDwgIm5vZGUgaXMgc3Rp
bGwgRU9wTnVsbCEiOworICAgICAgICBvdXQubWVzc2FnZShFUHJlZml4RXJyb3IsICJub2RlIGlz
IHN0aWxsIEVPcE51bGwhIik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjY2
LDkgKzI2Myw3IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQg
dmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUpCiAKICAgICAgICAgY2FzZSBFT3BEZWNsYXJh
dGlvbjogICBvdXQgPDwgIkRlY2xhcmF0aW9uOiAiOyAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBvdXQucHJlZml4KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgICAgICBv
dXQgPDwgIkJhZCBhZ2dyZWdhdGlvbiBvcCI7CisgICAgICAgIGRlZmF1bHQ6IG91dC5tZXNzYWdl
KEVQcmVmaXhFcnJvciwgIkJhZCBhZ2dyZWdhdGlvbiBvcCIpOwogICAgIH0KIAogICAgIGlmIChu
b2RlLT5nZXRPcCgpICE9IEVPcFNlcXVlbmNlICYmIG5vZGUtPmdldE9wKCkgIT0gRU9wUGFyYW1l
dGVycykKQEAgLTMxNiw5ICszMTEsOSBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29u
c3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBUSW5mb1NpbmtC
YXNlJiBvdXQgPSBzaW5rOwogCi0gICAgc2l6ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0
T2JqZWN0U2l6ZSgpOworICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNp
emUoKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgT3V0cHV0VHJlZVRleHQob3V0
LCBub2RlLCBkZXB0aCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKVtpXS5nZXRUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKQEAgLTMzOSw3
ICszMzQsNyBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbihUSW50
ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKICAgICAgICAgICAgICAgICBvdXQgPDwgIiAoY29uc3Qg
aW50KVxuIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgb3V0Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdl
dExpbmUoKSwgIlVua25vd24gY29uc3RhbnQiKTsKKyAgICAgICAgICAgICAgICBvdXQubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVua25vd24gY29uc3RhbnQiLCBub2RlLT5nZXRMaW5l
KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCmluZGV4
IDgwZWVlYzAuLjc1ODEyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9pbnRlcm1lZGlhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE4LDcgKzE4LDYgQEAKIAogI2luY2x1ZGUgIkdM
U0xBTkcvU2hhZGVyTGFuZy5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgImNv
bXBpbGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1R5cGVzLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oIgpAQCAtMjA3LDE2ICsyMDYsMTAgQEAgY2xhc3MgVElu
dGVybU5vZGUgewogcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFs
UG9vbEFsbG9jYXRvcikKIAotICAgIFRJbnRlcm1Ob2RlKCkgewotICAgICAgICAvLyBUT0RPOiBN
b3ZlIHRoaXMgdG8gVFNvdXJjZUxvYyBjb25zdHJ1Y3RvcgotICAgICAgICAvLyBhZnRlciBnZXR0
aW5nIHJpZCBvZiBUUHVibGljVHlwZS4KLSAgICAgICAgbGluZS5maXJzdF9maWxlID0gbGluZS5s
YXN0X2ZpbGUgPSAwOwotICAgICAgICBsaW5lLmZpcnN0X2xpbmUgPSBsaW5lLmxhc3RfbGluZSA9
IDA7Ci0gICAgfQotICAgIHZpcnR1YWwgflRJbnRlcm1Ob2RlKCkgeyB9CisgICAgVEludGVybU5v
ZGUoKSA6IGxpbmUoMCkge30KIAotICAgIGNvbnN0IFRTb3VyY2VMb2MmIGdldExpbmUoKSBjb25z
dCB7IHJldHVybiBsaW5lOyB9Ci0gICAgdm9pZCBzZXRMaW5lKGNvbnN0IFRTb3VyY2VMb2MmIGwp
IHsgbGluZSA9IGw7IH0KKyAgICBUU291cmNlTG9jIGdldExpbmUoKSBjb25zdCB7IHJldHVybiBs
aW5lOyB9CisgICAgdm9pZCBzZXRMaW5lKFRTb3VyY2VMb2MgbCkgeyBsaW5lID0gbDsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKSA9IDA7CiAgICAgdmly
dHVhbCBUSW50ZXJtVHlwZWQqIGdldEFzVHlwZWQoKSB7IHJldHVybiAwOyB9CkBAIC0yMjcsNiAr
MjIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVEludGVybVNlbGVjdGlvbiogZ2V0QXNTZWxl
Y3Rpb25Ob2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybVN5bWJvbCogZ2V0
QXNTeW1ib2xOb2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybUxvb3AqIGdl
dEFzTG9vcE5vZGUoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7
IH0KIAogcHJvdGVjdGVkOgogICAgIFRTb3VyY2VMb2MgbGluZTsKQEAgLTM2NCwxMCArMzU4LDcg
QEAgcHVibGljOgogICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKENvbnN0YW50VW5pb24gKnVuaW9u
UG9pbnRlciwgY29uc3QgVFR5cGUmIHQpIDogVEludGVybVR5cGVkKHQpLCB1bmlvbkFycmF5UG9p
bnRlcih1bmlvblBvaW50ZXIpIHsgfQogCiAgICAgQ29uc3RhbnRVbmlvbiogZ2V0VW5pb25BcnJh
eVBvaW50ZXIoKSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlcjsgfQotICAgIAotICAg
IGludCBnZXRJQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRl
ciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRJQ29uc3QoKSA6IDA7IH0KLSAgICBmbG9h
dCBnZXRGQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/
IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRGQ29uc3QoKSA6IDAuMGY7IH0KLSAgICBib29s
IGdldEJDb25zdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8g
dW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldEJDb25zdCgpIDogZmFsc2U7IH0KKyAgICB2b2lk
IHNldFVuaW9uQXJyYXlQb2ludGVyKENvbnN0YW50VW5pb24gKmMpIHsgdW5pb25BcnJheVBvaW50
ZXIgPSBjOyB9CiAKICAgICB2aXJ0dWFsIFRJbnRlcm1Db25zdGFudFVuaW9uKiBnZXRBc0NvbnN0
YW50VW5pb24oKSAgeyByZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShU
SW50ZXJtVHJhdmVyc2VyKik7CkBAIC00NTYsNyArNDQ3LDcgQEAgdHlwZWRlZiBUVmVjdG9yPGlu
dD4gVFF1YWxpZmllckxpc3Q7CiAvLwogY2xhc3MgVEludGVybUFnZ3JlZ2F0ZSA6IHB1YmxpYyBU
SW50ZXJtT3BlcmF0b3IgewogcHVibGljOgotICAgIFRJbnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRl
cm1PcGVyYXRvcihFT3BOdWxsKSwgdXNlckRlZmluZWQoZmFsc2UpLCB1c2VFbXVsYXRlZEZ1bmN0
aW9uKGZhbHNlKSB7IH0KKyAgICBUSW50ZXJtQWdncmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3Io
RU9wTnVsbCksIHVzZXJEZWZpbmVkKGZhbHNlKSwgZW5kTGluZSgwKSwgdXNlRW11bGF0ZWRGdW5j
dGlvbihmYWxzZSkgeyB9CiAgICAgVEludGVybUFnZ3JlZ2F0ZShUT3BlcmF0b3IgbykgOiBUSW50
ZXJtT3BlcmF0b3IobyksIHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQogICAgIH5USW50
ZXJtQWdncmVnYXRlKCkgeyB9CiAKQEAgLTQ3Niw2ICs0NjcsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXREZWJ1Zyhib29sIGQpIHsgZGVidWcgPSBkOyB9CiAgICAgYm9vbCBnZXREZWJ1ZygpIHsg
cmV0dXJuIGRlYnVnOyB9CiAKKyAgICB2b2lkIHNldEVuZExpbmUoVFNvdXJjZUxvYyBsaW5lKSB7
IGVuZExpbmUgPSBsaW5lOyB9CisgICAgVFNvdXJjZUxvYyBnZXRFbmRMaW5lKCkgY29uc3QgeyBy
ZXR1cm4gZW5kTGluZTsgfQorCiAgICAgdm9pZCBzZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyB1
c2VFbXVsYXRlZEZ1bmN0aW9uID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5j
dGlvbigpIHsgcmV0dXJuIHVzZUVtdWxhdGVkRnVuY3Rpb247IH0KIApAQCAtNDg4LDYgKzQ4Miw3
IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgb3B0aW1pemU7CiAgICAgYm9vbCBkZWJ1ZzsKKyAg
ICBUU291cmNlTG9jIGVuZExpbmU7CiAKICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0
aGUgYnVpbHQtaW4gZnVuY3Rpb24gY2FsbCB3aXRoIGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRv
IHdvcmsgYXJvdW5kIGRyaXZlciBidWdzLgpAQCAtNTQzLDggKzUzOCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGluVmlzaXQoaW5WaXNpdCksCiAgICAgICAgICAgICBwb3N0VmlzaXQocG9zdFZp
c2l0KSwKICAgICAgICAgICAgIHJpZ2h0VG9MZWZ0KHJpZ2h0VG9MZWZ0KSwKLSAgICAgICAgICAg
IGRlcHRoKDApLAotICAgICAgICAgICAgbWF4RGVwdGgoMCkge30KKyAgICAgICAgICAgIGRlcHRo
KDApIHt9CiAgICAgdmlydHVhbCB+VEludGVybVRyYXZlcnNlcigpIHt9OwogCiAgICAgdmlydHVh
bCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqKSB7fQpAQCAtNTU2LDggKzU1MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJt
TG9vcCopIHtyZXR1cm4gdHJ1ZTt9CiAgICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQnJhbmNoKikge3JldHVybiB0cnVlO30KIAotICAgIGludCBnZXRNYXhE
ZXB0aCgpIGNvbnN0IHtyZXR1cm4gbWF4RGVwdGg7fQotICAgIHZvaWQgaW5jcmVtZW50RGVwdGgo
KSB7ZGVwdGgrKzsgbWF4RGVwdGggPSBzdGQ6Om1heChtYXhEZXB0aCwgZGVwdGgpOyB9CisgICAg
dm9pZCBpbmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrO30KICAgICB2b2lkIGRlY3JlbWVudERlcHRo
KCkge2RlcHRoLS07fQogCiAgICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2gg
ZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxMOwpAQCAtNTcxLDcgKzU2NCw2IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIGludCBkZXB0aDsKLSAgICBpbnQgbWF4RGVwdGg7CiB9OwogCiAjZW5k
aWYgLy8gX19JTlRFUk1FRElBVEVfSApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAppbmRleCBiNjczNDA3Li41Njg5
MGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9j
YWxpbnRlcm1lZGlhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvbG9jYWxpbnRlcm1lZGlhdGUuaApAQCAtMjUsMzMgKzI1LDM0IEBAIHB1YmxpYzoKICAgICBQ
T09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCiAKICAgICBUSW50
ZXJtZWRpYXRlKFRJbmZvU2luayYgaSkgOiBpbmZvU2luayhpKSB7IH0KLSAgICBUSW50ZXJtU3lt
Ym9sKiBhZGRTeW1ib2woaW50IElkLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFR5cGUmLCBjb25z
dCBUU291cmNlTG9jJik7CisgICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9sKGludCBJZCwgY29u
c3QgVFN0cmluZyYsIGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7CiAgICAgVEludGVybVR5cGVk
KiBhZGRDb252ZXJzaW9uKFRPcGVyYXRvciwgY29uc3QgVFR5cGUmLCBUSW50ZXJtVHlwZWQqKTsK
LSAgICBUSW50ZXJtVHlwZWQqIGFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmLCBUU3ltYm9s
VGFibGUmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRl
cm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOwot
ICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGJh
c2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJt
VHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZCwgY29u
c3QgVFNvdXJjZUxvYyYsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGdy
b3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgY29uc3Qg
VFNvdXJjZUxvYyYpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG1ha2VBZ2dyZWdhdGUoVEludGVy
bU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBz
ZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRPcGVyYXRvciwgY29uc3QgVFNvdXJj
ZUxvYyYpOwotICAgIFRJbnRlcm1Ob2RlKiAgYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29u
ZCwgVEludGVybU5vZGVQYWlyIGNvZGUsIGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJt
VHlwZWQqIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1
ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAg
ICBUSW50ZXJtVHlwZWQqIGFkZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVk
KiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBh
ZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qLCBjb25zdCBUVHlwZSYsIGNvbnN0IFRTb3Vy
Y2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MsIFRTeW1i
b2xUYWJsZSYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVElu
dGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jKTsKKyAgICBU
SW50ZXJtVHlwZWQqIGFkZEluZGV4KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBU
SW50ZXJtVHlwZWQqIGluZGV4LCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFVu
YXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZCwgVFNvdXJjZUxvYywgVFN5
bWJvbFRhYmxlJik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJt
Tm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJt
QWdncmVnYXRlKiBtYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBub2RlLCBUU291cmNlTG9jKTsK
KyAgICBUSW50ZXJtQWdncmVnYXRlKiBzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSos
IFRPcGVyYXRvciwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybU5vZGUqICBhZGRTZWxlY3Rpb24o
VEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29kZSwgVFNvdXJjZUxvYyk7Cisg
ICAgVEludGVybVR5cGVkKiBhZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJt
VHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5cGVkKiBmYWxzZUJsb2NrLCBUU291cmNlTG9jKTsK
KyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5
cGVkKiByaWdodCwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIGFkZENv
bnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiosIGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7CiAg
ICAgVEludGVybVR5cGVkKiBwcm9tb3RlQ29uc3RhbnRVbmlvbihUQmFzaWNUeXBlLCBUSW50ZXJt
Q29uc3RhbnRVbmlvbiopIDsKLSAgICBib29sIHBhcnNlQ29uc3RUcmVlKGNvbnN0IFRTb3VyY2VM
b2MmLCBUSW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBUT3BlcmF0b3IsIFRTeW1ib2xUYWJs
ZSYsIFRUeXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0gPSBmYWxzZSk7ICAgICAgICAKLSAg
ICBUSW50ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJbnRlcm1Ob2RlKiwgVEludGVybVR5
cGVkKiwgVEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBjb25zdCBUU291cmNlTG9jJik7Ci0g
ICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgY29uc3QgVFNvdXJjZUxvYyYp
OwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIFRJbnRlcm1UeXBlZCos
IGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFN3aXp6bGUoVFZlY3Rv
ckZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBib29sIHBhcnNlQ29uc3RUcmVlKFRT
b3VyY2VMb2MsIFRJbnRlcm1Ob2RlKiwgQ29uc3RhbnRVbmlvbiosIFRPcGVyYXRvciwgVFN5bWJv
bFRhYmxlJiwgVFR5cGUsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbSA9IGZhbHNlKTsgICAgICAg
IAorICAgIFRJbnRlcm1Ob2RlKiBhZGRMb29wKFRMb29wVHlwZSwgVEludGVybU5vZGUqLCBUSW50
ZXJtVHlwZWQqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtTm9kZSosIFRTb3VyY2VMb2MpOworICAg
IFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIFRTb3VyY2VMb2MpOworICAgIFRJ
bnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VM
b2MpOworICAgIFRJbnRlcm1UeXBlZCogYWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiwgVFNvdXJj
ZUxvYyk7CiAgICAgYm9vbCBwb3N0UHJvY2VzcyhUSW50ZXJtTm9kZSopOwotICAgIHZvaWQgcmVt
b3ZlKFRJbnRlcm1Ob2RlKik7CisJdm9pZCByZW1vdmUoVEludGVybU5vZGUqKTsKICAgICB2b2lk
IG91dHB1dFRyZWUoVEludGVybU5vZGUqKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBUSW5mb1Np
bmsmIGluZm9TaW5rOwogCiBwcml2YXRlOgogICAgIHZvaWQgb3BlcmF0b3I9KFRJbnRlcm1lZGlh
dGUmKTsgLy8gcHJldmVudCBhc3NpZ25tZW50cwotCi0gICAgVEluZm9TaW5rJiBpbmZvU2luazsK
IH07CiAKICNlbmRpZiAvLyBfTE9DQUxfSU5URVJNRURJQVRFX0lOQ0xVREVEXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCmluZGV4
IDFjYzVkYjguLjlhOGE1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKik7CiAgICAgYm9v
bCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCopOwogCi0gICAgc2l6ZV90
IGluZGV4OworICAgIGludCBpbmRleDsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5Owog
ICAgIFRUeXBlIHR5cGU7CiAgICAgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZTsKICAgICBib29s
IHNpbmdsZUNvbnN0YW50UGFyYW07CiAgICAgVEluZm9TaW5rJiBpbmZvU2luazsKICAgICBUU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlOwotICAgIHNpemVfdCBzaXplOyAvLyBzaXplIG9mIHRoZSBj
b25zdHJ1Y3RvciAoIDQgZm9yIHZlYzQpCisgICAgaW50IHNpemU7IC8vIHNpemUgb2YgdGhlIGNv
bnN0cnVjdG9yICggNCBmb3IgdmVjNCkKICAgICBib29sIGlzTWF0cml4OwotICAgIHNpemVfdCBt
YXRyaXhTaXplOyAvLyBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeCAobm9taW5hbCBzaXplIGFuZCBu
b3QgdGhlIGluc3RhbmNlIHNpemUpCisgICAgaW50IG1hdHJpeFNpemU7IC8vIGRpbWVuc2lvbiBv
ZiB0aGUgbWF0cml4IChub21pbmFsIHNpemUgYW5kIG5vdCB0aGUgaW5zdGFuY2Ugc2l6ZSkKIH07
CiAKIC8vCkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKIAogdm9pZCBUQ29uc3RUcmF2ZXJz
ZXI6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJTeW1ib2wg
Tm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOworICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlN5bWJvbCBOb2RlIGZvdW5kIGluIGNvbnN0
YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKICAgICByZXR1cm47CiAKIH0KQEAg
LTc0LDEyICs3NCwxMiBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQg
dmlzaXQsIFRJbnRlcm1CaW5hcnkqIG5vZGUpCiAgICAgICAgIFRTdHJpbmcgYnVmOwogICAgICAg
ICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5nIG5vbi1jb25zdGFudCB0byAi
KTsKICAgICAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENvbXBsZXRlU3RyaW5nKCkpOwotICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1
Zi5jX3N0cigpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwg
YnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CiAgICAgICAgIGVycm9yID0gdHJ1ZTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAgCiAgICAgfQogCi0gICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJpbmFyeSBOb2RlIGZvdW5k
IGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CisgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEludGVybmFsRXJyb3IsICJCaW5hcnkgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1
Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CiAgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAt
ODksNyArODksNyBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdCB2aXNp
dCwgVEludGVybVVuYXJ5KiBub2RlKQogICAgIFRTdHJpbmcgYnVmOwogICAgIGJ1Zi5hcHBlbmQo
Iidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwogICAgIGJ1Zi5h
cHBlbmQodHlwZS5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKKyAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBidWYuY19zdHIoKSwgbm9kZS0+Z2V0TGlu
ZSgpKTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOyAgCiB9CkBAIC0xMDAs
NyArMTAwLDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZp
c2l0LCBUSW50ZXJtQWdncmVnYXRlKiBub2RlKQogICAgICAgICBUU3RyaW5nIGJ1ZjsKICAgICAg
ICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2lnbmluZyBub24tY29uc3RhbnQgdG8g
Iik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBi
dWYuY19zdHIoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3Is
IGJ1Zi5jX3N0cigpLCBub2RlLT5nZXRMaW5lKCkpOwogICAgICAgICBlcnJvciA9IHRydWU7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KQEAgLTE0NCwzMSArMTQ0LDI0IEBAIGJvb2wg
VENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3Jl
Z2F0ZSogbm9kZSkKIAogYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U2VsZWN0aW9uKFZpc2l0
IHZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiU2VsZWN0aW9uIE5v
ZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKKyAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJTZWxlY3Rpb24gTm9kZSBmb3VuZCBpbiBjb25z
dGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CiAgICAgZXJyb3IgPSB0cnVlOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3Rh
bnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKLSAgICBpZiAoIW5vZGUtPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCkpCi0gICAgewotICAgICAgICAvLyBUaGUgY29uc3RhbnQgd2Fz
IG5vdCBpbml0aWFsaXplZCwgdGhpcyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9nZ2VkCi0g
ICAgICAgIGFzc2VydChpbmZvU2luay5pbmZvLnNpemUoKSAhPSAwKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQogICAgIENvbnN0YW50VW5pb24qIGxlZnRVbmlvbkFycmF5ID0gdW5pb25BcnJh
eTsKLSAgICBzaXplX3QgaW5zdGFuY2VTaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAg
aW50IGluc3RhbmNlU2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGluZGV4
ID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFzaW5nbGVDb25z
dGFudFBhcmFtKSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9i
amVjdFNpemUoKTsKKyAgICAgICAgaW50IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0
U2l6ZSgpOwogICAgIAogICAgICAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBu
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsK
ICAgICAgICAgICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaW5kZXhdID0gcmlnaHRVbmlvbkFy
cmF5W2ldOwpAQCAtMTc2LDExICsxNjksMTEgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0
Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKICAgICAgICAgICAgIChp
bmRleCkrKzsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNpemVfdCB0b3RhbFNp
emUgPSBpbmRleCArIHNpemU7CisgICAgICAgIGludCB0b3RhbFNpemUgPSBpbmRleCArIHNpemU7
CiAgICAgICAgIENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9u
QXJyYXlQb2ludGVyKCk7CiAgICAgICAgIGlmICghaXNNYXRyaXgpIHsKLSAgICAgICAgICAgIHNp
emVfdCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0
b3RhbFNpemU7IGkrKykgeworICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgICAg
IGZvciAoaW50IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGkgPj0gaW5zdGFuY2VTaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTE5Miw5ICsxODUsOSBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVu
aW9uKFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBjb3Vu
dCsrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgeyAgLy8gZm9yIG1hdHJpeCBjb25z
dHJ1Y3RvcnMKLSAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBzaXpl
X3QgZWxlbWVudCA9IGluZGV4OwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBp
IDwgdG90YWxTaXplOyBpKyspIHsKKyAgICAgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAg
ICAgICBpbnQgZWxlbWVudCA9IGluZGV4OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IGluZGV4
OyBpIDwgdG90YWxTaXplOyBpKyspIHsKICAgICAgICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5j
ZVNpemUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCAtIGkgPT0gMCB8fCAoaSAtIGVsZW1lbnQpICUgKG1hdHJpeFNpemUgKyAxKSA9PSAw
ICkKQEAgLTIxMywxNCArMjA2LDE0IEBAIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0
YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiAKIGJvb2wgVENvbnN0VHJhdmVy
c2VyOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKiBub2RlKQogewotICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgp
LCAiTG9vcCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CisgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTG9vcCBOb2RlIGZvdW5kIGlu
IGNvbnN0YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKICAgICBlcnJvciA9IHRy
dWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRC
cmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqIG5vZGUpCiB7Ci0gICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCcmFu
Y2ggTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOworICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJyYW5jaCBOb2RlIGZvdW5kIGluIGNv
bnN0YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKICAgICBlcnJvciA9IHRydWU7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjMwLDcgKzIyMyw3IEBAIGJvb2wgVENvbnN0VHJh
dmVyc2VyOjp2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCogbm9kZSkKIC8v
IEluZGl2aWR1YWwgZnVuY3Rpb25zIGNhbiBiZSBpbml0aWFsaXplZCB0byAwIHRvIHNraXAgcHJv
Y2Vzc2luZyBvZiB0aGF0CiAvLyB0eXBlIG9mIG5vZGUuICBJdCdzIGNoaWxkcmVuIHdpbGwgc3Rp
bGwgYmUgcHJvY2Vzc2VkLgogLy8KLWJvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUo
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqIHJvb3QsIENvbnN0YW50VW5pb24q
IHVuaW9uQXJyYXksIFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGUsIFRTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUsIFRUeXBlIHQsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbSkKK2Jvb2wgVEludGVy
bWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxvYyBsaW5lLCBUSW50ZXJtTm9kZSogcm9v
dCwgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSwgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwg
VFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwgYm9vbCBzaW5nbGVDb25zdGFudFBh
cmFtKQogewogICAgIGlmIChyb290ID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJp
Y3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKaW5kZXggMzU1ZWI2
Mi4uNTI0YzZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZy5jcHAKQEAgLTEwLDggKzEwLDggQEAgdm9pZCBSZXN0cmljdFZlcnRleFNoYWRlclRpbWlu
Zzo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSkKIHsKICAgICBpZiAoSXNTYW1wbGVy
KG5vZGUtPmdldEJhc2ljVHlwZSgpKSkgewogICAgICAgICArK21OdW1FcnJvcnM7Ci0gICAgICAg
IG1TaW5rLm1lc3NhZ2UoRVByZWZpeEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAiU2FtcGxlcnMgYXJlIG5vdCBwZXJt
aXR0ZWQgaW4gdmVydGV4IHNoYWRlcnMiKTsKKyAgICAgICAgbVNpbmsucHJlZml4KEVQcmVmaXhF
cnJvcik7CisgICAgICAgIG1TaW5rLmxvY2F0aW9uKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAg
IG1TaW5rIDw8ICJTYW1wbGVycyBhcmUgbm90IHBlcm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVycy5c
biI7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9Db25maWcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25m
aWcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4OWJjOGQ4Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvQ29uZmlnLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDM5OSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBDb25maWcu
Y3BwOiBJbXBsZW1lbnRzIHRoZSBlZ2w6OkNvbmZpZyBjbGFzcywgZGVzY3JpYmluZyB0aGUgZm9y
bWF0LCB0eXBlCi0vLyBhbmQgc2l6ZSBmb3IgYW4gZWdsOjpTdXJmYWNlLiBJbXBsZW1lbnRzIEVH
TENvbmZpZyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgotLy8gW0VHTCAxLjRdIHNlY3Rpb24g
My40IHBhZ2UgMTUuCi0KLSNpbmNsdWRlICJsaWJFR0wvQ29uZmlnLmgiCi0KLSNpbmNsdWRlIDxh
bGdvcml0aG0+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBlZ2wKLXsKLUNvbmZpZzo6Q29u
ZmlnKEQzRERJU1BMQVlNT0RFIGRpc3BsYXlNb2RlLCBFR0xpbnQgbWluSW50ZXJ2YWwsIEVHTGlu
dCBtYXhJbnRlcnZhbCwgRDNERk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCwgRDNERk9STUFUIGRl
cHRoU3RlbmNpbEZvcm1hdCwgRUdMaW50IG11bHRpU2FtcGxlLCBFR0xpbnQgdGV4V2lkdGgsIEVH
TGludCB0ZXhIZWlnaHQpCi0gICAgOiBtRGlzcGxheU1vZGUoZGlzcGxheU1vZGUpLCBtUmVuZGVy
VGFyZ2V0Rm9ybWF0KHJlbmRlclRhcmdldEZvcm1hdCksIG1EZXB0aFN0ZW5jaWxGb3JtYXQoZGVw
dGhTdGVuY2lsRm9ybWF0KSwgbU11bHRpU2FtcGxlKG11bHRpU2FtcGxlKQotewotICAgIHNldChk
aXNwbGF5TW9kZSwgbWluSW50ZXJ2YWwsIG1heEludGVydmFsLCByZW5kZXJUYXJnZXRGb3JtYXQs
IGRlcHRoU3RlbmNpbEZvcm1hdCwgbXVsdGlTYW1wbGUsIHRleFdpZHRoLCB0ZXhIZWlnaHQpOwot
fQotCi12b2lkIENvbmZpZzo6c2V0RGVmYXVsdHMoKQotewotICAgIG1CdWZmZXJTaXplID0gMDsK
LSAgICBtUmVkU2l6ZSA9IDA7Ci0gICAgbUdyZWVuU2l6ZSA9IDA7Ci0gICAgbUJsdWVTaXplID0g
MDsKLSAgICBtTHVtaW5hbmNlU2l6ZSA9IDA7Ci0gICAgbUFscGhhU2l6ZSA9IDA7Ci0gICAgbUFs
cGhhTWFza1NpemUgPSAwOwotICAgIG1CaW5kVG9UZXh0dXJlUkdCID0gRUdMX0RPTlRfQ0FSRTsK
LSAgICBtQmluZFRvVGV4dHVyZVJHQkEgPSBFR0xfRE9OVF9DQVJFOwotICAgIG1Db2xvckJ1ZmZl
clR5cGUgPSBFR0xfUkdCX0JVRkZFUjsKLSAgICBtQ29uZmlnQ2F2ZWF0ID0gRUdMX0RPTlRfQ0FS
RTsKLSAgICBtQ29uZmlnSUQgPSBFR0xfRE9OVF9DQVJFOwotICAgIG1Db25mb3JtYW50ID0gMDsK
LSAgICBtRGVwdGhTaXplID0gMDsKLSAgICBtTGV2ZWwgPSAwOwotICAgIG1NYXRjaE5hdGl2ZVBp
eG1hcCA9IEVHTF9OT05FOwotICAgIG1NYXhQQnVmZmVyV2lkdGggPSAwOwotICAgIG1NYXhQQnVm
ZmVySGVpZ2h0ID0gMDsKLSAgICBtTWF4UEJ1ZmZlclBpeGVscyA9IDA7Ci0gICAgbU1heFN3YXBJ
bnRlcnZhbCA9IEVHTF9ET05UX0NBUkU7Ci0gICAgbU1pblN3YXBJbnRlcnZhbCA9IEVHTF9ET05U
X0NBUkU7Ci0gICAgbU5hdGl2ZVJlbmRlcmFibGUgPSBFR0xfRE9OVF9DQVJFOwotICAgIG1OYXRp
dmVWaXN1YWxJRCA9IDA7Ci0gICAgbU5hdGl2ZVZpc3VhbFR5cGUgPSBFR0xfRE9OVF9DQVJFOwot
ICAgIG1SZW5kZXJhYmxlVHlwZSA9IEVHTF9PUEVOR0xfRVNfQklUOwotICAgIG1TYW1wbGVCdWZm
ZXJzID0gMDsKLSAgICBtU2FtcGxlcyA9IDA7Ci0gICAgbVN0ZW5jaWxTaXplID0gMDsKLSAgICBt
U3VyZmFjZVR5cGUgPSBFR0xfV0lORE9XX0JJVDsKLSAgICBtVHJhbnNwYXJlbnRUeXBlID0gRUdM
X05PTkU7Ci0gICAgbVRyYW5zcGFyZW50UmVkVmFsdWUgPSBFR0xfRE9OVF9DQVJFOwotICAgIG1U
cmFuc3BhcmVudEdyZWVuVmFsdWUgPSBFR0xfRE9OVF9DQVJFOwotICAgIG1UcmFuc3BhcmVudEJs
dWVWYWx1ZSA9IEVHTF9ET05UX0NBUkU7Ci19Ci0KLXZvaWQgQ29uZmlnOjpzZXQoRDNERElTUExB
WU1PREUgZGlzcGxheU1vZGUsIEVHTGludCBtaW5JbnRlcnZhbCwgRUdMaW50IG1heEludGVydmFs
LCBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBEM0RGT1JNQVQgZGVwdGhTdGVuY2lsRm9y
bWF0LCBFR0xpbnQgbXVsdGlTYW1wbGUsIEVHTGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdo
dCkKLXsKLSAgICBtQmluZFRvVGV4dHVyZVJHQiA9IEVHTF9GQUxTRTsKLSAgICBtQmluZFRvVGV4
dHVyZVJHQkEgPSBFR0xfRkFMU0U7Ci0gICAgc3dpdGNoIChyZW5kZXJUYXJnZXRGb3JtYXQpCi0g
ICAgewotICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6Ci0gICAgICAgIG1CdWZmZXJTaXplID0g
MTY7Ci0gICAgICAgIG1SZWRTaXplID0gNTsKLSAgICAgICAgbUdyZWVuU2l6ZSA9IDU7Ci0gICAg
ICAgIG1CbHVlU2l6ZSA9IDU7Ci0gICAgICAgIG1BbHBoYVNpemUgPSAxOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRDNERk1UX0EyUjEwRzEwQjEwOgotICAgICAgICBtQnVmZmVyU2l6ZSA9
IDMyOwotICAgICAgICBtUmVkU2l6ZSA9IDEwOwotICAgICAgICBtR3JlZW5TaXplID0gMTA7Ci0g
ICAgICAgIG1CbHVlU2l6ZSA9IDEwOwotICAgICAgICBtQWxwaGFTaXplID0gMjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKLSAgICAgICAgbUJ1ZmZlclNpemUg
PSAzMjsKLSAgICAgICAgbVJlZFNpemUgPSA4OwotICAgICAgICBtR3JlZW5TaXplID0gODsKLSAg
ICAgICAgbUJsdWVTaXplID0gODsKLSAgICAgICAgbUFscGhhU2l6ZSA9IDg7Ci0gICAgICAgIG1C
aW5kVG9UZXh0dXJlUkdCQSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBEM0RG
TVRfUjVHNkI1OgotICAgICAgICBtQnVmZmVyU2l6ZSA9IDE2OwotICAgICAgICBtUmVkU2l6ZSA9
IDU7Ci0gICAgICAgIG1HcmVlblNpemUgPSA2OwotICAgICAgICBtQmx1ZVNpemUgPSA1OwotICAg
ICAgICBtQWxwaGFTaXplID0gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEQzREZNVF9Y
OFI4RzhCODoKLSAgICAgICAgbUJ1ZmZlclNpemUgPSAzMjsKLSAgICAgICAgbVJlZFNpemUgPSA4
OwotICAgICAgICBtR3JlZW5TaXplID0gODsKLSAgICAgICAgbUJsdWVTaXplID0gODsKLSAgICAg
ICAgbUFscGhhU2l6ZSA9IDA7Ci0gICAgICAgIG1CaW5kVG9UZXh0dXJlUkdCID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOyAgIC8v
IE90aGVyIGZvcm1hdHMgc2hvdWxkIG5vdCBiZSB2YWxpZAotICAgIH0KLQotICAgIG1MdW1pbmFu
Y2VTaXplID0gMDsKLSAgICBtQWxwaGFNYXNrU2l6ZSA9IDA7Ci0gICAgbUNvbG9yQnVmZmVyVHlw
ZSA9IEVHTF9SR0JfQlVGRkVSOwotICAgIG1Db25maWdDYXZlYXQgPSAoZGlzcGxheU1vZGUuRm9y
bWF0ID09IHJlbmRlclRhcmdldEZvcm1hdCkgPyBFR0xfTk9ORSA6IEVHTF9TTE9XX0NPTkZJRzsK
LSAgICBtQ29uZmlnSUQgPSAwOwotICAgIG1Db25mb3JtYW50ID0gRUdMX09QRU5HTF9FUzJfQklU
OwotCi0gICAgc3dpdGNoIChkZXB0aFN0ZW5jaWxGb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBE
M0RGTVRfVU5LTk9XTjoKLSAgICAgICAgbURlcHRoU2l6ZSA9IDA7Ci0gICAgICAgIG1TdGVuY2ls
U2l6ZSA9IDA7Ci0gICAgICAgIGJyZWFrOwotLy8gICAgY2FzZSBEM0RGTVRfRDE2X0xPQ0tBQkxF
OgotLy8gICAgICBtRGVwdGhTaXplID0gMTY7Ci0vLyAgICAgIG1TdGVuY2lsU2l6ZSA9IDA7Ci0v
LyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBEM0RGTVRfRDMyOgotICAgICAgICBtRGVwdGhTaXpl
ID0gMzI7Ci0gICAgICAgIG1TdGVuY2lsU2l6ZSA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBEM0RGTVRfRDE1UzE6Ci0gICAgICAgIG1EZXB0aFNpemUgPSAxNTsKLSAgICAgICAgbVN0
ZW5jaWxTaXplID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEQzREZNVF9EMjRTODoK
LSAgICAgICAgbURlcHRoU2l6ZSA9IDI0OwotICAgICAgICBtU3RlbmNpbFNpemUgPSA4OwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRDNERk1UX0QyNFg4OgotICAgICAgICBtRGVwdGhTaXpl
ID0gMjQ7Ci0gICAgICAgIG1TdGVuY2lsU2l6ZSA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBEM0RGTVRfRDI0WDRTNDoKLSAgICAgICAgbURlcHRoU2l6ZSA9IDI0OwotICAgICAgICBt
U3RlbmNpbFNpemUgPSA0OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRDNERk1UX0QxNjoK
LSAgICAgICAgbURlcHRoU2l6ZSA9IDE2OwotICAgICAgICBtU3RlbmNpbFNpemUgPSAwOwotICAg
ICAgICBicmVhazsKLS8vICAgIGNhc2UgRDNERk1UX0QzMkZfTE9DS0FCTEU6Ci0vLyAgICAgIG1E
ZXB0aFNpemUgPSAzMjsKLS8vICAgICAgbVN0ZW5jaWxTaXplID0gMDsKLS8vICAgICAgYnJlYWs7
Ci0vLyAgICBjYXNlIEQzREZNVF9EMjRGUzg6Ci0vLyAgICAgIG1EZXB0aFNpemUgPSAyNDsKLS8v
ICAgICAgbVN0ZW5jaWxTaXplID0gODsKLS8vICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0Ogot
ICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIG1MZXZlbCA9IDA7Ci0gICAgbU1h
dGNoTmF0aXZlUGl4bWFwID0gRUdMX05PTkU7Ci0gICAgbU1heFBCdWZmZXJXaWR0aCA9IHRleFdp
ZHRoOwotICAgIG1NYXhQQnVmZmVySGVpZ2h0ID0gdGV4SGVpZ2h0OwotICAgIG1NYXhQQnVmZmVy
UGl4ZWxzID0gdGV4V2lkdGgqdGV4SGVpZ2h0OwotICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSBtYXhJ
bnRlcnZhbDsKLSAgICBtTWluU3dhcEludGVydmFsID0gbWluSW50ZXJ2YWw7Ci0gICAgbU5hdGl2
ZVJlbmRlcmFibGUgPSBFR0xfRkFMU0U7Ci0gICAgbU5hdGl2ZVZpc3VhbElEID0gMDsKLSAgICBt
TmF0aXZlVmlzdWFsVHlwZSA9IDA7Ci0gICAgbVJlbmRlcmFibGVUeXBlID0gRUdMX09QRU5HTF9F
UzJfQklUOwotICAgIG1TYW1wbGVCdWZmZXJzID0gbXVsdGlTYW1wbGUgPyAxIDogMDsKLSAgICBt
U2FtcGxlcyA9IG11bHRpU2FtcGxlOwotICAgIG1TdXJmYWNlVHlwZSA9IEVHTF9QQlVGRkVSX0JJ
VCB8IEVHTF9XSU5ET1dfQklUIHwgRUdMX1NXQVBfQkVIQVZJT1JfUFJFU0VSVkVEX0JJVDsKLSAg
ICBtVHJhbnNwYXJlbnRUeXBlID0gRUdMX05PTkU7Ci0gICAgbVRyYW5zcGFyZW50UmVkVmFsdWUg
PSAwOwotICAgIG1UcmFuc3BhcmVudEdyZWVuVmFsdWUgPSAwOwotICAgIG1UcmFuc3BhcmVudEJs
dWVWYWx1ZSA9IDA7Ci19Ci0KLUVHTENvbmZpZyBDb25maWc6OmdldEhhbmRsZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIChFR0xDb25maWcpKHNpemVfdCltQ29uZmlnSUQ7Ci19Ci0KLVNvcnRDb25m
aWc6OlNvcnRDb25maWcoY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KQotICAgIDogbVdhbnRSZWQo
ZmFsc2UpLCBtV2FudEdyZWVuKGZhbHNlKSwgbVdhbnRCbHVlKGZhbHNlKSwgbVdhbnRBbHBoYShm
YWxzZSksIG1XYW50THVtaW5hbmNlKGZhbHNlKQotewotICAgIHNjYW5Gb3JXYW50ZWRDb21wb25l
bnRzKGF0dHJpYkxpc3QpOwotfQotCi12b2lkIFNvcnRDb25maWc6OnNjYW5Gb3JXYW50ZWRDb21w
b25lbnRzKGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCkKLXsKLSAgICAvLyBbRUdMXSBzZWN0aW9u
IDMuNC4xIHBhZ2UgMjQKLSAgICAvLyBTb3J0aW5nIHJ1bGUgIzM6IGJ5IGxhcmdlciB0b3RhbCBu
dW1iZXIgb2YgY29sb3IgYml0cywgbm90IGNvbnNpZGVyaW5nCi0gICAgLy8gY29tcG9uZW50cyB0
aGF0IGFyZSAwIG9yIGRvbid0LWNhcmUuCi0gICAgZm9yIChjb25zdCBFR0xpbnQgKmF0dHIgPSBh
dHRyaWJMaXN0OyBhdHRyWzBdICE9IEVHTF9OT05FOyBhdHRyICs9IDIpCi0gICAgewotICAgICAg
ICBpZiAoYXR0clsxXSAhPSAwICYmIGF0dHJbMV0gIT0gRUdMX0RPTlRfQ0FSRSkKLSAgICAgICAg
ewotICAgICAgICAgICAgc3dpdGNoIChhdHRyWzBdKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICBjYXNlIEVHTF9SRURfU0laRTogICAgICAgbVdhbnRSZWQgPSB0cnVlOyBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSBFR0xfR1JFRU5fU0laRTogICAgIG1XYW50R3JlZW4gPSB0cnVlOyBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFR0xfQkxVRV9TSVpFOiAgICAgIG1XYW50Qmx1ZSA9
IHRydWU7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9BTFBIQV9TSVpFOiAgICAgbVdh
bnRBbHBoYSA9IHRydWU7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9MVU1JTkFOQ0Vf
U0laRTogbVdhbnRMdW1pbmFuY2UgPSB0cnVlOyBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLX0KLQotRUdMaW50IFNvcnRDb25maWc6OndhbnRlZENvbXBvbmVudHNTaXpl
KGNvbnN0IENvbmZpZyAmY29uZmlnKSBjb25zdAotewotICAgIEVHTGludCB0b3RhbCA9IDA7Ci0K
LSAgICBpZiAobVdhbnRSZWQpICAgICAgIHRvdGFsICs9IGNvbmZpZy5tUmVkU2l6ZTsKLSAgICBp
ZiAobVdhbnRHcmVlbikgICAgIHRvdGFsICs9IGNvbmZpZy5tR3JlZW5TaXplOwotICAgIGlmICht
V2FudEJsdWUpICAgICAgdG90YWwgKz0gY29uZmlnLm1CbHVlU2l6ZTsKLSAgICBpZiAobVdhbnRB
bHBoYSkgICAgIHRvdGFsICs9IGNvbmZpZy5tQWxwaGFTaXplOwotICAgIGlmIChtV2FudEx1bWlu
YW5jZSkgdG90YWwgKz0gY29uZmlnLm1MdW1pbmFuY2VTaXplOwotCi0gICAgcmV0dXJuIHRvdGFs
OwotfQotCi1ib29sIFNvcnRDb25maWc6Om9wZXJhdG9yKCkoY29uc3QgQ29uZmlnICp4LCBjb25z
dCBDb25maWcgKnkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICgqdGhpcykoKngsICp5KTsKLX0KLQot
Ym9vbCBTb3J0Q29uZmlnOjpvcGVyYXRvcigpKGNvbnN0IENvbmZpZyAmeCwgY29uc3QgQ29uZmln
ICZ5KSBjb25zdAotewotICAgICNkZWZpbmUgU09SVChhdHRyaWJ1dGUpICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBpZiAoeC5hdHRyaWJ1dGUgIT0geS5hdHRyaWJ1dGUpICAgICAg
ICAgICAgXAotICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAgICAgcmV0dXJuIHguYXR0cmlidXRlIDwgeS5hdHRyaWJ1dGU7ICAgICAg
XAotICAgICAgICB9Ci0KLSAgICBNRVRBX0FTU0VSVChFR0xfTk9ORSA8IEVHTF9TTE9XX0NPTkZJ
RyAmJiBFR0xfU0xPV19DT05GSUcgPCBFR0xfTk9OX0NPTkZPUk1BTlRfQ09ORklHKTsKLSAgICBT
T1JUKG1Db25maWdDYXZlYXQpOwotCi0gICAgTUVUQV9BU1NFUlQoRUdMX1JHQl9CVUZGRVIgPCBF
R0xfTFVNSU5BTkNFX0JVRkZFUik7Ci0gICAgU09SVChtQ29sb3JCdWZmZXJUeXBlKTsKLQotICAg
IC8vIEJ5IGxhcmdlciB0b3RhbCBudW1iZXIgb2YgY29sb3IgYml0cywgb25seSBjb25zaWRlcmlu
ZyB0aG9zZSB0aGF0IGFyZSByZXF1ZXN0ZWQgdG8gYmUgPiAwLgotICAgIEVHTGludCB4Q29tcG9u
ZW50c1NpemUgPSB3YW50ZWRDb21wb25lbnRzU2l6ZSh4KTsKLSAgICBFR0xpbnQgeUNvbXBvbmVu
dHNTaXplID0gd2FudGVkQ29tcG9uZW50c1NpemUoeSk7Ci0gICAgaWYgKHhDb21wb25lbnRzU2l6
ZSAhPSB5Q29tcG9uZW50c1NpemUpCi0gICAgewotICAgICAgICByZXR1cm4geENvbXBvbmVudHNT
aXplID4geUNvbXBvbmVudHNTaXplOwotICAgIH0KLQotICAgIFNPUlQobUJ1ZmZlclNpemUpOwot
ICAgIFNPUlQobVNhbXBsZUJ1ZmZlcnMpOwotICAgIFNPUlQobVNhbXBsZXMpOwotICAgIFNPUlQo
bURlcHRoU2l6ZSk7Ci0gICAgU09SVChtU3RlbmNpbFNpemUpOwotICAgIFNPUlQobUFscGhhTWFz
a1NpemUpOwotICAgIFNPUlQobU5hdGl2ZVZpc3VhbFR5cGUpOwotICAgIFNPUlQobUNvbmZpZ0lE
KTsKLQotICAgICN1bmRlZiBTT1JUCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFdlJ2Qg
bGlrZSB0byB1c2UgU29ydENvbmZpZyB0byBhbHNvIGVsaW1pbmF0ZSBkdXBsaWNhdGUgY29uZmln
cy4KLS8vIFRoaXMgd29ya3MgYXMgbG9uZyBhcyB3ZSBuZXZlciBoYXZlIHR3byBjb25maWdzIHdp
dGggZGlmZmVyZW50IHBlci1SR0ItY29tcG9uZW50IGxheW91dHMsCi0vLyBidXQgdGhlIHNhbWUg
dG90YWwuCi0vLyA1NTUxIGFuZCA1NjUgYXJlIGRpZmZlcmVudCBiZWNhdXNlIFIrRytCIGlzIGRp
ZmZlcmVudC4KLS8vIDU1NTEgYW5kIDU1NSBhcmUgZGlmZmVyZW50IGJlY2F1c2UgYnVmZmVyU2l6
ZSBpcyBkaWZmZXJlbnQuCi1jb25zdCBFR0xpbnQgQ29uZmlnU2V0OjptU29ydEF0dHJpYnNbXSA9
Ci17Ci0gICAgRUdMX1JFRF9TSVpFLCAxLAotICAgIEVHTF9HUkVFTl9TSVpFLCAxLAotICAgIEVH
TF9CTFVFX1NJWkUsIDEsCi0gICAgRUdMX0xVTUlOQU5DRV9TSVpFLCAxLAotICAgIC8vIEJVVCBO
T1QgQUxQSEEKLSAgICBFR0xfTk9ORQotfTsKLQotQ29uZmlnU2V0OjpDb25maWdTZXQoKQotICAg
IDogbVNldChTb3J0Q29uZmlnKG1Tb3J0QXR0cmlicykpCi17Ci19Ci0KLXZvaWQgQ29uZmlnU2V0
OjphZGQoRDNERElTUExBWU1PREUgZGlzcGxheU1vZGUsIEVHTGludCBtaW5Td2FwSW50ZXJ2YWws
IEVHTGludCBtYXhTd2FwSW50ZXJ2YWwsIEQzREZPUk1BVCByZW5kZXJUYXJnZXRGb3JtYXQsIEQz
REZPUk1BVCBkZXB0aFN0ZW5jaWxGb3JtYXQsIEVHTGludCBtdWx0aVNhbXBsZSwgRUdMaW50IHRl
eFdpZHRoLCBFR0xpbnQgdGV4SGVpZ2h0KQotewotICAgIENvbmZpZyBjb25maWcoZGlzcGxheU1v
ZGUsIG1pblN3YXBJbnRlcnZhbCwgbWF4U3dhcEludGVydmFsLCByZW5kZXJUYXJnZXRGb3JtYXQs
IGRlcHRoU3RlbmNpbEZvcm1hdCwgbXVsdGlTYW1wbGUsIHRleFdpZHRoLCB0ZXhIZWlnaHQpOwot
Ci0gICAgbVNldC5pbnNlcnQoY29uZmlnKTsKLX0KLQotc2l6ZV90IENvbmZpZ1NldDo6c2l6ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1TZXQuc2l6ZSgpOwotfQotCi1ib29sIENvbmZpZ1NldDo6
Z2V0Q29uZmlncyhFR0xDb25maWcgKmNvbmZpZ3MsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCwg
RUdMaW50IGNvbmZpZ1NpemUsIEVHTGludCAqbnVtQ29uZmlnKQotewotICAgIHZlY3Rvcjxjb25z
dCBDb25maWcqPiBwYXNzZWQ7Ci0gICAgcGFzc2VkLnJlc2VydmUobVNldC5zaXplKCkpOwotCi0g
ICAgZm9yIChJdGVyYXRvciBjb25maWcgPSBtU2V0LmJlZ2luKCk7IGNvbmZpZyAhPSBtU2V0LmVu
ZCgpOyBjb25maWcrKykKLSAgICB7Ci0gICAgICAgIGJvb2wgbWF0Y2ggPSB0cnVlOwotICAgICAg
ICBjb25zdCBFR0xpbnQgKmF0dHJpYnV0ZSA9IGF0dHJpYkxpc3Q7Ci0KLSAgICAgICAgd2hpbGUg
KGF0dHJpYnV0ZVswXSAhPSBFR0xfTk9ORSkKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNo
IChhdHRyaWJ1dGVbMF0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX0JV
RkZFUl9TSVpFOiAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tQnVmZmVyU2l6ZSA+PSBh
dHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVHTF9BTFBIQV9TSVpFOiAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bUFscGhh
U2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSBFR0xfQkxVRV9TSVpFOiAgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25m
aWctPm1CbHVlU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX0dSRUVOX1NJWkU6ICAgICAgICAgICAgICAgIG1h
dGNoID0gY29uZmlnLT5tR3JlZW5TaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9SRURfU0laRTogICAgICAgICAg
ICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bVJlZFNpemUgPj0gYXR0cmlidXRlWzFdOyAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFR0xfREVQVEhfU0la
RTogICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1EZXB0aFNpemUgPj0gYXR0cmlidXRl
WzFdOyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRUdM
X1NURU5DSUxfU0laRTogICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tU3RlbmNpbFNpemUg
Pj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBjYXNlIEVHTF9DT05GSUdfQ0FWRUFUOiAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bUNv
bmZpZ0NhdmVhdCA9PSAoRUdMZW51bSkgYXR0cmlidXRlWzFdOyAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSBFR0xfQ09ORklHX0lEOiAgICAgICAgICAgICAgICAgbWF0Y2ggPSBj
b25maWctPm1Db25maWdJRCA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX0xFVkVMOiAgICAgICAgICAgICAgICAgICAg
IG1hdGNoID0gY29uZmlnLT5tTGV2ZWwgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9OQVRJVkVfUkVOREVSQUJM
RTogICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bU5hdGl2ZVJlbmRlcmFibGUgPT0gKEVHTEJvb2xl
YW4pIGF0dHJpYnV0ZVsxXTsgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFR0xfTkFUSVZF
X1ZJU1VBTF9UWVBFOiAgICAgICAgbWF0Y2ggPSBjb25maWctPm1OYXRpdmVWaXN1YWxUeXBlID09
IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ug
RUdMX1NBTVBMRVM6ICAgICAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tU2FtcGxlcyA+
PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIEVHTF9TQU1QTEVfQlVGRkVSUzogICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+
bVNhbXBsZUJ1ZmZlcnMgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSBFR0xfU1VSRkFDRV9UWVBFOiAgICAgICAgICAgICAgbWF0Y2gg
PSAoY29uZmlnLT5tU3VyZmFjZVR5cGUgJiBhdHRyaWJ1dGVbMV0pID09IGF0dHJpYnV0ZVsxXTsg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1RZUEU6ICAgICAg
ICAgIG1hdGNoID0gY29uZmlnLT5tVHJhbnNwYXJlbnRUeXBlID09IChFR0xlbnVtKSBhdHRyaWJ1
dGVbMV07ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9C
TFVFX1ZBTFVFOiAgICBtYXRjaCA9IGNvbmZpZy0+bVRyYW5zcGFyZW50Qmx1ZVZhbHVlID09IGF0
dHJpYnV0ZVsxXTsgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFR0xfVFJB
TlNQQVJFTlRfR1JFRU5fVkFMVUU6ICAgbWF0Y2ggPSBjb25maWctPm1UcmFuc3BhcmVudEdyZWVu
VmFsdWUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNh
c2UgRUdMX1RSQU5TUEFSRU5UX1JFRF9WQUxVRTogICAgIG1hdGNoID0gY29uZmlnLT5tVHJhbnNw
YXJlbnRSZWRWYWx1ZSA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCOiAgICAgICBtYXRjaCA9IGNvbmZp
Zy0+bUJpbmRUb1RleHR1cmVSR0IgPT0gKEVHTEJvb2xlYW4pIGF0dHJpYnV0ZVsxXTsgICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFR0xfQklORF9UT19URVhUVVJFX1JHQkE6ICAgICAgbWF0
Y2ggPSBjb25maWctPm1CaW5kVG9UZXh0dXJlUkdCQSA9PSAoRUdMQm9vbGVhbikgYXR0cmlidXRl
WzFdOyAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX01JTl9TV0FQX0lOVEVSVkFMOiAg
ICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWluU3dhcEludGVydmFsID09IGF0dHJpYnV0ZVsxXTsg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9NQVhfU1dBUF9J
TlRFUlZBTDogICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bU1heFN3YXBJbnRlcnZhbCA9PSBhdHRy
aWJ1dGVbMV07ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFR0xf
TFVNSU5BTkNFX1NJWkU6ICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1MdW1pbmFuY2VTaXpl
ID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRUdMX0FMUEhBX01BU0tfU0laRTogICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tQWxw
aGFNYXNrU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBjYXNlIEVHTF9DT0xPUl9CVUZGRVJfVFlQRTogICAgICAgICBtYXRjaCA9IGNv
bmZpZy0+bUNvbG9yQnVmZmVyVHlwZSA9PSAoRUdMZW51bSkgYXR0cmlidXRlWzFdOyAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFR0xfUkVOREVSQUJMRV9UWVBFOiAgICAgICAgICAg
bWF0Y2ggPSAoY29uZmlnLT5tUmVuZGVyYWJsZVR5cGUgJiBhdHRyaWJ1dGVbMV0pID09IGF0dHJp
YnV0ZVsxXTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX01BVENIX05BVElWRV9QSVhN
QVA6ICAgICAgIG1hdGNoID0gZmFsc2U7IFVOSU1QTEVNRU5URUQoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9DT05GT1JN
QU5UOiAgICAgICAgICAgICAgICBtYXRjaCA9IChjb25maWctPm1Db25mb3JtYW50ICYgYXR0cmli
dXRlWzFdKSA9PSBhdHRyaWJ1dGVbMV07ICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBF
R0xfTUFYX1BCVUZGRVJfV0lEVEg6ICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1NYXhQQnVmZmVy
V2lkdGggPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hFSUdIVDogICAgICAgIG1hdGNoID0gY29uZmlnLT5t
TWF4UEJ1ZmZlckhlaWdodCA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9QSVhFTFM6ICAgICAgICBtYXRjaCA9
IGNvbmZpZy0+bU1heFBCdWZmZXJQaXhlbHMgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghbWF0Y2gpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGF0dHJpYnV0ZSArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1hdGNoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBwYXNzZWQucHVzaF9iYWNrKCYqY29uZmlnKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmIChjb25maWdzKQotICAgIHsKLSAgICAgICAgc29ydChwYXNzZWQu
YmVnaW4oKSwgcGFzc2VkLmVuZCgpLCBTb3J0Q29uZmlnKGF0dHJpYkxpc3QpKTsKLQotICAgICAg
ICBFR0xpbnQgaW5kZXg7Ci0gICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGNvbmZpZ1Np
emUgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDxFR0xpbnQ+KHBhc3NlZC5zaXplKCkpOyBpbmRleCsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25maWdzW2luZGV4XSA9IHBhc3NlZFtpbmRleF0t
PmdldEhhbmRsZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgKm51bUNvbmZpZyA9IGluZGV4Owot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAqbnVtQ29uZmlnID0gcGFzc2VkLnNpemUo
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY29uc3QgZWdsOjpDb25maWcgKkNv
bmZpZ1NldDo6Z2V0KEVHTENvbmZpZyBjb25maWdIYW5kbGUpCi17Ci0gICAgZm9yIChJdGVyYXRv
ciBjb25maWcgPSBtU2V0LmJlZ2luKCk7IGNvbmZpZyAhPSBtU2V0LmVuZCgpOyBjb25maWcrKykK
LSAgICB7Ci0gICAgICAgIGlmIChjb25maWctPmdldEhhbmRsZSgpID09IGNvbmZpZ0hhbmRsZSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICYoKmNvbmZpZyk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJFR0wvQ29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliRUdML0NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5NTYyNmVk
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvQ29uZmln
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
Ly8gQ29uZmlnLmg6IERlZmluZXMgdGhlIGVnbDo6Q29uZmlnIGNsYXNzLCBkZXNjcmliaW5nIHRo
ZSBmb3JtYXQsIHR5cGUKLS8vIGFuZCBzaXplIGZvciBhbiBlZ2w6OlN1cmZhY2UuIEltcGxlbWVu
dHMgRUdMQ29uZmlnIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCi0vLyBbRUdMIDEuNF0gc2Vj
dGlvbiAzLjQgcGFnZSAxNS4KLQotI2lmbmRlZiBJTkNMVURFX0NPTkZJR19IXwotI2RlZmluZSBJ
TkNMVURFX0NPTkZJR19IXwotCi0jZGVmaW5lIEVHTEFQSQotI2luY2x1ZGUgPEVHTC9lZ2wuaD4K
LSNpbmNsdWRlIDxkM2Q5Lmg+Ci0KLSNpbmNsdWRlIDxzZXQ+Ci0KLSNpbmNsdWRlICJjb21tb24v
YW5nbGV1dGlscy5oIgotCi1uYW1lc3BhY2UgZWdsCi17Ci1jbGFzcyBEaXNwbGF5OwotCi1jbGFz
cyBDb25maWcKLXsKLSAgcHVibGljOgotICAgIENvbmZpZyhEM0RESVNQTEFZTU9ERSBkaXNwbGF5
TW9kZSwgRUdMaW50IG1pblN3YXBJbnRlcnZhbCwgRUdMaW50IG1heFN3YXBJbnRlcnZhbCwgRDNE
Rk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCwgRDNERk9STUFUIGRlcHRoU3RlbmNpbEZvcm1hdCwg
RUdMaW50IG11bHRpU2FtcGxlLCBFR0xpbnQgdGV4V2lkdGgsIEVHTGludCB0ZXhIZWlnaHQpOwot
Ci0gICAgdm9pZCBzZXREZWZhdWx0cygpOwotICAgIHZvaWQgc2V0KEQzRERJU1BMQVlNT0RFIGRp
c3BsYXlNb2RlLCBFR0xpbnQgbWluU3dhcEludGVydmFsLCBFR0xpbnQgbWF4U3dhcEludGVydmFs
LCBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBEM0RGT1JNQVQgZGVwdGhTdGVuY2lsRm9y
bWF0LCBFR0xpbnQgbXVsdGlTYW1wbGUsIEVHTGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdo
dCk7Ci0gICAgRUdMQ29uZmlnIGdldEhhbmRsZSgpIGNvbnN0OwotCi0gICAgY29uc3QgRDNERElT
UExBWU1PREUgbURpc3BsYXlNb2RlOwotICAgIGNvbnN0IEQzREZPUk1BVCBtUmVuZGVyVGFyZ2V0
Rm9ybWF0OwotICAgIGNvbnN0IEQzREZPUk1BVCBtRGVwdGhTdGVuY2lsRm9ybWF0OwotICAgIGNv
bnN0IEVHTGludCBtTXVsdGlTYW1wbGU7Ci0KLSAgICBFR0xpbnQgbUJ1ZmZlclNpemU7ICAgICAg
ICAgICAgICAvLyBEZXB0aCBvZiB0aGUgY29sb3IgYnVmZmVyCi0gICAgRUdMaW50IG1SZWRTaXpl
OyAgICAgICAgICAgICAgICAgLy8gQml0cyBvZiBSZWQgaW4gdGhlIGNvbG9yIGJ1ZmZlcgotICAg
IEVHTGludCBtR3JlZW5TaXplOyAgICAgICAgICAgICAgIC8vIEJpdHMgb2YgR3JlZW4gaW4gdGhl
IGNvbG9yIGJ1ZmZlcgotICAgIEVHTGludCBtQmx1ZVNpemU7ICAgICAgICAgICAgICAgIC8vIEJp
dHMgb2YgQmx1ZSBpbiB0aGUgY29sb3IgYnVmZmVyCi0gICAgRUdMaW50IG1MdW1pbmFuY2VTaXpl
OyAgICAgICAgICAgLy8gQml0cyBvZiBMdW1pbmFuY2UgaW4gdGhlIGNvbG9yIGJ1ZmZlcgotICAg
IEVHTGludCBtQWxwaGFTaXplOyAgICAgICAgICAgICAgIC8vIEJpdHMgb2YgQWxwaGEgaW4gdGhl
IGNvbG9yIGJ1ZmZlcgotICAgIEVHTGludCBtQWxwaGFNYXNrU2l6ZTsgICAgICAgICAgIC8vIEJp
dHMgb2YgQWxwaGEgTWFzayBpbiB0aGUgbWFzayBidWZmZXIKLSAgICBFR0xCb29sZWFuIG1CaW5k
VG9UZXh0dXJlUkdCOyAgICAvLyBUcnVlIGlmIGJpbmRhYmxlIHRvIFJHQiB0ZXh0dXJlcy4KLSAg
ICBFR0xCb29sZWFuIG1CaW5kVG9UZXh0dXJlUkdCQTsgICAvLyBUcnVlIGlmIGJpbmRhYmxlIHRv
IFJHQkEgdGV4dHVyZXMuCi0gICAgRUdMZW51bSBtQ29sb3JCdWZmZXJUeXBlOyAgICAgICAgLy8g
Q29sb3IgYnVmZmVyIHR5cGUKLSAgICBFR0xlbnVtIG1Db25maWdDYXZlYXQ7ICAgICAgICAgICAv
LyBBbnkgY2F2ZWF0cyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24KLSAgICBFR0xpbnQgbUNvbmZpZ0lE
OyAgICAgICAgICAgICAgICAvLyBVbmlxdWUgRUdMQ29uZmlnIGlkZW50aWZpZXIKLSAgICBFR0xp
bnQgbUNvbmZvcm1hbnQ7ICAgICAgICAgICAgICAvLyBXaGV0aGVyIGNvbnRleHRzIGNyZWF0ZWQg
d2l0aCB0aGlzIGNvbmZpZyBhcmUgY29uZm9ybWFudAotICAgIEVHTGludCBtRGVwdGhTaXplOyAg
ICAgICAgICAgICAgIC8vIEJpdHMgb2YgWiBpbiB0aGUgZGVwdGggYnVmZmVyCi0gICAgRUdMaW50
IG1MZXZlbDsgICAgICAgICAgICAgICAgICAgLy8gRnJhbWUgYnVmZmVyIGxldmVsCi0gICAgRUdM
Qm9vbGVhbiBtTWF0Y2hOYXRpdmVQaXhtYXA7ICAgLy8gTWF0Y2ggdGhlIG5hdGl2ZSBwaXhtYXAg
Zm9ybWF0Ci0gICAgRUdMaW50IG1NYXhQQnVmZmVyV2lkdGg7ICAgICAgICAgLy8gTWF4aW11bSB3
aWR0aCBvZiBwYnVmZmVyCi0gICAgRUdMaW50IG1NYXhQQnVmZmVySGVpZ2h0OyAgICAgICAgLy8g
TWF4aW11bSBoZWlnaHQgb2YgcGJ1ZmZlcgotICAgIEVHTGludCBtTWF4UEJ1ZmZlclBpeGVsczsg
ICAgICAgIC8vIE1heGltdW0gc2l6ZSBvZiBwYnVmZmVyCi0gICAgRUdMaW50IG1NYXhTd2FwSW50
ZXJ2YWw7ICAgICAgICAgLy8gTWF4aW11bSBzd2FwIGludGVydmFsCi0gICAgRUdMaW50IG1NaW5T
d2FwSW50ZXJ2YWw7ICAgICAgICAgLy8gTWluaW11bSBzd2FwIGludGVydmFsCi0gICAgRUdMQm9v
bGVhbiBtTmF0aXZlUmVuZGVyYWJsZTsgICAgLy8gRUdMX1RSVUUgaWYgbmF0aXZlIHJlbmRlcmlu
ZyBBUElzIGNhbiByZW5kZXIgdG8gc3VyZmFjZQotICAgIEVHTGludCBtTmF0aXZlVmlzdWFsSUQ7
ICAgICAgICAgIC8vIEhhbmRsZSBvZiBjb3JyZXNwb25kaW5nIG5hdGl2ZSB2aXN1YWwKLSAgICBF
R0xpbnQgbU5hdGl2ZVZpc3VhbFR5cGU7ICAgICAgICAvLyBOYXRpdmUgdmlzdWFsIHR5cGUgb2Yg
dGhlIGFzc29jaWF0ZWQgdmlzdWFsCi0gICAgRUdMaW50IG1SZW5kZXJhYmxlVHlwZTsgICAgICAg
ICAgLy8gV2hpY2ggY2xpZW50IHJlbmRlcmluZyBBUElzIGFyZSBzdXBwb3J0ZWQuCi0gICAgRUdM
aW50IG1TYW1wbGVCdWZmZXJzOyAgICAgICAgICAgLy8gTnVtYmVyIG9mIG11bHRpc2FtcGxlIGJ1
ZmZlcnMKLSAgICBFR0xpbnQgbVNhbXBsZXM7ICAgICAgICAgICAgICAgICAvLyBOdW1iZXIgb2Yg
c2FtcGxlcyBwZXIgcGl4ZWwKLSAgICBFR0xpbnQgbVN0ZW5jaWxTaXplOyAgICAgICAgICAgICAv
LyBCaXRzIG9mIFN0ZW5jaWwgaW4gdGhlIHN0ZW5jaWwgYnVmZmVyCi0gICAgRUdMaW50IG1TdXJm
YWNlVHlwZTsgICAgICAgICAgICAgLy8gV2hpY2ggdHlwZXMgb2YgRUdMIHN1cmZhY2VzIGFyZSBz
dXBwb3J0ZWQuCi0gICAgRUdMZW51bSBtVHJhbnNwYXJlbnRUeXBlOyAgICAgICAgLy8gVHlwZSBv
ZiB0cmFuc3BhcmVuY3kgc3VwcG9ydGVkCi0gICAgRUdMaW50IG1UcmFuc3BhcmVudFJlZFZhbHVl
OyAgICAgLy8gVHJhbnNwYXJlbnQgcmVkIHZhbHVlCi0gICAgRUdMaW50IG1UcmFuc3BhcmVudEdy
ZWVuVmFsdWU7ICAgLy8gVHJhbnNwYXJlbnQgZ3JlZW4gdmFsdWUKLSAgICBFR0xpbnQgbVRyYW5z
cGFyZW50Qmx1ZVZhbHVlOyAgICAvLyBUcmFuc3BhcmVudCBibHVlIHZhbHVlCi19OwotCi0vLyBG
dW5jdGlvbiBvYmplY3QgdXNlZCBieSBTVEwgc29ydGluZyByb3V0aW5lcyBmb3Igb3JkZXJpbmcg
Q29uZmlncyBhY2NvcmRpbmcgdG8gW0VHTF0gc2VjdGlvbiAzLjQuMSBwYWdlIDI0LgotY2xhc3Mg
U29ydENvbmZpZwotewotICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU29ydENvbmZpZyhjb25zdCBF
R0xpbnQgKmF0dHJpYkxpc3QpOwotCi0gICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IENvbmZpZyAq
eCwgY29uc3QgQ29uZmlnICp5KSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgQ29u
ZmlnICZ4LCBjb25zdCBDb25maWcgJnkpIGNvbnN0OwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBz
Y2FuRm9yV2FudGVkQ29tcG9uZW50cyhjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QpOwotICAgIEVH
TGludCB3YW50ZWRDb21wb25lbnRzU2l6ZShjb25zdCBDb25maWcgJmNvbmZpZykgY29uc3Q7Ci0K
LSAgICBib29sIG1XYW50UmVkOwotICAgIGJvb2wgbVdhbnRHcmVlbjsKLSAgICBib29sIG1XYW50
Qmx1ZTsKLSAgICBib29sIG1XYW50QWxwaGE7Ci0gICAgYm9vbCBtV2FudEx1bWluYW5jZTsKLX07
Ci0KLWNsYXNzIENvbmZpZ1NldAotewotICAgIGZyaWVuZCBEaXNwbGF5OwotCi0gIHB1YmxpYzoK
LSAgICBDb25maWdTZXQoKTsKLQotICAgIHZvaWQgYWRkKEQzRERJU1BMQVlNT0RFIGRpc3BsYXlN
b2RlLCBFR0xpbnQgbWluU3dhcEludGVydmFsLCBFR0xpbnQgbWF4U3dhcEludGVydmFsLCBEM0RG
T1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBEM0RGT1JNQVQgZGVwdGhTdGVuY2lsRm9ybWF0LCBF
R0xpbnQgbXVsdGlTYW1wbGUsIEVHTGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdodCk7Ci0g
ICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBib29sIGdldENvbmZpZ3MoRUdMQ29uZmlnICpj
b25maWdzLCBjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QsIEVHTGludCBjb25maWdTaXplLCBFR0xp
bnQgKm51bUNvbmZpZyk7Ci0gICAgY29uc3QgZWdsOjpDb25maWcgKmdldChFR0xDb25maWcgY29u
ZmlnSGFuZGxlKTsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihD
b25maWdTZXQpOwotCi0gICAgdHlwZWRlZiBzdGQ6OnNldDxDb25maWcsIFNvcnRDb25maWc+IFNl
dDsKLSAgICB0eXBlZGVmIFNldDo6aXRlcmF0b3IgSXRlcmF0b3I7Ci0gICAgU2V0IG1TZXQ7Ci0K
LSAgICBzdGF0aWMgY29uc3QgRUdMaW50IG1Tb3J0QXR0cmlic1tdOwotfTsKLX0KLQotI2VuZGlm
ICAgLy8gSU5DTFVERV9DT05GSUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJFR0wvRGlzcGxheS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliRUdML0Rpc3BsYXkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1MmQ1Yjc1
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxh
eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzM1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLS8vIERpc3BsYXkuY3BwOiBJbXBsZW1lbnRzIHRoZSBlZ2w6OkRpc3BsYXkgY2xhc3MsIHJl
cHJlc2VudGluZyB0aGUgYWJzdHJhY3QKLS8vIGRpc3BsYXkgb24gd2hpY2ggZ3JhcGhpY3MgYXJl
IGRyYXduLiBJbXBsZW1lbnRzIEVHTERpc3BsYXkuCi0vLyBbRUdMIDEuNF0gc2VjdGlvbiAyLjEu
MiBwYWdlIDMuCi0KLSNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgotCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPgotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKLSNpbmNsdWRl
ICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCi0KLSNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgotCi0v
LyBDYW4gYWxzbyBiZSBlbmFibGVkIGJ5IGRlZmluaW5nIEZPUkNFX1JFRl9SQVNUIGluIHRoZSBw
cm9qZWN0J3MgcHJlZGVmaW5lZCBtYWNyb3MKLSNkZWZpbmUgUkVGX1JBU1QgMAotCi0vLyBUaGUg
IkRlYnVnIFRoaXMgUGl4ZWwuLi4iIGZlYXR1cmUgaW4gUElYIG9mdGVuIGZhaWxzIHdoZW4gdXNp
bmcgdGhlCi0vLyBEM0Q5RXggaW50ZXJmYWNlcy4gIEluIG9yZGVyIHRvIGdldCBkZWJ1ZyBwaXhl
bCB0byB3b3JrIG9uIGEgVmlzdGEvV2luIDcKLS8vIG1hY2hpbmUsIGRlZmluZSAiQU5HTEVfRU5B
QkxFX0QzRDlFWD0wIiBpbiB5b3VyIHByb2plY3QgZmlsZS4KLSNpZiAhZGVmaW5lZChBTkdMRV9F
TkFCTEVfRDNEOUVYKQotLy8gRW5hYmxlcyB1c2Ugb2YgdGhlIElEaXJlY3QzRDlFeCBpbnRlcmZh
Y2UsIHdoZW4gYXZhaWxhYmxlCi0jZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0Q5RVggMQotI2VuZGlm
IC8vICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5RVgpCi0KLW5hbWVzcGFjZSBlZ2wKLXsKLW5h
bWVzcGFjZQotewotICAgIHR5cGVkZWYgc3RkOjptYXA8RUdMTmF0aXZlRGlzcGxheVR5cGUsIERp
c3BsYXkqPiBEaXNwbGF5TWFwOyAKLSAgICBEaXNwbGF5TWFwIGRpc3BsYXlzOwotfQotCi1lZ2w6
OkRpc3BsYXkgKkRpc3BsYXk6OmdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxh
eUlkKQotewotICAgIGlmIChkaXNwbGF5cy5maW5kKGRpc3BsYXlJZCkgIT0gZGlzcGxheXMuZW5k
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZGlzcGxheXNbZGlzcGxheUlkXTsKLSAgICB9Ci0K
LSAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBOVUxMOwotCi0gICAgaWYgKGRpc3BsYXlJZCA9
PSBFR0xfREVGQVVMVF9ESVNQTEFZKQotICAgIHsKLSAgICAgICAgZGlzcGxheSA9IG5ldyBlZ2w6
OkRpc3BsYXkoZGlzcGxheUlkLCAoSERDKU5VTEwsIGZhbHNlKTsKLSAgICB9Ci0gICAgZWxzZSBp
ZiAoZGlzcGxheUlkID09IEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFKQotICAgIHsKLSAgICAg
ICAgZGlzcGxheSA9IG5ldyBlZ2w6OkRpc3BsYXkoZGlzcGxheUlkLCAoSERDKU5VTEwsIHRydWUp
OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBGSVhNRTogQ2hlY2sgaWYgZGlz
cGxheUlkIGlzIGEgdmFsaWQgZGlzcGxheSBkZXZpY2UgY29udGV4dAotCi0gICAgICAgIGRpc3Bs
YXkgPSBuZXcgZWdsOjpEaXNwbGF5KGRpc3BsYXlJZCwgKEhEQylkaXNwbGF5SWQsIGZhbHNlKTsK
LSAgICB9Ci0KLSAgICBkaXNwbGF5c1tkaXNwbGF5SWRdID0gZGlzcGxheTsKLSAgICByZXR1cm4g
ZGlzcGxheTsKLX0KLQotRGlzcGxheTo6RGlzcGxheShFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNw
bGF5SWQsIEhEQyBkZXZpY2VDb250ZXh0LCBib29sIHNvZnR3YXJlKSA6IG1EYyhkZXZpY2VDb250
ZXh0KQotewotICAgIG1EM2Q5TW9kdWxlID0gTlVMTDsKLSAgICBtRDNkQ29tcGlsZXJNb2R1bGUg
PSBOVUxMOwotCi0gICAgbUQzZDkgPSBOVUxMOwotICAgIG1EM2Q5RXggPSBOVUxMOwotICAgIG1E
ZXZpY2UgPSBOVUxMOwotICAgIG1EZXZpY2VFeCA9IE5VTEw7Ci0gICAgbURldmljZVdpbmRvdyA9
IE5VTEw7Ci0KLSAgICBtQWRhcHRlciA9IEQzREFEQVBURVJfREVGQVVMVDsKLQotICAgICNpZiBS
RUZfUkFTVCA9PSAxIHx8IGRlZmluZWQoRk9SQ0VfUkVGX1JBU1QpCi0gICAgICAgIG1EZXZpY2VU
eXBlID0gRDNEREVWVFlQRV9SRUY7Ci0gICAgI2Vsc2UKLSAgICAgICAgbURldmljZVR5cGUgPSBE
M0RERVZUWVBFX0hBTDsKLSAgICAjZW5kaWYKLQotICAgIG1EaXNwbGF5TW9kZSA9IEQzRERJU1BM
QVlNT0RFKCk7Ci0KLSAgICBtTWluU3dhcEludGVydmFsID0gMTsKLSAgICBtTWF4U3dhcEludGVy
dmFsID0gMTsKLSAgICBtU29mdHdhcmVEZXZpY2UgPSBzb2Z0d2FyZTsKLSAgICBtRGlzcGxheUlk
ID0gZGlzcGxheUlkOwotICAgIG1EZXZpY2VMb3N0ID0gZmFsc2U7Ci19Ci0KLURpc3BsYXk6On5E
aXNwbGF5KCkKLXsKLSAgICB0ZXJtaW5hdGUoKTsKLQotICAgIERpc3BsYXlNYXA6Oml0ZXJhdG9y
IHRoaXNEaXNwbGF5ID0gZGlzcGxheXMuZmluZChtRGlzcGxheUlkKTsKLQotICAgIGlmICh0aGlz
RGlzcGxheSAhPSBkaXNwbGF5cy5lbmQoKSkKLSAgICB7Ci0gICAgICBkaXNwbGF5cy5lcmFzZSh0
aGlzRGlzcGxheSk7Ci0gICAgfQotfQotCi1ib29sIERpc3BsYXk6OmluaXRpYWxpemUoKQotewot
ICAgIGlmIChpc0luaXRpYWxpemVkKCkpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICBpZiAobVNvZnR3YXJlRGV2aWNlKQotICAgIHsKLSAgICAgIG1EM2Q5TW9kdWxl
ID0gR2V0TW9kdWxlSGFuZGxlKFRFWFQoInN3aWZ0c2hhZGVyX2QzZDkuZGxsIikpOwotICAgIH0g
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIG1EM2Q5TW9kdWxlID0gR2V0TW9kdWxlSGFuZGxlKFRF
WFQoImQzZDkuZGxsIikpOwotICAgIH0KLSAgICBpZiAobUQzZDlNb2R1bGUgPT0gTlVMTCkKLSAg
ICB7Ci0gICAgICAgIHRlcm1pbmF0ZSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgdHlwZWRlZiBIUkVTVUxUIChXSU5BUEkgKkRpcmVjdDNEQ3JlYXRlOUV4RnVuYykoVUlO
VCwgSURpcmVjdDNEOUV4KiopOwotICAgIERpcmVjdDNEQ3JlYXRlOUV4RnVuYyBEaXJlY3QzRENy
ZWF0ZTlFeFB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGlyZWN0M0RDcmVhdGU5RXhGdW5jPihHZXRQ
cm9jQWRkcmVzcyhtRDNkOU1vZHVsZSwgIkRpcmVjdDNEQ3JlYXRlOUV4IikpOwotCi0gICNpZiBk
ZWZpbmVkKEFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVMpCi0gICAgICAv
LyBGaW5kIGEgRDNEQ29tcGlsZXIgbW9kdWxlIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBsb2FkZWQg
YmFzZWQgb24gYSBwcmVkZWZpbmVkIGxpc3Qgb2YgdmVyc2lvbnMuCi0gICAgICBzdGF0aWMgVENI
QVIqIGQzZENvbXBpbGVyTmFtZXNbXSA9IEFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RV
TEVfTkFNRVM7Ci0gIAotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoZDNkQ29tcGls
ZXJOYW1lcykgLyBzaXplb2YoKmQzZENvbXBpbGVyTmFtZXMpOyArK2kpCi0gICAgICB7Ci0gICAg
ICAgICAgaWYgKEdldE1vZHVsZUhhbmRsZUV4KDAsIGQzZENvbXBpbGVyTmFtZXNbaV0sICZtRDNk
Q29tcGlsZXJNb2R1bGUpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgfQotICAgICAgfQotICAjZWxzZQotICAgICAgLy8gTG9hZCB0aGUgdmVyc2lvbiBvZiB0
aGUgRDNEQ29tcGlsZXIgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgRGlyZWN0M0QgdmVyc2lvbiBB
TkdMRSB3YXMgYnVpbHQgd2l0aC4KLSAgICAgIG1EM2RDb21waWxlck1vZHVsZSA9IExvYWRMaWJy
YXJ5KEQzRENPTVBJTEVSX0RMTCk7Ci0gICNlbmRpZiAgLy8gQU5HTEVfUFJFTE9BREVEX0QzRENP
TVBJTEVSX01PRFVMRV9OQU1FUwotICAKLSAgICAgIGlmICghbUQzZENvbXBpbGVyTW9kdWxlKQot
ICAgICAgewotICAgICAgICAgIHRlcm1pbmF0ZSgpOwotICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgIH0KLSAgCi0gICAgICBtRDNEQ29tcGlsZUZ1bmMgPSByZWludGVycHJldF9jYXN0PEQz
RENvbXBpbGVGdW5jPihHZXRQcm9jQWRkcmVzcyhtRDNkQ29tcGlsZXJNb2R1bGUsICJEM0RDb21w
aWxlIikpOwotICAgICAgQVNTRVJUKG1EM0RDb21waWxlRnVuYyk7Ci0KLSAgICAvLyBVc2UgRGly
ZWN0M0Q5RXggaWYgYXZhaWxhYmxlLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgdmVyc2lvbiBp
cyBsZXNzCi0gICAgLy8gaW5jbGluZWQgdG8gcmVwb3J0IGEgbG9zdCBjb250ZXh0LCBmb3IgZXhh
bXBsZSB3aGVuIHRoZSB1c2VyIHN3aXRjaGVzCi0gICAgLy8gZGVza3RvcC4gRGlyZWN0M0Q5RXgg
aXMgYXZhaWxhYmxlIGluIFdpbmRvd3MgVmlzdGEgYW5kIGxhdGVyIGlmIHN1aXRhYmxlIGRyaXZl
cnMgYXJlIGF2YWlsYWJsZS4KLSAgICBpZiAoQU5HTEVfRU5BQkxFX0QzRDlFWCAmJiBEaXJlY3Qz
RENyZWF0ZTlFeFB0ciAmJiBTVUNDRUVERUQoRGlyZWN0M0RDcmVhdGU5RXhQdHIoRDNEX1NES19W
RVJTSU9OLCAmbUQzZDlFeCkpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1EM2Q5RXgpOwotICAg
ICAgICBtRDNkOUV4LT5RdWVyeUludGVyZmFjZShJSURfSURpcmVjdDNEOSwgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKio+KCZtRDNkOSkpOwotICAgICAgICBBU1NFUlQobUQzZDkpOwotICAgIH0KLSAg
ICBlbHNlCi0gICAgewotICAgICAgICBtRDNkOSA9IERpcmVjdDNEQ3JlYXRlOShEM0RfU0RLX1ZF
UlNJT04pOwotICAgIH0KLQotICAgIGlmIChtRDNkOSkKLSAgICB7Ci0gICAgICAgIGlmIChtRGMg
IT0gTlVMTCkKLSAgICAgICAgewotICAgICAgICAvLyAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJ
WE1FOiBEZXRlcm1pbmUgd2hpY2ggYWRhcHRlciBpbmRleCB0aGUgZGV2aWNlIGNvbnRleHQgY29y
cmVzcG9uZHMgdG8KLSAgICAgICAgfQotCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0OwotICAgICAg
ICAKLSAgICAgICAgLy8gR2l2ZSB1cCBvbiBnZXR0aW5nIGRldmljZSBjYXBzIGFmdGVyIGFib3V0
IG9uZSBzZWNvbmQuCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmVzdWx0ID0gbUQzZDktPkdldERldmljZUNhcHMobUFkYXB0ZXIs
IG1EZXZpY2VUeXBlLCAmbURldmljZUNhcHMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoU1VDQ0VFREVEKHJlc3VsdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQgPT0gRDNERVJS
X05PVEFWQUlMQUJMRSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTbGVlcCgxMDAp
OyAgIC8vIEdpdmUgdGhlIGRyaXZlciBzb21lIHRpbWUgdG8gaW5pdGlhbGl6ZS9yZWNvdmVyCi0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChGQUlMRUQocmVzdWx0KSkgICAvLyBE
M0RFUlJfT1VUT0ZWSURFT01FTU9SWSwgRV9PVVRPRk1FTU9SWSwgRDNERVJSX0lOVkFMSURERVZJ
Q0UsIG9yIGFub3RoZXIgZXJyb3Igd2UgY2FuJ3QgcmVjb3ZlciBmcm9tCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEVHTF9CQURfQUxMT0MsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRlclZlcnNpb24gPCBEM0RQU19WRVJTSU9O
KDIsIDApKQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGUoKTsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCBmYWxzZSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBXaGVuIERpcmVjdFg5IGlzIHJ1bm5pbmcgd2l0aCBhbiBvbGRlciBEaXJlY3RY
OCBkcml2ZXIsIGEgU3RyZXRjaFJlY3QgZnJvbSBhIHJlZ3VsYXIgdGV4dHVyZSB0byBhIHJlbmRl
ciB0YXJnZXQgdGV4dHVyZSBpcyBub3Qgc3VwcG9ydGVkLgotICAgICAgICAvLyBUaGlzIGlzIHJl
cXVpcmVkIGJ5IFRleHR1cmUyRDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0LgotICAgICAgICBpZiAo
KG1EZXZpY2VDYXBzLkRldkNhcHMyICYgRDNEREVWQ0FQUzJfQ0FOX1NUUkVUQ0hSRUNUX0ZST01f
VEVYVFVSRVMpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlcm1pbmF0ZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsIGZhbHNlKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1NaW5Td2FwSW50ZXJ2YWwgPSA0OwotICAgICAgICBtTWF4U3dhcElu
dGVydmFsID0gMDsKLQotICAgICAgICBpZiAobURldmljZUNhcHMuUHJlc2VudGF0aW9uSW50ZXJ2
YWxzICYgRDNEUFJFU0VOVF9JTlRFUlZBTF9JTU1FRElBVEUpIHttTWluU3dhcEludGVydmFsID0g
c3RkOjptaW4obU1pblN3YXBJbnRlcnZhbCwgMCk7IG1NYXhTd2FwSW50ZXJ2YWwgPSBzdGQ6Om1h
eChtTWF4U3dhcEludGVydmFsLCAwKTt9Ci0gICAgICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVzZW50
YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX09ORSkgICAgICAge21NaW5Td2Fw
SW50ZXJ2YWwgPSBzdGQ6Om1pbihtTWluU3dhcEludGVydmFsLCAxKTsgbU1heFN3YXBJbnRlcnZh
bCA9IHN0ZDo6bWF4KG1NYXhTd2FwSW50ZXJ2YWwsIDEpO30KLSAgICAgICAgaWYgKG1EZXZpY2VD
YXBzLlByZXNlbnRhdGlvbkludGVydmFscyAmIEQzRFBSRVNFTlRfSU5URVJWQUxfVFdPKSAgICAg
ICB7bU1pblN3YXBJbnRlcnZhbCA9IHN0ZDo6bWluKG1NaW5Td2FwSW50ZXJ2YWwsIDIpOyBtTWF4
U3dhcEludGVydmFsID0gc3RkOjptYXgobU1heFN3YXBJbnRlcnZhbCwgMik7fQotICAgICAgICBp
ZiAobURldmljZUNhcHMuUHJlc2VudGF0aW9uSW50ZXJ2YWxzICYgRDNEUFJFU0VOVF9JTlRFUlZB
TF9USFJFRSkgICAgIHttTWluU3dhcEludGVydmFsID0gc3RkOjptaW4obU1pblN3YXBJbnRlcnZh
bCwgMyk7IG1NYXhTd2FwSW50ZXJ2YWwgPSBzdGQ6Om1heChtTWF4U3dhcEludGVydmFsLCAzKTt9
Ci0gICAgICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVzZW50YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVT
RU5UX0lOVEVSVkFMX0ZPVVIpICAgICAge21NaW5Td2FwSW50ZXJ2YWwgPSBzdGQ6Om1pbihtTWlu
U3dhcEludGVydmFsLCA0KTsgbU1heFN3YXBJbnRlcnZhbCA9IHN0ZDo6bWF4KG1NYXhTd2FwSW50
ZXJ2YWwsIDQpO30KLQotICAgICAgICBtRDNkOS0+R2V0QWRhcHRlcklkZW50aWZpZXIobUFkYXB0
ZXIsIDAsICZtQWRhcHRlcklkZW50aWZpZXIpOwotCi0gICAgICAgIC8vIEFUSSBjYXJkcyBvbiBY
UCBoYXZlIHByb2JsZW1zIHdpdGggbm9uLXBvd2VyLW9mLXR3byB0ZXh0dXJlcy4KLSAgICAgICAg
bVN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZXMgPSAhKG1EZXZpY2VDYXBzLlRleHR1cmVDYXBzICYg
RDNEUFRFWFRVUkVDQVBTX1BPVzIpICYmCi0gICAgICAgICAgICEobURldmljZUNhcHMuVGV4dHVy
ZUNhcHMgJiBEM0RQVEVYVFVSRUNBUFNfQ1VCRU1BUF9QT1cyKSAmJgotICAgICAgICAgICAhKG1E
ZXZpY2VDYXBzLlRleHR1cmVDYXBzICYgRDNEUFRFWFRVUkVDQVBTX05PTlBPVzJDT05ESVRJT05B
TCkgJiYKLSAgICAgICAgICAgIShnZXRDb21wYXJhYmxlT1NWZXJzaW9uKCkgPCB2ZXJzaW9uV2lu
ZG93c1Zpc3RhICYmIG1BZGFwdGVySWRlbnRpZmllci5WZW5kb3JJZCA9PSBWRU5ET1JfSURfQU1E
KTsKLQotICAgICAgICBjb25zdCBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0c1tdID0KLSAg
ICAgICAgewotICAgICAgICAgICAgRDNERk1UX0ExUjVHNUI1LAotICAgICAgICAvLyAgRDNERk1U
X0EyUjEwRzEwQjEwLCAgIC8vIFRoZSBjb2xvcl9yYW1wIGNvbmZvcm1hbmNlIHRlc3QgdXNlcyBS
ZWFkUGl4ZWxzIHdpdGggVU5TSUdORURfQllURSBjYXVzaW5nIGl0IHRvIHRoaW5rIHRoYXQgcmVu
ZGVyaW5nIHNraXBwZWQgYSBjb2xvdXIgdmFsdWUuCi0gICAgICAgICAgICBEM0RGTVRfQThSOEc4
QjgsCi0gICAgICAgICAgICBEM0RGTVRfUjVHNkI1LAotICAgICAgICAvLyAgRDNERk1UX1gxUjVH
NUI1LCAgICAgIC8vIEhhcyBubyBjb21wYXRpYmxlIE9wZW5HTCBFUyByZW5kZXJidWZmZXIgZm9y
bWF0Ci0gICAgICAgICAgICBEM0RGTVRfWDhSOEc4QjgKLSAgICAgICAgfTsKLQotICAgICAgICBj
b25zdCBEM0RGT1JNQVQgZGVwdGhTdGVuY2lsRm9ybWF0c1tdID0KLSAgICAgICAgewotICAgICAg
ICAgICAgRDNERk1UX1VOS05PV04sCi0gICAgICAgIC8vICBEM0RGTVRfRDE2X0xPQ0tBQkxFLAot
ICAgICAgICAgICAgRDNERk1UX0QzMiwKLSAgICAgICAgLy8gIEQzREZNVF9EMTVTMSwKLSAgICAg
ICAgICAgIEQzREZNVF9EMjRTOCwKLSAgICAgICAgICAgIEQzREZNVF9EMjRYOCwKLSAgICAgICAg
Ly8gIEQzREZNVF9EMjRYNFM0LAotICAgICAgICAgICAgRDNERk1UX0QxNiwKLSAgICAgICAgLy8g
IEQzREZNVF9EMzJGX0xPQ0tBQkxFLAotICAgICAgICAvLyAgRDNERk1UX0QyNEZTOAotICAgICAg
ICB9OwotCi0gICAgICAgIGlmIChGQUlMRUQobUQzZDktPkdldEFkYXB0ZXJEaXNwbGF5TW9kZSht
QWRhcHRlciwgJm1EaXNwbGF5TW9kZSkpKQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXJtaW5h
dGUoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIENv
bmZpZ1NldCBjb25maWdTZXQ7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZm9ybWF0SW5k
ZXggPSAwOyBmb3JtYXRJbmRleCA8IHNpemVvZihyZW5kZXJUYXJnZXRGb3JtYXRzKSAvIHNpemVv
ZihEM0RGT1JNQVQpOyBmb3JtYXRJbmRleCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBEM0RG
T1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gcmVuZGVyVGFyZ2V0Rm9ybWF0c1tmb3JtYXRJbmRl
eF07Ci0KLSAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUQzZDktPkNoZWNrRGV2aWNlRm9y
bWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0Vf
UkVOREVSVEFSR0VULCBEM0RSVFlQRV9TVVJGQUNFLCByZW5kZXJUYXJnZXRGb3JtYXQpOwotCi0g
ICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZGVwdGhTdGVuY2lsSW5kZXggPSAwOyBkZXB0aFN0
ZW5jaWxJbmRleCA8IHNpemVvZihkZXB0aFN0ZW5jaWxGb3JtYXRzKSAvIHNpemVvZihEM0RGT1JN
QVQpOyBkZXB0aFN0ZW5jaWxJbmRleCsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgRDNERk9STUFUIGRlcHRoU3RlbmNpbEZvcm1hdCA9IGRlcHRoU3RlbmNpbEZvcm1h
dHNbZGVwdGhTdGVuY2lsSW5kZXhdOwotICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IEQzRF9PSzsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlm
KGRlcHRoU3RlbmNpbEZvcm1hdCAhPSBEM0RGTVRfVU5LTk9XTikKLSAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbUQzZDktPkNoZWNrRGV2aWNl
Rm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNB
R0VfREVQVEhTVEVOQ0lMLCBEM0RSVFlQRV9TVVJGQUNFLCBkZXB0aFN0ZW5jaWxGb3JtYXQpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURF
RChyZXN1bHQpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZihkZXB0aFN0ZW5jaWxGb3JtYXQgIT0gRDNERk1UX1VOS05PV04pCi0gICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbUQzZDkt
PkNoZWNrRGVwdGhTdGVuY2lsTWF0Y2gobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGlzcGxheU1v
ZGUuRm9ybWF0LCByZW5kZXJUYXJnZXRGb3JtYXQsIGRlcHRoU3RlbmNpbEZvcm1hdCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTVUND
RUVERUQocmVzdWx0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogZW51bWVyYXRlIG11bHRpLXNhbXBsaW5nCi0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25maWdTZXQuYWRkKG1EaXNwbGF5TW9kZSwgbU1pblN3
YXBJbnRlcnZhbCwgbU1heFN3YXBJbnRlcnZhbCwgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBkZXB0aFN0
ZW5jaWxGb3JtYXQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtRGV2aWNlQ2Fwcy5NYXhUZXh0dXJlV2lkdGgsIG1EZXZpY2VDYXBzLk1heFRleHR1cmVIZWln
aHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
R2l2ZSB0aGUgc29ydGVkIGNvbmZpZ3MgYSB1bmlxdWUgSUQgYW5kIHN0b3JlIHRoZW0gaW50ZXJu
YWxseQotICAgICAgICBFR0xpbnQgaW5kZXggPSAxOwotICAgICAgICBmb3IgKENvbmZpZ1NldDo6
SXRlcmF0b3IgY29uZmlnID0gY29uZmlnU2V0Lm1TZXQuYmVnaW4oKTsgY29uZmlnICE9IGNvbmZp
Z1NldC5tU2V0LmVuZCgpOyBjb25maWcrKykKLSAgICAgICAgewotICAgICAgICAgICAgQ29uZmln
IGNvbmZpZ3VyYXRpb24gPSAqY29uZmlnOwotICAgICAgICAgICAgY29uZmlndXJhdGlvbi5tQ29u
ZmlnSUQgPSBpbmRleDsKLSAgICAgICAgICAgIGluZGV4Kys7Ci0KLSAgICAgICAgICAgIG1Db25m
aWdTZXQubVNldC5pbnNlcnQoY29uZmlndXJhdGlvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkKLSAgICB7Ci0gICAgICAgIHRlcm1pbmF0ZSgpOwotCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7
Ci0gICAgaW5pdFZlbmRvclN0cmluZygpOwotCi0gICAgc3RhdGljIGNvbnN0IFRDSEFSIHdpbmRv
d05hbWVbXSA9IFRFWFQoIkFuZ2xlSGlkZGVuV2luZG93Iik7Ci0gICAgc3RhdGljIGNvbnN0IFRD
SEFSIGNsYXNzTmFtZVtdID0gVEVYVCgiU1RBVElDIik7Ci0KLSAgICBtRGV2aWNlV2luZG93ID0g
Q3JlYXRlV2luZG93RXgoV1NfRVhfTk9BQ1RJVkFURSwgY2xhc3NOYW1lLCB3aW5kb3dOYW1lLCBX
U19ESVNBQkxFRCB8IFdTX1BPUFVQLCAwLCAwLCAxLCAxLCBIV05EX01FU1NBR0UsIE5VTEwsIEdl
dE1vZHVsZUhhbmRsZShOVUxMKSwgTlVMTCk7Ci0KLSAgICBpZiAoIWNyZWF0ZURldmljZSgpKQot
ICAgIHsKLSAgICAgICAgdGVybWluYXRlKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBtVmVydGV4U2hhZGVyQ2FjaGUuaW5pdGlhbGl6ZShtRGV2aWNlKTsKLSAgICBtUGl4
ZWxTaGFkZXJDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXZvaWQgRGlzcGxheTo6dGVybWluYXRlKCkKLXsKLSAgICB3aGlsZSAoIW1TdXJmYWNlU2V0
LmVtcHR5KCkpCi0gICAgewotICAgICAgICBkZXN0cm95U3VyZmFjZSgqbVN1cmZhY2VTZXQuYmVn
aW4oKSk7Ci0gICAgfQotCi0gICAgd2hpbGUgKCFtQ29udGV4dFNldC5lbXB0eSgpKQotICAgIHsK
LSAgICAgICAgZGVzdHJveUNvbnRleHQoKm1Db250ZXh0U2V0LmJlZ2luKCkpOwotICAgIH0KLQot
ICAgIHdoaWxlICghbUV2ZW50UXVlcnlQb29sLmVtcHR5KCkpCi0gICAgewotICAgICAgICBtRXZl
bnRRdWVyeVBvb2wuYmFjaygpLT5SZWxlYXNlKCk7Ci0gICAgICAgIG1FdmVudFF1ZXJ5UG9vbC5w
b3BfYmFjaygpOwotICAgIH0KLQotICAgIG1WZXJ0ZXhTaGFkZXJDYWNoZS5jbGVhcigpOwotICAg
IG1QaXhlbFNoYWRlckNhY2hlLmNsZWFyKCk7Ci0KLSAgICBpZiAobURldmljZSkKLSAgICB7Ci0g
ICAgICAgIC8vIElmIHRoZSBkZXZpY2UgaXMgbG9zdCwgcmVzZXQgaXQgZmlyc3QgdG8gcHJldmVu
dCBsZWF2aW5nIHRoZSBkcml2ZXIgaW4gYW4gdW5zdGFibGUgc3RhdGUKLSAgICAgICAgaWYgKHRl
c3REZXZpY2VMb3N0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlc2V0RGV2aWNlKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtRGV2aWNlLT5SZWxlYXNlKCk7Ci0gICAgICAgIG1EZXZpY2Ug
PSBOVUxMOwotICAgIH0KLQotICAgIGlmIChtRGV2aWNlRXgpCi0gICAgewotICAgICAgICBtRGV2
aWNlRXgtPlJlbGVhc2UoKTsKLSAgICAgICAgbURldmljZUV4ID0gTlVMTDsKLSAgICB9Ci0KLSAg
ICBpZiAobUQzZDkpCi0gICAgewotICAgICAgICBtRDNkOS0+UmVsZWFzZSgpOwotICAgICAgICBt
RDNkOSA9IE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKG1EZXZpY2VXaW5kb3cpCi0gICAgewotICAg
ICAgICBEZXN0cm95V2luZG93KG1EZXZpY2VXaW5kb3cpOwotICAgICAgICBtRGV2aWNlV2luZG93
ID0gTlVMTDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1EM2Q5RXgpCi0gICAgewotICAgICAgICBt
RDNkOUV4LT5SZWxlYXNlKCk7Ci0gICAgICAgIG1EM2Q5RXggPSBOVUxMOwotICAgIH0KLQotICAg
IGlmIChtRDNkOU1vZHVsZSkKLSAgICB7Ci0gICAgICAgIG1EM2Q5TW9kdWxlID0gTlVMTDsKLSAg
ICB9Ci0KLSAgICBpZiAobUQzZENvbXBpbGVyTW9kdWxlKQotICAgIHsKLSAgICAgICAgRnJlZUxp
YnJhcnkobUQzZENvbXBpbGVyTW9kdWxlKTsKLSAgICAgICAgbUQzZENvbXBpbGVyTW9kdWxlID0g
TlVMTDsKLSAgICB9Ci19Ci0KLXZvaWQgRGlzcGxheTo6c3RhcnRTY2VuZSgpCi17Ci0gICAgaWYg
KCFtU2NlbmVTdGFydGVkKQotICAgIHsKLSAgICAgICAgbG9uZyByZXN1bHQgPSBtRGV2aWNlLT5C
ZWdpblNjZW5lKCk7Ci0gICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkgewotICAgICAgICAg
ICAgLy8gVGhpcyBpcyBkZWZlbnNpdmUgY2hlY2tpbmcgYWdhaW5zdCB0aGUgZGV2aWNlIGJlaW5n
Ci0gICAgICAgICAgICAvLyBsb3N0IGF0IHVuZXhwZWN0ZWQgdGltZXMuCi0gICAgICAgICAgICBt
U2NlbmVTdGFydGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBEaXNwbGF5
OjplbmRTY2VuZSgpCi17Ci0gICAgaWYgKG1TY2VuZVN0YXJ0ZWQpCi0gICAgewotICAgICAgICAv
LyBFbmRTY2VuZSBjYW4gZmFpbCBpZiB0aGUgZGV2aWNlIHdhcyBsb3N0LCBmb3IgZXhhbXBsZSBk
dWUKLSAgICAgICAgLy8gdG8gYSBURFIgZHVyaW5nIGEgZHJhdyBjYWxsLgotICAgICAgICBtRGV2
aWNlLT5FbmRTY2VuZSgpOwotICAgICAgICBtU2NlbmVTdGFydGVkID0gZmFsc2U7Ci0gICAgfQot
fQotCi1ib29sIERpc3BsYXk6OmdldENvbmZpZ3MoRUdMQ29uZmlnICpjb25maWdzLCBjb25zdCBF
R0xpbnQgKmF0dHJpYkxpc3QsIEVHTGludCBjb25maWdTaXplLCBFR0xpbnQgKm51bUNvbmZpZykK
LXsKLSAgICByZXR1cm4gbUNvbmZpZ1NldC5nZXRDb25maWdzKGNvbmZpZ3MsIGF0dHJpYkxpc3Qs
IGNvbmZpZ1NpemUsIG51bUNvbmZpZyk7Ci19Ci0KLWJvb2wgRGlzcGxheTo6Z2V0Q29uZmlnQXR0
cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCi17
Ci0gICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24gPSBtQ29uZmlnU2V0LmdldChj
b25maWcpOwotCi0gICAgc3dpdGNoIChhdHRyaWJ1dGUpCi0gICAgewotICAgICAgY2FzZSBFR0xf
QlVGRkVSX1NJWkU6ICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUJ1ZmZl
clNpemU7ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQUxQSEFfU0laRTogICAg
ICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUFscGhhU2l6ZTsgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQkxVRV9TSVpFOiAgICAgICAgICAgICAgICAgKnZh
bHVlID0gY29uZmlndXJhdGlvbi0+bUJsdWVTaXplOyAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFR0xfR1JFRU5fU0laRTogICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJh
dGlvbi0+bUdyZWVuU2l6ZTsgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfUkVE
X1NJWkU6ICAgICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bVJlZFNpemU7
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfREVQVEhfU0laRTogICAgICAg
ICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bURlcHRoU2l6ZTsgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFR0xfU1RFTkNJTF9TSVpFOiAgICAgICAgICAgICAgKnZhbHVl
ID0gY29uZmlndXJhdGlvbi0+bVN0ZW5jaWxTaXplOyAgICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFR0xfQ09ORklHX0NBVkVBVDogICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlv
bi0+bUNvbmZpZ0NhdmVhdDsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQ09ORklH
X0lEOiAgICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUNvbmZpZ0lEOyAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfTEVWRUw6ICAgICAgICAgICAgICAg
ICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUxldmVsOyAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFR0xfTkFUSVZFX1JFTkRFUkFCTEU6ICAgICAgICAgKnZhbHVlID0g
Y29uZmlndXJhdGlvbi0+bU5hdGl2ZVJlbmRlcmFibGU7ICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFOiAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+
bU5hdGl2ZVZpc3VhbFR5cGU7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfU0FNUExFUzog
ICAgICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bVNhbXBsZXM7ICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfU0FNUExFX0JVRkZFUlM6ICAgICAgICAg
ICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bVNhbXBsZUJ1ZmZlcnM7ICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFR0xfU1VSRkFDRV9UWVBFOiAgICAgICAgICAgICAgKnZhbHVlID0gY29u
ZmlndXJhdGlvbi0+bVN1cmZhY2VUeXBlOyAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
R0xfVFJBTlNQQVJFTlRfVFlQRTogICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bVRy
YW5zcGFyZW50VHlwZTsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRf
QkxVRV9WQUxVRTogICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bVRyYW5zcGFyZW50Qmx1ZVZh
bHVlOyAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfR1JFRU5fVkFMVUU6ICAg
KnZhbHVlID0gY29uZmlndXJhdGlvbi0+bVRyYW5zcGFyZW50R3JlZW5WYWx1ZTsgIGJyZWFrOwot
ICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfUkVEX1ZBTFVFOiAgICAgKnZhbHVlID0gY29uZmln
dXJhdGlvbi0+bVRyYW5zcGFyZW50UmVkVmFsdWU7ICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xf
QklORF9UT19URVhUVVJFX1JHQjogICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUJpbmRU
b1RleHR1cmVSR0I7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQklORF9UT19URVhUVVJF
X1JHQkE6ICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUJpbmRUb1RleHR1cmVSR0JBOyAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfTUlOX1NXQVBfSU5URVJWQUw6ICAgICAgICAgKnZh
bHVlID0gY29uZmlndXJhdGlvbi0+bU1pblN3YXBJbnRlcnZhbDsgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFR0xfTUFYX1NXQVBfSU5URVJWQUw6ICAgICAgICAgKnZhbHVlID0gY29uZmlndXJh
dGlvbi0+bU1heFN3YXBJbnRlcnZhbDsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfTFVN
SU5BTkNFX1NJWkU6ICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUx1bWluYW5j
ZVNpemU7ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQUxQSEFfTUFTS19TSVpFOiAg
ICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUFscGhhTWFza1NpemU7ICAgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFR0xfQ09MT1JfQlVGRkVSX1RZUEU6ICAgICAgICAgKnZhbHVl
ID0gY29uZmlndXJhdGlvbi0+bUNvbG9yQnVmZmVyVHlwZTsgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFR0xfUkVOREVSQUJMRV9UWVBFOiAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlv
bi0+bVJlbmRlcmFibGVUeXBlOyAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfTUFUQ0hf
TkFUSVZFX1BJWE1BUDogICAgICAgKnZhbHVlID0gZmFsc2U7IFVOSU1QTEVNRU5URUQoKTsgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQ09ORk9STUFOVDogICAgICAgICAg
ICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bUNvbmZvcm1hbnQ7ICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFR0xfTUFYX1BCVUZGRVJfV0lEVEg6ICAgICAgICAgKnZhbHVlID0g
Y29uZmlndXJhdGlvbi0+bU1heFBCdWZmZXJXaWR0aDsgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFR0xfTUFYX1BCVUZGRVJfSEVJR0hUOiAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+
bU1heFBCdWZmZXJIZWlnaHQ7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfTUFYX1BCVUZG
RVJfUElYRUxTOiAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bU1heFBCdWZmZXJQaXhl
bHM7ICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERpc3BsYXk6OmNyZWF0ZURldmlj
ZSgpCi17Ci0gICAgaWYgKCFpc0luaXRpYWxpemVkKCkpCi0gICAgewotICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgZmFsc2UpOwotICAgIH0KLSAgICBEM0RQUkVTRU5U
X1BBUkFNRVRFUlMgcHJlc2VudFBhcmFtZXRlcnMgPSBnZXREZWZhdWx0UHJlc2VudFBhcmFtZXRl
cnMoKTsKLSAgICBEV09SRCBiZWhhdmlvckZsYWdzID0gRDNEQ1JFQVRFX0ZQVV9QUkVTRVJWRSB8
IEQzRENSRUFURV9OT1dJTkRPV0NIQU5HRVM7Ci0KLSAgICBIUkVTVUxUIHJlc3VsdCA9IG1EM2Q5
LT5DcmVhdGVEZXZpY2UobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGV2aWNlV2luZG93LCBiZWhh
dmlvckZsYWdzIHwgRDNEQ1JFQVRFX0hBUkRXQVJFX1ZFUlRFWFBST0NFU1NJTkcgfCBEM0RDUkVB
VEVfUFVSRURFVklDRSwgJnByZXNlbnRQYXJhbWV0ZXJzLCAmbURldmljZSk7Ci0KLSAgICBpZiAo
cmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVN
T1JZIHx8IHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcihFR0xfQkFEX0FMTE9DLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQotICAgIHsKLSAgICAgICAgcmVzdWx0ID0gbUQzZDktPkNyZWF0ZURldmljZShtQWRh
cHRlciwgbURldmljZVR5cGUsIG1EZXZpY2VXaW5kb3csIGJlaGF2aW9yRmxhZ3MgfCBEM0RDUkVB
VEVfU09GVFdBUkVfVkVSVEVYUFJPQ0VTU0lORywgJnByZXNlbnRQYXJhbWV0ZXJzLCAmbURldmlj
ZSk7Ci0KLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBF
X09VVE9GTUVNT1JZIHx8IHJlc3VsdCA9PSBEM0RFUlJfTk9UQVZBSUxBQkxFIHx8IHJlc3VsdCA9
PSBEM0RFUlJfREVWSUNFTE9TVCk7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9B
TExPQywgZmFsc2UpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1EM2Q5RXgpCi0gICAg
ewotICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5RdWVyeUludGVyZmFjZShJSURfSURpcmVjdDNE
RGV2aWNlOUV4LCAodm9pZCoqKSAmbURldmljZUV4KTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplRGV2aWNlKCk7Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotLy8gZG8gYW55IG9uZS10aW1lIGRldmljZSBpbml0aWFsaXphdGlvbgot
Ly8gTk9URTogdGhpcyBpcyBhbHNvIG5lZWRlZCBhZnRlciBhIGRldmljZSBsb3N0L3Jlc2V0Ci0v
LyB0byByZXNldCB0aGUgc2NlbmUgc3RhdHVzIGFuZCBlbnN1cmUgdGhlIGRlZmF1bHQgc3RhdGVz
IGFyZSByZXNldC4KLXZvaWQgRGlzcGxheTo6aW5pdGlhbGl6ZURldmljZSgpCi17Ci0gICAgLy8g
UGVybWFuZW50IG5vbi1kZWZhdWx0IHN0YXRlcwotICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX1BPSU5UU1BSSVRFRU5BQkxFLCBUUlVFKTsKLSAgICBtRGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19MQVNUUElYRUwsIEZBTFNFKTsKLQotICAgIGlmIChtRGV2aWNlQ2Fwcy5QaXhl
bFNoYWRlclZlcnNpb24gPj0gRDNEUFNfVkVSU0lPTigzLCAwKSkKLSAgICB7Ci0gICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1BPSU5UU0laRV9NQVgsIChEV09SRCYpbURldmlj
ZUNhcHMuTWF4UG9pbnRTaXplKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTSVpFX01BWCwgMHgzRjgwMDAwMCk7ICAg
Ly8gMS4wZgotICAgIH0KLQotICAgIG1TY2VuZVN0YXJ0ZWQgPSBmYWxzZTsKLX0KLQotYm9vbCBE
aXNwbGF5OjpyZXNldERldmljZSgpCi17Ci0gICAgRDNEUFJFU0VOVF9QQVJBTUVURVJTIHByZXNl
bnRQYXJhbWV0ZXJzID0gZ2V0RGVmYXVsdFByZXNlbnRQYXJhbWV0ZXJzKCk7Ci0KLSAgICBIUkVT
VUxUIHJlc3VsdCA9IEQzRF9PSzsKLSAgICBib29sIGxvc3QgPSB0ZXN0RGV2aWNlTG9zdCgpOwot
ICAgIGludCBhdHRlbXB0cyA9IDM7ICAgIAotCi0gICAgd2hpbGUgKGxvc3QgJiYgYXR0ZW1wdHMg
PiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1EZXZpY2VFeCkKLSAgICAgICAgewotICAgICAgICAg
ICAgU2xlZXAoNTAwKTsgICAvLyBHaXZlIHRoZSBncmFwaGljcyBkcml2ZXIgc29tZSBDUFUgdGlt
ZQotICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZUV4LT5SZXNldEV4KCZwcmVzZW50UGFyYW1l
dGVycywgTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICB3aGlsZSAocmVzdWx0ID09IEQzREVSUl9ERVZJQ0VMT1NUKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIFNsZWVwKDEwMCk7ICAgLy8gR2l2ZSB0aGUgZ3Jh
cGhpY3MgZHJpdmVyIHNvbWUgQ1BVIHRpbWUKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2
aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAocmVzdWx0ID09IEQzREVSUl9ERVZJQ0VOT1RSRVNFVCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5SZXNldCgmcHJlc2VudFBhcmFtZXRlcnMp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbG9zdCA9IHRlc3REZXZpY2VM
b3N0KCk7Ci0gICAgICAgIGF0dGVtcHRzIC0tOwotICAgIH0KLQotICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKLSAgICB7Ci0gICAgICAgIEVSUigiUmVzZXQvUmVzZXRFeCBmYWlsZWQgbXVsdGlwbGUg
dGltZXM6IDB4JTA4WCIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FM
TE9DLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgLy8gcmVzZXQgZGV2aWNlIGRlZmF1bHRzCi0gICAg
aW5pdGlhbGl6ZURldmljZSgpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVHTFN1cmZhY2Ug
RGlzcGxheTo6Y3JlYXRlV2luZG93U3VyZmFjZShIV05EIHdpbmRvdywgRUdMQ29uZmlnIGNvbmZp
ZywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KQotewotICAgIGNvbnN0IENvbmZpZyAqY29uZmln
dXJhdGlvbiA9IG1Db25maWdTZXQuZ2V0KGNvbmZpZyk7Ci0gICAgRUdMaW50IHBvc3RTdWJCdWZm
ZXJTdXBwb3J0ZWQgPSBFR0xfRkFMU0U7Ci0KLSAgICBpZiAoYXR0cmliTGlzdCkKLSAgICB7Ci0g
ICAgICAgIHdoaWxlICgqYXR0cmliTGlzdCAhPSBFR0xfTk9ORSkKLSAgICAgICAgewotICAgICAg
ICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzBdKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICBjYXNlIEVHTF9SRU5ERVJfQlVGRkVSOgotICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0cmli
TGlzdFsxXSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEVHTF9C
QUNLX0JVRkZFUjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICBjYXNlIEVHTF9TSU5HTEVfQlVGRkVSOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOyAgIC8vIFJlbmRlcmluZyBkaXJlY3Rs
eSB0byBmcm9udCBidWZmZXIgbm90IHN1cHBvcnRlZAotICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQVRUUklCVVRFLCBF
R0xfTk9fU1VSRkFDRSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBjYXNlIEVHTF9QT1NUX1NVQl9CVUZGRVJfU1VQUE9SVEVEX05WOgot
ICAgICAgICAgICAgICAgIHBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQgPSBhdHRyaWJMaXN0WzFdOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9WR19DT0xPUlNQ
QUNFOgotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9f
U1VSRkFDRSk7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX1ZHX0FMUEhBX0ZPUk1BVDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOwot
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xf
QkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBhdHRyaWJMaXN0ICs9IDI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoaGFzRXhp
c3RpbmdXaW5kb3dTdXJmYWNlKHdpbmRvdykpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3Io
RUdMX0JBRF9BTExPQywgRUdMX05PX1NVUkZBQ0UpOwotICAgIH0KLQotICAgIGlmICh0ZXN0RGV2
aWNlTG9zdCgpKSAKLSAgICB7Ci0gICAgICAgIGlmICghcmVzdG9yZUxvc3REZXZpY2UoKSkKLSAg
ICAgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKLSAgICB9Ci0KLSAgICBTdXJmYWNlICpz
dXJmYWNlID0gbmV3IFN1cmZhY2UodGhpcywgY29uZmlndXJhdGlvbiwgd2luZG93LCBwb3N0U3Vi
QnVmZmVyU3VwcG9ydGVkKTsKLQotICAgIGlmICghc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKQotICAg
IHsKLSAgICAgICAgZGVsZXRlIHN1cmZhY2U7Ci0gICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFD
RTsKLSAgICB9Ci0KLSAgICBtU3VyZmFjZVNldC5pbnNlcnQoc3VyZmFjZSk7Ci0KLSAgICByZXR1
cm4gc3VjY2VzcyhzdXJmYWNlKTsKLX0KLQotRUdMU3VyZmFjZSBEaXNwbGF5OjpjcmVhdGVPZmZz
Y3JlZW5TdXJmYWNlKEVHTENvbmZpZyBjb25maWcsIEhBTkRMRSBzaGFyZUhhbmRsZSwgY29uc3Qg
RUdMaW50ICphdHRyaWJMaXN0KQotewotICAgIEVHTGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7
Ci0gICAgRUdMZW51bSB0ZXh0dXJlRm9ybWF0ID0gRUdMX05PX1RFWFRVUkU7Ci0gICAgRUdMZW51
bSB0ZXh0dXJlVGFyZ2V0ID0gRUdMX05PX1RFWFRVUkU7Ci0gICAgY29uc3QgQ29uZmlnICpjb25m
aWd1cmF0aW9uID0gbUNvbmZpZ1NldC5nZXQoY29uZmlnKTsKLQotICAgIGlmIChhdHRyaWJMaXN0
KQotICAgIHsKLSAgICAgICAgd2hpbGUgKCphdHRyaWJMaXN0ICE9IEVHTF9OT05FKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGF0dHJpYkxpc3RbMF0pCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgIGNhc2UgRUdMX1dJRFRIOgotICAgICAgICAgICAgICAgIHdpZHRoID0gYXR0
cmliTGlzdFsxXTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBF
R0xfSEVJR0hUOgotICAgICAgICAgICAgICAgIGhlaWdodCA9IGF0dHJpYkxpc3RbMV07Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX0xBUkdFU1RfUEJVRkZF
UjoKLSAgICAgICAgICAgICAgICBpZiAoYXR0cmliTGlzdFsxXSAhPSBFR0xfRkFMU0UpCi0gICAg
ICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7IC8vIEZJWE1FCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRUdMX1RFWFRVUkVfRk9STUFUOgotICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYXR0cmliTGlzdFsxXSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIEVHTF9OT19URVhUVVJFOgotICAgICAgICAgICAgICAgICAgY2FzZSBF
R0xfVEVYVFVSRV9SR0I6Ci0gICAgICAgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFX1JHQkE6
Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGb3JtYXQgPSBhdHRyaWJMaXN0WzFdOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NV
UkZBQ0UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9UQVJHRVQ6Ci0gICAgICAgICAgICAgICAgc3dpdGNo
IChhdHRyaWJMaXN0WzFdKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNh
c2UgRUdMX05PX1RFWFRVUkU6Ci0gICAgICAgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFXzJE
OgotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlVGFyZ2V0ID0gYXR0cmliTGlzdFsxXTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19T
VVJGQUNFKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgRUdMX01JUE1BUF9URVhUVVJFOgotICAgICAgICAgICAgICAgIGlmIChh
dHRyaWJMaXN0WzFdICE9IEVHTF9GQUxTRSkKLSAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9WR19DT0xPUlNQQUNFOgotICAgICAgICAgICAg
ICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7Ci0gICAgICAg
ICAgICAgIGNhc2UgRUdMX1ZHX0FMUEhBX0ZPUk1BVDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOwotICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdM
X05PX1NVUkZBQ0UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdHRyaWJMaXN0ICs9
IDI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9OT19T
VVJGQUNFKTsKLSAgICB9Ci0KLSAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZB
Q0UpOwotICAgIH0KLQotICAgIGlmICh0ZXh0dXJlRm9ybWF0ICE9IEVHTF9OT19URVhUVVJFICYm
ICFnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpICYmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwg
IWdsOjppc1BvdzIoaGVpZ2h0KSkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JB
RF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOwotICAgIH0KLQotICAgIGlmICgodGV4dHVyZUZvcm1h
dCAhPSBFR0xfTk9fVEVYVFVSRSAmJiB0ZXh0dXJlVGFyZ2V0ID09IEVHTF9OT19URVhUVVJFKSB8
fAotICAgICAgICAodGV4dHVyZUZvcm1hdCA9PSBFR0xfTk9fVEVYVFVSRSAmJiB0ZXh0dXJlVGFy
Z2V0ICE9IEVHTF9OT19URVhUVVJFKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xf
QkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7Ci0gICAgfQotCi0gICAgaWYgKCEoY29uZmlndXJh
dGlvbi0+bVN1cmZhY2VUeXBlICYgRUdMX1BCVUZGRVJfQklUKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7Ci0gICAgfQotCi0gICAg
aWYgKCh0ZXh0dXJlRm9ybWF0ID09IEVHTF9URVhUVVJFX1JHQiAmJiBjb25maWd1cmF0aW9uLT5t
QmluZFRvVGV4dHVyZVJHQiAhPSBFR0xfVFJVRSkgfHwKLSAgICAgICAgKHRleHR1cmVGb3JtYXQg
PT0gRUdMX1RFWFRVUkVfUkdCQSAmJiBjb25maWd1cmF0aW9uLT5tQmluZFRvVGV4dHVyZVJHQkEg
IT0gRUdMX1RSVUUpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQVRUUklC
VVRFLCBFR0xfTk9fU1VSRkFDRSk7Ci0gICAgfQotCi0gICAgaWYgKHRlc3REZXZpY2VMb3N0KCkp
IAotICAgIHsKLSAgICAgICAgaWYgKCFyZXN0b3JlTG9zdERldmljZSgpKQotICAgICAgICAgICAg
cmV0dXJuIEVHTF9OT19TVVJGQUNFOwotICAgIH0KLQotICAgIFN1cmZhY2UgKnN1cmZhY2UgPSBu
ZXcgU3VyZmFjZSh0aGlzLCBjb25maWd1cmF0aW9uLCBzaGFyZUhhbmRsZSwgd2lkdGgsIGhlaWdo
dCwgdGV4dHVyZUZvcm1hdCwgdGV4dHVyZVRhcmdldCk7Ci0KLSAgICBpZiAoIXN1cmZhY2UtPmlu
aXRpYWxpemUoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSBzdXJmYWNlOwotICAgICAgICByZXR1
cm4gRUdMX05PX1NVUkZBQ0U7Ci0gICAgfQotCi0gICAgbVN1cmZhY2VTZXQuaW5zZXJ0KHN1cmZh
Y2UpOwotCi0gICAgcmV0dXJuIHN1Y2Nlc3Moc3VyZmFjZSk7Ci19Ci0KLUVHTENvbnRleHQgRGlz
cGxheTo6Y3JlYXRlQ29udGV4dChFR0xDb25maWcgY29uZmlnSGFuZGxlLCBjb25zdCBnbDo6Q29u
dGV4dCAqc2hhcmVDb250ZXh0LCBib29sIG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3Mp
Ci17Ci0gICAgaWYgKCFtRGV2aWNlKQotICAgIHsKLSAgICAgICAgaWYgKCFjcmVhdGVEZXZpY2Uo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgZWxzZSBpZiAodGVzdERldmljZUxvc3QoKSkgICAvLyBMb3N0IGRldmljZQotICAgIHsK
LSAgICAgICAgaWYgKCFyZXN0b3JlTG9zdERldmljZSgpKQotICAgICAgICAgICAgcmV0dXJuIE5V
TEw7Ci0gICAgfQotCi0gICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZyA9IG1Db25maWdTZXQu
Z2V0KGNvbmZpZ0hhbmRsZSk7Ci0KLSAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsQ3JlYXRl
Q29udGV4dChjb25maWcsIHNoYXJlQ29udGV4dCwgbm90aWZ5UmVzZXRzLCByb2J1c3RBY2Nlc3Mp
OwotICAgIG1Db250ZXh0U2V0Lmluc2VydChjb250ZXh0KTsKLSAgICBtRGV2aWNlTG9zdCA9IGZh
bHNlOwotCi0gICAgcmV0dXJuIGNvbnRleHQ7Ci19Ci0KLWJvb2wgRGlzcGxheTo6cmVzdG9yZUxv
c3REZXZpY2UoKQotewotICAgIGZvciAoQ29udGV4dFNldDo6aXRlcmF0b3IgY3R4ID0gbUNvbnRl
eHRTZXQuYmVnaW4oKTsgY3R4ICE9IG1Db250ZXh0U2V0LmVuZCgpOyBjdHgrKykKLSAgICB7Ci0g
ICAgICAgIGlmICgoKmN0eCktPmlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7ICAgLy8gSWYgcmVzZXQgbm90aWZpY2F0aW9ucyBoYXZlIGJlZW4g
cmVxdWVzdGVkLCBhcHBsaWNhdGlvbiBtdXN0IGRlbGV0ZSBhbGwgY29udGV4dHMgZmlyc3QKLSAg
ICB9Ci0gCi0gICAgLy8gUmVsZWFzZSBzdXJmYWNlIHJlc291cmNlcyB0byBtYWtlIHRoZSBSZXNl
dCgpIHN1Y2NlZWQKLSAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9yIHN1cmZhY2UgPSBtU3Vy
ZmFjZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVuZCgpOyBzdXJmYWNlKysp
Ci0gICAgewotICAgICAgICAoKnN1cmZhY2UpLT5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgd2hp
bGUgKCFtRXZlbnRRdWVyeVBvb2wuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIG1FdmVudFF1ZXJ5
UG9vbC5iYWNrKCktPlJlbGVhc2UoKTsKLSAgICAgICAgbUV2ZW50UXVlcnlQb29sLnBvcF9iYWNr
KCk7Ci0gICAgfQotCi0gICAgbVZlcnRleFNoYWRlckNhY2hlLmNsZWFyKCk7Ci0gICAgbVBpeGVs
U2hhZGVyQ2FjaGUuY2xlYXIoKTsKLQotICAgIGlmICghcmVzZXREZXZpY2UoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBSZXN0b3JlIGFueSBzdXJmYWNl
cyB0aGF0IG1heSBoYXZlIGJlZW4gbG9zdAotICAgIGZvciAoU3VyZmFjZVNldDo6aXRlcmF0b3Ig
c3VyZmFjZSA9IG1TdXJmYWNlU2V0LmJlZ2luKCk7IHN1cmZhY2UgIT0gbVN1cmZhY2VTZXQuZW5k
KCk7IHN1cmZhY2UrKykKLSAgICB7Ci0gICAgICAgICgqc3VyZmFjZSktPnJlc2V0U3dhcENoYWlu
KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQotdm9pZCBEaXNwbGF5OjpkZXN0
cm95U3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCi17Ci0gICAgZGVsZXRlIHN1cmZhY2U7
Ci0gICAgbVN1cmZhY2VTZXQuZXJhc2Uoc3VyZmFjZSk7Ci19Ci0KLXZvaWQgRGlzcGxheTo6ZGVz
dHJveUNvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgZ2xEZXN0cm95Q29udGV4
dChjb250ZXh0KTsKLSAgICBtQ29udGV4dFNldC5lcmFzZShjb250ZXh0KTsKLX0KLQotdm9pZCBE
aXNwbGF5Ojpub3RpZnlEZXZpY2VMb3N0KCkKLXsKLSAgICBmb3IgKENvbnRleHRTZXQ6Oml0ZXJh
dG9yIGNvbnRleHQgPSBtQ29udGV4dFNldC5iZWdpbigpOyBjb250ZXh0ICE9IG1Db250ZXh0U2V0
LmVuZCgpOyBjb250ZXh0KyspCi0gICAgewotICAgICAgICAoKmNvbnRleHQpLT5tYXJrQ29udGV4
dExvc3QoKTsKLSAgICB9Ci0gICAgbURldmljZUxvc3QgPSB0cnVlOwotICAgIGVycm9yKEVHTF9D
T05URVhUX0xPU1QpOwotfQotCi1ib29sIERpc3BsYXk6OmlzRGV2aWNlTG9zdCgpCi17Ci0gICAg
cmV0dXJuIG1EZXZpY2VMb3N0OwotfQotCi1ib29sIERpc3BsYXk6OmlzSW5pdGlhbGl6ZWQoKSBj
b25zdAotewotICAgIHJldHVybiBtRDNkOSAhPSBOVUxMICYmIG1Db25maWdTZXQuc2l6ZSgpID4g
MDsKLX0KLQotYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29uZmlnKEVHTENvbmZpZyBjb25maWcpCi17
Ci0gICAgcmV0dXJuIG1Db25maWdTZXQuZ2V0KGNvbmZpZykgIT0gTlVMTDsKLX0KLQotYm9vbCBE
aXNwbGF5Ojppc1ZhbGlkQ29udGV4dChnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICByZXR1
cm4gbUNvbnRleHRTZXQuZmluZChjb250ZXh0KSAhPSBtQ29udGV4dFNldC5lbmQoKTsKLX0KLQot
Ym9vbCBEaXNwbGF5Ojppc1ZhbGlkU3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCi17Ci0g
ICAgcmV0dXJuIG1TdXJmYWNlU2V0LmZpbmQoc3VyZmFjZSkgIT0gbVN1cmZhY2VTZXQuZW5kKCk7
Ci19Ci0KLWJvb2wgRGlzcGxheTo6aGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKEhXTkQgd2luZG93
KQotewotICAgIGZvciAoU3VyZmFjZVNldDo6aXRlcmF0b3Igc3VyZmFjZSA9IG1TdXJmYWNlU2V0
LmJlZ2luKCk7IHN1cmZhY2UgIT0gbVN1cmZhY2VTZXQuZW5kKCk7IHN1cmZhY2UrKykKLSAgICB7
Ci0gICAgICAgIGlmICgoKnN1cmZhY2UpLT5nZXRXaW5kb3dIYW5kbGUoKSA9PSB3aW5kb3cpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1FR0xpbnQgRGlzcGxheTo6Z2V0TWluU3dhcEludGVydmFs
KCkKLXsKLSAgICByZXR1cm4gbU1pblN3YXBJbnRlcnZhbDsKLX0KLQotRUdMaW50IERpc3BsYXk6
OmdldE1heFN3YXBJbnRlcnZhbCgpCi17Ci0gICAgcmV0dXJuIG1NYXhTd2FwSW50ZXJ2YWw7Ci19
Ci0KLUlEaXJlY3QzRERldmljZTkgKkRpc3BsYXk6OmdldERldmljZSgpCi17Ci0gICAgaWYgKCFt
RGV2aWNlKQotICAgIHsKLSAgICAgICAgaWYgKCFjcmVhdGVEZXZpY2UoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
bURldmljZTsKLX0KLQotRDNEQ0FQUzkgRGlzcGxheTo6Z2V0RGV2aWNlQ2FwcygpCi17Ci0gICAg
cmV0dXJuIG1EZXZpY2VDYXBzOwotfQotCi1EM0RBREFQVEVSX0lERU5USUZJRVI5ICpEaXNwbGF5
OjpnZXRBZGFwdGVySWRlbnRpZmllcigpCi17Ci0gICAgcmV0dXJuICZtQWRhcHRlcklkZW50aWZp
ZXI7Ci19Ci0KLWJvb2wgRGlzcGxheTo6dGVzdERldmljZUxvc3QoKQotewotICAgIGJvb2wgaXNM
b3N0ID0gZmFsc2U7Ci0KLSAgICBpZiAobURldmljZUV4KQotICAgIHsKLSAgICAgICAgaXNMb3N0
ID0gRkFJTEVEKG1EZXZpY2VFeC0+Q2hlY2tEZXZpY2VTdGF0ZShOVUxMKSk7Ci0gICAgfQotICAg
IGVsc2UgaWYgKG1EZXZpY2UpCi0gICAgewotICAgICAgICBpc0xvc3QgPSBGQUlMRUQobURldmlj
ZS0+VGVzdENvb3BlcmF0aXZlTGV2ZWwoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlzTG9zdDsK
LX0KLQotYm9vbCBEaXNwbGF5Ojp0ZXN0RGV2aWNlUmVzZXR0YWJsZSgpCi17Ci0gICAgSFJFU1VM
VCBzdGF0dXMgPSBEM0RfT0s7Ci0KLSAgICBpZiAobURldmljZUV4KQotICAgIHsKLSAgICAgICAg
c3RhdHVzID0gbURldmljZUV4LT5DaGVja0RldmljZVN0YXRlKE5VTEwpOwotICAgIH0KLSAgICBl
bHNlIGlmIChtRGV2aWNlKQotICAgIHsKLSAgICAgICAgc3RhdHVzID0gbURldmljZS0+VGVzdENv
b3BlcmF0aXZlTGV2ZWwoKTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXR1cykKLSAgICB7Ci0g
ICAgICBjYXNlIEQzREVSUl9ERVZJQ0VOT1RSRVNFVDoKLSAgICAgIGNhc2UgRDNERVJSX0RFVklD
RUhVTkc6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBEaXNwbGF5OjpzeW5jKGJvb2wgYmxvY2spCi17
Ci0gICAgSFJFU1VMVCByZXN1bHQ7Ci0KLSAgICBJRGlyZWN0M0RRdWVyeTkqIHF1ZXJ5ID0gYWxs
b2NhdGVFdmVudFF1ZXJ5KCk7Ci0gICAgaWYgKCFxdWVyeSkKLSAgICB7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICByZXN1bHQgPSBxdWVyeS0+SXNzdWUoRDNESVNTVUVfRU5EKTsKLSAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotCi0gICAgZG8KLSAgICB7Ci0gICAgICAgIHJl
c3VsdCA9IHF1ZXJ5LT5HZXREYXRhKE5VTEwsIDAsIEQzREdFVERBVEFfRkxVU0gpOwotCi0gICAg
ICAgIGlmKGJsb2NrICYmIHJlc3VsdCA9PSBTX0ZBTFNFKQotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBLZWVwIHBvbGxpbmcsIGJ1dCBhbGxvdyBvdGhlciB0aHJlYWRzIHRvIGRvIHNvbWV0aGlu
ZyB1c2VmdWwgZmlyc3QKLSAgICAgICAgICAgIFNsZWVwKDApOwotICAgICAgICAgICAgLy8gZXhw
bGljaXRseSBjaGVjayBmb3IgZGV2aWNlIGxvc3MKLSAgICAgICAgICAgIC8vIHNvbWUgZHJpdmVy
cyBzZWVtIHRvIHJldHVybiBTX0ZBTFNFIGV2ZW4gaWYgdGhlIGRldmljZSBpcyBsb3N0Ci0gICAg
ICAgICAgICAvLyBpbnN0ZWFkIG9mIEQzREVSUl9ERVZJQ0VMT1NUIGxpa2UgdGhleSBzaG91bGQK
LSAgICAgICAgICAgIGlmICh0ZXN0RGV2aWNlTG9zdCgpKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IEQzREVSUl9ERVZJQ0VMT1NUOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotICAgIHdoaWxlKGJsb2NrICYmIHJlc3VsdCA9PSBTX0ZBTFNFKTsKLQot
ICAgIGZyZWVFdmVudFF1ZXJ5KHF1ZXJ5KTsKLQotICAgIGlmIChpc0RldmljZUxvc3RFcnJvcihy
ZXN1bHQpKQotICAgIHsKLSAgICAgICAgbm90aWZ5RGV2aWNlTG9zdCgpOwotICAgIH0KLX0KLQot
SURpcmVjdDNEUXVlcnk5KiBEaXNwbGF5OjphbGxvY2F0ZUV2ZW50UXVlcnkoKQotewotICAgIElE
aXJlY3QzRFF1ZXJ5OSAqcXVlcnkgPSBOVUxMOwotCi0gICAgaWYgKG1FdmVudFF1ZXJ5UG9vbC5l
bXB0eSgpKQotICAgIHsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVR
dWVyeShEM0RRVUVSWVRZUEVfRVZFTlQsICZxdWVyeSk7Ci0gICAgICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHF1ZXJ5ID0gbUV2
ZW50UXVlcnlQb29sLmJhY2soKTsKLSAgICAgICAgbUV2ZW50UXVlcnlQb29sLnBvcF9iYWNrKCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHF1ZXJ5OwotfQotCi12b2lkIERpc3BsYXk6OmZyZWVFdmVu
dFF1ZXJ5KElEaXJlY3QzRFF1ZXJ5OSogcXVlcnkpCi17Ci0gICAgaWYgKG1FdmVudFF1ZXJ5UG9v
bC5zaXplKCkgPiAxMDAwKQotICAgIHsKLSAgICAgICAgcXVlcnktPlJlbGVhc2UoKTsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgbUV2ZW50UXVlcnlQb29sLnB1c2hfYmFjayhxdWVy
eSk7Ci0gICAgfQotfQotCi12b2lkIERpc3BsYXk6OmdldE11bHRpU2FtcGxlU3VwcG9ydChEM0RG
T1JNQVQgZm9ybWF0LCBib29sICptdWx0aVNhbXBsZUFycmF5KQotewotICAgIGZvciAoaW50IG11
bHRpU2FtcGxlSW5kZXggPSAwOyBtdWx0aVNhbXBsZUluZGV4IDw9IEQzRE1VTFRJU0FNUExFXzE2
X1NBTVBMRVM7IG11bHRpU2FtcGxlSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gbUQzZDktPkNoZWNrRGV2aWNlTXVsdGlTYW1wbGVUeXBlKG1BZGFwdGVyLCBtRGV2aWNl
VHlwZSwgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFLCAoRDNETVVMVElTQU1QTEVfVFlQRSltdWx0aVNhbXBsZUlu
ZGV4LCBOVUxMKTsKLQotICAgICAgICBtdWx0aVNhbXBsZUFycmF5W211bHRpU2FtcGxlSW5kZXhd
ID0gU1VDQ0VFREVEKHJlc3VsdCk7Ci0gICAgfQotfQotCi1ib29sIERpc3BsYXk6OmdldERYVDFU
ZXh0dXJlU3VwcG9ydCgpCi17Ci0gICAgcmV0dXJuIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZp
Y2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGlzcGxheU1vZGUuRm9ybWF0LCAwLCBE
M0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfRFhUMSkpOwotfQotCi1ib29sIERpc3BsYXk6OmdldERY
VDNUZXh0dXJlU3VwcG9ydCgpCi17Ci0gICAgcmV0dXJuIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tE
ZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGlzcGxheU1vZGUuRm9ybWF0LCAw
LCBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfRFhUMykpOwotfQotCi1ib29sIERpc3BsYXk6Omdl
dERYVDVUZXh0dXJlU3VwcG9ydCgpCi17Ci0gICAgcmV0dXJuIFNVQ0NFRURFRChtRDNkOS0+Q2hl
Y2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGlzcGxheU1vZGUuRm9ybWF0
LCAwLCBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfRFhUNSkpOwotfQotCi0vLyB3ZSB1c2UgSU5U
WiBmb3IgZGVwdGggdGV4dHVyZXMgaW4gRGlyZWN0M0Q5Ci0vLyB3ZSBhbHNvIHdhbnQgTlVMTCB0
ZXh0dXJlIHN1cHBvcnQgdG8gZW5zdXJlIHRoZSB3ZSBjYW4gbWFrZSBkZXB0aC1vbmx5IEZCT3MK
LS8vIHNlZSBodHRwOi8vYXJhcy1wLmluZm8vdGV4dHMvRDNEOUdQVUhhY2tzLmh0bWwKLWJvb2wg
RGlzcGxheTo6Z2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0Ci17Ci0gICAgYm9vbCBpbnR6
ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5
cGUsIG1EaXNwbGF5TW9kZS5Gb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEM0RVU0FHRV9ERVBUSFNURU5DSUwsIEQzRFJUWVBFX1RFWFRV
UkUsIEQzREZNVF9JTlRaKSk7Ci0gICAgYm9vbCBudWxsID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVj
a0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIG1EaXNwbGF5TW9kZS5Gb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RV
U0FHRV9SRU5ERVJUQVJHRVQsIEQzRFJUWVBFX1NVUkZBQ0UsIEQzREZNVF9OVUxMKSk7Ci0KLSAg
ICByZXR1cm4gaW50eiAmJiBudWxsOwotfQotCi1ib29sIERpc3BsYXk6OmdldEZsb2F0MzJUZXh0
dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpCi17Ci0gICAgKmZp
bHRlcmluZyA9IFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1E
ZXZpY2VUeXBlLCBtRGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9RVUVSWV9GSUxURVIsIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJU
WVBFX1RFWFRVUkUsIEQzREZNVF9BMzJCMzJHMzJSMzJGKSkgJiYKLSAgICAgICAgICAgICAgICAg
U1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUs
IG1EaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1FVRVJZX0ZJTFRFUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVY
VFVSRSwgRDNERk1UX0EzMkIzMkczMlIzMkYpKTsKLSAgICAKLSAgICAqcmVuZGVyYWJsZSA9IFNV
Q0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBt
RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUs
IEQzREZNVF9BMzJCMzJHMzJSMzJGKSkmJgotICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKG1E
M2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIG1EaXNwbGF5TW9k
ZS5Gb3JtYXQsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfQ1VCRVRFWFRVUkUsIEQzREZN
VF9BMzJCMzJHMzJSMzJGKSk7Ci0KLSAgICBpZiAoISpmaWx0ZXJpbmcgJiYgISpyZW5kZXJhYmxl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3Jt
YXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGlzcGxheU1vZGUuRm9ybWF0LCAwLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfVEVY
VFVSRSwgRDNERk1UX0EzMkIzMkczMlIzMkYpKSAmJgotICAgICAgICAgICAgICAgU1VDQ0VFREVE
KG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIG1EaXNwbGF5
TW9kZS5Gb3JtYXQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEQzRFJUWVBFX0NVQkVURVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpOwot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19Ci0K
LWJvb2wgRGlzcGxheTo6Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KGJvb2wgKmZpbHRlcmluZywg
Ym9vbCAqcmVuZGVyYWJsZSkKLXsKLSAgICAqZmlsdGVyaW5nID0gU1VDQ0VFREVEKG1EM2Q5LT5D
aGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIG1EaXNwbGF5TW9kZS5Gb3Jt
YXQsIEQzRFVTQUdFX1FVRVJZX0ZJTFRFUiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0ExNkIxNkcx
NlIxNkYpKSAmJgotICAgICAgICAgICAgICAgICBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNl
Rm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNB
R0VfUVVFUllfRklMVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEQzRFJUWVBFX0NVQkVURVhUVVJFLCBEM0RGTVRfQTE2QjE2RzE2UjE2Rikp
OwotICAgIAotICAgICpyZW5kZXJhYmxlID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZv
cm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIG1EaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdF
X1JFTkRFUlRBUkdFVCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKSAmJgot
ICAgICAgICAgICAgICAgICBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFw
dGVyLCBtRGV2aWNlVHlwZSwgbURpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0VfUkVOREVSVEFS
R0VULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEQzRFJUWVBFX0NVQkVURVhUVVJFLCBEM0RGTVRfQTE2QjE2RzE2UjE2RikpOwotCi0gICAgaWYg
KCEqZmlsdGVyaW5nICYmICEqcmVuZGVyYWJsZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTVUND
RUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURp
c3BsYXlNb2RlLkZvcm1hdCwgMCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9BMTZCMTZHMTZSMTZGKSkg
JiYKLSAgICAgICAgICAgICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFk
YXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGlzcGxheU1vZGUuRm9ybWF0LCAwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVS
RSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfQotCi1ib29sIERpc3BsYXk6OmdldEx1bWluYW5jZVRl
eHR1cmVTdXBwb3J0KCkKLXsKLSAgICByZXR1cm4gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0Rldmlj
ZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIG1EaXNwbGF5TW9kZS5Gb3JtYXQsIDAsIEQz
RFJUWVBFX1RFWFRVUkUsIEQzREZNVF9MOCkpOwotfQotCi1ib29sIERpc3BsYXk6OmdldEx1bWlu
YW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKQotewotICAgIHJldHVybiBTVUNDRUVERUQobUQzZDkt
PkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURpc3BsYXlNb2RlLkZv
cm1hdCwgMCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0E4TDgpKTsKLX0KLQotZmxvYXQgRGlz
cGxheTo6Z2V0VGV4dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3QKLXsKLSAgICAv
LyBNdXN0IHN1cHBvcnQgYSBtaW5pbXVtIG9mIDI6MSBhbmlzb3Ryb3B5IGZvciBtYXggYW5pc290
cm9weSB0byBiZSBjb25zaWRlcmVkIHN1cHBvcnRlZCwgcGVyIHRoZSBzcGVjCi0gICAgaWYgKCht
RGV2aWNlQ2Fwcy5SYXN0ZXJDYXBzICYgRDNEUFJBU1RFUkNBUFNfQU5JU09UUk9QWSkgJiYgKG1E
ZXZpY2VDYXBzLk1heEFuaXNvdHJvcHkgPj0gMikpCi0gICAgewotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1EZXZpY2VDYXBzLk1heEFuaXNvdHJvcHkpOwotICAgIH0KLSAgICBy
ZXR1cm4gMS4wZjsKLX0KLQotRDNEUE9PTCBEaXNwbGF5OjpnZXRCdWZmZXJQb29sKERXT1JEIHVz
YWdlKSBjb25zdAotewotICAgIGlmIChtRDNkOUV4ICE9IE5VTEwpCi0gICAgewotICAgICAgICBy
ZXR1cm4gRDNEUE9PTF9ERUZBVUxUOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBp
ZiAoISh1c2FnZSAmIEQzRFVTQUdFX0RZTkFNSUMpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gRDNEUE9PTF9NQU5BR0VEOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEQz
RFBPT0xfREVGQVVMVDsKLX0KLQotRDNEUE9PTCBEaXNwbGF5OjpnZXRUZXh0dXJlUG9vbChEV09S
RCB1c2FnZSkgY29uc3QKLXsKLSAgICBpZiAobUQzZDlFeCAhPSBOVUxMKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIEQzRFBPT0xfREVGQVVMVDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgaWYgKCEodXNhZ2UgJiAoRDNEVVNBR0VfREVQVEhTVEVOQ0lMIHwgRDNEVVNBR0VfUkVOREVS
VEFSR0VUKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBEM0RQT09MX01BTkFHRUQ7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gRDNEUE9PTF9ERUZBVUxUOwotfQotCi1i
b29sIERpc3BsYXk6OmdldEV2ZW50UXVlcnlTdXBwb3J0KCkKLXsKLSAgICBJRGlyZWN0M0RRdWVy
eTkgKnF1ZXJ5ID0gYWxsb2NhdGVFdmVudFF1ZXJ5KCk7Ci0gICAgaWYgKHF1ZXJ5KQotICAgIHsK
LSAgICAgICAgZnJlZUV2ZW50UXVlcnkocXVlcnkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQot
RDNEUFJFU0VOVF9QQVJBTUVURVJTIERpc3BsYXk6OmdldERlZmF1bHRQcmVzZW50UGFyYW1ldGVy
cygpCi17Ci0gICAgRDNEUFJFU0VOVF9QQVJBTUVURVJTIHByZXNlbnRQYXJhbWV0ZXJzID0gezB9
OwotCi0gICAgLy8gVGhlIGRlZmF1bHQgc3dhcCBjaGFpbiBpcyBuZXZlciBhY3R1YWxseSB1c2Vk
LiBTdXJmYWNlIHdpbGwgY3JlYXRlIGEgbmV3IHN3YXAgY2hhaW4gd2l0aCB0aGUgcHJvcGVyIHBh
cmFtZXRlcnMuCi0gICAgcHJlc2VudFBhcmFtZXRlcnMuQXV0b0RlcHRoU3RlbmNpbEZvcm1hdCA9
IEQzREZNVF9VTktOT1dOOwotICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJDb3VudCA9
IDE7Ci0gICAgcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckZvcm1hdCA9IEQzREZNVF9VTktO
T1dOOwotICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCA9IDE7Ci0gICAgcHJl
c2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckhlaWdodCA9IDE7Ci0gICAgcHJlc2VudFBhcmFtZXRl
cnMuRW5hYmxlQXV0b0RlcHRoU3RlbmNpbCA9IEZBTFNFOwotICAgIHByZXNlbnRQYXJhbWV0ZXJz
LkZsYWdzID0gMDsKLSAgICBwcmVzZW50UGFyYW1ldGVycy5oRGV2aWNlV2luZG93ID0gbURldmlj
ZVdpbmRvdzsKLSAgICBwcmVzZW50UGFyYW1ldGVycy5NdWx0aVNhbXBsZVF1YWxpdHkgPSAwOwot
ICAgIHByZXNlbnRQYXJhbWV0ZXJzLk11bHRpU2FtcGxlVHlwZSA9IEQzRE1VTFRJU0FNUExFX05P
TkU7Ci0gICAgcHJlc2VudFBhcmFtZXRlcnMuUHJlc2VudGF0aW9uSW50ZXJ2YWwgPSBEM0RQUkVT
RU5UX0lOVEVSVkFMX0RFRkFVTFQ7Ci0gICAgcHJlc2VudFBhcmFtZXRlcnMuU3dhcEVmZmVjdCA9
IEQzRFNXQVBFRkZFQ1RfRElTQ0FSRDsKLSAgICBwcmVzZW50UGFyYW1ldGVycy5XaW5kb3dlZCA9
IFRSVUU7Ci0KLSAgICByZXR1cm4gcHJlc2VudFBhcmFtZXRlcnM7Ci19Ci0KLXZvaWQgRGlzcGxh
eTo6aW5pdEV4dGVuc2lvblN0cmluZygpCi17Ci0gICAgSE1PRFVMRSBzd2lmdFNoYWRlciA9IEdl
dE1vZHVsZUhhbmRsZShURVhUKCJzd2lmdHNoYWRlcl9kM2Q5LmRsbCIpKTsKLQotICAgIG1FeHRl
bnNpb25TdHJpbmcgPSAiIjsKLQotICAgIC8vIE11bHRpLXZlbmRvciAoRVhUKSBleHRlbnNpb25z
Ci0gICAgbUV4dGVuc2lvblN0cmluZyArPSAiRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3Ru
ZXNzICI7Ci0KLSAgICAvLyBBTkdMRS1zcGVjaWZpYyBleHRlbnNpb25zCi0gICAgaWYgKHNoYXJl
SGFuZGxlU3VwcG9ydGVkKCkpCi0gICAgewotICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJF
R0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyICI7Ci0gICAgfQotCi0gICAg
bUV4dGVuc2lvblN0cmluZyArPSAiRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlciAiOwot
Ci0gICAgaWYgKHN3aWZ0U2hhZGVyKQotICAgIHsKLSAgICAgICAgbUV4dGVuc2lvblN0cmluZyAr
PSAiRUdMX0FOR0xFX3NvZnR3YXJlX2Rpc3BsYXkgIjsKLSAgICB9Ci0KLSAgICBpZiAoc2hhcmVI
YW5kbGVTdXBwb3J0ZWQoKSkKLSAgICB7Ci0gICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVH
TF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZSAiOwotICAgIH0KLQot
ICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVHTF9OVl9wb3N0X3N1Yl9idWZmZXIiOwotCi0gICAg
c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQgPSBtRXh0ZW5zaW9uU3RyaW5nLmZpbmRfbGFzdF9u
b3Rfb2YoJyAnKTsKLSAgICBpZiAoZW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgIHsKLSAg
ICAgICAgbUV4dGVuc2lvblN0cmluZy5yZXNpemUoZW5kKzEpOwotICAgIH0KLX0KLQotY29uc3Qg
Y2hhciAqRGlzcGxheTo6Z2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bUV4dGVuc2lvblN0cmluZy5jX3N0cigpOwotfQotCi12b2lkIERpc3BsYXk6OmluaXRWZW5kb3JT
dHJpbmcoKQotewotICAgIG1WZW5kb3JTdHJpbmcgPSAiR29vZ2xlIEluYy4iOwotCi0gICAgaWYg
KG1EM2Q5RXgpCi0gICAgewotICAgICAgICBMVUlEIGFkYXB0ZXJMdWlkID0gezB9OwotICAgICAg
ICBtRDNkOUV4LT5HZXRBZGFwdGVyTFVJRChtQWRhcHRlciwgJmFkYXB0ZXJMdWlkKTsKLQotICAg
ICAgICBjaGFyIGFkYXB0ZXJMdWlkU3RyaW5nWzY0XTsKLSAgICAgICAgc3ByaW50Zl9zKGFkYXB0
ZXJMdWlkU3RyaW5nLCBzaXplb2YoYWRhcHRlckx1aWRTdHJpbmcpLCAiIChhZGFwdGVyIExVSUQ6
ICUwOHglMDh4KSIsIGFkYXB0ZXJMdWlkLkhpZ2hQYXJ0LCBhZGFwdGVyTHVpZC5Mb3dQYXJ0KTsK
LQotICAgICAgICBtVmVuZG9yU3RyaW5nICs9IGFkYXB0ZXJMdWlkU3RyaW5nOwotICAgIH0KLX0K
LQotY29uc3QgY2hhciAqRGlzcGxheTo6Z2V0VmVuZG9yU3RyaW5nKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbVZlbmRvclN0cmluZy5jX3N0cigpOwotfQotCi1ib29sIERpc3BsYXk6OnNoYXJlSGFu
ZGxlU3VwcG9ydGVkKCkgY29uc3QgCi17Ci0gICAgLy8gUElYIGRvZXNuJ3Qgc2VlbSB0byBzdXBw
b3J0IHVzaW5nIHNoYXJlIGhhbmRsZXMsIHNvIGRpc2FibGUgdGhlbS4KLSAgICByZXR1cm4gaXNE
M2Q5RXhEZXZpY2UoKSAmJiAhZ2w6OnBlcmZBY3RpdmUoKTsKLX0KLQotSURpcmVjdDNEVmVydGV4
U2hhZGVyOSAqRGlzcGxheTo6Y3JlYXRlVmVydGV4U2hhZGVyKGNvbnN0IERXT1JEICpmdW5jdGlv
biwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICByZXR1cm4gbVZlcnRleFNoYWRlckNhY2hlLmNyZWF0
ZShmdW5jdGlvbiwgbGVuZ3RoKTsKLX0KLQotSFJFU1VMVCBEaXNwbGF5Ojpjb21waWxlU2hhZGVy
U291cmNlKGNvbnN0IGNoYXIqIGhsc2wsIGNvbnN0IGNoYXIqIHNvdXJjZU5hbWUsIGNvbnN0IGNo
YXIqIHByb2ZpbGUsIERXT1JEIGZsYWdzLCBJRDNEQmxvYioqIGJpbmFyeSwgSUQzREJsb2IqKiBl
cnJvck1lc3NhZ2UpCi17Ci0gICAgcmV0dXJuIG1EM0RDb21waWxlRnVuYyhobHNsLCBzdHJsZW4o
aGxzbCksIHNvdXJjZU5hbWUsIE5VTEwsIE5VTEwsICJtYWluIiwgcHJvZmlsZSwgZmxhZ3MsIDAs
IGJpbmFyeSwgZXJyb3JNZXNzYWdlKTsKLX0KLQotSURpcmVjdDNEUGl4ZWxTaGFkZXI5ICpEaXNw
bGF5OjpjcmVhdGVQaXhlbFNoYWRlcihjb25zdCBEV09SRCAqZnVuY3Rpb24sIHNpemVfdCBsZW5n
dGgpCi17Ci0gICAgcmV0dXJuIG1QaXhlbFNoYWRlckNhY2hlLmNyZWF0ZShmdW5jdGlvbiwgbGVu
Z3RoKTsKLX0KLQotLy8gT25seSBEaXJlY3QzRCAxMCByZWFkeSBkZXZpY2VzIHN1cHBvcnQgYWxs
IHRoZSBuZWNlc3NhcnkgdmVydGV4IHRleHR1cmUgZm9ybWF0cy4KLS8vIFdlIHRlc3QgdGhpcyB1
c2luZyBEM0Q5IGJ5IGNoZWNraW5nIHN1cHBvcnQgZm9yIHRoZSBSMTZGIGZvcm1hdC4KLWJvb2wg
RGlzcGxheTo6Z2V0VmVydGV4VGV4dHVyZVN1cHBvcnQoKSBjb25zdAotewotICAgIGlmICghaXNJ
bml0aWFsaXplZCgpIHx8IG1EZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA8IEQzRFBTX1ZF
UlNJT04oMywgMCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
SFJFU1VMVCByZXN1bHQgPSBtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZp
Y2VUeXBlLCBtRGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9RVUVSWV9WRVJURVhURVhUVVJF
LCBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfUjE2Rik7Ci0KLSAgICByZXR1cm4gU1VDQ0VFREVE
KHJlc3VsdCk7Ci19Ci0KLWJvb2wgRGlzcGxheTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQo
KSBjb25zdAotewotICAgIHJldHVybiBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlczsKLX0KLQot
Ym9vbCBEaXNwbGF5OjpnZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQoKSBjb25zdAotewotICAgIGlm
ICghaXNJbml0aWFsaXplZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIElEaXJlY3QzRFF1ZXJ5OSAqcXVlcnkgPSBOVUxMOwotICAgIEhSRVNVTFQgcmVzdWx0
ID0gbURldmljZS0+Q3JlYXRlUXVlcnkoRDNEUVVFUllUWVBFX09DQ0xVU0lPTiwgJnF1ZXJ5KTsK
LSAgICAKLSAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkgJiYgcXVlcnkpCi0gICAgewotICAgICAg
ICBxdWVyeS0+UmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotYm9vbCBEaXNwbGF5
OjpnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1EZXZpY2VDYXBz
LlBpeGVsU2hhZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDApOyAKLX0KLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggNDJkMGU3My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBEaXNwbGF5Lmg6IERlZmluZXMgdGhlIGVnbDo6
RGlzcGxheSBjbGFzcywgcmVwcmVzZW50aW5nIHRoZSBhYnN0cmFjdAotLy8gZGlzcGxheSBvbiB3
aGljaCBncmFwaGljcyBhcmUgZHJhd24uIEltcGxlbWVudHMgRUdMRGlzcGxheS4KLS8vIFtFR0wg
MS40XSBzZWN0aW9uIDIuMS4yIHBhZ2UgMy4KLQotI2lmbmRlZiBMSUJFR0xfRElTUExBWV9IXwot
I2RlZmluZSBMSUJFR0xfRElTUExBWV9IXwotCi0jaW5jbHVkZSAiY29tbW9uL3N5c3RlbS5oIgot
I2luY2x1ZGUgPGQzZDkuaD4KLSNpbmNsdWRlIDxEM0Rjb21waWxlci5oPgotCi0jaW5jbHVkZSA8
c2V0PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0Lmgi
Ci0KLSNpbmNsdWRlICJsaWJFR0wvQ29uZmlnLmgiCi0jaW5jbHVkZSAibGliRUdML1NoYWRlckNh
Y2hlLmgiCi0jaW5jbHVkZSAibGliRUdML1N1cmZhY2UuaCIKLQotY29uc3QgaW50IHZlcnNpb25X
aW5kb3dzVmlzdGEgPSBNQUtFV09SRCgweDAwLCAweDA2KTsKLWNvbnN0IGludCB2ZXJzaW9uV2lu
ZG93czcgPSBNQUtFV09SRCgweDAxLCAweDA2KTsKLQotLy8gUmV0dXJuIHRoZSB2ZXJzaW9uIG9m
IHRoZSBvcGVyYXRpbmcgc3lzdGVtIGluIGEgZm9ybWF0IHN1aXRhYmxlIGZvciBvcmRlcmluZwot
Ly8gY29tcGFyaXNvbi4KLWlubGluZSBpbnQgZ2V0Q29tcGFyYWJsZU9TVmVyc2lvbigpCi17Ci0g
ICAgRFdPUkQgdmVyc2lvbiA9IEdldFZlcnNpb24oKTsKLSAgICBpbnQgbWFqb3JWZXJzaW9uID0g
TE9CWVRFKExPV09SRCh2ZXJzaW9uKSk7Ci0gICAgaW50IG1pbm9yVmVyc2lvbiA9IEhJQllURShM
T1dPUkQodmVyc2lvbikpOwotICAgIHJldHVybiBNQUtFV09SRChtaW5vclZlcnNpb24sIG1ham9y
VmVyc2lvbik7Ci19Ci0KLW5hbWVzcGFjZSBlZ2wKLXsKLWNsYXNzIERpc3BsYXkKLXsKLSAgcHVi
bGljOgotICAgIH5EaXNwbGF5KCk7Ci0KLSAgICBib29sIGluaXRpYWxpemUoKTsKLSAgICB2b2lk
IHRlcm1pbmF0ZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NlbmUoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZW5kU2NlbmUoKTsKLQotICAgIHN0YXRpYyBlZ2w6OkRpc3BsYXkgKmdldERpc3Bs
YXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkKTsKLQotICAgIGJvb2wgZ2V0Q29uZmln
cyhFR0xDb25maWcgKmNvbmZpZ3MsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCwgRUdMaW50IGNv
bmZpZ1NpemUsIEVHTGludCAqbnVtQ29uZmlnKTsKLSAgICBib29sIGdldENvbmZpZ0F0dHJpYihF
R0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKLQotICAg
IEVHTFN1cmZhY2UgY3JlYXRlV2luZG93U3VyZmFjZShIV05EIHdpbmRvdywgRUdMQ29uZmlnIGNv
bmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KTsKLSAgICBFR0xTdXJmYWNlIGNyZWF0ZU9m
ZnNjcmVlblN1cmZhY2UoRUdMQ29uZmlnIGNvbmZpZywgSEFORExFIHNoYXJlSGFuZGxlLCBjb25z
dCBFR0xpbnQgKmF0dHJpYkxpc3QpOwotICAgIEVHTENvbnRleHQgY3JlYXRlQ29udGV4dChFR0xD
b25maWcgY29uZmlnSGFuZGxlLCBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCBib29s
IG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3MpOwotCi0gICAgdm9pZCBkZXN0cm95U3Vy
ZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwotICAgIHZvaWQgZGVzdHJveUNvbnRleHQoZ2w6
OkNvbnRleHQgKmNvbnRleHQpOwotCi0gICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1ZhbGlkQ29uZmlnKEVHTENvbmZpZyBjb25maWcpOwotICAgIGJvb2wgaXNWYWxp
ZENvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpOwotICAgIGJvb2wgaXNWYWxpZFN1cmZhY2Uo
ZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKLSAgICBib29sIGhhc0V4aXN0aW5nV2luZG93U3VyZmFj
ZShIV05EIHdpbmRvdyk7Ci0KLSAgICBFR0xpbnQgZ2V0TWluU3dhcEludGVydmFsKCk7Ci0gICAg
RUdMaW50IGdldE1heFN3YXBJbnRlcnZhbCgpOwotCi0gICAgdmlydHVhbCBJRGlyZWN0M0REZXZp
Y2U5ICpnZXREZXZpY2UoKTsKLSAgICB2aXJ0dWFsIEQzRENBUFM5IGdldERldmljZUNhcHMoKTsK
LSAgICB2aXJ0dWFsIEQzREFEQVBURVJfSURFTlRJRklFUjkgKmdldEFkYXB0ZXJJZGVudGlmaWVy
KCk7Ci0gICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VMb3N0KCk7Ci0gICAgdmlydHVhbCBib29s
IHRlc3REZXZpY2VSZXNldHRhYmxlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmMoYm9vbCBibG9j
ayk7Ci0gICAgdmlydHVhbCBJRGlyZWN0M0RRdWVyeTkqIGFsbG9jYXRlRXZlbnRRdWVyeSgpOwot
ICAgIHZpcnR1YWwgdm9pZCBmcmVlRXZlbnRRdWVyeShJRGlyZWN0M0RRdWVyeTkqIHF1ZXJ5KTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KEQzREZPUk1BVCBmb3JtYXQs
IGJvb2wgKm11bHRpU2FtcGxlQXJyYXkpOwotICAgIHZpcnR1YWwgYm9vbCBnZXREWFQxVGV4dHVy
ZVN1cHBvcnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0RFhUM1RleHR1cmVTdXBwb3J0KCk7Ci0g
ICAgdmlydHVhbCBib29sIGdldERYVDVUZXh0dXJlU3VwcG9ydCgpOwotICAgIHZpcnR1YWwgYm9v
bCBnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDMyVGV4
dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKTsKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KGJvb2wgKmZpbHRlcmluZywgYm9vbCAq
cmVuZGVyYWJsZSk7Ci0gICAgdmlydHVhbCBib29sIGdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0
KCk7Ci0gICAgdmlydHVhbCBib29sIGdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKTsK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0VmVydGV4VGV4dHVyZVN1cHBvcnQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgZ2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBnZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
SW5zdGFuY2luZ1N1cHBvcnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGZsb2F0IGdldFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCgpIGNvbnN0OwotICAgIHZpcnR1YWwgRDNEUE9PTCBnZXRC
dWZmZXJQb29sKERXT1JEIHVzYWdlKSBjb25zdDsKLSAgICB2aXJ0dWFsIEQzRFBPT0wgZ2V0VGV4
dHVyZVBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeURl
dmljZUxvc3QoKTsKLSAgICBib29sIGlzRGV2aWNlTG9zdCgpOwotCi0gICAgYm9vbCBpc0QzZDlF
eERldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1EM2Q5RXggIT0gTlVMTDsgfQotICAgIGNvbnN0IGNo
YXIgKmdldEV4dGVuc2lvblN0cmluZygpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIgKmdldFZlbmRv
clN0cmluZygpIGNvbnN0OwotICAgIGJvb2wgc2hhcmVIYW5kbGVTdXBwb3J0ZWQoKSBjb25zdDsK
LQotICAgIHZpcnR1YWwgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqY3JlYXRlVmVydGV4U2hhZGVy
KGNvbnN0IERXT1JEICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgdmlydHVhbCBJRGly
ZWN0M0RQaXhlbFNoYWRlcjkgKmNyZWF0ZVBpeGVsU2hhZGVyKGNvbnN0IERXT1JEICpmdW5jdGlv
biwgc2l6ZV90IGxlbmd0aCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgY29tcGlsZVNoYWRlclNv
dXJjZShjb25zdCBjaGFyKiBobHNsLCBjb25zdCBjaGFyKiBzb3VyY2VOYW1lLCBjb25zdCBjaGFy
KiBwcm9maWxlLCBEV09SRCBmbGFncywgSUQzREJsb2IqKiBiaW5hcnksIElEM0RCbG9iKiogZXJy
b3JNZXNzYWdlKTsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihE
aXNwbGF5KTsKLQotICAgIERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkLCBI
REMgZGV2aWNlQ29udGV4dCwgYm9vbCBzb2Z0d2FyZSk7Ci0KLSAgICBEM0RQUkVTRU5UX1BBUkFN
RVRFUlMgZ2V0RGVmYXVsdFByZXNlbnRQYXJhbWV0ZXJzKCk7Ci0KLSAgICBib29sIHJlc3RvcmVM
b3N0RGV2aWNlKCk7Ci0KLSAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBtRGlzcGxheUlkOwotICAg
IGNvbnN0IEhEQyBtRGM7Ci0KLSAgICBITU9EVUxFIG1EM2Q5TW9kdWxlOwotICAgIAotICAgIFVJ
TlQgbUFkYXB0ZXI7Ci0gICAgRDNEREVWVFlQRSBtRGV2aWNlVHlwZTsKLSAgICBEM0RESVNQTEFZ
TU9ERSBtRGlzcGxheU1vZGU7Ci0gICAgSURpcmVjdDNEOSAqbUQzZDk7ICAvLyBBbHdheXMgdmFs
aWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbi4KLSAgICBJRGlyZWN0M0Q5RXggKm1E
M2Q5RXg7ICAvLyBNaWdodCBiZSBudWxsIGlmIEQzRDlFeCBpcyBub3Qgc3VwcG9ydGVkLgotICAg
IElEaXJlY3QzRERldmljZTkgKm1EZXZpY2U7Ci0gICAgSURpcmVjdDNERGV2aWNlOUV4ICptRGV2
aWNlRXg7ICAvLyBNaWdodCBiZSBudWxsIGlmIEQzRDlFeCBpcyBub3Qgc3VwcG9ydGVkLgotCi0g
ICAgLy8gQSBwb29sIG9mIGV2ZW50IHF1ZXJpZXMgdGhhdCBhcmUgY3VycmVudGx5IHVudXNlZC4K
LSAgICBzdGQ6OnZlY3RvcjxJRGlyZWN0M0RRdWVyeTkqPiBtRXZlbnRRdWVyeVBvb2w7Ci0KLSAg
ICBWZXJ0ZXhTaGFkZXJDYWNoZSBtVmVydGV4U2hhZGVyQ2FjaGU7Ci0gICAgUGl4ZWxTaGFkZXJD
YWNoZSBtUGl4ZWxTaGFkZXJDYWNoZTsKLQotICAgIEQzRENBUFM5IG1EZXZpY2VDYXBzOwotICAg
IEQzREFEQVBURVJfSURFTlRJRklFUjkgbUFkYXB0ZXJJZGVudGlmaWVyOwotICAgIEhXTkQgbURl
dmljZVdpbmRvdzsKLQotICAgIGJvb2wgbVNjZW5lU3RhcnRlZDsKLSAgICBFR0xpbnQgbU1heFN3
YXBJbnRlcnZhbDsKLSAgICBFR0xpbnQgbU1pblN3YXBJbnRlcnZhbDsKLSAgICBib29sIG1Tb2Z0
d2FyZURldmljZTsKLSAgICBib29sIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmVzOwotICAgIAot
ICAgIHR5cGVkZWYgc3RkOjpzZXQ8U3VyZmFjZSo+IFN1cmZhY2VTZXQ7Ci0gICAgU3VyZmFjZVNl
dCBtU3VyZmFjZVNldDsKLQotICAgIENvbmZpZ1NldCBtQ29uZmlnU2V0OwotCi0gICAgdHlwZWRl
ZiBzdGQ6OnNldDxnbDo6Q29udGV4dCo+IENvbnRleHRTZXQ7Ci0gICAgQ29udGV4dFNldCBtQ29u
dGV4dFNldDsKLSAgICBib29sIG1EZXZpY2VMb3N0OwotCi0gICAgYm9vbCBjcmVhdGVEZXZpY2Uo
KTsKLSAgICB2b2lkIGluaXRpYWxpemVEZXZpY2UoKTsKLSAgICBib29sIHJlc2V0RGV2aWNlKCk7
Ci0KLSAgICB2b2lkIGluaXRFeHRlbnNpb25TdHJpbmcoKTsKLSAgICBzdGQ6OnN0cmluZyBtRXh0
ZW5zaW9uU3RyaW5nOwotCi0gICAgdm9pZCBpbml0VmVuZG9yU3RyaW5nKCk7Ci0gICAgc3RkOjpz
dHJpbmcgbVZlbmRvclN0cmluZzsKLQotICAgIHR5cGVkZWYgSFJFU1VMVCAoV0lOQVBJICpEM0RD
b21waWxlRnVuYykoTFBDVk9JRCBwU3JjRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNJWkVfVCBTcmNEYXRhU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1NUUiBwU291cmNlTmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUIEQzRF9TSEFERVJfTUFD
Uk8qIHBEZWZpbmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSUQzREluY2x1ZGUqIHBJbmNsdWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTFBDU1RSIHBFbnRyeXBvaW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTFBDU1RSIHBUYXJnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIEZsYWdzMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgRmxhZ3MyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzREJsb2IqKiBwcENvZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEQmxvYioqIHBwRXJy
b3JNc2dzKTsKLQotICAgIEhNT0RVTEUgbUQzZENvbXBpbGVyTW9kdWxlOwotICAgIEQzRENvbXBp
bGVGdW5jIG1EM0RDb21waWxlRnVuYzsKLX07Ci19Ci0KLSNlbmRpZiAgIC8vIExJQkVHTF9ESVNQ
TEFZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1JF
QURNRSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvUkVBRE1FCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZjA3YzUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1JFQURNRQpAQCAtMCwwICsxIEBACitU
aGlzIGRpcmVjdG9yeSdzIGNvbnRlbnRzIGFyZSBub3Qgc3luY2VkIGZyb20gdGhlIEFOR0xFIHBy
b2plY3QgYmVjYXVzZSBubyBwbGF0Zm9ybSBpbiBXZWJLaXQgbmVlZHMgdGhlbSB5ZXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1NoYWRlckNhY2hlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1NoYWRlckNhY2hlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNmZTUyM2IuLjAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TaGFkZXJDYWNoZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTE2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBEaXNwbGF5Lmg6IERlZmluZXMgZWds
OjpTaGFkZXJDYWNoZSwgYSBjYWNoZSBvZiBEaXJlY3QzRCBzaGFkZXIgb2JqZWN0cwotLy8ga2V5
ZWQgYnkgdGhlaXIgYnl0ZSBjb2RlLgotCi0jaWZuZGVmIExJQkVHTF9TSEFERVJfQ0FDSEVfSF8K
LSNkZWZpbmUgTElCRUdMX1NIQURFUl9DQUNIRV9IXwotCi0jaW5jbHVkZSA8ZDNkOS5oPgotCi0j
aWZkZWYgX01TQ19WRVIKLSNpbmNsdWRlIDxoYXNoX21hcD4KLSNlbHNlCi0jaW5jbHVkZSA8dW5v
cmRlcmVkX21hcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgZWdsCi17Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgU2hhZGVyT2JqZWN0PgotY2xhc3MgU2hhZGVyQ2FjaGUKLXsKLSAgcHVibGljOgotICAgIFNo
YWRlckNhY2hlKCkgOiBtRGV2aWNlKE5VTEwpCi0gICAgewotICAgIH0KLQotICAgIH5TaGFkZXJD
YWNoZSgpCi0gICAgewotICAgICAgICAvLyBDYWxsIGNsZWFyIHdoaWxlIHRoZSBkZXZpY2UgaXMg
c3RpbGwgdmFsaWQuCi0gICAgICAgIEFTU0VSVChtTWFwLmVtcHR5KCkpOwotICAgIH0KLQotICAg
IHZvaWQgaW5pdGlhbGl6ZShJRGlyZWN0M0REZXZpY2U5KiBkZXZpY2UpCi0gICAgewotICAgICAg
ICBtRGV2aWNlID0gZGV2aWNlOwotICAgIH0KLQotICAgIFNoYWRlck9iamVjdCAqY3JlYXRlKGNv
bnN0IERXT1JEICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
c3RyaW5nIGtleShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihmdW5jdGlvbiksIGxlbmd0
aCk7Ci0gICAgICAgIHR5cGVuYW1lIE1hcDo6aXRlcmF0b3IgaXQgPSBtTWFwLmZpbmQoa2V5KTsK
LSAgICAgICAgaWYgKGl0ICE9IG1NYXAuZW5kKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGl0
LT5zZWNvbmQtPkFkZFJlZigpOwotICAgICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIFNoYWRlck9iamVjdCAqc2hhZGVyOwotICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IGNyZWF0ZVNoYWRlcihmdW5jdGlvbiwgJnNoYWRlcik7Ci0gICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSYW5kb20gZXZpY3Rpb24gcG9saWN5LgotICAgICAg
ICBpZiAobU1hcC5zaXplKCkgPj0ga01heE1hcFNpemUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1NYXAuYmVnaW4oKS0+c2Vjb25kLT5SZWxlYXNlKCk7Ci0gICAgICAgICAgICBtTWFwLmVyYXNl
KG1NYXAuYmVnaW4oKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzaGFkZXItPkFkZFJlZigpOwot
ICAgICAgICBtTWFwW2tleV0gPSBzaGFkZXI7Ci0KLSAgICAgICAgcmV0dXJuIHNoYWRlcjsKLSAg
ICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIGZvciAodHlwZW5hbWUgTWFw
OjppdGVyYXRvciBpdCA9IG1NYXAuYmVnaW4oKTsgaXQgIT0gbU1hcC5lbmQoKTsgKytpdCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaXQtPnNlY29uZC0+UmVsZWFzZSgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgbU1hcC5jbGVhcigpOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihTaGFkZXJDYWNoZSk7Ci0KLSAgICBjb25zdCBzdGF0aWMgc2l6ZV90
IGtNYXhNYXBTaXplID0gMTAwOwotCi0gICAgSFJFU1VMVCBjcmVhdGVTaGFkZXIoY29uc3QgRFdP
UkQgKmZ1bmN0aW9uLCBJRGlyZWN0M0RWZXJ0ZXhTaGFkZXI5ICoqc2hhZGVyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1EZXZpY2UtPkNyZWF0ZVZlcnRleFNoYWRlcihmdW5jdGlvbiwgc2hhZGVy
KTsKLSAgICB9Ci0KLSAgICBIUkVTVUxUIGNyZWF0ZVNoYWRlcihjb25zdCBEV09SRCAqZnVuY3Rp
b24sIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAqKnNoYWRlcikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtRGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcihmdW5jdGlvbiwgc2hhZGVyKTsKLSAgICB9Ci0K
LSNpZm5kZWYgSEFTSF9NQVAKLSMgaWZkZWYgX01TQ19WRVIKLSMgIGRlZmluZSBIQVNIX01BUCBz
dGRleHQ6Omhhc2hfbWFwCi0jIGVsc2UKLSMgIGRlZmluZSBIQVNIX01BUCBzdGQ6OnVub3JkZXJl
ZF9tYXAKLSMgZW5kaWYKLSNlbmRpZgotCi0gICAgdHlwZWRlZiBIQVNIX01BUDxzdGQ6OnN0cmlu
ZywgU2hhZGVyT2JqZWN0Kj4gTWFwOwotICAgIE1hcCBtTWFwOwotCi0gICAgSURpcmVjdDNERGV2
aWNlOSAqbURldmljZTsKLX07Ci0KLXR5cGVkZWYgU2hhZGVyQ2FjaGU8SURpcmVjdDNEVmVydGV4
U2hhZGVyOT4gVmVydGV4U2hhZGVyQ2FjaGU7Ci10eXBlZGVmIFNoYWRlckNhY2hlPElEaXJlY3Qz
RFBpeGVsU2hhZGVyOT4gUGl4ZWxTaGFkZXJDYWNoZTsKLQotfQotCi0jZW5kaWYgICAvLyBMSUJF
R0xfU0hBREVSX0NBQ0hFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliRUdML1N1cmZhY2UuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9TdXJmYWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTVkNDAzOC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNjU1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8v
IFN1cmZhY2UuY3BwOiBJbXBsZW1lbnRzIHRoZSBlZ2w6OlN1cmZhY2UgY2xhc3MsIHJlcHJlc2Vu
dGluZyBhIGRyYXdpbmcgc3VyZmFjZQotLy8gc3VjaCBhcyB0aGUgY2xpZW50IGFyZWEgb2YgYSB3
aW5kb3csIGluY2x1ZGluZyBhbnkgYmFjayBidWZmZXJzLgotLy8gSW1wbGVtZW50cyBFR0xTdXJm
YWNlIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtFR0wgMS40XSBzZWN0aW9uIDIuMiBwYWdl
IDMuCi0KLSNpbmNsdWRlIDx0Y2hhci5oPgotCi0jaW5jbHVkZSAibGliRUdML1N1cmZhY2UuaCIK
LQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJl
LmgiCi0KLSNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgotI2luY2x1ZGUgImxpYkVHTC9EaXNwbGF5
LmgiCi0KLW5hbWVzcGFjZSBlZ2wKLXsKLQotU3VyZmFjZTo6U3VyZmFjZShEaXNwbGF5ICpkaXNw
bGF5LCBjb25zdCBDb25maWcgKmNvbmZpZywgSFdORCB3aW5kb3csIEVHTGludCBwb3N0U3ViQnVm
ZmVyU3VwcG9ydGVkKSAKLSAgICA6IG1EaXNwbGF5KGRpc3BsYXkpLCBtQ29uZmlnKGNvbmZpZyks
IG1XaW5kb3cod2luZG93KSwgbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQocG9zdFN1YkJ1ZmZlclN1
cHBvcnRlZCkKLXsKLSAgICBtU3dhcENoYWluID0gTlVMTDsKLSAgICBtQmFja0J1ZmZlciA9IE5V
TEw7Ci0gICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7Ci0gICAgbVJlbmRlclRhcmdldCA9IE5VTEw7
Ci0gICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOwotICAgIG1TaGFyZUhhbmRsZSA9IE5VTEw7
Ci0gICAgbVRleHR1cmUgPSBOVUxMOwotICAgIG1UZXh0dXJlRm9ybWF0ID0gRUdMX05PX1RFWFRV
UkU7Ci0gICAgbVRleHR1cmVUYXJnZXQgPSBFR0xfTk9fVEVYVFVSRTsKLQotICAgIG1QaXhlbEFz
cGVjdFJhdGlvID0gKEVHTGludCkoMS4wICogRUdMX0RJU1BMQVlfU0NBTElORyk7ICAgLy8gRklY
TUU6IERldGVybWluZSBhY3R1YWwgcGl4ZWwgYXNwZWN0IHJhdGlvCi0gICAgbVJlbmRlckJ1ZmZl
ciA9IEVHTF9CQUNLX0JVRkZFUjsKLSAgICBtU3dhcEJlaGF2aW9yID0gRUdMX0JVRkZFUl9QUkVT
RVJWRUQ7Ci0gICAgbVN3YXBJbnRlcnZhbCA9IC0xOwotICAgIHNldFN3YXBJbnRlcnZhbCgxKTsK
LQotICAgIHN1YmNsYXNzV2luZG93KCk7Ci19Ci0KLVN1cmZhY2U6OlN1cmZhY2UoRGlzcGxheSAq
ZGlzcGxheSwgY29uc3QgQ29uZmlnICpjb25maWcsIEhBTkRMRSBzaGFyZUhhbmRsZSwgRUdMaW50
IHdpZHRoLCBFR0xpbnQgaGVpZ2h0LCBFR0xlbnVtIHRleHR1cmVGb3JtYXQsIEVHTGVudW0gdGV4
dHVyZVR5cGUpCi0gICAgOiBtRGlzcGxheShkaXNwbGF5KSwgbVdpbmRvdyhOVUxMKSwgbUNvbmZp
Zyhjb25maWcpLCBtU2hhcmVIYW5kbGUoc2hhcmVIYW5kbGUpLCBtV2lkdGgod2lkdGgpLCBtSGVp
Z2h0KGhlaWdodCksIG1Qb3N0U3ViQnVmZmVyU3VwcG9ydGVkKEVHTF9GQUxTRSkKLXsKLSAgICBt
U3dhcENoYWluID0gTlVMTDsKLSAgICBtQmFja0J1ZmZlciA9IE5VTEw7Ci0gICAgbURlcHRoU3Rl
bmNpbCA9IE5VTEw7Ci0gICAgbVJlbmRlclRhcmdldCA9IE5VTEw7Ci0gICAgbU9mZnNjcmVlblRl
eHR1cmUgPSBOVUxMOwotICAgIG1XaW5kb3dTdWJjbGFzc2VkID0gZmFsc2U7Ci0gICAgbVRleHR1
cmUgPSBOVUxMOwotICAgIG1UZXh0dXJlRm9ybWF0ID0gdGV4dHVyZUZvcm1hdDsKLSAgICBtVGV4
dHVyZVRhcmdldCA9IHRleHR1cmVUeXBlOwotCi0gICAgbVBpeGVsQXNwZWN0UmF0aW8gPSAoRUdM
aW50KSgxLjAgKiBFR0xfRElTUExBWV9TQ0FMSU5HKTsgICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFj
dHVhbCBwaXhlbCBhc3BlY3QgcmF0aW8KLSAgICBtUmVuZGVyQnVmZmVyID0gRUdMX0JBQ0tfQlVG
RkVSOwotICAgIG1Td2FwQmVoYXZpb3IgPSBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKLSAgICBtU3dh
cEludGVydmFsID0gLTE7Ci0gICAgc2V0U3dhcEludGVydmFsKDEpOwotfQotCi1TdXJmYWNlOjp+
U3VyZmFjZSgpCi17Ci0gICAgdW5zdWJjbGFzc1dpbmRvdygpOwotICAgIHJlbGVhc2UoKTsKLX0K
LQotYm9vbCBTdXJmYWNlOjppbml0aWFsaXplKCkKLXsKLSAgICBBU1NFUlQoIW1Td2FwQ2hhaW4g
JiYgIW1PZmZzY3JlZW5UZXh0dXJlICYmICFtRGVwdGhTdGVuY2lsKTsKLQotICAgIGlmICghcmVz
ZXRTd2FwQ2hhaW4oKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFN1cmZhY2U6OnJlbGVhc2UoKQotewotICAgIGlmIChtU3dhcENoYWluKQotICAg
IHsKLSAgICAgICAgbVN3YXBDaGFpbi0+UmVsZWFzZSgpOwotICAgICAgICBtU3dhcENoYWluID0g
TlVMTDsKLSAgICB9Ci0KLSAgICBpZiAobUJhY2tCdWZmZXIpCi0gICAgewotICAgICAgICBtQmFj
a0J1ZmZlci0+UmVsZWFzZSgpOwotICAgICAgICBtQmFja0J1ZmZlciA9IE5VTEw7Ci0gICAgfQot
Ci0gICAgaWYgKG1EZXB0aFN0ZW5jaWwpCi0gICAgewotICAgICAgICBtRGVwdGhTdGVuY2lsLT5S
ZWxlYXNlKCk7Ci0gICAgICAgIG1EZXB0aFN0ZW5jaWwgPSBOVUxMOwotICAgIH0KLQotICAgIGlm
IChtUmVuZGVyVGFyZ2V0KQotICAgIHsKLSAgICAgICAgbVJlbmRlclRhcmdldC0+UmVsZWFzZSgp
OwotICAgICAgICBtUmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAobU9mZnNj
cmVlblRleHR1cmUpCi0gICAgewotICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZS0+UmVsZWFzZSgp
OwotICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZSA9IE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKG1U
ZXh0dXJlKQotICAgIHsKLSAgICAgICAgbVRleHR1cmUtPnJlbGVhc2VUZXhJbWFnZSgpOwotICAg
ICAgICBtVGV4dHVyZSA9IE5VTEw7Ci0gICAgfQotCi0gICAgbVNoYXJlSGFuZGxlID0gTlVMTDsK
LX0KLQotYm9vbCBTdXJmYWNlOjpyZXNldFN3YXBDaGFpbigpCi17Ci0gICAgaWYgKCFtV2luZG93
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc2V0U3dhcENoYWluKG1XaWR0aCwgbUhlaWdodCk7
Ci0gICAgfQotCi0gICAgUkVDVCB3aW5kb3dSZWN0OwotICAgIGlmICghR2V0Q2xpZW50UmVjdChn
ZXRXaW5kb3dIYW5kbGUoKSwgJndpbmRvd1JlY3QpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGZh
bHNlKTsKLQotICAgICAgICBFUlIoIkNvdWxkIG5vdCByZXRyaWV2ZSB0aGUgd2luZG93IGRpbWVu
c2lvbnMiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiByZXNl
dFN3YXBDaGFpbih3aW5kb3dSZWN0LnJpZ2h0IC0gd2luZG93UmVjdC5sZWZ0LCB3aW5kb3dSZWN0
LmJvdHRvbSAtIHdpbmRvd1JlY3QudG9wKTsKLX0KLQotYm9vbCBTdXJmYWNlOjpyZXNldFN3YXBD
aGFpbihpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCkKLXsKLSAgICBJ
RGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtRGlzcGxheS0+Z2V0RGV2aWNlKCk7Ci0KLSAgICBp
ZiAoZGV2aWNlID09IE5VTEwpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgLy8gRXZpY3QgYWxsIG5vbi1yZW5kZXIgdGFyZ2V0IHRleHR1cmVzIHRvIHN5c3RlbSBt
ZW1vcnkgYW5kIHJlbGVhc2UgYWxsIHJlc291cmNlcwotICAgIC8vIGJlZm9yZSByZWFsbG9jYXRp
bmcgdGhlbSB0byBmcmVlIHVwIGFzIG11Y2ggdmlkZW8gbWVtb3J5IGFzIHBvc3NpYmxlLgotICAg
IGRldmljZS0+RXZpY3RNYW5hZ2VkUmVzb3VyY2VzKCk7Ci0KLSAgICBIUkVTVUxUIHJlc3VsdDsK
LQotICAgIC8vIFJlbGVhc2Ugc3BlY2lmaWMgcmVzb3VyY2VzIHRvIGZyZWUgdXAgbWVtb3J5IGZv
ciB0aGUgbmV3IHJlbmRlciB0YXJnZXQsIHdoaWxlIHRoZQotICAgIC8vIG9sZCByZW5kZXIgdGFy
Z2V0IHN0aWxsIGV4aXN0cyBmb3IgdGhlIHB1cnBvc2Ugb2YgcHJlc2VydmluZyBpdHMgY29udGVu
dHMuCi0gICAgaWYgKG1Td2FwQ2hhaW4pCi0gICAgewotICAgICAgICBtU3dhcENoYWluLT5SZWxl
YXNlKCk7Ci0gICAgICAgIG1Td2FwQ2hhaW4gPSBOVUxMOwotICAgIH0KLQotICAgIGlmIChtQmFj
a0J1ZmZlcikKLSAgICB7Ci0gICAgICAgIG1CYWNrQnVmZmVyLT5SZWxlYXNlKCk7Ci0gICAgICAg
IG1CYWNrQnVmZmVyID0gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAobU9mZnNjcmVlblRleHR1cmUp
Ci0gICAgewotICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZS0+UmVsZWFzZSgpOwotICAgICAgICBt
T2Zmc2NyZWVuVGV4dHVyZSA9IE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKG1EZXB0aFN0ZW5jaWwp
Ci0gICAgewotICAgICAgICBtRGVwdGhTdGVuY2lsLT5SZWxlYXNlKCk7Ci0gICAgICAgIG1EZXB0
aFN0ZW5jaWwgPSBOVUxMOwotICAgIH0KLQotICAgIG1TaGFyZUhhbmRsZSA9IE5VTEw7Ci0gICAg
SEFORExFICpwU2hhcmVIYW5kbGUgPSBOVUxMOwotICAgIGlmICghbVdpbmRvdyAmJiBtRGlzcGxh
eS0+c2hhcmVIYW5kbGVTdXBwb3J0ZWQoKSkKLSAgICB7Ci0gICAgICAgIHBTaGFyZUhhbmRsZSA9
ICZtU2hhcmVIYW5kbGU7Ci0gICAgfQotCi0gICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0
dXJlKGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCwgMSwgRDNEVVNBR0VfUkVOREVS
VEFSR0VULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29uZmlnLT5tUmVu
ZGVyVGFyZ2V0Rm9ybWF0LCBEM0RQT09MX0RFRkFVTFQsICZtT2Zmc2NyZWVuVGV4dHVyZSwgcFNo
YXJlSGFuZGxlKTsKLSAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgewotICAgICAgICBFUlIo
IkNvdWxkIG5vdCBjcmVhdGUgb2Zmc2NyZWVuIHRleHR1cmU6ICUwOGxYIiwgcmVzdWx0KTsKLSAg
ICAgICAgcmVsZWFzZSgpOwotCi0gICAgICAgIGlmKGlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1EaXNwbGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgZmFsc2UpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgSURpcmVjdDNEU3VyZmFjZTkgKm9sZFJlbmRlclRhcmdldCA9
IG1SZW5kZXJUYXJnZXQ7Ci0KLSAgICByZXN1bHQgPSBtT2Zmc2NyZWVuVGV4dHVyZS0+R2V0U3Vy
ZmFjZUxldmVsKDAsICZtUmVuZGVyVGFyZ2V0KTsKLSAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOwotCi0gICAgaWYgKG9sZFJlbmRlclRhcmdldCkKLSAgICB7Ci0gICAgICAgIFJFQ1QgcmVj
dCA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIDAsIDAsCi0gICAgICAgICAgICBtV2lkdGgsIG1I
ZWlnaHQKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAocmVjdC5yaWdodCA+IHN0YXRpY19jYXN0
PExPTkc+KGJhY2tidWZmZXJXaWR0aCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlY3Qucmln
aHQgPSBiYWNrYnVmZmVyV2lkdGg7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocmVjdC5ib3R0
b20gPiBzdGF0aWNfY2FzdDxMT05HPihiYWNrYnVmZmVySGVpZ2h0KSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmVjdC5ib3R0b20gPSBiYWNrYnVmZmVySGVpZ2h0OwotICAgICAgICB9Ci0KLSAg
ICAgICAgbURpc3BsYXktPmVuZFNjZW5lKCk7Ci0KLSAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5T
dHJldGNoUmVjdChvbGRSZW5kZXJUYXJnZXQsICZyZWN0LCBtUmVuZGVyVGFyZ2V0LCAmcmVjdCwg
RDNEVEVYRl9OT05FKTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLQotICAg
ICAgICBvbGRSZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICBpZiAobVdpbmRv
dykKLSAgICB7Ci0gICAgICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVy
cyA9IHswfTsKLSAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuQXV0b0RlcHRoU3RlbmNpbEZvcm1h
dCA9IG1Db25maWctPm1EZXB0aFN0ZW5jaWxGb3JtYXQ7Ci0gICAgICAgIHByZXNlbnRQYXJhbWV0
ZXJzLkJhY2tCdWZmZXJDb3VudCA9IDE7Ci0gICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tC
dWZmZXJGb3JtYXQgPSBtQ29uZmlnLT5tUmVuZGVyVGFyZ2V0Rm9ybWF0OwotICAgICAgICBwcmVz
ZW50UGFyYW1ldGVycy5FbmFibGVBdXRvRGVwdGhTdGVuY2lsID0gRkFMU0U7Ci0gICAgICAgIHBy
ZXNlbnRQYXJhbWV0ZXJzLkZsYWdzID0gMDsKLSAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuaERl
dmljZVdpbmRvdyA9IGdldFdpbmRvd0hhbmRsZSgpOwotICAgICAgICBwcmVzZW50UGFyYW1ldGVy
cy5NdWx0aVNhbXBsZVF1YWxpdHkgPSAwOyAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBVbmlt
cGxlbWVudGVkCi0gICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLk11bHRpU2FtcGxlVHlwZSA9IEQz
RE1VTFRJU0FNUExFX05PTkU7ICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQKLSAgICAgICAgcHJl
c2VudFBhcmFtZXRlcnMuUHJlc2VudGF0aW9uSW50ZXJ2YWwgPSBtUHJlc2VudEludGVydmFsOwot
ICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5Td2FwRWZmZWN0ID0gRDNEU1dBUEVGRkVDVF9ESVND
QVJEOwotICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5XaW5kb3dlZCA9IFRSVUU7Ci0gICAgICAg
IHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKLSAg
ICAgICAgcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckhlaWdodCA9IGJhY2tidWZmZXJIZWln
aHQ7Ci0KLSAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xNDAyMzkKLSAgICAgICAgLy8gaHR0
cDovL2NyYnVnLmNvbS8xNDM0MzQKLSAgICAgICAgLy8KLSAgICAgICAgLy8gU29tZSBBTUQvSW50
ZWwgc3dpdGNoYWJsZSBzeXN0ZW1zIC8gZHJpdmVycyBhcHBlYXIgdG8gcm91bmQgc3dhcCBjaGFp
biBzdXJmYWNlcyB0byBhIG11bHRpcGxlIG9mIDY0IHBpeGVscyBpbiB3aWR0aAotICAgICAgICAv
LyB3aGVuIHVzaW5nIHRoZSBpbnRlZ3JhdGVkIEludGVsLiBUaGlzIHJvdW5kcyB0aGUgd2lkdGgg
dXAgcmF0aGVyIHRoYW4gZG93bi4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gU29tZSBub24tc3dp
dGNoYWJsZSBBTUQgR1BVcyAvIGRyaXZlcnMgZG8gbm90IHJlc3BlY3QgdGhlIHNvdXJjZSByZWN0
YW5nbGUgdG8gUHJlc2VudC4gVGhlcmVmb3JlLCB3aGVuIHRoZSB2ZW5kb3IgSUQKLSAgICAgICAg
Ly8gaXMgbm90IEludGVsLCB0aGUgYmFjayBidWZmZXIgd2lkdGggbXVzdCBiZSBleGFjdGx5IHRo
ZSBzYW1lIHdpZHRoIGFzIHRoZSB3aW5kb3cgb3IgaG9yaXpvbnRhbCBzY2FsaW5nIHdpbGwgb2Nj
dXIuCi0gICAgICAgIEQzREFEQVBURVJfSURFTlRJRklFUjkqIGFkYXB0ZXJJZGVudGlmaWVyID0g
bURpc3BsYXktPmdldEFkYXB0ZXJJZGVudGlmaWVyKCk7Ci0gICAgICAgIGlmIChhZGFwdGVySWRl
bnRpZmllci0+VmVuZG9ySWQgPT0gVkVORE9SX0lEX0lOVEVMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVyV2lkdGggPSAocHJlc2VudFBhcmFtZXRl
cnMuQmFja0J1ZmZlcldpZHRoICsgNjMpIC8gNjQgKiA2NDsKLSAgICAgICAgfQotCi0gICAgICAg
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQWRkaXRpb25hbFN3YXBDaGFpbigmcHJlc2VudFBhcmFt
ZXRlcnMsICZtU3dhcENoYWluKTsKLQotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1P
UlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9JTlZBTElE
Q0FMTCB8fCByZXN1bHQgPT0gRDNERVJSX0RFVklDRUxPU1QpOwotCi0gICAgICAgICAgICBFUlIo
IkNvdWxkIG5vdCBjcmVhdGUgYWRkaXRpb25hbCBzd2FwIGNoYWlucyBvciBvZmZzY3JlZW4gc3Vy
ZmFjZXM6ICUwOGxYIiwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJlbGVhc2UoKTsKLQotICAgICAg
ICAgICAgaWYoaXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBtRGlzcGxheS0+bm90aWZ5RGV2aWNlTG9zdCgpOwotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgZmFsc2Up
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0ID0gbVN3YXBDaGFp
bi0+R2V0QmFja0J1ZmZlcigwLCBEM0RCQUNLQlVGRkVSX1RZUEVfTU9OTywgJm1CYWNrQnVmZmVy
KTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLSAgICAgICAgSW52YWxpZGF0
ZVJlY3QobVdpbmRvdywgTlVMTCwgRkFMU0UpOwotICAgIH0KLQotICAgIGlmIChtQ29uZmlnLT5t
RGVwdGhTdGVuY2lsRm9ybWF0ICE9IEQzREZNVF9VTktOT1dOKQotICAgIHsKLSAgICAgICAgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxTdXJmYWNlKGJhY2tidWZmZXJXaWR0aCwg
YmFja2J1ZmZlckhlaWdodCwgbUNvbmZpZy0+bURlcHRoU3RlbmNpbEZvcm1hdCwgRDNETVVMVElT
QU1QTEVfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIEZBTFNFLCAmbURlcHRoU3RlbmNpbCwgTlVMTCk7Ci0KLSAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQz
REVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IHJlc3Vs
dCA9PSBEM0RFUlJfSU5WQUxJRENBTEwpOwotCi0gICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBj
cmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBzd2FwIGNoYWluOiAweCUwOFgiLCBy
ZXN1bHQpOwotICAgICAgICAgICAgcmVsZWFzZSgpOwotCi0gICAgICAgICAgICBpZihpc0Rldmlj
ZUxvc3RFcnJvcihyZXN1bHQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EaXNw
bGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBmYWxzZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7Ci0gICAg
bUhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7Ci0KLSAgICBtUHJlc2VudEludGVydmFsRGlydHkg
PSBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBTdXJmYWNlOjpzd2FwUmVjdChF
R0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKLXsKLSAgICBp
ZiAoIW1Td2FwQ2hhaW4pCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBpZiAoeCArIHdpZHRoID4gbVdpZHRoKQotICAgIHsKLSAgICAgICAgd2lkdGggPSBtV2lkdGgg
LSB4OwotICAgIH0KLQotICAgIGlmICh5ICsgaGVpZ2h0ID4gbUhlaWdodCkKLSAgICB7Ci0gICAg
ICAgIGhlaWdodCA9IG1IZWlnaHQgLSB5OwotICAgIH0KLQotICAgIGlmICh3aWR0aCA9PSAwIHx8
IGhlaWdodCA9PSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbURpc3BsYXktPmdldERldmljZSgpOwotCi0gICAg
Ly8gRGlzYWJsZSBhbGwgcGlwZWxpbmUgb3BlcmF0aW9ucwotICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfRkFMU0UpOwotICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfRklMTE1PREUsIEQzREZJTExfU09MSUQpOwotICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfQUxQSEFURVNURU5BQkxFLCBGQUxTRSk7Ci0gICAgZGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7Ci0gICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNEQ1VMTF9OT05FKTsKLSAgICBkZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKLSAgICBkZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX0NMSVBQTEFORUVOQUJMRSwgMCk7Ci0gICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxFLCBEM0RDT0xPUldSSVRFRU5BQkxF
X0FMUEhBIHwgRDNEQ09MT1JXUklURUVOQUJMRV9CTFVFIHwgRDNEQ09MT1JXUklURUVOQUJMRV9H
UkVFTiB8IEQzRENPTE9SV1JJVEVFTkFCTEVfUkVEKTsKLSAgICBkZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX1NSR0JXUklURUVOQUJMRSwgRkFMU0UpOwotICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfU0NJU1NPUlRFU1RFTkFCTEUsIEZBTFNFKTsKLSAgICBkZXZpY2UtPlNldFBp
eGVsU2hhZGVyKE5VTEwpOwotICAgIGRldmljZS0+U2V0VmVydGV4U2hhZGVyKE5VTEwpOwotCi0g
ICAgZGV2aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwgbUJhY2tCdWZmZXIpOwotICAgIGRldmljZS0+
U2V0RGVwdGhTdGVuY2lsU3VyZmFjZShOVUxMKTsKLQotICAgIGRldmljZS0+U2V0VGV4dHVyZSgw
LCBtT2Zmc2NyZWVuVGV4dHVyZSk7Ci0gICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgw
LCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOwotICAgIGRldmljZS0+U2V0VGV4
dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0NPTE9SQVJHMSwgRDNEVEFfVEVYVFVSRSk7Ci0gICAg
ZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgxLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX0RJ
U0FCTEUpOwotICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfTUFHRklMVEVS
LCBEM0RURVhGX1BPSU5UKTsKLSAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1Q
X01JTkZJTFRFUiwgRDNEVEVYRl9QT0lOVCk7Ci0gICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUo
MCwgRDNEU0FNUF9BRERSRVNTVSwgRDNEVEFERFJFU1NfQ0xBTVApOwotICAgIGRldmljZS0+U2V0
U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfQUREUkVTU1YsIEQzRFRBRERSRVNTX0NMQU1QKTsKLSAg
ICBkZXZpY2UtPlNldEZWRihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX1RFWDEpOwotCi0gICAgRDNE
VklFV1BPUlQ5IHZpZXdwb3J0ID0gezAsIDAsIG1XaWR0aCwgbUhlaWdodCwgMC4wZiwgMS4wZn07
Ci0gICAgZGV2aWNlLT5TZXRWaWV3cG9ydCgmdmlld3BvcnQpOwotCi0gICAgZmxvYXQgeDEgPSB4
IC0gMC41ZjsKLSAgICBmbG9hdCB5MSA9IChtSGVpZ2h0IC0geSAtIGhlaWdodCkgLSAwLjVmOwot
ICAgIGZsb2F0IHgyID0gKHggKyB3aWR0aCkgLSAwLjVmOwotICAgIGZsb2F0IHkyID0gKG1IZWln
aHQgLSB5KSAtIDAuNWY7Ci0KLSAgICBmbG9hdCB1MSA9IHggLyBmbG9hdChtV2lkdGgpOwotICAg
IGZsb2F0IHYxID0geSAvIGZsb2F0KG1IZWlnaHQpOwotICAgIGZsb2F0IHUyID0gKHggKyB3aWR0
aCkgLyBmbG9hdChtV2lkdGgpOwotICAgIGZsb2F0IHYyID0gKHkgKyBoZWlnaHQpIC8gZmxvYXQo
bUhlaWdodCk7Ci0KLSAgICBmbG9hdCBxdWFkWzRdWzZdID0ge3t4MSwgeTEsIDAuMGYsIDEuMGYs
IHUxLCB2Mn0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7eDIsIHkxLCAwLjBmLCAxLjBmLCB1
MiwgdjJ9LAotICAgICAgICAgICAgICAgICAgICAgICAge3gyLCB5MiwgMC4wZiwgMS4wZiwgdTIs
IHYxfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHt4MSwgeTIsIDAuMGYsIDEuMGYsIHUxLCB2
MX19OyAgIC8vIHgsIHksIHosIHJodywgdSwgdgotCi0gICAgbURpc3BsYXktPnN0YXJ0U2NlbmUo
KTsKLSAgICBkZXZpY2UtPkRyYXdQcmltaXRpdmVVUChEM0RQVF9UUklBTkdMRUZBTiwgMiwgcXVh
ZCwgNiAqIHNpemVvZihmbG9hdCkpOwotICAgIG1EaXNwbGF5LT5lbmRTY2VuZSgpOwotCi0gICAg
ZGV2aWNlLT5TZXRUZXh0dXJlKDAsIE5VTEwpOwotCi0gICAgUkVDVCByZWN0ID0KLSAgICB7Ci0g
ICAgICAgIHgsIG1IZWlnaHQgLSB5IC0gaGVpZ2h0LAotICAgICAgICB4ICsgd2lkdGgsIG1IZWln
aHQgLSB5Ci0gICAgfTsKLQotICAgIEhSRVNVTFQgcmVzdWx0ID0gbVN3YXBDaGFpbi0+UHJlc2Vu
dCgmcmVjdCwgJnJlY3QsIE5VTEwsIE5VTEwsIDApOwotCi0gICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGdsR2V0Q3VycmVudENvbnRleHQoKSk7Ci0g
ICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBjb250ZXh0LT5tYXJrQWxsU3RhdGVEaXJ0
eSgpOwotICAgIH0KLQotICAgIGlmIChpc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQotICAgIHsK
LSAgICAgICAgbURpc3BsYXktPm5vdGlmeURldmljZUxvc3QoKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkg
fHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9EUklWRVJJTlRF
Uk5BTEVSUk9SKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIGZh
bHNlKTsKLSAgICB9Ci0KLSAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotCi0gICAgY2hl
Y2tGb3JPdXRPZkRhdGVTd2FwQ2hhaW4oKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1IV05E
IFN1cmZhY2U6OmdldFdpbmRvd0hhbmRsZSgpCi17Ci0gICAgcmV0dXJuIG1XaW5kb3c7Ci19Ci0K
LQotI2RlZmluZSBrU3VyZmFjZVByb3BlcnR5IF9URVhUKCJFZ2w6OlN1cmZhY2VPd25lciIpCi0j
ZGVmaW5lIGtQYXJlbnRXbmRQcm9jIF9URVhUKCJFZ2w6OlN1cmZhY2VQYXJlbnRXbmRQcm9jIikK
LQotc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgU3VyZmFjZVdpbmRvd1Byb2MoSFdORCBod25kLCBV
SU5UIG1lc3NhZ2UsIFdQQVJBTSB3cGFyYW0sIExQQVJBTSBscGFyYW0pCi17Ci0gIGlmIChtZXNz
YWdlID09IFdNX1NJWkUpCi0gIHsKLSAgICAgIFN1cmZhY2UqIHN1cmYgPSByZWludGVycHJldF9j
YXN0PFN1cmZhY2UqPihHZXRQcm9wKGh3bmQsIGtTdXJmYWNlUHJvcGVydHkpKTsKLSAgICAgIGlm
KHN1cmYpCi0gICAgICB7Ci0gICAgICAgICAgc3VyZi0+Y2hlY2tGb3JPdXRPZkRhdGVTd2FwQ2hh
aW4oKTsKLSAgICAgIH0KLSAgfQotICBXTkRQUk9DIHByZXZXbmRGdW5jID0gcmVpbnRlcnByZXRf
Y2FzdDxXTkRQUk9DID4oR2V0UHJvcChod25kLCBrUGFyZW50V25kUHJvYykpOwotICByZXR1cm4g
Q2FsbFdpbmRvd1Byb2MocHJldlduZEZ1bmMsIGh3bmQsIG1lc3NhZ2UsIHdwYXJhbSwgbHBhcmFt
KTsKLX0KLQotdm9pZCBTdXJmYWNlOjpzdWJjbGFzc1dpbmRvdygpCi17Ci0gICAgaWYgKCFtV2lu
ZG93KQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIERXT1JEIHByb2Nlc3NJ
ZDsKLSAgICBEV09SRCB0aHJlYWRJZCA9IEdldFdpbmRvd1RocmVhZFByb2Nlc3NJZChtV2luZG93
LCAmcHJvY2Vzc0lkKTsKLSAgICBpZiAocHJvY2Vzc0lkICE9IEdldEN1cnJlbnRQcm9jZXNzSWQo
KSB8fCB0aHJlYWRJZCAhPSBHZXRDdXJyZW50VGhyZWFkSWQoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBTZXRMYXN0RXJyb3IoMCk7Ci0gICAgTE9OR19QVFIgb2xkV25k
UHJvYyA9IFNldFdpbmRvd0xvbmdQdHIobVdpbmRvdywgR1dMUF9XTkRQUk9DLCByZWludGVycHJl
dF9jYXN0PExPTkdfUFRSPihTdXJmYWNlV2luZG93UHJvYykpOwotICAgIGlmKG9sZFduZFByb2Mg
PT0gMCAmJiBHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9TVUNDRVNTKQotICAgIHsKLSAgICAgICAg
bVdpbmRvd1N1YmNsYXNzZWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFNldFByb3AobVdpbmRvdywga1N1cmZhY2VQcm9wZXJ0eSwgcmVpbnRlcnByZXRfY2FzdDxIQU5E
TEU+KHRoaXMpKTsKLSAgICBTZXRQcm9wKG1XaW5kb3csIGtQYXJlbnRXbmRQcm9jLCByZWludGVy
cHJldF9jYXN0PEhBTkRMRT4ob2xkV25kUHJvYykpOwotICAgIG1XaW5kb3dTdWJjbGFzc2VkID0g
dHJ1ZTsKLX0KLQotdm9pZCBTdXJmYWNlOjp1bnN1YmNsYXNzV2luZG93KCkKLXsKLSAgICBpZigh
bVdpbmRvd1N1YmNsYXNzZWQpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gdW4tc3ViY2xhc3MKLSAgICBMT05HX1BUUiBwYXJlbnRXbmRGdW5jID0gcmVpbnRlcnByZXRf
Y2FzdDxMT05HX1BUUj4oR2V0UHJvcChtV2luZG93LCBrUGFyZW50V25kUHJvYykpOwotCi0gICAg
Ly8gQ2hlY2sgdGhlIHdpbmRvd3Byb2MgaXMgc3RpbGwgU3VyZmFjZVdpbmRvd1Byb2MuCi0gICAg
Ly8gSWYgdGhpcyBhc3NlcnQgZmFpbHMsIHRoZW4gaXQgaXMgbGlrZWx5IHRoZSBhcHBsaWNhdGlv
biBoYXMgc3ViY2xhc3NlZCB0aGUKLSAgICAvLyBod25kIGFzIHdlbGwgYW5kIGRpZCBub3QgdW5z
dWJjbGFzcyBiZWZvcmUgZGVzdHJveWluZyBpdHMgRUdMIGNvbnRleHQuIFRoZQotICAgIC8vIGFw
cGxpY2F0aW9uIHNob3VsZCBiZSBtb2RpZmllZCB0byBlaXRoZXIgc3ViY2xhc3MgYmVmb3JlIGlu
aXRpYWxpemluZyB0aGUKLSAgICAvLyBFR0wgY29udGV4dCwgb3IgdG8gdW5zdWJjbGFzcyBiZWZv
cmUgZGVzdHJveWluZyB0aGUgRUdMIGNvbnRleHQuCi0gICAgaWYocGFyZW50V25kRnVuYykKLSAg
ICB7Ci0gICAgICAgIExPTkdfUFRSIHByZXZXbmRGdW5jID0gU2V0V2luZG93TG9uZ1B0cihtV2lu
ZG93LCBHV0xQX1dORFBST0MsIHBhcmVudFduZEZ1bmMpOwotICAgICAgICBBU1NFUlQocHJldldu
ZEZ1bmMgPT0gcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4oU3VyZmFjZVdpbmRvd1Byb2MpKTsK
LSAgICB9Ci0KLSAgICBSZW1vdmVQcm9wKG1XaW5kb3csIGtTdXJmYWNlUHJvcGVydHkpOwotICAg
IFJlbW92ZVByb3AobVdpbmRvdywga1BhcmVudFduZFByb2MpOwotICAgIG1XaW5kb3dTdWJjbGFz
c2VkID0gZmFsc2U7Ci19Ci0KLWJvb2wgU3VyZmFjZTo6Y2hlY2tGb3JPdXRPZkRhdGVTd2FwQ2hh
aW4oKQotewotICAgIFJFQ1QgY2xpZW50OwotICAgIGlmICghR2V0Q2xpZW50UmVjdChnZXRXaW5k
b3dIYW5kbGUoKSwgJmNsaWVudCkpCi0gICAgewotICAgICAgICBBU1NFUlQoZmFsc2UpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gR3JvdyB0aGUgYnVmZmVyIG5vdywg
aWYgdGhlIHdpbmRvdyBoYXMgZ3Jvd24uIFdlIG5lZWQgdG8gZ3JvdyBub3cgdG8gYXZvaWQgbG9z
aW5nIGluZm9ybWF0aW9uLgotICAgIGludCBjbGllbnRXaWR0aCA9IGNsaWVudC5yaWdodCAtIGNs
aWVudC5sZWZ0OwotICAgIGludCBjbGllbnRIZWlnaHQgPSBjbGllbnQuYm90dG9tIC0gY2xpZW50
LnRvcDsKLSAgICBib29sIHNpemVEaXJ0eSA9IGNsaWVudFdpZHRoICE9IGdldFdpZHRoKCkgfHwg
Y2xpZW50SGVpZ2h0ICE9IGdldEhlaWdodCgpOwotCi0gICAgaWYgKHNpemVEaXJ0eSB8fCBtUHJl
c2VudEludGVydmFsRGlydHkpCi0gICAgewotICAgICAgICByZXNldFN3YXBDaGFpbihjbGllbnRX
aWR0aCwgY2xpZW50SGVpZ2h0KTsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PGVnbDo6U3VyZmFj
ZSo+KGdldEN1cnJlbnREcmF3U3VyZmFjZSgpKSA9PSB0aGlzKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBnbE1ha2VDdXJyZW50KGdsR2V0Q3VycmVudENvbnRleHQoKSwgc3RhdGljX2Nhc3Q8ZWds
OjpEaXNwbGF5Kj4oZ2V0Q3VycmVudERpc3BsYXkoKSksIHRoaXMpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotRFdPUkQg
U3VyZmFjZTo6Y29udmVydEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKLXsKLSAgICBzd2l0Y2go
aW50ZXJ2YWwpCi0gICAgewotICAgICAgY2FzZSAwOiByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZB
TF9JTU1FRElBVEU7Ci0gICAgICBjYXNlIDE6IHJldHVybiBEM0RQUkVTRU5UX0lOVEVSVkFMX09O
RTsKLSAgICAgIGNhc2UgMjogcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfVFdPOwotICAgICAg
Y2FzZSAzOiByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9USFJFRTsKLSAgICAgIGNhc2UgNDog
cmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfRk9VUjsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfREVGQVVMVDsK
LX0KLQotYm9vbCBTdXJmYWNlOjpzd2FwKCkKLXsKLSAgICByZXR1cm4gc3dhcFJlY3QoMCwgMCwg
bVdpZHRoLCBtSGVpZ2h0KTsKLX0KLQotYm9vbCBTdXJmYWNlOjpwb3N0U3ViQnVmZmVyKEVHTGlu
dCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQotewotICAgIGlmICgh
bVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQpCi0gICAgewotICAgICAgICAvLyBTcGVjIGlzIG5vdCBj
bGVhciBhYm91dCBob3cgdGhpcyBzaG91bGQgYmUgaGFuZGxlZC4KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzd2FwUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKLX0KLQotRUdMaW50IFN1cmZhY2U6OmdldFdpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bVdpZHRoOwotfQotCi1FR0xpbnQgU3VyZmFjZTo6Z2V0SGVpZ2h0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbUhlaWdodDsKLX0KLQotRUdMaW50IFN1cmZhY2U6OmlzUG9zdFN1YkJ1ZmZlclN1cHBv
cnRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Qb3N0U3ViQnVmZmVyU3VwcG9ydGVkOwotfQot
Ci0vLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCi0vLyBjYWxsZXIgbXVzdCBSZWxl
YXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKLUlEaXJlY3QzRFN1cmZhY2U5ICpTdXJmYWNlOjpn
ZXRSZW5kZXJUYXJnZXQoKQotewotICAgIGlmIChtUmVuZGVyVGFyZ2V0KQotICAgIHsKLSAgICAg
ICAgbVJlbmRlclRhcmdldC0+QWRkUmVmKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1SZW5kZXJU
YXJnZXQ7Ci19Ci0KLS8vIEluY3JlbWVudHMgcmVmY291bnQgb24gc3VyZmFjZS4KLS8vIGNhbGxl
ciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgc3VyZmFjZQotSURpcmVjdDNEU3VyZmFjZTkg
KlN1cmZhY2U6OmdldERlcHRoU3RlbmNpbCgpCi17Ci0gICAgaWYgKG1EZXB0aFN0ZW5jaWwpCi0g
ICAgewotICAgICAgICBtRGVwdGhTdGVuY2lsLT5BZGRSZWYoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbURlcHRoU3RlbmNpbDsKLX0KLQotSURpcmVjdDNEVGV4dHVyZTkgKlN1cmZhY2U6OmdldE9m
ZnNjcmVlblRleHR1cmUoKQotewotICAgIGlmIChtT2Zmc2NyZWVuVGV4dHVyZSkKLSAgICB7Ci0g
ICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5BZGRSZWYoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
bU9mZnNjcmVlblRleHR1cmU7Ci19Ci0KLXZvaWQgU3VyZmFjZTo6c2V0U3dhcEludGVydmFsKEVH
TGludCBpbnRlcnZhbCkKLXsKLSAgICBpZiAobVN3YXBJbnRlcnZhbCA9PSBpbnRlcnZhbCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgbVN3YXBJbnRlcnZhbCA9IGlu
dGVydmFsOwotICAgIG1Td2FwSW50ZXJ2YWwgPSBzdGQ6Om1heChtU3dhcEludGVydmFsLCBtRGlz
cGxheS0+Z2V0TWluU3dhcEludGVydmFsKCkpOwotICAgIG1Td2FwSW50ZXJ2YWwgPSBzdGQ6Om1p
bihtU3dhcEludGVydmFsLCBtRGlzcGxheS0+Z2V0TWF4U3dhcEludGVydmFsKCkpOwotCi0gICAg
bVByZXNlbnRJbnRlcnZhbCA9IGNvbnZlcnRJbnRlcnZhbChtU3dhcEludGVydmFsKTsKLSAgICBt
UHJlc2VudEludGVydmFsRGlydHkgPSB0cnVlOwotfQotCi1FR0xlbnVtIFN1cmZhY2U6OmdldFRl
eHR1cmVGb3JtYXQoKSBjb25zdAotewotICAgIHJldHVybiBtVGV4dHVyZUZvcm1hdDsKLX0KLQot
RUdMZW51bSBTdXJmYWNlOjpnZXRUZXh0dXJlVGFyZ2V0KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bVRleHR1cmVUYXJnZXQ7Ci19Ci0KLXZvaWQgU3VyZmFjZTo6c2V0Qm91bmRUZXh0dXJlKGdsOjpU
ZXh0dXJlMkQgKnRleHR1cmUpCi17Ci0gICAgbVRleHR1cmUgPSB0ZXh0dXJlOwotfQotCi1nbDo6
VGV4dHVyZTJEICpTdXJmYWNlOjpnZXRCb3VuZFRleHR1cmUoKSBjb25zdAotewotICAgIHJldHVy
biBtVGV4dHVyZTsKLX0KLQotRDNERk9STUFUIFN1cmZhY2U6OmdldEZvcm1hdCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1Db25maWctPm1SZW5kZXJUYXJnZXRGb3JtYXQ7Ci19Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCA0MGJkNzAyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJFR0wvU3VyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFN1cmZhY2UuaDogRGVmaW5lcyB0aGUgZWdsOjpTdXJm
YWNlIGNsYXNzLCByZXByZXNlbnRpbmcgYSBkcmF3aW5nIHN1cmZhY2UKLS8vIHN1Y2ggYXMgdGhl
IGNsaWVudCBhcmVhIG9mIGEgd2luZG93LCBpbmNsdWRpbmcgYW55IGJhY2sgYnVmZmVycy4KLS8v
IEltcGxlbWVudHMgRUdMU3VyZmFjZSBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbRUdMIDEu
NF0gc2VjdGlvbiAyLjIgcGFnZSAzLgotCi0jaWZuZGVmIElOQ0xVREVfU1VSRkFDRV9IXwotI2Rl
ZmluZSBJTkNMVURFX1NVUkZBQ0VfSF8KLQotI2RlZmluZSBFR0xBUEkKLSNpbmNsdWRlIDxFR0wv
ZWdsLmg+Ci0jaW5jbHVkZSA8ZDNkOS5oPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMu
aCIKLQotbmFtZXNwYWNlIGdsCi17Ci1jbGFzcyBUZXh0dXJlMkQ7Ci19Ci0KLW5hbWVzcGFjZSBl
Z2wKLXsKLWNsYXNzIERpc3BsYXk7Ci1jbGFzcyBDb25maWc7Ci0KLWNsYXNzIFN1cmZhY2UKLXsK
LSAgcHVibGljOgotICAgIFN1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwgY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZywgSFdORCB3aW5kb3csIEVHTGludCBwb3N0U3ViQnVmZmVyU3VwcG9ydGVkKTsK
LSAgICBTdXJmYWNlKERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcs
IEhBTkRMRSBzaGFyZUhhbmRsZSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0LCBFR0xlbnVt
IHRleHR1cmVGb3JtYXQsIEVHTGVudW0gdGV4dHVyZVRhcmdldCk7Ci0KLSAgICB+U3VyZmFjZSgp
OwotCi0gICAgYm9vbCBpbml0aWFsaXplKCk7Ci0gICAgdm9pZCByZWxlYXNlKCk7Ci0gICAgYm9v
bCByZXNldFN3YXBDaGFpbigpOwotCi0gICAgSFdORCBnZXRXaW5kb3dIYW5kbGUoKTsKLSAgICBi
b29sIHN3YXAoKTsKLSAgICBib29sIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBF
R0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpOwotCi0gICAgdmlydHVhbCBFR0xpbnQgZ2V0V2lk
dGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEVHTGludCBnZXRIZWlnaHQoKSBjb25zdDsKLQotICAg
IHZpcnR1YWwgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0OwotCi0gICAg
dmlydHVhbCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0UmVuZGVyVGFyZ2V0KCk7Ci0gICAgdmlydHVh
bCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0RGVwdGhTdGVuY2lsKCk7Ci0gICAgdmlydHVhbCBJRGly
ZWN0M0RUZXh0dXJlOSAqZ2V0T2Zmc2NyZWVuVGV4dHVyZSgpOwotCi0gICAgSEFORExFIGdldFNo
YXJlSGFuZGxlKCkgeyByZXR1cm4gbVNoYXJlSGFuZGxlOyB9Ci0KLSAgICB2b2lkIHNldFN3YXBJ
bnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpOwotICAgIGJvb2wgY2hlY2tGb3JPdXRPZkRhdGVTd2Fw
Q2hhaW4oKTsgICAvLyBSZXR1cm5zIHRydWUgaWYgc3dhcGNoYWluIGNoYW5nZWQgZHVlIHRvIHJl
c2l6ZSBvciBpbnRlcnZhbCB1cGRhdGUKLQotICAgIHZpcnR1YWwgRUdMZW51bSBnZXRUZXh0dXJl
Rm9ybWF0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBFR0xlbnVtIGdldFRleHR1cmVUYXJnZXQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIEQzREZPUk1BVCBnZXRGb3JtYXQoKSBjb25zdDsKLQotICAgIHZp
cnR1YWwgdm9pZCBzZXRCb3VuZFRleHR1cmUoZ2w6OlRleHR1cmUyRCAqdGV4dHVyZSk7Ci0gICAg
dmlydHVhbCBnbDo6VGV4dHVyZTJEICpnZXRCb3VuZFRleHR1cmUoKSBjb25zdDsKLQotcHJpdmF0
ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU3VyZmFjZSk7Ci0KLSAgICBEaXNwbGF5
ICpjb25zdCBtRGlzcGxheTsKLSAgICBJRGlyZWN0M0RTd2FwQ2hhaW45ICptU3dhcENoYWluOwot
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICptQmFja0J1ZmZlcjsKLSAgICBJRGlyZWN0M0RTdXJmYWNl
OSAqbURlcHRoU3RlbmNpbDsKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSogbVJlbmRlclRhcmdldDsK
LSAgICBJRGlyZWN0M0RUZXh0dXJlOSogbU9mZnNjcmVlblRleHR1cmU7Ci0KLSAgICBIQU5ETEUg
bVNoYXJlSGFuZGxlOwotCi0gICAgdm9pZCBzdWJjbGFzc1dpbmRvdygpOwotICAgIHZvaWQgdW5z
dWJjbGFzc1dpbmRvdygpOwotICAgIGJvb2wgcmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJX
aWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpOwotICAgIGJvb2wgc3dhcFJlY3QoRUdMaW50IHgs
IEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpOwotICAgIHN0YXRpYyBEV09S
RCBjb252ZXJ0SW50ZXJ2YWwoRUdMaW50IGludGVydmFsKTsKLQotICAgIGNvbnN0IEhXTkQgbVdp
bmRvdzsgICAgICAgICAgICAvLyBXaW5kb3cgdGhhdCB0aGUgc3VyZmFjZSBpcyBjcmVhdGVkIGZv
ci4KLSAgICBib29sIG1XaW5kb3dTdWJjbGFzc2VkOyAgICAgICAgLy8gSW5kaWNhdGVzIHdoZXRo
ZXIgd2Ugc3VjY2Vzc2Z1bGx5IHN1YmNsYXNzZWQgbVdpbmRvdyBmb3IgV01fUkVTSVpFIGhvb2tp
bmcKLSAgICBjb25zdCBlZ2w6OkNvbmZpZyAqbUNvbmZpZzsgICAgLy8gRUdMIGNvbmZpZyBzdXJm
YWNlIHdhcyBjcmVhdGVkIHdpdGgKLSAgICBFR0xpbnQgbUhlaWdodDsgICAgICAgICAgICAgICAg
Ly8gSGVpZ2h0IG9mIHN1cmZhY2UKLSAgICBFR0xpbnQgbVdpZHRoOyAgICAgICAgICAgICAgICAg
Ly8gV2lkdGggb2Ygc3VyZmFjZQotLy8gIEVHTGludCBob3Jpem9udGFsUmVzb2x1dGlvbjsgICAv
LyBIb3Jpem9udGFsIGRvdCBwaXRjaAotLy8gIEVHTGludCB2ZXJ0aWNhbFJlc29sdXRpb247ICAg
ICAvLyBWZXJ0aWNhbCBkb3QgcGl0Y2gKLS8vICBFR0xCb29sZWFuIGxhcmdlc3RQQnVmZmVyOyAg
ICAgLy8gSWYgdHJ1ZSwgY3JlYXRlIGxhcmdlc3QgcGJ1ZmZlciBwb3NzaWJsZQotLy8gIEVHTEJv
b2xlYW4gbWlwbWFwVGV4dHVyZTsgICAgICAvLyBUcnVlIGlmIHRleHR1cmUgaGFzIG1pcG1hcHMK
LS8vICBFR0xpbnQgbWlwbWFwTGV2ZWw7ICAgICAgICAgICAgLy8gTWlwbWFwIGxldmVsIHRvIHJl
bmRlciB0bwotLy8gIEVHTGVudW0gbXVsdGlzYW1wbGVSZXNvbHZlOyAgICAvLyBNdWx0aXNhbXBs
ZSByZXNvbHZlIGJlaGF2aW9yCi0gICAgRUdMaW50IG1QaXhlbEFzcGVjdFJhdGlvOyAgICAgIC8v
IERpc3BsYXkgYXNwZWN0IHJhdGlvCi0gICAgRUdMZW51bSBtUmVuZGVyQnVmZmVyOyAgICAgICAg
IC8vIFJlbmRlciBidWZmZXIKLSAgICBFR0xlbnVtIG1Td2FwQmVoYXZpb3I7ICAgICAgICAgLy8g
QnVmZmVyIHN3YXAgYmVoYXZpb3IKLSAgICBFR0xlbnVtIG1UZXh0dXJlRm9ybWF0OyAgICAgICAg
Ly8gRm9ybWF0IG9mIHRleHR1cmU6IFJHQiwgUkdCQSwgb3Igbm8gdGV4dHVyZQotICAgIEVHTGVu
dW0gbVRleHR1cmVUYXJnZXQ7ICAgICAgICAvLyBUeXBlIG9mIHRleHR1cmU6IDJEIG9yIG5vIHRl
eHR1cmUKLS8vICBFR0xlbnVtIHZnQWxwaGFGb3JtYXQ7ICAgICAgICAgLy8gQWxwaGEgZm9ybWF0
IGZvciBPcGVuVkcKLS8vICBFR0xlbnVtIHZnQ29sb3JTcGFjZTsgICAgICAgICAgLy8gQ29sb3Ig
c3BhY2UgZm9yIE9wZW5WRwotICAgIEVHTGludCBtU3dhcEludGVydmFsOwotICAgIEVHTGludCBt
UG9zdFN1YkJ1ZmZlclN1cHBvcnRlZDsKLSAgICAKLSAgICBEV09SRCBtUHJlc2VudEludGVydmFs
OwotICAgIGJvb2wgbVByZXNlbnRJbnRlcnZhbERpcnR5OwotICAgIGdsOjpUZXh0dXJlMkQgKm1U
ZXh0dXJlOwotfTsKLX0KLQotI2VuZGlmICAgLy8gSU5DTFVERV9TVVJGQUNFX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDU2NGU2MDUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4MSArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBsaWJFR0wuY3BwOiBJbXBsZW1lbnRzIHRoZSBl
eHBvcnRlZCBFR0wgZnVuY3Rpb25zLgotCi0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotCi0jaW5jbHVk
ZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5jbHVkZSAiY29tbW9uL3ZlcnNpb24uaCIKLSNpbmNsdWRl
ICJsaWJHTEVTdjIvQ29udGV4dC5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCi0K
LSNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgotI2luY2x1ZGUgImxpYkVHTC9EaXNwbGF5LmgiCi0K
LQotYm9vbCB2YWxpZGF0ZURpc3BsYXkoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQotewotICAgIGlm
IChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
KEVHTF9CQURfRElTUExBWSwgZmFsc2UpOwotICAgIH0KLQotICAgIGlmICghZGlzcGxheS0+aXNJ
bml0aWFsaXplZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9OT1RfSU5JVElB
TElaRUQsIGZhbHNlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB2YWxp
ZGF0ZUNvbmZpZyhlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIEVHTENvbmZpZyBjb25maWcpCi17Ci0g
ICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpCi0gICAgewotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFkaXNwbGF5LT5pc1ZhbGlkQ29uZmlnKGNvbmZpZykp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9DT05GSUcsIGZhbHNlKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB2YWxpZGF0ZUNvbnRleHQoZWdsOjpE
aXNwbGF5ICpkaXNwbGF5LCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICBpZiAoIXZhbGlk
YXRlRGlzcGxheShkaXNwbGF5KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAoIWRpc3BsYXktPmlzVmFsaWRDb250ZXh0KGNvbnRleHQpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQ09OVEVYVCwgZmFsc2UpOwotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIHZhbGlkYXRlU3VyZmFjZShlZ2w6OkRpc3BsYXkgKmRp
c3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKLXsKLSAgICBpZiAoIXZhbGlkYXRlRGlzcGxh
eShkaXNwbGF5KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBp
ZiAoIWRpc3BsYXktPmlzVmFsaWRTdXJmYWNlKHN1cmZhY2UpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yKEVHTF9CQURfU1VSRkFDRSwgZmFsc2UpOwotICAgIH0KLQotICAgIHJldHVybiB0
cnVlOwotfQotCi1leHRlcm4gIkMiCi17Ci1FR0xpbnQgX19zdGRjYWxsIGVnbEdldEVycm9yKHZv
aWQpCi17Ci0gICAgRVZFTlQoIigpIik7Ci0KLSAgICBFR0xpbnQgZXJyb3IgPSBlZ2w6OmdldEN1
cnJlbnRFcnJvcigpOwotCi0gICAgaWYgKGVycm9yICE9IEVHTF9TVUNDRVNTKQotICAgIHsKLSAg
ICAgICAgZWdsOjpzZXRDdXJyZW50RXJyb3IoRUdMX1NVQ0NFU1MpOwotICAgIH0KLQotICAgIHJl
dHVybiBlcnJvcjsKLX0KLQotRUdMRGlzcGxheSBfX3N0ZGNhbGwgZWdsR2V0RGlzcGxheShFR0xO
YXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5X2lkKQotewotICAgIEVWRU5UKCIoRUdMTmF0aXZlRGlz
cGxheVR5cGUgZGlzcGxheV9pZCA9IDB4JTAuOHApIiwgZGlzcGxheV9pZCk7Ci0KLSAgICB0cnkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlZ2w6OkRpc3BsYXk6OmdldERpc3BsYXkoZGlzcGxheV9p
ZCk7Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fRElTUExBWSk7Ci0gICAgfQotfQotCi1F
R0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xJbml0aWFsaXplKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQg
Km1ham9yLCBFR0xpbnQgKm1pbm9yKQotewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAw
eCUwLjhwLCBFR0xpbnQgKm1ham9yID0gMHglMC44cCwgRUdMaW50ICptaW5vciA9IDB4JTAuOHAp
IiwKLSAgICAgICAgICBkcHksIG1ham9yLCBtaW5vcik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAg
ICAgIGlmIChkcHkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX0RJU1BMQVksIEVHTF9GQUxTRSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihk
cHkpOwotCi0gICAgICAgIGlmICghZGlzcGxheS0+aW5pdGlhbGl6ZSgpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgRUdMX0ZBTFNFKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChtYWpvcikgKm1ham9yID0gMTsKLSAgICAgICAgaWYg
KG1pbm9yKSAqbWlub3IgPSA0OwotCi0gICAgICAgIHJldHVybiBzdWNjZXNzKEVHTF9UUlVFKTsK
LSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0gICAgfQotfQotCi1FR0xCb29sZWFu
IF9fc3RkY2FsbCBlZ2xUZXJtaW5hdGUoRUdMRGlzcGxheSBkcHkpCi17Ci0gICAgRVZFTlQoIihF
R0xEaXNwbGF5IGRweSA9IDB4JTAuOHApIiwgZHB5KTsKLQotICAgIHRyeQotICAgIHsKLSAgICAg
ICAgaWYgKGRweSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEVHTF9CQURfRElTUExBWSwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRw
eSk7Ci0KLSAgICAgICAgZGlzcGxheS0+dGVybWluYXRlKCk7Ci0KLSAgICAgICAgcmV0dXJuIHN1
Y2Nlc3MoRUdMX1RSVUUpOwotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKLSAgICB9
Ci19Ci0KLWNvbnN0IGNoYXIgKl9fc3RkY2FsbCBlZ2xRdWVyeVN0cmluZyhFR0xEaXNwbGF5IGRw
eSwgRUdMaW50IG5hbWUpCi17Ci0gICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTGludCBuYW1lID0gJWQpIiwgZHB5LCBuYW1lKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAg
ICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5
KTsKLQotICAgICAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKG5h
bWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVHTF9DTElFTlRfQVBJUzoKLSAgICAgICAg
ICAgIHJldHVybiBzdWNjZXNzKCJPcGVuR0xfRVMiKTsKLSAgICAgICAgICBjYXNlIEVHTF9FWFRF
TlNJT05TOgotICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoZGlzcGxheS0+Z2V0RXh0ZW5zaW9u
U3RyaW5nKCkpOwotICAgICAgICAgIGNhc2UgRUdMX1ZFTkRPUjoKLSAgICAgICAgICAgIHJldHVy
biBzdWNjZXNzKGRpc3BsYXktPmdldFZlbmRvclN0cmluZygpKTsKLSAgICAgICAgICBjYXNlIEVH
TF9WRVJTSU9OOgotICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoIjEuNCAoQU5HTEUgIiBWRVJT
SU9OX1NUUklORyAiKSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9C
QURfUEFSQU1FVEVSLCAoY29uc3QgY2hhciopTlVMTCk7Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCAo
Y29uc3QgY2hhciopTlVMTCk7Ci0gICAgfQotfQotCi1FR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xH
ZXRDb25maWdzKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgKmNvbmZpZ3MsIEVHTGludCBjb25m
aWdfc2l6ZSwgRUdMaW50ICpudW1fY29uZmlnKQotewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBk
cHkgPSAweCUwLjhwLCBFR0xDb25maWcgKmNvbmZpZ3MgPSAweCUwLjhwLCAiCi0gICAgICAgICAg
IkVHTGludCBjb25maWdfc2l6ZSA9ICVkLCBFR0xpbnQgKm51bV9jb25maWcgPSAweCUwLjhwKSIs
Ci0gICAgICAgICAgZHB5LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7Ci0KLSAg
ICB0cnkKLSAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0
PGVnbDo6RGlzcGxheSo+KGRweSk7Ci0KLSAgICAgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlz
cGxheSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIW51bV9jb25maWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNvbnN0IEVHTGludCBhdHRyaWJMaXN0W10gPSAgICB7RUdMX05PTkV9OwotCi0gICAg
ICAgIGlmICghZGlzcGxheS0+Z2V0Q29uZmlncyhjb25maWdzLCBhdHRyaWJMaXN0LCBjb25maWdf
c2l6ZSwgbnVtX2NvbmZpZykpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihF
R0xfQkFEX0FUVFJJQlVURSwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biBzdWNjZXNzKEVHTF9UUlVFKTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0g
ICAgfQotfQotCi1FR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xDaG9vc2VDb25maWcoRUdMRGlzcGxh
eSBkcHksIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QsIEVHTENvbmZpZyAqY29uZmlncywgRUdM
aW50IGNvbmZpZ19zaXplLCBFR0xpbnQgKm51bV9jb25maWcpCi17Ci0gICAgRVZFTlQoIihFR0xE
aXNwbGF5IGRweSA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhw
LCAiCi0gICAgICAgICAgIkVHTENvbmZpZyAqY29uZmlncyA9IDB4JTAuOHAsIEVHTGludCBjb25m
aWdfc2l6ZSA9ICVkLCBFR0xpbnQgKm51bV9jb25maWcgPSAweCUwLjhwKSIsCi0gICAgICAgICAg
ZHB5LCBhdHRyaWJfbGlzdCwgY29uZmlncywgY29uZmlnX3NpemUsIG51bV9jb25maWcpOwotCi0g
ICAgdHJ5Ci0gICAgewotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2Fz
dDxlZ2w6OkRpc3BsYXkqPihkcHkpOwotCi0gICAgICAgIGlmICghdmFsaWRhdGVEaXNwbGF5KGRp
c3BsYXkpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCFudW1fY29uZmlnKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9GQUxTRSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjb25zdCBFR0xpbnQgYXR0cmliTGlzdFtdID0gICAge0VHTF9OT05FfTsKLQotICAg
ICAgICBpZiAoIWF0dHJpYl9saXN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBhdHRyaWJfbGlz
dCA9IGF0dHJpYkxpc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICBkaXNwbGF5LT5nZXRDb25maWdz
KGNvbmZpZ3MsIGF0dHJpYl9saXN0LCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7Ci0KLSAgICAg
ICAgcmV0dXJuIHN1Y2Nlc3MoRUdMX1RSVUUpOwotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZB
TFNFKTsKLSAgICB9Ci19Ci0KLUVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbEdldENvbmZpZ0F0dHJp
YihFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSwgRUdM
aW50ICp2YWx1ZSkKLXsKLSAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdM
Q29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAlZCwgRUdMaW50ICp2
YWx1ZSA9IDB4JTAuOHApIiwKLSAgICAgICAgICBkcHksIGNvbmZpZywgYXR0cmlidXRlLCB2YWx1
ZSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0
YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Ci0KLSAgICAgICAgaWYgKCF2YWxpZGF0ZUNv
bmZpZyhkaXNwbGF5LCBjb25maWcpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRUdM
X0ZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFkaXNwbGF5LT5nZXRDb25maWdBdHRy
aWIoY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfRkFMU0UpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHN1Y2Nlc3MoRUdMX1RSVUUpOwotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdM
X0ZBTFNFKTsKLSAgICB9Ci19Ci0KLUVHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0ZVdpbmRv
d1N1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KQotewotICAgIEVWRU5UKCIoRUdM
RGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgRUdMTmF0
aXZlV2luZG93VHlwZSB3aW4gPSAweCUwLjhwLCAiCi0gICAgICAgICAgImNvbnN0IEVHTGludCAq
YXR0cmliX2xpc3QgPSAweCUwLjhwKSIsIGRweSwgY29uZmlnLCB3aW4sIGF0dHJpYl9saXN0KTsK
LQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGlj
X2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKLQotICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmln
KGRpc3BsYXksIGNvbmZpZykpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBFR0xfTk9f
U1VSRkFDRTsKLSAgICAgICAgfQotCi0gICAgICAgIEhXTkQgd2luZG93ID0gKEhXTkQpd2luOwot
Ci0gICAgICAgIGlmICghSXNXaW5kb3cod2luZG93KSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEVHTF9CQURfTkFUSVZFX1dJTkRPVywgRUdMX05PX1NVUkZBQ0UpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0ZVdpbmRvd1N1cmZhY2Uod2lu
ZG93LCBjb25maWcsIGF0dHJpYl9saXN0KTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19T
VVJGQUNFKTsKLSAgICB9Ci19Ci0KLUVHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0ZVBidWZm
ZXJTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQg
KmF0dHJpYl9saXN0KQotewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBF
R0xDb25maWcgY29uZmlnID0gMHglMC44cCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9IDB4
JTAuOHApIiwKLSAgICAgICAgICBkcHksIGNvbmZpZywgYXR0cmliX2xpc3QpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6
OkRpc3BsYXkqPihkcHkpOwotCi0gICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxheSwg
Y29uZmlnKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0ZU9mZnNjcmVlblN1cmZh
Y2UoY29uZmlnLCBOVUxMLCBhdHRyaWJfbGlzdCk7Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xf
Tk9fU1VSRkFDRSk7Ci0gICAgfQotfQotCi1FR0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xDcmVhdGVQ
aXhtYXBTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xOYXRpdmVQ
aXhtYXBUeXBlIHBpeG1hcCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKLXsKLSAgICBFVkVO
VCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAs
IEVHTE5hdGl2ZVBpeG1hcFR5cGUgcGl4bWFwID0gMHglMC44cCwgIgotICAgICAgICAgICJjb25z
dCBFR0xpbnQgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLCBkcHksIGNvbmZpZywgcGl4bWFwLCBh
dHRyaWJfbGlzdCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxheSAqZGlz
cGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Ci0KLSAgICAgICAgaWYgKCF2
YWxpZGF0ZUNvbmZpZyhkaXNwbGF5LCBjb25maWcpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gRUdMX05PX1NVUkZBQ0U7Ci0gICAgICAgIH0KLQotICAgICAgICBVTklNUExFTUVOVEVE
KCk7ICAgLy8gRklYTUUKLQotICAgICAgICByZXR1cm4gc3VjY2VzcyhFR0xfTk9fU1VSRkFDRSk7
Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7Ci0gICAgfQotfQotCi1FR0xC
b29sZWFuIF9fc3RkY2FsbCBlZ2xEZXN0cm95U3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMU3Vy
ZmFjZSBzdXJmYWNlKQotewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBF
R0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwKSIsIGRweSwgc3VyZmFjZSk7Ci0KLSAgICB0cnkK
LSAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6
RGlzcGxheSo+KGRweSk7Ci0gICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRp
Y19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOwotCi0gICAgICAgIGlmICghdmFsaWRhdGVT
dXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05P
X1NVUkZBQ0UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1NV
UkZBQ0UsIEVHTF9GQUxTRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkaXNwbGF5LT5kZXN0cm95
U3VyZmFjZSgoZWdsOjpTdXJmYWNlKilzdXJmYWNlKTsKLQotICAgICAgICByZXR1cm4gc3VjY2Vz
cyhFR0xfVFJVRSk7Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwotICAgIH0KLX0K
LQotRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsUXVlcnlTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBF
R0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCi17Ci0g
ICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9
IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAlZCwgRUdMaW50ICp2YWx1ZSA9IDB4JTAuOHAp
IiwKLSAgICAgICAgICBkcHksIHN1cmZhY2UsIGF0dHJpYnV0ZSwgdmFsdWUpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6
OkRpc3BsYXkqPihkcHkpOwotICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoZWds
OjpTdXJmYWNlKilzdXJmYWNlOwotCi0gICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3Bs
YXksIGVnbFN1cmZhY2UpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1NVUkZBQ0UsIEVHTF9G
QUxTRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkKLSAgICAgICAg
ewotICAgICAgICAgIGNhc2UgRUdMX1ZHX0FMUEhBX0ZPUk1BVDoKLSAgICAgICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsgICAvLyBGSVhNRQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBFR0xfVkdfQ09MT1JTUEFDRToKLSAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBG
SVhNRQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFR0xfQ09ORklHX0lEOgot
ICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIEVHTF9IRUlHSFQ6Ci0gICAgICAgICAgICAqdmFsdWUgPSBlZ2xT
dXJmYWNlLT5nZXRIZWlnaHQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ug
RUdMX0hPUklaT05UQUxfUkVTT0xVVElPTjoKLSAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsg
ICAvLyBGSVhNRQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFR0xfTEFSR0VT
VF9QQlVGRkVSOgotICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVHTF9NSVBNQVBfVEVYVFVSRToKLSAgICAg
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSBFR0xfTUlQTUFQX0xFVkVMOgotICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOyAgIC8vIEZJWE1FCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVHTF9N
VUxUSVNBTVBMRV9SRVNPTFZFOgotICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJ
WE1FCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVHTF9QSVhFTF9BU1BFQ1Rf
UkFUSU86Ci0gICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRUdMX1JFTkRFUl9CVUZGRVI6Ci0gICAgICAgICAg
ICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgRUdMX1NXQVBfQkVIQVZJT1I6Ci0gICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
ICAgLy8gRklYTUUKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRUdMX1RFWFRV
UkVfRk9STUFUOgotICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFX1RBUkdFVDoKLSAgICAg
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSBFR0xfVkVSVElDQUxfUkVTT0xVVElPTjoKLSAgICAgICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsgICAvLyBGSVhNRQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBFR0xfV0lEVEg6Ci0gICAgICAgICAgICAqdmFsdWUgPSBlZ2xTdXJmYWNlLT5nZXRXaWR0aCgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFR0xfUE9TVF9TVUJfQlVGRkVS
X1NVUFBPUlRFRF9OVjoKLSAgICAgICAgICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmlzUG9zdFN1
YkJ1ZmZlclN1cHBvcnRlZCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX0ZBTFNF
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBzdWNjZXNzKEVHTF9UUlVFKTsKLSAgICB9
Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
KEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0gICAgfQotfQotCi1FR0xCb29sZWFuIF9fc3Rk
Y2FsbCBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZh
Y2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQotewotICAgIFRSQUNF
KCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhw
LCBFR0xpbnQgYXR0cmlidXRlID0gJWQsIHZvaWQgKip2YWx1ZSA9IDB4JTAuOHApIiwKLSAgICAg
ICAgICBkcHksIHN1cmZhY2UsIGF0dHJpYnV0ZSwgdmFsdWUpOwotCi0gICAgdHJ5Ci0gICAgewot
ICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkq
PihkcHkpOwotICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoZWdsOjpTdXJmYWNl
KilzdXJmYWNlOwotCi0gICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1
cmZhY2UpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkKLSAgICAgICAgewotICAgICAg
ICAgIGNhc2UgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRToKLSAgICAgICAg
ICAgICp2YWx1ZSA9ICh2b2lkKikgZWdsU3VyZmFjZS0+Z2V0U2hhcmVIYW5kbGUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gc3VjY2VzcyhFR0xfVFJVRSk7Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0Up
OwotICAgIH0KLX0KLQotRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsQmluZEFQSShFR0xlbnVtIGFw
aSkKLXsKLSAgICBFVkVOVCgiKEVHTGVudW0gYXBpID0gMHglWCkiLCBhcGkpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBzd2l0Y2ggKGFwaSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2Ug
RUdMX09QRU5HTF9BUEk6Ci0gICAgICAgICAgY2FzZSBFR0xfT1BFTlZHX0FQSToKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsgICAvLyBOb3Qg
c3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24KLSAgICAgICAgICBjYXNlIEVHTF9PUEVO
R0xfRVNfQVBJOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGVnbDo6c2V0Q3VycmVudEFQSShhcGkpOwotCi0gICAgICAgIHJldHVy
biBzdWNjZXNzKEVHTF9UUlVFKTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0g
ICAgfQotfQotCi1FR0xlbnVtIF9fc3RkY2FsbCBlZ2xRdWVyeUFQSSh2b2lkKQotewotICAgIEVW
RU5UKCIoKSIpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBFR0xlbnVtIEFQSSA9IGVnbDo6
Z2V0Q3VycmVudEFQSSgpOwotCi0gICAgICAgIHJldHVybiBzdWNjZXNzKEFQSSk7Ci0gICAgfQot
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihF
R0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwotICAgIH0KLX0KLQotRUdMQm9vbGVhbiBfX3N0ZGNh
bGwgZWdsV2FpdENsaWVudCh2b2lkKQotewotICAgIEVWRU5UKCIoKSIpOwotCi0gICAgdHJ5Ci0g
ICAgewotICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKLQotICAgICAgICByZXR1
cm4gc3VjY2VzcygwKTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0gICAgfQot
fQotCi1FR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGhyZWFkKHZvaWQpCi17Ci0gICAg
RVZFTlQoIigpIik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KEVH
TF9OT19ESVNQTEFZLCBFR0xfTk9fQ09OVEVYVCwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJG
QUNFKTsKLQotICAgICAgICByZXR1cm4gc3VjY2VzcyhFR0xfVFJVRSk7Ci0gICAgfQotICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFE
X0FMTE9DLCBFR0xfRkFMU0UpOwotICAgIH0KLX0KLQotRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWds
Q3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gYnVm
dHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdM
aW50ICphdHRyaWJfbGlzdCkKLXsKLSAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44
cCwgRUdMZW51bSBidWZ0eXBlID0gMHglWCwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciA9IDB4JTAu
OHAsICIKLSAgICAgICAgICAiRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIGNvbnN0IEVHTGlu
dCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsCi0gICAgICAgICAgZHB5LCBidWZ0eXBlLCBidWZm
ZXIsIGNvbmZpZywgYXR0cmliX2xpc3QpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOwotCi0g
ICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxheSwgY29uZmlnKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKGJ1ZnR5cGUgIT0gRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSB8fCAh
YnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJB
TUVURVIsIEVHTF9OT19TVVJGQUNFKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBkaXNw
bGF5LT5jcmVhdGVPZmZzY3JlZW5TdXJmYWNlKGNvbmZpZywgKEhBTkRMRSlidWZmZXIsIGF0dHJp
Yl9saXN0KTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19TVVJGQUNFKTsKLSAgICB9Ci19
Ci0KLUVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFN1cmZhY2VBdHRyaWIoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50IHZhbHVlKQotewot
ICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2Ug
PSAweCUwLjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQsIEVHTGludCB2YWx1ZSA9ICVkKSIsCi0g
ICAgICAgICAgZHB5LCBzdXJmYWNlLCBhdHRyaWJ1dGUsIHZhbHVlKTsKLQotICAgIHRyeQotICAg
IHsKLSAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNw
bGF5Kj4oZHB5KTsKLSAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nh
c3Q8ZWdsOjpTdXJmYWNlKj4oc3VyZmFjZSk7Ci0KLSAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZh
Y2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7Ci0gICAgICAgIH0KLQotICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklY
TUUKLQotICAgICAgICByZXR1cm4gc3VjY2VzcyhFR0xfVFJVRSk7Ci0gICAgfQotICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FM
TE9DLCBFR0xfRkFMU0UpOwotICAgIH0KLX0KLQotRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsQmlu
ZFRleEltYWdlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZm
ZXIpCi17Ci0gICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ug
c3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBidWZmZXIgPSAlZCkiLCBkcHksIHN1cmZhY2UsIGJ1
ZmZlcik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9
IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Ci0gICAgICAgIGVnbDo6U3VyZmFjZSAq
ZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOwotCi0gICAg
ICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGJ1ZmZlciAhPSBFR0xfQkFDS19CVUZGRVIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBlcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFIHx8IGVnbFN1cmZhY2UtPmdldFdpbmRv
d0hhbmRsZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9T
VVJGQUNFLCBFR0xfRkFMU0UpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVnbFN1cmZhY2Ut
PmdldEJvdW5kVGV4dHVyZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3Io
RUdMX0JBRF9BQ0NFU1MsIEVHTF9GQUxTRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZWds
U3VyZmFjZS0+Z2V0VGV4dHVyZUZvcm1hdCgpID09IEVHTF9OT19URVhUVVJFKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX0ZBTFNFKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghZ2xCaW5kVGV4SW1hZ2UoZWdsU3VyZmFjZSkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xfRkFMU0Up
OwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoRUdMX1RSVUUpOwotICAgIH0K
LSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3Io
RUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKLSAgICB9Ci19Ci0KLUVHTEJvb2xlYW4gX19zdGRj
YWxsIGVnbFJlbGVhc2VUZXhJbWFnZShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNl
LCBFR0xpbnQgYnVmZmVyKQotewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhw
LCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xpbnQgYnVmZmVyID0gJWQpIiwgZHB5
LCBzdXJmYWNlLCBidWZmZXIpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOwotICAgICAgICBl
Z2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihzdXJm
YWNlKTsKLQotICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNl
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChidWZmZXIgIT0gRUdMX0JBQ0tfQlVGRkVSKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9GQUxTRSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSB8fCBlZ2xTdXJm
YWNlLT5nZXRXaW5kb3dIYW5kbGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChlZ2xTdXJmYWNlLT5nZXRUZXh0dXJlRm9ybWF0KCkgPT0gRUdMX05PX1RFWFRVUkUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xfRkFMU0Up
OwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OlRleHR1cmUyRCAqdGV4dHVyZSA9IGVnbFN1cmZh
Y2UtPmdldEJvdW5kVGV4dHVyZSgpOwotCi0gICAgICAgIGlmICh0ZXh0dXJlKQotICAgICAgICB7
Ci0gICAgICAgICAgICB0ZXh0dXJlLT5yZWxlYXNlVGV4SW1hZ2UoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBzdWNjZXNzKEVHTF9UUlVFKTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVH
TF9GQUxTRSk7Ci0gICAgfQotfQotCi1FR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xTd2FwSW50ZXJ2
YWwoRUdMRGlzcGxheSBkcHksIEVHTGludCBpbnRlcnZhbCkKLXsKLSAgICBFVkVOVCgiKEVHTERp
c3BsYXkgZHB5ID0gMHglMC44cCwgRUdMaW50IGludGVydmFsID0gJWQpIiwgZHB5LCBpbnRlcnZh
bCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0
YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Ci0KLSAgICAgICAgaWYgKCF2YWxpZGF0ZURp
c3BsYXkoZGlzcGxheSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7
Ci0gICAgICAgIH0KLQotICAgICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdfc3VyZmFjZSA9IHN0YXRp
Y19jYXN0PGVnbDo6U3VyZmFjZSo+KGVnbDo6Z2V0Q3VycmVudERyYXdTdXJmYWNlKCkpOwotCi0g
ICAgICAgIGlmIChkcmF3X3N1cmZhY2UgPT0gTlVMTCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgZHJhd19zdXJmYWNlLT5zZXRTd2FwSW50ZXJ2YWwoaW50ZXJ2YWwpOwot
Ci0gICAgICAgIHJldHVybiBzdWNjZXNzKEVHTF9UUlVFKTsKLSAgICB9Ci0gICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0Ms
IEVHTF9GQUxTRSk7Ci0gICAgfQotfQotCi1FR0xDb250ZXh0IF9fc3RkY2FsbCBlZ2xDcmVhdGVD
b250ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xDb250ZXh0IHNoYXJl
X2NvbnRleHQsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpCi17Ci0gICAgRVZFTlQoIihFR0xE
aXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xDb250
ZXh0IHNoYXJlX2NvbnRleHQgPSAweCUwLjhwLCAiCi0gICAgICAgICAgImNvbnN0IEVHTGludCAq
YXR0cmliX2xpc3QgPSAweCUwLjhwKSIsIGRweSwgY29uZmlnLCBzaGFyZV9jb250ZXh0LCBhdHRy
aWJfbGlzdCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIC8vIEdldCB0aGUgcmVxdWVzdGVk
IGNsaWVudCB2ZXJzaW9uIChkZWZhdWx0IGlzIDEpIGFuZCBjaGVjayBpdCBpcyB0d28uCi0gICAg
ICAgIEVHTGludCBjbGllbnRfdmVyc2lvbiA9IDE7Ci0gICAgICAgIGJvb2wgcmVzZXRfbm90aWZp
Y2F0aW9uID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgcm9idXN0X2FjY2VzcyA9IGZhbHNlOwotCi0g
ICAgICAgIGlmIChhdHRyaWJfbGlzdCkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChjb25z
dCBFR0xpbnQqIGF0dHJpYnV0ZSA9IGF0dHJpYl9saXN0OyBhdHRyaWJ1dGVbMF0gIT0gRUdMX05P
TkU7IGF0dHJpYnV0ZSArPSAyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN3aXRj
aCAoYXR0cmlidXRlWzBdKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNh
c2UgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT046Ci0gICAgICAgICAgICAgICAgICAgIGNsaWVu
dF92ZXJzaW9uID0gYXR0cmlidXRlWzFdOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NFU1NfRVhU
OgotICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlWzFdID09IEVHTF9UUlVFKQotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
RUdMX0JBRF9DT05GSUcsIEVHTF9OT19DT05URVhUKTsgICAvLyBVbmltcGxlbWVudGVkCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyByb2J1c3RfYWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVbMV0gIT0g
RUdMX0ZBTFNFKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURf
QVRUUklCVVRFLCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9PUEVOR0xfUkVTRVRfTk9USUZJQ0FU
SU9OX1NUUkFURUdZX0VYVDoKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZVsxXSA9
PSBFR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlc2V0X25vdGlmaWNhdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGF0dHJpYnV0ZVsxXSAhPSBFR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX0NP
TlRFWFQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVU
RSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChjbGllbnRfdmVyc2lvbiAhPSAyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9DT05GSUcsIEVHTF9OT19DT05URVhUKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChzaGFyZV9jb250ZXh0ICYmIHN0YXRpY19jYXN0PGds
OjpDb250ZXh0Kj4oc2hhcmVfY29udGV4dCktPmlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCkg
IT0gcmVzZXRfbm90aWZpY2F0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsK
LQotICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBFR0xfTk9fQ09OVEVYVDsKLSAgICAgICAgfQotCi0gICAg
ICAgIEVHTENvbnRleHQgY29udGV4dCA9IGRpc3BsYXktPmNyZWF0ZUNvbnRleHQoY29uZmlnLCBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KHNoYXJlX2NvbnRleHQpLCByZXNldF9ub3RpZmljYXRp
b24sIHJvYnVzdF9hY2Nlc3MpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICAgICAg
cmV0dXJuIHN1Y2Nlc3MoY29udGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVy
biBlcnJvcihFR0xfQ09OVEVYVF9MT1NULCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgfQotICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFE
X0FMTE9DLCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgfQotfQotCi1FR0xCb29sZWFuIF9fc3RkY2Fs
bCBlZ2xEZXN0cm95Q29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgpCi17Ci0g
ICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHgl
MC44cCkiLCBkcHksIGN0eCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxh
eSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Ci0gICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihjdHgpOwotCi0g
ICAgICAgIGlmICghdmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGN0eCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEVHTF9CQURfQ09OVEVYVCwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGRp
c3BsYXktPmRlc3Ryb3lDb250ZXh0KGNvbnRleHQpOwotCi0gICAgICAgIHJldHVybiBzdWNjZXNz
KEVHTF9UUlVFKTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0gICAgfQotfQot
Ci1FR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xNYWtlQ3VycmVudChFR0xEaXNwbGF5IGRweSwgRUdM
U3VyZmFjZSBkcmF3LCBFR0xTdXJmYWNlIHJlYWQsIEVHTENvbnRleHQgY3R4KQotewotICAgIEVW
RU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIGRyYXcgPSAweCUwLjhw
LCBFR0xTdXJmYWNlIHJlYWQgPSAweCUwLjhwLCBFR0xDb250ZXh0IGN0eCA9IDB4JTAuOHApIiwK
LSAgICAgICAgICBkcHksIGRyYXcsIHJlYWQsIGN0eCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAg
ICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRw
eSk7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQqPihjdHgpOwotICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBkaXNwbGF5LT5n
ZXREZXZpY2UoKTsKLQotICAgICAgICBpZiAoIWRldmljZSB8fCBkaXNwbGF5LT50ZXN0RGV2aWNl
TG9zdCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwbGF5LT5ub3RpZnlEZXZpY2VMb3N0
KCk7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKGRpc3BsYXktPmlzRGV2aWNlTG9zdCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChjdHggIT0gRUdMX05PX0NPTlRFWFQgJiYgIXZhbGlkYXRlQ29udGV4dChkaXNwbGF5
LCBjb250ZXh0KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICgoZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSAmJiAhdmFsaWRh
dGVTdXJmYWNlKGRpc3BsYXksIHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KGRyYXcpKSkgfHwK
LSAgICAgICAgICAgIChyZWFkICE9IEVHTF9OT19TVVJGQUNFICYmICF2YWxpZGF0ZVN1cmZhY2Uo
ZGlzcGxheSwgc3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNlKj4ocmVhZCkpKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChk
cmF3ICE9IHJlYWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAv
LyBGSVhNRQotICAgICAgICB9Ci0KLSAgICAgICAgZWdsOjpzZXRDdXJyZW50RGlzcGxheShkcHkp
OwotICAgICAgICBlZ2w6OnNldEN1cnJlbnREcmF3U3VyZmFjZShkcmF3KTsKLSAgICAgICAgZWds
OjpzZXRDdXJyZW50UmVhZFN1cmZhY2UocmVhZCk7Ci0KLSAgICAgICAgZ2xNYWtlQ3VycmVudChj
b250ZXh0LCBkaXNwbGF5LCBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihkcmF3KSk7Ci0KLSAg
ICAgICAgcmV0dXJuIHN1Y2Nlc3MoRUdMX1RSVUUpOwotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdM
X0ZBTFNFKTsKLSAgICB9Ci19Ci0KLUVHTENvbnRleHQgX19zdGRjYWxsIGVnbEdldEN1cnJlbnRD
b250ZXh0KHZvaWQpCi17Ci0gICAgRVZFTlQoIigpIik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAg
ICAgIEVHTENvbnRleHQgY29udGV4dCA9IGdsR2V0Q3VycmVudENvbnRleHQoKTsKLQotICAgICAg
ICByZXR1cm4gc3VjY2Vzcyhjb250ZXh0KTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19D
T05URVhUKTsKLSAgICB9Ci19Ci0KLUVHTFN1cmZhY2UgX19zdGRjYWxsIGVnbEdldEN1cnJlbnRT
dXJmYWNlKEVHTGludCByZWFkZHJhdykKLXsKLSAgICBFVkVOVCgiKEVHTGludCByZWFkZHJhdyA9
ICVkKSIsIHJlYWRkcmF3KTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKHJlYWRkcmF3
ID09IEVHTF9SRUFEKQotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xTdXJmYWNlIHJlYWQgPSBl
Z2w6OmdldEN1cnJlbnRSZWFkU3VyZmFjZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3Mo
cmVhZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocmVhZGRyYXcgPT0gRUdMX0RSQVcp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEVHTFN1cmZhY2UgZHJhdyA9IGVnbDo6Z2V0Q3VycmVu
dERyYXdTdXJmYWNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3VjY2VzcyhkcmF3KTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihF
R0xfQkFEX1BBUkFNRVRFUiwgRUdMX05PX1NVUkZBQ0UpOwotICAgICAgICB9Ci0gICAgfQotICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xf
QkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7Ci0gICAgfQotfQotCi1FR0xEaXNwbGF5IF9fc3Rk
Y2FsbCBlZ2xHZXRDdXJyZW50RGlzcGxheSh2b2lkKQotewotICAgIEVWRU5UKCIoKSIpOwotCi0g
ICAgdHJ5Ci0gICAgewotICAgICAgICBFR0xEaXNwbGF5IGRweSA9IGVnbDo6Z2V0Q3VycmVudERp
c3BsYXkoKTsKLQotICAgICAgICByZXR1cm4gc3VjY2VzcyhkcHkpOwotICAgIH0KLSAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9B
TExPQywgRUdMX05PX0RJU1BMQVkpOwotICAgIH0KLX0KLQotRUdMQm9vbGVhbiBfX3N0ZGNhbGwg
ZWdsUXVlcnlDb250ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCwgRUdMaW50IGF0
dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSkKLXsKLSAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0g
MHglMC44cCwgRUdMQ29udGV4dCBjdHggPSAweCUwLjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQs
IEVHTGludCAqdmFsdWUgPSAweCUwLjhwKSIsCi0gICAgICAgICAgZHB5LCBjdHgsIGF0dHJpYnV0
ZSwgdmFsdWUpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3Bs
YXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOwotICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4oY3R4KTsKLQotICAgICAgICBp
ZiAoIXZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAgIFVOSU1QTEVNRU5U
RUQoKTsgICAvLyBGSVhNRQotCi0gICAgICAgIHJldHVybiBzdWNjZXNzKDApOwotICAgIH0KLSAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoRUdM
X0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKLSAgICB9Ci19Ci0KLUVHTEJvb2xlYW4gX19zdGRjYWxs
IGVnbFdhaXRHTCh2b2lkKQotewotICAgIEVWRU5UKCIoKSIpOwotCi0gICAgdHJ5Ci0gICAgewot
ICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKLQotICAgICAgICByZXR1cm4gc3Vj
Y2VzcygwKTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0gICAgfQotfQotCi1F
R0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xXYWl0TmF0aXZlKEVHTGludCBlbmdpbmUpCi17Ci0gICAg
RVZFTlQoIihFR0xpbnQgZW5naW5lID0gJWQpIiwgZW5naW5lKTsKLQotICAgIHRyeQotICAgIHsK
LSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCi0KLSAgICAgICAgcmV0dXJuIHN1
Y2Nlc3MoMCk7Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwotICAgIH0KLX0KLQot
RUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1
cmZhY2Ugc3VyZmFjZSkKLXsKLSAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwg
RUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCkiLCBkcHksIHN1cmZhY2UpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6
OkRpc3BsYXkqPihkcHkpOwotICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoZWds
OjpTdXJmYWNlKilzdXJmYWNlOwotCi0gICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3Bs
YXksIGVnbFN1cmZhY2UpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRpc3BsYXktPmlzRGV2aWNlTG9zdCgpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZB
TFNFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNF
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBF
R0xfRkFMU0UpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVnbFN1cmZhY2UtPnN3YXAoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoRUdMX1RSVUUpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwotICAgIH0KLQotICAgIHJldHVy
biBFR0xfRkFMU0U7Ci19Ci0KLUVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbENvcHlCdWZmZXJzKEVH
TERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTE5hdGl2ZVBpeG1hcFR5cGUgdGFy
Z2V0KQotewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNl
IHN1cmZhY2UgPSAweCUwLjhwLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHRhcmdldCA9IDB4JTAuOHAp
IiwgZHB5LCBzdXJmYWNlLCB0YXJnZXQpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOwotICAg
ICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2Uq
PihzdXJmYWNlKTsKLQotICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xT
dXJmYWNlKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9DT05URVhUX0xPU1QsIEVHTF9GQUxTRSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKLQotICAgICAg
ICByZXR1cm4gc3VjY2VzcygwKTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0g
ICAgfQotfQotCi1FR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xQb3N0U3ViQnVmZmVyTlYoRUdMRGlz
cGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQg
d2lkdGgsIEVHTGludCBoZWlnaHQpCi17Ci0gICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4
JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCB4ID0gJWQsIEVHTGlu
dCB5ID0gJWQsIEVHTGludCB3aWR0aCA9ICVkLCBFR0xpbnQgaGVpZ2h0ID0gJWQpIiwgZHB5LCBz
dXJmYWNlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAg
aWYgKHggPCAwIHx8IHkgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9GQUxTRSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2Fz
dDxlZ2w6OkRpc3BsYXkqPihkcHkpOwotICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2Ug
PSBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsKLQotICAgICAgICBpZiAoIXZh
bGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkaXNwbGF5LT5p
c0RldmljZUxvc3QoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9D
T05URVhUX0xPU1QsIEVHTF9GQUxTRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3VyZmFj
ZSA9PSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChl
Z2xTdXJmYWNlLT5wb3N0U3ViQnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gc3VjY2VzcyhFR0xfVFJVRSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
KEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEVHTF9GQUxT
RTsKLX0KLQotX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBfX3N0ZGNh
bGwgZWdsR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqcHJvY25hbWUpCi17Ci0gICAgRVZFTlQo
Iihjb25zdCBjaGFyICpwcm9jbmFtZSA9IFwiJXNcIikiLCBwcm9jbmFtZSk7Ci0KLSAgICB0cnkK
LSAgICB7Ci0gICAgICAgIHN0cnVjdCBFeHRlbnNpb24KLSAgICAgICAgewotICAgICAgICAgICAg
Y29uc3QgY2hhciAqbmFtZTsKLSAgICAgICAgICAgIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUgYWRkcmVzczsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgY29u
c3QgRXh0ZW5zaW9uIGVnbEV4dGVuc2lvbnNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHsi
ZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUpZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFfSwKLSAgICAgICAgICAg
IHsiZWdsUG9zdFN1YkJ1ZmZlck5WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9p
bnRlclR5cGUpZWdsUG9zdFN1YkJ1ZmZlck5WfSwKLSAgICAgICAgICAgIHsiIiwgTlVMTH0sCi0g
ICAgICAgIH07Ci0KLSAgICAgICAgZm9yIChpbnQgZXh0ID0gMDsgZXh0IDwgc2l6ZW9mKGVnbEV4
dGVuc2lvbnMpIC8gc2l6ZW9mKEV4dGVuc2lvbik7IGV4dCsrKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoc3RyY21wKHByb2NuYW1lLCBlZ2xFeHRlbnNpb25zW2V4dF0ubmFtZSkgPT0gMCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKF9fZWdsTXVzdENhc3RUb1By
b3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZWdsRXh0ZW5zaW9uc1tleHRdLmFkZHJlc3M7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZ2xHZXRQcm9jQWRkcmVzcyhw
cm9jbmFtZSk7Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVu
Y3Rpb25Qb2ludGVyVHlwZSlOVUxMKTsKLSAgICB9Ci19Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5kZWYgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5kZWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDcxYTVlNjcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9saWJFR0wuZGVmCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotTElCUkFSWQls
aWJFR0wKLUVYUE9SVFMKLQllZ2xCaW5kQVBJICAgICAgICAgICAgICAgICAgICAgIEAxNAotCWVn
bEJpbmRUZXhJbWFnZSAgICAgICAgICAgICAgICAgQDIwCi0JZWdsQ2hvb3NlQ29uZmlnICAgICAg
ICAgICAgICAgICBANwotCWVnbENvcHlCdWZmZXJzICAgICAgICAgICAgICAgICAgQDMzCi0JZWds
Q3JlYXRlQ29udGV4dCAgICAgICAgICAgICAgICBAMjMKLQllZ2xDcmVhdGVQYnVmZmVyRnJvbUNs
aWVudEJ1ZmZlciAgICAgICAgQDE4Ci0JZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UgICAgICAgICBA
MTAKLQllZ2xDcmVhdGVQaXhtYXBTdXJmYWNlICAgICAgICAgIEAxMQotCWVnbENyZWF0ZVdpbmRv
d1N1cmZhY2UgICAgICAgICAgQDkKLQllZ2xEZXN0cm95Q29udGV4dCAgICAgICAgICAgICAgIEAy
NAotCWVnbERlc3Ryb3lTdXJmYWNlICAgICAgICAgICAgICAgQDEyCi0JZWdsR2V0Q29uZmlnQXR0
cmliICAgICAgICAgICAgICBAOAotCWVnbEdldENvbmZpZ3MgICAgICAgICAgICAgICAgICAgQDYK
LQllZ2xHZXRDdXJyZW50Q29udGV4dCAgICAgICAgICAgIEAyNgotCWVnbEdldEN1cnJlbnREaXNw
bGF5ICAgICAgICAgICAgQDI4Ci0JZWdsR2V0Q3VycmVudFN1cmZhY2UgICAgICAgICAgICBAMjcK
LQllZ2xHZXREaXNwbGF5ICAgICAgICAgICAgICAgICAgIEAyCi0JZWdsR2V0RXJyb3IgICAgICAg
ICAgICAgICAgICAgICBAMQotCWVnbEdldFByb2NBZGRyZXNzICAgICAgICAgICAgICAgQDM0Ci0J
ZWdsSW5pdGlhbGl6ZSAgICAgICAgICAgICAgICAgICBAMwotCWVnbE1ha2VDdXJyZW50ICAgICAg
ICAgICAgICAgICAgQDI1Ci0JZWdsUXVlcnlBUEkgICAgICAgICAgICAgICAgICAgICBAMTUKLQll
Z2xRdWVyeUNvbnRleHQgICAgICAgICAgICAgICAgIEAyOQotCWVnbFF1ZXJ5U3RyaW5nICAgICAg
ICAgICAgICAgICAgQDUKLQllZ2xRdWVyeVN1cmZhY2UgICAgICAgICAgICAgICAgIEAxMwotCWVn
bFJlbGVhc2VUZXhJbWFnZSAgICAgICAgICAgICAgQDIxCi0JZWdsUmVsZWFzZVRocmVhZCAgICAg
ICAgICAgICAgICBAMTcKLQllZ2xTdXJmYWNlQXR0cmliICAgICAgICAgICAgICAgIEAxOQotCWVn
bFN3YXBCdWZmZXJzICAgICAgICAgICAgICAgICAgQDMyCi0JZWdsU3dhcEludGVydmFsICAgICAg
ICAgICAgICAgICBAMjIKLQllZ2xUZXJtaW5hdGUgICAgICAgICAgICAgICAgICAgIEA0Ci0JZWds
V2FpdENsaWVudCAgICAgICAgICAgICAgICAgICBAMTYKLQllZ2xXYWl0R0wgICAgICAgICAgICAg
ICAgICAgICAgIEAzMAotCWVnbFdhaXROYXRpdmUgICAgICAgICAgICAgICAgICAgQDMxClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9saWJFR0wucmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
RUdML2xpYkVHTC5yYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNWQxZjMyZi4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYwor
KysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBn
ZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgotLy8KLSNpbmNsdWRlICJyZXNvdXJjZS5oIgotCi0j
ZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0v
LwotLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVzb3VyY2UuCi0vLwotI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlICIuLi9jb21tb24vdmVyc2lvbi5oIgotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcwotCi0jaWYgIWRl
ZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpCi0jaWZkZWYg
X1dJTjMyCi1MQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9VUwotI3ByYWdt
YSBjb2RlX3BhZ2UoMTI1MikKLSNlbmRpZiAvL19XSU4zMgotCi0jaWZkZWYgQVBTVFVESU9fSU5W
T0tFRAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBURVhUSU5DTFVERQotLy8KLQotMSBU
RVhUSU5DTFVERSAKLUJFR0lOCi0gICAgInJlc291cmNlLmhcMCIKLUVORAotCi0yIFRFWFRJTkNM
VURFIAotQkVHSU4KLSAgICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiIKLSAgICAiI2luY2x1
ZGUgIiIuLi9jb21tb24vdmVyc2lvbi5oIiJcMCIKLUVORAotCi0zIFRFWFRJTkNMVURFIAotQkVH
SU4KLSAgICAiXHJcbiIKLSAgICAiXDAiCi1FTkQKLQotI2VuZGlmICAgIC8vIEFQU1RVRElPX0lO
Vk9LRUQKLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFZlcnNpb24KLS8vCi0KLVZT
X1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTwotIEZJTEVWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlO
T1JfVkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9OCi0gUFJPRFVDVFZFUlNJT04g
TUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04K
LSBGSUxFRkxBR1NNQVNLIDB4MTdMCi0jaWZkZWYgX0RFQlVHCi0gRklMRUZMQUdTIDB4MUwKLSNl
bHNlCi0gRklMRUZMQUdTIDB4MEwKLSNlbmRpZgotIEZJTEVPUyAweDRMCi0gRklMRVRZUEUgMHgy
TAotIEZJTEVTVUJUWVBFIDB4MEwKLUJFR0lOCi0gICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgot
ICAgIEJFR0lOCi0gICAgICAgIEJMT0NLICIwNDA5MDRiMCIKLSAgICAgICAgQkVHSU4KLSAgICAg
ICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiQU5HTEUgbGliRUdMIER5bmFtaWMgTGlu
ayBMaWJyYXJ5IgotICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgVkVSU0lPTl9TVFJJ
TkcKLSAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAibGliRUdMIgotICAgICAgICAg
ICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiIKLSAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgImxpYkVHTC5kbGwiCi0g
ICAgICAgICAgICBWQUxVRSAiUHJpdmF0ZUJ1aWxkIiwgVkVSU0lPTl9TVFJJTkcKLSAgICAgICAg
ICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJBTkdMRSBsaWJFR0wgRHluYW1pYyBMaW5rIExpYnJh
cnkiCi0gICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBWRVJTSU9OX1NUUklORwot
ICAgICAgICBFTkQKLSAgICBFTkQKLSAgICBCTE9DSyAiVmFyRmlsZUluZm8iCi0gICAgQkVHSU4K
LSAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg0MDksIDEyMDAKLSAgICBFTkQKLUVORAot
Ci0jZW5kaWYgICAgLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCi0vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotCi0KLQotI2lmbmRlZiBBUFNUVURJT19JTlZPS0VECi0vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8KLS8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAzIHJlc291cmNlLgotLy8K
LQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI2VuZGlmICAgIC8vIG5vdCBBUFNUVURJT19JTlZP
S0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVH
TC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4
cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDhmZDFkMC4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qCisrKyAv
ZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+DQotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNp
b249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21z
YnVpbGQvMjAwMyI+DQotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMi
Pg0KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KLSAg
ICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KLSAgICAgIDxQbGF0Zm9y
bT5XaW4zMjwvUGxhdGZvcm0+DQotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQotICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KLSAgICAgIDxDb25maWd1
cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRm
b3JtPg0KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KLSAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQotICAgICAgPENvbmZpZ3VyYXRpb24+UmVs
ZWFzZTwvQ29uZmlndXJhdGlvbj4NCi0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0Nv
bmZpZ3VyYXRpb24+DQotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQotICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIExh
YmVsPSJHbG9iYWxzIj4NCi0gICAgPFByb2plY3RHdWlkPntFNzQ2RkNBOS02NEMzLTQzM0UtODVF
OC05QTVBNjdBQjdFRDZ9PC9Qcm9qZWN0R3VpZD4NCi0gICAgPFJvb3ROYW1lc3BhY2U+bGliRUdM
PC9Sb290TmFtZXNwYWNlPg0KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQotICA8
L1Byb3BlcnR5R3JvdXA+DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IkNvbmZpZ3VyYXRpb24iPg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8
L0NvbmZpZ3VyYXRpb25UeXBlPg0KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3Rl
clNldD4NCi0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1P
cHRpbWl6YXRpb24+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJh
Y3RlclNldD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+DQotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwv
Q29uZmlndXJhdGlvblR5cGU+DQotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVy
U2V0Pg0KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9w
dGltaXphdGlvbj4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9
IkNvbmZpZ3VyYXRpb24iPg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8
L0NvbmZpZ3VyYXRpb25UeXBlPg0KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3Rl
clNldD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rhcmdl
dHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPg0KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25TZXR0aW5ncyI+DQotICA8L0ltcG9ydEdyb3VwPg0KLSAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4
aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
JykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCi0gIDwvSW1wb3J0R3JvdXA+DQot
ICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQotICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCi0gIDwv
SW1wb3J0R3JvdXA+DQotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQot
ICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0
Zm9ybSIgLz4NCi0gIDwvSW1wb3J0R3JvdXA+DQotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPg0KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+DQotICA8L0ltcG9ydEdyb3VwPg0KLSAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+DQotICA8UHJvcGVydHlHcm91cD4NCi0gICAgPF9Qcm9q
ZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPg0KLSAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQotICAgIDxJ
bnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPiQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQotICAgIDxMaW5rSW5jcmVtZW50YWwg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCi0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQo
Q29uZmlndXJhdGlvbilcPC9PdXREaXI+DQotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChDb25maWd1cmF0aW9u
KVw8L0ludERpcj4NCi0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVu
dGFsPg0KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPg0KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8
L0ludERpcj4NCi0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCi0g
ICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPg0KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvSW50
RGlyPg0KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KLSAg
ICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KLSAgICA8TGli
cmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCi0gICAgPExpYnJhcnlQYXRo
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KLSAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTGlicmFy
eVBhdGgpPC9MaWJyYXJ5UGF0aD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4NCi0gICAgPENsQ29tcGlsZT4NCi0gICAgICA8T3B0aW1pemF0aW9uPkRpc2Fi
bGVkPC9PcHRpbWl6YXRpb24+DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExM
O0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDslKFByZXBy
b2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgICAgPE1p
bmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KLSAgICAgIDxCYXNpY1J1bnRpbWVD
aGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KLSAgICAgIDxSdW50
aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDxX
YXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQotICAgICAgPFRyZWF0V2FybmluZ0Fz
RXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCi0gICAgICA8RGVidWdJbmZvcm1hdGlv
bkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQotICAgICAg
PERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1
MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2Fybmlu
Z3M+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8TGluaz4NCi0gICAgICA8QWRkaXRpb25hbERl
cGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8
L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQotICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxp
YkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KLSAgICAgIDxEZWxheUxvYWRETExzPiUo
RGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQotICAgICAgPEdlbmVyYXRlRGVidWdJbmZv
cm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQotICAgICAgPFN1YlN5c3Rl
bT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQotICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0K
LSAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQotICAgICAgPFRhcmdldE1hY2hpbmU+
TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCi0gICAgPC9MaW5rPg0KLSAgICA8UG9zdEJ1aWxk
RXZlbnQ+DQotICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KLW1rZGlyICIkKFByb2plY3REaXIp
Li5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KLWNvcHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwi
ICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KLWNvcHkgIiQoT3V0
RGlyKWxpYkVHTC5saWIiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilc
Ig0KLSU0MGVjaG8gb2ZmDQotPC9Db21tYW5kPg0KLSAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KLSAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQotICAg
IDxDbENvbXBpbGU+DQotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9u
Pg0KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVu
Y3Rpb25FeHBhbnNpb24+DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVH
O19XSU5ET1dTO19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRF
O05PTUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
PC9SdW50aW1lTGlicmFyeT4NCi0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQotICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xl
dmVsPg0KLSAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJy
b3I+DQotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0Pg0KLSAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAw
OzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJu
aW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAg
PExpbms+DQotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7ZHhndWlkLmxp
YjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KLSAg
ICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5saWJFR0wuZGVmPC9Nb2R1bGVEZWZpbml0aW9uRmls
ZT4NCi0gICAgICA8RGVsYXlMb2FkRExMcz4lKERlbGF5TG9hZERMTHMpPC9EZWxheUxvYWRETExz
Pg0KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPg0KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KLSAgICAg
IDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KLSAgICAgIDxF
bmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQotICAgICAgPERh
dGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KLSAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+
DQotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCi0gICAg
PC9MaW5rPg0KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+DQotICAgICAgPENvbW1hbmQ+JTQwZWNobyBv
bg0KLW1rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KLWNv
cHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmln
dXJhdGlvbilcIg0KLWNvcHkgIiQoT3V0RGlyKWxpYkVHTC5saWIiICIkKFByb2plY3REaXIpLi5c
Li5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KLSU0MGVjaG8gb2ZmDQotPC9Db21tYW5kPg0KLSAg
ICA8L1Bvc3RCdWlsZEV2ZW50Pg0KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4NCi0gICAgPE1pZGw+DQotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2
NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQotICAgIDwvTWlkbD4NCi0gICAgPENsQ29tcGlsZT4NCi0g
ICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQotICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8u
Li8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+DQotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RF
UFJFQ0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+DQotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxk
Pg0KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1
bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPg0KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+
DQotICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0
NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+DQotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KLSAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9y
PnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8TGlu
az4NCi0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUo
QWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQotICAgICAg
PE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0K
LSAgICAgIDxEZWxheUxvYWRETExzPiUoRGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQot
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+DQotICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQotICAgICAgPERh
dGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KLSAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+
DQotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCi0gICAg
PC9MaW5rPg0KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+DQotICAgICAgPENvbW1hbmQ+JTQwZWNobyBv
bg0KLW1rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KLWNv
cHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmln
dXJhdGlvbilcIg0KLWNvcHkgIiQoT3V0RGlyKWxpYkVHTC5saWIiICIkKFByb2plY3REaXIpLi5c
Li5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KLSU0MGVjaG8gb2ZmDQotPC9Db21tYW5kPg0KLSAg
ICA8L1Bvc3RCdWlsZEV2ZW50Pg0KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPg0KLSAgICA8TWlkbD4NCi0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+
WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCi0gICAgPC9NaWRsPg0KLSAgICA8Q2xDb21waWxlPg0K
LSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCi0gICAgICA8SW5s
aW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9u
Pg0KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikvLi47
ICQoUHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJFR0xfRVhQT1JUUztf
Q1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQcmVjb21w
aWxlZEhlYWRlcj4NCi0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQotICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5p
bmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVj
aWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQotICAgICAgPERlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0K
LSAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQot
ICAgIDwvQ2xDb21waWxlPg0KLSAgICA8TGluaz4NCi0gICAgICA8QWRkaXRpb25hbERlcGVuZGVu
Y2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0
aW9uYWxEZXBlbmRlbmNpZXM+DQotICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkVHTC5k
ZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KLSAgICAgIDxEZWxheUxvYWRETExzPiUoRGVsYXlM
b2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQotICAgICAgPFN1YlN5c3RlbT5XaW5k
b3dzPC9TdWJTeXN0ZW0+DQotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6
ZVJlZmVyZW5jZXM+DQotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09N
REFURm9sZGluZz4NCi0gICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQotICAgICAgPC9E
YXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCi0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0
PC9UYXJnZXRNYWNoaW5lPg0KLSAgICA8L0xpbms+DQotICAgIDxQb3N0QnVpbGRFdmVudD4NCi0g
ICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQotbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJc
JChDb25maWd1cmF0aW9uKVwiDQotY29weSAiJChPdXREaXIpbGliRUdMLmRsbCIgIiQoUHJvamVj
dERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQotY29weSAiJChPdXREaXIpbGliRUdM
LmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQotJTQwZWNo
byBvZmYNCi08L0NvbW1hbmQ+DQotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQotICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkNv
bmZpZy5jcHAiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXGRlYnVnLmNw
cCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXNwbGF5LmNwcCIgLz4NCi0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJsaWJFR0wuY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Im1haW4uY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlN1cmZhY2UuY3BwIiAvPg0K
LSAgPC9JdGVtR3JvdXA+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkNvbmZpZy5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpc3BsYXkuaCIgLz4NCi0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2wuaCIgLz4NCi0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xleHQuaCIgLz4NCi0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xwbGF0Zm9ybS5oIiAvPg0K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1haW4uaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZXNvdXJjZS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlN1cmZhY2UuaCIg
Lz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5oIiAvPg0KLSAg
PC9JdGVtR3JvdXA+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSJsaWJFR0wu
ZGVmIiAvPg0KLSAgPC9JdGVtR3JvdXA+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8UmVzb3VyY2VD
b21waWxlIEluY2x1ZGU9ImxpYkVHTC5yYyIgLz4NCi0gIDwvSXRlbUdyb3VwPg0KLSAgPEl0ZW1H
cm91cD4NCi0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cbGliR0xFU3YyXGxpYkdM
RVN2Mi52Y3hwcm9qIj4NCi0gICAgICA8UHJvamVjdD57YjU4NzFhN2EtOTY4Yy00MmUzLWEzM2It
OTgxZTZmNDQ4ZTc4fTwvUHJvamVjdD4NCi0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+
ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5Pg0KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+
DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxN
aWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lv
blRhcmdldHMiPg0KLSAgPC9JbXBvcnRHcm91cD4NCi08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9saWJFR0wudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9saWJFR0wudmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCA5MTM5ZTQ5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wvbGliRUdMLnZjeHByb2ouZmlsdGVycworKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAg
QEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQotPFByb2plY3Qg
VG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Rl
dmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KLSAgPEl0ZW1Hcm91cD4NCi0gICAgPEZpbHRlciBJbmNs
dWRlPSJTb3VyY2UgRmlsZXMiPg0KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1D
N0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPg0KLSAgICAgIDxF
eHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRl
bnNpb25zPg0KLSAgICA8L0ZpbHRlcj4NCi0gICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmls
ZXMiPg0KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02
MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPg0KLSAgICAgIDxFeHRlbnNpb25zPmg7aHBw
O2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4NCi0gICAgPC9GaWx0ZXI+DQotICA8L0l0
ZW1Hcm91cD4NCi0gIDxJdGVtR3JvdXA+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29uZmln
LmNwcCI+DQotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbENv
bXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXGRlYnVnLmNwcCI+DQot
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlzcGxheS5jcHAiPg0KLSAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9ImxpYkVHTC5jcHAiPg0KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIj4N
Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4N
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTdXJmYWNlLmNwcCI+DQotICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICA8L0l0ZW1Hcm91cD4N
Ci0gIDxJdGVtR3JvdXA+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29uZmlnLmgiPg0KLSAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpc3BsYXkuaCI+DQotICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cLi5caW5jbHVkZVxFR0xcZWdsLmgiPg0KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XC4uXGluY2x1ZGVcRUdMXGVnbGV4dC5oIj4NCi0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwu
LlxpbmNsdWRlXEVHTFxlZ2xwbGF0Zm9ybS5oIj4NCi0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJt
YWluLmgiPg0KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJ
bmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291cmNlLmgiPg0KLSAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IlN1cmZhY2UuaCI+DQotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Y29tbW9uXHZlcnNpb24uaCI+DQotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
Ci0gICAgPC9DbEluY2x1ZGU+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJdGVtR3JvdXA+DQotICAg
IDxOb25lIEluY2x1ZGU9ImxpYkVHTC5kZWYiPg0KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQotICAgIDwvTm9uZT4NCi0gIDwvSXRlbUdyb3VwPg0KLSAgPEl0ZW1Hcm91cD4N
Ci0gICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSJsaWJFR0wucmMiIC8+DQotICA8L0l0ZW1H
cm91cD4NCi08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9tYWluLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IGRjMjRjNGYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkVHTC9tYWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBtYWluLmNwcDogRExMIGVudHJ5IHBvaW50IGFuZCBtYW5hZ2Vt
ZW50IG9mIHRocmVhZC1sb2NhbCBkYXRhLgotCi0jaW5jbHVkZSAibGliRUdML21haW4uaCIKLQot
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotCi1zdGF0aWMgRFdPUkQgY3VycmVudFRMUyA9IFRM
U19PVVRfT0ZfSU5ERVhFUzsKLQotZXh0ZXJuICJDIiBCT09MIFdJTkFQSSBEbGxNYWluKEhJTlNU
QU5DRSBpbnN0YW5jZSwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQpCi17Ci0gICAgc3dp
dGNoIChyZWFzb24pCi0gICAgewotICAgICAgY2FzZSBETExfUFJPQ0VTU19BVFRBQ0g6Ci0gICAg
ICAgIHsKLSNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNFKQotICAgICAgICAgICAgRklM
RSAqZGVidWcgPSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgInJ0Iik7Ci0KLSAgICAgICAgICAg
IGlmIChkZWJ1ZykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmY2xvc2UoZGVidWcp
OwotICAgICAgICAgICAgICAgIGRlYnVnID0gZm9wZW4oVFJBQ0VfT1VUUFVUX0ZJTEUsICJ3dCIp
OyAgIC8vIEVyYXNlCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGRlYnVn
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGRlYnVnKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAg
Y3VycmVudFRMUyA9IFRsc0FsbG9jKCk7Ci0KLSAgICAgICAgICAgIGlmIChjdXJyZW50VExTID09
IFRMU19PVVRfT0ZfSU5ERVhFUykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gRkFMU0U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRmFsbCB0aHJv
dWdodCB0byBpbml0aWFsaXplIGluZGV4Ci0gICAgICBjYXNlIERMTF9USFJFQURfQVRUQUNIOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBlZ2w6OkN1cnJlbnQgKmN1cnJlbnQgPSAoZWdsOjpDdXJy
ZW50KilMb2NhbEFsbG9jKExQVFIsIHNpemVvZihlZ2w6OkN1cnJlbnQpKTsKLQotICAgICAgICAg
ICAgaWYgKGN1cnJlbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVGxzU2V0VmFs
dWUoY3VycmVudFRMUywgY3VycmVudCk7Ci0KLSAgICAgICAgICAgICAgICBjdXJyZW50LT5lcnJv
ciA9IEVHTF9TVUNDRVNTOwotICAgICAgICAgICAgICAgIGN1cnJlbnQtPkFQSSA9IEVHTF9PUEVO
R0xfRVNfQVBJOwotICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRpc3BsYXkgPSBFR0xfTk9fRElT
UExBWTsKLSAgICAgICAgICAgICAgICBjdXJyZW50LT5kcmF3U3VyZmFjZSA9IEVHTF9OT19TVVJG
QUNFOwotICAgICAgICAgICAgICAgIGN1cnJlbnQtPnJlYWRTdXJmYWNlID0gRUdMX05PX1NVUkZB
Q0U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IERMTF9USFJFQURfREVUQUNIOgotICAgICAgICB7Ci0gICAgICAgICAgICB2b2lkICpjdXJyZW50
ID0gVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7Ci0KLSAgICAgICAgICAgIGlmIChjdXJyZW50KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2FsRnJlZSgoSExPQ0FMKWN1cnJlbnQp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBE
TExfUFJPQ0VTU19ERVRBQ0g6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHZvaWQgKmN1cnJlbnQg
PSBUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKLQotICAgICAgICAgICAgaWYgKGN1cnJlbnQpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9jYWxGcmVlKChITE9DQUwpY3VycmVudCk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFRsc0ZyZWUoY3VycmVudFRMUyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotbmFtZXNwYWNlIGVnbAotewotdm9pZCBzZXRD
dXJyZW50RXJyb3IoRUdMaW50IGVycm9yKQotewotICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3Vy
cmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7Ci0KLSAgICBjdXJyZW50LT5lcnJvciA9IGVy
cm9yOwotfQotCi1FR0xpbnQgZ2V0Q3VycmVudEVycm9yKCkKLXsKLSAgICBDdXJyZW50ICpjdXJy
ZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOwotCi0gICAgcmV0dXJuIGN1
cnJlbnQtPmVycm9yOwotfQotCi12b2lkIHNldEN1cnJlbnRBUEkoRUdMZW51bSBBUEkpCi17Ci0g
ICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsK
LQotICAgIGN1cnJlbnQtPkFQSSA9IEFQSTsKLX0KLQotRUdMZW51bSBnZXRDdXJyZW50QVBJKCkK
LXsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRU
TFMpOwotCi0gICAgcmV0dXJuIGN1cnJlbnQtPkFQSTsKLX0KLQotdm9pZCBzZXRDdXJyZW50RGlz
cGxheShFR0xEaXNwbGF5IGRweSkKLXsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQq
KVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOwotCi0gICAgY3VycmVudC0+ZGlzcGxheSA9IGRweTsK
LX0KLQotRUdMRGlzcGxheSBnZXRDdXJyZW50RGlzcGxheSgpCi17Ci0gICAgQ3VycmVudCAqY3Vy
cmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKLQotICAgIHJldHVybiBj
dXJyZW50LT5kaXNwbGF5OwotfQotCi12b2lkIHNldEN1cnJlbnREcmF3U3VyZmFjZShFR0xTdXJm
YWNlIHN1cmZhY2UpCi17Ci0gICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRW
YWx1ZShjdXJyZW50VExTKTsKLQotICAgIGN1cnJlbnQtPmRyYXdTdXJmYWNlID0gc3VyZmFjZTsK
LX0KLQotRUdMU3VyZmFjZSBnZXRDdXJyZW50RHJhd1N1cmZhY2UoKQotewotICAgIEN1cnJlbnQg
KmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7Ci0KLSAgICByZXR1
cm4gY3VycmVudC0+ZHJhd1N1cmZhY2U7Ci19Ci0KLXZvaWQgc2V0Q3VycmVudFJlYWRTdXJmYWNl
KEVHTFN1cmZhY2Ugc3VyZmFjZSkKLXsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQq
KVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOwotCi0gICAgY3VycmVudC0+cmVhZFN1cmZhY2UgPSBz
dXJmYWNlOwotfQotCi1FR0xTdXJmYWNlIGdldEN1cnJlbnRSZWFkU3VyZmFjZSgpCi17Ci0gICAg
Q3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKLQot
ICAgIHJldHVybiBjdXJyZW50LT5yZWFkU3VyZmFjZTsKLX0KLX0KLQotdm9pZCBlcnJvcihFR0xp
bnQgZXJyb3JDb2RlKQotewotICAgIGVnbDo6c2V0Q3VycmVudEVycm9yKGVycm9yQ29kZSk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML21haW4uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCBkMDlkOWU2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotLy8gbWFpbi5oOiBNYW5hZ2VtZW50IG9mIHRocmVhZC1sb2Nh
bCBkYXRhLgotCi0jaWZuZGVmIExJQkVHTF9NQUlOX0hfCi0jZGVmaW5lIExJQkVHTF9NQUlOX0hf
Ci0KLSNkZWZpbmUgRUdMQVBJCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9l
Z2xleHQuaD4KLQotbmFtZXNwYWNlIGVnbAotewotc3RydWN0IEN1cnJlbnQKLXsKLSAgICBFR0xp
bnQgZXJyb3I7Ci0gICAgRUdMZW51bSBBUEk7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5OwotICAg
IEVHTFN1cmZhY2UgZHJhd1N1cmZhY2U7Ci0gICAgRUdMU3VyZmFjZSByZWFkU3VyZmFjZTsKLX07
Ci0KLXZvaWQgc2V0Q3VycmVudEVycm9yKEVHTGludCBlcnJvcik7Ci1FR0xpbnQgZ2V0Q3VycmVu
dEVycm9yKCk7Ci0KLXZvaWQgc2V0Q3VycmVudEFQSShFR0xlbnVtIEFQSSk7Ci1FR0xlbnVtIGdl
dEN1cnJlbnRBUEkoKTsKLQotdm9pZCBzZXRDdXJyZW50RGlzcGxheShFR0xEaXNwbGF5IGRweSk7
Ci1FR0xEaXNwbGF5IGdldEN1cnJlbnREaXNwbGF5KCk7Ci0KLXZvaWQgc2V0Q3VycmVudERyYXdT
dXJmYWNlKEVHTFN1cmZhY2Ugc3VyZmFjZSk7Ci1FR0xTdXJmYWNlIGdldEN1cnJlbnREcmF3U3Vy
ZmFjZSgpOwotCi12b2lkIHNldEN1cnJlbnRSZWFkU3VyZmFjZShFR0xTdXJmYWNlIHN1cmZhY2Up
OwotRUdMU3VyZmFjZSBnZXRDdXJyZW50UmVhZFN1cmZhY2UoKTsKLX0KLQotdm9pZCBlcnJvcihF
R0xpbnQgZXJyb3JDb2RlKTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWNvbnN0IFQgJmVycm9yKEVH
TGludCBlcnJvckNvZGUsIGNvbnN0IFQgJnJldHVyblZhbHVlKQotewotICAgIGVycm9yKGVycm9y
Q29kZSk7Ci0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+
Ci1jb25zdCBUICZzdWNjZXNzKGNvbnN0IFQgJnJldHVyblZhbHVlKQotewotICAgIGVnbDo6c2V0
Q3VycmVudEVycm9yKEVHTF9TVUNDRVNTKTsKLQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLX0K
LQotI2VuZGlmICAvLyBMSUJFR0xfTUFJTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkVHTC9yZXNvdXJjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkVHTC9yZXNvdXJjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzOTIx
ZjRjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvcmVz
b3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLS8ve3tOT19ERVBFTkRFTkNJ
RVN9fQotLy8gTWljcm9zb2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIGluY2x1ZGUgZmlsZS4KLS8v
IFVzZWQgYnkgbGliRUdMLnJjCi0KLS8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmpl
Y3RzCi0vLyAKLSNpZmRlZiBBUFNUVURJT19JTlZPS0VECi0jaWZuZGVmIEFQU1RVRElPX1JFQURP
TkxZX1NZTUJPTFMKLSNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMDEK
LSNkZWZpbmUgX0FQU19ORVhUX0NPTU1BTkRfVkFMVUUgICAgICAgICA0MDAwMQotI2RlZmluZSBf
QVBTX05FWFRfQ09OVFJPTF9WQUxVRSAgICAgICAgIDEwMDEKLSNkZWZpbmUgX0FQU19ORVhUX1NZ
TUVEX1ZBTFVFICAgICAgICAgICAxMDEKLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JpbmFyeVN0cmVhbS5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CaW5hcnlTdHJlYW0uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggNWY3MjEzYi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JpbmFyeVN0cmVhbS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTY3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBCaW5hcnlTdHJlYW0uaDogUHJvdmlk
ZXMgYmluYXJ5IHNlcmlhbGl6YXRpb24gb2Ygc2ltcGxlIHR5cGVzLgotCi0jaWZuZGVmIExJQkdM
RVNWMl9CSU5BUllTVFJFQU1fSF8KLSNkZWZpbmUgTElCR0xFU1YyX0JJTkFSWVNUUkVBTV9IXwot
Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImNvbW1v
bi9hbmdsZXV0aWxzLmgiCi0KLW5hbWVzcGFjZSBnbAotewotCi1jbGFzcyBCaW5hcnlJbnB1dFN0
cmVhbQotewotICBwdWJsaWM6Ci0gICAgQmluYXJ5SW5wdXRTdHJlYW0oY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIG1FcnJvciA9IGZhbHNlOwotICAgICAg
ICBtT2Zmc2V0ID0gMDsKLSAgICAgICAgbURhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSk7Ci0gICAgICAgIG1MZW5ndGggPSBsZW5ndGg7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZWFkKFQgKnYsIHNpemVfdCBudW0pCi0gICAgewotICAg
ICAgICB1bmlvbgotICAgICAgICB7Ci0gICAgICAgICAgICBUIGR1bW15OyAgLy8gQ29tcGlsYXRp
b24gZXJyb3IgZm9yIG5vbi10cml2aWFsIHR5cGVzCi0gICAgICAgIH0gZHVtbXk7Ci0gICAgICAg
ICh2b2lkKSBkdW1teTsKLQotICAgICAgICBpZiAobUVycm9yKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3QgbGVuZ3RoID0gbnVtICog
c2l6ZW9mKFQpOwotCi0gICAgICAgIGlmIChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKLSAg
ICAgICAgewotICAgICAgICAgICAgbUVycm9yID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIG1lbWNweSh2LCBtRGF0YSArIG1PZmZzZXQsIGxlbmd0aCk7
Ci0gICAgICAgIG1PZmZzZXQgKz0gbGVuZ3RoOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICAgIHZvaWQgcmVhZChUICogdikKLSAgICB7Ci0gICAgICAgIHJlYWQodiwgMSk7
Ci0gICAgfQotCi0gICAgdm9pZCByZWFkKHN0ZDo6c3RyaW5nICp2KQotICAgIHsKLSAgICAgICAg
c2l6ZV90IGxlbmd0aDsKLSAgICAgICAgcmVhZCgmbGVuZ3RoKTsKLQotICAgICAgICBpZiAobUVy
cm9yKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAobU9mZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1FcnJvciA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICB2LT5hc3NpZ24obURhdGEgKyBtT2Zmc2V0LCBsZW5ndGgpOwotICAgICAgICBtT2Zmc2V0ICs9
IGxlbmd0aDsKLSAgICB9Ci0KLSAgICB2b2lkIHNraXAoc2l6ZV90IGxlbmd0aCkKLSAgICB7Ci0g
ICAgICAgIGlmIChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKLSAgICAgICAgewotICAgICAg
ICAgICAgbUVycm9yID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1PZmZzZXQgKz0gbGVuZ3RoOwotICAgIH0KLQotICAgIHNpemVfdCBvZmZzZXQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1PZmZzZXQ7Ci0gICAgfQotCi0gICAgYm9vbCBl
cnJvcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbUVycm9yOwotICAgIH0KLQotICAg
IGJvb2wgZW5kT2ZTdHJlYW0oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1PZmZzZXQg
PT0gbUxlbmd0aDsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oQmluYXJ5SW5wdXRTdHJlYW0pOwotICAgIGJvb2wgbUVycm9yOwotICAgIHNpemVfdCBt
T2Zmc2V0OwotICAgIGNvbnN0IGNoYXIgKm1EYXRhOwotICAgIHNpemVfdCBtTGVuZ3RoOwotfTsK
LQotY2xhc3MgQmluYXJ5T3V0cHV0U3RyZWFtCi17Ci0gIHB1YmxpYzoKLSAgICBCaW5hcnlPdXRw
dXRTdHJlYW0oKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
ICB2b2lkIHdyaXRlKGNvbnN0IFQgKnYsIHNpemVfdCBudW0pCi0gICAgewotICAgICAgICB1bmlv
bgotICAgICAgICB7Ci0gICAgICAgICAgICBUIGR1bW15OyAgLy8gQ29tcGlsYXRpb24gZXJyb3Ig
Zm9yIG5vbi10cml2aWFsIHR5cGVzCi0gICAgICAgIH0gZHVtbXk7Ci0gICAgICAgICh2b2lkKSBk
dW1teTsKLQotICAgICAgICBjb25zdCBjaGFyICphc0J5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4odik7Ci0gICAgICAgIG1EYXRhLmluc2VydChtRGF0YS5lbmQoKSwgYXNCeXRl
cywgYXNCeXRlcyArIG51bSAqIHNpemVvZihUKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gICAgdm9pZCB3cml0ZShjb25zdCBUICZ2KQotICAgIHsKLSAgICAgICAgd3Jp
dGUoJnYsIDEpOwotICAgIH0KLQotICAgIHZvaWQgd3JpdGUoY29uc3Qgc3RkOjpzdHJpbmcgJnYp
Ci0gICAgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gdi5sZW5ndGgoKTsKLSAgICAgICAgd3Jp
dGUobGVuZ3RoKTsKLQotICAgICAgICB3cml0ZSh2LmNfc3RyKCksIGxlbmd0aCk7Ci0gICAgfQot
Ci0gICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbURhdGEu
c2l6ZSgpOwotICAgIH0KLQotICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1EYXRhLnNpemUoKSA/ICZtRGF0YVswXSA6IE5VTEw7Ci0gICAgfQotCi0g
IHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJpbmFyeU91dHB1dFN0cmVh
bSk7Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbURhdGE7Ci19OwotfQotCi0jZW5kaWYgIC8vIExJ
QkdMRVNWMl9CSU5BUllTVFJFQU1fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvQmxpdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL0JsaXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3MDA3MTk2
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQmxp
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MTggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LQotLy8gQmxpdC5jcHA6IFN1cmZhY2UgY29weSB1dGlsaXR5IGNsYXNzLgotCi0jaW5jbHVkZSAi
bGliR0xFU3YyL0JsaXQuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotCi0jaW5jbHVk
ZSAibGliR0xFU3YyL21haW4uaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCi0K
LW5hbWVzcGFjZQotewotI2luY2x1ZGUgImxpYkdMRVN2Mi9zaGFkZXJzL3N0YW5kYXJkdnMuaCIK
LSNpbmNsdWRlICJsaWJHTEVTdjIvc2hhZGVycy9mbGlweXZzLmgiCi0jaW5jbHVkZSAibGliR0xF
U3YyL3NoYWRlcnMvcGFzc3Rocm91Z2hwcy5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9zaGFkZXJz
L2x1bWluYW5jZXBzLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL3NoYWRlcnMvY29tcG9uZW50bWFz
a3BzLmgiCi0KLWNvbnN0IEJZVEUqIGNvbnN0IGdfc2hhZGVyQ29kZVtdID0KLXsKLSAgICBnX3Zz
MjBfc3RhbmRhcmR2cywKLSAgICBnX3ZzMjBfZmxpcHl2cywKLSAgICBnX3BzMjBfcGFzc3Rocm91
Z2hwcywKLSAgICBnX3BzMjBfbHVtaW5hbmNlcHMsCi0gICAgZ19wczIwX2NvbXBvbmVudG1hc2tw
cwotfTsKLQotY29uc3Qgc2l6ZV90IGdfc2hhZGVyU2l6ZVtdID0KLXsKLSAgICBzaXplb2YoZ192
czIwX3N0YW5kYXJkdnMpLAotICAgIHNpemVvZihnX3ZzMjBfZmxpcHl2cyksCi0gICAgc2l6ZW9m
KGdfcHMyMF9wYXNzdGhyb3VnaHBzKSwKLSAgICBzaXplb2YoZ19wczIwX2x1bWluYW5jZXBzKSwK
LSAgICBzaXplb2YoZ19wczIwX2NvbXBvbmVudG1hc2twcykKLX07Ci19Ci0KLW5hbWVzcGFjZSBn
bAotewotQmxpdDo6QmxpdChDb250ZXh0ICpjb250ZXh0KQotICA6IG1Db250ZXh0KGNvbnRleHQp
LCBtUXVhZFZlcnRleEJ1ZmZlcihOVUxMKSwgbVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbihOVUxMKSwg
bVNhdmVkU3RhdGVCbG9jayhOVUxMKSwgbVNhdmVkUmVuZGVyVGFyZ2V0KE5VTEwpLCBtU2F2ZWRE
ZXB0aFN0ZW5jaWwoTlVMTCkKLXsKLSAgICBpbml0R2VvbWV0cnkoKTsKLSAgICBtZW1zZXQobUNv
bXBpbGVkU2hhZGVycywgMCwgc2l6ZW9mKG1Db21waWxlZFNoYWRlcnMpKTsKLX0KLQotQmxpdDo6
fkJsaXQoKQotewotICAgIGlmIChtU2F2ZWRTdGF0ZUJsb2NrKSBtU2F2ZWRTdGF0ZUJsb2NrLT5S
ZWxlYXNlKCk7Ci0gICAgaWYgKG1RdWFkVmVydGV4QnVmZmVyKSBtUXVhZFZlcnRleEJ1ZmZlci0+
UmVsZWFzZSgpOwotICAgIGlmIChtUXVhZFZlcnRleERlY2xhcmF0aW9uKSBtUXVhZFZlcnRleERl
Y2xhcmF0aW9uLT5SZWxlYXNlKCk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IFNIQURFUl9D
T1VOVDsgaSsrKQotICAgIHsKLSAgICAgICAgaWYgKG1Db21waWxlZFNoYWRlcnNbaV0pCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1Db21waWxlZFNoYWRlcnNbaV0tPlJlbGVhc2UoKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBCbGl0Ojppbml0R2VvbWV0cnkoKQotewotICAgIHN0YXRp
YyBjb25zdCBmbG9hdCBxdWFkW10gPQotICAgIHsKLSAgICAgICAgLTEsIC0xLAotICAgICAgICAt
MSwgIDEsCi0gICAgICAgICAxLCAtMSwKLSAgICAgICAgIDEsICAxCi0gICAgfTsKLQotICAgIElE
aXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwotCi0gICAgSFJFU1VMVCByZXN1
bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZlcihzaXplb2YocXVhZCksIEQzRFVTQUdFX1dS
SVRFT05MWSwgMCwgRDNEUE9PTF9ERUZBVUxULCAmbVF1YWRWZXJ0ZXhCdWZmZXIsIE5VTEwpOwot
Ci0gICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9
PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0g
ICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci0KLSAgICB2b2lk
ICpsb2NrUHRyID0gTlVMTDsKLSAgICByZXN1bHQgPSBtUXVhZFZlcnRleEJ1ZmZlci0+TG9jaygw
LCAwLCAmbG9ja1B0ciwgMCk7Ci0KLSAgICBpZiAoRkFJTEVEKHJlc3VsdCkgfHwgbG9ja1B0ciA9
PSBOVUxMKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURF
T01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAgICAgIHJldHVybiBlcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci0KLSAgICBtZW1jcHkobG9ja1B0ciwgcXVhZCwg
c2l6ZW9mKHF1YWQpKTsKLSAgICBtUXVhZFZlcnRleEJ1ZmZlci0+VW5sb2NrKCk7Ci0KLSAgICBz
dGF0aWMgY29uc3QgRDNEVkVSVEVYRUxFTUVOVDkgZWxlbWVudHNbXSA9Ci0gICAgewotICAgICAg
ICB7IDAsIDAsIEQzRERFQ0xUWVBFX0ZMT0FUMiwgRDNEREVDTE1FVEhPRF9ERUZBVUxULCBEM0RE
RUNMVVNBR0VfUE9TSVRJT04sIDAgfSwKLSAgICAgICAgRDNEREVDTF9FTkQoKQotICAgIH07Ci0K
LSAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleERlY2xhcmF0aW9uKGVsZW1lbnRzLCAm
bVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbik7Ci0KLSAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAg
ewotICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJl
c3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOwotICAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEQzRFNoYWRlclR5cGU+Ci1ib29s
IEJsaXQ6OnNldFNoYWRlcihTaGFkZXJJZCBzb3VyY2UsIGNvbnN0IGNoYXIgKnByb2ZpbGUsCi0g
ICAgICAgICAgICAgICAgICAgICBEM0RTaGFkZXJUeXBlICooZWdsOjpEaXNwbGF5OjoqY3JlYXRl
U2hhZGVyKShjb25zdCBEV09SRCAqLCBzaXplX3QgbGVuZ3RoKSwKLSAgICAgICAgICAgICAgICAg
ICAgIEhSRVNVTFQgKFdJTkFQSSBJRGlyZWN0M0REZXZpY2U5Ojoqc2V0U2hhZGVyKShEM0RTaGFk
ZXJUeXBlKikpCi17Ci0gICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gZ2V0RGlzcGxheSgpOwot
ICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGRpc3BsYXktPmdldERldmljZSgpOwotCi0g
ICAgRDNEU2hhZGVyVHlwZSAqc2hhZGVyOwotCi0gICAgaWYgKG1Db21waWxlZFNoYWRlcnNbc291
cmNlXSAhPSBOVUxMKQotICAgIHsKLSAgICAgICAgc2hhZGVyID0gc3RhdGljX2Nhc3Q8RDNEU2hh
ZGVyVHlwZSo+KG1Db21waWxlZFNoYWRlcnNbc291cmNlXSk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IEJZVEUqIHNoYWRlckNvZGUgPSBnX3NoYWRlckNvZGVbc291cmNl
XTsKLSAgICAgICAgc2l6ZV90IHNoYWRlclNpemUgPSBnX3NoYWRlclNpemVbc291cmNlXTsKLQot
ICAgICAgICBzaGFkZXIgPSAoZGlzcGxheS0+KmNyZWF0ZVNoYWRlcikocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBEV09SRCo+KHNoYWRlckNvZGUpLCBzaGFkZXJTaXplKTsKLSAgICAgICAgaWYgKCFz
aGFkZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIGNyZWF0ZSBzaGFk
ZXIgZm9yIGJsaXQgb3BlcmF0aW9uIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBtQ29tcGlsZWRTaGFkZXJzW3NvdXJjZV0gPSBzaGFkZXI7Ci0gICAg
fQotCi0gICAgSFJFU1VMVCBociA9IChkZXZpY2UtPipzZXRTaGFkZXIpKHNoYWRlcik7Ci0KLSAg
ICBpZiAoRkFJTEVEKGhyKSkKLSAgICB7Ci0gICAgICAgIEVSUigiRmFpbGVkIHRvIHNldCBzaGFk
ZXIgZm9yIGJsaXQgb3BlcmF0aW9uIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBCbGl0OjpzZXRWZXJ0ZXhTaGFkZXIoU2hhZGVy
SWQgc2hhZGVyKQotewotICAgIHJldHVybiBzZXRTaGFkZXI8SURpcmVjdDNEVmVydGV4U2hhZGVy
OT4oc2hhZGVyLCAidnNfMl8wIiwgJmVnbDo6RGlzcGxheTo6Y3JlYXRlVmVydGV4U2hhZGVyLCAm
SURpcmVjdDNERGV2aWNlOTo6U2V0VmVydGV4U2hhZGVyKTsKLX0KLQotYm9vbCBCbGl0OjpzZXRQ
aXhlbFNoYWRlcihTaGFkZXJJZCBzaGFkZXIpCi17Ci0gICAgcmV0dXJuIHNldFNoYWRlcjxJRGly
ZWN0M0RQaXhlbFNoYWRlcjk+KHNoYWRlciwgInBzXzJfMCIsICZlZ2w6OkRpc3BsYXk6OmNyZWF0
ZVBpeGVsU2hhZGVyLCAmSURpcmVjdDNERGV2aWNlOTo6U2V0UGl4ZWxTaGFkZXIpOwotfQotCi1S
RUNUIEJsaXQ6OmdldFN1cmZhY2VSZWN0KElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKSBjb25z
dAotewotICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOwotICAgIHN1cmZhY2UtPkdldERlc2MoJmRl
c2MpOwotCi0gICAgUkVDVCByZWN0OwotICAgIHJlY3QubGVmdCA9IDA7Ci0gICAgcmVjdC50b3Ag
PSAwOwotICAgIHJlY3QucmlnaHQgPSBkZXNjLldpZHRoOwotICAgIHJlY3QuYm90dG9tID0gZGVz
Yy5IZWlnaHQ7Ci0KLSAgICByZXR1cm4gcmVjdDsKLX0KLQotYm9vbCBCbGl0Ojpib3hGaWx0ZXIo
SURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCi17Ci0g
ICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgPSBjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3Vy
Y2UsIGdldFN1cmZhY2VSZWN0KHNvdXJjZSkpOwotICAgIGlmICghdGV4dHVyZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZp
Y2UgPSBnZXREZXZpY2UoKTsKLQotICAgIHNhdmVTdGF0ZSgpOwotCi0gICAgZGV2aWNlLT5TZXRU
ZXh0dXJlKDAsIHRleHR1cmUpOwotICAgIGRldmljZS0+U2V0UmVuZGVyVGFyZ2V0KDAsIGRlc3Qp
OwotCi0gICAgc2V0VmVydGV4U2hhZGVyKFNIQURFUl9WU19TVEFOREFSRCk7Ci0gICAgc2V0UGl4
ZWxTaGFkZXIoU0hBREVSX1BTX1BBU1NUSFJPVUdIKTsKLQotICAgIHNldENvbW1vbkJsaXRTdGF0
ZSgpOwotICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfTUlORklMVEVSLCBE
M0RURVhGX0xJTkVBUik7Ci0gICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9N
QUdGSUxURVIsIEQzRFRFWEZfTElORUFSKTsKLQotICAgIHNldFZpZXdwb3J0KGdldFN1cmZhY2VS
ZWN0KGRlc3QpLCAwLCAwKTsKLQotICAgIHJlbmRlcigpOwotCi0gICAgdGV4dHVyZS0+UmVsZWFz
ZSgpOwotCi0gICAgcmVzdG9yZVN0YXRlKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBCbGl0Ojpjb3B5KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0IFJFQ1QgJnNvdXJj
ZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBJ
RGlyZWN0M0RTdXJmYWNlOSAqZGVzdCkKLXsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2Ug
PSBnZXREZXZpY2UoKTsKLQotICAgIEQzRFNVUkZBQ0VfREVTQyBzb3VyY2VEZXNjOwotICAgIEQz
RFNVUkZBQ0VfREVTQyBkZXN0RGVzYzsKLSAgICBzb3VyY2UtPkdldERlc2MoJnNvdXJjZURlc2Mp
OwotICAgIGRlc3QtPkdldERlc2MoJmRlc3REZXNjKTsKLQotICAgIGlmIChzb3VyY2VEZXNjLkZv
cm1hdCA9PSBkZXN0RGVzYy5Gb3JtYXQgJiYgZGVzdERlc2MuVXNhZ2UgJiBEM0RVU0FHRV9SRU5E
RVJUQVJHRVQgJiYKLSAgICAgICAgZHgyZXM6OklzRm9ybWF0Q2hhbm5lbEVxdWl2YWxlbnQoZGVz
dERlc2MuRm9ybWF0LCBkZXN0Rm9ybWF0KSkgICAvLyBDYW4gdXNlIFN0cmV0Y2hSZWN0Ci0gICAg
ewotICAgICAgICBSRUNUIGRlc3RSZWN0ID0ge3hvZmZzZXQsIHlvZmZzZXQsIHhvZmZzZXQgKyAo
c291cmNlUmVjdC5yaWdodCAtIHNvdXJjZVJlY3QubGVmdCksIHlvZmZzZXQgKyAoc291cmNlUmVj
dC5ib3R0b20gLSBzb3VyY2VSZWN0LnRvcCl9OwotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRl
dmljZS0+U3RyZXRjaFJlY3Qoc291cmNlLCAmc291cmNlUmVjdCwgZGVzdCwgJmRlc3RSZWN0LCBE
M0RURVhGX1BPSU5UKTsKLQotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwg
cmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09V
VF9PRl9NRU1PUlksIGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewot
ICAgICAgICByZXR1cm4gZm9ybWF0Q29udmVydChzb3VyY2UsIHNvdXJjZVJlY3QsIGRlc3RGb3Jt
YXQsIHhvZmZzZXQsIHlvZmZzZXQsIGRlc3QpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIEJsaXQ6OmZvcm1hdENvbnZlcnQoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwg
Y29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KQotewotICAgIElEaXJlY3Qz
RFRleHR1cmU5ICp0ZXh0dXJlID0gY29weVN1cmZhY2VUb1RleHR1cmUoc291cmNlLCBzb3VyY2VS
ZWN0KTsKLSAgICBpZiAoIXRleHR1cmUpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KLSAg
ICBzYXZlU3RhdGUoKTsKLQotICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCB0ZXh0dXJlKTsKLSAg
ICBkZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCBkZXN0KTsKLQotICAgIHNldFZpZXdwb3J0KHNv
dXJjZVJlY3QsIHhvZmZzZXQsIHlvZmZzZXQpOwotCi0gICAgc2V0Q29tbW9uQmxpdFN0YXRlKCk7
Ci0gICAgaWYgKHNldEZvcm1hdENvbnZlcnRTaGFkZXJzKGRlc3RGb3JtYXQpKQotICAgIHsKLSAg
ICAgICAgcmVuZGVyKCk7Ci0gICAgfQotCi0gICAgdGV4dHVyZS0+UmVsZWFzZSgpOwotCi0gICAg
cmVzdG9yZVN0YXRlKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBCbGl0OjpzZXRG
b3JtYXRDb252ZXJ0U2hhZGVycyhHTGVudW0gZGVzdEZvcm1hdCkKLXsKLSAgICBib29sIG9rYXkg
PSBzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJEKTsKLQotICAgIHN3aXRjaCAoZGVz
dEZvcm1hdCkKLSAgICB7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgY2Fz
ZSBHTF9SR0JBOgotICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKLSAgICAgIGNhc2UgR0xfUkdCOgot
ICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgb2theSA9IG9rYXkgJiYgc2V0UGl4ZWxTaGFk
ZXIoU0hBREVSX1BTX0NPTVBPTkVOVE1BU0spOwotICAgICAgICBicmVhazsKLQotICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0U6Ci0gICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICAgICAg
b2theSA9IG9rYXkgJiYgc2V0UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0xVTUlOQU5DRSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmICghb2theSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBlbnVtIHsgWCA9IDAsIFkgPSAxLCBaID0gMiwgVyA9IDMg
fTsKLQotICAgIC8vIFRoZSBtZWFuaW5nIG9mIHRoaXMgY29uc3RhbnQgZGVwZW5kcyBvbiB0aGUg
c2hhZGVyIHRoYXQgd2FzIHNlbGVjdGVkLgotICAgIC8vIFNlZSB0aGUgc2hhZGVyIGFzc2VtYmx5
IGNvZGUgYWJvdmUgZm9yIGRldGFpbHMuCi0gICAgZmxvYXQgcHNDb25zdDBbNF0gPSB7IDAsIDAs
IDAsIDAgfTsKLQotICAgIHN3aXRjaCAoZGVzdEZvcm1hdCkKLSAgICB7Ci0gICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOwotICAgICAgY2FzZSBHTF9SR0JBOgotICAgICAgY2FzZSBHTF9CR1JB
X0VYVDoKLSAgICAgICAgcHNDb25zdDBbWF0gPSAxOwotICAgICAgICBwc0NvbnN0MFtaXSA9IDE7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEdMX1JHQjoKLSAgICAgICAgcHNDb25zdDBb
WF0gPSAxOwotICAgICAgICBwc0NvbnN0MFtXXSA9IDE7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
ICBjYXNlIEdMX0FMUEhBOgotICAgICAgICBwc0NvbnN0MFtaXSA9IDE7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgICBjYXNlIEdMX0xVTUlOQU5DRToKLSAgICAgICAgcHNDb25zdDBbWV0gPSAxOwot
ICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAg
IHBzQ29uc3QwW1hdID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZ2V0RGV2aWNl
KCktPlNldFBpeGVsU2hhZGVyQ29uc3RhbnRGKDAsIHBzQ29uc3QwLCAxKTsKLQotICAgIHJldHVy
biB0cnVlOwotfQotCi1JRGlyZWN0M0RUZXh0dXJlOSAqQmxpdDo6Y29weVN1cmZhY2VUb1RleHR1
cmUoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QpCi17
Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQot
Ci0gICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gZ2V0RGlzcGxheSgpOwotICAgIElEaXJlY3Qz
RERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwotCi0gICAgRDNEU1VSRkFDRV9ERVNDIHNv
dXJjZURlc2M7Ci0gICAgc3VyZmFjZS0+R2V0RGVzYygmc291cmNlRGVzYyk7Ci0KLSAgICAvLyBD
b3B5IHRoZSByZW5kZXIgdGFyZ2V0IGludG8gYSB0ZXh0dXJlCi0gICAgSURpcmVjdDNEVGV4dHVy
ZTkgKnRleHR1cmU7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUo
c291cmNlUmVjdC5yaWdodCAtIHNvdXJjZVJlY3QubGVmdCwgc291cmNlUmVjdC5ib3R0b20gLSBz
b3VyY2VSZWN0LnRvcCwgMSwgRDNEVVNBR0VfUkVOREVSVEFSR0VULCBzb3VyY2VEZXNjLkZvcm1h
dCwgRDNEUE9PTF9ERUZBVUxULCAmdGV4dHVyZSwgTlVMTCk7Ci0KLSAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCi0gICAgewotICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVP
TUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKLSAgICAgICAgcmV0dXJuIGVycm9y
KEdMX09VVF9PRl9NRU1PUlksIChJRGlyZWN0M0RUZXh0dXJlOSopTlVMTCk7Ci0gICAgfQotCi0g
ICAgSURpcmVjdDNEU3VyZmFjZTkgKnRleHR1cmVTdXJmYWNlOwotICAgIHJlc3VsdCA9IHRleHR1
cmUtPkdldFN1cmZhY2VMZXZlbCgwLCAmdGV4dHVyZVN1cmZhY2UpOwotCi0gICAgaWYgKEZBSUxF
RChyZXN1bHQpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZW
SURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAgICAgIHRleHR1cmUt
PlJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlksIChJRGly
ZWN0M0RUZXh0dXJlOSopTlVMTCk7Ci0gICAgfQotCi0gICAgZGlzcGxheS0+ZW5kU2NlbmUoKTsK
LSAgICByZXN1bHQgPSBkZXZpY2UtPlN0cmV0Y2hSZWN0KHN1cmZhY2UsICZzb3VyY2VSZWN0LCB0
ZXh0dXJlU3VyZmFjZSwgTlVMTCwgRDNEVEVYRl9OT05FKTsKLQotICAgIHRleHR1cmVTdXJmYWNl
LT5SZWxlYXNlKCk7Ci0KLSAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgewotICAgICAgICBB
U1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09V
VE9GTUVNT1JZKTsKLSAgICAgICAgdGV4dHVyZS0+UmVsZWFzZSgpOwotICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgKElEaXJlY3QzRFRleHR1cmU5KilOVUxMKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdGV4dHVyZTsKLX0KLQotdm9pZCBCbGl0OjpzZXRWaWV3cG9ydChjb25z
dCBSRUNUICZzb3VyY2VSZWN0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0KQotewotICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwotCi0gICAgRDNEVklFV1BP
UlQ5IHZwOwotICAgIHZwLlggICAgICA9IHhvZmZzZXQ7Ci0gICAgdnAuWSAgICAgID0geW9mZnNl
dDsKLSAgICB2cC5XaWR0aCAgPSBzb3VyY2VSZWN0LnJpZ2h0IC0gc291cmNlUmVjdC5sZWZ0Owot
ICAgIHZwLkhlaWdodCA9IHNvdXJjZVJlY3QuYm90dG9tIC0gc291cmNlUmVjdC50b3A7Ci0gICAg
dnAuTWluWiAgID0gMC4wZjsKLSAgICB2cC5NYXhaICAgPSAxLjBmOwotICAgIGRldmljZS0+U2V0
Vmlld3BvcnQoJnZwKTsKLQotICAgIGZsb2F0IGhhbGZQaXhlbEFkanVzdFs0XSA9IHsgLTEuMGYv
dnAuV2lkdGgsIDEuMGYvdnAuSGVpZ2h0LCAwLCAwIH07Ci0gICAgZGV2aWNlLT5TZXRWZXJ0ZXhT
aGFkZXJDb25zdGFudEYoMCwgaGFsZlBpeGVsQWRqdXN0LCAxKTsKLX0KLQotdm9pZCBCbGl0Ojpz
ZXRDb21tb25CbGl0U3RhdGUoKQotewotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdl
dERldmljZSgpOwotCi0gICAgZGV2aWNlLT5TZXREZXB0aFN0ZW5jaWxTdXJmYWNlKE5VTEwpOwot
Ci0gICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19GSUxMTU9ERSwgRDNERklMTF9TT0xJ
RCk7Ci0gICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQVRFU1RFTkFCTEUsIEZB
TFNFKTsKLSAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBQkxFTkRFTkFCTEUs
IEZBTFNFKTsKLSAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RD
VUxMX05PTkUpOwotICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ0xJUFBMQU5FRU5B
QkxFLCAwKTsKLSAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFC
TEUsIEQzRENPTE9SV1JJVEVFTkFCTEVfQUxQSEEgfCBEM0RDT0xPUldSSVRFRU5BQkxFX0JMVUUg
fCBEM0RDT0xPUldSSVRFRU5BQkxFX0dSRUVOIHwgRDNEQ09MT1JXUklURUVOQUJMRV9SRUQpOwot
ICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JHQldSSVRFRU5BQkxFLCBGQUxTRSk7
Ci0gICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TQ0lTU09SVEVTVEVOQUJMRSwgRkFM
U0UpOwotCi0gICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9NQUdGSUxURVIs
IEQzRFRFWEZfUE9JTlQpOwotICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBf
TUlORklMVEVSLCBEM0RURVhGX1BPSU5UKTsKLSAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgw
LCBEM0RTQU1QX1NSR0JURVhUVVJFLCBGQUxTRSk7Ci0gICAgZGV2aWNlLT5TZXRTYW1wbGVyU3Rh
dGUoMCwgRDNEU0FNUF9BRERSRVNTVSwgRDNEVEFERFJFU1NfQ0xBTVApOwotICAgIGRldmljZS0+
U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfQUREUkVTU1YsIEQzRFRBRERSRVNTX0NMQU1QKTsK
LQotICAgIFJFQ1Qgc2Npc3NvclJlY3QgPSB7MH07ICAgLy8gU2Npc3NvcmluZyBpcyBkaXNhYmxl
ZCBmb3IgZmxpcHBpbmcsIGJ1dCB3ZSBuZWVkIHRoaXMgdG8gY2FwdHVyZSBhbmQgcmVzdG9yZSB0
aGUgb2xkIHJlY3RhbmdsZQotICAgIGRldmljZS0+U2V0U2Npc3NvclJlY3QoJnNjaXNzb3JSZWN0
KTsKLQotICAgIGZvcihpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAg
ICB7Ci0gICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291cmNlRnJlcShpLCAxKTsKLSAgICB9Ci19
Ci0KLXZvaWQgQmxpdDo6cmVuZGVyKCkKLXsKLSAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBn
ZXREaXNwbGF5KCk7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7
Ci0KLSAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2UoMCwgbVF1YWRWZXJ0
ZXhCdWZmZXIsIDAsIDIgKiBzaXplb2YoZmxvYXQpKTsKLSAgICBociA9IGRldmljZS0+U2V0VmVy
dGV4RGVjbGFyYXRpb24obVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbik7Ci0KLSAgICBkaXNwbGF5LT5z
dGFydFNjZW5lKCk7Ci0gICAgaHIgPSBkZXZpY2UtPkRyYXdQcmltaXRpdmUoRDNEUFRfVFJJQU5H
TEVTVFJJUCwgMCwgMik7Ci19Ci0KLXZvaWQgQmxpdDo6c2F2ZVN0YXRlKCkKLXsKLSAgICBJRGly
ZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKLQotICAgIEhSRVNVTFQgaHI7Ci0K
LSAgICBkZXZpY2UtPkdldERlcHRoU3RlbmNpbFN1cmZhY2UoJm1TYXZlZERlcHRoU3RlbmNpbCk7
Ci0gICAgZGV2aWNlLT5HZXRSZW5kZXJUYXJnZXQoMCwgJm1TYXZlZFJlbmRlclRhcmdldCk7Ci0K
LSAgICBpZiAobVNhdmVkU3RhdGVCbG9jayA9PSBOVUxMKQotICAgIHsKLSAgICAgICAgaHIgPSBk
ZXZpY2UtPkJlZ2luU3RhdGVCbG9jaygpOwotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSB8
fCBociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBFX09VVE9GTUVNT1JZKTsK
LQotICAgICAgICBzZXRDb21tb25CbGl0U3RhdGUoKTsKLQotICAgICAgICBzdGF0aWMgY29uc3Qg
ZmxvYXQgZHVtbXlDb25zdFs0XSA9IHsgMCwgMCwgMCwgMCB9OwotCi0gICAgICAgIGRldmljZS0+
U2V0VmVydGV4U2hhZGVyKE5VTEwpOwotICAgICAgICBkZXZpY2UtPlNldFZlcnRleFNoYWRlckNv
bnN0YW50RigwLCBkdW1teUNvbnN0LCAxKTsKLSAgICAgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRl
cihOVUxMKTsKLSAgICAgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRlckNvbnN0YW50RigwLCBkdW1t
eUNvbnN0LCAxKTsKLQotICAgICAgICBEM0RWSUVXUE9SVDkgZHVtbXlWcDsKLSAgICAgICAgZHVt
bXlWcC5YID0gMDsKLSAgICAgICAgZHVtbXlWcC5ZID0gMDsKLSAgICAgICAgZHVtbXlWcC5XaWR0
aCA9IDE7Ci0gICAgICAgIGR1bW15VnAuSGVpZ2h0ID0gMTsKLSAgICAgICAgZHVtbXlWcC5NaW5a
ID0gMDsKLSAgICAgICAgZHVtbXlWcC5NYXhaID0gMTsKLQotICAgICAgICBkZXZpY2UtPlNldFZp
ZXdwb3J0KCZkdW1teVZwKTsKLQotICAgICAgICBkZXZpY2UtPlNldFRleHR1cmUoMCwgTlVMTCk7
Ci0KLSAgICAgICAgZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2UoMCwgbVF1YWRWZXJ0ZXhCdWZmZXIs
IDAsIDApOwotCi0gICAgICAgIGRldmljZS0+U2V0VmVydGV4RGVjbGFyYXRpb24obVF1YWRWZXJ0
ZXhEZWNsYXJhdGlvbik7Ci0KLSAgICAgICAgaHIgPSBkZXZpY2UtPkVuZFN0YXRlQmxvY2soJm1T
YXZlZFN0YXRlQmxvY2spOwotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSB8fCBociA9PSBE
M0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBFX09VVE9GTUVNT1JZKTsKLSAgICB9Ci0K
LSAgICBBU1NFUlQobVNhdmVkU3RhdGVCbG9jayAhPSBOVUxMKTsKLQotICAgIGlmIChtU2F2ZWRT
dGF0ZUJsb2NrICE9IE5VTEwpCi0gICAgewotICAgICAgICBociA9IG1TYXZlZFN0YXRlQmxvY2st
PkNhcHR1cmUoKTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwotICAgIH0KLX0KLQot
dm9pZCBCbGl0OjpyZXN0b3JlU3RhdGUoKQotewotICAgIElEaXJlY3QzRERldmljZTkgKmRldmlj
ZSA9IGdldERldmljZSgpOwotCi0gICAgZGV2aWNlLT5TZXREZXB0aFN0ZW5jaWxTdXJmYWNlKG1T
YXZlZERlcHRoU3RlbmNpbCk7Ci0gICAgaWYgKG1TYXZlZERlcHRoU3RlbmNpbCAhPSBOVUxMKQot
ICAgIHsKLSAgICAgICAgbVNhdmVkRGVwdGhTdGVuY2lsLT5SZWxlYXNlKCk7Ci0gICAgICAgIG1T
YXZlZERlcHRoU3RlbmNpbCA9IE5VTEw7Ci0gICAgfQotCi0gICAgZGV2aWNlLT5TZXRSZW5kZXJU
YXJnZXQoMCwgbVNhdmVkUmVuZGVyVGFyZ2V0KTsKLSAgICBpZiAobVNhdmVkUmVuZGVyVGFyZ2V0
ICE9IE5VTEwpCi0gICAgewotICAgICAgICBtU2F2ZWRSZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsK
LSAgICAgICAgbVNhdmVkUmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICB9Ci0KLSAgICBBU1NFUlQo
bVNhdmVkU3RhdGVCbG9jayAhPSBOVUxMKTsKLQotICAgIGlmIChtU2F2ZWRTdGF0ZUJsb2NrICE9
IE5VTEwpCi0gICAgewotICAgICAgICBtU2F2ZWRTdGF0ZUJsb2NrLT5BcHBseSgpOwotICAgIH0K
LX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9CbGl0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JsaXQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTliYjQ5NS4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JsaXQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDk0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIEJsaXQuY3BwOiBTdXJmYWNl
IGNvcHkgdXRpbGl0eSBjbGFzcy4KLQotI2lmbmRlZiBMSUJHTEVTVjJfQkxJVF9IXwotI2RlZmlu
ZSBMSUJHTEVTVjJfQkxJVF9IXwotCi0jaW5jbHVkZSA8bWFwPgotCi0jZGVmaW5lIEdMX0FQSUNB
TEwKLSNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KLQotI2luY2x1ZGUgPGQzZDkuaD4KLQotI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0KLSNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgot
Ci1uYW1lc3BhY2UgZ2wKLXsKLWNsYXNzIENvbnRleHQ7Ci0KLWNsYXNzIEJsaXQKLXsKLSAgcHVi
bGljOgotICAgIGV4cGxpY2l0IEJsaXQoQ29udGV4dCAqY29udGV4dCk7Ci0gICAgfkJsaXQoKTsK
LQotICAgIC8vIENvcHkgZnJvbSBzb3VyY2Ugc3VyZmFjZSB0byBkZXN0IHN1cmZhY2UuCi0gICAg
Ly8gc291cmNlUmVjdCwgeG9mZnNldCwgeW9mZnNldCBhcmUgaW4gRDNEIGNvb3JkaW5hdGVzICgw
LDAgaW4gdXBwZXItbGVmdCkKLSAgICBib29sIGNvcHkoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJj
ZSwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KTsKLQotICAgIC8vIENv
cHkgZnJvbSBzb3VyY2Ugc3VyZmFjZSB0byBkZXN0IHN1cmZhY2UuCi0gICAgLy8gc291cmNlUmVj
dCwgeG9mZnNldCwgeW9mZnNldCBhcmUgaW4gRDNEIGNvb3JkaW5hdGVzICgwLDAgaW4gdXBwZXIt
bGVmdCkKLSAgICAvLyBzb3VyY2UgaXMgaW50ZXJwcmV0ZWQgYXMgUkdCQSBhbmQgZGVzdEZvcm1h
dCBzcGVjaWZpZXMgdGhlIGRlc2lyZWQgcmVzdWx0IGZvcm1hdC4gRm9yIGV4YW1wbGUsIGlmIGRl
c3RGb3JtYXQgPSBHTF9SR0IsIHRoZSBhbHBoYSBjaGFubmVsIHdpbGwgYmUgZm9yY2VkIHRvIDAu
Ci0gICAgYm9vbCBmb3JtYXRDb252ZXJ0KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0
IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCk7Ci0KLSAgICAvLyAyeDIgYm94IGZp
bHRlciBzYW1wbGUgZnJvbSBzb3VyY2UgdG8gZGVzdC4KLSAgICAvLyBSZXF1aXJlcyB0aGF0IHNv
dXJjZSBpcyBSR0IoQSkgYW5kIGRlc3QgaGFzIHRoZSBzYW1lIGZvcm1hdCBhcyBzb3VyY2UuCi0g
ICAgYm9vbCBib3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3Vy
ZmFjZTkgKmRlc3QpOwotCi0gIHByaXZhdGU6Ci0gICAgQ29udGV4dCAqbUNvbnRleHQ7Ci0KLSAg
ICBJRGlyZWN0M0RWZXJ0ZXhCdWZmZXI5ICptUXVhZFZlcnRleEJ1ZmZlcjsKLSAgICBJRGlyZWN0
M0RWZXJ0ZXhEZWNsYXJhdGlvbjkgKm1RdWFkVmVydGV4RGVjbGFyYXRpb247Ci0KLSAgICB2b2lk
IGluaXRHZW9tZXRyeSgpOwotCi0gICAgYm9vbCBzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhHTGVu
dW0gZGVzdEZvcm1hdCk7Ci0KLSAgICBJRGlyZWN0M0RUZXh0dXJlOSAqY29weVN1cmZhY2VUb1Rl
eHR1cmUoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3Qp
OwotICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCk7Ci0gICAgdm9pZCBzZXRDb21tb25CbGl0U3RhdGUoKTsKLSAg
ICBSRUNUIGdldFN1cmZhY2VSZWN0KElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKSBjb25zdDsK
LQotICAgIC8vIFRoaXMgZW51bSBpcyB1c2VkIHRvIGluZGV4IG1Db21waWxlZFNoYWRlcnMgYW5k
IG1TaGFkZXJTb3VyY2UuCi0gICAgZW51bSBTaGFkZXJJZAotICAgIHsKLSAgICAgICAgU0hBREVS
X1ZTX1NUQU5EQVJELAotICAgICAgICBTSEFERVJfVlNfRkxJUFksCi0gICAgICAgIFNIQURFUl9Q
U19QQVNTVEhST1VHSCwKLSAgICAgICAgU0hBREVSX1BTX0xVTUlOQU5DRSwKLSAgICAgICAgU0hB
REVSX1BTX0NPTVBPTkVOVE1BU0ssCi0gICAgICAgIFNIQURFUl9DT1VOVAotICAgIH07Ci0KLSAg
ICAvLyBUaGlzIGFjdHVhbGx5IGNvbnRhaW5zIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgb3IgSURp
cmVjdDNEUGl4ZWxTaGFkZXI5IGNhc3RlZCB0byBJVW5rbm93bi4KLSAgICBJVW5rbm93biAqbUNv
bXBpbGVkU2hhZGVyc1tTSEFERVJfQ09VTlRdOwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEQzRFNo
YWRlclR5cGU+Ci0gICAgYm9vbCBzZXRTaGFkZXIoU2hhZGVySWQgc291cmNlLCBjb25zdCBjaGFy
ICpwcm9maWxlLAotICAgICAgICAgICAgICAgICAgIEQzRFNoYWRlclR5cGUgKihlZ2w6OkRpc3Bs
YXk6OipjcmVhdGVTaGFkZXIpKGNvbnN0IERXT1JEICosIHNpemVfdCBsZW5ndGgpLAotICAgICAg
ICAgICAgICAgICAgIEhSRVNVTFQgKFdJTkFQSSBJRGlyZWN0M0REZXZpY2U5Ojoqc2V0U2hhZGVy
KShEM0RTaGFkZXJUeXBlKikpOwotCi0gICAgYm9vbCBzZXRWZXJ0ZXhTaGFkZXIoU2hhZGVySWQg
c2hhZGVyKTsKLSAgICBib29sIHNldFBpeGVsU2hhZGVyKFNoYWRlcklkIHNoYWRlcik7Ci0gICAg
dm9pZCByZW5kZXIoKTsKLQotICAgIHZvaWQgc2F2ZVN0YXRlKCk7Ci0gICAgdm9pZCByZXN0b3Jl
U3RhdGUoKTsKLSAgICBJRGlyZWN0M0RTdGF0ZUJsb2NrOSAqbVNhdmVkU3RhdGVCbG9jazsKLSAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqbVNhdmVkUmVuZGVyVGFyZ2V0OwotICAgIElEaXJlY3QzRFN1
cmZhY2U5ICptU2F2ZWREZXB0aFN0ZW5jaWw7Ci0KLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oQmxpdCk7Ci19OwotfQotCi0jZW5kaWYgICAvLyBMSUJHTEVTVjJfQkxJVF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkZDEyZTNjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDExNyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBCdWZmZXIuY3BwOiBJbXBsZW1l
bnRzIHRoZSBnbDo6QnVmZmVyIGNsYXNzLCByZXByZXNlbnRpbmcgc3RvcmFnZSBvZiB2ZXJ0ZXgg
YW5kL29yCi0vLyBpbmRleCBkYXRhLiBJbXBsZW1lbnRzIEdMIGJ1ZmZlciBvYmplY3RzIGFuZCBy
ZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCi0vLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjkg
cGFnZSAyMS4KLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIKLQotI2luY2x1ZGUgImxp
YkdMRVN2Mi9tYWluLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL1ZlcnRleERhdGFNYW5hZ2VyLmgi
Ci0jaW5jbHVkZSAibGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIGds
Ci17Ci0KLUJ1ZmZlcjo6QnVmZmVyKEdMdWludCBpZCkgOiBSZWZDb3VudE9iamVjdChpZCkKLXsK
LSAgICBtQ29udGVudHMgPSBOVUxMOwotICAgIG1TaXplID0gMDsKLSAgICBtVXNhZ2UgPSBHTF9E
WU5BTUlDX0RSQVc7Ci0KLSAgICBtU3RhdGljVmVydGV4QnVmZmVyID0gTlVMTDsKLSAgICBtU3Rh
dGljSW5kZXhCdWZmZXIgPSBOVUxMOwotICAgIG1Vbm1vZGlmaWVkRGF0YVVzZSA9IDA7Ci19Ci0K
LUJ1ZmZlcjo6fkJ1ZmZlcigpCi17Ci0gICAgZGVsZXRlW10gbUNvbnRlbnRzOwotICAgIGRlbGV0
ZSBtU3RhdGljVmVydGV4QnVmZmVyOwotICAgIGRlbGV0ZSBtU3RhdGljSW5kZXhCdWZmZXI7Ci19
Ci0KLXZvaWQgQnVmZmVyOjpidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIg
c2l6ZSwgR0xlbnVtIHVzYWdlKQotewotICAgIGlmIChzaXplID09IDApCi0gICAgewotICAgICAg
ICBkZWxldGVbXSBtQ29udGVudHM7Ci0gICAgICAgIG1Db250ZW50cyA9IE5VTEw7Ci0gICAgfQot
ICAgIGVsc2UgaWYgKHNpemUgIT0gbVNpemUpCi0gICAgewotICAgICAgICBkZWxldGVbXSBtQ29u
dGVudHM7Ci0gICAgICAgIG1Db250ZW50cyA9IG5ldyBHTHVieXRlW3NpemVdOwotICAgICAgICBt
ZW1zZXQobUNvbnRlbnRzLCAwLCBzaXplKTsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YSAhPSBOVUxM
ICYmIHNpemUgPiAwKQotICAgIHsKLSAgICAgICAgbWVtY3B5KG1Db250ZW50cywgZGF0YSwgc2l6
ZSk7Ci0gICAgfQotCi0gICAgbVNpemUgPSBzaXplOwotICAgIG1Vc2FnZSA9IHVzYWdlOwotCi0g
ICAgaW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKLQotICAgIGlmICh1c2FnZSA9PSBHTF9TVEFUSUNf
RFJBVykKLSAgICB7Ci0gICAgICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBuZXcgU3RhdGljVmVy
dGV4QnVmZmVyKGdldERldmljZSgpKTsKLSAgICAgICAgbVN0YXRpY0luZGV4QnVmZmVyID0gbmV3
IFN0YXRpY0luZGV4QnVmZmVyKGdldERldmljZSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQnVmZmVy
OjpidWZmZXJTdWJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xpbnRw
dHIgb2Zmc2V0KQotewotICAgIG1lbWNweShtQ29udGVudHMgKyBvZmZzZXQsIGRhdGEsIHNpemUp
OwotICAgIAotICAgIGlmICgobVN0YXRpY1ZlcnRleEJ1ZmZlciAmJiBtU3RhdGljVmVydGV4QnVm
ZmVyLT5zaXplKCkgIT0gMCkgfHwgKG1TdGF0aWNJbmRleEJ1ZmZlciAmJiBtU3RhdGljSW5kZXhC
dWZmZXItPnNpemUoKSAhPSAwKSkKLSAgICB7Ci0gICAgICAgIGludmFsaWRhdGVTdGF0aWNEYXRh
KCk7Ci0gICAgfQotCi0gICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKLX0KLQotU3RhdGljVmVy
dGV4QnVmZmVyICpCdWZmZXI6OmdldFN0YXRpY1ZlcnRleEJ1ZmZlcigpCi17Ci0gICAgcmV0dXJu
IG1TdGF0aWNWZXJ0ZXhCdWZmZXI7Ci19Ci0KLVN0YXRpY0luZGV4QnVmZmVyICpCdWZmZXI6Omdl
dFN0YXRpY0luZGV4QnVmZmVyKCkKLXsKLSAgICByZXR1cm4gbVN0YXRpY0luZGV4QnVmZmVyOwot
fQotCi12b2lkIEJ1ZmZlcjo6aW52YWxpZGF0ZVN0YXRpY0RhdGEoKQotewotICAgIGRlbGV0ZSBt
U3RhdGljVmVydGV4QnVmZmVyOwotICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBOVUxMOwotCi0g
ICAgZGVsZXRlIG1TdGF0aWNJbmRleEJ1ZmZlcjsKLSAgICBtU3RhdGljSW5kZXhCdWZmZXIgPSBO
VUxMOwotCi0gICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKLX0KLQotLy8gQ3JlYXRlcyBzdGF0
aWMgYnVmZmVycyBpZiBzdWZmaWNpZW50IHVzZWQgZGF0YSBoYXMgYmVlbiBsZWZ0IHVubW9kaWZp
ZWQKLXZvaWQgQnVmZmVyOjpwcm9tb3RlU3RhdGljVXNhZ2UoaW50IGRhdGFTaXplKQotewotICAg
IGlmICghbVN0YXRpY1ZlcnRleEJ1ZmZlciAmJiAhbVN0YXRpY0luZGV4QnVmZmVyKQotICAgIHsK
LSAgICAgICAgbVVubW9kaWZpZWREYXRhVXNlICs9IGRhdGFTaXplOwotCi0gICAgICAgIGlmICht
VW5tb2RpZmllZERhdGFVc2UgPiAzICogbVNpemUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1T
dGF0aWNWZXJ0ZXhCdWZmZXIgPSBuZXcgU3RhdGljVmVydGV4QnVmZmVyKGdldERldmljZSgpKTsK
LSAgICAgICAgICAgIG1TdGF0aWNJbmRleEJ1ZmZlciA9IG5ldyBTdGF0aWNJbmRleEJ1ZmZlcihn
ZXREZXZpY2UoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCA3MDE5YzRlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBCdWZmZXIuaDogRGVmaW5lcyB0aGUgZ2w6OkJ1ZmZlciBjbGFz
cywgcmVwcmVzZW50aW5nIHN0b3JhZ2Ugb2YgdmVydGV4IGFuZC9vcgotLy8gaW5kZXggZGF0YS4g
SW1wbGVtZW50cyBHTCBidWZmZXIgb2JqZWN0cyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5Lgot
Ly8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi45IHBhZ2UgMjEuCi0KLSNpZm5kZWYgTElC
R0xFU1YyX0JVRkZFUl9IXwotI2RlZmluZSBMSUJHTEVTVjJfQlVGRkVSX0hfCi0KLSNpbmNsdWRl
IDxjc3RkZGVmPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2RlZmluZSBHTF9BUElDQUxMCi0jaW5j
bHVkZSA8R0xFUzIvZ2wyLmg+Ci0KLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2lu
Y2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLWNsYXNz
IFN0YXRpY1ZlcnRleEJ1ZmZlcjsKLWNsYXNzIFN0YXRpY0luZGV4QnVmZmVyOwotCi1jbGFzcyBC
dWZmZXIgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QKLXsKLSAgcHVibGljOgotICAgIGV4cGxpY2l0
IEJ1ZmZlcihHTHVpbnQgaWQpOwotCi0gICAgdmlydHVhbCB+QnVmZmVyKCk7Ci0KLSAgICB2b2lk
IGJ1ZmZlckRhdGEoY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGVudW0gdXNh
Z2UpOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShjb25zdCB2b2lkICpkYXRhLCBHTHNpemVpcHRy
IHNpemUsIEdMaW50cHRyIG9mZnNldCk7Ci0KLSAgICB2b2lkICpkYXRhKCkgeyByZXR1cm4gbUNv
bnRlbnRzOyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtU2l6ZTsgfQotICAg
IEdMZW51bSB1c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1Vc2FnZTsgfQotCi0gICAgU3RhdGljVmVy
dGV4QnVmZmVyICpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKTsKLSAgICBTdGF0aWNJbmRleEJ1ZmZl
ciAqZ2V0U3RhdGljSW5kZXhCdWZmZXIoKTsKLSAgICB2b2lkIGludmFsaWRhdGVTdGF0aWNEYXRh
KCk7Ci0gICAgdm9pZCBwcm9tb3RlU3RhdGljVXNhZ2UoaW50IGRhdGFTaXplKTsKLQotICBwcml2
YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCdWZmZXIpOwotCi0gICAgR0x1Ynl0
ZSAqbUNvbnRlbnRzOwotICAgIEdMc2l6ZWlwdHIgbVNpemU7Ci0gICAgR0xlbnVtIG1Vc2FnZTsK
LQotICAgIFN0YXRpY1ZlcnRleEJ1ZmZlciAqbVN0YXRpY1ZlcnRleEJ1ZmZlcjsKLSAgICBTdGF0
aWNJbmRleEJ1ZmZlciAqbVN0YXRpY0luZGV4QnVmZmVyOwotICAgIEdMc2l6ZWlwdHIgbVVubW9k
aWZpZWREYXRhVXNlOwotfTsKLQotfQotCi0jZW5kaWYgICAvLyBMSUJHTEVTVjJfQlVGRkVSX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRl
eHQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjZjZTY2Ny4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDU1MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBDb250ZXh0
LmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6OkNvbnRleHQgY2xhc3MsIG1hbmFnaW5nIGFsbCBHTCBz
dGF0ZSBhbmQgcGVyZm9ybWluZwotLy8gcmVuZGVyaW5nIG9wZXJhdGlvbnMuIEl0IGlzIHRoZSBH
TEVTMiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBFR0xDb250ZXh0LgotCi0jaW5jbHVkZSAi
bGliR0xFU3YyL0NvbnRleHQuaCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxz
c3RyZWFtPgotCi0jaW5jbHVkZSAibGliRUdML0Rpc3BsYXkuaCIKLQotI2luY2x1ZGUgImxpYkdM
RVN2Mi9tYWluLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL21hdGh1dGlsLmgiCi0jaW5jbHVkZSAi
bGliR0xFU3YyL3V0aWxpdGllcy5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9CbGl0LmgiCi0jaW5j
bHVkZSAibGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9C
dWZmZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIKLSNpbmNsdWRlICJsaWJHTEVT
djIvRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbS5oIgotI2luY2x1
ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL1F1ZXJ5
LmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgotI2luY2x1ZGUgImxpYkdM
RVN2Mi9TaGFkZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgotI2luY2x1ZGUg
ImxpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9JbmRl
eERhdGFNYW5hZ2VyLmgiCi0KLSN1bmRlZiBuZWFyCi0jdW5kZWYgZmFyCi0KLW5hbWVzcGFjZSBn
bAotewotc3RhdGljIGNvbnN0IGNoYXIqIG1ha2VTdGF0aWNTdHJpbmcoY29uc3Qgc3RkOjpzdHJp
bmcmIHN0cikKLXsKLSAgICBzdGF0aWMgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHN0cmluZ3M7Ci0g
ICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+OjppdGVyYXRvciBpdCA9IHN0cmluZ3MuZmluZChzdHIp
OwotICAgIGlmIChpdCAhPSBzdHJpbmdzLmVuZCgpKQotICAgICAgcmV0dXJuIGl0LT5jX3N0cigp
OwotCi0gICAgcmV0dXJuIHN0cmluZ3MuaW5zZXJ0KHN0cikuZmlyc3QtPmNfc3RyKCk7Ci19Ci0K
LUNvbnRleHQ6OkNvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywgY29uc3QgZ2w6OkNv
bnRleHQgKnNoYXJlQ29udGV4dCwgYm9vbCBub3RpZnlSZXNldHMsIGJvb2wgcm9idXN0QWNjZXNz
KSA6IG1Db25maWcoY29uZmlnKQotewotICAgIEFTU0VSVChyb2J1c3RBY2Nlc3MgPT0gZmFsc2Up
OyAgIC8vIFVuaW1wbGVtZW50ZWQKLQotICAgIG1EaXNwbGF5ID0gTlVMTDsKLSAgICBtRGV2aWNl
ID0gTlVMTDsKLQotICAgIG1GZW5jZUhhbmRsZUFsbG9jYXRvci5zZXRCYXNlSGFuZGxlKDApOwot
Ci0gICAgc2V0Q2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLQotICAgIG1TdGF0
ZS5kZXB0aENsZWFyVmFsdWUgPSAxLjBmOwotICAgIG1TdGF0ZS5zdGVuY2lsQ2xlYXJWYWx1ZSA9
IDA7Ci0KLSAgICBtU3RhdGUuY3VsbEZhY2UgPSBmYWxzZTsKLSAgICBtU3RhdGUuY3VsbE1vZGUg
PSBHTF9CQUNLOwotICAgIG1TdGF0ZS5mcm9udEZhY2UgPSBHTF9DQ1c7Ci0gICAgbVN0YXRlLmRl
cHRoVGVzdCA9IGZhbHNlOwotICAgIG1TdGF0ZS5kZXB0aEZ1bmMgPSBHTF9MRVNTOwotICAgIG1T
dGF0ZS5ibGVuZCA9IGZhbHNlOwotICAgIG1TdGF0ZS5zb3VyY2VCbGVuZFJHQiA9IEdMX09ORTsK
LSAgICBtU3RhdGUuc291cmNlQmxlbmRBbHBoYSA9IEdMX09ORTsKLSAgICBtU3RhdGUuZGVzdEJs
ZW5kUkdCID0gR0xfWkVSTzsKLSAgICBtU3RhdGUuZGVzdEJsZW5kQWxwaGEgPSBHTF9aRVJPOwot
ICAgIG1TdGF0ZS5ibGVuZEVxdWF0aW9uUkdCID0gR0xfRlVOQ19BREQ7Ci0gICAgbVN0YXRlLmJs
ZW5kRXF1YXRpb25BbHBoYSA9IEdMX0ZVTkNfQUREOwotICAgIG1TdGF0ZS5ibGVuZENvbG9yLnJl
ZCA9IDA7Ci0gICAgbVN0YXRlLmJsZW5kQ29sb3IuZ3JlZW4gPSAwOwotICAgIG1TdGF0ZS5ibGVu
ZENvbG9yLmJsdWUgPSAwOwotICAgIG1TdGF0ZS5ibGVuZENvbG9yLmFscGhhID0gMDsKLSAgICBt
U3RhdGUuc3RlbmNpbFRlc3QgPSBmYWxzZTsKLSAgICBtU3RhdGUuc3RlbmNpbEZ1bmMgPSBHTF9B
TFdBWVM7Ci0gICAgbVN0YXRlLnN0ZW5jaWxSZWYgPSAwOwotICAgIG1TdGF0ZS5zdGVuY2lsTWFz
ayA9IC0xOwotICAgIG1TdGF0ZS5zdGVuY2lsV3JpdGVtYXNrID0gLTE7Ci0gICAgbVN0YXRlLnN0
ZW5jaWxCYWNrRnVuYyA9IEdMX0FMV0FZUzsKLSAgICBtU3RhdGUuc3RlbmNpbEJhY2tSZWYgPSAw
OwotICAgIG1TdGF0ZS5zdGVuY2lsQmFja01hc2sgPSAtIDE7Ci0gICAgbVN0YXRlLnN0ZW5jaWxC
YWNrV3JpdGVtYXNrID0gLTE7Ci0gICAgbVN0YXRlLnN0ZW5jaWxGYWlsID0gR0xfS0VFUDsKLSAg
ICBtU3RhdGUuc3RlbmNpbFBhc3NEZXB0aEZhaWwgPSBHTF9LRUVQOwotICAgIG1TdGF0ZS5zdGVu
Y2lsUGFzc0RlcHRoUGFzcyA9IEdMX0tFRVA7Ci0gICAgbVN0YXRlLnN0ZW5jaWxCYWNrRmFpbCA9
IEdMX0tFRVA7Ci0gICAgbVN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoRmFpbCA9IEdMX0tFRVA7
Ci0gICAgbVN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcyA9IEdMX0tFRVA7Ci0gICAgbVN0
YXRlLnBvbHlnb25PZmZzZXRGaWxsID0gZmFsc2U7Ci0gICAgbVN0YXRlLnBvbHlnb25PZmZzZXRG
YWN0b3IgPSAwLjBmOwotICAgIG1TdGF0ZS5wb2x5Z29uT2Zmc2V0VW5pdHMgPSAwLjBmOwotICAg
IG1TdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2UgPSBmYWxzZTsKLSAgICBtU3RhdGUuc2FtcGxl
Q292ZXJhZ2UgPSBmYWxzZTsKLSAgICBtU3RhdGUuc2FtcGxlQ292ZXJhZ2VWYWx1ZSA9IDEuMGY7
Ci0gICAgbVN0YXRlLnNhbXBsZUNvdmVyYWdlSW52ZXJ0ID0gZmFsc2U7Ci0gICAgbVN0YXRlLnNj
aXNzb3JUZXN0ID0gZmFsc2U7Ci0gICAgbVN0YXRlLmRpdGhlciA9IHRydWU7Ci0gICAgbVN0YXRl
LmdlbmVyYXRlTWlwbWFwSGludCA9IEdMX0RPTlRfQ0FSRTsKLSAgICBtU3RhdGUuZnJhZ21lbnRT
aGFkZXJEZXJpdmF0aXZlSGludCA9IEdMX0RPTlRfQ0FSRTsKLQotICAgIG1TdGF0ZS5saW5lV2lk
dGggPSAxLjBmOwotCi0gICAgbVN0YXRlLnZpZXdwb3J0WCA9IDA7Ci0gICAgbVN0YXRlLnZpZXdw
b3J0WSA9IDA7Ci0gICAgbVN0YXRlLnZpZXdwb3J0V2lkdGggPSBjb25maWctPm1EaXNwbGF5TW9k
ZS5XaWR0aDsKLSAgICBtU3RhdGUudmlld3BvcnRIZWlnaHQgPSBjb25maWctPm1EaXNwbGF5TW9k
ZS5IZWlnaHQ7Ci0gICAgbVN0YXRlLnpOZWFyID0gMC4wZjsKLSAgICBtU3RhdGUuekZhciA9IDEu
MGY7Ci0KLSAgICBtU3RhdGUuc2Npc3NvclggPSAwOwotICAgIG1TdGF0ZS5zY2lzc29yWSA9IDA7
Ci0gICAgbVN0YXRlLnNjaXNzb3JXaWR0aCA9IGNvbmZpZy0+bURpc3BsYXlNb2RlLldpZHRoOwot
ICAgIG1TdGF0ZS5zY2lzc29ySGVpZ2h0ID0gY29uZmlnLT5tRGlzcGxheU1vZGUuSGVpZ2h0Owot
Ci0gICAgbVN0YXRlLmNvbG9yTWFza1JlZCA9IHRydWU7Ci0gICAgbVN0YXRlLmNvbG9yTWFza0dy
ZWVuID0gdHJ1ZTsKLSAgICBtU3RhdGUuY29sb3JNYXNrQmx1ZSA9IHRydWU7Ci0gICAgbVN0YXRl
LmNvbG9yTWFza0FscGhhID0gdHJ1ZTsKLSAgICBtU3RhdGUuZGVwdGhNYXNrID0gdHJ1ZTsKLQot
ICAgIGlmIChzaGFyZUNvbnRleHQgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIG1SZXNvdXJjZU1h
bmFnZXIgPSBzaGFyZUNvbnRleHQtPm1SZXNvdXJjZU1hbmFnZXI7Ci0gICAgICAgIG1SZXNvdXJj
ZU1hbmFnZXItPmFkZFJlZigpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtUmVz
b3VyY2VNYW5hZ2VyID0gbmV3IFJlc291cmNlTWFuYWdlcigpOwotICAgIH0KLQotICAgIC8vIFtP
cGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuNyBwYWdlIDgzOgotICAgIC8vIEluIHRoZSBpbml0
aWFsIHN0YXRlLCBURVhUVVJFXzJEIGFuZCBURVhUVVJFX0NVQkVfTUFQIGhhdmUgdHdvZGltZW5z
aW9uYWwKLSAgICAvLyBhbmQgY3ViZSBtYXAgdGV4dHVyZSBzdGF0ZSB2ZWN0b3JzIHJlc3BlY3Rp
dmVseSBhc3NvY2lhdGVkIHdpdGggdGhlbS4KLSAgICAvLyBJbiBvcmRlciB0aGF0IGFjY2VzcyB0
byB0aGVzZSBpbml0aWFsIHRleHR1cmVzIG5vdCBiZSBsb3N0LCB0aGV5IGFyZSB0cmVhdGVkIGFz
IHRleHR1cmUKLSAgICAvLyBvYmplY3RzIGFsbCBvZiB3aG9zZSBuYW1lcyBhcmUgMC4KLQotICAg
IG1UZXh0dXJlMkRaZXJvLnNldChuZXcgVGV4dHVyZTJEKDApKTsKLSAgICBtVGV4dHVyZUN1YmVN
YXBaZXJvLnNldChuZXcgVGV4dHVyZUN1YmVNYXAoMCkpOwotCi0gICAgbVN0YXRlLmFjdGl2ZVNh
bXBsZXIgPSAwOwotICAgIGJpbmRBcnJheUJ1ZmZlcigwKTsKLSAgICBiaW5kRWxlbWVudEFycmF5
QnVmZmVyKDApOwotICAgIGJpbmRUZXh0dXJlQ3ViZU1hcCgwKTsKLSAgICBiaW5kVGV4dHVyZTJE
KDApOwotICAgIGJpbmRSZWFkRnJhbWVidWZmZXIoMCk7Ci0gICAgYmluZERyYXdGcmFtZWJ1ZmZl
cigwKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVyKDApOwotCi0gICAgbVN0YXRlLmN1cnJlbnRQcm9n
cmFtID0gMDsKLSAgICBtQ3VycmVudFByb2dyYW1CaW5hcnkuc2V0KE5VTEwpOwotCi0gICAgbVN0
YXRlLnBhY2tBbGlnbm1lbnQgPSA0OwotICAgIG1TdGF0ZS51bnBhY2tBbGlnbm1lbnQgPSA0Owot
ICAgIG1TdGF0ZS5wYWNrUmV2ZXJzZVJvd09yZGVyID0gZmFsc2U7Ci0KLSAgICBtRXh0ZW5zaW9u
U3RyaW5nID0gTlVMTDsKLSAgICBtUmVuZGVyZXJTdHJpbmcgPSBOVUxMOwotCi0gICAgbVZlcnRl
eERhdGFNYW5hZ2VyID0gTlVMTDsKLSAgICBtSW5kZXhEYXRhTWFuYWdlciA9IE5VTEw7Ci0gICAg
bUJsaXQgPSBOVUxMOwotICAgIG1MaW5lTG9vcElCID0gTlVMTDsKLQotICAgIG1JbnZhbGlkRW51
bSA9IGZhbHNlOwotICAgIG1JbnZhbGlkVmFsdWUgPSBmYWxzZTsKLSAgICBtSW52YWxpZE9wZXJh
dGlvbiA9IGZhbHNlOwotICAgIG1PdXRPZk1lbW9yeSA9IGZhbHNlOwotICAgIG1JbnZhbGlkRnJh
bWVidWZmZXJPcGVyYXRpb24gPSBmYWxzZTsKLQotICAgIG1IYXNCZWVuQ3VycmVudCA9IGZhbHNl
OwotICAgIG1Db250ZXh0TG9zdCA9IGZhbHNlOwotICAgIG1SZXNldFN0YXR1cyA9IEdMX05PX0VS
Uk9SOwotICAgIG1SZXNldFN0cmF0ZWd5ID0gKG5vdGlmeVJlc2V0cyA/IEdMX0xPU0VfQ09OVEVY
VF9PTl9SRVNFVF9FWFQgOiBHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUKTsKLSAgICBtUm9i
dXN0QWNjZXNzID0gcm9idXN0QWNjZXNzOwotCi0gICAgbVN1cHBvcnRzRFhUMVRleHR1cmVzID0g
ZmFsc2U7Ci0gICAgbVN1cHBvcnRzRFhUM1RleHR1cmVzID0gZmFsc2U7Ci0gICAgbVN1cHBvcnRz
RFhUNVRleHR1cmVzID0gZmFsc2U7Ci0gICAgbVN1cHBvcnRzRXZlbnRRdWVyaWVzID0gZmFsc2U7
Ci0gICAgbVN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcyA9IGZhbHNlOwotICAgIG1OdW1Db21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMgPSAwOwotICAgIG1NYXhTdXBwb3J0ZWRTYW1wbGVzID0gMDsKLSAg
ICBtTWFza2VkQ2xlYXJTYXZlZFN0YXRlID0gTlVMTDsKLSAgICBtYXJrQWxsU3RhdGVEaXJ0eSgp
OwotfQotCi1Db250ZXh0Ojp+Q29udGV4dCgpCi17Ci0gICAgaWYgKG1TdGF0ZS5jdXJyZW50UHJv
Z3JhbSAhPSAwKQotICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IG1SZXNv
dXJjZU1hbmFnZXItPmdldFByb2dyYW0obVN0YXRlLmN1cnJlbnRQcm9ncmFtKTsKLSAgICAgICAg
aWYgKHByb2dyYW1PYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHByb2dyYW1PYmplY3Qt
PnJlbGVhc2UoKTsKLSAgICAgICAgfQotICAgICAgICBtU3RhdGUuY3VycmVudFByb2dyYW0gPSAw
OwotICAgIH0KLSAgICBtQ3VycmVudFByb2dyYW1CaW5hcnkuc2V0KE5VTEwpOwotCi0gICAgd2hp
bGUgKCFtRnJhbWVidWZmZXJNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZUZyYW1l
YnVmZmVyKG1GcmFtZWJ1ZmZlck1hcC5iZWdpbigpLT5maXJzdCk7Ci0gICAgfQotCi0gICAgd2hp
bGUgKCFtRmVuY2VNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZUZlbmNlKG1GZW5j
ZU1hcC5iZWdpbigpLT5maXJzdCk7Ci0gICAgfQotCi0gICAgd2hpbGUgKCFtUXVlcnlNYXAuZW1w
dHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZVF1ZXJ5KG1RdWVyeU1hcC5iZWdpbigpLT5maXJz
dCk7Ci0gICAgfQotCi0gICAgd2hpbGUgKCFtTXVsdGlTYW1wbGVTdXBwb3J0LmVtcHR5KCkpCi0g
ICAgewotICAgICAgICBkZWxldGUgW10gbU11bHRpU2FtcGxlU3VwcG9ydC5iZWdpbigpLT5zZWNv
bmQ7Ci0gICAgICAgIG1NdWx0aVNhbXBsZVN1cHBvcnQuZXJhc2UobU11bHRpU2FtcGxlU3VwcG9y
dC5iZWdpbigpKTsKLSAgICB9Ci0KLSAgICBmb3IgKGludCB0eXBlID0gMDsgdHlwZSA8IFRFWFRV
UkVfVFlQRV9DT1VOVDsgdHlwZSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgc2FtcGxlciA9
IDA7IHNhbXBsZXIgPCBNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU19WVEY7IHNhbXBs
ZXIrKykKLSAgICAgICAgewotICAgICAgICAgICAgbVN0YXRlLnNhbXBsZXJUZXh0dXJlW3R5cGVd
W3NhbXBsZXJdLnNldChOVUxMKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoaW50IHR5
cGUgPSAwOyB0eXBlIDwgVEVYVFVSRV9UWVBFX0NPVU5UOyB0eXBlKyspCi0gICAgewotICAgICAg
ICBtSW5jb21wbGV0ZVRleHR1cmVzW3R5cGVdLnNldChOVUxMKTsKLSAgICB9Ci0KLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQotICAgIHsKLSAgICAgICAg
bVN0YXRlLnZlcnRleEF0dHJpYnV0ZVtpXS5tQm91bmRCdWZmZXIuc2V0KE5VTEwpOwotICAgIH0K
LQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUVVFUllfVFlQRV9DT1VOVDsgaSsrKQotICAgIHsK
LSAgICAgICAgbVN0YXRlLmFjdGl2ZVF1ZXJ5W2ldLnNldChOVUxMKTsKLSAgICB9Ci0KLSAgICBt
U3RhdGUuYXJyYXlCdWZmZXIuc2V0KE5VTEwpOwotICAgIG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZm
ZXIuc2V0KE5VTEwpOwotICAgIG1TdGF0ZS5yZW5kZXJidWZmZXIuc2V0KE5VTEwpOwotCi0gICAg
bVRleHR1cmUyRFplcm8uc2V0KE5VTEwpOwotICAgIG1UZXh0dXJlQ3ViZU1hcFplcm8uc2V0KE5V
TEwpOwotCi0gICAgZGVsZXRlIG1WZXJ0ZXhEYXRhTWFuYWdlcjsKLSAgICBkZWxldGUgbUluZGV4
RGF0YU1hbmFnZXI7Ci0gICAgZGVsZXRlIG1CbGl0OwotICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsK
LQotICAgIGlmIChtTWFza2VkQ2xlYXJTYXZlZFN0YXRlKQotICAgIHsKLSAgICAgICAgbU1hc2tl
ZENsZWFyU2F2ZWRTdGF0ZS0+UmVsZWFzZSgpOwotICAgIH0KLQotICAgIG1SZXNvdXJjZU1hbmFn
ZXItPnJlbGVhc2UoKTsKLX0KLQotdm9pZCBDb250ZXh0OjptYWtlQ3VycmVudChlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKLXsKLSAgICBtRGlzcGxheSA9IGRp
c3BsYXk7Ci0gICAgbURldmljZSA9IG1EaXNwbGF5LT5nZXREZXZpY2UoKTsKLQotICAgIGlmICgh
bUhhc0JlZW5DdXJyZW50KQotICAgIHsKLSAgICAgICAgbURldmljZUNhcHMgPSBtRGlzcGxheS0+
Z2V0RGV2aWNlQ2FwcygpOwotCi0gICAgICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IG5ldyBWZXJ0
ZXhEYXRhTWFuYWdlcih0aGlzLCBtRGV2aWNlKTsKLSAgICAgICAgbUluZGV4RGF0YU1hbmFnZXIg
PSBuZXcgSW5kZXhEYXRhTWFuYWdlcih0aGlzLCBtRGV2aWNlKTsKLSAgICAgICAgbUJsaXQgPSBu
ZXcgQmxpdCh0aGlzKTsKLQotICAgICAgICBtU3VwcG9ydHNTaGFkZXJNb2RlbDMgPSBtRGV2aWNl
Q2Fwcy5QaXhlbFNoYWRlclZlcnNpb24gPj0gRDNEUFNfVkVSU0lPTigzLCAwKTsKLSAgICAgICAg
bU1heGltdW1Qb2ludFNpemUgPSBtRGV2aWNlQ2Fwcy5NYXhQb2ludFNpemU7Ci0gICAgICAgIG1T
dXBwb3J0c1ZlcnRleFRleHR1cmUgPSBtRGlzcGxheS0+Z2V0VmVydGV4VGV4dHVyZVN1cHBvcnQo
KTsKLSAgICAgICAgbVN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSA9IG1EaXNwbGF5LT5nZXROb25Q
b3dlcjJUZXh0dXJlU3VwcG9ydCgpOwotICAgICAgICBtU3VwcG9ydHNJbnN0YW5jaW5nID0gbURp
c3BsYXktPmdldEluc3RhbmNpbmdTdXBwb3J0KCk7Ci0KLSAgICAgICAgbU1heFRleHR1cmVEaW1l
bnNpb24gPSBzdGQ6Om1pbihzdGQ6Om1pbigoaW50KW1EZXZpY2VDYXBzLk1heFRleHR1cmVXaWR0
aCwgKGludCltRGV2aWNlQ2Fwcy5NYXhUZXh0dXJlSGVpZ2h0KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoaW50KWdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVS
RV9TSVpFKTsKLSAgICAgICAgbU1heEN1YmVUZXh0dXJlRGltZW5zaW9uID0gc3RkOjptaW4obU1h
eFRleHR1cmVEaW1lbnNpb24sIChpbnQpZ2w6OklNUExFTUVOVEFUSU9OX01BWF9DVUJFX01BUF9U
RVhUVVJFX1NJWkUpOwotICAgICAgICBtTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9uID0gbU1heFRl
eHR1cmVEaW1lbnNpb247Ci0gICAgICAgIG1NYXhUZXh0dXJlTGV2ZWwgPSBsb2cyKG1NYXhUZXh0
dXJlRGltZW5zaW9uKSArIDE7Ci0gICAgICAgIG1NYXhUZXh0dXJlQW5pc290cm9weSA9IG1EaXNw
bGF5LT5nZXRUZXh0dXJlRmlsdGVyQW5pc290cm9weVN1cHBvcnQoKTsKLSAgICAgICAgVFJBQ0Uo
Ik1heFRleHR1cmVEaW1lbnNpb249JWQsIE1heEN1YmVUZXh0dXJlRGltZW5zaW9uPSVkLCBNYXhS
ZW5kZXJidWZmZXJEaW1lbnNpb249JWQsIE1heFRleHR1cmVMZXZlbD0lZCwgTWF4VGV4dHVyZUFu
aXNvdHJvcHk9JWYiLAotICAgICAgICAgICAgICBtTWF4VGV4dHVyZURpbWVuc2lvbiwgbU1heEN1
YmVUZXh0dXJlRGltZW5zaW9uLCBtTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9uLCBtTWF4VGV4dHVy
ZUxldmVsLCBtTWF4VGV4dHVyZUFuaXNvdHJvcHkpOwotCi0gICAgICAgIGNvbnN0IEQzREZPUk1B
VCByZW5kZXJCdWZmZXJGb3JtYXRzW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICBEM0RGTVRf
QThSOEc4QjgsCi0gICAgICAgICAgICBEM0RGTVRfWDhSOEc4QjgsCi0gICAgICAgICAgICBEM0RG
TVRfUjVHNkI1LAotICAgICAgICAgICAgRDNERk1UX0QyNFM4Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgaW50IG1heCA9IDA7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6
ZW9mKHJlbmRlckJ1ZmZlckZvcm1hdHMpIC8gc2l6ZW9mKEQzREZPUk1BVCk7ICsraSkKLSAgICAg
ICAgewotICAgICAgICAgICAgYm9vbCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1V
TFRJU0FNUExFXzE2X1NBTVBMRVMgKyAxXTsKLSAgICAgICAgICAgIG1EaXNwbGF5LT5nZXRNdWx0
aVNhbXBsZVN1cHBvcnQocmVuZGVyQnVmZmVyRm9ybWF0c1tpXSwgbXVsdGlzYW1wbGVBcnJheSk7
Ci0gICAgICAgICAgICBtTXVsdGlTYW1wbGVTdXBwb3J0W3JlbmRlckJ1ZmZlckZvcm1hdHNbaV1d
ID0gbXVsdGlzYW1wbGVBcnJheTsKLQotICAgICAgICAgICAgZm9yIChpbnQgaiA9IEQzRE1VTFRJ
U0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1qKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGlmIChtdWx0aXNhbXBsZUFycmF5W2pdICYmIGogIT0gRDNETVVMVElTQU1QTEVfTk9O
TUFTS0FCTEUgJiYgaiA+IG1heCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIG1heCA9IGo7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgbU1heFN1cHBvcnRlZFNhbXBsZXMgPSBtYXg7Ci0KLSAgICAgICAgbVN1cHBv
cnRzRXZlbnRRdWVyaWVzID0gbURpc3BsYXktPmdldEV2ZW50UXVlcnlTdXBwb3J0KCk7Ci0gICAg
ICAgIG1TdXBwb3J0c09jY2x1c2lvblF1ZXJpZXMgPSBtRGlzcGxheS0+Z2V0T2NjbHVzaW9uUXVl
cnlTdXBwb3J0KCk7Ci0gICAgICAgIG1TdXBwb3J0c0RYVDFUZXh0dXJlcyA9IG1EaXNwbGF5LT5n
ZXREWFQxVGV4dHVyZVN1cHBvcnQoKTsKLSAgICAgICAgbVN1cHBvcnRzRFhUM1RleHR1cmVzID0g
bURpc3BsYXktPmdldERYVDNUZXh0dXJlU3VwcG9ydCgpOwotICAgICAgICBtU3VwcG9ydHNEWFQ1
VGV4dHVyZXMgPSBtRGlzcGxheS0+Z2V0RFhUNVRleHR1cmVTdXBwb3J0KCk7Ci0gICAgICAgIG1T
dXBwb3J0c0Zsb2F0MzJUZXh0dXJlcyA9IG1EaXNwbGF5LT5nZXRGbG9hdDMyVGV4dHVyZVN1cHBv
cnQoJm1TdXBwb3J0c0Zsb2F0MzJMaW5lYXJGaWx0ZXIsICZtU3VwcG9ydHNGbG9hdDMyUmVuZGVy
YWJsZVRleHR1cmVzKTsKLSAgICAgICAgbVN1cHBvcnRzRmxvYXQxNlRleHR1cmVzID0gbURpc3Bs
YXktPmdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydCgmbVN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRl
ciwgJm1TdXBwb3J0c0Zsb2F0MTZSZW5kZXJhYmxlVGV4dHVyZXMpOwotICAgICAgICBtU3VwcG9y
dHNMdW1pbmFuY2VUZXh0dXJlcyA9IG1EaXNwbGF5LT5nZXRMdW1pbmFuY2VUZXh0dXJlU3VwcG9y
dCgpOwotICAgICAgICBtU3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVzID0gbURpc3BsYXkt
PmdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKTsKLSAgICAgICAgbVN1cHBvcnRzRGVw
dGhUZXh0dXJlcyA9IG1EaXNwbGF5LT5nZXREZXB0aFRleHR1cmVTdXBwb3J0KCk7Ci0gICAgICAg
IG1TdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5ID0gbU1heFRleHR1cmVBbmlzb3Ryb3B5
ID49IDIuMGY7Ci0gICAgICAgIG1TdXBwb3J0c0Rlcml2YXRpdmVJbnN0cnVjdGlvbnMgPSAobURl
dmljZUNhcHMuUFMyMENhcHMuQ2FwcyAmIEQzRFBTMjBDQVBTX0dSQURJRU5USU5TVFJVQ1RJT05T
KSAhPSAwOwotICAgICAgICBtU3VwcG9ydHMzMmJpdEluZGljZXMgPSBtRGV2aWNlQ2Fwcy5NYXhW
ZXJ0ZXhJbmRleCA+PSAoMSA8PCAxNik7Ci0KLSAgICAgICAgbU51bUNvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0cyA9IDA7Ci0gICAgICAgIGlmIChzdXBwb3J0c0RYVDFUZXh0dXJlcygpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzICs9IDI7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgKz0gMTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoc3VwcG9ydHNEWFQ1VGV4dHVyZXMoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyArPSAxOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaW5pdEV4dGVuc2lvblN0cmluZygpOwotICAgICAgICBpbml0UmVuZGVyZXJTdHJpbmcoKTsK
LQotICAgICAgICBtU3RhdGUudmlld3BvcnRYID0gMDsKLSAgICAgICAgbVN0YXRlLnZpZXdwb3J0
WSA9IDA7Ci0gICAgICAgIG1TdGF0ZS52aWV3cG9ydFdpZHRoID0gc3VyZmFjZS0+Z2V0V2lkdGgo
KTsKLSAgICAgICAgbVN0YXRlLnZpZXdwb3J0SGVpZ2h0ID0gc3VyZmFjZS0+Z2V0SGVpZ2h0KCk7
Ci0KLSAgICAgICAgbVN0YXRlLnNjaXNzb3JYID0gMDsKLSAgICAgICAgbVN0YXRlLnNjaXNzb3JZ
ID0gMDsKLSAgICAgICAgbVN0YXRlLnNjaXNzb3JXaWR0aCA9IHN1cmZhY2UtPmdldFdpZHRoKCk7
Ci0gICAgICAgIG1TdGF0ZS5zY2lzc29ySGVpZ2h0ID0gc3VyZmFjZS0+Z2V0SGVpZ2h0KCk7Ci0K
LSAgICAgICAgbUhhc0JlZW5DdXJyZW50ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBXcmFwIHRo
ZSBleGlzdGluZyBEaXJlY3QzRCA5IHJlc291cmNlcyBpbnRvIEdMIG9iamVjdHMgYW5kIGFzc2ln
biB0aGVtIHRvIHRoZSAnMCcgbmFtZXMKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVmYXVsdFJl
bmRlclRhcmdldCA9IHN1cmZhY2UtPmdldFJlbmRlclRhcmdldCgpOwotICAgIElEaXJlY3QzRFN1
cmZhY2U5ICpkZXB0aFN0ZW5jaWwgPSBzdXJmYWNlLT5nZXREZXB0aFN0ZW5jaWwoKTsKLQotICAg
IENvbG9yYnVmZmVyICpjb2xvcmJ1ZmZlclplcm8gPSBuZXcgQ29sb3JidWZmZXIoZGVmYXVsdFJl
bmRlclRhcmdldCk7Ci0gICAgRGVwdGhTdGVuY2lsYnVmZmVyICpkZXB0aFN0ZW5jaWxidWZmZXJa
ZXJvID0gbmV3IERlcHRoU3RlbmNpbGJ1ZmZlcihkZXB0aFN0ZW5jaWwpOwotICAgIEZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlclplcm8gPSBuZXcgRGVmYXVsdEZyYW1lYnVmZmVyKGNvbG9yYnVmZmVy
WmVybywgZGVwdGhTdGVuY2lsYnVmZmVyWmVybyk7Ci0KLSAgICBzZXRGcmFtZWJ1ZmZlclplcm8o
ZnJhbWVidWZmZXJaZXJvKTsKLQotICAgIGlmIChkZWZhdWx0UmVuZGVyVGFyZ2V0KQotICAgIHsK
LSAgICAgICAgZGVmYXVsdFJlbmRlclRhcmdldC0+UmVsZWFzZSgpOwotICAgIH0KLQotICAgIGlm
IChkZXB0aFN0ZW5jaWwpCi0gICAgewotICAgICAgICBkZXB0aFN0ZW5jaWwtPlJlbGVhc2UoKTsK
LSAgICB9Ci0KLSAgICBtYXJrQWxsU3RhdGVEaXJ0eSgpOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9u
IHdpbGwgc2V0IGFsbCBvZiB0aGUgc3RhdGUtcmVsYXRlZCBkaXJ0eSBmbGFncywgc28gdGhhdCBh
bGwgc3RhdGUgaXMgc2V0IGR1cmluZyBuZXh0IHByZS1kcmF3Lgotdm9pZCBDb250ZXh0OjptYXJr
QWxsU3RhdGVEaXJ0eSgpCi17Ci0gICAgZm9yIChpbnQgdCA9IDA7IHQgPCBNQVhfVEVYVFVSRV9J
TUFHRV9VTklUUzsgdCsrKQotICAgIHsKLSAgICAgICAgbUFwcGxpZWRUZXh0dXJlU2VyaWFsUFNb
dF0gPSAwOwotICAgIH0KLQotICAgIGZvciAoaW50IHQgPSAwOyB0IDwgTUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTX1ZURjsgdCsrKQotICAgIHsKLSAgICAgICAgbUFwcGxpZWRUZXh0dXJl
U2VyaWFsVlNbdF0gPSAwOwotICAgIH0KLQotICAgIG1BcHBsaWVkUHJvZ3JhbUJpbmFyeVNlcmlh
bCA9IDA7Ci0gICAgbUFwcGxpZWRSZW5kZXJUYXJnZXRTZXJpYWwgPSAwOwotICAgIG1BcHBsaWVk
RGVwdGhidWZmZXJTZXJpYWwgPSAwOwotICAgIG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCA9
IDA7Ci0gICAgbUFwcGxpZWRJQlNlcmlhbCA9IDA7Ci0gICAgbURlcHRoU3RlbmNpbEluaXRpYWxp
emVkID0gZmFsc2U7Ci0gICAgbVZpZXdwb3J0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBtUmVu
ZGVyVGFyZ2V0RGVzY0luaXRpYWxpemVkID0gZmFsc2U7Ci0KLSAgICBtVmVydGV4RGVjbGFyYXRp
b25DYWNoZS5tYXJrU3RhdGVEaXJ0eSgpOwotCi0gICAgbUNsZWFyU3RhdGVEaXJ0eSA9IHRydWU7
Ci0gICAgbUN1bGxTdGF0ZURpcnR5ID0gdHJ1ZTsKLSAgICBtRGVwdGhTdGF0ZURpcnR5ID0gdHJ1
ZTsKLSAgICBtTWFza1N0YXRlRGlydHkgPSB0cnVlOwotICAgIG1CbGVuZFN0YXRlRGlydHkgPSB0
cnVlOwotICAgIG1TdGVuY2lsU3RhdGVEaXJ0eSA9IHRydWU7Ci0gICAgbVBvbHlnb25PZmZzZXRT
dGF0ZURpcnR5ID0gdHJ1ZTsKLSAgICBtU2Npc3NvclN0YXRlRGlydHkgPSB0cnVlOwotICAgIG1T
YW1wbGVTdGF0ZURpcnR5ID0gdHJ1ZTsKLSAgICBtRGl0aGVyU3RhdGVEaXJ0eSA9IHRydWU7Ci0g
ICAgbUZyb250RmFjZURpcnR5ID0gdHJ1ZTsKLSAgICBtRHhVbmlmb3Jtc0RpcnR5ID0gdHJ1ZTsK
LX0KLQotdm9pZCBDb250ZXh0OjptYXJrRHhVbmlmb3Jtc0RpcnR5KCkKLXsKLSAgICBtRHhVbmlm
b3Jtc0RpcnR5ID0gdHJ1ZTsKLX0KLQotdm9pZCBDb250ZXh0OjptYXJrQ29udGV4dExvc3QoKQot
ewotICAgIGlmIChtUmVzZXRTdHJhdGVneSA9PSBHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhU
KQotICAgICAgICBtUmVzZXRTdGF0dXMgPSBHTF9VTktOT1dOX0NPTlRFWFRfUkVTRVRfRVhUOwot
ICAgIG1Db250ZXh0TG9zdCA9IHRydWU7Ci19Ci0KLWJvb2wgQ29udGV4dDo6aXNDb250ZXh0TG9z
dCgpCi17Ci0gICAgcmV0dXJuIG1Db250ZXh0TG9zdDsKLX0KLQotdm9pZCBDb250ZXh0OjpzZXRD
bGVhckNvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhh
KQotewotICAgIG1TdGF0ZS5jb2xvckNsZWFyVmFsdWUucmVkID0gcmVkOwotICAgIG1TdGF0ZS5j
b2xvckNsZWFyVmFsdWUuZ3JlZW4gPSBncmVlbjsKLSAgICBtU3RhdGUuY29sb3JDbGVhclZhbHVl
LmJsdWUgPSBibHVlOwotICAgIG1TdGF0ZS5jb2xvckNsZWFyVmFsdWUuYWxwaGEgPSBhbHBoYTsK
LX0KLQotdm9pZCBDb250ZXh0OjpzZXRDbGVhckRlcHRoKGZsb2F0IGRlcHRoKQotewotICAgIG1T
dGF0ZS5kZXB0aENsZWFyVmFsdWUgPSBkZXB0aDsKLX0KLQotdm9pZCBDb250ZXh0OjpzZXRDbGVh
clN0ZW5jaWwoaW50IHN0ZW5jaWwpCi17Ci0gICAgbVN0YXRlLnN0ZW5jaWxDbGVhclZhbHVlID0g
c3RlbmNpbDsKLX0KLQotdm9pZCBDb250ZXh0OjpzZXRDdWxsRmFjZShib29sIGVuYWJsZWQpCi17
Ci0gICAgaWYgKG1TdGF0ZS5jdWxsRmFjZSAhPSBlbmFibGVkKQotICAgIHsKLSAgICAgICAgbVN0
YXRlLmN1bGxGYWNlID0gZW5hYmxlZDsKLSAgICAgICAgbUN1bGxTdGF0ZURpcnR5ID0gdHJ1ZTsK
LSAgICB9Ci19Ci0KLWJvb2wgQ29udGV4dDo6aXNDdWxsRmFjZUVuYWJsZWQoKSBjb25zdAotewot
ICAgIHJldHVybiBtU3RhdGUuY3VsbEZhY2U7Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0Q3VsbE1v
ZGUoR0xlbnVtIG1vZGUpCi17Ci0gICAgaWYgKG1TdGF0ZS5jdWxsTW9kZSAhPSBtb2RlKQotICAg
IHsKLSAgICAgICAgbVN0YXRlLmN1bGxNb2RlID0gbW9kZTsKLSAgICAgICAgbUN1bGxTdGF0ZURp
cnR5ID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0RnJvbnRGYWNlKEdMZW51
bSBmcm9udCkKLXsKLSAgICBpZiAobVN0YXRlLmZyb250RmFjZSAhPSBmcm9udCkKLSAgICB7Ci0g
ICAgICAgIG1TdGF0ZS5mcm9udEZhY2UgPSBmcm9udDsKLSAgICAgICAgbUZyb250RmFjZURpcnR5
ID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0RGVwdGhUZXN0KGJvb2wgZW5h
YmxlZCkKLXsKLSAgICBpZiAobVN0YXRlLmRlcHRoVGVzdCAhPSBlbmFibGVkKQotICAgIHsKLSAg
ICAgICAgbVN0YXRlLmRlcHRoVGVzdCA9IGVuYWJsZWQ7Ci0gICAgICAgIG1EZXB0aFN0YXRlRGly
dHkgPSB0cnVlOwotICAgIH0KLX0KLQotYm9vbCBDb250ZXh0Ojppc0RlcHRoVGVzdEVuYWJsZWQo
KSBjb25zdAotewotICAgIHJldHVybiBtU3RhdGUuZGVwdGhUZXN0OwotfQotCi12b2lkIENvbnRl
eHQ6OnNldERlcHRoRnVuYyhHTGVudW0gZGVwdGhGdW5jKQotewotICAgIGlmIChtU3RhdGUuZGVw
dGhGdW5jICE9IGRlcHRoRnVuYykKLSAgICB7Ci0gICAgICAgIG1TdGF0ZS5kZXB0aEZ1bmMgPSBk
ZXB0aEZ1bmM7Ci0gICAgICAgIG1EZXB0aFN0YXRlRGlydHkgPSB0cnVlOwotICAgIH0KLX0KLQot
dm9pZCBDb250ZXh0OjpzZXREZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQotewot
ICAgIG1TdGF0ZS56TmVhciA9IHpOZWFyOwotICAgIG1TdGF0ZS56RmFyID0gekZhcjsKLX0KLQot
dm9pZCBDb250ZXh0OjpzZXRCbGVuZChib29sIGVuYWJsZWQpCi17Ci0gICAgaWYgKG1TdGF0ZS5i
bGVuZCAhPSBlbmFibGVkKQotICAgIHsKLSAgICAgICAgbVN0YXRlLmJsZW5kID0gZW5hYmxlZDsK
LSAgICAgICAgbUJsZW5kU3RhdGVEaXJ0eSA9IHRydWU7Ci0gICAgfQotfQotCi1ib29sIENvbnRl
eHQ6OmlzQmxlbmRFbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN0YXRlLmJsZW5kOwot
fQotCi12b2lkIENvbnRleHQ6OnNldEJsZW5kRmFjdG9ycyhHTGVudW0gc291cmNlUkdCLCBHTGVu
dW0gZGVzdFJHQiwgR0xlbnVtIHNvdXJjZUFscGhhLCBHTGVudW0gZGVzdEFscGhhKQotewotICAg
IGlmIChtU3RhdGUuc291cmNlQmxlbmRSR0IgIT0gc291cmNlUkdCIHx8Ci0gICAgICAgIG1TdGF0
ZS5zb3VyY2VCbGVuZEFscGhhICE9IHNvdXJjZUFscGhhIHx8Ci0gICAgICAgIG1TdGF0ZS5kZXN0
QmxlbmRSR0IgIT0gZGVzdFJHQiB8fAotICAgICAgICBtU3RhdGUuZGVzdEJsZW5kQWxwaGEgIT0g
ZGVzdEFscGhhKQotICAgIHsKLSAgICAgICAgbVN0YXRlLnNvdXJjZUJsZW5kUkdCID0gc291cmNl
UkdCOwotICAgICAgICBtU3RhdGUuZGVzdEJsZW5kUkdCID0gZGVzdFJHQjsKLSAgICAgICAgbVN0
YXRlLnNvdXJjZUJsZW5kQWxwaGEgPSBzb3VyY2VBbHBoYTsKLSAgICAgICAgbVN0YXRlLmRlc3RC
bGVuZEFscGhhID0gZGVzdEFscGhhOwotICAgICAgICBtQmxlbmRTdGF0ZURpcnR5ID0gdHJ1ZTsK
LSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0QmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0
IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKLXsKLSAgICBpZiAobVN0YXRlLmJsZW5k
Q29sb3IucmVkICE9IHJlZCB8fAotICAgICAgICBtU3RhdGUuYmxlbmRDb2xvci5ncmVlbiAhPSBn
cmVlbiB8fAotICAgICAgICBtU3RhdGUuYmxlbmRDb2xvci5ibHVlICE9IGJsdWUgfHwKLSAgICAg
ICAgbVN0YXRlLmJsZW5kQ29sb3IuYWxwaGEgIT0gYWxwaGEpCi0gICAgewotICAgICAgICBtU3Rh
dGUuYmxlbmRDb2xvci5yZWQgPSByZWQ7Ci0gICAgICAgIG1TdGF0ZS5ibGVuZENvbG9yLmdyZWVu
ID0gZ3JlZW47Ci0gICAgICAgIG1TdGF0ZS5ibGVuZENvbG9yLmJsdWUgPSBibHVlOwotICAgICAg
ICBtU3RhdGUuYmxlbmRDb2xvci5hbHBoYSA9IGFscGhhOwotICAgICAgICBtQmxlbmRTdGF0ZURp
cnR5ID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0QmxlbmRFcXVhdGlvbihH
TGVudW0gcmdiRXF1YXRpb24sIEdMZW51bSBhbHBoYUVxdWF0aW9uKQotewotICAgIGlmIChtU3Rh
dGUuYmxlbmRFcXVhdGlvblJHQiAhPSByZ2JFcXVhdGlvbiB8fAotICAgICAgICBtU3RhdGUuYmxl
bmRFcXVhdGlvbkFscGhhICE9IGFscGhhRXF1YXRpb24pCi0gICAgewotICAgICAgICBtU3RhdGUu
YmxlbmRFcXVhdGlvblJHQiA9IHJnYkVxdWF0aW9uOwotICAgICAgICBtU3RhdGUuYmxlbmRFcXVh
dGlvbkFscGhhID0gYWxwaGFFcXVhdGlvbjsKLSAgICAgICAgbUJsZW5kU3RhdGVEaXJ0eSA9IHRy
dWU7Ci0gICAgfQotfQotCi12b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxUZXN0KGJvb2wgZW5hYmxl
ZCkKLXsKLSAgICBpZiAobVN0YXRlLnN0ZW5jaWxUZXN0ICE9IGVuYWJsZWQpCi0gICAgewotICAg
ICAgICBtU3RhdGUuc3RlbmNpbFRlc3QgPSBlbmFibGVkOwotICAgICAgICBtU3RlbmNpbFN0YXRl
RGlydHkgPSB0cnVlOwotICAgIH0KLX0KLQotYm9vbCBDb250ZXh0Ojppc1N0ZW5jaWxUZXN0RW5h
YmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1TdGF0ZS5zdGVuY2lsVGVzdDsKLX0KLQotdm9p
ZCBDb250ZXh0OjpzZXRTdGVuY2lsUGFyYW1zKEdMZW51bSBzdGVuY2lsRnVuYywgR0xpbnQgc3Rl
bmNpbFJlZiwgR0x1aW50IHN0ZW5jaWxNYXNrKQotewotICAgIGlmIChtU3RhdGUuc3RlbmNpbEZ1
bmMgIT0gc3RlbmNpbEZ1bmMgfHwKLSAgICAgICAgbVN0YXRlLnN0ZW5jaWxSZWYgIT0gc3RlbmNp
bFJlZiB8fAotICAgICAgICBtU3RhdGUuc3RlbmNpbE1hc2sgIT0gc3RlbmNpbE1hc2spCi0gICAg
ewotICAgICAgICBtU3RhdGUuc3RlbmNpbEZ1bmMgPSBzdGVuY2lsRnVuYzsKLSAgICAgICAgbVN0
YXRlLnN0ZW5jaWxSZWYgPSAoc3RlbmNpbFJlZiA+IDApID8gc3RlbmNpbFJlZiA6IDA7Ci0gICAg
ICAgIG1TdGF0ZS5zdGVuY2lsTWFzayA9IHN0ZW5jaWxNYXNrOwotICAgICAgICBtU3RlbmNpbFN0
YXRlRGlydHkgPSB0cnVlOwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpzZXRTdGVuY2lsQmFj
a1BhcmFtcyhHTGVudW0gc3RlbmNpbEJhY2tGdW5jLCBHTGludCBzdGVuY2lsQmFja1JlZiwgR0x1
aW50IHN0ZW5jaWxCYWNrTWFzaykKLXsKLSAgICBpZiAobVN0YXRlLnN0ZW5jaWxCYWNrRnVuYyAh
PSBzdGVuY2lsQmFja0Z1bmMgfHwKLSAgICAgICAgbVN0YXRlLnN0ZW5jaWxCYWNrUmVmICE9IHN0
ZW5jaWxCYWNrUmVmIHx8Ci0gICAgICAgIG1TdGF0ZS5zdGVuY2lsQmFja01hc2sgIT0gc3RlbmNp
bEJhY2tNYXNrKQotICAgIHsKLSAgICAgICAgbVN0YXRlLnN0ZW5jaWxCYWNrRnVuYyA9IHN0ZW5j
aWxCYWNrRnVuYzsKLSAgICAgICAgbVN0YXRlLnN0ZW5jaWxCYWNrUmVmID0gKHN0ZW5jaWxCYWNr
UmVmID4gMCkgPyBzdGVuY2lsQmFja1JlZiA6IDA7Ci0gICAgICAgIG1TdGF0ZS5zdGVuY2lsQmFj
a01hc2sgPSBzdGVuY2lsQmFja01hc2s7Ci0gICAgICAgIG1TdGVuY2lsU3RhdGVEaXJ0eSA9IHRy
dWU7Ci0gICAgfQotfQotCi12b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxXcml0ZW1hc2soR0x1aW50
IHN0ZW5jaWxXcml0ZW1hc2spCi17Ci0gICAgaWYgKG1TdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICE9
IHN0ZW5jaWxXcml0ZW1hc2spCi0gICAgewotICAgICAgICBtU3RhdGUuc3RlbmNpbFdyaXRlbWFz
ayA9IHN0ZW5jaWxXcml0ZW1hc2s7Ci0gICAgICAgIG1TdGVuY2lsU3RhdGVEaXJ0eSA9IHRydWU7
Ci0gICAgfQotfQotCi12b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxCYWNrV3JpdGVtYXNrKEdMdWlu
dCBzdGVuY2lsQmFja1dyaXRlbWFzaykKLXsKLSAgICBpZiAobVN0YXRlLnN0ZW5jaWxCYWNrV3Jp
dGVtYXNrICE9IHN0ZW5jaWxCYWNrV3JpdGVtYXNrKQotICAgIHsKLSAgICAgICAgbVN0YXRlLnN0
ZW5jaWxCYWNrV3JpdGVtYXNrID0gc3RlbmNpbEJhY2tXcml0ZW1hc2s7Ci0gICAgICAgIG1TdGVu
Y2lsU3RhdGVEaXJ0eSA9IHRydWU7Ci0gICAgfQotfQotCi12b2lkIENvbnRleHQ6OnNldFN0ZW5j
aWxPcGVyYXRpb25zKEdMZW51bSBzdGVuY2lsRmFpbCwgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhG
YWlsLCBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aFBhc3MpCi17Ci0gICAgaWYgKG1TdGF0ZS5zdGVu
Y2lsRmFpbCAhPSBzdGVuY2lsRmFpbCB8fAotICAgICAgICBtU3RhdGUuc3RlbmNpbFBhc3NEZXB0
aEZhaWwgIT0gc3RlbmNpbFBhc3NEZXB0aEZhaWwgfHwKLSAgICAgICAgbVN0YXRlLnN0ZW5jaWxQ
YXNzRGVwdGhQYXNzICE9IHN0ZW5jaWxQYXNzRGVwdGhQYXNzKQotICAgIHsKLSAgICAgICAgbVN0
YXRlLnN0ZW5jaWxGYWlsID0gc3RlbmNpbEZhaWw7Ci0gICAgICAgIG1TdGF0ZS5zdGVuY2lsUGFz
c0RlcHRoRmFpbCA9IHN0ZW5jaWxQYXNzRGVwdGhGYWlsOwotICAgICAgICBtU3RhdGUuc3RlbmNp
bFBhc3NEZXB0aFBhc3MgPSBzdGVuY2lsUGFzc0RlcHRoUGFzczsKLSAgICAgICAgbVN0ZW5jaWxT
dGF0ZURpcnR5ID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0U3RlbmNpbEJh
Y2tPcGVyYXRpb25zKEdMZW51bSBzdGVuY2lsQmFja0ZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bh
c3NEZXB0aEZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpCi17Ci0gICAgaWYg
KG1TdGF0ZS5zdGVuY2lsQmFja0ZhaWwgIT0gc3RlbmNpbEJhY2tGYWlsIHx8Ci0gICAgICAgIG1T
dGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwgIT0gc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWls
IHx8Ci0gICAgICAgIG1TdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgIT0gc3RlbmNpbEJh
Y2tQYXNzRGVwdGhQYXNzKQotICAgIHsKLSAgICAgICAgbVN0YXRlLnN0ZW5jaWxCYWNrRmFpbCA9
IHN0ZW5jaWxCYWNrRmFpbDsKLSAgICAgICAgbVN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoRmFp
bCA9IHN0ZW5jaWxCYWNrUGFzc0RlcHRoRmFpbDsKLSAgICAgICAgbVN0YXRlLnN0ZW5jaWxCYWNr
UGFzc0RlcHRoUGFzcyA9IHN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzczsKLSAgICAgICAgbVN0ZW5j
aWxTdGF0ZURpcnR5ID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0UG9seWdv
bk9mZnNldEZpbGwoYm9vbCBlbmFibGVkKQotewotICAgIGlmIChtU3RhdGUucG9seWdvbk9mZnNl
dEZpbGwgIT0gZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIG1TdGF0ZS5wb2x5Z29uT2Zmc2V0Rmls
bCA9IGVuYWJsZWQ7Ci0gICAgICAgIG1Qb2x5Z29uT2Zmc2V0U3RhdGVEaXJ0eSA9IHRydWU7Ci0g
ICAgfQotfQotCi1ib29sIENvbnRleHQ6OmlzUG9seWdvbk9mZnNldEZpbGxFbmFibGVkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbVN0YXRlLnBvbHlnb25PZmZzZXRGaWxsOwotCi19Ci0KLXZvaWQg
Q29udGV4dDo6c2V0UG9seWdvbk9mZnNldFBhcmFtcyhHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1
bml0cykKLXsKLSAgICBpZiAobVN0YXRlLnBvbHlnb25PZmZzZXRGYWN0b3IgIT0gZmFjdG9yIHx8
Ci0gICAgICAgIG1TdGF0ZS5wb2x5Z29uT2Zmc2V0VW5pdHMgIT0gdW5pdHMpCi0gICAgewotICAg
ICAgICBtU3RhdGUucG9seWdvbk9mZnNldEZhY3RvciA9IGZhY3RvcjsKLSAgICAgICAgbVN0YXRl
LnBvbHlnb25PZmZzZXRVbml0cyA9IHVuaXRzOwotICAgICAgICBtUG9seWdvbk9mZnNldFN0YXRl
RGlydHkgPSB0cnVlOwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpzZXRTYW1wbGVBbHBoYVRv
Q292ZXJhZ2UoYm9vbCBlbmFibGVkKQotewotICAgIGlmIChtU3RhdGUuc2FtcGxlQWxwaGFUb0Nv
dmVyYWdlICE9IGVuYWJsZWQpCi0gICAgewotICAgICAgICBtU3RhdGUuc2FtcGxlQWxwaGFUb0Nv
dmVyYWdlID0gZW5hYmxlZDsKLSAgICAgICAgbVNhbXBsZVN0YXRlRGlydHkgPSB0cnVlOwotICAg
IH0KLX0KLQotYm9vbCBDb250ZXh0Ojppc1NhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSBj
b25zdAotewotICAgIHJldHVybiBtU3RhdGUuc2FtcGxlQWxwaGFUb0NvdmVyYWdlOwotfQotCi12
b2lkIENvbnRleHQ6OnNldFNhbXBsZUNvdmVyYWdlKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAo
bVN0YXRlLnNhbXBsZUNvdmVyYWdlICE9IGVuYWJsZWQpCi0gICAgewotICAgICAgICBtU3RhdGUu
c2FtcGxlQ292ZXJhZ2UgPSBlbmFibGVkOwotICAgICAgICBtU2FtcGxlU3RhdGVEaXJ0eSA9IHRy
dWU7Ci0gICAgfQotfQotCi1ib29sIENvbnRleHQ6OmlzU2FtcGxlQ292ZXJhZ2VFbmFibGVkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbVN0YXRlLnNhbXBsZUNvdmVyYWdlOwotfQotCi12b2lkIENv
bnRleHQ6OnNldFNhbXBsZUNvdmVyYWdlUGFyYW1zKEdMY2xhbXBmIHZhbHVlLCBib29sIGludmVy
dCkKLXsKLSAgICBpZiAobVN0YXRlLnNhbXBsZUNvdmVyYWdlVmFsdWUgIT0gdmFsdWUgfHwKLSAg
ICAgICAgbVN0YXRlLnNhbXBsZUNvdmVyYWdlSW52ZXJ0ICE9IGludmVydCkKLSAgICB7Ci0gICAg
ICAgIG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZVZhbHVlID0gdmFsdWU7Ci0gICAgICAgIG1TdGF0ZS5z
YW1wbGVDb3ZlcmFnZUludmVydCA9IGludmVydDsKLSAgICAgICAgbVNhbXBsZVN0YXRlRGlydHkg
PSB0cnVlOwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpzZXRTY2lzc29yVGVzdChib29sIGVu
YWJsZWQpCi17Ci0gICAgaWYgKG1TdGF0ZS5zY2lzc29yVGVzdCAhPSBlbmFibGVkKQotICAgIHsK
LSAgICAgICAgbVN0YXRlLnNjaXNzb3JUZXN0ID0gZW5hYmxlZDsKLSAgICAgICAgbVNjaXNzb3JT
dGF0ZURpcnR5ID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wgQ29udGV4dDo6aXNTY2lzc29yVGVz
dEVuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtU3RhdGUuc2Npc3NvclRlc3Q7Ci19Ci0K
LXZvaWQgQ29udGV4dDo6c2V0RGl0aGVyKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAobVN0YXRl
LmRpdGhlciAhPSBlbmFibGVkKQotICAgIHsKLSAgICAgICAgbVN0YXRlLmRpdGhlciA9IGVuYWJs
ZWQ7Ci0gICAgICAgIG1EaXRoZXJTdGF0ZURpcnR5ID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wg
Q29udGV4dDo6aXNEaXRoZXJFbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN0YXRlLmRp
dGhlcjsKLX0KLQotdm9pZCBDb250ZXh0OjpzZXRMaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCkKLXsK
LSAgICBtU3RhdGUubGluZVdpZHRoID0gd2lkdGg7Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0R2Vu
ZXJhdGVNaXBtYXBIaW50KEdMZW51bSBoaW50KQotewotICAgIG1TdGF0ZS5nZW5lcmF0ZU1pcG1h
cEhpbnQgPSBoaW50OwotfQotCi12b2lkIENvbnRleHQ6OnNldEZyYWdtZW50U2hhZGVyRGVyaXZh
dGl2ZUhpbnQoR0xlbnVtIGhpbnQpCi17Ci0gICAgbVN0YXRlLmZyYWdtZW50U2hhZGVyRGVyaXZh
dGl2ZUhpbnQgPSBoaW50OwotICAgIC8vIFRPRE86IFByb3BhZ2F0ZSB0aGUgaGludCB0byBzaGFk
ZXIgdHJhbnNsYXRvciBzbyB3ZSBjYW4gd3JpdGUKLSAgICAvLyBkZHgsIGRkeF9jb2Fyc2UsIG9y
IGRkeF9maW5lIGRlcGVuZGluZyBvbiB0aGUgaGludC4KLSAgICAvLyBJZ25vcmUgZm9yIG5vdy4g
SXQgaXMgdmFsaWQgZm9yIGltcGxlbWVudGF0aW9ucyB0byBpZ25vcmUgaGludC4KLX0KLQotdm9p
ZCBDb250ZXh0OjpzZXRWaWV3cG9ydFBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCkKLXsKLSAgICBtU3RhdGUudmlld3BvcnRYID0geDsKLSAgICBt
U3RhdGUudmlld3BvcnRZID0geTsKLSAgICBtU3RhdGUudmlld3BvcnRXaWR0aCA9IHdpZHRoOwot
ICAgIG1TdGF0ZS52aWV3cG9ydEhlaWdodCA9IGhlaWdodDsKLX0KLQotdm9pZCBDb250ZXh0Ojpz
ZXRTY2lzc29yUGFyYW1zKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KQotewotICAgIGlmIChtU3RhdGUuc2Npc3NvclggIT0geCB8fCBtU3RhdGUuc2Npc3Nv
clkgIT0geSB8fCAKLSAgICAgICAgbVN0YXRlLnNjaXNzb3JXaWR0aCAhPSB3aWR0aCB8fCBtU3Rh
dGUuc2Npc3NvckhlaWdodCAhPSBoZWlnaHQpCi0gICAgewotICAgICAgICBtU3RhdGUuc2Npc3Nv
clggPSB4OwotICAgICAgICBtU3RhdGUuc2Npc3NvclkgPSB5OwotICAgICAgICBtU3RhdGUuc2Np
c3NvcldpZHRoID0gd2lkdGg7Ci0gICAgICAgIG1TdGF0ZS5zY2lzc29ySGVpZ2h0ID0gaGVpZ2h0
OwotICAgICAgICBtU2Npc3NvclN0YXRlRGlydHkgPSB0cnVlOwotICAgIH0KLX0KLQotdm9pZCBD
b250ZXh0OjpzZXRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9v
bCBhbHBoYSkKLXsKLSAgICBpZiAobVN0YXRlLmNvbG9yTWFza1JlZCAhPSByZWQgfHwgbVN0YXRl
LmNvbG9yTWFza0dyZWVuICE9IGdyZWVuIHx8Ci0gICAgICAgIG1TdGF0ZS5jb2xvck1hc2tCbHVl
ICE9IGJsdWUgfHwgbVN0YXRlLmNvbG9yTWFza0FscGhhICE9IGFscGhhKQotICAgIHsKLSAgICAg
ICAgbVN0YXRlLmNvbG9yTWFza1JlZCA9IHJlZDsKLSAgICAgICAgbVN0YXRlLmNvbG9yTWFza0dy
ZWVuID0gZ3JlZW47Ci0gICAgICAgIG1TdGF0ZS5jb2xvck1hc2tCbHVlID0gYmx1ZTsKLSAgICAg
ICAgbVN0YXRlLmNvbG9yTWFza0FscGhhID0gYWxwaGE7Ci0gICAgICAgIG1NYXNrU3RhdGVEaXJ0
eSA9IHRydWU7Ci0gICAgfQotfQotCi12b2lkIENvbnRleHQ6OnNldERlcHRoTWFzayhib29sIG1h
c2spCi17Ci0gICAgaWYgKG1TdGF0ZS5kZXB0aE1hc2sgIT0gbWFzaykKLSAgICB7Ci0gICAgICAg
IG1TdGF0ZS5kZXB0aE1hc2sgPSBtYXNrOwotICAgICAgICBtTWFza1N0YXRlRGlydHkgPSB0cnVl
OwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpzZXRBY3RpdmVTYW1wbGVyKHVuc2lnbmVkIGlu
dCBhY3RpdmUpCi17Ci0gICAgbVN0YXRlLmFjdGl2ZVNhbXBsZXIgPSBhY3RpdmU7Ci19Ci0KLUdM
dWludCBDb250ZXh0OjpnZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKSBjb25zdAotewotICAgIHJl
dHVybiBtU3RhdGUucmVhZEZyYW1lYnVmZmVyOwotfQotCi1HTHVpbnQgQ29udGV4dDo6Z2V0RHJh
d0ZyYW1lYnVmZmVySGFuZGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN0YXRlLmRyYXdGcmFt
ZWJ1ZmZlcjsKLX0KLQotR0x1aW50IENvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlckhhbmRsZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1TdGF0ZS5yZW5kZXJidWZmZXIuaWQoKTsKLX0KLQotR0x1aW50
IENvbnRleHQ6OmdldEFycmF5QnVmZmVySGFuZGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN0
YXRlLmFycmF5QnVmZmVyLmlkKCk7Ci19Ci0KLUdMdWludCBDb250ZXh0OjpnZXRBY3RpdmVRdWVy
eShHTGVudW0gdGFyZ2V0KSBjb25zdAotewotICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IE5VTEw7
Ci0gICAgCi0gICAgc3dpdGNoICh0YXJnZXQpCi0gICAgewotICAgICAgY2FzZSBHTF9BTllfU0FN
UExFU19QQVNTRURfRVhUOgotICAgICAgICBxdWVyeU9iamVjdCA9IG1TdGF0ZS5hY3RpdmVRdWVy
eVtRVUVSWV9BTllfU0FNUExFU19QQVNTRURdLmdldCgpOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6Ci0gICAgICAgIHF1
ZXJ5T2JqZWN0ID0gbVN0YXRlLmFjdGl2ZVF1ZXJ5W1FVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9D
T05TRVJWQVRJVkVdLmdldCgpOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVChmYWxzZSk7Ci0gICAgfQotCi0gICAgaWYgKHF1ZXJ5T2JqZWN0KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LT5pZCgpOwotICAgIH0KLSAgICBlbHNlCi0gICAg
ewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0RW5hYmxl
VmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgaW50IGF0dHJpYk51bSwgYm9vbCBlbmFibGVkKQot
ewotICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5tQXJyYXlFbmFibGVkID0g
ZW5hYmxlZDsKLX0KLQotY29uc3QgVmVydGV4QXR0cmlidXRlICZDb250ZXh0OjpnZXRWZXJ0ZXhB
dHRyaWJTdGF0ZSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtKQotewotICAgIHJldHVybiBtU3RhdGUu
dmVydGV4QXR0cmlidXRlW2F0dHJpYk51bV07Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0VmVydGV4
QXR0cmliU3RhdGUodW5zaWduZWQgaW50IGF0dHJpYk51bSwgQnVmZmVyICpib3VuZEJ1ZmZlciwg
R0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIp
Ci17Ci0gICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1Cb3VuZEJ1ZmZlci5z
ZXQoYm91bmRCdWZmZXIpOwotICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5t
U2l6ZSA9IHNpemU7Ci0gICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1UeXBl
ID0gdHlwZTsKLSAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51bV0ubU5vcm1hbGl6
ZWQgPSBub3JtYWxpemVkOwotICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5t
U3RyaWRlID0gc3RyaWRlOwotICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5t
UG9pbnRlciA9IHBvaW50ZXI7Ci19Ci0KLWNvbnN0IHZvaWQgKkNvbnRleHQ6OmdldFZlcnRleEF0
dHJpYlBvaW50ZXIodW5zaWduZWQgaW50IGF0dHJpYk51bSkgY29uc3QKLXsKLSAgICByZXR1cm4g
bVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1Qb2ludGVyOwotfQotCi1jb25zdCBW
ZXJ0ZXhBdHRyaWJ1dGVBcnJheSAmQ29udGV4dDo6Z2V0VmVydGV4QXR0cmlidXRlcygpCi17Ci0g
ICAgcmV0dXJuIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGU7Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0
UGFja0FsaWdubWVudChHTGludCBhbGlnbm1lbnQpCi17Ci0gICAgbVN0YXRlLnBhY2tBbGlnbm1l
bnQgPSBhbGlnbm1lbnQ7Ci19Ci0KLUdMaW50IENvbnRleHQ6OmdldFBhY2tBbGlnbm1lbnQoKSBj
b25zdAotewotICAgIHJldHVybiBtU3RhdGUucGFja0FsaWdubWVudDsKLX0KLQotdm9pZCBDb250
ZXh0OjpzZXRVbnBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50KQotewotICAgIG1TdGF0ZS51
bnBhY2tBbGlnbm1lbnQgPSBhbGlnbm1lbnQ7Ci19Ci0KLUdMaW50IENvbnRleHQ6OmdldFVucGFj
a0FsaWdubWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1TdGF0ZS51bnBhY2tBbGlnbm1lbnQ7
Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0UGFja1JldmVyc2VSb3dPcmRlcihib29sIHJldmVyc2VS
b3dPcmRlcikKLXsKLSAgICBtU3RhdGUucGFja1JldmVyc2VSb3dPcmRlciA9IHJldmVyc2VSb3dP
cmRlcjsKLX0KLQotYm9vbCBDb250ZXh0OjpnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbVN0YXRlLnBhY2tSZXZlcnNlUm93T3JkZXI7Ci19Ci0KLUdMdWludCBD
b250ZXh0OjpjcmVhdGVCdWZmZXIoKQotewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5j
cmVhdGVCdWZmZXIoKTsKLX0KLQotR0x1aW50IENvbnRleHQ6OmNyZWF0ZVByb2dyYW0oKQotewot
ICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVQcm9ncmFtKCk7Ci19Ci0KLUdMdWlu
dCBDb250ZXh0OjpjcmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpCi17Ci0gICAgcmV0dXJuIG1SZXNv
dXJjZU1hbmFnZXItPmNyZWF0ZVNoYWRlcih0eXBlKTsKLX0KLQotR0x1aW50IENvbnRleHQ6OmNy
ZWF0ZVRleHR1cmUoKQotewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVUZXh0
dXJlKCk7Ci19Ci0KLUdMdWludCBDb250ZXh0OjpjcmVhdGVSZW5kZXJidWZmZXIoKQotewotICAg
IHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVSZW5kZXJidWZmZXIoKTsKLX0KLQotLy8g
UmV0dXJucyBhbiB1bnVzZWQgZnJhbWVidWZmZXIgbmFtZQotR0x1aW50IENvbnRleHQ6OmNyZWF0
ZUZyYW1lYnVmZmVyKCkKLXsKLSAgICBHTHVpbnQgaGFuZGxlID0gbUZyYW1lYnVmZmVySGFuZGxl
QWxsb2NhdG9yLmFsbG9jYXRlKCk7Ci0KLSAgICBtRnJhbWVidWZmZXJNYXBbaGFuZGxlXSA9IE5V
TEw7Ci0KLSAgICByZXR1cm4gaGFuZGxlOwotfQotCi1HTHVpbnQgQ29udGV4dDo6Y3JlYXRlRmVu
Y2UoKQotewotICAgIEdMdWludCBoYW5kbGUgPSBtRmVuY2VIYW5kbGVBbGxvY2F0b3IuYWxsb2Nh
dGUoKTsKLQotICAgIG1GZW5jZU1hcFtoYW5kbGVdID0gbmV3IEZlbmNlKG1EaXNwbGF5KTsKLQot
ICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLS8vIFJldHVybnMgYW4gdW51c2VkIHF1ZXJ5IG5hbWUK
LUdMdWludCBDb250ZXh0OjpjcmVhdGVRdWVyeSgpCi17Ci0gICAgR0x1aW50IGhhbmRsZSA9IG1R
dWVyeUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwotCi0gICAgbVF1ZXJ5TWFwW2hhbmRsZV0g
PSBOVUxMOwotCi0gICAgcmV0dXJuIGhhbmRsZTsKLX0KLQotdm9pZCBDb250ZXh0OjpkZWxldGVC
dWZmZXIoR0x1aW50IGJ1ZmZlcikKLXsKLSAgICBpZiAobVJlc291cmNlTWFuYWdlci0+Z2V0QnVm
ZmVyKGJ1ZmZlcikpCi0gICAgewotICAgICAgICBkZXRhY2hCdWZmZXIoYnVmZmVyKTsKLSAgICB9
Ci0gICAgCi0gICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlQnVmZmVyKGJ1ZmZlcik7Ci19Ci0K
LXZvaWQgQ29udGV4dDo6ZGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCi17Ci0gICAgbVJlc291
cmNlTWFuYWdlci0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7Ci19Ci0KLXZvaWQgQ29udGV4dDo6ZGVs
ZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKLXsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxl
dGVQcm9ncmFtKHByb2dyYW0pOwotfQotCi12b2lkIENvbnRleHQ6OmRlbGV0ZVRleHR1cmUoR0x1
aW50IHRleHR1cmUpCi17Ci0gICAgaWYgKG1SZXNvdXJjZU1hbmFnZXItPmdldFRleHR1cmUodGV4
dHVyZSkpCi0gICAgewotICAgICAgICBkZXRhY2hUZXh0dXJlKHRleHR1cmUpOwotICAgIH0KLQot
ICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7Ci19Ci0KLXZvaWQg
Q29udGV4dDo6ZGVsZXRlUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCi17Ci0gICAg
aWYgKG1SZXNvdXJjZU1hbmFnZXItPmdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKQotICAg
IHsKLSAgICAgICAgZGV0YWNoUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Ci0gICAgfQotICAg
IAotICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIp
OwotfQotCi12b2lkIENvbnRleHQ6OmRlbGV0ZUZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZl
cikKLXsKLSAgICBGcmFtZWJ1ZmZlck1hcDo6aXRlcmF0b3IgZnJhbWVidWZmZXJPYmplY3QgPSBt
RnJhbWVidWZmZXJNYXAuZmluZChmcmFtZWJ1ZmZlcik7Ci0KLSAgICBpZiAoZnJhbWVidWZmZXJP
YmplY3QgIT0gbUZyYW1lYnVmZmVyTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgZGV0YWNoRnJh
bWVidWZmZXIoZnJhbWVidWZmZXIpOwotCi0gICAgICAgIG1GcmFtZWJ1ZmZlckhhbmRsZUFsbG9j
YXRvci5yZWxlYXNlKGZyYW1lYnVmZmVyT2JqZWN0LT5maXJzdCk7Ci0gICAgICAgIGRlbGV0ZSBm
cmFtZWJ1ZmZlck9iamVjdC0+c2Vjb25kOwotICAgICAgICBtRnJhbWVidWZmZXJNYXAuZXJhc2Uo
ZnJhbWVidWZmZXJPYmplY3QpOwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpkZWxldGVGZW5j
ZShHTHVpbnQgZmVuY2UpCi17Ci0gICAgRmVuY2VNYXA6Oml0ZXJhdG9yIGZlbmNlT2JqZWN0ID0g
bUZlbmNlTWFwLmZpbmQoZmVuY2UpOwotCi0gICAgaWYgKGZlbmNlT2JqZWN0ICE9IG1GZW5jZU1h
cC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIG1GZW5jZUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKGZl
bmNlT2JqZWN0LT5maXJzdCk7Ci0gICAgICAgIGRlbGV0ZSBmZW5jZU9iamVjdC0+c2Vjb25kOwot
ICAgICAgICBtRmVuY2VNYXAuZXJhc2UoZmVuY2VPYmplY3QpOwotICAgIH0KLX0KLQotdm9pZCBD
b250ZXh0OjpkZWxldGVRdWVyeShHTHVpbnQgcXVlcnkpCi17Ci0gICAgUXVlcnlNYXA6Oml0ZXJh
dG9yIHF1ZXJ5T2JqZWN0ID0gbVF1ZXJ5TWFwLmZpbmQocXVlcnkpOwotICAgIGlmIChxdWVyeU9i
amVjdCAhPSBtUXVlcnlNYXAuZW5kKCkpCi0gICAgewotICAgICAgICBtUXVlcnlIYW5kbGVBbGxv
Y2F0b3IucmVsZWFzZShxdWVyeU9iamVjdC0+Zmlyc3QpOwotICAgICAgICBpZiAocXVlcnlPYmpl
Y3QtPnNlY29uZCkKLSAgICAgICAgewotICAgICAgICAgICAgcXVlcnlPYmplY3QtPnNlY29uZC0+
cmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgICAgIG1RdWVyeU1hcC5lcmFzZShxdWVyeU9iamVj
dCk7Ci0gICAgfQotfQotCi1CdWZmZXIgKkNvbnRleHQ6OmdldEJ1ZmZlcihHTHVpbnQgaGFuZGxl
KQotewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRCdWZmZXIoaGFuZGxlKTsKLX0K
LQotU2hhZGVyICpDb250ZXh0OjpnZXRTaGFkZXIoR0x1aW50IGhhbmRsZSkKLXsKLSAgICByZXR1
cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0U2hhZGVyKGhhbmRsZSk7Ci19Ci0KLVByb2dyYW0gKkNv
bnRleHQ6OmdldFByb2dyYW0oR0x1aW50IGhhbmRsZSkKLXsKLSAgICByZXR1cm4gbVJlc291cmNl
TWFuYWdlci0+Z2V0UHJvZ3JhbShoYW5kbGUpOwotfQotCi1UZXh0dXJlICpDb250ZXh0OjpnZXRU
ZXh0dXJlKEdMdWludCBoYW5kbGUpCi17Ci0gICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdl
dFRleHR1cmUoaGFuZGxlKTsKLX0KLQotUmVuZGVyYnVmZmVyICpDb250ZXh0OjpnZXRSZW5kZXJi
dWZmZXIoR0x1aW50IGhhbmRsZSkKLXsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0
UmVuZGVyYnVmZmVyKGhhbmRsZSk7Ci19Ci0KLUZyYW1lYnVmZmVyICpDb250ZXh0OjpnZXRSZWFk
RnJhbWVidWZmZXIoKQotewotICAgIHJldHVybiBnZXRGcmFtZWJ1ZmZlcihtU3RhdGUucmVhZEZy
YW1lYnVmZmVyKTsKLX0KLQotRnJhbWVidWZmZXIgKkNvbnRleHQ6OmdldERyYXdGcmFtZWJ1ZmZl
cigpCi17Ci0gICAgcmV0dXJuIG1Cb3VuZERyYXdGcmFtZWJ1ZmZlcjsKLX0KLQotdm9pZCBDb250
ZXh0OjpiaW5kQXJyYXlCdWZmZXIodW5zaWduZWQgaW50IGJ1ZmZlcikKLXsKLSAgICBtUmVzb3Vy
Y2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVyKTsKLQotICAgIG1TdGF0ZS5h
cnJheUJ1ZmZlci5zZXQoZ2V0QnVmZmVyKGJ1ZmZlcikpOwotfQotCi12b2lkIENvbnRleHQ6OmJp
bmRFbGVtZW50QXJyYXlCdWZmZXIodW5zaWduZWQgaW50IGJ1ZmZlcikKLXsKLSAgICBtUmVzb3Vy
Y2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVyKTsKLQotICAgIG1TdGF0ZS5l
bGVtZW50QXJyYXlCdWZmZXIuc2V0KGdldEJ1ZmZlcihidWZmZXIpKTsKLX0KLQotdm9pZCBDb250
ZXh0OjpiaW5kVGV4dHVyZTJEKEdMdWludCB0ZXh0dXJlKQotewotICAgIG1SZXNvdXJjZU1hbmFn
ZXItPmNoZWNrVGV4dHVyZUFsbG9jYXRpb24odGV4dHVyZSwgVEVYVFVSRV8yRCk7Ci0KLSAgICBt
U3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV8yRF1bbVN0YXRlLmFjdGl2ZVNhbXBsZXJdLnNl
dChnZXRUZXh0dXJlKHRleHR1cmUpKTsKLX0KLQotdm9pZCBDb250ZXh0OjpiaW5kVGV4dHVyZUN1
YmVNYXAoR0x1aW50IHRleHR1cmUpCi17Ci0gICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tUZXh0
dXJlQWxsb2NhdGlvbih0ZXh0dXJlLCBURVhUVVJFX0NVQkUpOwotCi0gICAgbVN0YXRlLnNhbXBs
ZXJUZXh0dXJlW1RFWFRVUkVfQ1VCRV1bbVN0YXRlLmFjdGl2ZVNhbXBsZXJdLnNldChnZXRUZXh0
dXJlKHRleHR1cmUpKTsKLX0KLQotdm9pZCBDb250ZXh0OjpiaW5kUmVhZEZyYW1lYnVmZmVyKEdM
dWludCBmcmFtZWJ1ZmZlcikKLXsKLSAgICBpZiAoIWdldEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVy
KSkKLSAgICB7Ci0gICAgICAgIG1GcmFtZWJ1ZmZlck1hcFtmcmFtZWJ1ZmZlcl0gPSBuZXcgRnJh
bWVidWZmZXIoKTsKLSAgICB9Ci0KLSAgICBtU3RhdGUucmVhZEZyYW1lYnVmZmVyID0gZnJhbWVi
dWZmZXI7Ci19Ci0KLXZvaWQgQ29udGV4dDo6YmluZERyYXdGcmFtZWJ1ZmZlcihHTHVpbnQgZnJh
bWVidWZmZXIpCi17Ci0gICAgaWYgKCFnZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikpCi0gICAg
ewotICAgICAgICBtRnJhbWVidWZmZXJNYXBbZnJhbWVidWZmZXJdID0gbmV3IEZyYW1lYnVmZmVy
KCk7Ci0gICAgfQotCi0gICAgbVN0YXRlLmRyYXdGcmFtZWJ1ZmZlciA9IGZyYW1lYnVmZmVyOwot
Ci0gICAgbUJvdW5kRHJhd0ZyYW1lYnVmZmVyID0gZ2V0RnJhbWVidWZmZXIoZnJhbWVidWZmZXIp
OwotfQotCi12b2lkIENvbnRleHQ6OmJpbmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZl
cikKLXsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24o
cmVuZGVyYnVmZmVyKTsKLQotICAgIG1TdGF0ZS5yZW5kZXJidWZmZXIuc2V0KGdldFJlbmRlcmJ1
ZmZlcihyZW5kZXJidWZmZXIpKTsKLX0KLQotdm9pZCBDb250ZXh0Ojp1c2VQcm9ncmFtKEdMdWlu
dCBwcm9ncmFtKQotewotICAgIEdMdWludCBwcmlvclByb2dyYW0gPSBtU3RhdGUuY3VycmVudFBy
b2dyYW07Ci0gICAgbVN0YXRlLmN1cnJlbnRQcm9ncmFtID0gcHJvZ3JhbTsgICAgICAgICAgICAg
ICAvLyBNdXN0IHN3aXRjaCBiZWZvcmUgdHJ5aW5nIHRvIGRlbGV0ZSwgb3RoZXJ3aXNlIGl0IG9u
bHkgZ2V0cyBmbGFnZ2VkLgotCi0gICAgaWYgKHByaW9yUHJvZ3JhbSAhPSBwcm9ncmFtKQotICAg
IHsKLSAgICAgICAgUHJvZ3JhbSAqbmV3UHJvZ3JhbSA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBy
b2dyYW0ocHJvZ3JhbSk7Ci0gICAgICAgIFByb2dyYW0gKm9sZFByb2dyYW0gPSBtUmVzb3VyY2VN
YW5hZ2VyLT5nZXRQcm9ncmFtKHByaW9yUHJvZ3JhbSk7Ci0gICAgICAgIG1DdXJyZW50UHJvZ3Jh
bUJpbmFyeS5zZXQoTlVMTCk7Ci0gICAgICAgIG1EeFVuaWZvcm1zRGlydHkgPSB0cnVlOwotCi0g
ICAgICAgIGlmIChuZXdQcm9ncmFtKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXdQcm9ncmFt
LT5hZGRSZWYoKTsKLSAgICAgICAgICAgIG1DdXJyZW50UHJvZ3JhbUJpbmFyeS5zZXQobmV3UHJv
Z3JhbS0+Z2V0UHJvZ3JhbUJpbmFyeSgpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aWYgKG9sZFByb2dyYW0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG9sZFByb2dyYW0tPnJlbGVh
c2UoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpsaW5rUHJvZ3JhbShH
THVpbnQgcHJvZ3JhbSkKLXsKLSAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gbVJlc291cmNl
TWFuYWdlci0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKLQotICAgIGJvb2wgbGlua2VkID0gcHJvZ3Jh
bU9iamVjdC0+bGluaygpOwotCi0gICAgLy8gaWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSB3YXMgcmVs
aW5rZWQgc3VjY2Vzc2Z1bGx5IHdlCi0gICAgLy8gbmVlZCB0byBpbnN0YWxsIHRoZSBuZXcgZXhl
Y3V0YWJsZXMKLSAgICBpZiAobGlua2VkICYmIHByb2dyYW0gPT0gbVN0YXRlLmN1cnJlbnRQcm9n
cmFtKQotICAgIHsKLSAgICAgICAgbUN1cnJlbnRQcm9ncmFtQmluYXJ5LnNldChwcm9ncmFtT2Jq
ZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCkpOwotICAgICAgICBtRHhVbmlmb3Jtc0RpcnR5ID0gdHJ1
ZTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6c2V0UHJvZ3JhbUJpbmFyeShHTHVpbnQgcHJv
Z3JhbSwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpCi17Ci0gICAgUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7Ci0K
LSAgICBib29sIGxvYWRlZCA9IHByb2dyYW1PYmplY3QtPnNldFByb2dyYW1CaW5hcnkoYmluYXJ5
LCBsZW5ndGgpOwotCi0gICAgLy8gaWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSB3YXMgcmVsb2FkZWQg
c3VjY2Vzc2Z1bGx5IHdlCi0gICAgLy8gbmVlZCB0byBpbnN0YWxsIHRoZSBuZXcgZXhlY3V0YWJs
ZXMKLSAgICBpZiAobG9hZGVkICYmIHByb2dyYW0gPT0gbVN0YXRlLmN1cnJlbnRQcm9ncmFtKQot
ICAgIHsKLSAgICAgICAgbUN1cnJlbnRQcm9ncmFtQmluYXJ5LnNldChwcm9ncmFtT2JqZWN0LT5n
ZXRQcm9ncmFtQmluYXJ5KCkpOwotICAgICAgICBtRHhVbmlmb3Jtc0RpcnR5ID0gdHJ1ZTsKLSAg
ICB9Ci0KLX0KLQotdm9pZCBDb250ZXh0OjpiZWdpblF1ZXJ5KEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBxdWVyeSkKLXsKLSAgICAvLyBGcm9tIEVYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbjogSWYg
QmVnaW5RdWVyeUVYVCBpcyBjYWxsZWQgd2l0aCBhbiA8aWQ+ICAKLSAgICAvLyBvZiB6ZXJvLCBp
ZiB0aGUgYWN0aXZlIHF1ZXJ5IG9iamVjdCBuYW1lIGZvciA8dGFyZ2V0PiBpcyBub24temVybyAo
Zm9yIHRoZSAgCi0gICAgLy8gdGFyZ2V0cyBBTllfU0FNUExFU19QQVNTRURfRVhUIGFuZCBBTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVCwgaWYgIAotICAgIC8vIHRoZSBhY3RpdmUg
cXVlcnkgZm9yIGVpdGhlciB0YXJnZXQgaXMgbm9uLXplcm8pLCBpZiA8aWQ+IGlzIHRoZSBuYW1l
IG9mIGFuIAotICAgIC8vIGV4aXN0aW5nIHF1ZXJ5IG9iamVjdCB3aG9zZSB0eXBlIGRvZXMgbm90
IG1hdGNoIDx0YXJnZXQ+LCBvciBpZiA8aWQ+IGlzIHRoZQotICAgIC8vIGFjdGl2ZSBxdWVyeSBv
YmplY3QgbmFtZSBmb3IgYW55IHF1ZXJ5IHR5cGUsIHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElP
TiBpcwotICAgIC8vIGdlbmVyYXRlZC4KLQotICAgIC8vIEVuc3VyZSBubyBvdGhlciBxdWVyaWVz
IGFyZSBhY3RpdmUKLSAgICAvLyBOT1RFOiBJZiBvdGhlciBxdWVyaWVzIHRoYW4gb2NjbHVzaW9u
IGFyZSBzdXBwb3J0ZWQsIHdlIHdpbGwgbmVlZCB0byBjaGVjawotICAgIC8vIHNlcGFyYXRlbHkg
dGhhdDoKLSAgICAvLyAgICBhKSBUaGUgcXVlcnkgSUQgcGFzc2VkIGlzIG5vdCB0aGUgY3VycmVu
dCBhY3RpdmUgcXVlcnkgZm9yIGFueSB0YXJnZXQvdHlwZQotICAgIC8vICAgIGIpIFRoZXJlIGFy
ZSBubyBhY3RpdmUgcXVlcmllcyBmb3IgdGhlIHJlcXVlc3RlZCB0YXJnZXQgKGFuZCBpbiB0aGUg
Y2FzZQotICAgIC8vICAgICAgIG9mIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQgYW5kIEdMX0FO
WV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULAotICAgIC8vICAgICAgIG5vIHF1ZXJ5
IG1heSBiZSBhY3RpdmUgZm9yIGVpdGhlciBpZiBnbEJlZ2luUXVlcnkgdGFyZ2V0cyBlaXRoZXIu
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBRVUVSWV9UWVBFX0NPVU5UOyBpKyspCi0gICAgewot
ICAgICAgICBpZiAobVN0YXRlLmFjdGl2ZVF1ZXJ5W2ldLmdldCgpICE9IE5VTEwpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBRdWVyeVR5cGUgcVR5cGU7Ci0gICAgc3dpdGNoICh0YXJnZXQp
Ci0gICAgewotICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOiAKLSAgICAgICAg
cVR5cGUgPSBRVUVSWV9BTllfU0FNUExFU19QQVNTRUQ7IAotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6IAotICAgICAgICBx
VHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU7IAotICAgICAgICBi
cmVhazsKLSAgICAgIGRlZmF1bHQ6IAotICAgICAgICBBU1NFUlQoZmFsc2UpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gZ2V0UXVlcnkocXVlcnks
IHRydWUsIHRhcmdldCk7Ci0KLSAgICAvLyBjaGVjayB0aGF0IG5hbWUgd2FzIG9idGFpbmVkIHdp
dGggZ2xHZW5RdWVyaWVzCi0gICAgaWYgKCFxdWVyeU9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgfQotCi0gICAgLy8gY2hlY2sg
Zm9yIHR5cGUgbWlzbWF0Y2gKLSAgICBpZiAocXVlcnlPYmplY3QtPmdldFR5cGUoKSAhPSB0YXJn
ZXQpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
ICAgIH0KLQotICAgIC8vIHNldCBxdWVyeSBhcyBhY3RpdmUgZm9yIHNwZWNpZmllZCB0YXJnZXQK
LSAgICBtU3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLnNldChxdWVyeU9iamVjdCk7Ci0KLSAgICAv
LyBiZWdpbiBxdWVyeQotICAgIHF1ZXJ5T2JqZWN0LT5iZWdpbigpOwotfQotCi12b2lkIENvbnRl
eHQ6OmVuZFF1ZXJ5KEdMZW51bSB0YXJnZXQpCi17Ci0gICAgUXVlcnlUeXBlIHFUeXBlOwotCi0g
ICAgc3dpdGNoICh0YXJnZXQpCi0gICAgewotICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNT
RURfRVhUOiAKLSAgICAgICAgcVR5cGUgPSBRVUVSWV9BTllfU0FNUExFU19QQVNTRUQ7IAotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElW
RV9FWFQ6IAotICAgICAgICBxVHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJW
QVRJVkU7IAotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IAotICAgICAgICBBU1NFUlQo
ZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUXVlcnkgKnF1ZXJ5T2JqZWN0
ID0gbVN0YXRlLmFjdGl2ZVF1ZXJ5W3FUeXBlXS5nZXQoKTsKLQotICAgIGlmIChxdWVyeU9iamVj
dCA9PSBOVUxMKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLSAgICB9Ci0KLSAgICBxdWVyeU9iamVjdC0+ZW5kKCk7Ci0KLSAgICBtU3RhdGUuYWN0
aXZlUXVlcnlbcVR5cGVdLnNldChOVUxMKTsKLX0KLQotdm9pZCBDb250ZXh0OjpzZXRGcmFtZWJ1
ZmZlclplcm8oRnJhbWVidWZmZXIgKmJ1ZmZlcikKLXsKLSAgICBkZWxldGUgbUZyYW1lYnVmZmVy
TWFwWzBdOwotICAgIG1GcmFtZWJ1ZmZlck1hcFswXSA9IGJ1ZmZlcjsKLSAgICBpZiAobVN0YXRl
LmRyYXdGcmFtZWJ1ZmZlciA9PSAwKQotICAgIHsKLSAgICAgICAgbUJvdW5kRHJhd0ZyYW1lYnVm
ZmVyID0gYnVmZmVyOwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpzZXRSZW5kZXJidWZmZXJT
dG9yYWdlKFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKnJlbmRlcmJ1ZmZlcikKLXsKLSAgICBSZW5kZXJi
dWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVjdCA9IG1TdGF0ZS5yZW5kZXJidWZmZXIuZ2V0KCk7Ci0g
ICAgcmVuZGVyYnVmZmVyT2JqZWN0LT5zZXRTdG9yYWdlKHJlbmRlcmJ1ZmZlcik7Ci19Ci0KLUZy
YW1lYnVmZmVyICpDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBpbnQgaGFuZGxlKQot
ewotICAgIEZyYW1lYnVmZmVyTWFwOjppdGVyYXRvciBmcmFtZWJ1ZmZlciA9IG1GcmFtZWJ1ZmZl
ck1hcC5maW5kKGhhbmRsZSk7Ci0KLSAgICBpZiAoZnJhbWVidWZmZXIgPT0gbUZyYW1lYnVmZmVy
TWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIHJldHVybiBmcmFtZWJ1ZmZlci0+c2Vjb25kOwotICAgIH0KLX0KLQot
RmVuY2UgKkNvbnRleHQ6OmdldEZlbmNlKHVuc2lnbmVkIGludCBoYW5kbGUpCi17Ci0gICAgRmVu
Y2VNYXA6Oml0ZXJhdG9yIGZlbmNlID0gbUZlbmNlTWFwLmZpbmQoaGFuZGxlKTsKLQotICAgIGlm
IChmZW5jZSA9PSBtRmVuY2VNYXAuZW5kKCkpCi0gICAgewotICAgICAgICByZXR1cm4gTlVMTDsK
LSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZlbmNlLT5zZWNvbmQ7Ci0g
ICAgfQotfQotCi1RdWVyeSAqQ29udGV4dDo6Z2V0UXVlcnkodW5zaWduZWQgaW50IGhhbmRsZSwg
Ym9vbCBjcmVhdGUsIEdMZW51bSB0eXBlKQotewotICAgIFF1ZXJ5TWFwOjppdGVyYXRvciBxdWVy
eSA9IG1RdWVyeU1hcC5maW5kKGhhbmRsZSk7Ci0KLSAgICBpZiAocXVlcnkgPT0gbVF1ZXJ5TWFw
LmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIGlmICghcXVlcnktPnNlY29uZCAmJiBjcmVhdGUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHF1ZXJ5LT5zZWNvbmQgPSBuZXcgUXVlcnkoaGFuZGxlLCB0eXBlKTsKLSAgICAg
ICAgICAgIHF1ZXJ5LT5zZWNvbmQtPmFkZFJlZigpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBxdWVyeS0+c2Vjb25kOwotICAgIH0KLX0KLQotQnVmZmVyICpDb250ZXh0OjpnZXRBcnJheUJ1
ZmZlcigpCi17Ci0gICAgcmV0dXJuIG1TdGF0ZS5hcnJheUJ1ZmZlci5nZXQoKTsKLX0KLQotQnVm
ZmVyICpDb250ZXh0OjpnZXRFbGVtZW50QXJyYXlCdWZmZXIoKQotewotICAgIHJldHVybiBtU3Rh
dGUuZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOwotfQotCi1Qcm9ncmFtQmluYXJ5ICpDb250ZXh0
OjpnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpCi17Ci0gICAgcmV0dXJuIG1DdXJyZW50UHJvZ3Jh
bUJpbmFyeS5nZXQoKTsKLX0KLQotVGV4dHVyZTJEICpDb250ZXh0OjpnZXRUZXh0dXJlMkQoKQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0dXJlMkQqPihnZXRTYW1wbGVyVGV4dHVyZSht
U3RhdGUuYWN0aXZlU2FtcGxlciwgVEVYVFVSRV8yRCkpOwotfQotCi1UZXh0dXJlQ3ViZU1hcCAq
Q29udGV4dDo6Z2V0VGV4dHVyZUN1YmVNYXAoKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0dXJlQ3ViZU1hcCo+KGdldFNhbXBsZXJUZXh0dXJlKG1TdGF0ZS5hY3RpdmVTYW1wbGVyLCBU
RVhUVVJFX0NVQkUpKTsKLX0KLQotVGV4dHVyZSAqQ29udGV4dDo6Z2V0U2FtcGxlclRleHR1cmUo
dW5zaWduZWQgaW50IHNhbXBsZXIsIFRleHR1cmVUeXBlIHR5cGUpCi17Ci0gICAgR0x1aW50IHRl
eGlkID0gbVN0YXRlLnNhbXBsZXJUZXh0dXJlW3R5cGVdW3NhbXBsZXJdLmlkKCk7Ci0KLSAgICBp
ZiAodGV4aWQgPT0gMCkgICAvLyBTcGVjaWFsIGNhc2U6IDAgcmVmZXJzIHRvIGRpZmZlcmVudCBp
bml0aWFsIHRleHR1cmVzIGJhc2VkIG9uIHRoZSB0YXJnZXQKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAodHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgY2FzZSBURVhUVVJFXzJEOiByZXR1cm4gbVRleHR1cmUyRFplcm8uZ2V0KCk7Ci0g
ICAgICAgICAgY2FzZSBURVhUVVJFX0NVQkU6IHJldHVybiBtVGV4dHVyZUN1YmVNYXBaZXJvLmdl
dCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG1TdGF0ZS5zYW1wbGVyVGV4dHVy
ZVt0eXBlXVtzYW1wbGVyXS5nZXQoKTsKLX0KLQotYm9vbCBDb250ZXh0OjpnZXRCb29sZWFudihH
TGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQotewotICAgIHN3aXRjaCAocG5hbWUpCi0g
ICAgewotICAgICAgY2FzZSBHTF9TSEFERVJfQ09NUElMRVI6ICAgICAgICAgICAqcGFyYW1zID0g
R0xfVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6ICAgICpwYXJhbXMgPSBtU3RhdGUuc2FtcGxlQ292ZXJh
Z2VJbnZlcnQ7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfREVQVEhfV1JJVEVNQVNLOiAg
ICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aE1hc2s7ICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6Ci0gICAgICAgIHBhcmFtc1swXSA9
IG1TdGF0ZS5jb2xvck1hc2tSZWQ7Ci0gICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0ZS5jb2xvck1h
c2tHcmVlbjsKLSAgICAgICAgcGFyYW1zWzJdID0gbVN0YXRlLmNvbG9yTWFza0JsdWU7Ci0gICAg
ICAgIHBhcmFtc1szXSA9IG1TdGF0ZS5jb2xvck1hc2tBbHBoYTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEdMX0NVTExfRkFDRTogICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUu
Y3VsbEZhY2U7ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfUE9MWUdP
Tl9PRkZTRVRfRklMTDogICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5wb2x5Z29uT2Zmc2V0RmlsbDsg
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6
ICAqcGFyYW1zID0gbVN0YXRlLnNhbXBsZUFscGhhVG9Db3ZlcmFnZTsgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRTogICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUu
c2FtcGxlQ292ZXJhZ2U7ICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfU0NJU1NP
Ul9URVNUOiAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zY2lzc29yVGVzdDsgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6ICAgICAgICAgICAg
ICAqcGFyYW1zID0gbVN0YXRlLnN0ZW5jaWxUZXN0OyAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUu
ZGVwdGhUZXN0OyAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfQkxFTkQ6
ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5ibGVuZDsgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gbVN0YXRlLmRpdGhlcjsgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQ6ICpwYXJhbXMgPSBtUm9idXN0
QWNjZXNzID8gR0xfVFJVRSA6IEdMX0ZBTFNFOyBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBD
b250ZXh0OjpnZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCi17Ci0gICAg
Ly8gUGxlYXNlIG5vdGU6IERFUFRIX0NMRUFSX1ZBTFVFIGlzIGluY2x1ZGVkIGluIG91ciBpbnRl
cm5hbCBnZXRGbG9hdHYgaW1wbGVtZW50YXRpb24KLSAgICAvLyBiZWNhdXNlIGl0IGlzIHN0b3Jl
ZCBhcyBhIGZsb2F0LCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlIEdMIEVTIDIuMCBzcGVjIG5h
bWVzCi0gICAgLy8gR2V0SW50ZWdlcnYgYXMgaXRzIG5hdGl2ZSBxdWVyeSBmdW5jdGlvbi4gQXMg
aXQgd291bGQgcmVxdWlyZSBjb252ZXJzaW9uIGluIGFueQotICAgIC8vIGNhc2UsIHRoaXMgc2hv
dWxkIG1ha2Ugbm8gZGlmZmVyZW5jZSB0byB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4KLSAgICBz
d2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgIGNhc2UgR0xfTElORV9XSURUSDogICAgICAgICAg
ICAgICAqcGFyYW1zID0gbVN0YXRlLmxpbmVXaWR0aDsgICAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFOiAgICAqcGFyYW1zID0gbVN0YXRlLnNhbXBs
ZUNvdmVyYWdlVmFsdWU7ICBicmVhazsKLSAgICAgIGNhc2UgR0xfREVQVEhfQ0xFQVJfVkFMVUU6
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRoQ2xlYXJWYWx1ZTsgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SOiAgICAqcGFyYW1zID0gbVN0YXRlLnBv
bHlnb25PZmZzZXRGYWN0b3I7ICBicmVhazsKLSAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRf
VU5JVFM6ICAgICAqcGFyYW1zID0gbVN0YXRlLnBvbHlnb25PZmZzZXRVbml0czsgICBicmVhazsK
LSAgICAgIGNhc2UgR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOgotICAgICAgICBwYXJhbXNb
MF0gPSBnbDo6QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFX01JTjsKLSAgICAgICAgcGFyYW1zWzFd
ID0gZ2w6OkFMSUFTRURfTElORV9XSURUSF9SQU5HRV9NQVg7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0U6Ci0gICAgICAgIHBhcmFtc1swXSA9
IGdsOjpBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfTUlOOwotICAgICAgICBwYXJhbXNbMV0gPSBn
ZXRNYXhpbXVtUG9pbnRTaXplKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9ERVBU
SF9SQU5HRToKLSAgICAgICAgcGFyYW1zWzBdID0gbVN0YXRlLnpOZWFyOwotICAgICAgICBwYXJh
bXNbMV0gPSBtU3RhdGUuekZhcjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0NPTE9S
X0NMRUFSX1ZBTFVFOgotICAgICAgICBwYXJhbXNbMF0gPSBtU3RhdGUuY29sb3JDbGVhclZhbHVl
LnJlZDsKLSAgICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5ncmVlbjsK
LSAgICAgICAgcGFyYW1zWzJdID0gbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlOwotICAgICAg
ICBwYXJhbXNbM10gPSBtU3RhdGUuY29sb3JDbGVhclZhbHVlLmFscGhhOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgR0xfQkxFTkRfQ09MT1I6Ci0gICAgICAgIHBhcmFtc1swXSA9IG1TdGF0
ZS5ibGVuZENvbG9yLnJlZDsKLSAgICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLmJsZW5kQ29sb3Iu
Z3JlZW47Ci0gICAgICAgIHBhcmFtc1syXSA9IG1TdGF0ZS5ibGVuZENvbG9yLmJsdWU7Ci0gICAg
ICAgIHBhcmFtc1szXSA9IG1TdGF0ZS5ibGVuZENvbG9yLmFscGhhOwotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgotICAgICAgICBp
ZiAoIXN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgICpwYXJhbXMgPSBtTWF4VGV4
dHVyZUFuaXNvdHJvcHk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENvbnRl
eHQ6OmdldEludGVnZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKLXsKLSAgICAvLyBQ
bGVhc2Ugbm90ZTogREVQVEhfQ0xFQVJfVkFMVUUgaXMgbm90IGluY2x1ZGVkIGluIG91ciBpbnRl
cm5hbCBnZXRJbnRlZ2VydiBpbXBsZW1lbnRhdGlvbgotICAgIC8vIGJlY2F1c2UgaXQgaXMgc3Rv
cmVkIGFzIGEgZmxvYXQsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGUgR0wgRVMgMi4wIHNwZWMg
bmFtZXMKLSAgICAvLyBHZXRJbnRlZ2VydiBhcyBpdHMgbmF0aXZlIHF1ZXJ5IGZ1bmN0aW9uLiBB
cyBpdCB3b3VsZCByZXF1aXJlIGNvbnZlcnNpb24gaW4gYW55Ci0gICAgLy8gY2FzZSwgdGhpcyBz
aG91bGQgbWFrZSBubyBkaWZmZXJlbmNlIHRvIHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLiBZb3Ug
bWF5IGZpbmQgaXQgaW4gCi0gICAgLy8gQ29udGV4dDo6Z2V0RmxvYXR2LgotICAgIHN3aXRjaCAo
cG5hbWUpCi0gICAgewotICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlM6ICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7ICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOiAgICAgICAqcGFy
YW1zID0gZ2w6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOyAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgR0xfTUFYX1ZBUllJTkdfVkVDVE9SUzogICAgICAgICAgICAgICpwYXJhbXMgPSBnZXRN
YXhpbXVtVmFyeWluZ1ZlY3RvcnMoKTsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9N
QVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzogKnBhcmFtcyA9IGdldE1heGltdW1Db21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzKCk7IGJyZWFrOwotICAgICAgY2FzZSBHTF9NQVhfVkVSVEVY
X1RFWFRVUkVfSU1BR0VfVU5JVFM6ICAgKnBhcmFtcyA9IGdldE1heGltdW1WZXJ0ZXhUZXh0dXJl
SW1hZ2VVbml0cygpOyAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0lNQUdFX1VO
SVRTOiAgICAgICAgICAqcGFyYW1zID0gZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOyAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzog
ICAgICpwYXJhbXMgPSBnZXRNYXhpbXVtRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpOyAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkU6ICAgICAgICAgICAgKnBhcmFt
cyA9IGdldE1heGltdW1SZW5kZXJidWZmZXJEaW1lbnNpb24oKTsgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFM6ICAgICAgICAqcGFyYW1zID0gMDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfU0hB
REVSX0JJTkFSWV9GT1JNQVRTOiAgICAgIC8qIG5vIHNoYWRlciBiaW5hcnkgZm9ybWF0cyBhcmUg
c3VwcG9ydGVkICovICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJf
QklORElORzogICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5hcnJheUJ1ZmZlci5pZCgpOyAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJ
TkRJTkc6ICAgICAqcGFyYW1zID0gbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5pZCgpOyAgICAg
ICBicmVhazsKLSAgICAgIC8vY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HOiAgICAgICAgICAg
IC8vIG5vdyBlcXVpdmFsZW50IHRvIEdMX0RSQVdfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRQot
ICAgICAgY2FzZSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEU6ICAgKnBhcmFtcyA9
IG1TdGF0ZS5kcmF3RnJhbWVidWZmZXI7ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX1JFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRTogICAqcGFyYW1zID0gbVN0YXRlLnJl
YWRGcmFtZWJ1ZmZlcjsgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUucmVuZGVyYnVmZmVy
LmlkKCk7ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9DVVJSRU5UX1BST0dSQU06
ICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5jdXJyZW50UHJvZ3JhbTsgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1BBQ0tfQUxJR05NRU5UOiAgICAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnBhY2tBbGlnbm1lbnQ7ICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRTogICAgICpw
YXJhbXMgPSBtU3RhdGUucGFja1JldmVyc2VSb3dPcmRlcjsgICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05NRU5UOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1T
dGF0ZS51bnBhY2tBbGlnbm1lbnQ7ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X0dFTkVSQVRFX01JUE1BUF9ISU5UOiAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmdlbmVy
YXRlTWlwbWFwSGludDsgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfRlJBR01FTlRf
U0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6ICpwYXJhbXMgPSBtU3RhdGUuZnJhZ21lbnRTaGFk
ZXJEZXJpdmF0aXZlSGludDsgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0FDVElWRV9URVhUVVJFOiAg
ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gKG1TdGF0ZS5hY3RpdmVTYW1wbGVyICsgR0xfVEVY
VFVSRTApOyBicmVhazsKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9GVU5DOiAgICAgICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc3RlbmNpbEZ1bmM7ICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1JFRjogICAgICAgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IG1TdGF0ZS5zdGVuY2lsUmVmOyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX1NURU5DSUxfVkFMVUVfTUFTSzogICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0
YXRlLnN0ZW5jaWxNYXNrOyAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xf
U1RFTkNJTF9CQUNLX0ZVTkM6ICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc3RlbmNp
bEJhY2tGdW5jOyAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JB
Q0tfUkVGOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zdGVuY2lsQmFja1JlZjsg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19WQUxVRV9N
QVNLOiAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnN0ZW5jaWxCYWNrTWFzazsgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9GQUlMOiAgICAgICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSBtU3RhdGUuc3RlbmNpbEZhaWw7ICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTDogICAgICAgICAgKnBhcmFt
cyA9IG1TdGF0ZS5zdGVuY2lsUGFzc0RlcHRoRmFpbDsgICAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTOiAgICAgICAgICAqcGFyYW1zID0gbVN0YXRl
LnN0ZW5jaWxQYXNzRGVwdGhQYXNzOyAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfU1RF
TkNJTF9CQUNLX0ZBSUw6ICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc3RlbmNpbEJh
Y2tGYWlsOyAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tf
UEFTU19ERVBUSF9GQUlMOiAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0
aEZhaWw7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRI
X1BBU1M6ICAgICAqcGFyYW1zID0gbVN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzczsgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfREVQVEhfRlVOQzogICAgICAgICAgICAgICAgICAgICAg
ICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhGdW5jOyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBHTF9CTEVORF9TUkNfUkdCOiAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9
IG1TdGF0ZS5zb3VyY2VCbGVuZFJHQjsgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX0JMRU5EX1NSQ19BTFBIQTogICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNv
dXJjZUJsZW5kQWxwaGE7ICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfQkxFTkRf
RFNUX1JHQjogICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVzdEJsZW5kUkdC
OyAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9CTEVORF9EU1RfQUxQSEE6
ICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXN0QmxlbmRBbHBoYTsgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX1JHQjogICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kRXF1YXRpb25SR0I7ICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fQUxQSEE6ICAgICAgICAgICAgICpw
YXJhbXMgPSBtU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhOyAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9TVEVOQ0lMX1dSSVRFTUFTSzogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1T
dGF0ZS5zdGVuY2lsV3JpdGVtYXNrOyAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1NURU5DSUxfQkFDS19XUklURU1BU0s6ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnN0ZW5j
aWxCYWNrV3JpdGVtYXNrOyAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9D
TEVBUl9WQUxVRTogICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc3RlbmNpbENsZWFyVmFs
dWU7ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TVUJQSVhFTF9CSVRTOiAgICAg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX01BWF9URVhUVVJFX1NJWkU6ICAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gZ2V0TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKTsgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRTogICAgICAgICpwYXJh
bXMgPSBnZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKTsgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6ICAgCi0gICAgICAgIHBhcmFt
c1swXSA9IG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9NQVhfU0FNUExFU19BTkdMRToKLSAgICAgICAgewotICAgICAgICAgICAgR0xz
aXplaSBtYXhTYW1wbGVzID0gZ2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpOwotICAgICAgICAgICAg
aWYgKG1heFNhbXBsZXMgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAqcGFy
YW1zID0gbWF4U2FtcGxlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICBjYXNlIEdMX1NBTVBMRV9CVUZG
RVJTOiAgICAgICAgICAgICAgICAgICAKLSAgICAgIGNhc2UgR0xfU0FNUExFUzoKLSAgICAgICAg
ewotICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdldERyYXdGcmFt
ZWJ1ZmZlcigpOwotICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5jb21wbGV0ZW5lc3MoKSA9
PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfU0FNUExFX0JVRkZFUlM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZl
ci0+Z2V0U2FtcGxlcygpICE9IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSAxOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgKnBhcmFtcyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRVM6Ci0gICAg
ICAgICAgICAgICAgICAgICpwYXJhbXMgPSBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcygpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICpwYXJh
bXMgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6Ci0gICAgICBjYXNlIEdMX0lN
UExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUOgotICAgICAgICB7Ci0gICAgICAgICAgICBH
TGVudW0gZm9ybWF0LCB0eXBlOwotICAgICAgICAgICAgaWYgKGdldEN1cnJlbnRSZWFkRm9ybWF0
VHlwZSgmZm9ybWF0LCAmdHlwZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KHBuYW1lID09IEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUKQotICAgICAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gZm9ybWF0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IHR5cGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX01BWF9WSUVXUE9SVF9ESU1TOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQgbWF4RGltZW5zaW9uID0gc3RkOjptYXgoZ2V0TWF4aW11bVJl
bmRlcmJ1ZmZlckRpbWVuc2lvbigpLCBnZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lvbigpKTsKLSAg
ICAgICAgICAgIHBhcmFtc1swXSA9IG1heERpbWVuc2lvbjsKLSAgICAgICAgICAgIHBhcmFtc1sx
XSA9IG1heERpbWVuc2lvbjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChzdXBwb3J0c0RYVDFUZXh0dXJlcygpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICpwYXJhbXMrKyA9IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7Ci0gICAgICAgICAg
ICAgICAgKnBhcmFtcysrID0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAqcGFyYW1zKysgPSBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0FOR0xFOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN1cHBvcnRz
RFhUNVRleHR1cmVzKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKnBhcmFtcysr
ID0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVklFV1BPUlQ6Ci0gICAgICAg
IHBhcmFtc1swXSA9IG1TdGF0ZS52aWV3cG9ydFg7Ci0gICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0
ZS52aWV3cG9ydFk7Ci0gICAgICAgIHBhcmFtc1syXSA9IG1TdGF0ZS52aWV3cG9ydFdpZHRoOwot
ICAgICAgICBwYXJhbXNbM10gPSBtU3RhdGUudmlld3BvcnRIZWlnaHQ7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9TQ0lTU09SX0JPWDoKLSAgICAgICAgcGFyYW1zWzBdID0gbVN0YXRl
LnNjaXNzb3JYOwotICAgICAgICBwYXJhbXNbMV0gPSBtU3RhdGUuc2Npc3Nvclk7Ci0gICAgICAg
IHBhcmFtc1syXSA9IG1TdGF0ZS5zY2lzc29yV2lkdGg7Ci0gICAgICAgIHBhcmFtc1szXSA9IG1T
dGF0ZS5zY2lzc29ySGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfQ1VMTF9G
QUNFX01PREU6ICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuY3VsbE1vZGU7ICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfRlJPTlRfRkFDRTogICAgICAgICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZnJvbnRGYWNlOyAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgR0xfUkVEX0JJVFM6Ci0gICAgICBjYXNlIEdMX0dSRUVOX0JJVFM6
Ci0gICAgICBjYXNlIEdMX0JMVUVfQklUUzoKLSAgICAgIGNhc2UgR0xfQUxQSEFfQklUUzoKLSAg
ICAgICAgewotICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdldERy
YXdGcmFtZWJ1ZmZlcigpOwotICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqY29sb3JidWZm
ZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoKTsKLQotICAgICAgICAgICAgaWYgKGNv
bG9yYnVmZmVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN3aXRjaCAocG5hbWUp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRURfQklUUzog
ICAqcGFyYW1zID0gY29sb3JidWZmZXItPmdldFJlZFNpemUoKTsgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfR1JFRU5fQklUUzogKnBhcmFtcyA9IGNvbG9yYnVmZmVyLT5nZXRH
cmVlblNpemUoKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEdMX0JMVUVfQklUUzog
ICpwYXJhbXMgPSBjb2xvcmJ1ZmZlci0+Z2V0Qmx1ZVNpemUoKTsgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOiAqcGFyYW1zID0gY29sb3JidWZmZXItPmdldEFs
cGhhU2l6ZSgpOyBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IDA7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X0RFUFRIX0JJVFM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICAgICAgICAgIGdsOjpSZW5kZXJi
dWZmZXIgKmRlcHRoYnVmZmVyID0gZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCk7Ci0KLSAg
ICAgICAgICAgIGlmIChkZXB0aGJ1ZmZlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gZGVwdGhidWZmZXItPmdldERlcHRoU2l6ZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICpwYXJhbXMg
PSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBHTF9TVEVOQ0lMX0JJVFM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICAgICAgICAgIGdsOjpS
ZW5kZXJidWZmZXIgKnN0ZW5jaWxidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZl
cigpOwotCi0gICAgICAgICAgICBpZiAoc3RlbmNpbGJ1ZmZlcikKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gc3RlbmNpbGJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobVN0YXRlLmFjdGl2ZVNhbXBsZXIgPiBnZXRNYXhpbXVtQ29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cygpIC0gMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNhbXBsZXJUZXh0
dXJlW1RFWFRVUkVfMkRdW21TdGF0ZS5hY3RpdmVTYW1wbGVyXS5pZCgpOwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtU3RhdGUuYWN0aXZlU2FtcGxlciA+IGdldE1heGlt
dW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgLSAxKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICpwYXJhbXMgPSBtU3Rh
dGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV9DVUJFXVttU3RhdGUuYWN0aXZlU2FtcGxlcl0uaWQo
KTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfUkVTRVRfTk9USUZJ
Q0FUSU9OX1NUUkFURUdZX0VYVDoKLSAgICAgICAgKnBhcmFtcyA9IG1SZXNldFN0cmF0ZWd5Owot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNf
T0VTOgotICAgICAgICAqcGFyYW1zID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTOgotICAgICAgICAqcGFyYW1zID0gR0xfUFJPR1JB
TV9CSU5BUllfQU5HTEU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENvbnRl
eHQ6OmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5z
aWduZWQgaW50ICpudW1QYXJhbXMpCi17Ci0gICAgLy8gUGxlYXNlIG5vdGU6IHRoZSBxdWVyeSB0
eXBlIHJldHVybmVkIGZvciBERVBUSF9DTEVBUl9WQUxVRSBpbiB0aGlzIGltcGxlbWVudGF0aW9u
Ci0gICAgLy8gaXMgRkxPQVQgcmF0aGVyIHRoYW4gSU5ULCBhcyB3b3VsZCBiZSBzdWdnZXN0ZWQg
YnkgdGhlIEdMIEVTIDIuMCBzcGVjLiBUaGlzIGlzIGR1ZQotICAgIC8vIHRvIHRoZSBmYWN0IHRo
YXQgaXQgaXMgc3RvcmVkIGludGVybmFsbHkgYXMgYSBmbG9hdCwgYW5kIHNvIHdvdWxkIHJlcXVp
cmUgY29udmVyc2lvbgotICAgIC8vIGlmIHJldHVybmVkIGZyb20gQ29udGV4dDo6Z2V0SW50ZWdl
cnYuIFNpbmNlIHRoaXMgY29udmVyc2lvbiBpcyBhbHJlYWR5IGltcGxlbWVudGVkIAotICAgIC8v
IGluIHRoZSBjYXNlIHRoYXQgb25lIGNhbGxzIGdsR2V0SW50ZWdlcnYgdG8gcmV0cmlldmUgYSBm
bG9hdC10eXBlZCBzdGF0ZSB2YXJpYWJsZSwgd2UKLSAgICAvLyBwbGFjZSBERVBUSF9DTEVBUl9W
QUxVRSB3aXRoIHRoZSBmbG9hdHMuIFRoaXMgc2hvdWxkIG1ha2Ugbm8gZGlmZmVyZW5jZSB0byB0
aGUgY2FsbGluZwotICAgIC8vIGFwcGxpY2F0aW9uLgotICAgIHN3aXRjaCAocG5hbWUpCi0gICAg
ewotICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKLSAgICAgICAgewot
ICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7Ci0gICAgICAgICAgICAqbnVtUGFyYW1zID0gbU51
bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0czsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOgotICAgICAgICB7Ci0gICAgICAgICAg
ICAqdHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAwOwotICAgICAgICB9
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlM6Ci0gICAg
ICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOgotICAgICAgY2FzZSBHTF9NQVhf
VkFSWUlOR19WRUNUT1JTOgotICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFH
RV9VTklUUzoKLSAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOgot
ICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUzoKLSAgICAgIGNhc2UgR0xfTUFY
X0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKLSAgICAgIGNhc2UgR0xfTUFYX1JFTkRFUkJVRkZF
Ul9TSVpFOgotICAgICAgY2FzZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOgotICAgICAg
Y2FzZSBHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6Ci0gICAgICBjYXNlIEdMX0FS
UkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HOgot
ICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQklORElORzoKLSAgICAgIGNhc2UgR0xfQ1VSUkVO
VF9QUk9HUkFNOgotICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKLSAgICAgIGNhc2UgR0xf
UEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRToKLSAgICAgIGNhc2UgR0xfVU5QQUNLX0FMSUdO
TUVOVDoKLSAgICAgIGNhc2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQ6Ci0gICAgICBjYXNlIEdM
X0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTOgotICAgICAgY2FzZSBHTF9SRURf
QklUUzoKLSAgICAgIGNhc2UgR0xfR1JFRU5fQklUUzoKLSAgICAgIGNhc2UgR0xfQkxVRV9CSVRT
OgotICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOgotICAgICAgY2FzZSBHTF9ERVBUSF9CSVRTOgot
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JJVFM6Ci0gICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSX0JJTkRJTkc6Ci0gICAgICBjYXNlIEdMX0NVTExfRkFDRV9NT0RFOgotICAgICAgY2Fz
ZSBHTF9GUk9OVF9GQUNFOgotICAgICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRToKLSAgICAgIGNh
c2UgR0xfU1RFTkNJTF9GVU5DOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0s6Ci0g
ICAgICBjYXNlIEdMX1NURU5DSUxfUkVGOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0ZBSUw6Ci0g
ICAgICBjYXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMOgotICAgICAgY2FzZSBHTF9TVEVO
Q0lMX1BBU1NfREVQVEhfUEFTUzoKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZVTkM6Ci0g
ICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLOgotICAgICAgY2FzZSBHTF9TVEVO
Q0lMX0JBQ0tfUkVGOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRkFJTDoKLSAgICAgIGNh
c2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTDoKLSAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfUEFTUzoKLSAgICAgIGNhc2UgR0xfREVQVEhfRlVOQzoKLSAgICAg
IGNhc2UgR0xfQkxFTkRfU1JDX1JHQjoKLSAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX0FMUEhBOgot
ICAgICAgY2FzZSBHTF9CTEVORF9EU1RfUkdCOgotICAgICAgY2FzZSBHTF9CTEVORF9EU1RfQUxQ
SEE6Ci0gICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX1JHQjoKLSAgICAgIGNhc2UgR0xfQkxF
TkRfRVFVQVRJT05fQUxQSEE6Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOgotICAg
ICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLOgotICAgICAgY2FzZSBHTF9TVEVOQ0lM
X0NMRUFSX1ZBTFVFOgotICAgICAgY2FzZSBHTF9TVUJQSVhFTF9CSVRTOgotICAgICAgY2FzZSBH
TF9NQVhfVEVYVFVSRV9TSVpFOgotICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9T
SVpFOgotICAgICAgY2FzZSBHTF9TQU1QTEVfQlVGRkVSUzoKLSAgICAgIGNhc2UgR0xfU0FNUExF
UzoKLSAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFOgotICAgICAg
Y2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoKLSAgICAgIGNhc2UgR0xf
VEVYVFVSRV9CSU5ESU5HXzJEOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9N
QVA6Ci0gICAgICBjYXNlIEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6Ci0gICAg
ICBjYXNlIEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUzoKLSAgICAgIGNhc2UgR0xf
UFJPR1JBTV9CSU5BUllfRk9STUFUU19PRVM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0eXBl
ID0gR0xfSU5UOwotICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX01BWF9TQU1QTEVTX0FOR0xFOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoZ2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpICE9IDApCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7Ci0gICAgICAgICAgICAgICAgKm51
bVBhcmFtcyA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9NQVhfVklFV1BPUlRfRElNUzoKLSAg
ICAgICAgewotICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7Ci0gICAgICAgICAgICAqbnVtUGFy
YW1zID0gMjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVklFV1BP
UlQ6Ci0gICAgICBjYXNlIEdMX1NDSVNTT1JfQk9YOgotICAgICAgICB7Ci0gICAgICAgICAgICAq
dHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSA0OwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TSEFERVJfQ09NUElMRVI6Ci0gICAgICBjYXNl
IEdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6Ci0gICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFT
SzoKLSAgICAgIGNhc2UgR0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICAvLyBDVUxMX0ZBQ0Ug
dGhyb3VnaCBESVRIRVIgYXJlIG5hdHVyYWwgdG8gSXNFbmFibGVkLAotICAgICAgY2FzZSBHTF9Q
T0xZR09OX09GRlNFVF9GSUxMOiAgICAgIC8vIGJ1dCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2gg
dGhlIEdldHtUeXBlfXYgcXVlcmllcy4KLSAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NP
VkVSQUdFOiAvLyBGb3IgdGhpcyBwdXJwb3NlLCB0aGV5IGFyZSB0cmVhdGVkIGhlcmUgYXMgYm9v
bC1uYXR1cmFsCi0gICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRToKLSAgICAgIGNhc2UgR0xf
U0NJU1NPUl9URVNUOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6Ci0gICAgICBjYXNlIEdM
X0RFUFRIX1RFU1Q6Ci0gICAgICBjYXNlIEdMX0JMRU5EOgotICAgICAgY2FzZSBHTF9ESVRIRVI6
Ci0gICAgICBjYXNlIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQ6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgICp0eXBlID0gR0xfQk9PTDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gR0xfQk9PTDsKLSAgICAgICAgICAgICpu
dW1QYXJhbXMgPSA0OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9Q
T0xZR09OX09GRlNFVF9GQUNUT1I6Ci0gICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX1VOSVRT
OgotICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUU6Ci0gICAgICBjYXNlIEdMX0RF
UFRIX0NMRUFSX1ZBTFVFOgotICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOgotICAgICAgICB7Ci0g
ICAgICAgICAgICAqdHlwZSA9IEdMX0ZMT0FUOwotICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9X
SURUSF9SQU5HRToKLSAgICAgIGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgotICAg
ICAgY2FzZSBHTF9ERVBUSF9SQU5HRToKLSAgICAgICAgewotICAgICAgICAgICAgKnR5cGUgPSBH
TF9GTE9BVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAyOwotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKLSAgICAgIGNhc2UgR0xf
QkxFTkRfQ09MT1I6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7Ci0g
ICAgICAgICAgICAqbnVtUGFyYW1zID0gNDsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgotICAgICAgICBpZiAo
IXN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgICp0eXBlID0gR0xfRkxPQVQ7Ci0g
ICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8g
QXBwbGllcyB0aGUgcmVuZGVyIHRhcmdldCBzdXJmYWNlLCBkZXB0aCBzdGVuY2lsIHN1cmZhY2Us
IHZpZXdwb3J0IHJlY3RhbmdsZSBhbmQKLS8vIHNjaXNzb3IgcmVjdGFuZ2xlIHRvIHRoZSBEaXJl
Y3QzRCA5IGRldmljZQotYm9vbCBDb250ZXh0OjphcHBseVJlbmRlclRhcmdldChib29sIGlnbm9y
ZVZpZXdwb3J0KQotewotICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IGdldERy
YXdGcmFtZWJ1ZmZlcigpOwotCi0gICAgaWYgKCFmcmFtZWJ1ZmZlck9iamVjdCB8fCBmcmFtZWJ1
ZmZlck9iamVjdC0+Y29tcGxldGVuZXNzKCkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCi0g
ICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICAvLyBpZiB0aGVyZSBpcyBubyBjb2xvciBhdHRhY2ht
ZW50IHdlIG11c3Qgc3ludGhlc2l6ZSBhIE5VTEwgY29sb3JhdHRhY2htZW50Ci0gICAgLy8gdG8g
a2VlcCB0aGUgRDNEIHJ1bnRpbWUgaGFwcHkuICBUaGlzIHNob3VsZCBvbmx5IGJlIHBvc3NpYmxl
IGlmIGRlcHRoIHRleHR1cmluZy4KLSAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVj
dCA9IE5VTEw7Ci0gICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRDb2xvcmJ1ZmZlclR5cGUo
KSAhPSBHTF9OT05FKQotICAgIHsKLSAgICAgICAgcmVuZGVyYnVmZmVyT2JqZWN0ID0gZnJhbWVi
dWZmZXJPYmplY3QtPmdldENvbG9yYnVmZmVyKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0g
ICAgICAgIHJlbmRlcmJ1ZmZlck9iamVjdCA9IGZyYW1lYnVmZmVyT2JqZWN0LT5nZXROdWxsQ29s
b3JidWZmZXIoKTsKLSAgICB9Ci0gICAgaWYgKCFyZW5kZXJidWZmZXJPYmplY3QpCi0gICAgewot
ICAgICAgICBFUlIoInVuYWJsZSB0byBsb2NhdGUgcmVuZGVyYnVmZmVyIGZvciBGQk8uIik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIHJlbmRlclRhcmdldENoYW5n
ZWQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0U2VyaWFsID0gcmVuZGVy
YnVmZmVyT2JqZWN0LT5nZXRTZXJpYWwoKTsKLSAgICBpZiAocmVuZGVyVGFyZ2V0U2VyaWFsICE9
IG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsKQotICAgIHsKLSAgICAgICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKnJlbmRlclRhcmdldCA9IHJlbmRlcmJ1ZmZlck9iamVjdC0+Z2V0UmVuZGVyVGFyZ2V0
KCk7Ci0gICAgICAgIGlmICghcmVuZGVyVGFyZ2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBF
UlIoInJlbmRlciB0YXJnZXQgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsgICAvLyBDb250ZXh0IG11c3QgYmUgbG9zdAotICAgICAgICB9Ci0g
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCByZW5kZXJUYXJnZXQpOwotICAgICAg
ICBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlhbCA9IHJlbmRlclRhcmdldFNlcmlhbDsKLSAgICAg
ICAgbVNjaXNzb3JTdGF0ZURpcnR5ID0gdHJ1ZTsgLy8gU2Npc3NvciBhcmVhIG11c3QgYmUgY2xh
bXBlZCB0byByZW5kZXIgdGFyZ2V0J3Mgc2l6ZS0tIHRoaXMgaXMgZGlmZmVyZW50IGZvciBkaWZm
ZXJlbnQgcmVuZGVyIHRhcmdldHMuCi0gICAgICAgIHJlbmRlclRhcmdldENoYW5nZWQgPSB0cnVl
OwotICAgICAgICByZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqZGVwdGhTdGVuY2lsID0gTlVMTDsKLSAgICB1bnNpZ25lZCBpbnQgZGVwdGhi
dWZmZXJTZXJpYWwgPSAwOwotICAgIHVuc2lnbmVkIGludCBzdGVuY2lsYnVmZmVyU2VyaWFsID0g
MDsKLSAgICBpZiAoZnJhbWVidWZmZXJPYmplY3QtPmdldERlcHRoYnVmZmVyVHlwZSgpICE9IEdM
X05PTkUpCi0gICAgewotICAgICAgICBSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gZnJhbWVi
dWZmZXJPYmplY3QtPmdldERlcHRoYnVmZmVyKCk7Ci0gICAgICAgIGRlcHRoU3RlbmNpbCA9IGRl
cHRoYnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKTsKLSAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiRGVwdGggc3RlbmNpbCBwb2ludGVyIHVuZXhw
ZWN0ZWRseSBudWxsLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBkZXB0aGJ1ZmZlclNlcmlhbCA9IGRlcHRoYnVmZmVyLT5nZXRTZXJp
YWwoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZnJhbWVidWZmZXJPYmplY3QtPmdldFN0ZW5jaWxi
dWZmZXJUeXBlKCkgIT0gR0xfTk9ORSkKLSAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlciAqc3Rl
bmNpbGJ1ZmZlciA9IGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRTdGVuY2lsYnVmZmVyKCk7Ci0gICAg
ICAgIGRlcHRoU3RlbmNpbCA9IHN0ZW5jaWxidWZmZXItPmdldERlcHRoU3RlbmNpbCgpOwotICAg
ICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCJEZXB0
aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN0ZW5jaWxidWZmZXJTZXJp
YWwgPSBzdGVuY2lsYnVmZmVyLT5nZXRTZXJpYWwoKTsKLSAgICB9Ci0KLSAgICBpZiAoZGVwdGhi
dWZmZXJTZXJpYWwgIT0gbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbCB8fAotICAgICAgICBzdGVu
Y2lsYnVmZmVyU2VyaWFsICE9IG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCB8fAotICAgICAg
ICAhbURlcHRoU3RlbmNpbEluaXRpYWxpemVkKQotICAgIHsKLSAgICAgICAgbURldmljZS0+U2V0
RGVwdGhTdGVuY2lsU3VyZmFjZShkZXB0aFN0ZW5jaWwpOwotICAgICAgICBtQXBwbGllZERlcHRo
YnVmZmVyU2VyaWFsID0gZGVwdGhidWZmZXJTZXJpYWw7Ci0gICAgICAgIG1BcHBsaWVkU3RlbmNp
bGJ1ZmZlclNlcmlhbCA9IHN0ZW5jaWxidWZmZXJTZXJpYWw7Ci0gICAgICAgIG1EZXB0aFN0ZW5j
aWxJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKGRlcHRoU3RlbmNpbCkKLSAg
ICB7Ci0gICAgICAgIGRlcHRoU3RlbmNpbC0+UmVsZWFzZSgpOwotICAgIH0KLQotICAgIGlmICgh
bVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCB8fCByZW5kZXJUYXJnZXRDaGFuZ2VkKQotICAg
IHsKLSAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCA9IHJlbmRlcmJ1ZmZl
ck9iamVjdC0+Z2V0UmVuZGVyVGFyZ2V0KCk7Ci0gICAgICAgIGlmICghcmVuZGVyVGFyZ2V0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gQ29udGV4dCBtdXN0IGJl
IGxvc3QKLSAgICAgICAgfQotICAgICAgICByZW5kZXJUYXJnZXQtPkdldERlc2MoJm1SZW5kZXJU
YXJnZXREZXNjKTsKLSAgICAgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IHRydWU7
Ci0gICAgICAgIHJlbmRlclRhcmdldC0+UmVsZWFzZSgpOwotICAgIH0KLQotICAgIEQzRFZJRVdQ
T1JUOSB2aWV3cG9ydDsKLQotICAgIGZsb2F0IHpOZWFyID0gY2xhbXAwMShtU3RhdGUuek5lYXIp
OwotICAgIGZsb2F0IHpGYXIgPSBjbGFtcDAxKG1TdGF0ZS56RmFyKTsKLQotICAgIGlmIChpZ25v
cmVWaWV3cG9ydCkKLSAgICB7Ci0gICAgICAgIHZpZXdwb3J0LlggPSAwOwotICAgICAgICB2aWV3
cG9ydC5ZID0gMDsKLSAgICAgICAgdmlld3BvcnQuV2lkdGggPSBtUmVuZGVyVGFyZ2V0RGVzYy5X
aWR0aDsKLSAgICAgICAgdmlld3BvcnQuSGVpZ2h0ID0gbVJlbmRlclRhcmdldERlc2MuSGVpZ2h0
OwotICAgICAgICB2aWV3cG9ydC5NaW5aID0gMC4wZjsKLSAgICAgICAgdmlld3BvcnQuTWF4WiA9
IDEuMGY7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHZpZXdwb3J0LlggPSBjbGFt
cChtU3RhdGUudmlld3BvcnRYLCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4obVJlbmRlclRhcmdldERl
c2MuV2lkdGgpKTsKLSAgICAgICAgdmlld3BvcnQuWSA9IGNsYW1wKG1TdGF0ZS52aWV3cG9ydFks
IDBMLCBzdGF0aWNfY2FzdDxMT05HPihtUmVuZGVyVGFyZ2V0RGVzYy5IZWlnaHQpKTsKLSAgICAg
ICAgdmlld3BvcnQuV2lkdGggPSBjbGFtcChtU3RhdGUudmlld3BvcnRXaWR0aCwgMEwsIHN0YXRp
Y19jYXN0PExPTkc+KG1SZW5kZXJUYXJnZXREZXNjLldpZHRoKSAtIHN0YXRpY19jYXN0PExPTkc+
KHZpZXdwb3J0LlgpKTsKLSAgICAgICAgdmlld3BvcnQuSGVpZ2h0ID0gY2xhbXAobVN0YXRlLnZp
ZXdwb3J0SGVpZ2h0LCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4obVJlbmRlclRhcmdldERlc2MuSGVp
Z2h0KSAtIHN0YXRpY19jYXN0PExPTkc+KHZpZXdwb3J0LlkpKTsKLSAgICAgICAgdmlld3BvcnQu
TWluWiA9IHpOZWFyOwotICAgICAgICB2aWV3cG9ydC5NYXhaID0gekZhcjsKLSAgICB9Ci0KLSAg
ICBpZiAodmlld3BvcnQuV2lkdGggPD0gMCB8fCB2aWV3cG9ydC5IZWlnaHQgPD0gMCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsgICAvLyBOb3RoaW5nIHRvIHJlbmRlcgotICAgIH0KLQot
ICAgIGlmIChyZW5kZXJUYXJnZXRDaGFuZ2VkIHx8ICFtVmlld3BvcnRJbml0aWFsaXplZCB8fCBt
ZW1jbXAoJnZpZXdwb3J0LCAmbVNldFZpZXdwb3J0LCBzaXplb2YgbVNldFZpZXdwb3J0KSAhPSAw
KQotICAgIHsKLSAgICAgICAgbURldmljZS0+U2V0Vmlld3BvcnQoJnZpZXdwb3J0KTsKLSAgICAg
ICAgbVNldFZpZXdwb3J0ID0gdmlld3BvcnQ7Ci0gICAgICAgIG1WaWV3cG9ydEluaXRpYWxpemVk
ID0gdHJ1ZTsKLSAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7Ci0gICAgfQotCi0gICAg
aWYgKG1TY2lzc29yU3RhdGVEaXJ0eSkKLSAgICB7Ci0gICAgICAgIGlmIChtU3RhdGUuc2Npc3Nv
clRlc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFJFQ1QgcmVjdDsKLSAgICAgICAgICAgIHJl
Y3QubGVmdCA9IGNsYW1wKG1TdGF0ZS5zY2lzc29yWCwgMEwsIHN0YXRpY19jYXN0PExPTkc+KG1S
ZW5kZXJUYXJnZXREZXNjLldpZHRoKSk7Ci0gICAgICAgICAgICByZWN0LnRvcCA9IGNsYW1wKG1T
dGF0ZS5zY2lzc29yWSwgMEwsIHN0YXRpY19jYXN0PExPTkc+KG1SZW5kZXJUYXJnZXREZXNjLkhl
aWdodCkpOwotICAgICAgICAgICAgcmVjdC5yaWdodCA9IGNsYW1wKG1TdGF0ZS5zY2lzc29yWCAr
IG1TdGF0ZS5zY2lzc29yV2lkdGgsIDBMLCBzdGF0aWNfY2FzdDxMT05HPihtUmVuZGVyVGFyZ2V0
RGVzYy5XaWR0aCkpOwotICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBjbGFtcChtU3RhdGUuc2Np
c3NvclkgKyBtU3RhdGUuc2Npc3NvckhlaWdodCwgMEwsIHN0YXRpY19jYXN0PExPTkc+KG1SZW5k
ZXJUYXJnZXREZXNjLkhlaWdodCkpOwotICAgICAgICAgICAgbURldmljZS0+U2V0U2Npc3NvclJl
Y3QoJnJlY3QpOwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0NJ
U1NPUlRFU1RFTkFCTEUsIFRSVUUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0NJU1NPUlRFU1RF
TkFCTEUsIEZBTFNFKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1TY2lzc29yU3RhdGVEaXJ0eSA9
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChtU3RhdGUuY3VycmVudFByb2dyYW0gJiYgbUR4VW5p
Zm9ybXNEaXJ0eSkKLSAgICB7Ci0gICAgICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkg
PSBnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOwotCi0gICAgICAgIEdMaW50IGhhbGZQaXhlbFNp
emUgPSBwcm9ncmFtQmluYXJ5LT5nZXREeEhhbGZQaXhlbFNpemVMb2NhdGlvbigpOwotICAgICAg
ICBHTGZsb2F0IHh5WzJdID0gezEuMGYgLyB2aWV3cG9ydC5XaWR0aCwgLTEuMGYgLyB2aWV3cG9y
dC5IZWlnaHR9OwotICAgICAgICBwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtMmZ2KGhhbGZQaXhl
bFNpemUsIDEsIHh5KTsKLQotICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIGNv
bXB1dGluZyBnbF9GcmFnQ29vcmQgaW4gUHJvZ3JhbTo6bGlua1ZhcnlpbmdzKCkuCi0gICAgICAg
IEdMaW50IGNvb3JkID0gcHJvZ3JhbUJpbmFyeS0+Z2V0RHhDb29yZExvY2F0aW9uKCk7Ci0gICAg
ICAgIEdMZmxvYXQgd2h4eVs0XSA9IHttU3RhdGUudmlld3BvcnRXaWR0aCAvIDIuMGYsIG1TdGF0
ZS52aWV3cG9ydEhlaWdodCAvIDIuMGYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxv
YXQpbVN0YXRlLnZpZXdwb3J0WCArIG1TdGF0ZS52aWV3cG9ydFdpZHRoIC8gMi4wZiwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCltU3RhdGUudmlld3BvcnRZICsgbVN0YXRlLnZp
ZXdwb3J0SGVpZ2h0IC8gMi4wZn07Ci0gICAgICAgIHByb2dyYW1CaW5hcnktPnNldFVuaWZvcm00
ZnYoY29vcmQsIDEsIHdoeHkpOwotCi0gICAgICAgIEdMaW50IGRlcHRoID0gcHJvZ3JhbUJpbmFy
eS0+Z2V0RHhEZXB0aExvY2F0aW9uKCk7Ci0gICAgICAgIEdMZmxvYXQgZHpbMl0gPSB7KHpGYXIg
LSB6TmVhcikgLyAyLjBmLCAoek5lYXIgKyB6RmFyKSAvIDIuMGZ9OwotICAgICAgICBwcm9ncmFt
QmluYXJ5LT5zZXRVbmlmb3JtMmZ2KGRlcHRoLCAxLCBkeik7Ci0KLSAgICAgICAgR0xpbnQgZGVw
dGhSYW5nZSA9IHByb2dyYW1CaW5hcnktPmdldER4RGVwdGhSYW5nZUxvY2F0aW9uKCk7Ci0gICAg
ICAgIEdMZmxvYXQgbmVhckZhckRpZmZbM10gPSB7ek5lYXIsIHpGYXIsIHpGYXIgLSB6TmVhcn07
Ci0gICAgICAgIHByb2dyYW1CaW5hcnktPnNldFVuaWZvcm0zZnYoZGVwdGhSYW5nZSwgMSwgbmVh
ckZhckRpZmYpOwotICAgICAgICBtRHhVbmlmb3Jtc0RpcnR5ID0gZmFsc2U7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIEFwcGxpZXMgdGhlIGZpeGVkLWZ1bmN0aW9uIHN0YXRl
IChjdWxsaW5nLCBkZXB0aCB0ZXN0LCBhbHBoYSBibGVuZGluZywgc3RlbmNpbGluZywgZXRjKSB0
byB0aGUgRGlyZWN0M0QgOSBkZXZpY2UKLXZvaWQgQ29udGV4dDo6YXBwbHlTdGF0ZShHTGVudW0g
ZHJhd01vZGUpCi17Ci0gICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldEN1cnJl
bnRQcm9ncmFtQmluYXJ5KCk7Ci0KLSAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3Qg
PSBnZXREcmF3RnJhbWVidWZmZXIoKTsKLQotICAgIEdMaW50IGZyb250Q0NXID0gcHJvZ3JhbUJp
bmFyeS0+Z2V0RHhGcm9udENDV0xvY2F0aW9uKCk7Ci0gICAgR0xpbnQgY2N3ID0gKG1TdGF0ZS5m
cm9udEZhY2UgPT0gR0xfQ0NXKTsKLSAgICBwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtMWl2KGZy
b250Q0NXLCAxLCAmY2N3KTsKLQotICAgIEdMaW50IHBvaW50c09yTGluZXMgPSBwcm9ncmFtQmlu
YXJ5LT5nZXREeFBvaW50c09yTGluZXNMb2NhdGlvbigpOwotICAgIEdMaW50IGFsd2F5c0Zyb250
ID0gIWlzVHJpYW5nbGVNb2RlKGRyYXdNb2RlKTsKLSAgICBwcm9ncmFtQmluYXJ5LT5zZXRVbmlm
b3JtMWl2KHBvaW50c09yTGluZXMsIDEsICZhbHdheXNGcm9udCk7Ci0KLSAgICBEM0RBREFQVEVS
X0lERU5USUZJRVI5ICppZGVudGlmaWVyID0gbURpc3BsYXktPmdldEFkYXB0ZXJJZGVudGlmaWVy
KCk7Ci0gICAgYm9vbCB6ZXJvQ29sb3JNYXNrQWxsb3dlZCA9IGlkZW50aWZpZXItPlZlbmRvcklk
ICE9IDB4MTAwMjsKLSAgICAvLyBBcHBhcmVudGx5IHNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcg
d2hlcmUgYSBkcmF3IHdpdGggYSB6ZXJvIGNvbG9yCi0gICAgLy8gd3JpdGUgbWFzayBjYW4gY2F1
c2UgbGF0ZXIgZHJhd3MgdG8gaGF2ZSBpbmNvcnJlY3QgcmVzdWx0cy4gSW5zdGVhZCwKLSAgICAv
LyBzZXQgYSBub256ZXJvIGNvbG9yIHdyaXRlIG1hc2sgYnV0IG1vZGlmeSB0aGUgYmxlbmQgc3Rh
dGUgc28gdGhhdCBubwotICAgIC8vIGRyYXdpbmcgaXMgZG9uZS4KLSAgICAvLyBodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9MTY5Ci0KLSAgICBp
ZiAobUN1bGxTdGF0ZURpcnR5IHx8IG1Gcm9udEZhY2VEaXJ0eSkKLSAgICB7Ci0gICAgICAgIGlm
IChtU3RhdGUuY3VsbEZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBlczJkeDo6Q29udmVydEN1bGxNb2RlKG1TdGF0ZS5j
dWxsTW9kZSwgbVN0YXRlLmZyb250RmFjZSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ1VMTE1P
REUsIEQzRENVTExfTk9ORSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtQ3VsbFN0YXRlRGlydHkg
PSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobURlcHRoU3RhdGVEaXJ0eSkKLSAgICB7Ci0gICAg
ICAgIGlmIChtU3RhdGUuZGVwdGhUZXN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBEM0RaQl9UUlVFKTsKLSAgICAgICAgICAg
IG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pGVU5DLCBlczJkeDo6Q29udmVydENvbXBh
cmlzb24obVN0YXRlLmRlcHRoRnVuYykpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwg
RDNEWkJfRkFMU0UpOwotICAgICAgICB9Ci0KLSAgICAgICAgbURlcHRoU3RhdGVEaXJ0eSA9IGZh
bHNlOwotICAgIH0KLQotICAgIGlmICghemVyb0NvbG9yTWFza0FsbG93ZWQgJiYgKG1NYXNrU3Rh
dGVEaXJ0eSB8fCBtQmxlbmRTdGF0ZURpcnR5KSkKLSAgICB7Ci0gICAgICAgIG1CbGVuZFN0YXRl
RGlydHkgPSB0cnVlOwotICAgICAgICBtTWFza1N0YXRlRGlydHkgPSB0cnVlOwotICAgIH0KLQot
ICAgIGlmIChtQmxlbmRTdGF0ZURpcnR5KQotICAgIHsKLSAgICAgICAgaWYgKG1TdGF0ZS5ibGVu
ZCkKLSAgICAgICAgewotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
QUxQSEFCTEVOREVOQUJMRSwgVFJVRSk7Ci0KLSAgICAgICAgICAgIGlmIChtU3RhdGUuc291cmNl
QmxlbmRSR0IgIT0gR0xfQ09OU1RBTlRfQUxQSEEgJiYgbVN0YXRlLnNvdXJjZUJsZW5kUkdCICE9
IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSAmJgotICAgICAgICAgICAgICAgIG1TdGF0ZS5k
ZXN0QmxlbmRSR0IgIT0gR0xfQ09OU1RBTlRfQUxQSEEgJiYgbVN0YXRlLmRlc3RCbGVuZFJHQiAh
PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRGQUNUT1IsIGVzMmR4OjpD
b252ZXJ0Q29sb3IobVN0YXRlLmJsZW5kQ29sb3IpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19CTEVOREZBQ1RPUiwgRDNEQ09MT1JfUkdCQSh1bm9ybTw4PihtU3RhdGUu
YmxlbmRDb2xvci5hbHBoYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bm9ybTw4PihtU3RhdGUuYmxlbmRD
b2xvci5hbHBoYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bm9ybTw4PihtU3RhdGUuYmxlbmRDb2xvci5h
bHBoYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bm9ybTw4PihtU3RhdGUuYmxlbmRDb2xvci5hbHBoYSkp
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfU1JDQkxFTkQsIGVzMmR4OjpDb252ZXJ0QmxlbmRGdW5jKG1TdGF0ZS5zb3VyY2VCbGVu
ZFJHQikpOwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJM
RU5ELCBlczJkeDo6Q29udmVydEJsZW5kRnVuYyhtU3RhdGUuZGVzdEJsZW5kUkdCKSk7Ci0gICAg
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVORE9QLCBlczJkeDo6Q29u
dmVydEJsZW5kT3AobVN0YXRlLmJsZW5kRXF1YXRpb25SR0IpKTsKLQotICAgICAgICAgICAgaWYg
KG1TdGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBtU3RhdGUuc291cmNlQmxlbmRBbHBoYSB8fCAKLSAg
ICAgICAgICAgICAgICBtU3RhdGUuZGVzdEJsZW5kUkdCICE9IG1TdGF0ZS5kZXN0QmxlbmRBbHBo
YSB8fCAKLSAgICAgICAgICAgICAgICBtU3RhdGUuYmxlbmRFcXVhdGlvblJHQiAhPSBtU3RhdGUu
YmxlbmRFcXVhdGlvbkFscGhhKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQSEFCTEVOREVOQUJMRSwgVFJVRSk7
Ci0KLSAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TUkNCTEVO
REFMUEhBLCBlczJkeDo6Q29udmVydEJsZW5kRnVuYyhtU3RhdGUuc291cmNlQmxlbmRBbHBoYSkp
OwotICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFU1RCTEVO
REFMUEhBLCBlczJkeDo6Q29udmVydEJsZW5kRnVuYyhtU3RhdGUuZGVzdEJsZW5kQWxwaGEpKTsK
LSAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVORE9QQUxQ
SEEsIGVzMmR4OjpDb252ZXJ0QmxlbmRPcChtU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJBVEVBTFBIQUJMRU5ERU5B
QkxFLCBGQUxTRSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJM
RU5ERU5BQkxFLCBGQUxTRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtQmxlbmRTdGF0ZURpcnR5
ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG1TdGVuY2lsU3RhdGVEaXJ0eSB8fCBtRnJvbnRG
YWNlRGlydHkpCi0gICAgewotICAgICAgICBpZiAobVN0YXRlLnN0ZW5jaWxUZXN0ICYmIGZyYW1l
YnVmZmVyT2JqZWN0LT5oYXNTdGVuY2lsKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIFRSVUUpOwotICAgICAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfVFdPU0lERURTVEVOQ0lMTU9ERSwgVFJV
RSk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBVbnN1cHBvcnRlZCBieSBEM0Q5Ci0gICAgICAg
ICAgICBjb25zdCBEM0RSRU5ERVJTVEFURVRZUEUgRDNEUlNfQ0NXX1NURU5DSUxSRUYgPSBEM0RS
U19TVEVOQ0lMUkVGOwotICAgICAgICAgICAgY29uc3QgRDNEUkVOREVSU1RBVEVUWVBFIEQzRFJT
X0NDV19TVEVOQ0lMTUFTSyA9IEQzRFJTX1NURU5DSUxNQVNLOwotICAgICAgICAgICAgY29uc3Qg
RDNEUkVOREVSU1RBVEVUWVBFIEQzRFJTX0NDV19TVEVOQ0lMV1JJVEVNQVNLID0gRDNEUlNfU1RF
TkNJTFdSSVRFTUFTSzsKLSAgICAgICAgICAgIGlmIChtU3RhdGUuc3RlbmNpbFdyaXRlbWFzayAh
PSBtU3RhdGUuc3RlbmNpbEJhY2tXcml0ZW1hc2sgfHwgCi0gICAgICAgICAgICAgICAgbVN0YXRl
LnN0ZW5jaWxSZWYgIT0gbVN0YXRlLnN0ZW5jaWxCYWNrUmVmIHx8IAotICAgICAgICAgICAgICAg
IG1TdGF0ZS5zdGVuY2lsTWFzayAhPSBtU3RhdGUuc3RlbmNpbEJhY2tNYXNrKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEVSUigiU2VwYXJhdGUgZnJvbnQvYmFjayBzdGVuY2lsIHdy
aXRlbWFza3MsIHJlZmVyZW5jZSB2YWx1ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMgYXJlIGlu
dmFsaWQgdW5kZXIgV2ViR0wuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gZ2V0IHRo
ZSBtYXhpbXVtIHNpemUgb2YgdGhlIHN0ZW5jaWwgcmVmCi0gICAgICAgICAgICBnbDo6UmVuZGVy
YnVmZmVyICpzdGVuY2lsYnVmZmVyID0gZnJhbWVidWZmZXJPYmplY3QtPmdldFN0ZW5jaWxidWZm
ZXIoKTsKLSAgICAgICAgICAgIEdMdWludCBtYXhTdGVuY2lsID0gKDEgPDwgc3RlbmNpbGJ1ZmZl
ci0+Z2V0U3RlbmNpbFNpemUoKSkgLSAxOwotCi0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShtU3RhdGUuZnJvbnRGYWNlID09IEdMX0NDVyA/IEQzRFJTX1NURU5DSUxXUklURU1B
U0sgOiBEM0RSU19DQ1dfU1RFTkNJTFdSSVRFTUFTSywgbVN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sp
OwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUobVN0YXRlLmZyb250RmFjZSA9
PSBHTF9DQ1cgPyBEM0RSU19TVEVOQ0lMRlVOQyA6IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzMmR4OjpDb252ZXJ0Q29tcGFyaXNv
bihtU3RhdGUuc3RlbmNpbEZ1bmMpKTsKLQotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUobVN0YXRlLmZyb250RmFjZSA9PSBHTF9DQ1cgPyBEM0RSU19TVEVOQ0lMUkVGIDogRDNE
UlNfQ0NXX1NURU5DSUxSRUYsIChtU3RhdGUuc3RlbmNpbFJlZiA8IChHTGludCltYXhTdGVuY2ls
KSA/IG1TdGF0ZS5zdGVuY2lsUmVmIDogbWF4U3RlbmNpbCk7Ci0gICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShtU3RhdGUuZnJvbnRGYWNlID09IEdMX0NDVyA/IEQzRFJTX1NURU5D
SUxNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxNQVNLLCBtU3RhdGUuc3RlbmNpbE1hc2spOwotCi0g
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShtU3RhdGUuZnJvbnRGYWNlID09IEdM
X0NDVyA/IEQzRFJTX1NURU5DSUxGQUlMIDogRDNEUlNfQ0NXX1NURU5DSUxGQUlMLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMyZHg6OkNvbnZlcnRTdGVuY2lsT3AobVN0
YXRlLnN0ZW5jaWxGYWlsKSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSht
U3RhdGUuZnJvbnRGYWNlID09IEdMX0NDVyA/IEQzRFJTX1NURU5DSUxaRkFJTCA6IEQzRFJTX0ND
V19TVEVOQ0lMWkZBSUwsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlczJk
eDo6Q29udmVydFN0ZW5jaWxPcChtU3RhdGUuc3RlbmNpbFBhc3NEZXB0aEZhaWwpKTsKLSAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ0NX
ID8gRDNEUlNfU1RFTkNJTFBBU1MgOiBEM0RSU19DQ1dfU1RFTkNJTFBBU1MsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlczJkeDo6Q29udmVydFN0ZW5jaWxPcChtU3RhdGUu
c3RlbmNpbFBhc3NEZXB0aFBhc3MpKTsKLQotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUobVN0YXRlLmZyb250RmFjZSA9PSBHTF9DVyA/IEQzRFJTX1NURU5DSUxXUklURU1BU0sg
OiBEM0RSU19DQ1dfU1RFTkNJTFdSSVRFTUFTSywgbVN0YXRlLnN0ZW5jaWxCYWNrV3JpdGVtYXNr
KTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2Ug
PT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lMRlVOQyA6IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzMmR4OjpDb252ZXJ0Q29tcGFyaXNv
bihtU3RhdGUuc3RlbmNpbEJhY2tGdW5jKSk7Ci0KLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lMUkVGIDog
RDNEUlNfQ0NXX1NURU5DSUxSRUYsIChtU3RhdGUuc3RlbmNpbEJhY2tSZWYgPCAoR0xpbnQpbWF4
U3RlbmNpbCkgPyBtU3RhdGUuc3RlbmNpbEJhY2tSZWYgOiBtYXhTdGVuY2lsKTsKLSAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ1cgPyBE
M0RSU19TVEVOQ0lMTUFTSyA6IEQzRFJTX0NDV19TVEVOQ0lMTUFTSywgbVN0YXRlLnN0ZW5jaWxC
YWNrTWFzayk7Ci0KLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKG1TdGF0ZS5m
cm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lMRkFJTCA6IEQzRFJTX0NDV19TVEVOQ0lM
RkFJTCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzMmR4OjpDb252ZXJ0
U3RlbmNpbE9wKG1TdGF0ZS5zdGVuY2lsQmFja0ZhaWwpKTsKLSAgICAgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lM
WkZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTFpGQUlMLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXMyZHg6OkNvbnZlcnRTdGVuY2lsT3AobVN0YXRlLnN0ZW5jaWxCYWNrUGFz
c0RlcHRoRmFpbCkpOwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUobVN0YXRl
LmZyb250RmFjZSA9PSBHTF9DVyA/IEQzRFJTX1NURU5DSUxQQVNTIDogRDNEUlNfQ0NXX1NURU5D
SUxQQVNTLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMyZHg6OkNvbnZl
cnRTdGVuY2lsT3AobVN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcykpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgRkFMU0UpOwotICAgICAgICB9Ci0KLSAgICAgICAg
bVN0ZW5jaWxTdGF0ZURpcnR5ID0gZmFsc2U7Ci0gICAgICAgIG1Gcm9udEZhY2VEaXJ0eSA9IGZh
bHNlOwotICAgIH0KLQotICAgIGlmIChtTWFza1N0YXRlRGlydHkpCi0gICAgewotICAgICAgICBp
bnQgY29sb3JNYXNrID0gZXMyZHg6OkNvbnZlcnRDb2xvck1hc2sobVN0YXRlLmNvbG9yTWFza1Jl
ZCwgbVN0YXRlLmNvbG9yTWFza0dyZWVuLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5jb2xvck1hc2tCbHVlLCBtU3RhdGUuY29sb3JNYXNr
QWxwaGEpOwotICAgICAgICBpZiAoY29sb3JNYXNrID09IDAgJiYgIXplcm9Db2xvck1hc2tBbGxv
d2VkKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBFbmFibGUgZ3JlZW4gY2hhbm5lbCwgYnV0
IHNldCBibGVuZGluZyBzbyBub3RoaW5nIHdpbGwgYmUgZHJhd24uCi0gICAgICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxFLCBEM0RDT0xPUldSSVRF
RU5BQkxFX0dSRUVOKTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X0FMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOwotCi0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19TUkNCTEVORCwgRDNEQkxFTkRfWkVSTyk7Ci0gICAgICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ERVNUQkxFTkQsIEQzREJMRU5EX09ORSk7Ci0gICAg
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVORE9QLCBEM0RCTEVORE9Q
X0FERCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBt
RGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxFLCBjb2xvck1hc2sp
OwotICAgICAgICB9Ci0gICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pXUklU
RUVOQUJMRSwgbVN0YXRlLmRlcHRoTWFzayA/IFRSVUUgOiBGQUxTRSk7Ci0KLSAgICAgICAgbU1h
c2tTdGF0ZURpcnR5ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG1Qb2x5Z29uT2Zmc2V0U3Rh
dGVEaXJ0eSkKLSAgICB7Ci0gICAgICAgIGlmIChtU3RhdGUucG9seWdvbk9mZnNldEZpbGwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gZnJh
bWVidWZmZXJPYmplY3QtPmdldERlcHRoYnVmZmVyKCk7Ci0gICAgICAgICAgICBpZiAoZGVwdGhi
dWZmZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfU0xPUEVTQ0FMRURFUFRIQklBUywgKigoRFdPUkQqKSZtU3RhdGUucG9seWdv
bk9mZnNldEZhY3RvcikpOwotICAgICAgICAgICAgICAgIGZsb2F0IGRlcHRoQmlhcyA9IGxkZXhw
KG1TdGF0ZS5wb2x5Z29uT2Zmc2V0VW5pdHMsIC0oaW50KShkZXB0aGJ1ZmZlci0+Z2V0RGVwdGhT
aXplKCkpKTsKLSAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19E
RVBUSEJJQVMsICooKERXT1JEKikmZGVwdGhCaWFzKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19TTE9QRVNDQUxFREVQVEhCSUFTLCAwKTsKLSAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFUFRIQklBUywgMCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBtUG9seWdvbk9mZnNldFN0YXRlRGlydHkgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
bVNhbXBsZVN0YXRlRGlydHkpCi0gICAgewotICAgICAgICBpZiAobVN0YXRlLnNhbXBsZUFscGhh
VG9Db3ZlcmFnZSkKLSAgICAgICAgewotICAgICAgICAgICAgRklYTUUoIlNhbXBsZSBhbHBoYSB0
byBjb3ZlcmFnZSBpcyB1bmltcGxlbWVudGVkLiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVBTlRJQUxJQVMsIFRSVUUpOwot
ICAgICAgICBpZiAobVN0YXRlLnNhbXBsZUNvdmVyYWdlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbWFzayA9IDA7Ci0gICAgICAgICAgICBpZiAobVN0YXRlLnNhbXBsZUNv
dmVyYWdlVmFsdWUgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmbG9hdCB0
aHJlc2hvbGQgPSAwLjVmOwotCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBm
cmFtZWJ1ZmZlck9iamVjdC0+Z2V0U2FtcGxlcygpOyArK2kpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBtYXNrIDw8PSAxOwotCi0gICAgICAgICAgICAgICAgICAgIGlm
ICgoaSArIDEpICogbVN0YXRlLnNhbXBsZUNvdmVyYWdlVmFsdWUgPj0gdGhyZXNob2xkKQotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQgKz0g
MS4wZjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgfD0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBtYXNrID0gfm1hc2s7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFTSywgbWFz
ayk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRU1BU0ssIDB4RkZGRkZGRkYpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgbVNhbXBsZVN0YXRlRGlydHkgPSBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAobURpdGhlclN0YXRlRGlydHkpCi0gICAgewotICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19ESVRIRVJFTkFCTEUsIG1TdGF0ZS5kaXRoZXIgPyBUUlVFIDogRkFM
U0UpOwotCi0gICAgICAgIG1EaXRoZXJTdGF0ZURpcnR5ID0gZmFsc2U7Ci0gICAgfQotfQotCi1H
TGVudW0gQ29udGV4dDo6YXBwbHlWZXJ0ZXhCdWZmZXIoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLCBHTHNpemVpICpyZXBlYXREcmF3KQotewotICAgIFRyYW5z
bGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tNQVhfVkVSVEVYX0FUVFJJQlNdOwotCi0gICAgR0xl
bnVtIGVyciA9IG1WZXJ0ZXhEYXRhTWFuYWdlci0+cHJlcGFyZVZlcnRleERhdGEoZmlyc3QsIGNv
dW50LCBhdHRyaWJ1dGVzLCBpbnN0YW5jZXMpOwotICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1Ip
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyOwotICAgIH0KLQotICAgIFByb2dyYW1CaW5hcnkg
KnByb2dyYW1CaW5hcnkgPSBnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOwotICAgIHJldHVybiBt
VmVydGV4RGVjbGFyYXRpb25DYWNoZS5hcHBseURlY2xhcmF0aW9uKG1EZXZpY2UsIGF0dHJpYnV0
ZXMsIHByb2dyYW1CaW5hcnksIGluc3RhbmNlcywgcmVwZWF0RHJhdyk7Ci19Ci0KLS8vIEFwcGxp
ZXMgdGhlIGluZGljZXMgYW5kIGVsZW1lbnQgYXJyYXkgYmluZGluZ3MgdG8gdGhlIERpcmVjdDNE
IDkgZGV2aWNlCi1HTGVudW0gQ29udGV4dDo6YXBwbHlJbmRleEJ1ZmZlcihjb25zdCBHTHZvaWQg
KmluZGljZXMsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNs
YXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKQotewotICAgIEdMZW51bSBlcnIgPSBtSW5kZXhEYXRh
TWFuYWdlci0+cHJlcGFyZUluZGV4RGF0YSh0eXBlLCBjb3VudCwgbVN0YXRlLmVsZW1lbnRBcnJh
eUJ1ZmZlci5nZXQoKSwgaW5kaWNlcywgaW5kZXhJbmZvKTsKLQotICAgIGlmIChlcnIgPT0gR0xf
Tk9fRVJST1IpCi0gICAgewotICAgICAgICBpZiAoaW5kZXhJbmZvLT5zZXJpYWwgIT0gbUFwcGxp
ZWRJQlNlcmlhbCkKLSAgICAgICAgewotICAgICAgICAgICAgbURldmljZS0+U2V0SW5kaWNlcyhp
bmRleEluZm8tPmluZGV4QnVmZmVyKTsKLSAgICAgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBp
bmRleEluZm8tPnNlcmlhbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBlcnI7Ci19
Ci0KLS8vIEFwcGxpZXMgdGhlIHNoYWRlcnMgYW5kIHNoYWRlciBjb25zdGFudHMgdG8gdGhlIERp
cmVjdDNEIDkgZGV2aWNlCi12b2lkIENvbnRleHQ6OmFwcGx5U2hhZGVycygpCi17Ci0gICAgUHJv
Z3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7Ci0K
LSAgICBpZiAocHJvZ3JhbUJpbmFyeS0+Z2V0U2VyaWFsKCkgIT0gbUFwcGxpZWRQcm9ncmFtQmlu
YXJ5U2VyaWFsKQotICAgIHsKLSAgICAgICAgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqdmVydGV4
U2hhZGVyID0gcHJvZ3JhbUJpbmFyeS0+Z2V0VmVydGV4U2hhZGVyKCk7Ci0gICAgICAgIElEaXJl
Y3QzRFBpeGVsU2hhZGVyOSAqcGl4ZWxTaGFkZXIgPSBwcm9ncmFtQmluYXJ5LT5nZXRQaXhlbFNo
YWRlcigpOwotCi0gICAgICAgIG1EZXZpY2UtPlNldFBpeGVsU2hhZGVyKHBpeGVsU2hhZGVyKTsK
LSAgICAgICAgbURldmljZS0+U2V0VmVydGV4U2hhZGVyKHZlcnRleFNoYWRlcik7Ci0gICAgICAg
IHByb2dyYW1CaW5hcnktPmRpcnR5QWxsVW5pZm9ybXMoKTsKLSAgICAgICAgbUFwcGxpZWRQcm9n
cmFtQmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeS0+Z2V0U2VyaWFsKCk7Ci0gICAgfQotCi0g
ICAgcHJvZ3JhbUJpbmFyeS0+YXBwbHlVbmlmb3JtcygpOwotfQotCi0vLyBBcHBsaWVzIHRoZSB0
ZXh0dXJlcyBhbmQgc2FtcGxlciBzdGF0ZXMgdG8gdGhlIERpcmVjdDNEIDkgZGV2aWNlCi12b2lk
IENvbnRleHQ6OmFwcGx5VGV4dHVyZXMoKQotewotICAgIGFwcGx5VGV4dHVyZXMoU0FNUExFUl9Q
SVhFTCk7Ci0KLSAgICBpZiAobVN1cHBvcnRzVmVydGV4VGV4dHVyZSkKLSAgICB7Ci0gICAgICAg
IGFwcGx5VGV4dHVyZXMoU0FNUExFUl9WRVJURVgpOwotICAgIH0KLX0KLQotLy8gRm9yIGVhY2gg
RGlyZWN0M0QgOSBzYW1wbGVyIG9mIGVpdGhlciB0aGUgcGl4ZWwgb3IgdmVydGV4IHN0YWdlLAot
Ly8gbG9va3MgdXAgdGhlIGNvcnJlc3BvbmRpbmcgT3BlbkdMIHRleHR1cmUgaW1hZ2UgdW5pdCBh
bmQgdGV4dHVyZSB0eXBlLAotLy8gYW5kIHNldHMgdGhlIHRleHR1cmUgYW5kIGl0cyBhZGRyZXNz
aW5nL2ZpbHRlcmluZyBzdGF0ZSAob3IgTlVMTCB3aGVuIGluYWN0aXZlKS4KLXZvaWQgQ29udGV4
dDo6YXBwbHlUZXh0dXJlcyhTYW1wbGVyVHlwZSB0eXBlKQotewotICAgIFByb2dyYW1CaW5hcnkg
KnByb2dyYW1CaW5hcnkgPSBnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOwotCi0gICAgaW50IHNh
bXBsZXJDb3VudCA9ICh0eXBlID09IFNBTVBMRVJfUElYRUwpID8gTUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMgOiBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGOyAgIC8vIFJhbmdlIG9m
IERpcmVjdDNEIDkgc2FtcGxlcnMgb2YgZ2l2ZW4gc2FtcGxlciB0eXBlCi0gICAgdW5zaWduZWQg
aW50ICphcHBsaWVkVGV4dHVyZVNlcmlhbCA9ICh0eXBlID09IFNBTVBMRVJfUElYRUwpID8gbUFw
cGxpZWRUZXh0dXJlU2VyaWFsUFMgOiBtQXBwbGllZFRleHR1cmVTZXJpYWxWUzsKLSAgICBpbnQg
ZDNkU2FtcGxlck9mZnNldCA9ICh0eXBlID09IFNBTVBMRVJfUElYRUwpID8gMCA6IEQzRFZFUlRF
WFRFWFRVUkVTQU1QTEVSMDsKLSAgICBpbnQgc2FtcGxlclJhbmdlID0gcHJvZ3JhbUJpbmFyeS0+
Z2V0VXNlZFNhbXBsZXJSYW5nZSh0eXBlKTsKLQotICAgIGZvciAoaW50IHNhbXBsZXJJbmRleCA9
IDA7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJSYW5nZTsgc2FtcGxlckluZGV4KyspCi0gICAgewot
ICAgICAgICBpbnQgdGV4dHVyZVVuaXQgPSBwcm9ncmFtQmluYXJ5LT5nZXRTYW1wbGVyTWFwcGlu
Zyh0eXBlLCBzYW1wbGVySW5kZXgpOyAgIC8vIE9wZW5HTCB0ZXh0dXJlIGltYWdlIHVuaXQgaW5k
ZXgKLSAgICAgICAgaW50IGQzZFNhbXBsZXIgPSBzYW1wbGVySW5kZXggKyBkM2RTYW1wbGVyT2Zm
c2V0OwotCi0gICAgICAgIGlmICh0ZXh0dXJlVW5pdCAhPSAtMSkKLSAgICAgICAgewotICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUgPSBwcm9ncmFtQmluYXJ5LT5nZXRTYW1wbGVy
VGV4dHVyZVR5cGUodHlwZSwgc2FtcGxlckluZGV4KTsKLQotICAgICAgICAgICAgVGV4dHVyZSAq
dGV4dHVyZSA9IGdldFNhbXBsZXJUZXh0dXJlKHRleHR1cmVVbml0LCB0ZXh0dXJlVHlwZSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghdGV4dHVyZS0+aXNTYW1wbGVyQ29tcGxldGUo
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXh0dXJlID0gZ2V0SW5jb21wbGV0
ZVRleHR1cmUodGV4dHVyZVR5cGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB1bnNp
Z25lZCBpbnQgdGV4U2VyaWFsID0gdGV4dHVyZS0+Z2V0VGV4dHVyZVNlcmlhbCgpOwotCi0gICAg
ICAgICAgICBpZiAoYXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSAhPSB0ZXhTZXJp
YWwgfHwgdGV4dHVyZS0+aGFzRGlydHlQYXJhbWV0ZXJzKCkgfHwgdGV4dHVyZS0+aGFzRGlydHlJ
bWFnZXMoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJRGlyZWN0M0RCYXNlVGV4
dHVyZTkgKmQzZFRleHR1cmUgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlKCk7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoYXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSAhPSB0ZXhTZXJpYWwg
fHwgdGV4dHVyZS0+aGFzRGlydHlQYXJhbWV0ZXJzKCkpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gd3JhcFMgPSB0ZXh0dXJlLT5nZXRXcmFwUygpOwotICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gd3JhcFQgPSB0ZXh0dXJlLT5nZXRXcmFwVCgpOwotICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbWluRmlsdGVyID0gdGV4dHVyZS0+Z2V0TWluRmlsdGVy
KCk7Ci0gICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYWdGaWx0ZXIgPSB0ZXh0dXJlLT5nZXRN
YWdGaWx0ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4QW5pc290cm9weSA9IHRl
eHR1cmUtPmdldE1heEFuaXNvdHJvcHkoKTsKLQotICAgICAgICAgICAgICAgICAgICBtRGV2aWNl
LT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNTVSwgZXMyZHg6OkNv
bnZlcnRUZXh0dXJlV3JhcCh3cmFwUykpOwotICAgICAgICAgICAgICAgICAgICBtRGV2aWNlLT5T
ZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNTViwgZXMyZHg6OkNvbnZl
cnRUZXh0dXJlV3JhcCh3cmFwVCkpOwotCi0gICAgICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BR0ZJTFRFUiwgZXMyZHg6OkNvbnZl
cnRNYWdGaWx0ZXIobWFnRmlsdGVyLCBtYXhBbmlzb3Ryb3B5KSk7Ci0gICAgICAgICAgICAgICAg
ICAgIEQzRFRFWFRVUkVGSUxURVJUWVBFIGQzZE1pbkZpbHRlciwgZDNkTWlwRmlsdGVyOwotICAg
ICAgICAgICAgICAgICAgICBlczJkeDo6Q29udmVydE1pbkZpbHRlcihtaW5GaWx0ZXIsICZkM2RN
aW5GaWx0ZXIsICZkM2RNaXBGaWx0ZXIsIG1heEFuaXNvdHJvcHkpOwotICAgICAgICAgICAgICAg
ICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9NSU5GSUxU
RVIsIGQzZE1pbkZpbHRlcik7Ci0gICAgICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFNhbXBs
ZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01JUEZJTFRFUiwgZDNkTWlwRmlsdGVyKTsKLSAg
ICAgICAgICAgICAgICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQz
RFNBTVBfTUFYTUlQTEVWRUwsIHRleHR1cmUtPmdldExvZE9mZnNldCgpKTsKLQotICAgICAgICAg
ICAgICAgICAgICBpZiAoc3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgpKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRTYW1w
bGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9NQVhBTklTT1RST1BZLCAoRFdPUkQpbWF4QW5p
c290cm9weSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoYXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSAhPSB0
ZXhTZXJpYWwgfHwgdGV4dHVyZS0+aGFzRGlydHlJbWFnZXMoKSkKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmUoZDNkU2FtcGxlciwgZDNk
VGV4dHVyZSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYXBwbGllZFRl
eHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSA9IHRleFNlcmlhbDsKLSAgICAgICAgICAgICAgICB0
ZXh0dXJlLT5yZXNldERpcnR5KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoYXBwbGllZFRleHR1cmVTZXJpYWxbc2Ft
cGxlckluZGV4XSAhPSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EZXZpY2Ut
PlNldFRleHR1cmUoZDNkU2FtcGxlciwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgYXBwbGllZFRl
eHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBmb3IgKGludCBzYW1wbGVySW5kZXggPSBzYW1wbGVyUmFuZ2U7IHNhbXBs
ZXJJbmRleCA8IHNhbXBsZXJDb3VudDsgc2FtcGxlckluZGV4KyspCi0gICAgewotICAgICAgICBp
ZiAoYXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSAhPSAwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlKHNhbXBsZXJJbmRleCArIGQzZFNhbXBsZXJP
ZmZzZXQsIE5VTEwpOwotICAgICAgICAgICAgYXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlcklu
ZGV4XSA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6cmVhZFBpeGVs
cyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSAq
YnVmU2l6ZSwgdm9pZCogcGl4ZWxzKQotewotICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9
IGdldFJlYWRGcmFtZWJ1ZmZlcigpOwotCi0gICAgaWYgKGZyYW1lYnVmZmVyLT5jb21wbGV0ZW5l
c3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7Ci0gICAgfQotCi0gICAgaWYg
KGdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgpICE9IDAgJiYgZnJhbWVidWZmZXItPmdldFNhbXBs
ZXMoKSAhPSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLSAgICB9Ci0KLSAgICBHTHNpemVpIG91dHB1dFBpdGNoID0gQ29tcHV0ZVBpdGNoKHdp
ZHRoLCBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpLCBtU3RhdGUucGFj
a0FsaWdubWVudCk7Ci0gICAgLy8gc2l6ZWQgcXVlcnkgc2FuaXR5IGNoZWNrCi0gICAgaWYgKGJ1
ZlNpemUpCi0gICAgewotICAgICAgICBpbnQgcmVxdWlyZWRTaXplID0gb3V0cHV0UGl0Y2ggKiBo
ZWlnaHQ7Ci0gICAgICAgIGlmIChyZXF1aXJlZFNpemUgPiAqYnVmU2l6ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5kZXJUYXJnZXQgPSBmcmFtZWJ1
ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCk7Ci0gICAgaWYgKCFyZW5kZXJUYXJnZXQpCi0gICAgewot
ICAgICAgICByZXR1cm47ICAgLy8gQ29udGV4dCBtdXN0IGJlIGxvc3QsIHJldHVybiBzaWxlbnRs
eQotICAgIH0KLQotICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOwotICAgIHJlbmRlclRhcmdldC0+
R2V0RGVzYygmZGVzYyk7Ci0KLSAgICBpZiAoZGVzYy5NdWx0aVNhbXBsZVR5cGUgIT0gRDNETVVM
VElTQU1QTEVfTk9ORSkKLSAgICB7Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhN
RTogUmVxdWlyZXMgcmVzb2x2ZSB1c2luZyBTdHJldGNoUmVjdCBpbnRvIG5vbi1tdWx0aXNhbXBs
ZWQgcmVuZGVyIHRhcmdldAotICAgICAgICByZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLQotICAgIEhSRVNVTFQg
cmVzdWx0OwotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzeXN0ZW1TdXJmYWNlID0gTlVMTDsKLSAg
ICBib29sIGRpcmVjdFRvUGl4ZWxzID0gIWdldFBhY2tSZXZlcnNlUm93T3JkZXIoKSAmJiBnZXRQ
YWNrQWxpZ25tZW50KCkgPD0gNCAmJiBtRGlzcGxheS0+aXNEM2Q5RXhEZXZpY2UoKSAmJgotICAg
ICAgICAgICAgICAgICAgICAgICAgICB4ID09IDAgJiYgeSA9PSAwICYmIFVJTlQod2lkdGgpID09
IGRlc2MuV2lkdGggJiYgVUlOVChoZWlnaHQpID09IGRlc2MuSGVpZ2h0ICYmCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc2MuRm9ybWF0ID09IEQzREZNVF9BOFI4RzhCOCAmJiBmb3JtYXQg
PT0gR0xfQkdSQV9FWFQgJiYgdHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFOwotICAgIGlmIChkaXJl
Y3RUb1BpeGVscykKLSAgICB7Ci0gICAgICAgIC8vIFVzZSB0aGUgcGl4ZWxzIHB0ciBhcyBhIHNo
YXJlZCBoYW5kbGUgdG8gd3JpdGUgZGlyZWN0bHkgaW50byBjbGllbnQncyBtZW1vcnkKLSAgICAg
ICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lk
dGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFBPT0xfU1lTVEVNTUVNLCAmc3lzdGVtU3Vy
ZmFjZSwgJnBpeGVscyk7Ci0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgewot
ICAgICAgICAgICAgLy8gVHJ5IGFnYWluIHdpdGhvdXQgdGhlIHNoYXJlZCBoYW5kbGUKLSAgICAg
ICAgICAgIGRpcmVjdFRvUGl4ZWxzID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoIWRpcmVjdFRvUGl4ZWxzKQotICAgIHsKLSAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3Jl
YXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEQzRFBPT0xfU1lTVEVNTUVNLCAmc3lzdGVtU3VyZmFjZSwgTlVMTCk7Ci0gICAgICAgIGlm
IChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9
PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0g
ICAgICAgICAgICByZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJlc3VsdCA9
IG1EZXZpY2UtPkdldFJlbmRlclRhcmdldERhdGEocmVuZGVyVGFyZ2V0LCBzeXN0ZW1TdXJmYWNl
KTsKLSAgICByZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKLSAgICByZW5kZXJUYXJnZXQgPSBOVUxM
OwotCi0gICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgIHsKLSAgICAgICAgc3lzdGVtU3VyZmFj
ZS0+UmVsZWFzZSgpOwotCi0gICAgICAgIC8vIEl0IHR1cm5zIG91dCB0aGF0IEQzRCB3aWxsIHNv
bWV0aW1lcyBwcm9kdWNlIG1vcmUgZXJyb3IKLSAgICAgICAgLy8gY29kZXMgdGhhbiB0aG9zZSBk
b2N1bWVudGVkLgotICAgICAgICBpZiAoY2hlY2tEZXZpY2VMb3N0KHJlc3VsdCkpCi0gICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgfQotCi0gICAgaWYgKGRpcmVjdFRvUGl4ZWxzKQotICAgIHsKLSAgICAg
ICAgc3lzdGVtU3VyZmFjZS0+UmVsZWFzZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgUkVDVCByZWN0OwotICAgIHJlY3QubGVmdCA9IGNsYW1wKHgsIDBMLCBzdGF0aWNfY2FzdDxM
T05HPihkZXNjLldpZHRoKSk7Ci0gICAgcmVjdC50b3AgPSBjbGFtcCh5LCAwTCwgc3RhdGljX2Nh
c3Q8TE9ORz4oZGVzYy5IZWlnaHQpKTsKLSAgICByZWN0LnJpZ2h0ID0gY2xhbXAoeCArIHdpZHRo
LCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5XaWR0aCkpOwotICAgIHJlY3QuYm90dG9tID0g
Y2xhbXAoeSArIGhlaWdodCwgMEwsIHN0YXRpY19jYXN0PExPTkc+KGRlc2MuSGVpZ2h0KSk7Ci0K
LSAgICBEM0RMT0NLRURfUkVDVCBsb2NrOwotICAgIHJlc3VsdCA9IHN5c3RlbVN1cmZhY2UtPkxv
Y2tSZWN0KCZsb2NrLCAmcmVjdCwgRDNETE9DS19SRUFET05MWSk7Ci0KLSAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCi0gICAgewotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICBzeXN0ZW1T
dXJmYWNlLT5SZWxlYXNlKCk7Ci0KLSAgICAgICAgcmV0dXJuOyAgIC8vIE5vIHNlbnNpYmxlIGVy
cm9yIHRvIGdlbmVyYXRlCi0gICAgfQotCi0gICAgdW5zaWduZWQgY2hhciAqZGVzdCA9ICh1bnNp
Z25lZCBjaGFyKilwaXhlbHM7Ci0gICAgdW5zaWduZWQgc2hvcnQgKmRlc3QxNiA9ICh1bnNpZ25l
ZCBzaG9ydCopcGl4ZWxzOwotCi0gICAgdW5zaWduZWQgY2hhciAqc291cmNlOwotICAgIGludCBp
bnB1dFBpdGNoOwotICAgIGlmIChnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKCkpCi0gICAgewotICAg
ICAgICBzb3VyY2UgPSAoKHVuc2lnbmVkIGNoYXIqKWxvY2sucEJpdHMpICsgbG9jay5QaXRjaCAq
IChyZWN0LmJvdHRvbSAtIHJlY3QudG9wIC0gMSk7Ci0gICAgICAgIGlucHV0UGl0Y2ggPSAtbG9j
ay5QaXRjaDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc291cmNlID0gKHVuc2ln
bmVkIGNoYXIqKWxvY2sucEJpdHM7Ci0gICAgICAgIGlucHV0UGl0Y2ggPSBsb2NrLlBpdGNoOwot
ICAgIH0KLQotICAgIHVuc2lnbmVkIGludCBmYXN0UGl4ZWxTaXplID0gMDsKLQotICAgIGlmIChk
ZXNjLkZvcm1hdCA9PSBEM0RGTVRfQThSOEc4QjggJiYKLSAgICAgICAgZm9ybWF0ID09IEdMX0JH
UkFfRVhUICYmCi0gICAgICAgIHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKLSAgICB7Ci0gICAg
ICAgIGZhc3RQaXhlbFNpemUgPSA0OwotICAgIH0KLSAgICBlbHNlIGlmICgoZGVzYy5Gb3JtYXQg
PT0gRDNERk1UX0E0UjRHNEI0ICYmCi0gICAgICAgICAgICAgZm9ybWF0ID09IEdMX0JHUkFfRVhU
ICYmCi0gICAgICAgICAgICAgdHlwZSA9PSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9F
WFQpIHx8Ci0gICAgICAgICAgICAgKGRlc2MuRm9ybWF0ID09IEQzREZNVF9BMVI1RzVCNSAmJgot
ICAgICAgICAgICAgIGZvcm1hdCA9PSBHTF9CR1JBX0VYVCAmJgotICAgICAgICAgICAgIHR5cGUg
PT0gR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUKSkKLSAgICB7Ci0gICAgICAgIGZh
c3RQaXhlbFNpemUgPSAyOwotICAgIH0KLSAgICBlbHNlIGlmIChkZXNjLkZvcm1hdCA9PSBEM0RG
TVRfQTE2QjE2RzE2UjE2RiAmJgotICAgICAgICAgICAgIGZvcm1hdCA9PSBHTF9SR0JBICYmCi0g
ICAgICAgICAgICAgdHlwZSA9PSBHTF9IQUxGX0ZMT0FUX09FUykKLSAgICB7Ci0gICAgICAgIGZh
c3RQaXhlbFNpemUgPSA4OwotICAgIH0KLSAgICBlbHNlIGlmIChkZXNjLkZvcm1hdCA9PSBEM0RG
TVRfQTMyQjMyRzMyUjMyRiAmJgotICAgICAgICAgICAgIGZvcm1hdCA9PSBHTF9SR0JBICYmCi0g
ICAgICAgICAgICAgdHlwZSA9PSBHTF9GTE9BVCkKLSAgICB7Ci0gICAgICAgIGZhc3RQaXhlbFNp
emUgPSAxNjsKLSAgICB9Ci0KLSAgICBmb3IgKGludCBqID0gMDsgaiA8IHJlY3QuYm90dG9tIC0g
cmVjdC50b3A7IGorKykKLSAgICB7Ci0gICAgICAgIGlmIChmYXN0UGl4ZWxTaXplICE9IDApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgZm9ybWF0cyB3aGljaCByZXF1
aXJlIG5vIHRyYW5zbGF0aW9uOgotICAgICAgICAgICAgLy8gRDNERk1UX0E4UjhHOEI4IHRvIEJH
UkEvVU5TSUdORURfQllURQotICAgICAgICAgICAgLy8gRDNERk1UX0E0UjRHNEI0IHRvIEJHUkEv
VU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUCi0gICAgICAgICAgICAvLyBEM0RGTVRfQTFS
NUc1QjUgdG8gQkdSQS9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQKLSAgICAgICAgICAg
IC8vIEQzREZNVF9BMTZCMTZHMTZSMTZGIHRvIFJHQkEvSEFMRl9GTE9BVF9PRVMKLSAgICAgICAg
ICAgIC8vIEQzREZNVF9BMzJCMzJHMzJSMzJGIHRvIFJHQkEvRkxPQVQKLSAgICAgICAgICAgIC8v
IAotICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGJ1ZmZlcnMgd2l0aCBubyBhbHBoYSBnbyB0aHJv
dWdoIHRoZSBzbG93IHBhdGggYmVsb3cuCi0gICAgICAgICAgICBtZW1jcHkoZGVzdCArIGogKiBv
dXRwdXRQaXRjaCwKLSAgICAgICAgICAgICAgICAgICBzb3VyY2UgKyBqICogaW5wdXRQaXRjaCwK
LSAgICAgICAgICAgICAgICAgICAocmVjdC5yaWdodCAtIHJlY3QubGVmdCkgKiBmYXN0UGl4ZWxT
aXplKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGRlc2MuRm9ybWF0ID09IEQzREZNVF9BOFI4RzhCOCAmJgotICAgICAgICAgICAgICAgICBmb3Jt
YXQgPT0gR0xfUkdCQSAmJgotICAgICAgICAgICAgICAgICB0eXBlID09IEdMX1VOU0lHTkVEX0JZ
VEUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3Igc3dhcHBpbmcgcmVk
IHdpdGggYmx1ZQotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWN0LnJpZ2h0IC0g
cmVjdC5sZWZ0OyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGFyZ2IgPSAqKHVuc2lnbmVkIGludCopKHNvdXJjZSArIDQgKiBpICsgaiAqIGlucHV0UGl0
Y2gpOwotICAgICAgICAgICAgICAgICoodW5zaWduZWQgaW50KikoZGVzdCArIDQgKiBpICsgaiAq
IG91dHB1dFBpdGNoKSA9Ci0gICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHhGRjAwRkYwMCkg
fCAgICAgICAvLyBLZWVwIGFscGhhIGFuZCBncmVlbgotICAgICAgICAgICAgICAgICAgICAoYXJn
YiAmIDB4MDBGRjAwMDApID4+IDE2IHwgLy8gTW92ZSByZWQgdG8gYmx1ZQotICAgICAgICAgICAg
ICAgICAgICAoYXJnYiAmIDB4MDAwMDAwRkYpIDw8IDE2OyAgLy8gTW92ZSBibHVlIHRvIHJlZAot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QucmlnaHQgLSByZWN0LmxlZnQ7IGkrKykKLSAgICAg
ICAgewotICAgICAgICAgICAgZmxvYXQgcjsKLSAgICAgICAgICAgIGZsb2F0IGc7Ci0gICAgICAg
ICAgICBmbG9hdCBiOwotICAgICAgICAgICAgZmxvYXQgYTsKLQotICAgICAgICAgICAgc3dpdGNo
IChkZXNjLkZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBEM0RGTVRf
UjVHNkI1OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
c2hvcnQgcmdiID0gKih1bnNpZ25lZCBzaG9ydCopKHNvdXJjZSArIDIgKiBpICsgaiAqIGlucHV0
UGl0Y2gpOwotCi0gICAgICAgICAgICAgICAgICAgIGEgPSAxLjBmOwotICAgICAgICAgICAgICAg
ICAgICBiID0gKHJnYiAmIDB4MDAxRikgKiAoMS4wZiAvIDB4MDAxRik7Ci0gICAgICAgICAgICAg
ICAgICAgIGcgPSAocmdiICYgMHgwN0UwKSAqICgxLjBmIC8gMHgwN0UwKTsKLSAgICAgICAgICAg
ICAgICAgICAgciA9IChyZ2IgJiAweEY4MDApICogKDEuMGYgLyAweEY4MDApOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBEM0RG
TVRfQTFSNUc1QjU6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBzaG9ydCBhcmdiID0gKih1bnNpZ25lZCBzaG9ydCopKHNvdXJjZSArIDIgKiBpICsgaiAq
IGlucHV0UGl0Y2gpOwotCi0gICAgICAgICAgICAgICAgICAgIGEgPSAoYXJnYiAmIDB4ODAwMCkg
PyAxLjBmIDogMC4wZjsKLSAgICAgICAgICAgICAgICAgICAgYiA9IChhcmdiICYgMHgwMDFGKSAq
ICgxLjBmIC8gMHgwMDFGKTsKLSAgICAgICAgICAgICAgICAgICAgZyA9IChhcmdiICYgMHgwM0Uw
KSAqICgxLjBmIC8gMHgwM0UwKTsKLSAgICAgICAgICAgICAgICAgICAgciA9IChhcmdiICYgMHg3
QzAwKSAqICgxLjBmIC8gMHg3QzAwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4OgotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFyZ2IgPSAqKHVuc2ln
bmVkIGludCopKHNvdXJjZSArIDQgKiBpICsgaiAqIGlucHV0UGl0Y2gpOwotCi0gICAgICAgICAg
ICAgICAgICAgIGEgPSAoYXJnYiAmIDB4RkYwMDAwMDApICogKDEuMGYgLyAweEZGMDAwMDAwKTsK
LSAgICAgICAgICAgICAgICAgICAgYiA9IChhcmdiICYgMHgwMDAwMDBGRikgKiAoMS4wZiAvIDB4
MDAwMDAwRkYpOwotICAgICAgICAgICAgICAgICAgICBnID0gKGFyZ2IgJiAweDAwMDBGRjAwKSAq
ICgxLjBmIC8gMHgwMDAwRkYwMCk7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSAoYXJnYiAmIDB4
MDBGRjAwMDApICogKDEuMGYgLyAweDAwRkYwMDAwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4Ogot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHhyZ2Ig
PSAqKHVuc2lnbmVkIGludCopKHNvdXJjZSArIDQgKiBpICsgaiAqIGlucHV0UGl0Y2gpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGEgPSAxLjBmOwotICAgICAgICAgICAgICAgICAgICBiID0gKHhy
Z2IgJiAweDAwMDAwMEZGKSAqICgxLjBmIC8gMHgwMDAwMDBGRik7Ci0gICAgICAgICAgICAgICAg
ICAgIGcgPSAoeHJnYiAmIDB4MDAwMEZGMDApICogKDEuMGYgLyAweDAwMDBGRjAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgciA9ICh4cmdiICYgMHgwMEZGMDAwMCkgKiAoMS4wZiAvIDB4MDBGRjAw
MDApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgY2FzZSBEM0RGTVRfQTJSMTBHMTBCMTA6Ci0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5zaWduZWQgaW50Kikoc291cmNl
ICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYSA9IChh
cmdiICYgMHhDMDAwMDAwMCkgKiAoMS4wZiAvIDB4QzAwMDAwMDApOwotICAgICAgICAgICAgICAg
ICAgICBiID0gKGFyZ2IgJiAweDAwMDAwM0ZGKSAqICgxLjBmIC8gMHgwMDAwMDNGRik7Ci0gICAg
ICAgICAgICAgICAgICAgIGcgPSAoYXJnYiAmIDB4MDAwRkZDMDApICogKDEuMGYgLyAweDAwMEZG
QzAwKTsKLSAgICAgICAgICAgICAgICAgICAgciA9IChhcmdiICYgMHgzRkYwMDAwMCkgKiAoMS4w
ZiAvIDB4M0ZGMDAwMDApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGZsb2F0IGZvcm1hdHMgaW4gRDNEIGFyZSBz
dG9yZWQgcmdiYSwgcmF0aGVyIHRoYW4gdGhlIG90aGVyIHdheSByb3VuZAotICAgICAgICAgICAg
ICAgICAgICByID0gKigoZmxvYXQqKShzb3VyY2UgKyAxNiAqIGkgKyBqICogaW5wdXRQaXRjaCkg
KyAwKTsKLSAgICAgICAgICAgICAgICAgICAgZyA9ICooKGZsb2F0Kikoc291cmNlICsgMTYgKiBp
ICsgaiAqIGlucHV0UGl0Y2gpICsgMSk7Ci0gICAgICAgICAgICAgICAgICAgIGIgPSAqKChmbG9h
dCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDIpOwotICAgICAgICAgICAg
ICAgICAgICBhID0gKigoZmxvYXQqKShzb3VyY2UgKyAxNiAqIGkgKyBqICogaW5wdXRQaXRjaCkg
KyAzKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAvLyBmbG9hdCBmb3JtYXRzIGluIEQzRCBhcmUgc3RvcmVkIHJnYmEs
IHJhdGhlciB0aGFuIHRoZSBvdGhlciB3YXkgcm91bmQKLSAgICAgICAgICAgICAgICAgICAgciA9
IGZsb2F0MTZUb0Zsb2F0MzIoKigodW5zaWduZWQgc2hvcnQqKShzb3VyY2UgKyA4ICogaSArIGog
KiBpbnB1dFBpdGNoKSArIDApKTsKLSAgICAgICAgICAgICAgICAgICAgZyA9IGZsb2F0MTZUb0Zs
b2F0MzIoKigodW5zaWduZWQgc2hvcnQqKShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBpdGNo
KSArIDEpKTsKLSAgICAgICAgICAgICAgICAgICAgYiA9IGZsb2F0MTZUb0Zsb2F0MzIoKigodW5z
aWduZWQgc2hvcnQqKShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDIpKTsKLSAg
ICAgICAgICAgICAgICAgICAgYSA9IGZsb2F0MTZUb0Zsb2F0MzIoKigodW5zaWduZWQgc2hvcnQq
KShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDMpKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCi0gICAgICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICBjYXNlIEdMX1JHQkE6Ci0gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAg
ICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDBdID0gKHVuc2ln
bmVkIGNoYXIpKDI1NSAqIHIgKyAwLjVmKTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICog
aSArIGogKiBvdXRwdXRQaXRjaCArIDFdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGcgKyAwLjVm
KTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDJd
ID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGIgKyAwLjVmKTsKLSAgICAgICAgICAgICAgICAgICAg
ZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDNdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAq
IGEgKyAwLjVmKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKLSAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsg
aiAqIG91dHB1dFBpdGNoICsgMF0gPSAodW5zaWduZWQgY2hhcikoMjU1ICogYiArIDAuNWYpOwot
ICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAqIG91dHB1dFBpdGNoICsgMV0gPSAo
dW5zaWduZWQgY2hhcikoMjU1ICogZyArIDAuNWYpOwotICAgICAgICAgICAgICAgICAgICBkZXN0
WzQgKiBpICsgaiAqIG91dHB1dFBpdGNoICsgMl0gPSAodW5zaWduZWQgY2hhcikoMjU1ICogciAr
IDAuNWYpOwotICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAqIG91dHB1dFBpdGNo
ICsgM10gPSAodW5zaWduZWQgY2hhcikoMjU1ICogYSArIDAuNWYpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80
XzRfNF9SRVZfRVhUOgotICAgICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIGRl
c2t0b3AgR0wgc3BlYyBpbiB0aGUgIlRyYW5zZmVyIG9mIFBpeGVsIFJlY3RhbmdsZXMiIHNlY3Rp
b24KLSAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB0eXBlIGlzIHBhY2tlZCBhcyBmb2xsb3dz
OgotICAgICAgICAgICAgICAgICAgICAvLyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEgICAxMCAg
ICA5ICAgIDggICAgNyAgICA2ICAgIDUgICAgNCAgICAzICAgIDIgICAgMSAgICAwCi0gICAgICAg
ICAgICAgICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAg
ICAgICAvLyB8ICAgICAgIDR0aCAgICAgICAgIHwgICAgICAgIDNyZCAgICAgICAgIHwgICAgICAg
IDJuZCAgICAgICAgfCAgIDFzdCBjb21wb25lbnQgICB8Ci0gICAgICAgICAgICAgICAgICAgIC8v
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUg
Y2FzZSBvZiBCR1JBX0VYVCwgQiBpcyB0aGUgZmlyc3QgY29tcG9uZW50LCBHIHRoZSBzZWNvbmQs
IGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICAgICAgZGVzdDE2W2kgKyBqICogb3V0cHV0
UGl0Y2ggLyBzaXplb2YodW5zaWduZWQgc2hvcnQpXSA9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGEgKyAwLjVmKSA8PCAxMil8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIHIgKyAwLjVmKSA8PCA4KSB8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGcgKyAwLjVmKSA8PCA0
KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGIgKyAw
LjVmKSA8PCAwKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVDoKLSAgICAgICAgICAgICAg
ICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9wIEdMIHNwZWMgaW4gdGhlICJUcmFuc2Zl
ciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgIC8vIHRo
aXMgdHlwZSBpcyBwYWNrZWQgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgLy8gICAx
NSAgIDE0ICAgMTMgICAxMiAgIDExICAgMTAgICAgOSAgICA4ICAgIDcgICAgNiAgICA1ICAgIDQg
ICAgMyAgICAyICAgIDEgICAgMAotICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgICAgLy8gfCA0dGggfCAgICAgICAgICAzcmQg
ICAgICAgICAgIHwgICAgICAgICAgIDJuZCAgICAgICAgICB8ICAgICAgMXN0IGNvbXBvbmVudCAg
ICAgfAotICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAg
ICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMgdGhlIGZp
cnN0IGNvbXBvbmVudCwgRyB0aGUgc2Vjb25kLCBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAg
ICAgICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8gc2l6ZW9mKHVuc2lnbmVkIHNob3J0
KV0gPQotICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9ydCkoICAgICBhICsg
MC41ZikgPDwgMTUpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgc2hvcnQp
KDMxICogciArIDAuNWYpIDw8IDEwKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2ln
bmVkIHNob3J0KSgzMSAqIGcgKyAwLjVmKSA8PCA1KSB8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAoKHVuc2lnbmVkIHNob3J0KSgzMSAqIGIgKyAwLjVmKSA8PCAwKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9SR0I6Ci0gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6Ci0g
ICAgICAgICAgICAgICAgICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8gc2l6ZW9mKHVu
c2lnbmVkIHNob3J0KV0gPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgc2hv
cnQpKDMxICogYiArIDAuNWYpIDw8IDApIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICgodW5z
aWduZWQgc2hvcnQpKDYzICogZyArIDAuNWYpIDw8IDUpIHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICgodW5zaWduZWQgc2hvcnQpKDMxICogciArIDAuNWYpIDw8IDExKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RbMyAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAwXSA9
ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiByICsgMC41Zik7Ci0gICAgICAgICAgICAgICAgICAgIGRl
c3RbMyAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAxXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiBn
ICsgMC41Zik7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RbMyAqIGkgKyBqICogb3V0cHV0UGl0
Y2ggKyAyXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiBiICsgMC41Zik7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBzeXN0ZW1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7Ci0KLSAgICBzeXN0ZW1TdXJmYWNl
LT5SZWxlYXNlKCk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6Y2xlYXIoR0xiaXRmaWVsZCBtYXNrKQot
ewotICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IGdldERyYXdGcmFtZWJ1ZmZl
cigpOwotCi0gICAgaWYgKCFmcmFtZWJ1ZmZlck9iamVjdCB8fCBmcmFtZWJ1ZmZlck9iamVjdC0+
Y29tcGxldGVuZXNzKCkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOwotICAgIH0K
LQotICAgIERXT1JEIGZsYWdzID0gMDsKLQotICAgIGlmIChtYXNrICYgR0xfQ09MT1JfQlVGRkVS
X0JJVCkKLSAgICB7Ci0gICAgICAgIG1hc2sgJj0gfkdMX0NPTE9SX0JVRkZFUl9CSVQ7Ci0KLSAg
ICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRDb2xvcmJ1ZmZlclR5cGUoKSAhPSBHTF9O
T05FKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbGFncyB8PSBEM0RDTEVBUl9UQVJHRVQ7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobWFzayAmIEdMX0RFUFRIX0JVRkZFUl9CSVQpCi0g
ICAgewotICAgICAgICBtYXNrICY9IH5HTF9ERVBUSF9CVUZGRVJfQklUOwotICAgICAgICBpZiAo
bVN0YXRlLmRlcHRoTWFzayAmJiBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0RGVwdGhidWZmZXJUeXBl
KCkgIT0gR0xfTk9ORSkKLSAgICAgICAgewotICAgICAgICAgICAgZmxhZ3MgfD0gRDNEQ0xFQVJf
WkJVRkZFUjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEdMdWludCBzdGVuY2lsVW5tYXNrZWQg
PSAweDA7Ci0KLSAgICBpZiAobWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkKLSAgICB7Ci0g
ICAgICAgIG1hc2sgJj0gfkdMX1NURU5DSUxfQlVGRkVSX0JJVDsKLSAgICAgICAgaWYgKGZyYW1l
YnVmZmVyT2JqZWN0LT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IEdMX05PTkUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXB0aFN0ZW5jaWwgPSBmcmFtZWJ1
ZmZlck9iamVjdC0+Z2V0U3RlbmNpbGJ1ZmZlcigpLT5nZXREZXB0aFN0ZW5jaWwoKTsKLSAgICAg
ICAgICAgIGlmICghZGVwdGhTdGVuY2lsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEVSUigiRGVwdGggc3RlbmNpbCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgRDNEU1VSRkFDRV9ERVNDIGRlc2M7Ci0gICAgICAgICAgICBkZXB0aFN0ZW5jaWwtPkdldERl
c2MoJmRlc2MpOwotICAgICAgICAgICAgZGVwdGhTdGVuY2lsLT5SZWxlYXNlKCk7Ci0KLSAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBzdGVuY2lsU2l6ZSA9IGR4MmVzOjpHZXRTdGVuY2lsU2l6ZShk
ZXNjLkZvcm1hdCk7Ci0gICAgICAgICAgICBzdGVuY2lsVW5tYXNrZWQgPSAoMHgxIDw8IHN0ZW5j
aWxTaXplKSAtIDE7Ci0KLSAgICAgICAgICAgIGlmIChzdGVuY2lsVW5tYXNrZWQgIT0gMHgwKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsYWdzIHw9IEQzRENMRUFSX1NURU5DSUw7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobWFzayAhPSAwKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgIH0KLQot
ICAgIGlmICghYXBwbHlSZW5kZXJUYXJnZXQodHJ1ZSkpICAgLy8gQ2xpcHMgdGhlIGNsZWFyIHRv
IHRoZSBzY2lzc29yIHJlY3RhbmdsZSBidXQgbm90IHRoZSB2aWV3cG9ydAotICAgIHsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEQzRENPTE9SIGNvbG9yID0gRDNEQ09MT1JfQVJHQih1
bm9ybTw4PihtU3RhdGUuY29sb3JDbGVhclZhbHVlLmFscGhhKSwgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVub3JtPDg+KG1TdGF0ZS5jb2xvckNsZWFyVmFsdWUucmVkKSwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVub3JtPDg+KG1TdGF0ZS5jb2xv
ckNsZWFyVmFsdWUuZ3JlZW4pLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5vcm08OD4obVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlKSk7Ci0gICAgZmxvYXQgZGVwdGgg
PSBjbGFtcDAxKG1TdGF0ZS5kZXB0aENsZWFyVmFsdWUpOwotICAgIGludCBzdGVuY2lsID0gbVN0
YXRlLnN0ZW5jaWxDbGVhclZhbHVlICYgMHgwMDAwMDBGRjsKLQotICAgIGJvb2wgYWxwaGFVbm1h
c2tlZCA9IChkeDJlczo6R2V0QWxwaGFTaXplKG1SZW5kZXJUYXJnZXREZXNjLkZvcm1hdCkgPT0g
MCkgfHwgbVN0YXRlLmNvbG9yTWFza0FscGhhOwotCi0gICAgY29uc3QgYm9vbCBuZWVkTWFza2Vk
U3RlbmNpbENsZWFyID0gKGZsYWdzICYgRDNEQ0xFQVJfU1RFTkNJTCkgJiYKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobVN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgJiBz
dGVuY2lsVW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKLSAgICBjb25zdCBib29sIG5lZWRN
YXNrZWRDb2xvckNsZWFyID0gKGZsYWdzICYgRDNEQ0xFQVJfVEFSR0VUKSAmJgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKG1TdGF0ZS5jb2xvck1hc2tSZWQgJiYgbVN0
YXRlLmNvbG9yTWFza0dyZWVuICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVN0YXRlLmNvbG9yTWFza0JsdWUgJiYgYWxwaGFVbm1hc2tlZCk7Ci0KLSAgICBpZiAo
bmVlZE1hc2tlZENvbG9yQ2xlYXIgfHwgbmVlZE1hc2tlZFN0ZW5jaWxDbGVhcikKLSAgICB7Ci0g
ICAgICAgIC8vIFN0YXRlIHdoaWNoIGlzIGFsdGVyZWQgaW4gYWxsIHBhdGhzIGZyb20gdGhpcyBw
b2ludCB0byB0aGUgY2xlYXIgY2FsbCBpcyBzYXZlZC4KLSAgICAgICAgLy8gU3RhdGUgd2hpY2gg
aXMgYWx0ZXJlZCBpbiBvbmx5IHNvbWUgcGF0aHMgd2lsbCBiZSBmbGFnZ2VkIGRpcnR5IGluIHRo
ZSBjYXNlIHRoYXQKLSAgICAgICAgLy8gIHRoYXQgcGF0aCBpcyB0YWtlbi4KLSAgICAgICAgSFJF
U1VMVCBocjsKLSAgICAgICAgaWYgKG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgPT0gTlVMTCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaHIgPSBtRGV2aWNlLT5CZWdpblN0YXRlQmxvY2soKTsKLSAg
ICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpIHx8IGhyID09IEQzREVSUl9PVVRPRlZJREVP
TUVNT1JZIHx8IGhyID09IEVfT1VUT0ZNRU1PUlkpOwotCi0gICAgICAgICAgICBtRGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVFTkFCTEUsIEZBTFNFKTsKLSAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pGVU5DLCBEM0RDTVBfQUxXQVlTKTsKLSAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIEZBTFNFKTsKLSAg
ICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxM
X05PTkUpOwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfRklMTE1P
REUsIEQzREZJTExfU09MSUQpOwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfQUxQSEFURVNURU5BQkxFLCBGQUxTRSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7Ci0gICAgICAgICAgICBt
RGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DTElQUExBTkVFTkFCTEUsIDApOwotICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgMCk7
Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxF
LCBGQUxTRSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKLSAg
ICAgICAgICAgIG1EZXZpY2UtPlNldFZlcnRleFNoYWRlcihOVUxMKTsKLSAgICAgICAgICAgIG1E
ZXZpY2UtPlNldEZWRihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX0RJRkZVU0UpOwotICAgICAgICAg
ICAgbURldmljZS0+U2V0U3RyZWFtU291cmNlKDAsIE5VTEwsIDAsIDApOwotICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJBVEVBTFBIQUJMRU5ERU5BQkxFLCBU
UlVFKTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRT
U19DT0xPUk9QLCBEM0RUT1BfU0VMRUNUQVJHMSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRU
ZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JBUkcxLCBEM0RUQV9URkFDVE9SKTsKLSAg
ICAgICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19BTFBIQU9Q
LCBEM0RUT1BfU0VMRUNUQVJHMSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3Rh
Z2VTdGF0ZSgwLCBEM0RUU1NfQUxQSEFBUkcxLCBEM0RUQV9URkFDVE9SKTsKLSAgICAgICAgICAg
IG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1IsIGNvbG9yKTsKLSAg
ICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFTSywg
MHhGRkZGRkZGRik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkg
PCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBtRGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2VGcmVxKGksIDEpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBociA9IG1EZXZpY2UtPkVuZFN0YXRlQmxvY2soJm1NYXNrZWRDbGVhclNhdmVk
U3RhdGUpOwotICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikgfHwgaHIgPT0gRDNERVJS
X09VVE9GVklERU9NRU1PUlkgfHwgaHIgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBBU1NFUlQobU1hc2tlZENsZWFyU2F2ZWRTdGF0ZSAhPSBOVUxMKTsKLQotICAgICAg
ICBpZiAobU1hc2tlZENsZWFyU2F2ZWRTdGF0ZSAhPSBOVUxMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBociA9IG1NYXNrZWRDbGVhclNhdmVkU3RhdGUtPkNhcHR1cmUoKTsKLSAgICAgICAgICAg
IEFTU0VSVChTVUNDRUVERUQoaHIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX1pXUklURUVOQUJMRSwgRkFMU0UpOwotICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRlVOQywgRDNEQ01QX0FMV0FZUyk7Ci0gICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIEZBTFNFKTsKLSAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ1VMTE1PREUsIEQzRENVTExfTk9ORSk7Ci0gICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0ZJTExNT0RFLCBEM0RGSUxMX1NPTElE
KTsKLSAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFURVNURU5BQkxF
LCBGQUxTRSk7Ci0gICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBQkxF
TkRFTkFCTEUsIEZBTFNFKTsKLSAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
Q0xJUFBMQU5FRU5BQkxFLCAwKTsKLQotICAgICAgICBpZiAoZmxhZ3MgJiBEM0RDTEVBUl9UQVJH
RVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X0NPTE9SV1JJVEVFTkFCTEUsIGVzMmR4OjpDb252ZXJ0Q29sb3JNYXNrKG1TdGF0ZS5jb2xvck1h
c2tSZWQsIG1TdGF0ZS5jb2xvck1hc2tHcmVlbiwgbVN0YXRlLmNvbG9yTWFza0JsdWUsIG1TdGF0
ZS5jb2xvck1hc2tBbHBoYSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJM
RSwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3RlbmNpbFVubWFza2VkICE9IDB4MCAm
JiAoZmxhZ3MgJiBEM0RDTEVBUl9TVEVOQ0lMKSkKLSAgICAgICAgewotICAgICAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgVFJVRSk7Ci0gICAgICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19UV09TSURFRFNURU5DSUxNT0RFLCBG
QUxTRSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lM
RlVOQywgRDNEQ01QX0FMV0FZUyk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19TVEVOQ0lMUkVGLCBzdGVuY2lsKTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX1NURU5DSUxXUklURU1BU0ssIG1TdGF0ZS5zdGVuY2lsV3JpdGVtYXNr
KTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxGQUlM
LCBEM0RTVEVOQ0lMT1BfUkVQTEFDRSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19TVEVOQ0lMWkZBSUwsIEQzRFNURU5DSUxPUF9SRVBMQUNFKTsKLSAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxQQVNTLCBEM0RTVEVOQ0lM
T1BfUkVQTEFDRSk7Ci0gICAgICAgICAgICBtU3RlbmNpbFN0YXRlRGlydHkgPSB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgbURldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgRkFMU0UpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgbURldmljZS0+U2V0UGl4ZWxTaGFkZXIoTlVMTCk7Ci0gICAgICAgIG1EZXZpY2UtPlNl
dFZlcnRleFNoYWRlcihOVUxMKTsKLSAgICAgICAgbURldmljZS0+U2V0RlZGKEQzREZWRl9YWVpS
SFcpOwotICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TRVBBUkFURUFMUEhB
QkxFTkRFTkFCTEUsIFRSVUUpOwotICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0
ZSgwLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOwotICAgICAgICBtRGV2aWNl
LT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JBUkcxLCBEM0RUQV9URkFDVE9S
KTsKLSAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0FMUEhB
T1AsIEQzRFRPUF9TRUxFQ1RBUkcxKTsKLSAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdl
U3RhdGUoMCwgRDNEVFNTX0FMUEhBQVJHMSwgRDNEVEFfVEZBQ1RPUik7Ci0gICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1IsIGNvbG9yKTsKLSAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNLLCAweEZGRkZGRkZG
KTsKLQotICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZyZXEoaSwg
MSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBxdWFkWzRdWzRdOyAgIC8vIEEgcXVhZHJp
bGF0ZXJhbCBjb3ZlcmluZyB0aGUgdGFyZ2V0LCBhbGlnbmVkIHRvIG1hdGNoIHRoZSBlZGdlcwot
ICAgICAgICBxdWFkWzBdWzBdID0gLTAuNWY7Ci0gICAgICAgIHF1YWRbMF1bMV0gPSBtUmVuZGVy
VGFyZ2V0RGVzYy5IZWlnaHQgLSAwLjVmOwotICAgICAgICBxdWFkWzBdWzJdID0gMC4wZjsKLSAg
ICAgICAgcXVhZFswXVszXSA9IDEuMGY7Ci0KLSAgICAgICAgcXVhZFsxXVswXSA9IG1SZW5kZXJU
YXJnZXREZXNjLldpZHRoIC0gMC41ZjsKLSAgICAgICAgcXVhZFsxXVsxXSA9IG1SZW5kZXJUYXJn
ZXREZXNjLkhlaWdodCAtIDAuNWY7Ci0gICAgICAgIHF1YWRbMV1bMl0gPSAwLjBmOwotICAgICAg
ICBxdWFkWzFdWzNdID0gMS4wZjsKLQotICAgICAgICBxdWFkWzJdWzBdID0gLTAuNWY7Ci0gICAg
ICAgIHF1YWRbMl1bMV0gPSAtMC41ZjsKLSAgICAgICAgcXVhZFsyXVsyXSA9IDAuMGY7Ci0gICAg
ICAgIHF1YWRbMl1bM10gPSAxLjBmOwotCi0gICAgICAgIHF1YWRbM11bMF0gPSBtUmVuZGVyVGFy
Z2V0RGVzYy5XaWR0aCAtIDAuNWY7Ci0gICAgICAgIHF1YWRbM11bMV0gPSAtMC41ZjsKLSAgICAg
ICAgcXVhZFszXVsyXSA9IDAuMGY7Ci0gICAgICAgIHF1YWRbM11bM10gPSAxLjBmOwotCi0gICAg
ICAgIG1EaXNwbGF5LT5zdGFydFNjZW5lKCk7Ci0gICAgICAgIG1EZXZpY2UtPkRyYXdQcmltaXRp
dmVVUChEM0RQVF9UUklBTkdMRVNUUklQLCAyLCBxdWFkLCBzaXplb2YoZmxvYXRbNF0pKTsKLQot
ICAgICAgICBpZiAoZmxhZ3MgJiBEM0RDTEVBUl9aQlVGRkVSKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBUUlVFKTsKLSAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pXUklURUVOQUJMRSwgVFJVRSk7
Ci0gICAgICAgICAgICBtRGV2aWNlLT5DbGVhcigwLCBOVUxMLCBEM0RDTEVBUl9aQlVGRkVSLCBj
b2xvciwgZGVwdGgsIHN0ZW5jaWwpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1NYXNrZWRD
bGVhclNhdmVkU3RhdGUgIT0gTlVMTCkKLSAgICAgICAgewotICAgICAgICAgICAgbU1hc2tlZENs
ZWFyU2F2ZWRTdGF0ZS0+QXBwbHkoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChm
bGFncykKLSAgICB7Ci0gICAgICAgIG1EZXZpY2UtPkNsZWFyKDAsIE5VTEwsIGZsYWdzLCBjb2xv
ciwgZGVwdGgsIHN0ZW5jaWwpOwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpkcmF3QXJyYXlz
KEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5j
ZXMpCi17Ci0gICAgaWYgKCFtU3RhdGUuY3VycmVudFByb2dyYW0pCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIH0KLQotICAgIEQzRFBSSU1J
VElWRVRZUEUgcHJpbWl0aXZlVHlwZTsKLSAgICBpbnQgcHJpbWl0aXZlQ291bnQ7Ci0KLSAgICBp
ZighZXMyZHg6OkNvbnZlcnRQcmltaXRpdmVUeXBlKG1vZGUsIGNvdW50LCAmcHJpbWl0aXZlVHlw
ZSwgJnByaW1pdGl2ZUNvdW50KSkKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5V
TSk7Ci0KLSAgICBpZiAocHJpbWl0aXZlQ291bnQgPD0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIWFwcGx5UmVuZGVyVGFyZ2V0KGZhbHNlKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhcHBseVN0YXRlKG1vZGUpOwotCi0gICAgR0xz
aXplaSByZXBlYXREcmF3ID0gMTsKLSAgICBHTGVudW0gZXJyID0gYXBwbHlWZXJ0ZXhCdWZmZXIo
Zmlyc3QsIGNvdW50LCBpbnN0YW5jZXMsICZyZXBlYXREcmF3KTsKLSAgICBpZiAoZXJyICE9IEdM
X05PX0VSUk9SKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKGVycik7Ci0gICAgfQotCi0g
ICAgYXBwbHlTaGFkZXJzKCk7Ci0gICAgYXBwbHlUZXh0dXJlcygpOwotCi0gICAgaWYgKCFnZXRD
dXJyZW50UHJvZ3JhbUJpbmFyeSgpLT52YWxpZGF0ZVNhbXBsZXJzKE5VTEwpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICB9Ci0KLSAgICBp
ZiAoIXNraXBEcmF3KG1vZGUpKQotICAgIHsKLSAgICAgICAgbURpc3BsYXktPnN0YXJ0U2NlbmUo
KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtb2RlID09IEdMX0xJTkVfTE9PUCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZHJhd0xpbmVMb29wKGNvdW50LCBHTF9OT05FLCBOVUxMLCAwKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmIChpbnN0YW5jZXMgPiAwKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBTdGF0aWNJbmRleEJ1ZmZlciAqY291bnRpbmdJQiA9IG1JbmRleERhdGFNYW5hZ2Vy
LT5nZXRDb3VudGluZ0luZGljZXMoY291bnQpOwotICAgICAgICAgICAgaWYgKGNvdW50aW5nSUIp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1BcHBsaWVkSUJTZXJpYWwgIT0g
Y291bnRpbmdJQi0+Z2V0U2VyaWFsKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBtRGV2aWNlLT5TZXRJbmRpY2VzKGNvdW50aW5nSUItPmdldEJ1ZmZlcigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IGNvdW50aW5nSUItPmdldFNlcmlh
bCgpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgcmVwZWF0RHJhdzsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgbURldmljZS0+RHJhd0luZGV4ZWRQcmltaXRpdmUocHJpbWl0aXZlVHlwZSwgMCwgMCwg
Y291bnQsIDAsIHByaW1pdGl2ZUNvdW50KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVJS
KCJDb3VsZCBub3QgY3JlYXRlIGEgY291bnRpbmcgaW5kZXggYnVmZmVyIGZvciBnbERyYXdBcnJh
eXNJbnN0YW5jZWQuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgICAvLyBSZWd1
bGFyIGNhc2UKLSAgICAgICAgewotICAgICAgICAgICAgbURldmljZS0+RHJhd1ByaW1pdGl2ZShw
cmltaXRpdmVUeXBlLCAwLCBwcmltaXRpdmVDb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXZvaWQgQ29udGV4dDo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBH
TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlcykKLXsK
LSAgICBpZiAoIW1TdGF0ZS5jdXJyZW50UHJvZ3JhbSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgfQotCi0gICAgaWYgKCFpbmRpY2VzICYm
ICFtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICB9Ci0KLSAgICBEM0RQUklNSVRJVkVUWVBFIHBy
aW1pdGl2ZVR5cGU7Ci0gICAgaW50IHByaW1pdGl2ZUNvdW50OwotCi0gICAgaWYoIWVzMmR4OjpD
b252ZXJ0UHJpbWl0aXZlVHlwZShtb2RlLCBjb3VudCwgJnByaW1pdGl2ZVR5cGUsICZwcmltaXRp
dmVDb3VudCkpCi0gICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAg
aWYgKHByaW1pdGl2ZUNvdW50IDw9IDApCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFhcHBseVJlbmRlclRhcmdldChmYWxzZSkpCi0gICAgewotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYXBwbHlTdGF0ZShtb2RlKTsKLQotICAgIFRyYW5zbGF0ZWRJbmRl
eERhdGEgaW5kZXhJbmZvOwotICAgIEdMZW51bSBlcnIgPSBhcHBseUluZGV4QnVmZmVyKGluZGlj
ZXMsIGNvdW50LCBtb2RlLCB0eXBlLCAmaW5kZXhJbmZvKTsKLSAgICBpZiAoZXJyICE9IEdMX05P
X0VSUk9SKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKGVycik7Ci0gICAgfQotCi0gICAg
R0xzaXplaSB2ZXJ0ZXhDb3VudCA9IGluZGV4SW5mby5tYXhJbmRleCAtIGluZGV4SW5mby5taW5J
bmRleCArIDE7Ci0gICAgR0xzaXplaSByZXBlYXREcmF3ID0gMTsKLSAgICBlcnIgPSBhcHBseVZl
cnRleEJ1ZmZlcihpbmRleEluZm8ubWluSW5kZXgsIHZlcnRleENvdW50LCBpbnN0YW5jZXMsICZy
ZXBlYXREcmF3KTsKLSAgICBpZiAoZXJyICE9IEdMX05PX0VSUk9SKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yKGVycik7Ci0gICAgfQotCi0gICAgYXBwbHlTaGFkZXJzKCk7Ci0gICAgYXBw
bHlUZXh0dXJlcygpOwotCi0gICAgaWYgKCFnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpLT52YWxp
ZGF0ZVNhbXBsZXJzKE5VTEwpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLSAgICB9Ci0KLSAgICBpZiAoIXNraXBEcmF3KG1vZGUpKQotICAgIHsK
LSAgICAgICAgbURpc3BsYXktPnN0YXJ0U2NlbmUoKTsKLQotICAgICAgICBpZiAobW9kZSA9PSBH
TF9MSU5FX0xPT1ApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRyYXdMaW5lTG9vcChjb3VudCwg
dHlwZSwgaW5kaWNlcywgaW5kZXhJbmZvLm1pbkluZGV4KTsgICAKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0
RHJhdzsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EZXZpY2UtPkRyYXdJ
bmRleGVkUHJpbWl0aXZlKHByaW1pdGl2ZVR5cGUsIC0oSU5UKWluZGV4SW5mby5taW5JbmRleCwg
aW5kZXhJbmZvLm1pbkluZGV4LCB2ZXJ0ZXhDb3VudCwgaW5kZXhJbmZvLnN0YXJ0SW5kZXgsIHBy
aW1pdGl2ZUNvdW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8g
SW1wbGVtZW50cyBnbEZsdXNoIHdoZW4gYmxvY2sgaXMgZmFsc2UsIGdsRmluaXNoIHdoZW4gYmxv
Y2sgaXMgdHJ1ZQotdm9pZCBDb250ZXh0OjpzeW5jKGJvb2wgYmxvY2spCi17Ci0gICAgbURpc3Bs
YXktPnN5bmMoYmxvY2spOwotfQotCi12b2lkIENvbnRleHQ6OmRyYXdMaW5lTG9vcChHTHNpemVp
IGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBpbnQgbWluSW5kZXgp
Ci17Ci0gICAgLy8gR2V0IHRoZSByYXcgaW5kaWNlcyBmb3IgYW4gaW5kZXhlZCBkcmF3Ci0gICAg
aWYgKHR5cGUgIT0gR0xfTk9ORSAmJiBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLmdldCgpKQot
ICAgIHsKLSAgICAgICAgQnVmZmVyICppbmRleEJ1ZmZlciA9IG1TdGF0ZS5lbGVtZW50QXJyYXlC
dWZmZXIuZ2V0KCk7Ci0gICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGluZGljZXMpOwotICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
R0x1Ynl0ZSo+KGluZGV4QnVmZmVyLT5kYXRhKCkpICsgb2Zmc2V0OwotICAgIH0KLQotICAgIFVJ
TlQgc3RhcnRJbmRleCA9IDA7Ci0gICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKLQotICAgIGlm
IChzdXBwb3J0czMyYml0SW5kaWNlcygpKQotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHNwYWNl
TmVlZGVkID0gKGNvdW50ICsgMSkgKiBzaXplb2YodW5zaWduZWQgaW50KTsKLQotICAgICAgICBp
ZiAoIW1MaW5lTG9vcElCKQotICAgICAgICB7Ci0gICAgICAgICAgICBtTGluZUxvb3BJQiA9IG5l
dyBTdHJlYW1pbmdJbmRleEJ1ZmZlcihtRGV2aWNlLCBJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpF
LCBEM0RGTVRfSU5ERVgzMik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobUxpbmVMb29wSUIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1MaW5lTG9vcElCLT5yZXNlcnZlU3BhY2Uoc3BhY2VO
ZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCk7Ci0KLSAgICAgICAgICAgIFVJTlQgb2Zmc2V0ID0gMDsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dCo+KG1MaW5lTG9vcElCLT5tYXAoc3BhY2VOZWVkZWQsICZvZmZzZXQpKTsKLSAgICAgICAgICAg
IHN0YXJ0SW5kZXggPSBvZmZzZXQgLyA0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
ZGF0YSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9OT05FOiAgIC8vIE5vbi1p
bmRleGVkIGRyYXcKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
YXRhW2ldID0gaTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBk
YXRhW2NvdW50XSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5k
aWNlcylbaV07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZGF0
YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbMF07Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRh
W2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihpbmRpY2VzKVtpXTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19j
YXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbMF07Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNv
bnN0IEdMdWludCo+KGluZGljZXMpW2ldOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGRhdGFbY291bnRdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5k
aWNlcylbMF07Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBtTGluZUxvb3BJQi0+dW5tYXAoKTsKLSAgICAgICAgICAgICAgICBzdWNjZWVkZWQgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0g
ICAgICAgIGNvbnN0IGludCBzcGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2ln
bmVkIHNob3J0KTsKLQotICAgICAgICBpZiAoIW1MaW5lTG9vcElCKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBtTGluZUxvb3BJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlcihtRGV2aWNlLCBJ
TklUSUFMX0lOREVYX0JVRkZFUl9TSVpFLCBEM0RGTVRfSU5ERVgxNik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAobUxpbmVMb29wSUIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1MaW5lTG9v
cElCLT5yZXNlcnZlU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX1NIT1JUKTsKLQotICAg
ICAgICAgICAgVUlOVCBvZmZzZXQgPSAwOwotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKmRh
dGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KG1MaW5lTG9vcElCLT5tYXAoc3BhY2VO
ZWVkZWQsICZvZmZzZXQpKTsKLSAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBvZmZzZXQgLyAyOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9OT05FOiAgIC8vIE5vbi1pbmRleGVkIGRyYXcKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2ldID0gaTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkYXRhW2NvdW50XSA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRF
OgotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBz
dGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbaV07Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25z
dCBHTHVieXRlKj4oaW5kaWNlcylbMF07Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKLSAgICAgICAgICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1
c2hvcnQqPihpbmRpY2VzKVtpXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNl
cylbMF07Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpW2ldOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbY291bnRdID0g
c3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbMF07Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtTGluZUxvb3BJQi0+dW5tYXAoKTsK
LSAgICAgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIGlmIChzdWNjZWVkZWQpCi0gICAgewotICAgICAgICBpZiAo
bUFwcGxpZWRJQlNlcmlhbCAhPSBtTGluZUxvb3BJQi0+Z2V0U2VyaWFsKCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIG1EZXZpY2UtPlNldEluZGljZXMobUxpbmVMb29wSUItPmdldEJ1ZmZlcigp
KTsKLSAgICAgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBtTGluZUxvb3BJQi0+Z2V0U2VyaWFs
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBtRGV2aWNlLT5EcmF3SW5kZXhlZFByaW1pdGl2ZShE
M0RQVF9MSU5FU1RSSVAsIC1taW5JbmRleCwgbWluSW5kZXgsIGNvdW50LCBzdGFydEluZGV4LCBj
b3VudCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEVSUigiQ291bGQgbm90IGNy
ZWF0ZSBhIGxvb3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7Ci0gICAgICAg
IHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4
dDo6cmVjb3JkSW52YWxpZEVudW0oKQotewotICAgIG1JbnZhbGlkRW51bSA9IHRydWU7Ci19Ci0K
LXZvaWQgQ29udGV4dDo6cmVjb3JkSW52YWxpZFZhbHVlKCkKLXsKLSAgICBtSW52YWxpZFZhbHVl
ID0gdHJ1ZTsKLX0KLQotdm9pZCBDb250ZXh0OjpyZWNvcmRJbnZhbGlkT3BlcmF0aW9uKCkKLXsK
LSAgICBtSW52YWxpZE9wZXJhdGlvbiA9IHRydWU7Ci19Ci0KLXZvaWQgQ29udGV4dDo6cmVjb3Jk
T3V0T2ZNZW1vcnkoKQotewotICAgIG1PdXRPZk1lbW9yeSA9IHRydWU7Ci19Ci0KLXZvaWQgQ29u
dGV4dDo6cmVjb3JkSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uKCkKLXsKLSAgICBtSW52YWxp
ZEZyYW1lYnVmZmVyT3BlcmF0aW9uID0gdHJ1ZTsKLX0KLQotLy8gR2V0IG9uZSBvZiB0aGUgcmVj
b3JkZWQgZXJyb3JzIGFuZCBjbGVhciBpdHMgZmxhZywgaWYgYW55LgotLy8gW09wZW5HTCBFUyAy
LjAuMjRdIHNlY3Rpb24gMi41IHBhZ2UgMTMuCi1HTGVudW0gQ29udGV4dDo6Z2V0RXJyb3IoKQot
ewotICAgIGlmIChtSW52YWxpZEVudW0pCi0gICAgewotICAgICAgICBtSW52YWxpZEVudW0gPSBm
YWxzZTsKLQotICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9FTlVNOwotICAgIH0KLQotICAgIGlm
IChtSW52YWxpZFZhbHVlKQotICAgIHsKLSAgICAgICAgbUludmFsaWRWYWx1ZSA9IGZhbHNlOwot
Ci0gICAgICAgIHJldHVybiBHTF9JTlZBTElEX1ZBTFVFOwotICAgIH0KLQotICAgIGlmIChtSW52
YWxpZE9wZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIG1JbnZhbGlkT3BlcmF0aW9uID0gZmFsc2U7
Ci0KLSAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOwotICAgIH0KLQotICAgIGlm
IChtT3V0T2ZNZW1vcnkpCi0gICAgewotICAgICAgICBtT3V0T2ZNZW1vcnkgPSBmYWxzZTsKLQot
ICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKLSAgICB9Ci0KLSAgICBpZiAobUludmFs
aWRGcmFtZWJ1ZmZlck9wZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIG1JbnZhbGlkRnJhbWVidWZm
ZXJPcGVyYXRpb24gPSBmYWxzZTsKLQotICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT047Ci0gICAgfQotCi0gICAgcmV0dXJuIEdMX05PX0VSUk9SOwotfQotCi1H
TGVudW0gQ29udGV4dDo6Z2V0UmVzZXRTdGF0dXMoKQotewotICAgIGlmIChtUmVzZXRTdGF0dXMg
PT0gR0xfTk9fRVJST1IpCi0gICAgewotICAgICAgICBib29sIGxvc3QgPSBtRGlzcGxheS0+dGVz
dERldmljZUxvc3QoKTsKLQotICAgICAgICBpZiAobG9zdCkKLSAgICAgICAgewotICAgICAgICAg
ICAgbURpc3BsYXktPm5vdGlmeURldmljZUxvc3QoKTsgICAvLyBTZXRzIG1SZXNldFN0YXR1cwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgR0xlbnVtIHN0YXR1cyA9IG1SZXNldFN0YXR1czsKLQot
ICAgIGlmIChtUmVzZXRTdGF0dXMgIT0gR0xfTk9fRVJST1IpCi0gICAgewotICAgICAgICBpZiAo
bURpc3BsYXktPnRlc3REZXZpY2VSZXNldHRhYmxlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1SZXNldFN0YXR1cyA9IEdMX05PX0VSUk9SOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBzdGF0dXM7Ci19Ci0KLWJvb2wgQ29udGV4dDo6aXNSZXNldE5vdGlmaWNhdGlvbkVu
YWJsZWQoKQotewotICAgIHJldHVybiAobVJlc2V0U3RyYXRlZ3kgPT0gR0xfTE9TRV9DT05URVhU
X09OX1JFU0VUX0VYVCk7Ci19Ci0KLWJvb2wgQ29udGV4dDo6c3VwcG9ydHNTaGFkZXJNb2RlbDMo
KSBjb25zdAotewotICAgIHJldHVybiBtU3VwcG9ydHNTaGFkZXJNb2RlbDM7Ci19Ci0KLWZsb2F0
IENvbnRleHQ6OmdldE1heGltdW1Qb2ludFNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtU3Vw
cG9ydHNTaGFkZXJNb2RlbDMgPyBtTWF4aW11bVBvaW50U2l6ZSA6IEFMSUFTRURfUE9JTlRfU0la
RV9SQU5HRV9NQVhfU00yOwotfQotCi1pbnQgQ29udGV4dDo6Z2V0TWF4aW11bVZhcnlpbmdWZWN0
b3JzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN1cHBvcnRzU2hhZGVyTW9kZWwzID8gTUFYX1ZB
UllJTkdfVkVDVE9SU19TTTMgOiBNQVhfVkFSWUlOR19WRUNUT1JTX1NNMjsKLX0KLQotdW5zaWdu
ZWQgaW50IENvbnRleHQ6OmdldE1heGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1TdXBwb3J0c1ZlcnRleFRleHR1cmUgPyBNQVhfVkVSVEVYX1RFWFRV
UkVfSU1BR0VfVU5JVFNfVlRGIDogMDsKLX0KLQotdW5zaWduZWQgaW50IENvbnRleHQ6OmdldE1h
eGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTUFY
X1RFWFRVUkVfSU1BR0VfVU5JVFMgKyBnZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHMo
KTsKLX0KLQotaW50IENvbnRleHQ6OmdldE1heGltdW1GcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbVN1cHBvcnRzU2hhZGVyTW9kZWwzID8gTUFYX0ZSQUdNRU5U
X1VOSUZPUk1fVkVDVE9SU19TTTMgOiBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTX1NNMjsK
LX0KLQotaW50IENvbnRleHQ6OmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSBjb25zdAotewotICAg
IHJldHVybiBtTWF4U3VwcG9ydGVkU2FtcGxlczsKLX0KLQotaW50IENvbnRleHQ6OmdldE5lYXJl
c3RTdXBwb3J0ZWRTYW1wbGVzKEQzREZPUk1BVCBmb3JtYXQsIGludCByZXF1ZXN0ZWQpIGNvbnN0
Ci17Ci0gICAgaWYgKHJlcXVlc3RlZCA9PSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlcXVl
c3RlZDsKLSAgICB9Ci0KLSAgICBzdGQ6Om1hcDxEM0RGT1JNQVQsIGJvb2wgKj46OmNvbnN0X2l0
ZXJhdG9yIGl0ciA9IG1NdWx0aVNhbXBsZVN1cHBvcnQuZmluZChmb3JtYXQpOwotICAgIGlmIChp
dHIgPT0gbU11bHRpU2FtcGxlU3VwcG9ydC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAt
MTsKLSAgICB9Ci0KLSAgICBmb3IgKGludCBpID0gcmVxdWVzdGVkOyBpIDw9IEQzRE1VTFRJU0FN
UExFXzE2X1NBTVBMRVM7ICsraSkKLSAgICB7Ci0gICAgICAgIGlmIChpdHItPnNlY29uZFtpXSAm
JiBpICE9IEQzRE1VTFRJU0FNUExFX05PTk1BU0tBQkxFKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gaTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAtMTsKLX0KLQotYm9v
bCBDb250ZXh0OjpzdXBwb3J0c0V2ZW50UXVlcmllcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1T
dXBwb3J0c0V2ZW50UXVlcmllczsKLX0KLQotYm9vbCBDb250ZXh0OjpzdXBwb3J0c09jY2x1c2lv
blF1ZXJpZXMoKSBjb25zdAotewotICAgIHJldHVybiBtU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVz
OwotfQotCi1ib29sIENvbnRleHQ6OnN1cHBvcnRzRFhUMVRleHR1cmVzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbVN1cHBvcnRzRFhUMVRleHR1cmVzOwotfQotCi1ib29sIENvbnRleHQ6OnN1cHBv
cnRzRFhUM1RleHR1cmVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN1cHBvcnRzRFhUM1RleHR1
cmVzOwotfQotCi1ib29sIENvbnRleHQ6OnN1cHBvcnRzRFhUNVRleHR1cmVzKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbVN1cHBvcnRzRFhUNVRleHR1cmVzOwotfQotCi1ib29sIENvbnRleHQ6OnN1
cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN1cHBvcnRzRmxv
YXQzMlRleHR1cmVzOwotfQotCi1ib29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXQzMkxpbmVhckZp
bHRlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0MzJMaW5lYXJGaWx0ZXI7
Ci19Ci0KLWJvb2wgQ29udGV4dDo6c3VwcG9ydHNGbG9hdDMyUmVuZGVyYWJsZVRleHR1cmVzKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQzMlJlbmRlcmFibGVUZXh0dXJlczsK
LX0KLQotYm9vbCBDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MTZUZXh0dXJlcygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0MTZUZXh0dXJlczsKLX0KLQotYm9vbCBDb250ZXh0Ojpz
dXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtU3VwcG9y
dHNGbG9hdDE2TGluZWFyRmlsdGVyOwotfQotCi1ib29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXQx
NlJlbmRlcmFibGVUZXh0dXJlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0
MTZSZW5kZXJhYmxlVGV4dHVyZXM7Ci19Ci0KLWludCBDb250ZXh0OjpnZXRNYXhpbXVtUmVuZGVy
YnVmZmVyRGltZW5zaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbU1heFJlbmRlcmJ1ZmZlckRp
bWVuc2lvbjsKLX0KLQotaW50IENvbnRleHQ6OmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbU1heFRleHR1cmVEaW1lbnNpb247Ci19Ci0KLWludCBDb250
ZXh0OjpnZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSBjb25zdAotewotICAgIHJldHVy
biBtTWF4Q3ViZVRleHR1cmVEaW1lbnNpb247Ci19Ci0KLWludCBDb250ZXh0OjpnZXRNYXhpbXVt
VGV4dHVyZUxldmVsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbU1heFRleHR1cmVMZXZlbDsKLX0K
LQotYm9vbCBDb250ZXh0OjpzdXBwb3J0c0x1bWluYW5jZVRleHR1cmVzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbVN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXM7Ci19Ci0KLWJvb2wgQ29udGV4dDo6
c3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN1
cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlczsKLX0KLQotYm9vbCBDb250ZXh0OjpzdXBwb3J0
c0RlcHRoVGV4dHVyZXMoKSBjb25zdAotewotICAgIHJldHVybiBtU3VwcG9ydHNEZXB0aFRleHR1
cmVzOwotfQotCi1ib29sIENvbnRleHQ6OnN1cHBvcnRzMzJiaXRJbmRpY2VzKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbVN1cHBvcnRzMzJiaXRJbmRpY2VzOwotfQotCi1ib29sIENvbnRleHQ6OnN1
cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1TdXBwb3J0c05v
blBvd2VyMlRleHR1cmU7Ci19Ci0KLWJvb2wgQ29udGV4dDo6c3VwcG9ydHNJbnN0YW5jaW5nKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbVN1cHBvcnRzSW5zdGFuY2luZzsKLX0KLQotYm9vbCBDb250
ZXh0OjpzdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbVN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHk7Ci19Ci0KLWJvb2wgQ29udGV4dDo6
c3VwcG9ydHNEZXJpdmF0aXZlSW5zdHJ1Y3Rpb25zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVN1
cHBvcnRzRGVyaXZhdGl2ZUluc3RydWN0aW9uczsKLX0KLQotZmxvYXQgQ29udGV4dDo6Z2V0VGV4
dHVyZU1heEFuaXNvdHJvcHkoKSBjb25zdAotewotICAgIHJldHVybiBtTWF4VGV4dHVyZUFuaXNv
dHJvcHk7Ci19Ci0KLWJvb2wgQ29udGV4dDo6Z2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKEdMZW51
bSAqZm9ybWF0LCBHTGVudW0gKnR5cGUpCi17Ci0gICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
ID0gZ2V0UmVhZEZyYW1lYnVmZmVyKCk7Ci0gICAgaWYgKCFmcmFtZWJ1ZmZlciB8fCBmcmFtZWJ1
ZmZlci0+Y29tcGxldGVuZXNzKCkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCi0gICAgewot
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKLSAgICB9
Ci0KLSAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXRDb2xv
cmJ1ZmZlcigpOwotICAgIGlmICghcmVuZGVyYnVmZmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgaWYoIWR4
MmVzOjpDb252ZXJ0UmVhZEJ1ZmZlckZvcm1hdChyZW5kZXJidWZmZXItPmdldEQzREZvcm1hdCgp
LCBmb3JtYXQsIHR5cGUpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGZhbHNlKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIENvbnRl
eHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyKQotewotICAgIC8vIFtPcGVuR0wgRVMgMi4w
LjI0XSBzZWN0aW9uIDIuOSBwYWdlIDIyOgotICAgIC8vIElmIGEgYnVmZmVyIG9iamVjdCBpcyBk
ZWxldGVkIHdoaWxlIGl0IGlzIGJvdW5kLCBhbGwgYmluZGluZ3MgdG8gdGhhdCBvYmplY3QgaW4g
dGhlIGN1cnJlbnQgY29udGV4dAotICAgIC8vIChpLmUuIGluIHRoZSB0aHJlYWQgdGhhdCBjYWxs
ZWQgRGVsZXRlLUJ1ZmZlcnMpIGFyZSByZXNldCB0byB6ZXJvLgotCi0gICAgaWYgKG1TdGF0ZS5h
cnJheUJ1ZmZlci5pZCgpID09IGJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIG1TdGF0ZS5hcnJheUJ1
ZmZlci5zZXQoTlVMTCk7Ci0gICAgfQotCi0gICAgaWYgKG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZm
ZXIuaWQoKSA9PSBidWZmZXIpCi0gICAgewotICAgICAgICBtU3RhdGUuZWxlbWVudEFycmF5QnVm
ZmVyLnNldChOVUxMKTsKLSAgICB9Ci0KLSAgICBmb3IgKGludCBhdHRyaWJ1dGUgPSAwOyBhdHRy
aWJ1dGUgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGF0dHJpYnV0ZSsrKQotICAgIHsKLSAgICAgICAg
aWYgKG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmlidXRlXS5tQm91bmRCdWZmZXIuaWQoKSA9
PSBidWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVb
YXR0cmlidXRlXS5tQm91bmRCdWZmZXIuc2V0KE5VTEwpOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIENvbnRleHQ6OmRldGFjaFRleHR1cmUoR0x1aW50IHRleHR1cmUpCi17Ci0gICAgLy8g
W09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy44IHBhZ2UgODQ6Ci0gICAgLy8gSWYgYSB0ZXh0
dXJlIG9iamVjdCBpcyBkZWxldGVkLCBpdCBpcyBhcyBpZiBhbGwgdGV4dHVyZSB1bml0cyB3aGlj
aCBhcmUgYm91bmQgdG8gdGhhdCB0ZXh0dXJlIG9iamVjdCBhcmUKLSAgICAvLyByZWJvdW5kIHRv
IHRleHR1cmUgb2JqZWN0IHplcm8KLQotICAgIGZvciAoaW50IHR5cGUgPSAwOyB0eXBlIDwgVEVY
VFVSRV9UWVBFX0NPVU5UOyB0eXBlKyspCi0gICAgewotICAgICAgICBmb3IgKGludCBzYW1wbGVy
ID0gMDsgc2FtcGxlciA8IE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURjsgc2Ft
cGxlcisrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobVN0YXRlLnNhbXBsZXJUZXh0dXJl
W3R5cGVdW3NhbXBsZXJdLmlkKCkgPT0gdGV4dHVyZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0uc2V0KE5VTEwpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gW09wZW5HTCBFUyAyLjAu
MjRdIHNlY3Rpb24gNC40IHBhZ2UgMTEyOgotICAgIC8vIElmIGEgdGV4dHVyZSBvYmplY3QgaXMg
ZGVsZXRlZCB3aGlsZSBpdHMgaW1hZ2UgaXMgYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnRseSBib3Vu
ZCBmcmFtZWJ1ZmZlciwgdGhlbiBpdCBpcwotICAgIC8vIGFzIGlmIEZyYW1lYnVmZmVyVGV4dHVy
ZTJEIGhhZCBiZWVuIGNhbGxlZCwgd2l0aCBhIHRleHR1cmUgb2YgMCwgZm9yIGVhY2ggYXR0YWNo
bWVudCBwb2ludCB0byB3aGljaCB0aGlzCi0gICAgLy8gaW1hZ2Ugd2FzIGF0dGFjaGVkIGluIHRo
ZSBjdXJyZW50bHkgYm91bmQgZnJhbWVidWZmZXIuCi0KLSAgICBGcmFtZWJ1ZmZlciAqcmVhZEZy
YW1lYnVmZmVyID0gZ2V0UmVhZEZyYW1lYnVmZmVyKCk7Ci0gICAgRnJhbWVidWZmZXIgKmRyYXdG
cmFtZWJ1ZmZlciA9IGdldERyYXdGcmFtZWJ1ZmZlcigpOwotCi0gICAgaWYgKHJlYWRGcmFtZWJ1
ZmZlcikKLSAgICB7Ci0gICAgICAgIHJlYWRGcmFtZWJ1ZmZlci0+ZGV0YWNoVGV4dHVyZSh0ZXh0
dXJlKTsKLSAgICB9Ci0KLSAgICBpZiAoZHJhd0ZyYW1lYnVmZmVyICYmIGRyYXdGcmFtZWJ1ZmZl
ciAhPSByZWFkRnJhbWVidWZmZXIpCi0gICAgewotICAgICAgICBkcmF3RnJhbWVidWZmZXItPmRl
dGFjaFRleHR1cmUodGV4dHVyZSk7Ci0gICAgfQotfQotCi12b2lkIENvbnRleHQ6OmRldGFjaEZy
YW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcikKLXsKLSAgICAvLyBbT3BlbkdMIEVTIDIuMC4y
NF0gc2VjdGlvbiA0LjQgcGFnZSAxMDc6Ci0gICAgLy8gSWYgYSBmcmFtZWJ1ZmZlciB0aGF0IGlz
IGN1cnJlbnRseSBib3VuZCB0byB0aGUgdGFyZ2V0IEZSQU1FQlVGRkVSIGlzIGRlbGV0ZWQsIGl0
IGlzIGFzIHRob3VnaAotICAgIC8vIEJpbmRGcmFtZWJ1ZmZlciBoYWQgYmVlbiBleGVjdXRlZCB3
aXRoIHRoZSB0YXJnZXQgb2YgRlJBTUVCVUZGRVIgYW5kIGZyYW1lYnVmZmVyIG9mIHplcm8uCi0K
LSAgICBpZiAobVN0YXRlLnJlYWRGcmFtZWJ1ZmZlciA9PSBmcmFtZWJ1ZmZlcikKLSAgICB7Ci0g
ICAgICAgIGJpbmRSZWFkRnJhbWVidWZmZXIoMCk7Ci0gICAgfQotCi0gICAgaWYgKG1TdGF0ZS5k
cmF3RnJhbWVidWZmZXIgPT0gZnJhbWVidWZmZXIpCi0gICAgewotICAgICAgICBiaW5kRHJhd0Zy
YW1lYnVmZmVyKDApOwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpkZXRhY2hSZW5kZXJidWZm
ZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKLXsKLSAgICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2Vj
dGlvbiA0LjQgcGFnZSAxMDk6Ci0gICAgLy8gSWYgYSByZW5kZXJidWZmZXIgdGhhdCBpcyBjdXJy
ZW50bHkgYm91bmQgdG8gUkVOREVSQlVGRkVSIGlzIGRlbGV0ZWQsIGl0IGlzIGFzIHRob3VnaCBC
aW5kUmVuZGVyYnVmZmVyCi0gICAgLy8gaGFkIGJlZW4gZXhlY3V0ZWQgd2l0aCB0aGUgdGFyZ2V0
IFJFTkRFUkJVRkZFUiBhbmQgbmFtZSBvZiB6ZXJvLgotCi0gICAgaWYgKG1TdGF0ZS5yZW5kZXJi
dWZmZXIuaWQoKSA9PSByZW5kZXJidWZmZXIpCi0gICAgewotICAgICAgICBiaW5kUmVuZGVyYnVm
ZmVyKDApOwotICAgIH0KLQotICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBw
YWdlIDExMToKLSAgICAvLyBJZiBhIHJlbmRlcmJ1ZmZlciBvYmplY3QgaXMgZGVsZXRlZCB3aGls
ZSBpdHMgaW1hZ2UgaXMgYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZl
ciwKLSAgICAvLyB0aGVuIGl0IGlzIGFzIGlmIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIGhhZCBi
ZWVuIGNhbGxlZCwgd2l0aCBhIHJlbmRlcmJ1ZmZlciBvZiAwLCBmb3IgZWFjaCBhdHRhY2htZW50
Ci0gICAgLy8gcG9pbnQgdG8gd2hpY2ggdGhpcyBpbWFnZSB3YXMgYXR0YWNoZWQgaW4gdGhlIGN1
cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZlci4KLQotICAgIEZyYW1lYnVmZmVyICpyZWFkRnJhbWVi
dWZmZXIgPSBnZXRSZWFkRnJhbWVidWZmZXIoKTsKLSAgICBGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1l
YnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0KLSAgICBpZiAocmVhZEZyYW1lYnVmZmVy
KQotICAgIHsKLSAgICAgICAgcmVhZEZyYW1lYnVmZmVyLT5kZXRhY2hSZW5kZXJidWZmZXIocmVu
ZGVyYnVmZmVyKTsKLSAgICB9Ci0KLSAgICBpZiAoZHJhd0ZyYW1lYnVmZmVyICYmIGRyYXdGcmFt
ZWJ1ZmZlciAhPSByZWFkRnJhbWVidWZmZXIpCi0gICAgewotICAgICAgICBkcmF3RnJhbWVidWZm
ZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwotICAgIH0KLX0KLQotVGV4dHVy
ZSAqQ29udGV4dDo6Z2V0SW5jb21wbGV0ZVRleHR1cmUoVGV4dHVyZVR5cGUgdHlwZSkKLXsKLSAg
ICBUZXh0dXJlICp0ID0gbUluY29tcGxldGVUZXh0dXJlc1t0eXBlXS5nZXQoKTsKLQotICAgIGlm
ICh0ID09IE5VTEwpCi0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgR0x1Ynl0ZSBjb2xvcltd
ID0geyAwLCAwLCAwLCAyNTUgfTsKLQotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsK
LSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgIC8vIGRlZmF1bHQgZmFsbHMgdGhyb3VnaCB0byBURVhUVVJFXzJECi0KLSAgICAgICAgICBj
YXNlIFRFWFRVUkVfMkQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVGV4dHVyZTJE
ICppbmNvbXBsZXRlMmQgPSBuZXcgVGV4dHVyZTJEKFRleHR1cmU6OklOQ09NUExFVEVfVEVYVFVS
RV9JRCk7Ci0gICAgICAgICAgICAgICAgaW5jb21wbGV0ZTJkLT5zZXRJbWFnZSgwLCAxLCAxLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAxLCBjb2xvcik7Ci0gICAgICAgICAgICAgICAgdCA9
IGluY29tcGxldGUyZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgICAgY2FzZSBURVhUVVJFX0NVQkU6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFRl
eHR1cmVDdWJlTWFwICppbmNvbXBsZXRlQ3ViZSA9IG5ldyBUZXh0dXJlQ3ViZU1hcChUZXh0dXJl
OjpJTkNPTVBMRVRFX1RFWFRVUkVfSUQpOwotCi0gICAgICAgICAgICAgIGluY29tcGxldGVDdWJl
LT5zZXRJbWFnZVBvc1goMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29s
b3IpOwotICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VOZWdYKDAsIDEsIDEs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKLSAgICAgICAgICAgICAgaW5j
b21wbGV0ZUN1YmUtPnNldEltYWdlUG9zWSgwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCAxLCBjb2xvcik7Ci0gICAgICAgICAgICAgIGluY29tcGxldGVDdWJlLT5zZXRJbWFnZU5l
Z1koMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29sb3IpOwotICAgICAg
ICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VQb3NaKDAsIDEsIDEsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKLSAgICAgICAgICAgICAgaW5jb21wbGV0ZUN1YmUt
PnNldEltYWdlTmVnWigwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAxLCBjb2xv
cik7Ci0KLSAgICAgICAgICAgICAgdCA9IGluY29tcGxldGVDdWJlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBtSW5jb21wbGV0ZVRleHR1
cmVzW3R5cGVdLnNldCh0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdDsKLX0KLQotYm9vbCBDb250
ZXh0Ojpza2lwRHJhdyhHTGVudW0gZHJhd01vZGUpCi17Ci0gICAgaWYgKGRyYXdNb2RlID09IEdM
X1BPSU5UUykKLSAgICB7Ci0gICAgICAgIC8vIFByb2dyYW1CaW5hcnkgYXNzdW1lcyBub24tcG9p
bnQgcmVuZGVyaW5nIGlmIGdsX1BvaW50U2l6ZSBpc24ndCB3cml0dGVuLAotICAgICAgICAvLyB3
aGljaCBhZmZlY3RzIHZhcnlpbmcgaW50ZXJwb2xhdGlvbi4gU2luY2UgdGhlIHZhbHVlIG9mIGds
X1BvaW50U2l6ZSBpcwotICAgICAgICAvLyB1bmRlZmluZWQgd2hlbiBub3Qgd3JpdHRlbiwganVz
dCBza2lwIGRyYXdpbmcgdG8gYXZvaWQgdW5leHBlY3RlZCByZXN1bHRzLgotICAgICAgICBpZiAo
IWdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCktPnVzZXNQb2ludFNpemUoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgLy8gVGhpcyBpcyBzdGljdGx5IHNwZWFraW5nIG5vdCBhbiBlcnJvciwgYnV0
IGRldmVsb3BlcnMgc2hvdWxkIGJlIAotICAgICAgICAgICAgLy8gbm90aWZpZWQgb2Ygcmlza2lu
ZyB1bmRlZmluZWQgYmVoYXZpb3IuCi0gICAgICAgICAgICBFUlIoIlBvaW50IHJlbmRlcmluZyB3
aXRob3V0IHdyaXRpbmcgdG8gZ2xfUG9pbnRTaXplLiIpOwotCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChpc1RyaWFuZ2xlTW9kZShkcmF3
TW9kZSkpCi0gICAgewotICAgICAgICBpZiAobVN0YXRlLmN1bGxGYWNlICYmIG1TdGF0ZS5jdWxs
TW9kZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
Q29udGV4dDo6aXNUcmlhbmdsZU1vZGUoR0xlbnVtIGRyYXdNb2RlKQotewotICAgIHN3aXRjaCAo
ZHJhd01vZGUpCi0gICAgewotICAgICAgY2FzZSBHTF9UUklBTkdMRVM6Ci0gICAgICBjYXNlIEdM
X1RSSUFOR0xFX0ZBTjoKLSAgICAgIGNhc2UgR0xfVFJJQU5HTEVfU1RSSVA6Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9QT0lOVFM6Ci0gICAgICBjYXNlIEdMX0xJTkVTOgot
ICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6Ci0gICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIENvbnRleHQ6OnNldFZlcnRleEF0dHJpYihH
THVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKLXsKLSAgICBBU1NFUlQoaW5kZXgg
PCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKTsKLQotICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVb
aW5kZXhdLm1DdXJyZW50VmFsdWVbMF0gPSB2YWx1ZXNbMF07Ci0gICAgbVN0YXRlLnZlcnRleEF0
dHJpYnV0ZVtpbmRleF0ubUN1cnJlbnRWYWx1ZVsxXSA9IHZhbHVlc1sxXTsKLSAgICBtU3RhdGUu
dmVydGV4QXR0cmlidXRlW2luZGV4XS5tQ3VycmVudFZhbHVlWzJdID0gdmFsdWVzWzJdOwotICAg
IG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbaW5kZXhdLm1DdXJyZW50VmFsdWVbM10gPSB2YWx1ZXNb
M107Ci0KLSAgICBtVmVydGV4RGF0YU1hbmFnZXItPmRpcnR5Q3VycmVudFZhbHVlKGluZGV4KTsK
LX0KLQotdm9pZCBDb250ZXh0OjpzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdMdWludCBpbmRleCwg
R0x1aW50IGRpdmlzb3IpCi17Ci0gICAgQVNTRVJUKGluZGV4IDwgZ2w6Ok1BWF9WRVJURVhfQVRU
UklCUyk7Ci0KLSAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2luZGV4XS5tRGl2aXNvciA9IGRp
dmlzb3I7Ci19Ci0KLS8vIGtlZXAgbGlzdCBzb3J0ZWQgaW4gZm9sbG93aW5nIG9yZGVyCi0vLyBP
RVMgZXh0ZW5zaW9ucwotLy8gRVhUIGV4dGVuc2lvbnMKLS8vIFZlbmRvciBleHRlbnNpb25zCi12
b2lkIENvbnRleHQ6OmluaXRFeHRlbnNpb25TdHJpbmcoKQotewotICAgIHN0ZDo6c3RyaW5nIGV4
dGVuc2lvblN0cmluZyA9ICIiOwotCi0gICAgLy8gT0VTIGV4dGVuc2lvbnMKLSAgICBpZiAoc3Vw
cG9ydHMzMmJpdEluZGljZXMoKSkKLSAgICB7Ci0gICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAi
R0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCAiOwotICAgIH0KLQotICAgIGV4dGVuc2lvblN0cmlu
ZyArPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsICI7Ci0gICAgZXh0ZW5zaW9uU3RyaW5n
ICs9ICJHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5ICI7Ci0gICAgZXh0ZW5zaW9uU3RyaW5nICs9
ICJHTF9PRVNfcmdiOF9yZ2JhOCAiOwotICAgIGlmIChzdXBwb3J0c0Rlcml2YXRpdmVJbnN0cnVj
dGlvbnMoKSkKLSAgICB7Ci0gICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3N0YW5k
YXJkX2Rlcml2YXRpdmVzICI7Ci0gICAgfQotCi0gICAgaWYgKHN1cHBvcnRzRmxvYXQxNlRleHR1
cmVzKCkpCi0gICAgewotICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU190ZXh0dXJl
X2hhbGZfZmxvYXQgIjsKLSAgICB9Ci0gICAgaWYgKHN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRl
cigpKQotICAgIHsKLSAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0X2xpbmVhciAiOwotICAgIH0KLSAgICBpZiAoc3VwcG9ydHNGbG9hdDMyVGV4dHVy
ZXMoKSkKLSAgICB7Ci0gICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3RleHR1cmVf
ZmxvYXQgIjsKLSAgICB9Ci0gICAgaWYgKHN1cHBvcnRzRmxvYXQzMkxpbmVhckZpbHRlcigpKQot
ICAgIHsKLSAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIgIjsKLSAgICB9Ci0KLSAgICBpZiAoc3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCi0g
ICAgewotICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU190ZXh0dXJlX25wb3QgIjsK
LSAgICB9Ci0KLSAgICAvLyBNdWx0aS12ZW5kb3IgKEVYVCkgZXh0ZW5zaW9ucwotICAgIGlmIChz
dXBwb3J0c09jY2x1c2lvblF1ZXJpZXMoKSkKLSAgICB7Ci0gICAgICAgIGV4dGVuc2lvblN0cmlu
ZyArPSAiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuICI7Ci0gICAgfQotCi0gICAgZXh0
ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSAiOwotICAgIGV4dGVuc2lv
blN0cmluZyArPSAiR0xfRVhUX3JvYnVzdG5lc3MgIjsKLQotICAgIGlmIChzdXBwb3J0c0RYVDFU
ZXh0dXJlcygpKQotICAgIHsKLSAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQxICI7Ci0gICAgfQotCi0gICAgaWYgKHN1cHBvcnRzVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcHkoKSkKLSAgICB7Ci0gICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAi
R0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljICI7Ci0gICAgfQotCi0gICAgZXh0ZW5z
aW9uU3RyaW5nICs9ICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggIjsKLSAgICBleHRl
bnNpb25TdHJpbmcgKz0gIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UgIjsKLSAgICBleHRlbnNpb25T
dHJpbmcgKz0gIkdMX0VYVF9mcmFnX2RlcHRoICI7Ci0KLSAgICAvLyBBTkdMRS1zcGVjaWZpYyBl
eHRlbnNpb25zCi0gICAgaWYgKHN1cHBvcnRzRGVwdGhUZXh0dXJlcygpKQotICAgIHsKLSAgICAg
ICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV9kZXB0aF90ZXh0dXJlICI7Ci0gICAgfQot
Ci0gICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0ICI7Ci0g
ICAgaWYgKGdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSAhPSAwKQotICAgIHsKLSAgICAgICAgZXh0
ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSAiOwotICAg
IH0KLQotICAgIGlmIChzdXBwb3J0c0luc3RhbmNpbmcoKSkKLSAgICB7Ci0gICAgICAgIGV4dGVu
c2lvblN0cmluZyArPSAiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyAiOwotICAgIH0KLQotICAg
IGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfcGFja19yZXZlcnNlX3Jvd19vcmRlciAiOwot
Ci0gICAgaWYgKHN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCi0gICAgewotICAgICAgICBleHRlbnNp
b25TdHJpbmcgKz0gIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyAiOwotICAgIH0K
LSAgICBpZiAoc3VwcG9ydHNEWFQ1VGV4dHVyZXMoKSkKLSAgICB7Ci0gICAgICAgIGV4dGVuc2lv
blN0cmluZyArPSAiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1ICI7Ci0gICAgfQot
Ci0gICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV90ZXh0dXJlX3VzYWdlICI7Ci0gICAg
ZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UgIjsK
LQotICAgIC8vIE90aGVyIHZlbmRvci1zcGVjaWZpYyBleHRlbnNpb25zCi0gICAgaWYgKHN1cHBv
cnRzRXZlbnRRdWVyaWVzKCkpCi0gICAgewotICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdM
X05WX2ZlbmNlICI7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQgPSBl
eHRlbnNpb25TdHJpbmcuZmluZF9sYXN0X25vdF9vZignICcpOwotICAgIGlmIChlbmQgIT0gc3Rk
OjpzdHJpbmc6Om5wb3MpCi0gICAgewotICAgICAgICBleHRlbnNpb25TdHJpbmcucmVzaXplKGVu
ZCsxKTsKLSAgICB9Ci0KLSAgICBtRXh0ZW5zaW9uU3RyaW5nID0gbWFrZVN0YXRpY1N0cmluZyhl
eHRlbnNpb25TdHJpbmcpOwotfQotCi1jb25zdCBjaGFyICpDb250ZXh0OjpnZXRFeHRlbnNpb25T
dHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtRXh0ZW5zaW9uU3RyaW5nOwotfQotCi12b2lk
IENvbnRleHQ6OmluaXRSZW5kZXJlclN0cmluZygpCi17Ci0gICAgRDNEQURBUFRFUl9JREVOVElG
SUVSOSAqaWRlbnRpZmllciA9IG1EaXNwbGF5LT5nZXRBZGFwdGVySWRlbnRpZmllcigpOwotCi0g
ICAgc3RkOjpvc3RyaW5nc3RyZWFtIHJlbmRlcmVyU3RyaW5nOwotICAgIHJlbmRlcmVyU3RyaW5n
IDw8ICJBTkdMRSAoIjsKLQotICAgIHJlbmRlcmVyU3RyaW5nIDw8IGlkZW50aWZpZXItPkRlc2Ny
aXB0aW9uOwotCi0gICAgaWYgKG1EaXNwbGF5LT5pc0QzZDlFeERldmljZSgpKQotICAgIHsKLSAg
ICAgICAgcmVuZGVyZXJTdHJpbmcgPDwgIiBEaXJlY3QzRDlFeCI7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgRGlyZWN0M0Q5IjsKLSAgICB9Ci0K
LSAgICByZW5kZXJlclN0cmluZyA8PCAiIHZzXyIgPDwgRDNEU0hBREVSX1ZFUlNJT05fTUFKT1Io
bURldmljZUNhcHMuVmVydGV4U2hhZGVyVmVyc2lvbikgPDwgIl8iIDw8IEQzRFNIQURFUl9WRVJT
SU9OX01JTk9SKG1EZXZpY2VDYXBzLlZlcnRleFNoYWRlclZlcnNpb24pOwotICAgIHJlbmRlcmVy
U3RyaW5nIDw8ICIgcHNfIiA8PCBEM0RTSEFERVJfVkVSU0lPTl9NQUpPUihtRGV2aWNlQ2Fwcy5Q
aXhlbFNoYWRlclZlcnNpb24pIDw8ICJfIiA8PCBEM0RTSEFERVJfVkVSU0lPTl9NSU5PUihtRGV2
aWNlQ2Fwcy5QaXhlbFNoYWRlclZlcnNpb24pIDw8ICIpIjsKLQotICAgIG1SZW5kZXJlclN0cmlu
ZyA9IG1ha2VTdGF0aWNTdHJpbmcocmVuZGVyZXJTdHJpbmcuc3RyKCkpOwotfQotCi1jb25zdCBj
aGFyICpDb250ZXh0OjpnZXRSZW5kZXJlclN0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1S
ZW5kZXJlclN0cmluZzsKLX0KLQotdm9pZCBDb250ZXh0OjpibGl0RnJhbWVidWZmZXIoR0xpbnQg
c3JjWDAsIEdMaW50IHNyY1kwLCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RY
MSwgR0xpbnQgZHN0WTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxk
IG1hc2spCi17Ci0gICAgRnJhbWVidWZmZXIgKnJlYWRGcmFtZWJ1ZmZlciA9IGdldFJlYWRGcmFt
ZWJ1ZmZlcigpOwotICAgIEZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBnZXREcmF3RnJh
bWVidWZmZXIoKTsKLQotICAgIGlmICghcmVhZEZyYW1lYnVmZmVyIHx8IHJlYWRGcmFtZWJ1ZmZl
ci0+Y29tcGxldGVuZXNzKCkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUgfHwKLSAgICAgICAg
IWRyYXdGcmFtZWJ1ZmZlciB8fCBkcmF3RnJhbWVidWZmZXItPmNvbXBsZXRlbmVzcygpICE9IEdM
X0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKLSAgICB9Ci0KLSAgICBpZiAoZHJhd0ZyYW1l
YnVmZmVyLT5nZXRTYW1wbGVzKCkgIT0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgfQotCi0gICAgaW50IHJlYWRCdWZmZXJXaWR0aCA9
IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0V2lkdGgoKTsKLSAgICBpbnQg
cmVhZEJ1ZmZlckhlaWdodCA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0
SGVpZ2h0KCk7Ci0gICAgaW50IGRyYXdCdWZmZXJXaWR0aCA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0
Q29sb3JidWZmZXIoKS0+Z2V0V2lkdGgoKTsKLSAgICBpbnQgZHJhd0J1ZmZlckhlaWdodCA9IGRy
YXdGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0SGVpZ2h0KCk7Ci0KLSAgICBSRUNU
IHNvdXJjZVJlY3Q7Ci0gICAgUkVDVCBkZXN0UmVjdDsKLQotICAgIGlmIChzcmNYMCA8IHNyY1gx
KQotICAgIHsKLSAgICAgICAgc291cmNlUmVjdC5sZWZ0ID0gc3JjWDA7Ci0gICAgICAgIHNvdXJj
ZVJlY3QucmlnaHQgPSBzcmNYMTsKLSAgICAgICAgZGVzdFJlY3QubGVmdCA9IGRzdFgwOwotICAg
ICAgICBkZXN0UmVjdC5yaWdodCA9IGRzdFgxOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBzb3VyY2VSZWN0LmxlZnQgPSBzcmNYMTsKLSAgICAgICAgZGVzdFJlY3QubGVmdCA9IGRz
dFgxOwotICAgICAgICBzb3VyY2VSZWN0LnJpZ2h0ID0gc3JjWDA7Ci0gICAgICAgIGRlc3RSZWN0
LnJpZ2h0ID0gZHN0WDA7Ci0gICAgfQotCi0gICAgaWYgKHNyY1kwIDwgc3JjWTEpCi0gICAgewot
ICAgICAgICBzb3VyY2VSZWN0LmJvdHRvbSA9IHNyY1kxOwotICAgICAgICBkZXN0UmVjdC5ib3R0
b20gPSBkc3RZMTsKLSAgICAgICAgc291cmNlUmVjdC50b3AgPSBzcmNZMDsKLSAgICAgICAgZGVz
dFJlY3QudG9wID0gZHN0WTA7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHNvdXJj
ZVJlY3QuYm90dG9tID0gc3JjWTA7Ci0gICAgICAgIGRlc3RSZWN0LmJvdHRvbSA9IGRzdFkwOwot
ICAgICAgICBzb3VyY2VSZWN0LnRvcCA9IHNyY1kxOwotICAgICAgICBkZXN0UmVjdC50b3AgPSBk
c3RZMTsKLSAgICB9Ci0KLSAgICBSRUNUIHNvdXJjZVNjaXNzb3JlZFJlY3QgPSBzb3VyY2VSZWN0
OwotICAgIFJFQ1QgZGVzdFNjaXNzb3JlZFJlY3QgPSBkZXN0UmVjdDsKLQotICAgIGlmIChtU3Rh
dGUuc2Npc3NvclRlc3QpCi0gICAgewotICAgICAgICAvLyBPbmx5IHdyaXRlIHRvIHBhcnRzIG9m
IHRoZSBkZXN0aW5hdGlvbiBmcmFtZWJ1ZmZlciB3aGljaCBwYXNzIHRoZSBzY2lzc29yIHRlc3QK
LSAgICAgICAgLy8gUGxlYXNlIG5vdGU6IHRoZSBkZXN0UmVjdCBpcyBub3cgaW4gRDNELXN0eWxl
IGNvb3JkaW5hdGVzLCBzbyB0aGUgKnRvcCogb2YgdGhlCi0gICAgICAgIC8vIHJlY3Qgd2lsbCBi
ZSBjaGVja2VkIGFnYWluc3Qgc2Npc3NvclksIHJhdGhlciB0aGFuIHRoZSBib3R0b20uCi0gICAg
ICAgIGlmIChkZXN0UmVjdC5sZWZ0IDwgbVN0YXRlLnNjaXNzb3JYKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbnQgeERpZmYgPSBtU3RhdGUuc2Npc3NvclggLSBkZXN0UmVjdC5sZWZ0OwotICAg
ICAgICAgICAgZGVzdFNjaXNzb3JlZFJlY3QubGVmdCA9IG1TdGF0ZS5zY2lzc29yWDsKLSAgICAg
ICAgICAgIHNvdXJjZVNjaXNzb3JlZFJlY3QubGVmdCArPSB4RGlmZjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChkZXN0UmVjdC5yaWdodCA+IG1TdGF0ZS5zY2lzc29yWCArIG1TdGF0ZS5zY2lz
c29yV2lkdGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB4RGlmZiA9IGRlc3RSZWN0LnJp
Z2h0IC0gKG1TdGF0ZS5zY2lzc29yWCArIG1TdGF0ZS5zY2lzc29yV2lkdGgpOwotICAgICAgICAg
ICAgZGVzdFNjaXNzb3JlZFJlY3QucmlnaHQgPSBtU3RhdGUuc2Npc3NvclggKyBtU3RhdGUuc2Np
c3NvcldpZHRoOwotICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC5yaWdodCAtPSB4RGlm
ZjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZXN0UmVjdC50b3AgPCBtU3RhdGUuc2Npc3Nv
clkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCB5RGlmZiA9IG1TdGF0ZS5zY2lzc29yWSAt
IGRlc3RSZWN0LnRvcDsKLSAgICAgICAgICAgIGRlc3RTY2lzc29yZWRSZWN0LnRvcCA9IG1TdGF0
ZS5zY2lzc29yWTsKLSAgICAgICAgICAgIHNvdXJjZVNjaXNzb3JlZFJlY3QudG9wICs9IHlEaWZm
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlc3RSZWN0LmJvdHRvbSA+IG1TdGF0ZS5zY2lz
c29yWSArIG1TdGF0ZS5zY2lzc29ySGVpZ2h0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
eURpZmYgPSBkZXN0UmVjdC5ib3R0b20gLSAobVN0YXRlLnNjaXNzb3JZICsgbVN0YXRlLnNjaXNz
b3JIZWlnaHQpOwotICAgICAgICAgICAgZGVzdFNjaXNzb3JlZFJlY3QuYm90dG9tID0gbVN0YXRl
LnNjaXNzb3JZICsgbVN0YXRlLnNjaXNzb3JIZWlnaHQ7Ci0gICAgICAgICAgICBzb3VyY2VTY2lz
c29yZWRSZWN0LmJvdHRvbSAtPSB5RGlmZjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wg
YmxpdFJlbmRlclRhcmdldCA9IGZhbHNlOwotICAgIGJvb2wgYmxpdERlcHRoU3RlbmNpbCA9IGZh
bHNlOwotCi0gICAgUkVDVCBzb3VyY2VUcmltbWVkUmVjdCA9IHNvdXJjZVNjaXNzb3JlZFJlY3Q7
Ci0gICAgUkVDVCBkZXN0VHJpbW1lZFJlY3QgPSBkZXN0U2Npc3NvcmVkUmVjdDsKLQotICAgIC8v
IFRoZSBzb3VyY2UgJiBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIGFsc28gbWF5IG5lZWQgdG8gYmUg
dHJpbW1lZCBpZiB0aGV5IGZhbGwgb3V0IG9mIHRoZSBib3VuZHMgb2YgCi0gICAgLy8gdGhlIGFj
dHVhbCBkcmF3IGFuZCByZWFkIHN1cmZhY2VzLgotICAgIGlmIChzb3VyY2VUcmltbWVkUmVjdC5s
ZWZ0IDwgMCkKLSAgICB7Ci0gICAgICAgIGludCB4RGlmZiA9IDAgLSBzb3VyY2VUcmltbWVkUmVj
dC5sZWZ0OwotICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC5sZWZ0ID0gMDsKLSAgICAgICAgZGVz
dFRyaW1tZWRSZWN0LmxlZnQgKz0geERpZmY7Ci0gICAgfQotCi0gICAgaWYgKHNvdXJjZVRyaW1t
ZWRSZWN0LnJpZ2h0ID4gcmVhZEJ1ZmZlcldpZHRoKQotICAgIHsKLSAgICAgICAgaW50IHhEaWZm
ID0gc291cmNlVHJpbW1lZFJlY3QucmlnaHQgLSByZWFkQnVmZmVyV2lkdGg7Ci0gICAgICAgIHNv
dXJjZVRyaW1tZWRSZWN0LnJpZ2h0ID0gcmVhZEJ1ZmZlcldpZHRoOwotICAgICAgICBkZXN0VHJp
bW1lZFJlY3QucmlnaHQgLT0geERpZmY7Ci0gICAgfQotCi0gICAgaWYgKHNvdXJjZVRyaW1tZWRS
ZWN0LnRvcCA8IDApCi0gICAgewotICAgICAgICBpbnQgeURpZmYgPSAwIC0gc291cmNlVHJpbW1l
ZFJlY3QudG9wOwotICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC50b3AgPSAwOwotICAgICAgICBk
ZXN0VHJpbW1lZFJlY3QudG9wICs9IHlEaWZmOwotICAgIH0KLQotICAgIGlmIChzb3VyY2VUcmlt
bWVkUmVjdC5ib3R0b20gPiByZWFkQnVmZmVySGVpZ2h0KQotICAgIHsKLSAgICAgICAgaW50IHlE
aWZmID0gc291cmNlVHJpbW1lZFJlY3QuYm90dG9tIC0gcmVhZEJ1ZmZlckhlaWdodDsKLSAgICAg
ICAgc291cmNlVHJpbW1lZFJlY3QuYm90dG9tID0gcmVhZEJ1ZmZlckhlaWdodDsKLSAgICAgICAg
ZGVzdFRyaW1tZWRSZWN0LmJvdHRvbSAtPSB5RGlmZjsKLSAgICB9Ci0KLSAgICBpZiAoZGVzdFRy
aW1tZWRSZWN0LmxlZnQgPCAwKQotICAgIHsKLSAgICAgICAgaW50IHhEaWZmID0gMCAtIGRlc3RU
cmltbWVkUmVjdC5sZWZ0OwotICAgICAgICBkZXN0VHJpbW1lZFJlY3QubGVmdCA9IDA7Ci0gICAg
ICAgIHNvdXJjZVRyaW1tZWRSZWN0LmxlZnQgKz0geERpZmY7Ci0gICAgfQotCi0gICAgaWYgKGRl
c3RUcmltbWVkUmVjdC5yaWdodCA+IGRyYXdCdWZmZXJXaWR0aCkKLSAgICB7Ci0gICAgICAgIGlu
dCB4RGlmZiA9IGRlc3RUcmltbWVkUmVjdC5yaWdodCAtIGRyYXdCdWZmZXJXaWR0aDsKLSAgICAg
ICAgZGVzdFRyaW1tZWRSZWN0LnJpZ2h0ID0gZHJhd0J1ZmZlcldpZHRoOwotICAgICAgICBzb3Vy
Y2VUcmltbWVkUmVjdC5yaWdodCAtPSB4RGlmZjsKLSAgICB9Ci0KLSAgICBpZiAoZGVzdFRyaW1t
ZWRSZWN0LnRvcCA8IDApCi0gICAgewotICAgICAgICBpbnQgeURpZmYgPSAwIC0gZGVzdFRyaW1t
ZWRSZWN0LnRvcDsKLSAgICAgICAgZGVzdFRyaW1tZWRSZWN0LnRvcCA9IDA7Ci0gICAgICAgIHNv
dXJjZVRyaW1tZWRSZWN0LnRvcCArPSB5RGlmZjsKLSAgICB9Ci0KLSAgICBpZiAoZGVzdFRyaW1t
ZWRSZWN0LmJvdHRvbSA+IGRyYXdCdWZmZXJIZWlnaHQpCi0gICAgewotICAgICAgICBpbnQgeURp
ZmYgPSBkZXN0VHJpbW1lZFJlY3QuYm90dG9tIC0gZHJhd0J1ZmZlckhlaWdodDsKLSAgICAgICAg
ZGVzdFRyaW1tZWRSZWN0LmJvdHRvbSA9IGRyYXdCdWZmZXJIZWlnaHQ7Ci0gICAgICAgIHNvdXJj
ZVRyaW1tZWRSZWN0LmJvdHRvbSAtPSB5RGlmZjsKLSAgICB9Ci0KLSAgICBib29sIHBhcnRpYWxC
dWZmZXJDb3B5ID0gZmFsc2U7Ci0gICAgaWYgKHNvdXJjZVRyaW1tZWRSZWN0LmJvdHRvbSAtIHNv
dXJjZVRyaW1tZWRSZWN0LnRvcCA8IHJlYWRCdWZmZXJIZWlnaHQgfHwKLSAgICAgICAgc291cmNl
VHJpbW1lZFJlY3QucmlnaHQgLSBzb3VyY2VUcmltbWVkUmVjdC5sZWZ0IDwgcmVhZEJ1ZmZlcldp
ZHRoIHx8IAotICAgICAgICBkZXN0VHJpbW1lZFJlY3QuYm90dG9tIC0gZGVzdFRyaW1tZWRSZWN0
LnRvcCA8IGRyYXdCdWZmZXJIZWlnaHQgfHwKLSAgICAgICAgZGVzdFRyaW1tZWRSZWN0LnJpZ2h0
IC0gZGVzdFRyaW1tZWRSZWN0LmxlZnQgPCBkcmF3QnVmZmVyV2lkdGggfHwKLSAgICAgICAgc291
cmNlVHJpbW1lZFJlY3QudG9wICE9IDAgfHwgZGVzdFRyaW1tZWRSZWN0LnRvcCAhPSAwIHx8IHNv
dXJjZVRyaW1tZWRSZWN0LmxlZnQgIT0gMCB8fCBkZXN0VHJpbW1lZFJlY3QubGVmdCAhPSAwKQot
ICAgIHsKLSAgICAgICAgcGFydGlhbEJ1ZmZlckNvcHkgPSB0cnVlOwotICAgIH0KLQotICAgIGlm
IChtYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGJvb2wg
dmFsaWRSZWFkVHlwZSA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKCkgPT0g
R0xfVEVYVFVSRV8yRCB8fAotICAgICAgICAgICAgcmVhZEZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1
ZmZlclR5cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVI7Ci0gICAgICAgIGNvbnN0IGJvb2wgdmFsaWRE
cmF3VHlwZSA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKCkgPT0gR0xfVEVY
VFVSRV8yRCB8fAotICAgICAgICAgICAgZHJhd0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlclR5
cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVI7Ci0gICAgICAgIGlmICghdmFsaWRSZWFkVHlwZSB8fCAh
dmFsaWREcmF3VHlwZSB8fAotICAgICAgICAgICAgcmVhZEZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1
ZmZlcigpLT5nZXREM0RGb3JtYXQoKSAhPSBkcmF3RnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVy
KCktPmdldEQzREZvcm1hdCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIkNvbG9yIGJ1
ZmZlciBmb3JtYXQgY29udmVyc2lvbiBpbiBCbGl0RnJhbWVidWZmZXJBTkdMRSBub3Qgc3VwcG9y
dGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24iKTsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChw
YXJ0aWFsQnVmZmVyQ29weSAmJiByZWFkRnJhbWVidWZmZXItPmdldFNhbXBsZXMoKSAhPSAwKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotICAgICAgICB9Ci0KLSAgICAgICAgYmxpdFJlbmRlclRhcmdldCA9IHRydWU7Ci0KLSAgICB9
Ci0KLSAgICBpZiAobWFzayAmIChHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZG
RVJfQklUKSkKLSAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVhZERTQnVmZmVyID0gTlVM
TDsKLSAgICAgICAgUmVuZGVyYnVmZmVyICpkcmF3RFNCdWZmZXIgPSBOVUxMOwotCi0gICAgICAg
IC8vIFdlIHN1cHBvcnQgT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsLCBhbmQgZG8gbm90IHN1cHBv
cnQgYSBzZXBhcmF0ZWx5IGF0dGFjaGVkIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlciwgc28gaWYg
d2UgaGF2ZQotICAgICAgICAvLyBib3RoIGEgZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVyLCBpdCB3
aWxsIGJlIHRoZSBzYW1lIGJ1ZmZlci4KLQotICAgICAgICBpZiAobWFzayAmIEdMX0RFUFRIX0JV
RkZFUl9CSVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmdl
dERlcHRoYnVmZmVyKCkgJiYgZHJhd0ZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmdldERlcHRo
YnVmZmVyVHlwZSgpICE9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXJUeXBlKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgcmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigpLT5n
ZXREM0RGb3JtYXQoKSAhPSBkcmF3RnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCktPmdldEQz
REZvcm1hdCgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBibGl0RGVwdGhTdGVuY2lsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZWFk
RFNCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCk7Ci0gICAgICAgICAg
ICAgICAgZHJhd0RTQnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1hc2sgJiBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyZWFkRnJhbWVidWZmZXIt
PmdldFN0ZW5jaWxidWZmZXIoKSAmJiBkcmF3RnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIo
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5n
ZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZl
clR5cGUoKSB8fAotICAgICAgICAgICAgICAgICAgICByZWFkRnJhbWVidWZmZXItPmdldFN0ZW5j
aWxidWZmZXIoKS0+Z2V0RDNERm9ybWF0KCkgIT0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRTdGVuY2ls
YnVmZmVyKCktPmdldEQzREZvcm1hdCgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBibGl0RGVwdGhTdGVuY2lsID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICByZWFkRFNCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZm
ZXIoKTsKLSAgICAgICAgICAgICAgICBkcmF3RFNCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdl
dFN0ZW5jaWxidWZmZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChwYXJ0aWFsQnVmZmVyQ29weSkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCJPbmx5IHdo
b2xlLWJ1ZmZlciBkZXB0aCBhbmQgc3RlbmNpbCBibGl0cyBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMg
aW1wbGVtZW50YXRpb24uIik7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOyAvLyBvbmx5IHdob2xlLWJ1ZmZlciBjb3BpZXMgYXJlIHBlcm1pdHRlZAotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKChkcmF3RFNCdWZmZXIgJiYgZHJhd0RTQnVmZmVyLT5nZXRT
YW1wbGVzKCkgIT0gMCkgfHwgCi0gICAgICAgICAgICAocmVhZERTQnVmZmVyICYmIHJlYWREU0J1
ZmZlci0+Z2V0U2FtcGxlcygpICE9IDApKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYg
KGJsaXRSZW5kZXJUYXJnZXQgfHwgYmxpdERlcHRoU3RlbmNpbCkKLSAgICB7Ci0gICAgICAgIG1E
aXNwbGF5LT5lbmRTY2VuZSgpOwotCi0gICAgICAgIGlmIChibGl0UmVuZGVyVGFyZ2V0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSogcmVhZFJlbmRlclRhcmdldCA9
IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCk7Ci0gICAgICAgICAgICBJRGlyZWN0
M0RTdXJmYWNlOSogZHJhd1JlbmRlclRhcmdldCA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0UmVuZGVy
VGFyZ2V0KCk7Ci0KLSAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+U3RyZXRj
aFJlY3QocmVhZFJlbmRlclRhcmdldCwgJnNvdXJjZVRyaW1tZWRSZWN0LCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1JlbmRlclRhcmdldCwg
JmRlc3RUcmltbWVkUmVjdCwgRDNEVEVYRl9OT05FKTsKLQotICAgICAgICAgICAgcmVhZFJlbmRl
clRhcmdldC0+UmVsZWFzZSgpOwotICAgICAgICAgICAgZHJhd1JlbmRlclRhcmdldC0+UmVsZWFz
ZSgpOwotCi0gICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgRVJSKCJCbGl0RnJhbWVidWZmZXJBTkdMRSBmYWlsZWQ6IFN0cmV0Y2hS
ZWN0IHJldHVybmVkICV4LiIsIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJsaXREZXB0aFN0ZW5jaWwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5KiByZWFkRGVwdGhTdGVuY2ls
ID0gcmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKTsKLSAgICAgICAgICAgIElEaXJl
Y3QzRFN1cmZhY2U5KiBkcmF3RGVwdGhTdGVuY2lsID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXREZXB0
aFN0ZW5jaWwoKTsKLQotICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5TdHJl
dGNoUmVjdChyZWFkRGVwdGhTdGVuY2lsLCBOVUxMLCBkcmF3RGVwdGhTdGVuY2lsLCBOVUxMLCBE
M0RURVhGX05PTkUpOwotCi0gICAgICAgICAgICByZWFkRGVwdGhTdGVuY2lsLT5SZWxlYXNlKCk7
Ci0gICAgICAgICAgICBkcmF3RGVwdGhTdGVuY2lsLT5SZWxlYXNlKCk7Ci0KLSAgICAgICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFUlIo
IkJsaXRGcmFtZWJ1ZmZlckFOR0xFIGZhaWxlZDogU3RyZXRjaFJlY3QgcmV0dXJuZWQgJXguIiwg
cmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLVZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OlZlcnRleERlY2xhcmF0aW9u
Q2FjaGUoKSA6IG1NYXhMcnUoMCkKLXsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9WRVJU
RVhfREVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCi0gICAgewotICAgICAgICBtVmVydGV4RGVjbENh
Y2hlW2ldLnZlcnRleERlY2xhcmF0aW9uID0gTlVMTDsKLSAgICAgICAgbVZlcnRleERlY2xDYWNo
ZVtpXS5scnVDb3VudCA9IDA7Ci0gICAgfQotfQotCi1WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjp+
VmVydGV4RGVjbGFyYXRpb25DYWNoZSgpCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1f
VkVSVEVYX0RFQ0xfQ0FDSEVfRU5UUklFUzsgaSsrKQotICAgIHsKLSAgICAgICAgaWYgKG1WZXJ0
ZXhEZWNsQ2FjaGVbaV0udmVydGV4RGVjbGFyYXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1WZXJ0ZXhEZWNsQ2FjaGVbaV0udmVydGV4RGVjbGFyYXRpb24tPlJlbGVhc2UoKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotR0xlbnVtIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVj
bGFyYXRpb24oSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0
dHJpYnV0ZXNbXSwgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgR0xzaXplaSBpbnN0YW5j
ZXMsIEdMc2l6ZWkgKnJlcGVhdERyYXcpCi17Ci0gICAgKnJlcGVhdERyYXcgPSAxOwotCi0gICAg
aW50IGluZGV4ZWRBdHRyaWJ1dGUgPSBNQVhfVkVSVEVYX0FUVFJJQlM7Ci0gICAgaW50IGluc3Rh
bmNlZEF0dHJpYnV0ZSA9IE1BWF9WRVJURVhfQVRUUklCUzsKLQotICAgIGlmIChpbnN0YW5jZXMg
PiAwKQotICAgIHsKLSAgICAgICAgLy8gRmluZCBhbiBpbmRleGVkIGF0dHJpYnV0ZSB0byBiZSBt
YXBwZWQgdG8gRDNEIHN0cmVhbSAwCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZF
UlRFWF9BVFRSSUJTOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
W2ldLmFjdGl2ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5kZXhlZEF0
dHJpYnV0ZSA9PSBNQVhfVkVSVEVYX0FUVFJJQlMpCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlc1tpXS5kaXZpc29yID09IDApCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZWRBdHRyaWJ1dGUgPSBp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBNQVhfVkVSVEVYX0FUVFJJQlMpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlc1tpXS5k
aXZpc29yICE9IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGluc3RhbmNlZEF0dHJpYnV0ZSA9IGk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBicmVhazsgICAvLyBGb3VuZCBib3Ro
IGFuIGluZGV4ZWQgYW5kIGluc3RhbmNlZCBhdHRyaWJ1dGUKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChpbmRleGVkQXR0cmlidXRlID09IE1BWF9WRVJURVhfQVRUUklC
UykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgRDNEVkVSVEVYRUxFTUVOVDkgZWxlbWVudHNbTUFYX1ZF
UlRFWF9BVFRSSUJTICsgMV07Ci0gICAgRDNEVkVSVEVYRUxFTUVOVDkgKmVsZW1lbnQgPSAmZWxl
bWVudHNbMF07Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsg
aSsrKQotICAgIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uYWN0aXZlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnQgc3RyZWFtID0gaTsKLQotICAgICAgICAgICAgaWYgKGluc3RhbmNl
cyA+IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gRHVlIHRvIGEgYnVnIG9u
IEFUSSBjYXJkcyB3ZSBjYW4ndCBlbmFibGUgaW5zdGFuY2luZyB3aGVuIG5vbmUgb2YgdGhlIGF0
dHJpYnV0ZXMgYXJlIGluc3RhbmNlZC4KLSAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2VkQXR0
cmlidXRlID09IE1BWF9WRVJURVhfQVRUUklCUykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICpyZXBlYXREcmF3ID0gaW5zdGFuY2VzOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaSA9PSBpbmRleGVkQXR0cmlidXRlKQotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPSAwOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPT0gMCkKLSAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtID0gaW5kZXhlZEF0dHJpYnV0ZTsK
LSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIFVJTlQgZnJlcXVl
bmN5ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChh
dHRyaWJ1dGVzW2ldLmRpdmlzb3IgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5ID0gRDNEU1RSRUFNU09VUkNFX0lOREVYRUREQVRB
IHwgaW5zdGFuY2VzOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZnJl
cXVlbmN5ID0gRDNEU1RSRUFNU09VUkNFX0lOU1RBTkNFREFUQSB8IGF0dHJpYnV0ZXNbaV0uZGl2
aXNvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2VGcmVxKHN0cmVhbSwgZnJlcXVl
bmN5KTsKLSAgICAgICAgICAgICAgICAgICAgbUluc3RhbmNpbmdFbmFibGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtQXBwbGll
ZFZCc1tzdHJlYW1dLnNlcmlhbCAhPSBhdHRyaWJ1dGVzW2ldLnNlcmlhbCB8fAotICAgICAgICAg
ICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0uc3RyaWRlICE9IGF0dHJpYnV0ZXNbaV0uc3RyaWRl
IHx8Ci0gICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5vZmZzZXQgIT0gYXR0cmli
dXRlc1tpXS5vZmZzZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGV2aWNlLT5T
ZXRTdHJlYW1Tb3VyY2Uoc3RyZWFtLCBhdHRyaWJ1dGVzW2ldLnZlcnRleEJ1ZmZlciwgYXR0cmli
dXRlc1tpXS5vZmZzZXQsIGF0dHJpYnV0ZXNbaV0uc3RyaWRlKTsKLSAgICAgICAgICAgICAgICBt
QXBwbGllZFZCc1tzdHJlYW1dLnNlcmlhbCA9IGF0dHJpYnV0ZXNbaV0uc2VyaWFsOwotICAgICAg
ICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0uc3RyaWRlID0gYXR0cmlidXRlc1tpXS5zdHJp
ZGU7Ci0gICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5vZmZzZXQgPSBhdHRyaWJ1
dGVzW2ldLm9mZnNldDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZWxlbWVudC0+U3Ry
ZWFtID0gc3RyZWFtOwotICAgICAgICAgICAgZWxlbWVudC0+T2Zmc2V0ID0gMDsKLSAgICAgICAg
ICAgIGVsZW1lbnQtPlR5cGUgPSBhdHRyaWJ1dGVzW2ldLnR5cGU7Ci0gICAgICAgICAgICBlbGVt
ZW50LT5NZXRob2QgPSBEM0RERUNMTUVUSE9EX0RFRkFVTFQ7Ci0gICAgICAgICAgICBlbGVtZW50
LT5Vc2FnZSA9IEQzRERFQ0xVU0FHRV9URVhDT09SRDsKLSAgICAgICAgICAgIGVsZW1lbnQtPlVz
YWdlSW5kZXggPSBwcm9ncmFtQmluYXJ5LT5nZXRTZW1hbnRpY0luZGV4KGkpOwotICAgICAgICAg
ICAgZWxlbWVudCsrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGluc3RhbmNlcyA9PSAw
IHx8IGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBNQVhfVkVSVEVYX0FUVFJJQlMpCi0gICAgewotICAg
ICAgICBpZiAobUluc3RhbmNpbmdFbmFibGVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291cmNlRnJlcShpLCAxKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgbUluc3RhbmNpbmdFbmFibGVkID0gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgRDNEVkVSVEVYRUxFTUVOVDkgZW5kID0g
RDNEREVDTF9FTkQoKTsKLSAgICAqKGVsZW1lbnQrKykgPSBlbmQ7Ci0KLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IE5VTV9WRVJURVhfREVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCi0gICAgewotICAg
ICAgICBWZXJ0ZXhEZWNsQ2FjaGVFbnRyeSAqZW50cnkgPSAmbVZlcnRleERlY2xDYWNoZVtpXTsK
LSAgICAgICAgaWYgKG1lbWNtcChlbnRyeS0+Y2FjaGVkRWxlbWVudHMsIGVsZW1lbnRzLCAoZWxl
bWVudCAtIGVsZW1lbnRzKSAqIHNpemVvZihEM0RWRVJURVhFTEVNRU5UOSkpID09IDAgJiYgZW50
cnktPnZlcnRleERlY2xhcmF0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbnRyeS0+bHJ1
Q291bnQgPSArK21NYXhMcnU7Ci0gICAgICAgICAgICBpZihlbnRyeS0+dmVydGV4RGVjbGFyYXRp
b24gIT0gbUxhc3RTZXRWRGVjbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXZp
Y2UtPlNldFZlcnRleERlY2xhcmF0aW9uKGVudHJ5LT52ZXJ0ZXhEZWNsYXJhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgbUxhc3RTZXRWRGVjbCA9IGVudHJ5LT52ZXJ0ZXhEZWNsYXJhdGlvbjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIEdMX05PX0VSUk9SOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgVmVydGV4RGVjbENhY2hlRW50cnkgKmxhc3RDYWNoZSA9IG1WZXJ0ZXhE
ZWNsQ2FjaGU7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9WRVJURVhfREVDTF9DQUNI
RV9FTlRSSUVTOyBpKyspCi0gICAgewotICAgICAgICBpZiAobVZlcnRleERlY2xDYWNoZVtpXS5s
cnVDb3VudCA8IGxhc3RDYWNoZS0+bHJ1Q291bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxh
c3RDYWNoZSA9ICZtVmVydGV4RGVjbENhY2hlW2ldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKGxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb24gIT0gTlVMTCkKLSAgICB7Ci0gICAgICAg
IGxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb24tPlJlbGVhc2UoKTsKLSAgICAgICAgbGFzdENh
Y2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbiA9IE5VTEw7Ci0gICAgICAgIC8vIG1MYXN0U2V0VkRlY2wg
aXMgc2V0IHRvIHRoZSByZXBsYWNlbWVudCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeQotICAg
ICAgICAvLyBhYm91dCBpdC4KLSAgICB9Ci0KLSAgICBtZW1jcHkobGFzdENhY2hlLT5jYWNoZWRF
bGVtZW50cywgZWxlbWVudHMsIChlbGVtZW50IC0gZWxlbWVudHMpICogc2l6ZW9mKEQzRFZFUlRF
WEVMRU1FTlQ5KSk7Ci0gICAgZGV2aWNlLT5DcmVhdGVWZXJ0ZXhEZWNsYXJhdGlvbihlbGVtZW50
cywgJmxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb24pOwotICAgIGRldmljZS0+U2V0VmVydGV4
RGVjbGFyYXRpb24obGFzdENhY2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbik7Ci0gICAgbUxhc3RTZXRW
RGVjbCA9IGxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb247Ci0gICAgbGFzdENhY2hlLT5scnVD
b3VudCA9ICsrbU1heExydTsKLQotICAgIHJldHVybiBHTF9OT19FUlJPUjsKLX0KLQotdm9pZCBW
ZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjptYXJrU3RhdGVEaXJ0eSgpCi17Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICB7Ci0gICAgICAgIG1BcHBs
aWVkVkJzW2ldLnNlcmlhbCA9IDA7Ci0gICAgfQotCi0gICAgbUxhc3RTZXRWRGVjbCA9IE5VTEw7
Ci0gICAgbUluc3RhbmNpbmdFbmFibGVkID0gdHJ1ZTsgICAvLyBGb3JjZXMgaXQgdG8gYmUgZGlz
YWJsZWQgd2hlbiBub3QgdXNlZAotfQotCi19Ci0KLWV4dGVybiAiQyIKLXsKLWdsOjpDb250ZXh0
ICpnbENyZWF0ZUNvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywgY29uc3QgZ2w6OkNv
bnRleHQgKnNoYXJlQ29udGV4dCwgYm9vbCBub3RpZnlSZXNldHMsIGJvb2wgcm9idXN0QWNjZXNz
KQotewotICAgIHJldHVybiBuZXcgZ2w6OkNvbnRleHQoY29uZmlnLCBzaGFyZUNvbnRleHQsIG5v
dGlmeVJlc2V0cywgcm9idXN0QWNjZXNzKTsKLX0KLQotdm9pZCBnbERlc3Ryb3lDb250ZXh0KGds
OjpDb250ZXh0ICpjb250ZXh0KQotewotICAgIGRlbGV0ZSBjb250ZXh0OwotCi0gICAgaWYgKGNv
bnRleHQgPT0gZ2w6OmdldENvbnRleHQoKSkKLSAgICB7Ci0gICAgICAgIGdsOjptYWtlQ3VycmVu
dChOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICB9Ci19Ci0KLXZvaWQgZ2xNYWtlQ3VycmVudChnbDo6
Q29udGV4dCAqY29udGV4dCwgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1
cmZhY2UpCi17Ci0gICAgZ2w6Om1ha2VDdXJyZW50KGNvbnRleHQsIGRpc3BsYXksIHN1cmZhY2Up
OwotfQotCi1nbDo6Q29udGV4dCAqZ2xHZXRDdXJyZW50Q29udGV4dCgpCi17Ci0gICAgcmV0dXJu
IGdsOjpnZXRDb250ZXh0KCk7Ci19Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvQ29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YzQ1
YmYzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
Q29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjg3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0KLS8vIENvbnRleHQuaDogRGVmaW5lcyB0aGUgZ2w6OkNvbnRleHQgY2xhc3MsIG1hbmFn
aW5nIGFsbCBHTCBzdGF0ZSBhbmQgcGVyZm9ybWluZwotLy8gcmVuZGVyaW5nIG9wZXJhdGlvbnMu
IEl0IGlzIHRoZSBHTEVTMiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBFR0xDb250ZXh0Lgot
Ci0jaWZuZGVmIExJQkdMRVNWMl9DT05URVhUX0hfCi0jZGVmaW5lIExJQkdMRVNWMl9DT05URVhU
X0hfCi0KLSNkZWZpbmUgR0xfQVBJQ0FMTAotI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2luY2x1
ZGUgPEdMRVMyL2dsMmV4dC5oPgotI2RlZmluZSBFR0xBUEkKLSNpbmNsdWRlIDxFR0wvZWdsLmg+
Ci0jaW5jbHVkZSA8ZDNkOS5oPgotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG1hcD4K
LSNpZmRlZiBfTVNDX1ZFUgotI2luY2x1ZGUgPGhhc2hfbWFwPgotI2Vsc2UKLSNpbmNsdWRlIDx1
bm9yZGVyZWRfbWFwPgotI2VuZGlmCi0KLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgot
I2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9S
ZXNvdXJjZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgi
Ci0KLW5hbWVzcGFjZSBlZ2wKLXsKLWNsYXNzIERpc3BsYXk7Ci1jbGFzcyBTdXJmYWNlOwotY2xh
c3MgQ29uZmlnOwotfQotCi1uYW1lc3BhY2UgZ2wKLXsKLXN0cnVjdCBUcmFuc2xhdGVkQXR0cmli
dXRlOwotc3RydWN0IFRyYW5zbGF0ZWRJbmRleERhdGE7Ci0KLWNsYXNzIEJ1ZmZlcjsKLWNsYXNz
IFNoYWRlcjsKLWNsYXNzIFByb2dyYW07Ci1jbGFzcyBQcm9ncmFtQmluYXJ5OwotY2xhc3MgVGV4
dHVyZTsKLWNsYXNzIFRleHR1cmUyRDsKLWNsYXNzIFRleHR1cmVDdWJlTWFwOwotY2xhc3MgRnJh
bWVidWZmZXI7Ci1jbGFzcyBSZW5kZXJidWZmZXI7Ci1jbGFzcyBSZW5kZXJidWZmZXJTdG9yYWdl
OwotY2xhc3MgQ29sb3JidWZmZXI7Ci1jbGFzcyBEZXB0aGJ1ZmZlcjsKLWNsYXNzIFN0cmVhbWlu
Z0luZGV4QnVmZmVyOwotY2xhc3MgU3RlbmNpbGJ1ZmZlcjsKLWNsYXNzIERlcHRoU3RlbmNpbGJ1
ZmZlcjsKLWNsYXNzIFZlcnRleERhdGFNYW5hZ2VyOwotY2xhc3MgSW5kZXhEYXRhTWFuYWdlcjsK
LWNsYXNzIEJsaXQ7Ci1jbGFzcyBGZW5jZTsKLWNsYXNzIFF1ZXJ5OwotCi1lbnVtCi17Ci0gICAg
RDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTID0gMjU2LAotICAgIEQzRDlfTUFYX0JPT0xfQ09OU1RB
TlRTID0gMTYsCi0gICAgRDNEOV9NQVhfSU5UX0NPTlNUQU5UUyA9IDE2LAotCi0gICAgTUFYX1ZF
UlRFWF9BVFRSSUJTID0gMTYsCi0gICAgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgPSBEM0Q5
X01BWF9GTE9BVF9DT05TVEFOVFMgLSAyLCAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGR4X0hhbGZQ
aXhlbFNpemUgYW5kIGR4X0RlcHRoUmFuZ2UuCi0gICAgTUFYX1ZBUllJTkdfVkVDVE9SU19TTTIg
PSA4LAotICAgIE1BWF9WQVJZSU5HX1ZFQ1RPUlNfU00zID0gMTAsCi0gICAgTUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFMgPSAxNiwKLSAgICBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRG
ID0gNCwgICAvLyBGb3IgZGV2aWNlcyBzdXBwb3J0aW5nIHZlcnRleCB0ZXh0dXJlIGZldGNoCi0g
ICAgTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGID0gTUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFMgKyBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGLCAgICAKLSAgICBN
QVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTX1NNMiA9IDMyIC0gMywgICAgLy8gUmVzZXJ2ZSBz
cGFjZSBmb3IgZHhfQ29vcmQsIGR4X0RlcHRoLCBhbmQgZHhfRGVwdGhSYW5nZS4gZHhfUG9pbnRP
ckxpbmVzIGFuZCBkeF9Gcm9udENDVyB1c2Ugc2VwYXJhdGUgYm9vbCByZWdpc3RlcnMuCi0gICAg
TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU19TTTMgPSAyMjQgLSAzLAotICAgIE1BWF9EUkFX
X0JVRkZFUlMgPSAxLAotCi0gICAgR0xfQkdSQTRfQU5HTEVYID0gMHg2QUJDLAotICAgIEdMX0JH
UjVfQTFfQU5HTEVYID0gMHg2QUJECi19OwotCi1lbnVtIFF1ZXJ5VHlwZQotewotICAgIFFVRVJZ
X0FOWV9TQU1QTEVTX1BBU1NFRCwKLSAgICBRVUVSWV9BTllfU0FNUExFU19QQVNTRURfQ09OU0VS
VkFUSVZFLAotCi0gICAgUVVFUllfVFlQRV9DT1VOVAotfTsKLQotY29uc3QgZmxvYXQgQUxJQVNF
RF9MSU5FX1dJRFRIX1JBTkdFX01JTiA9IDEuMGY7Ci1jb25zdCBmbG9hdCBBTElBU0VEX0xJTkVf
V0lEVEhfUkFOR0VfTUFYID0gMS4wZjsKLWNvbnN0IGZsb2F0IEFMSUFTRURfUE9JTlRfU0laRV9S
QU5HRV9NSU4gPSAxLjBmOwotY29uc3QgZmxvYXQgQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFX01B
WF9TTTIgPSAxLjBmOwotCi1zdHJ1Y3QgQ29sb3IKLXsKLSAgICBmbG9hdCByZWQ7Ci0gICAgZmxv
YXQgZ3JlZW47Ci0gICAgZmxvYXQgYmx1ZTsKLSAgICBmbG9hdCBhbHBoYTsKLX07Ci0KLS8vIEhl
bHBlciBzdHJ1Y3R1cmUgZGVzY3JpYmluZyBhIHNpbmdsZSB2ZXJ0ZXggYXR0cmlidXRlCi1jbGFz
cyBWZXJ0ZXhBdHRyaWJ1dGUKLXsKLSAgcHVibGljOgotICAgIFZlcnRleEF0dHJpYnV0ZSgpIDog
bVR5cGUoR0xfRkxPQVQpLCBtU2l6ZSgwKSwgbU5vcm1hbGl6ZWQoZmFsc2UpLCBtU3RyaWRlKDAp
LCBtUG9pbnRlcihOVUxMKSwgbUFycmF5RW5hYmxlZChmYWxzZSksIG1EaXZpc29yKDApCi0gICAg
ewotICAgICAgICBtQ3VycmVudFZhbHVlWzBdID0gMC4wZjsKLSAgICAgICAgbUN1cnJlbnRWYWx1
ZVsxXSA9IDAuMGY7Ci0gICAgICAgIG1DdXJyZW50VmFsdWVbMl0gPSAwLjBmOwotICAgICAgICBt
Q3VycmVudFZhbHVlWzNdID0gMS4wZjsKLSAgICB9Ci0KLSAgICBpbnQgdHlwZVNpemUoKSBjb25z
dAotICAgIHsKLSAgICAgICAgc3dpdGNoIChtVHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNh
c2UgR0xfQllURTogICAgICAgICAgIHJldHVybiBtU2l6ZSAqIHNpemVvZihHTGJ5dGUpOwotICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURTogIHJldHVybiBtU2l6ZSAqIHNpemVvZihHTHVi
eXRlKTsKLSAgICAgICAgICBjYXNlIEdMX1NIT1JUOiAgICAgICAgICByZXR1cm4gbVNpemUgKiBz
aXplb2YoR0xzaG9ydCk7Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJu
IG1TaXplICogc2l6ZW9mKEdMdXNob3J0KTsKLSAgICAgICAgICBjYXNlIEdMX0ZJWEVEOiAgICAg
ICAgICByZXR1cm4gbVNpemUgKiBzaXplb2YoR0xmaXhlZCk7Ci0gICAgICAgICAgY2FzZSBHTF9G
TE9BVDogICAgICAgICAgcmV0dXJuIG1TaXplICogc2l6ZW9mKEdMZmxvYXQpOwotICAgICAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiBtU2l6ZSAqIHNpemVvZihHTGZsb2F0KTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIEdMc2l6ZWkgc3RyaWRlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtU3RyaWRlID8gbVN0cmlkZSA6IHR5cGVTaXplKCk7Ci0gICAgfQotCi0g
ICAgLy8gRnJvbSBnbFZlcnRleEF0dHJpYlBvaW50ZXIKLSAgICBHTGVudW0gbVR5cGU7Ci0gICAg
R0xpbnQgbVNpemU7Ci0gICAgYm9vbCBtTm9ybWFsaXplZDsKLSAgICBHTHNpemVpIG1TdHJpZGU7
ICAgLy8gMCBtZWFucyBuYXR1cmFsIHN0cmlkZQotCi0gICAgdW5pb24KLSAgICB7Ci0gICAgICAg
IGNvbnN0IHZvaWQgKm1Qb2ludGVyOwotICAgICAgICBpbnRwdHJfdCBtT2Zmc2V0OwotICAgIH07
Ci0KLSAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IG1Cb3VuZEJ1ZmZlcjsgICAvLyBDYXB0dXJl
ZCB3aGVuIGdsVmVydGV4QXR0cmliUG9pbnRlciBpcyBjYWxsZWQuCi0KLSAgICBib29sIG1BcnJh
eUVuYWJsZWQ7ICAgLy8gRnJvbSBnbEVuYWJsZS9EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkKLSAg
ICBmbG9hdCBtQ3VycmVudFZhbHVlWzRdOyAgIC8vIEZyb20gZ2xWZXJ0ZXhBdHRyaWIKLSAgICB1
bnNpZ25lZCBpbnQgbURpdmlzb3I7Ci19OwotCi10eXBlZGVmIFZlcnRleEF0dHJpYnV0ZSBWZXJ0
ZXhBdHRyaWJ1dGVBcnJheVtNQVhfVkVSVEVYX0FUVFJJQlNdOwotCi0vLyBIZWxwZXIgc3RydWN0
dXJlIHRvIHN0b3JlIGFsbCByYXcgc3RhdGUKLXN0cnVjdCBTdGF0ZQotewotICAgIENvbG9yIGNv
bG9yQ2xlYXJWYWx1ZTsKLSAgICBHTGNsYW1wZiBkZXB0aENsZWFyVmFsdWU7Ci0gICAgaW50IHN0
ZW5jaWxDbGVhclZhbHVlOwotCi0gICAgYm9vbCBjdWxsRmFjZTsKLSAgICBHTGVudW0gY3VsbE1v
ZGU7Ci0gICAgR0xlbnVtIGZyb250RmFjZTsKLSAgICBib29sIGRlcHRoVGVzdDsKLSAgICBHTGVu
dW0gZGVwdGhGdW5jOwotICAgIGJvb2wgYmxlbmQ7Ci0gICAgR0xlbnVtIHNvdXJjZUJsZW5kUkdC
OwotICAgIEdMZW51bSBkZXN0QmxlbmRSR0I7Ci0gICAgR0xlbnVtIHNvdXJjZUJsZW5kQWxwaGE7
Ci0gICAgR0xlbnVtIGRlc3RCbGVuZEFscGhhOwotICAgIEdMZW51bSBibGVuZEVxdWF0aW9uUkdC
OwotICAgIEdMZW51bSBibGVuZEVxdWF0aW9uQWxwaGE7Ci0gICAgQ29sb3IgYmxlbmRDb2xvcjsK
LSAgICBib29sIHN0ZW5jaWxUZXN0OwotICAgIEdMZW51bSBzdGVuY2lsRnVuYzsKLSAgICBHTGlu
dCBzdGVuY2lsUmVmOwotICAgIEdMdWludCBzdGVuY2lsTWFzazsKLSAgICBHTGVudW0gc3RlbmNp
bEZhaWw7Ci0gICAgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhGYWlsOwotICAgIEdMZW51bSBzdGVu
Y2lsUGFzc0RlcHRoUGFzczsKLSAgICBHTHVpbnQgc3RlbmNpbFdyaXRlbWFzazsKLSAgICBHTGVu
dW0gc3RlbmNpbEJhY2tGdW5jOwotICAgIEdMaW50IHN0ZW5jaWxCYWNrUmVmOwotICAgIEdMdWlu
dCBzdGVuY2lsQmFja01hc2s7Ci0gICAgR0xlbnVtIHN0ZW5jaWxCYWNrRmFpbDsKLSAgICBHTGVu
dW0gc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsOwotICAgIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NE
ZXB0aFBhc3M7Ci0gICAgR0x1aW50IHN0ZW5jaWxCYWNrV3JpdGVtYXNrOwotICAgIGJvb2wgcG9s
eWdvbk9mZnNldEZpbGw7Ci0gICAgR0xmbG9hdCBwb2x5Z29uT2Zmc2V0RmFjdG9yOwotICAgIEdM
ZmxvYXQgcG9seWdvbk9mZnNldFVuaXRzOwotICAgIGJvb2wgc2FtcGxlQWxwaGFUb0NvdmVyYWdl
OwotICAgIGJvb2wgc2FtcGxlQ292ZXJhZ2U7Ci0gICAgR0xjbGFtcGYgc2FtcGxlQ292ZXJhZ2VW
YWx1ZTsKLSAgICBib29sIHNhbXBsZUNvdmVyYWdlSW52ZXJ0OwotICAgIGJvb2wgc2Npc3NvclRl
c3Q7Ci0gICAgYm9vbCBkaXRoZXI7Ci0KLSAgICBHTGZsb2F0IGxpbmVXaWR0aDsKLQotICAgIEdM
ZW51bSBnZW5lcmF0ZU1pcG1hcEhpbnQ7Ci0gICAgR0xlbnVtIGZyYWdtZW50U2hhZGVyRGVyaXZh
dGl2ZUhpbnQ7Ci0KLSAgICBHTGludCB2aWV3cG9ydFg7Ci0gICAgR0xpbnQgdmlld3BvcnRZOwot
ICAgIEdMc2l6ZWkgdmlld3BvcnRXaWR0aDsKLSAgICBHTHNpemVpIHZpZXdwb3J0SGVpZ2h0Owot
ICAgIGZsb2F0IHpOZWFyOwotICAgIGZsb2F0IHpGYXI7Ci0KLSAgICBHTGludCBzY2lzc29yWDsK
LSAgICBHTGludCBzY2lzc29yWTsKLSAgICBHTHNpemVpIHNjaXNzb3JXaWR0aDsKLSAgICBHTHNp
emVpIHNjaXNzb3JIZWlnaHQ7Ci0KLSAgICBib29sIGNvbG9yTWFza1JlZDsKLSAgICBib29sIGNv
bG9yTWFza0dyZWVuOwotICAgIGJvb2wgY29sb3JNYXNrQmx1ZTsKLSAgICBib29sIGNvbG9yTWFz
a0FscGhhOwotICAgIGJvb2wgZGVwdGhNYXNrOwotCi0gICAgdW5zaWduZWQgaW50IGFjdGl2ZVNh
bXBsZXI7ICAgLy8gQWN0aXZlIHRleHR1cmUgdW5pdCBzZWxlY3RvciAtIEdMX1RFWFRVUkUwCi0g
ICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBhcnJheUJ1ZmZlcjsKLSAgICBCaW5kaW5nUG9pbnRl
cjxCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlcjsKLSAgICBHTHVpbnQgcmVhZEZyYW1lYnVmZmVy
OwotICAgIEdMdWludCBkcmF3RnJhbWVidWZmZXI7Ci0gICAgQmluZGluZ1BvaW50ZXI8UmVuZGVy
YnVmZmVyPiByZW5kZXJidWZmZXI7Ci0gICAgR0x1aW50IGN1cnJlbnRQcm9ncmFtOwotCi0gICAg
VmVydGV4QXR0cmlidXRlIHZlcnRleEF0dHJpYnV0ZVtNQVhfVkVSVEVYX0FUVFJJQlNdOwotICAg
IEJpbmRpbmdQb2ludGVyPFRleHR1cmU+IHNhbXBsZXJUZXh0dXJlW1RFWFRVUkVfVFlQRV9DT1VO
VF1bTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGXTsKLSAgICBCaW5kaW5nUG9p
bnRlcjxRdWVyeT4gYWN0aXZlUXVlcnlbUVVFUllfVFlQRV9DT1VOVF07Ci0KLSAgICBHTGludCB1
bnBhY2tBbGlnbm1lbnQ7Ci0gICAgR0xpbnQgcGFja0FsaWdubWVudDsKLSAgICBib29sIHBhY2tS
ZXZlcnNlUm93T3JkZXI7Ci19OwotCi0vLyBIZWxwZXIgY2xhc3MgdG8gY29uc3RydWN0IGFuZCBj
YWNoZSB2ZXJ0ZXggZGVjbGFyYXRpb25zCi1jbGFzcyBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlCi17
Ci0gIHB1YmxpYzoKLSAgICBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKCk7Ci0gICAgflZlcnRleERl
Y2xhcmF0aW9uQ2FjaGUoKTsKLQotICAgIEdMZW51bSBhcHBseURlY2xhcmF0aW9uKElEaXJlY3Qz
RERldmljZTkgKmRldmljZSwgVHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW10sIFByb2dy
YW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIEdMc2l6ZWkgaW5zdGFuY2VzLCBHTHNpemVpICpyZXBl
YXREcmF3KTsKLQotICAgIHZvaWQgbWFya1N0YXRlRGlydHkoKTsKLQotICBwcml2YXRlOgotICAg
IFVJTlQgbU1heExydTsKLQotICAgIGVudW0geyBOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVfRU5UUklF
UyA9IDMyIH07Ci0KLSAgICBzdHJ1Y3QgVkJEYXRhCi0gICAgewotICAgICAgICB1bnNpZ25lZCBp
bnQgc2VyaWFsOwotICAgICAgICB1bnNpZ25lZCBpbnQgc3RyaWRlOwotICAgICAgICB1bnNpZ25l
ZCBpbnQgb2Zmc2V0OwotICAgIH07Ci0KLSAgICBWQkRhdGEgbUFwcGxpZWRWQnNbTUFYX1ZFUlRF
WF9BVFRSSUJTXTsKLSAgICBJRGlyZWN0M0RWZXJ0ZXhEZWNsYXJhdGlvbjkgKm1MYXN0U2V0VkRl
Y2w7Ci0gICAgYm9vbCBtSW5zdGFuY2luZ0VuYWJsZWQ7Ci0KLSAgICBzdHJ1Y3QgVmVydGV4RGVj
bENhY2hlRW50cnkKLSAgICB7Ci0gICAgICAgIEQzRFZFUlRFWEVMRU1FTlQ5IGNhY2hlZEVsZW1l
bnRzW01BWF9WRVJURVhfQVRUUklCUyArIDFdOwotICAgICAgICBVSU5UIGxydUNvdW50OwotICAg
ICAgICBJRGlyZWN0M0RWZXJ0ZXhEZWNsYXJhdGlvbjkgKnZlcnRleERlY2xhcmF0aW9uOwotICAg
IH0gbVZlcnRleERlY2xDYWNoZVtOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVfRU5UUklFU107Ci19Owot
Ci1jbGFzcyBDb250ZXh0Ci17Ci0gIHB1YmxpYzoKLSAgICBDb250ZXh0KGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWcsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5
UmVzZXRzLCBib29sIHJvYnVzdEFjY2Vzcyk7Ci0KLSAgICB+Q29udGV4dCgpOwotCi0gICAgdm9p
ZCBtYWtlQ3VycmVudChlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFj
ZSk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKTsKLSAgICB2b2lkIG1h
cmtEeFVuaWZvcm1zRGlydHkoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBtYXJrQ29udGV4dExvc3Qo
KTsKLSAgICBib29sIGlzQ29udGV4dExvc3QoKTsKLQotICAgIC8vIFN0YXRlIG1hbmlwdWxhdGlv
bgotICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBi
bHVlLCBmbG9hdCBhbHBoYSk7Ci0KLSAgICB2b2lkIHNldENsZWFyRGVwdGgoZmxvYXQgZGVwdGgp
OwotCi0gICAgdm9pZCBzZXRDbGVhclN0ZW5jaWwoaW50IHN0ZW5jaWwpOwotCi0gICAgdm9pZCBz
ZXRDdWxsRmFjZShib29sIGVuYWJsZWQpOwotICAgIGJvb2wgaXNDdWxsRmFjZUVuYWJsZWQoKSBj
b25zdDsKLQotICAgIHZvaWQgc2V0Q3VsbE1vZGUoR0xlbnVtIG1vZGUpOwotCi0gICAgdm9pZCBz
ZXRGcm9udEZhY2UoR0xlbnVtIGZyb250KTsKLQotICAgIHZvaWQgc2V0RGVwdGhUZXN0KGJvb2wg
ZW5hYmxlZCk7Ci0gICAgYm9vbCBpc0RlcHRoVGVzdEVuYWJsZWQoKSBjb25zdDsKLQotICAgIHZv
aWQgc2V0RGVwdGhGdW5jKEdMZW51bSBkZXB0aEZ1bmMpOwotCi0gICAgdm9pZCBzZXREZXB0aFJh
bmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKTsKLSAgICAKLSAgICB2b2lkIHNldEJsZW5kKGJv
b2wgZW5hYmxlZCk7Ci0gICAgYm9vbCBpc0JsZW5kRW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9p
ZCBzZXRCbGVuZEZhY3RvcnMoR0xlbnVtIHNvdXJjZVJHQiwgR0xlbnVtIGRlc3RSR0IsIEdMZW51
bSBzb3VyY2VBbHBoYSwgR0xlbnVtIGRlc3RBbHBoYSk7Ci0gICAgdm9pZCBzZXRCbGVuZENvbG9y
KGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKLSAgICB2
b2lkIHNldEJsZW5kRXF1YXRpb24oR0xlbnVtIHJnYkVxdWF0aW9uLCBHTGVudW0gYWxwaGFFcXVh
dGlvbik7Ci0KLSAgICB2b2lkIHNldFN0ZW5jaWxUZXN0KGJvb2wgZW5hYmxlZCk7Ci0gICAgYm9v
bCBpc1N0ZW5jaWxUZXN0RW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRTdGVuY2lsUGFy
YW1zKEdMZW51bSBzdGVuY2lsRnVuYywgR0xpbnQgc3RlbmNpbFJlZiwgR0x1aW50IHN0ZW5jaWxN
YXNrKTsKLSAgICB2b2lkIHNldFN0ZW5jaWxCYWNrUGFyYW1zKEdMZW51bSBzdGVuY2lsQmFja0Z1
bmMsIEdMaW50IHN0ZW5jaWxCYWNrUmVmLCBHTHVpbnQgc3RlbmNpbEJhY2tNYXNrKTsKLSAgICB2
b2lkIHNldFN0ZW5jaWxXcml0ZW1hc2soR0x1aW50IHN0ZW5jaWxXcml0ZW1hc2spOwotICAgIHZv
aWQgc2V0U3RlbmNpbEJhY2tXcml0ZW1hc2soR0x1aW50IHN0ZW5jaWxCYWNrV3JpdGVtYXNrKTsK
LSAgICB2b2lkIHNldFN0ZW5jaWxPcGVyYXRpb25zKEdMZW51bSBzdGVuY2lsRmFpbCwgR0xlbnVt
IHN0ZW5jaWxQYXNzRGVwdGhGYWlsLCBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aFBhc3MpOwotICAg
IHZvaWQgc2V0U3RlbmNpbEJhY2tPcGVyYXRpb25zKEdMZW51bSBzdGVuY2lsQmFja0ZhaWwsIEdM
ZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0
aFBhc3MpOwotCi0gICAgdm9pZCBzZXRQb2x5Z29uT2Zmc2V0RmlsbChib29sIGVuYWJsZWQpOwot
ICAgIGJvb2wgaXNQb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQoKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0UG9seWdvbk9mZnNldFBhcmFtcyhHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7Ci0K
LSAgICB2b2lkIHNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZShib29sIGVuYWJsZWQpOwotICAgIGJv
b2wgaXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNl
dFNhbXBsZUNvdmVyYWdlKGJvb2wgZW5hYmxlZCk7Ci0gICAgYm9vbCBpc1NhbXBsZUNvdmVyYWdl
RW5hYmxlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRTYW1wbGVDb3ZlcmFnZVBhcmFtcyhHTGNs
YW1wZiB2YWx1ZSwgYm9vbCBpbnZlcnQpOwotCi0gICAgdm9pZCBzZXRTY2lzc29yVGVzdChib29s
IGVuYWJsZWQpOwotICAgIGJvb2wgaXNTY2lzc29yVGVzdEVuYWJsZWQoKSBjb25zdDsKLQotICAg
IHZvaWQgc2V0RGl0aGVyKGJvb2wgZW5hYmxlZCk7Ci0gICAgYm9vbCBpc0RpdGhlckVuYWJsZWQo
KSBjb25zdDsKLQotICAgIHZvaWQgc2V0TGluZVdpZHRoKEdMZmxvYXQgd2lkdGgpOwotCi0gICAg
dm9pZCBzZXRHZW5lcmF0ZU1pcG1hcEhpbnQoR0xlbnVtIGhpbnQpOwotICAgIHZvaWQgc2V0RnJh
Z21lbnRTaGFkZXJEZXJpdmF0aXZlSGludChHTGVudW0gaGludCk7Ci0KLSAgICB2b2lkIHNldFZp
ZXdwb3J0UGFyYW1zKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0KTsKLQotICAgIHZvaWQgc2V0U2Npc3NvclBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci0KLSAgICB2b2lkIHNldENvbG9yTWFzayhib29s
IHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKTsKLSAgICB2b2lkIHNldERl
cHRoTWFzayhib29sIG1hc2spOwotCi0gICAgdm9pZCBzZXRBY3RpdmVTYW1wbGVyKHVuc2lnbmVk
IGludCBhY3RpdmUpOwotCi0gICAgR0x1aW50IGdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgpIGNv
bnN0OwotICAgIEdMdWludCBnZXREcmF3RnJhbWVidWZmZXJIYW5kbGUoKSBjb25zdDsKLSAgICBH
THVpbnQgZ2V0UmVuZGVyYnVmZmVySGFuZGxlKCkgY29uc3Q7Ci0KLSAgICBHTHVpbnQgZ2V0QXJy
YXlCdWZmZXJIYW5kbGUoKSBjb25zdDsKLQotICAgIEdMdWludCBnZXRBY3RpdmVRdWVyeShHTGVu
dW0gdGFyZ2V0KSBjb25zdDsKLQotICAgIHZvaWQgc2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXko
dW5zaWduZWQgaW50IGF0dHJpYk51bSwgYm9vbCBlbmFibGVkKTsKLSAgICBjb25zdCBWZXJ0ZXhB
dHRyaWJ1dGUgJmdldFZlcnRleEF0dHJpYlN0YXRlKHVuc2lnbmVkIGludCBhdHRyaWJOdW0pOwot
ICAgIHZvaWQgc2V0VmVydGV4QXR0cmliU3RhdGUodW5zaWduZWQgaW50IGF0dHJpYk51bSwgQnVm
ZmVyICpib3VuZEJ1ZmZlciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2
b2lkICpwb2ludGVyKTsKLSAgICBjb25zdCB2b2lkICpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVyKHVu
c2lnbmVkIGludCBhdHRyaWJOdW0pIGNvbnN0OwotCi0gICAgY29uc3QgVmVydGV4QXR0cmlidXRl
QXJyYXkgJmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKLQotICAgIHZvaWQgc2V0VW5wYWNrQWxpZ25t
ZW50KEdMaW50IGFsaWdubWVudCk7Ci0gICAgR0xpbnQgZ2V0VW5wYWNrQWxpZ25tZW50KCkgY29u
c3Q7Ci0KLSAgICB2b2lkIHNldFBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50KTsKLSAgICBH
TGludCBnZXRQYWNrQWxpZ25tZW50KCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldFBhY2tSZXZlcnNl
Um93T3JkZXIoYm9vbCByZXZlcnNlUm93T3JkZXIpOwotICAgIGJvb2wgZ2V0UGFja1JldmVyc2VS
b3dPcmRlcigpIGNvbnN0OwotCi0gICAgLy8gVGhlc2UgY3JlYXRlICBhbmQgZGVzdHJveSBtZXRo
b2RzIGFyZSBtZXJlbHkgcGFzcy10aHJvdWdocyB0byAKLSAgICAvLyBSZXNvdXJjZU1hbmFnZXIs
IHdoaWNoIG93bnMgdGhlc2Ugb2JqZWN0IHR5cGVzCi0gICAgR0x1aW50IGNyZWF0ZUJ1ZmZlcigp
OwotICAgIEdMdWludCBjcmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpOwotICAgIEdMdWludCBjcmVh
dGVQcm9ncmFtKCk7Ci0gICAgR0x1aW50IGNyZWF0ZVRleHR1cmUoKTsKLSAgICBHTHVpbnQgY3Jl
YXRlUmVuZGVyYnVmZmVyKCk7Ci0KLSAgICB2b2lkIGRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVy
KTsKLSAgICB2b2lkIGRlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKTsKLSAgICB2b2lkIGRlbGV0
ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pOwotICAgIHZvaWQgZGVsZXRlVGV4dHVyZShHTHVpbnQg
dGV4dHVyZSk7Ci0gICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZl
cik7Ci0KLSAgICAvLyBGcmFtZWJ1ZmZlcnMgYXJlIG93bmVkIGJ5IHRoZSBDb250ZXh0LCBzbyB0
aGVzZSBtZXRob2RzIGRvIG5vdCBwYXNzIHRocm91Z2gKLSAgICBHTHVpbnQgY3JlYXRlRnJhbWVi
dWZmZXIoKTsKLSAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcik7
Ci0KLSAgICAvLyBGZW5jZXMgYXJlIG93bmVkIGJ5IHRoZSBDb250ZXh0LgotICAgIEdMdWludCBj
cmVhdGVGZW5jZSgpOwotICAgIHZvaWQgZGVsZXRlRmVuY2UoR0x1aW50IGZlbmNlKTsKLSAgICAK
LSAgICAvLyBRdWVyaWVzIGFyZSBvd25lZCBieSB0aGUgQ29udGV4dDsKLSAgICBHTHVpbnQgY3Jl
YXRlUXVlcnkoKTsKLSAgICB2b2lkIGRlbGV0ZVF1ZXJ5KEdMdWludCBxdWVyeSk7Ci0KLSAgICB2
b2lkIGJpbmRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKLSAgICB2b2lkIGJpbmRFbGVtZW50
QXJyYXlCdWZmZXIoR0x1aW50IGJ1ZmZlcik7Ci0gICAgdm9pZCBiaW5kVGV4dHVyZTJEKEdMdWlu
dCB0ZXh0dXJlKTsKLSAgICB2b2lkIGJpbmRUZXh0dXJlQ3ViZU1hcChHTHVpbnQgdGV4dHVyZSk7
Ci0gICAgdm9pZCBiaW5kUmVhZEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcik7Ci0gICAg
dm9pZCBiaW5kRHJhd0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcik7Ci0gICAgdm9pZCBi
aW5kUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpOwotICAgIHZvaWQgdXNlUHJvZ3Jh
bShHTHVpbnQgcHJvZ3JhbSk7Ci0gICAgdm9pZCBsaW5rUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7
Ci0gICAgdm9pZCBzZXRQcm9ncmFtQmluYXJ5KEdMdWludCBwcm9ncmFtLCBjb25zdCB2b2lkICpi
aW5hcnksIEdMaW50IGxlbmd0aCk7Ci0KLSAgICB2b2lkIGJlZ2luUXVlcnkoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IHF1ZXJ5KTsKLSAgICB2b2lkIGVuZFF1ZXJ5KEdMZW51bSB0YXJnZXQpOwotCi0g
ICAgdm9pZCBzZXRGcmFtZWJ1ZmZlclplcm8oRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKTsKLQot
ICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVyU3RvcmFnZShSZW5kZXJidWZmZXJTdG9yYWdlICpyZW5k
ZXJidWZmZXIpOwotCi0gICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWIoR0x1aW50IGluZGV4LCBjb25z
dCBHTGZsb2F0ICp2YWx1ZXMpOwotICAgIHZvaWQgc2V0VmVydGV4QXR0cmliRGl2aXNvcihHTHVp
bnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsKLQotICAgIEJ1ZmZlciAqZ2V0QnVmZmVyKEdMdWlu
dCBoYW5kbGUpOwotICAgIEZlbmNlICpnZXRGZW5jZShHTHVpbnQgaGFuZGxlKTsKLSAgICBTaGFk
ZXIgKmdldFNoYWRlcihHTHVpbnQgaGFuZGxlKTsKLSAgICBQcm9ncmFtICpnZXRQcm9ncmFtKEdM
dWludCBoYW5kbGUpOwotICAgIFRleHR1cmUgKmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSk7Ci0g
ICAgRnJhbWVidWZmZXIgKmdldEZyYW1lYnVmZmVyKEdMdWludCBoYW5kbGUpOwotICAgIFJlbmRl
cmJ1ZmZlciAqZ2V0UmVuZGVyYnVmZmVyKEdMdWludCBoYW5kbGUpOwotICAgIFF1ZXJ5ICpnZXRR
dWVyeShHTHVpbnQgaGFuZGxlLCBib29sIGNyZWF0ZSwgR0xlbnVtIHR5cGUpOwotCi0gICAgQnVm
ZmVyICpnZXRBcnJheUJ1ZmZlcigpOwotICAgIEJ1ZmZlciAqZ2V0RWxlbWVudEFycmF5QnVmZmVy
KCk7Ci0gICAgUHJvZ3JhbUJpbmFyeSAqZ2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKLSAgICBU
ZXh0dXJlMkQgKmdldFRleHR1cmUyRCgpOwotICAgIFRleHR1cmVDdWJlTWFwICpnZXRUZXh0dXJl
Q3ViZU1hcCgpOwotICAgIFRleHR1cmUgKmdldFNhbXBsZXJUZXh0dXJlKHVuc2lnbmVkIGludCBz
YW1wbGVyLCBUZXh0dXJlVHlwZSB0eXBlKTsKLSAgICBGcmFtZWJ1ZmZlciAqZ2V0UmVhZEZyYW1l
YnVmZmVyKCk7Ci0gICAgRnJhbWVidWZmZXIgKmdldERyYXdGcmFtZWJ1ZmZlcigpOwotCi0gICAg
Ym9vbCBnZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwotICAgIGJvb2wg
Z2V0SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKLSAgICBib29sIGdldEJv
b2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpOwotCi0gICAgYm9vbCBnZXRR
dWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGlu
dCAqbnVtUGFyYW1zKTsKLQotICAgIHZvaWQgcmVhZFBpeGVscyhHTGludCB4LCBHTGludCB5LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEdMc2l6ZWkgKmJ1ZlNpemUsIHZvaWQqIHBpeGVscyk7Ci0gICAgdm9pZCBjbGVhcihHTGJpdGZp
ZWxkIG1hc2spOwotICAgIHZvaWQgZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3Qs
IEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKLSAgICB2b2lkIGRyYXdFbGVtZW50
cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcywgR0xzaXplaSBpbnN0YW5jZXMpOwotICAgIHZvaWQgc3luYyhib29sIGJsb2NrKTsg
ICAvLyBmbHVzaC9maW5pc2gKLQotICAgIHZvaWQgZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291bnQs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCk7Ci0KLSAg
ICB2b2lkIHJlY29yZEludmFsaWRFbnVtKCk7Ci0gICAgdm9pZCByZWNvcmRJbnZhbGlkVmFsdWUo
KTsKLSAgICB2b2lkIHJlY29yZEludmFsaWRPcGVyYXRpb24oKTsKLSAgICB2b2lkIHJlY29yZE91
dE9mTWVtb3J5KCk7Ci0gICAgdm9pZCByZWNvcmRJbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24o
KTsKLQotICAgIEdMZW51bSBnZXRFcnJvcigpOwotICAgIEdMZW51bSBnZXRSZXNldFN0YXR1cygp
OwotICAgIHZpcnR1YWwgYm9vbCBpc1Jlc2V0Tm90aWZpY2F0aW9uRW5hYmxlZCgpOwotCi0gICAg
Ym9vbCBzdXBwb3J0c1NoYWRlck1vZGVsMygpIGNvbnN0OwotICAgIGZsb2F0IGdldE1heGltdW1Q
b2ludFNpemUoKSBjb25zdDsKLSAgICBpbnQgZ2V0TWF4aW11bVZhcnlpbmdWZWN0b3JzKCkgY29u
c3Q7Ci0gICAgdW5zaWduZWQgaW50IGdldE1heGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygp
IGNvbnN0OwotICAgIHVuc2lnbmVkIGludCBnZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VV
bml0cygpIGNvbnN0OwotICAgIGludCBnZXRNYXhpbXVtRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygp
IGNvbnN0OwotICAgIGludCBnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCkgY29uc3Q7
Ci0gICAgaW50IGdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgY29uc3Q7Ci0gICAgaW50IGdl
dE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lvbigpIGNvbnN0OwotICAgIGludCBnZXRNYXhpbXVt
VGV4dHVyZUxldmVsKCkgY29uc3Q7Ci0gICAgR0xzaXplaSBnZXRNYXhTdXBwb3J0ZWRTYW1wbGVz
KCkgY29uc3Q7Ci0gICAgaW50IGdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKEQzREZPUk1BVCBm
b3JtYXQsIGludCByZXF1ZXN0ZWQpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIgKmdldEV4dGVuc2lv
blN0cmluZygpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIgKmdldFJlbmRlcmVyU3RyaW5nKCkgY29u
c3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0V2ZW50UXVlcmllcygpIGNvbnN0OwotICAgIGJvb2wgc3Vw
cG9ydHNPY2NsdXNpb25RdWVyaWVzKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0RYVDFUZXh0
dXJlcygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdDsKLSAg
ICBib29sIHN1cHBvcnRzRFhUNVRleHR1cmVzKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0Zs
b2F0MzJUZXh0dXJlcygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNGbG9hdDMyTGluZWFyRmls
dGVyKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMo
KSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkgY29uc3Q7Ci0gICAg
Ym9vbCBzdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIoKSBjb25zdDsKLSAgICBib29sIHN1cHBv
cnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlcygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNM
dW1pbmFuY2VUZXh0dXJlcygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNMdW1pbmFuY2VBbHBo
YVRleHR1cmVzKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSBjb25z
dDsKLSAgICBib29sIHN1cHBvcnRzMzJiaXRJbmRpY2VzKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBw
b3J0c05vblBvd2VyMlRleHR1cmUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzSW5zdGFuY2lu
ZygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgpIGNv
bnN0OwotICAgIGJvb2wgc3VwcG9ydHNEZXJpdmF0aXZlSW5zdHJ1Y3Rpb25zKCkgY29uc3Q7Ci0K
LSAgICBib29sIGdldEN1cnJlbnRSZWFkRm9ybWF0VHlwZShHTGVudW0gKmZvcm1hdCwgR0xlbnVt
ICp0eXBlKTsKLQotICAgIGZsb2F0IGdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkgY29uc3Q7Ci0K
LSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50
IHNyY1gxLCBHTGludCBzcmNZMSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0
WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrKTsKLQotICAgIEJsaXQgKmdldEJsaXR0ZXIoKSB7
IHJldHVybiBtQmxpdDsgfQotCi0gICAgY29uc3QgRDNEQ0FQUzkgJmdldERldmljZUNhcHMoKSB7
IHJldHVybiBtRGV2aWNlQ2FwczsgfQotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKENvbnRleHQpOwotCi0gICAgYm9vbCBhcHBseVJlbmRlclRhcmdldChib29sIGln
bm9yZVZpZXdwb3J0KTsKLSAgICB2b2lkIGFwcGx5U3RhdGUoR0xlbnVtIGRyYXdNb2RlKTsKLSAg
ICBHTGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdM
c2l6ZWkgaW5zdGFuY2VzLCBHTHNpemVpICpyZXBlYXREcmF3KTsKLSAgICBHTGVudW0gYXBwbHlJ
bmRleEJ1ZmZlcihjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBt
b2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKTsKLSAgICB2
b2lkIGFwcGx5U2hhZGVycygpOwotICAgIHZvaWQgYXBwbHlUZXh0dXJlcygpOwotICAgIHZvaWQg
YXBwbHlUZXh0dXJlcyhTYW1wbGVyVHlwZSB0eXBlKTsKLQotICAgIHZvaWQgZGV0YWNoQnVmZmVy
KEdMdWludCBidWZmZXIpOwotICAgIHZvaWQgZGV0YWNoVGV4dHVyZShHTHVpbnQgdGV4dHVyZSk7
Ci0gICAgdm9pZCBkZXRhY2hGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIpOwotICAgIHZv
aWQgZGV0YWNoUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpOwotCi0gICAgVGV4dHVy
ZSAqZ2V0SW5jb21wbGV0ZVRleHR1cmUoVGV4dHVyZVR5cGUgdHlwZSk7Ci0KLSAgICBib29sIHNr
aXBEcmF3KEdMZW51bSBkcmF3TW9kZSk7Ci0gICAgYm9vbCBpc1RyaWFuZ2xlTW9kZShHTGVudW0g
ZHJhd01vZGUpOwotCi0gICAgdm9pZCBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7Ci0gICAgdm9pZCBp
bml0UmVuZGVyZXJTdHJpbmcoKTsKLQotICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25zdCBtQ29u
ZmlnOwotICAgIGVnbDo6RGlzcGxheSAqbURpc3BsYXk7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAq
bURldmljZTsKLQotICAgIFN0YXRlIG1TdGF0ZTsKLQotICAgIEJpbmRpbmdQb2ludGVyPFRleHR1
cmUyRD4gbVRleHR1cmUyRFplcm87Ci0gICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZUN1YmVNYXA+
IG1UZXh0dXJlQ3ViZU1hcFplcm87Ci0KLSNpZm5kZWYgSEFTSF9NQVAKLSMgaWZkZWYgX01TQ19W
RVIKLSMgIGRlZmluZSBIQVNIX01BUCBzdGRleHQ6Omhhc2hfbWFwCi0jIGVsc2UKLSMgIGRlZmlu
ZSBIQVNIX01BUCBzdGQ6OnVub3JkZXJlZF9tYXAKLSMgZW5kaWYKLSNlbmRpZgotCi0gICAgdHlw
ZWRlZiBIQVNIX01BUDxHTHVpbnQsIEZyYW1lYnVmZmVyKj4gRnJhbWVidWZmZXJNYXA7Ci0gICAg
RnJhbWVidWZmZXJNYXAgbUZyYW1lYnVmZmVyTWFwOwotICAgIEhhbmRsZUFsbG9jYXRvciBtRnJh
bWVidWZmZXJIYW5kbGVBbGxvY2F0b3I7Ci0KLSAgICB0eXBlZGVmIEhBU0hfTUFQPEdMdWludCwg
RmVuY2UqPiBGZW5jZU1hcDsKLSAgICBGZW5jZU1hcCBtRmVuY2VNYXA7Ci0gICAgSGFuZGxlQWxs
b2NhdG9yIG1GZW5jZUhhbmRsZUFsbG9jYXRvcjsKLQotICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1
aW50LCBRdWVyeSo+IFF1ZXJ5TWFwOwotICAgIFF1ZXJ5TWFwIG1RdWVyeU1hcDsKLSAgICBIYW5k
bGVBbGxvY2F0b3IgbVF1ZXJ5SGFuZGxlQWxsb2NhdG9yOwotCi0gICAgY29uc3QgY2hhciAqbUV4
dGVuc2lvblN0cmluZzsKLSAgICBjb25zdCBjaGFyICptUmVuZGVyZXJTdHJpbmc7Ci0KLSAgICBW
ZXJ0ZXhEYXRhTWFuYWdlciAqbVZlcnRleERhdGFNYW5hZ2VyOwotICAgIEluZGV4RGF0YU1hbmFn
ZXIgKm1JbmRleERhdGFNYW5hZ2VyOwotCi0gICAgQmxpdCAqbUJsaXQ7Ci0KLSAgICBTdHJlYW1p
bmdJbmRleEJ1ZmZlciAqbUxpbmVMb29wSUI7Ci0gICAgCi0gICAgQmluZGluZ1BvaW50ZXI8VGV4
dHVyZT4gbUluY29tcGxldGVUZXh0dXJlc1tURVhUVVJFX1RZUEVfQ09VTlRdOwotCi0gICAgLy8g
UmVjb3JkZWQgZXJyb3JzCi0gICAgYm9vbCBtSW52YWxpZEVudW07Ci0gICAgYm9vbCBtSW52YWxp
ZFZhbHVlOwotICAgIGJvb2wgbUludmFsaWRPcGVyYXRpb247Ci0gICAgYm9vbCBtT3V0T2ZNZW1v
cnk7Ci0gICAgYm9vbCBtSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uOwotCi0gICAgLy8gQ3Vy
cmVudC9sb3N0IGNvbnRleHQgZmxhZ3MKLSAgICBib29sIG1IYXNCZWVuQ3VycmVudDsKLSAgICBi
b29sIG1Db250ZXh0TG9zdDsKLSAgICBHTGVudW0gbVJlc2V0U3RhdHVzOwotICAgIEdMZW51bSBt
UmVzZXRTdHJhdGVneTsKLSAgICBib29sIG1Sb2J1c3RBY2Nlc3M7Ci0KLSAgICB1bnNpZ25lZCBp
bnQgbUFwcGxpZWRUZXh0dXJlU2VyaWFsUFNbTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOwotICAg
IHVuc2lnbmVkIGludCBtQXBwbGllZFRleHR1cmVTZXJpYWxWU1tNQVhfVkVSVEVYX1RFWFRVUkVf
SU1BR0VfVU5JVFNfVlRGXTsKLSAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRQcm9ncmFtQmluYXJ5
U2VyaWFsOwotICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlhbDsKLSAg
ICB1bnNpZ25lZCBpbnQgbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbDsKLSAgICB1bnNpZ25lZCBp
bnQgbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsOwotICAgIHVuc2lnbmVkIGludCBtQXBwbGll
ZElCU2VyaWFsOwotICAgIGJvb2wgbURlcHRoU3RlbmNpbEluaXRpYWxpemVkOwotICAgIGJvb2wg
bVZpZXdwb3J0SW5pdGlhbGl6ZWQ7Ci0gICAgRDNEVklFV1BPUlQ5IG1TZXRWaWV3cG9ydDsKLSAg
ICBib29sIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQ7Ci0gICAgRDNEU1VSRkFDRV9ERVND
IG1SZW5kZXJUYXJnZXREZXNjOwotICAgIGJvb2wgbUR4VW5pZm9ybXNEaXJ0eTsKLSAgICBCaW5k
aW5nUG9pbnRlcjxQcm9ncmFtQmluYXJ5PiBtQ3VycmVudFByb2dyYW1CaW5hcnk7Ci0gICAgRnJh
bWVidWZmZXIgKm1Cb3VuZERyYXdGcmFtZWJ1ZmZlcjsKLQotICAgIGJvb2wgbVN1cHBvcnRzU2hh
ZGVyTW9kZWwzOwotICAgIGZsb2F0IG1NYXhpbXVtUG9pbnRTaXplOwotICAgIGJvb2wgbVN1cHBv
cnRzVmVydGV4VGV4dHVyZTsKLSAgICBib29sIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmU7Ci0g
ICAgYm9vbCBtU3VwcG9ydHNJbnN0YW5jaW5nOwotICAgIGludCAgbU1heFJlbmRlcmJ1ZmZlckRp
bWVuc2lvbjsKLSAgICBpbnQgIG1NYXhUZXh0dXJlRGltZW5zaW9uOwotICAgIGludCAgbU1heEN1
YmVUZXh0dXJlRGltZW5zaW9uOwotICAgIGludCAgbU1heFRleHR1cmVMZXZlbDsKLSAgICBmbG9h
dCBtTWF4VGV4dHVyZUFuaXNvdHJvcHk7Ci0gICAgc3RkOjptYXA8RDNERk9STUFULCBib29sICo+
IG1NdWx0aVNhbXBsZVN1cHBvcnQ7Ci0gICAgR0xzaXplaSBtTWF4U3VwcG9ydGVkU2FtcGxlczsK
LSAgICBib29sIG1TdXBwb3J0c0V2ZW50UXVlcmllczsKLSAgICBib29sIG1TdXBwb3J0c09jY2x1
c2lvblF1ZXJpZXM7Ci0gICAgYm9vbCBtU3VwcG9ydHNEWFQxVGV4dHVyZXM7Ci0gICAgYm9vbCBt
U3VwcG9ydHNEWFQzVGV4dHVyZXM7Ci0gICAgYm9vbCBtU3VwcG9ydHNEWFQ1VGV4dHVyZXM7Ci0g
ICAgYm9vbCBtU3VwcG9ydHNGbG9hdDMyVGV4dHVyZXM7Ci0gICAgYm9vbCBtU3VwcG9ydHNGbG9h
dDMyTGluZWFyRmlsdGVyOwotICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQzMlJlbmRlcmFibGVUZXh0
dXJlczsKLSAgICBib29sIG1TdXBwb3J0c0Zsb2F0MTZUZXh0dXJlczsKLSAgICBib29sIG1TdXBw
b3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXI7Ci0gICAgYm9vbCBtU3VwcG9ydHNGbG9hdDE2UmVuZGVy
YWJsZVRleHR1cmVzOwotICAgIGJvb2wgbVN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXM7Ci0gICAg
Ym9vbCBtU3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVzOwotICAgIGJvb2wgbVN1cHBvcnRz
RGVwdGhUZXh0dXJlczsKLSAgICBib29sIG1TdXBwb3J0czMyYml0SW5kaWNlczsKLSAgICBib29s
IG1TdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5OwotICAgIGJvb2wgbVN1cHBvcnRzRGVy
aXZhdGl2ZUluc3RydWN0aW9uczsKLSAgICBpbnQgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0
czsKLQotICAgIC8vIHN0YXRlIGNhY2hpbmcgZmxhZ3MKLSAgICBib29sIG1DbGVhclN0YXRlRGly
dHk7Ci0gICAgYm9vbCBtQ3VsbFN0YXRlRGlydHk7Ci0gICAgYm9vbCBtRGVwdGhTdGF0ZURpcnR5
OwotICAgIGJvb2wgbU1hc2tTdGF0ZURpcnR5OwotICAgIGJvb2wgbVBpeGVsUGFja2luZ1N0YXRl
RGlydHk7Ci0gICAgYm9vbCBtQmxlbmRTdGF0ZURpcnR5OwotICAgIGJvb2wgbVN0ZW5jaWxTdGF0
ZURpcnR5OwotICAgIGJvb2wgbVBvbHlnb25PZmZzZXRTdGF0ZURpcnR5OwotICAgIGJvb2wgbVNj
aXNzb3JTdGF0ZURpcnR5OwotICAgIGJvb2wgbVNhbXBsZVN0YXRlRGlydHk7Ci0gICAgYm9vbCBt
RnJvbnRGYWNlRGlydHk7Ci0gICAgYm9vbCBtRGl0aGVyU3RhdGVEaXJ0eTsKLQotICAgIElEaXJl
Y3QzRFN0YXRlQmxvY2s5ICptTWFza2VkQ2xlYXJTYXZlZFN0YXRlOwotCi0gICAgRDNEQ0FQUzkg
bURldmljZUNhcHM7Ci0KLSAgICBSZXNvdXJjZU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFnZXI7Ci0K
LSAgICBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlIG1WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOwotfTsK
LX0KLQotZXh0ZXJuICJDIgotewotLy8gRXhwb3J0ZWQgZnVuY3Rpb25zIGZvciB1c2UgYnkgRUdM
Ci1nbDo6Q29udGV4dCAqZ2xDcmVhdGVDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcs
IGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29s
IHJvYnVzdEFjY2Vzcyk7Ci12b2lkIGdsRGVzdHJveUNvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRl
eHQpOwotdm9pZCBnbE1ha2VDdXJyZW50KGdsOjpDb250ZXh0ICpjb250ZXh0LCBlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7Ci1nbDo6Q29udGV4dCAqZ2xHZXRD
dXJyZW50Q29udGV4dCgpOwotX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlw
ZSBfX3N0ZGNhbGwgZ2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICpwcm9jbmFtZSk7Ci1ib29s
IF9fc3RkY2FsbCBnbEJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwotfQotCi0j
ZW5kaWYgICAvLyBJTkNMVURFX0NPTlRFWFRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRDNEQ29uc3RhbnRUYWJsZS5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0QzRENvbnN0YW50VGFibGUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxNDVhNTY4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRDNEQ29uc3RhbnRUYWJsZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwyMzEgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIEQzRENvbnN0YW50VGFi
bGUuY3BwOiBJbXBsZW1lbnRzIHRoZSBEM0RDb25zdGFudFRhYmxlIGNsYXNzIHdoaWNoIHBhcnNl
cwotLy8gaW5mb3JtYXRpb24gYWJvdXQgY29uc3RhbnRzIGZyb20gdGhlIENUQUIgY29tbWVudCBp
biBhIEQzRCBzaGFkZXIgYmxvYi4KLS8vIFJlc3RydWN0dXJlcyB0aGUgY29uc3RhbnQgdGFibGUg
YXMgYSBoaWVyYXJjaHkgb2YgY29uc3RhbnRzIGluIHRoZSBzYW1lCi0vLyB3YXkgYXMgRDNEWC4K
LQotI2luY2x1ZGUgImxpYkdMRVN2Mi9EM0RDb25zdGFudFRhYmxlLmgiCi0KLSNpbmNsdWRlICJj
b21tb24vc3lzdGVtLmgiCi0jaW5jbHVkZSA8ZDNkOS5oPgotI2luY2x1ZGUgPGQzZDl0eXBlcy5o
PgotI2luY2x1ZGUgPG1tc3lzdGVtLmg+Ci0KLSNpbmNsdWRlICJsaWJHTEVTdjIvQmluYXJ5U3Ry
ZWFtLmgiCi0KLWNvbnN0IHN0YXRpYyBpbnQgU0hBREVSX1ZFUlNJT05fTUFTSyA9IEQzRFZTX1ZF
UlNJT04oMCwgMCk7Ci1jb25zdCBzdGF0aWMgaW50IEZPVVJDQ19DVEFCID0gTUFLRUZPVVJDQygn
QycsJ1QnLCdBJywnQicpOwotCi1uYW1lc3BhY2UgZ2wKLXsKLS8vIFRoZXNlIHN0cnVjdHMgYW5k
IGNvbnN0YW50cyBjb3JyZXNwb25kIHRvIHRoZSBmb3JtYXQgb2YgdGhlIGNvbnN0YW50IHRhYmxl
IGluIGEgc2hhZGVyIGJpbmFyeS4KLS8vIFRoZXkgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgc3Ry
dWN0dXJlcyBpbiBkM2R4OXNoYWRlci5oLgotbmFtZXNwYWNlIGN0YWIKLXsKLXN0cnVjdCBDb25z
dGFudFRhYmxlCi17Ci0gICAgRFdPUkQgc2l6ZTsKLSAgICBEV09SRCBjcmVhdG9yOwotICAgIERX
T1JEIHZlcnNpb247Ci0gICAgRFdPUkQgY29uc3RhbnRzOwotICAgIERXT1JEIGNvbnN0YW50SW5m
b3M7Ci0gICAgRFdPUkQgZmxhZ3M7Ci0gICAgRFdPUkQgdGFyZ2V0OwotfTsKLQotc3RydWN0IENv
bnN0YW50SW5mbwotewotICAgIERXT1JEIG5hbWU7Ci0gICAgV09SRCByZWdpc3RlclNldDsKLSAg
ICBXT1JEIHJlZ2lzdGVySW5kZXg7Ci0gICAgV09SRCByZWdpc3RlckNvdW50OwotICAgIFdPUkQg
cmVzZXJ2ZWQ7Ci0gICAgRFdPUkQgdHlwZUluZm87Ci0gICAgRFdPUkQgZGVmYXVsdFZhbHVlOwot
fTsKLQotc3RydWN0IFR5cGVJbmZvCi17Ci0gICAgV09SRCB0eXBlQ2xhc3M7Ci0gICAgV09SRCB0
eXBlOwotICAgIFdPUkQgcm93czsKLSAgICBXT1JEIGNvbHVtbnM7Ci0gICAgV09SRCBlbGVtZW50
czsKLSAgICBXT1JEIHN0cnVjdE1lbWJlcnM7Ci0gICAgRFdPUkQgc3RydWN0TWVtYmVySW5mb3M7
Ci19OwotCi1zdHJ1Y3QgU3RydWN0TWVtYmVySW5mbwotewotICAgIERXT1JEIG5hbWU7Ci0gICAg
RFdPUkQgdHlwZUluZm87Ci19OwotfQotCi1EM0RDb25zdGFudDo6RDNEQ29uc3RhbnQoY29uc3Qg
Y2hhciAqYmFzZSwgY29uc3QgY3RhYjo6Q29uc3RhbnRJbmZvICpjb25zdGFudEluZm8pCi17Ci0g
ICAgY29uc3QgY3RhYjo6VHlwZUluZm8gKnR5cGVJbmZvID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjdGFiOjpUeXBlSW5mbyo+KGJhc2UgKyBjb25zdGFudEluZm8tPnR5cGVJbmZvKTsKLQotICAg
IG5hbWUgPSBiYXNlICsgY29uc3RhbnRJbmZvLT5uYW1lOwotICAgIHJlZ2lzdGVyU2V0ID0gc3Rh
dGljX2Nhc3Q8UmVnaXN0ZXJTZXQ+KGNvbnN0YW50SW5mby0+cmVnaXN0ZXJTZXQpOwotICAgIHJl
Z2lzdGVySW5kZXggPSBjb25zdGFudEluZm8tPnJlZ2lzdGVySW5kZXg7Ci0gICAgcmVnaXN0ZXJD
b3VudCA9IGNvbnN0YW50SW5mby0+cmVnaXN0ZXJDb3VudDsKLSAgICB0eXBlQ2xhc3MgPSBzdGF0
aWNfY2FzdDxDbGFzcz4odHlwZUluZm8tPnR5cGVDbGFzcyk7Ci0gICAgdHlwZSA9IHN0YXRpY19j
YXN0PFR5cGU+KHR5cGVJbmZvLT50eXBlKTsKLSAgICByb3dzID0gdHlwZUluZm8tPnJvd3M7Ci0g
ICAgY29sdW1ucyA9IHR5cGVJbmZvLT5jb2x1bW5zOwotICAgIGVsZW1lbnRzID0gdHlwZUluZm8t
PmVsZW1lbnRzOwotCi0gICAgaWYgKHR5cGVDbGFzcyA9PSBDTEFTU19TVFJVQ1QpCi0gICAgewot
ICAgICAgICBhZGRTdHJ1Y3RNZW1iZXJzKGJhc2UsIHJlZ2lzdGVyU2V0LCByZWdpc3RlckluZGV4
LCByZWdpc3RlckluZGV4ICsgcmVnaXN0ZXJDb3VudCwgdHlwZUluZm8pOwotICAgIH0KLX0KLQot
RDNEQ29uc3RhbnQ6OkQzRENvbnN0YW50KGNvbnN0IGNoYXIgKmJhc2UsIFJlZ2lzdGVyU2V0IHJl
Z2lzdGVyU2V0LCB1bnNpZ25lZCByZWdpc3RlckluZGV4LCB1bnNpZ25lZCBtYXhSZWdpc3Rlciwg
Y29uc3QgY3RhYjo6U3RydWN0TWVtYmVySW5mbyAqbWVtYmVySW5mbykKLSAgICA6IHJlZ2lzdGVy
U2V0KHJlZ2lzdGVyU2V0KSwgcmVnaXN0ZXJJbmRleChyZWdpc3RlckluZGV4KQotewotICAgIGNv
bnN0IGN0YWI6OlR5cGVJbmZvICp0eXBlSW5mbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY3Rh
Yjo6VHlwZUluZm8qPihiYXNlICsgbWVtYmVySW5mby0+dHlwZUluZm8pOwotCi0gICAgbmFtZSA9
IGJhc2UgKyBtZW1iZXJJbmZvLT5uYW1lOwotICAgIHJlZ2lzdGVyQ291bnQgPSBzdGQ6Om1pbihz
dGF0aWNfY2FzdDxpbnQ+KG1heFJlZ2lzdGVyIC0gcmVnaXN0ZXJJbmRleCksIHR5cGVJbmZvLT5y
b3dzICogdHlwZUluZm8tPmVsZW1lbnRzKTsKLSAgICB0eXBlQ2xhc3MgPSBzdGF0aWNfY2FzdDxD
bGFzcz4odHlwZUluZm8tPnR5cGVDbGFzcyk7Ci0gICAgdHlwZSA9IHN0YXRpY19jYXN0PFR5cGU+
KHR5cGVJbmZvLT50eXBlKTsKLSAgICByb3dzID0gdHlwZUluZm8tPnJvd3M7Ci0gICAgY29sdW1u
cyA9IHR5cGVJbmZvLT5jb2x1bW5zOwotICAgIGVsZW1lbnRzID0gdHlwZUluZm8tPmVsZW1lbnRz
OwotCi0gICAgaWYgKHR5cGVDbGFzcyA9PSBDTEFTU19TVFJVQ1QpCi0gICAgewotICAgICAgICBy
ZWdpc3RlckNvdW50ID0gYWRkU3RydWN0TWVtYmVycyhiYXNlLCByZWdpc3RlclNldCwgcmVnaXN0
ZXJJbmRleCwgbWF4UmVnaXN0ZXIsIHR5cGVJbmZvKTsKLSAgICB9Ci19Ci0KLUQzRENvbnN0YW50
Ojp+RDNEQ29uc3RhbnQoKQotewotICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc3RydWN0TWVt
YmVycy5zaXplKCk7ICsraikKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RydWN0TWVtYmVyc1tqXS5zaXplKCk7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgZGVs
ZXRlIHN0cnVjdE1lbWJlcnNbal1baV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXVuc2lnbmVk
IEQzRENvbnN0YW50OjphZGRTdHJ1Y3RNZW1iZXJzKGNvbnN0IGNoYXIgKmJhc2UsIFJlZ2lzdGVy
U2V0IHJlZ2lzdGVyU2V0LCB1bnNpZ25lZCByZWdpc3RlckluZGV4LCB1bnNpZ25lZCBtYXhSZWdp
c3RlciwgY29uc3QgY3RhYjo6VHlwZUluZm8gKnR5cGVJbmZvKQotewotICAgIGNvbnN0IGN0YWI6
OlN0cnVjdE1lbWJlckluZm8gKm1lbWJlckluZm9zID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
dGFiOjpTdHJ1Y3RNZW1iZXJJbmZvKj4oCi0gICAgICAgIGJhc2UgKyB0eXBlSW5mby0+c3RydWN0
TWVtYmVySW5mb3MpOwotCi0gICAgdW5zaWduZWQgbWVtYmVySW5kZXggPSByZWdpc3RlckluZGV4
OwotCi0gICAgc3RydWN0TWVtYmVycy5yZXNpemUoZWxlbWVudHMpOwotCi0gICAgZm9yICh1bnNp
Z25lZCBqID0gMDsgaiA8IGVsZW1lbnRzOyArK2opCi0gICAgewotICAgICAgICBzdHJ1Y3RNZW1i
ZXJzW2pdLnJlc2l6ZSh0eXBlSW5mby0+c3RydWN0TWVtYmVycyk7Ci0KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHR5cGVJbmZvLT5zdHJ1Y3RNZW1iZXJzOyArK2kpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnN0IGN0YWI6OlR5cGVJbmZvICptZW1iZXJUeXBlSW5mbyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY3RhYjo6VHlwZUluZm8qPigKLSAgICAgICAgICAgICAgICBi
YXNlICsgbWVtYmVySW5mb3NbaV0udHlwZUluZm8pOwotCi0gICAgICAgICAgICBEM0RDb25zdGFu
dCAqbWVtYmVyID0gbmV3IEQzRENvbnN0YW50KGJhc2UsIHJlZ2lzdGVyU2V0LCBtZW1iZXJJbmRl
eCwgbWF4UmVnaXN0ZXIsIG1lbWJlckluZm9zICsgaSk7Ci0gICAgICAgICAgICBtZW1iZXJJbmRl
eCArPSBtZW1iZXItPnJlZ2lzdGVyQ291bnQ7Ci0KLSAgICAgICAgICAgIHN0cnVjdE1lbWJlcnNb
al1baV0gPSBtZW1iZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbWVtYmVySW5k
ZXggLSByZWdpc3RlckluZGV4OwotfQotCi1EM0RDb25zdGFudFRhYmxlOjpEM0RDb25zdGFudFRh
YmxlKHZvaWQgKmJsb2IsIHNpemVfdCBzaXplKSA6IG1FcnJvcihmYWxzZSkKLXsKLSAgICBCaW5h
cnlJbnB1dFN0cmVhbSBzdHJlYW0oYmxvYiwgc2l6ZSk7Ci0KLSAgICBpbnQgdmVyc2lvbjsKLSAg
ICBzdHJlYW0ucmVhZCgmdmVyc2lvbik7Ci0gICAgaWYgKCh2ZXJzaW9uICYgU0hBREVSX1ZFUlNJ
T05fTUFTSykgIT0gU0hBREVSX1ZFUlNJT05fTUFTSykKLSAgICB7Ci0gICAgICAgIG1FcnJvciA9
IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBjdGFiOjpDb25zdGFu
dFRhYmxlKiBjb25zdGFudFRhYmxlID0gTlVMTDsKLQotICAgIHdoaWxlICghc3RyZWFtLmVycm9y
KCkpCi0gICAgewotICAgICAgICBpbnQgdG9rZW47Ci0gICAgICAgIHN0cmVhbS5yZWFkKCZ0b2tl
bik7Ci0KLSAgICAgICAgaWYgKCh0b2tlbiAmIEQzRFNJX09QQ09ERV9NQVNLKSA9PSBEM0RTSU9f
Q09NTUVOVCkKLSAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9ICgodG9rZW4g
JiBEM0RTSV9DT01NRU5UU0laRV9NQVNLKSA+PiBEM0RTSV9DT01NRU5UU0laRV9TSElGVCkgKiBz
aXplb2YoRFdPUkQpOwotCi0gICAgICAgICAgICBpbnQgZm91cmNjOwotICAgICAgICAgICAgc3Ry
ZWFtLnJlYWQoJmZvdXJjYyk7Ci0gICAgICAgICAgICBpZiAoZm91cmNjID09IEZPVVJDQ19DVEFC
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0YW50VGFibGUgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGN0YWI6OkNvbnN0YW50VGFibGUqPihzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oYmxvYikgKyBzdHJlYW0ub2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdHJlYW0uc2tpcChsZW5ndGggLSBzaXplb2Yo
Zm91cmNjKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodG9rZW4gPT0gRDNEU0lPX0VO
RCkKLSAgICAgICAgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBtRXJyb3IgPSAhY29uc3RhbnRUYWJsZSB8fCBzdHJlYW0uZXJyb3IoKTsKLSAgICBpZiAobUVy
cm9yKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIgKmJh
c2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb25zdGFudFRhYmxlKTsKLQotICAg
IG1Db25zdGFudHMucmVzaXplKGNvbnN0YW50VGFibGUtPmNvbnN0YW50cyk7Ci0gICAgY29uc3Qg
Y3RhYjo6Q29uc3RhbnRJbmZvICpjb25zdGFudEluZm9zID0KLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjdGFiOjpDb25zdGFudEluZm8qPihiYXNlICsgY29uc3RhbnRUYWJsZS0+Y29u
c3RhbnRJbmZvcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25zdGFudFRhYmxlLT5j
b25zdGFudHM7ICsraSkKLSAgICB7Ci0gICAgICAgIG1Db25zdGFudHNbaV0gPSBuZXcgRDNEQ29u
c3RhbnQoYmFzZSwgY29uc3RhbnRJbmZvcyArIGkpOwotICAgIH0KLX0KLQotRDNEQ29uc3RhbnRU
YWJsZTo6fkQzRENvbnN0YW50VGFibGUoKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bUNvbnN0YW50cy5zaXplKCk7ICsraSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSBtQ29uc3RhbnRz
W2ldOwotICAgIH0KLX0KLQotY29uc3QgRDNEQ29uc3RhbnQgKkQzRENvbnN0YW50VGFibGU6Omdl
dENvbnN0YW50KHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBtQ29uc3RhbnRz
W2luZGV4XTsKLX0KLQotY29uc3QgRDNEQ29uc3RhbnQgKkQzRENvbnN0YW50VGFibGU6OmdldENv
bnN0YW50QnlOYW1lKGNvbnN0IGNoYXIgKm5hbWUpIGNvbnN0Ci17Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtQ29uc3RhbnRzLnNpemUoKTsgKytpKQotICAgIHsKLSAgICAgICAgY29uc3Qg
RDNEQ29uc3RhbnQgKmNvbnN0YW50ID0gZ2V0Q29uc3RhbnQoaSk7Ci0gICAgICAgIGlmIChjb25z
dGFudC0+bmFtZSA9PSBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3Rh
bnQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9EM0RDb25zdGFudFRh
YmxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0QzRENvbnN0YW50
VGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjM3NjkxMS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0QzRENvbnN0YW50VGFi
bGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChj
KSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8g
RDNEQ29uc3RhbnRUYWJsZS5oOiBJbXBsZW1lbnRzIHRoZSBEM0RDb25zdGFudFRhYmxlIGNsYXNz
IHdoaWNoIHBhcnNlcwotLy8gaW5mb3JtYXRpb24gYWJvdXQgY29uc3RhbnRzIGZyb20gdGhlIENU
QUIgY29tbWVudCBpbiBhIEQzRCBzaGFkZXIgYmxvYi4KLS8vIFJlc3RydWN0dXJlcyB0aGUgY29u
c3RhbnQgdGFibGUgYXMgYSBoaWVyYXJjaHkgb2YgY29uc3RhbnRzIGluIHRoZSBzYW1lCi0vLyB3
YXkgYXMgRDNEWC4KLQotI2lmbmRlZiBMSUJHTEVTVjJfRDNEQ09OU1RBTlRUQUJMRV9IXwotI2Rl
ZmluZSBMSUJHTEVTVjJfRDNEQ09OU1RBTlRUQUJMRV9IXwotCi0jaW5jbHVkZSA8dmVjdG9yPgot
I2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0KLW5h
bWVzcGFjZSBnbAotewotCi1uYW1lc3BhY2UgY3RhYgotewotc3RydWN0IENvbnN0YW50VGFibGU7
Ci1zdHJ1Y3QgQ29uc3RhbnRJbmZvOwotc3RydWN0IFR5cGVJbmZvOwotc3RydWN0IFN0cnVjdE1l
bWJlckluZm87Ci19Ci0KLXN0cnVjdCBEM0RDb25zdGFudAotewotICAgIC8vIFRoZXNlIGVudW1z
IG1hdGNoIHRob3NlIGluIGQzZHg5c2hhZGVyLmguCi0gICAgZW51bSBDbGFzcwotICAgIHsKLSAg
ICAgICAgQ0xBU1NfU0NBTEFSLAotICAgICAgICBDTEFTU19WRUNUT1IsCi0gICAgICAgIENMQVNT
X01BVFJJWF9ST1dTLAotICAgICAgICBDTEFTU19NQVRSSVhfQ09MVU1OUywKLSAgICAgICAgQ0xB
U1NfT0JKRUNULAotICAgICAgICBDTEFTU19TVFJVQ1QsCi0gICAgfTsKLQotICAgIGVudW0gUmVn
aXN0ZXJTZXQKLSAgICB7Ci0gICAgICAgIFJTX0JPT0wsCi0gICAgICAgIFJTX0lOVDQsCi0gICAg
ICAgIFJTX0ZMT0FUNCwKLSAgICAgICAgUlNfU0FNUExFUiwKLSAgICB9OwotCi0gICAgZW51bSBU
eXBlCi0gICAgewotICAgICAgICBQVF9WT0lELAotICAgICAgICBQVF9CT09MLAotICAgICAgICBQ
VF9JTlQsCi0gICAgICAgIFBUX0ZMT0FULAotICAgICAgICBQVF9TVFJJTkcsCi0gICAgICAgIFBU
X1RFWFRVUkUsCi0gICAgICAgIFBUX1RFWFRVUkUxRCwKLSAgICAgICAgUFRfVEVYVFVSRTJELAot
ICAgICAgICBQVF9URVhUVVJFM0QsCi0gICAgICAgIFBUX1RFWFRVUkVDVUJFLAotICAgICAgICBQ
VF9TQU1QTEVSLAotICAgICAgICBQVF9TQU1QTEVSMUQsCi0gICAgICAgIFBUX1NBTVBMRVIyRCwK
LSAgICAgICAgUFRfU0FNUExFUjNELAotICAgICAgICBQVF9TQU1QTEVSQ1VCRSwKLSAgICAgICAg
UFRfUElYRUxTSEFERVIsCi0gICAgICAgIFBUX1ZFUlRFWFNIQURFUiwKLSAgICAgICAgUFRfUElY
RUxGUkFHTUVOVCwKLSAgICAgICAgUFRfVkVSVEVYRlJBR01FTlQsCi0gICAgICAgIFBUX1VOU1VQ
UE9SVEVELAotICAgIH07Ci0gICAgCi0gICAgRDNEQ29uc3RhbnQoY29uc3QgY2hhciAqYmFzZSwg
Y29uc3QgY3RhYjo6Q29uc3RhbnRJbmZvICpjb25zdGFudEluZm8pOwotICAgIH5EM0RDb25zdGFu
dCgpOwotCi0gICAgc3RkOjpzdHJpbmcgbmFtZTsKLSAgICBSZWdpc3RlclNldCByZWdpc3RlclNl
dDsKLSAgICB1bnNpZ25lZCByZWdpc3RlckluZGV4OwotICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291
bnQ7Ci0gICAgQ2xhc3MgdHlwZUNsYXNzOwotICAgIFR5cGUgdHlwZTsKLSAgICB1bnNpZ25lZCBy
b3dzOwotICAgIHVuc2lnbmVkIGNvbHVtbnM7Ci0gICAgdW5zaWduZWQgZWxlbWVudHM7Ci0KLSAg
ICAvLyBBcnJheSBvZiBzdHJ1Y3R1cmUgbWVtYmVycy4KLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZl
Y3Rvcjxjb25zdCBEM0RDb25zdGFudCo+ID4gc3RydWN0TWVtYmVyczsgICAgCi0KLSAgcHJpdmF0
ZToKLSAgICBEM0RDb25zdGFudChjb25zdCBjaGFyICpiYXNlLCBSZWdpc3RlclNldCByZWdpc3Rl
clNldCwgdW5zaWduZWQgcmVnaXN0ZXJJbmRleCwgdW5zaWduZWQgbWF4UmVnaXN0ZXIsIGNvbnN0
IGN0YWI6OlN0cnVjdE1lbWJlckluZm8gKm1lbWJlckluZm8pOwotICAgIHVuc2lnbmVkIGFkZFN0
cnVjdE1lbWJlcnMoY29uc3QgY2hhciAqYmFzZSwgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJTZXQsIHVu
c2lnbmVkIHJlZ2lzdGVySW5kZXgsIHVuc2lnbmVkIG1heFJlZ2lzdGVyLCBjb25zdCBjdGFiOjpU
eXBlSW5mbyAqdHlwZUluZm8pOwotfTsKLQotY2xhc3MgRDNEQ29uc3RhbnRUYWJsZQotewotICBw
dWJsaWM6Ci0gICAgRDNEQ29uc3RhbnRUYWJsZSh2b2lkICpibG9iLCBzaXplX3Qgc2l6ZSk7Ci0g
ICAgfkQzRENvbnN0YW50VGFibGUoKTsKLQotICAgIGJvb2wgZXJyb3IoKSBjb25zdCB7IHJldHVy
biBtRXJyb3I7IH0KLQotICAgIHVuc2lnbmVkIGNvbnN0YW50cygpIGNvbnN0IHsgcmV0dXJuIG1D
b25zdGFudHMuc2l6ZSgpOyB9Ci0gICAgY29uc3QgRDNEQ29uc3RhbnQgKmdldENvbnN0YW50KHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICBjb25zdCBEM0RDb25zdGFudCAqZ2V0Q29uc3RhbnRC
eU5hbWUoY29uc3QgY2hhciAqbmFtZSkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToKLSAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oRDNEQ29uc3RhbnRUYWJsZSk7Ci0gICAgc3RkOjp2ZWN0b3I8Y29u
c3QgRDNEQ29uc3RhbnQqPiBtQ29uc3RhbnRzOwotICAgIGJvb2wgbUVycm9yOwotfTsKLQotfQot
Ci0jZW5kaWYgICAvLyBMSUJHTEVTVjJfRDNEQ09OU1RBTlRUQUJMRV9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMTRkMTIzOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBGZW5jZS5jcHA6IEltcGxlbWVudHMgdGhlIGds
OjpGZW5jZSBjbGFzcywgd2hpY2ggc3VwcG9ydHMgdGhlIEdMX05WX2ZlbmNlIGV4dGVuc2lvbi4K
LQotI2luY2x1ZGUgImxpYkdMRVN2Mi9GZW5jZS5oIgotCi0jaW5jbHVkZSAibGliR0xFU3YyL21h
aW4uaCIKLQotbmFtZXNwYWNlIGdsCi17Ci0KLUZlbmNlOjpGZW5jZShlZ2w6OkRpc3BsYXkqIGRp
c3BsYXkpCi17Ci0gICAgbURpc3BsYXkgPSBkaXNwbGF5OwotICAgIG1RdWVyeSA9IE5VTEw7Ci0g
ICAgbUNvbmRpdGlvbiA9IEdMX05PTkU7Ci0gICAgbVN0YXR1cyA9IEdMX0ZBTFNFOwotfQotCi1G
ZW5jZTo6fkZlbmNlKCkKLXsKLSAgICBpZiAobVF1ZXJ5ICE9IE5VTEwpCi0gICAgewotICAgICAg
ICBtRGlzcGxheS0+ZnJlZUV2ZW50UXVlcnkobVF1ZXJ5KTsKLSAgICB9Ci19Ci0KLUdMYm9vbGVh
biBGZW5jZTo6aXNGZW5jZSgpCi17Ci0gICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKLSAgICAvLyBB
IG5hbWUgcmV0dXJuZWQgYnkgR2VuRmVuY2VzTlYsIGJ1dCBub3QgeWV0IHNldCB2aWEgU2V0RmVu
Y2VOViwgaXMgbm90IHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGZlbmNlLgotICAgIHJldHVybiBt
UXVlcnkgIT0gTlVMTDsKLX0KLQotdm9pZCBGZW5jZTo6c2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlv
bikKLXsKLSAgICBpZiAoIW1RdWVyeSkKLSAgICB7Ci0gICAgICAgIG1RdWVyeSA9IG1EaXNwbGF5
LT5hbGxvY2F0ZUV2ZW50UXVlcnkoKTsKLSAgICAgICAgaWYgKCFtUXVlcnkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9FTkQp
OwotICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICBtQ29uZGl0aW9uID0gY29u
ZGl0aW9uOwotICAgIG1TdGF0dXMgPSBHTF9GQUxTRTsKLX0KLQotR0xib29sZWFuIEZlbmNlOjp0
ZXN0RmVuY2UoKQotewotICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgR0xfVFJVRSk7Ci0gICAgfQotCi0gICAg
SFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPkdldERhdGEoTlVMTCwgMCwgRDNER0VUREFUQV9GTFVT
SCk7Ci0KLSAgICBpZiAoY2hlY2tEZXZpY2VMb3N0KHJlc3VsdCkpCi0gICAgewotICAgICAgIHJl
dHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9UUlVFKTsKLSAgICB9Ci0KLSAgICBBU1NF
UlQocmVzdWx0ID09IFNfT0sgfHwgcmVzdWx0ID09IFNfRkFMU0UpOwotICAgIG1TdGF0dXMgPSBy
ZXN1bHQgPT0gU19PSzsKLSAgICByZXR1cm4gbVN0YXR1czsKLX0KLQotdm9pZCBGZW5jZTo6Zmlu
aXNoRmVuY2UoKQotewotICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgfQotCi0gICAgd2hpbGUgKCF0
ZXN0RmVuY2UoKSkKLSAgICB7Ci0gICAgICAgIFNsZWVwKDApOwotICAgIH0KLX0KLQotdm9pZCBG
ZW5jZTo6Z2V0RmVuY2VpdihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYg
KG1RdWVyeSA9PSBOVUxMKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgICAg
Y2FzZSBHTF9GRU5DRV9TVEFUVVNfTlY6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdMX05W
X2ZlbmNlIHNwZWM6Ci0gICAgICAgICAgICAvLyBPbmNlIHRoZSBzdGF0dXMgb2YgYSBmZW5jZSBo
YXMgYmVlbiBmaW5pc2hlZCAodmlhIEZpbmlzaEZlbmNlTlYpIG9yIHRlc3RlZCBhbmQgdGhlIHJl
dHVybmVkIHN0YXR1cyBpcyBUUlVFICh2aWEgZWl0aGVyIFRlc3RGZW5jZU5WCi0gICAgICAgICAg
ICAvLyBvciBHZXRGZW5jZWl2TlYgcXVlcnlpbmcgdGhlIEZFTkNFX1NUQVRVU19OViksIHRoZSBz
dGF0dXMgcmVtYWlucyBUUlVFIHVudGlsIHRoZSBuZXh0IFNldEZlbmNlTlYgb2YgdGhlIGZlbmNl
LgotICAgICAgICAgICAgaWYgKG1TdGF0dXMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcGFyYW1zWzBdID0gR0xfVFJVRTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5
LT5HZXREYXRhKE5VTEwsIDAsIDApOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoY2hl
Y2tEZXZpY2VMb3N0KHJlc3VsdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFy
YW1zWzBdID0gR0xfVFJVRTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0g
U19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7Ci0gICAgICAgICAgICBtU3RhdHVzID0gcmVzdWx0
ID09IFNfT0s7Ci0gICAgICAgICAgICBwYXJhbXNbMF0gPSBtU3RhdHVzOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0ZFTkNFX0NP
TkRJVElPTl9OVjoKLSAgICAgICAgICAgIHBhcmFtc1swXSA9IG1Db25kaXRpb247Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDk2MjZjYjAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gRmVuY2UuaDogRGVmaW5lcyB0aGUgZ2w6OkZl
bmNlIGNsYXNzLCB3aGljaCBzdXBwb3J0cyB0aGUgR0xfTlZfZmVuY2UgZXh0ZW5zaW9uLgotCi0j
aWZuZGVmIExJQkdMRVNWMl9GRU5DRV9IXwotI2RlZmluZSBMSUJHTEVTVjJfRkVOQ0VfSF8KLQot
I2RlZmluZSBHTF9BUElDQUxMCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0jaW5jbHVkZSA8ZDNk
OS5oPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLQotbmFtZXNwYWNlIGVnbAot
ewotY2xhc3MgRGlzcGxheTsKLX0KLQotbmFtZXNwYWNlIGdsCi17Ci0KLWNsYXNzIEZlbmNlCi17
Ci0gIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGZW5jZShlZ2w6OkRpc3BsYXkqIGRpc3BsYXkpOwot
ICAgIHZpcnR1YWwgfkZlbmNlKCk7Ci0KLSAgICBHTGJvb2xlYW4gaXNGZW5jZSgpOwotICAgIHZv
aWQgc2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlvbik7Ci0gICAgR0xib29sZWFuIHRlc3RGZW5jZSgp
OwotICAgIHZvaWQgZmluaXNoRmVuY2UoKTsKLSAgICB2b2lkIGdldEZlbmNlaXYoR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKTsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihGZW5jZSk7Ci0KLSAgICBlZ2w6OkRpc3BsYXkqIG1EaXNwbGF5OwotICAgIElEaXJl
Y3QzRFF1ZXJ5OSogbVF1ZXJ5OwotICAgIEdMZW51bSBtQ29uZGl0aW9uOwotICAgIEdMYm9vbGVh
biBtU3RhdHVzOwotfTsKLQotfQotCi0jZW5kaWYgICAvLyBMSUJHTEVTVjJfRkVOQ0VfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmxvYXQxNlRv
RmxvYXQzMi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Zsb2F0
MTZUb0Zsb2F0MzIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkYTM2ODdkLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmxvYXQx
NlRvRmxvYXQzMi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAzICswLDAgQEAKLS8vDQotLy8g
Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuDQotLy8NCi0NCi0vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuDQot
DQotbmFtZXNwYWNlIGdsDQotew0KLQ0KLWNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX21hbnRpc3Nh
WzIwNDhdID0gew0KLSAgICAweDAwMDAwMDAwLA0KLSAgICAweDMzODAwMDAwLA0KLSAgICAweDM0
MDAwMDAwLA0KLSAgICAweDM0NDAwMDAwLA0KLSAgICAweDM0ODAwMDAwLA0KLSAgICAweDM0YTAw
MDAwLA0KLSAgICAweDM0YzAwMDAwLA0KLSAgICAweDM0ZTAwMDAwLA0KLSAgICAweDM1MDAwMDAw
LA0KLSAgICAweDM1MTAwMDAwLA0KLSAgICAweDM1MjAwMDAwLA0KLSAgICAweDM1MzAwMDAwLA0K
LSAgICAweDM1NDAwMDAwLA0KLSAgICAweDM1NTAwMDAwLA0KLSAgICAweDM1NjAwMDAwLA0KLSAg
ICAweDM1NzAwMDAwLA0KLSAgICAweDM1ODAwMDAwLA0KLSAgICAweDM1ODgwMDAwLA0KLSAgICAw
eDM1OTAwMDAwLA0KLSAgICAweDM1OTgwMDAwLA0KLSAgICAweDM1YTAwMDAwLA0KLSAgICAweDM1
YTgwMDAwLA0KLSAgICAweDM1YjAwMDAwLA0KLSAgICAweDM1YjgwMDAwLA0KLSAgICAweDM1YzAw
MDAwLA0KLSAgICAweDM1YzgwMDAwLA0KLSAgICAweDM1ZDAwMDAwLA0KLSAgICAweDM1ZDgwMDAw
LA0KLSAgICAweDM1ZTAwMDAwLA0KLSAgICAweDM1ZTgwMDAwLA0KLSAgICAweDM1ZjAwMDAwLA0K
LSAgICAweDM1ZjgwMDAwLA0KLSAgICAweDM2MDAwMDAwLA0KLSAgICAweDM2MDQwMDAwLA0KLSAg
ICAweDM2MDgwMDAwLA0KLSAgICAweDM2MGMwMDAwLA0KLSAgICAweDM2MTAwMDAwLA0KLSAgICAw
eDM2MTQwMDAwLA0KLSAgICAweDM2MTgwMDAwLA0KLSAgICAweDM2MWMwMDAwLA0KLSAgICAweDM2
MjAwMDAwLA0KLSAgICAweDM2MjQwMDAwLA0KLSAgICAweDM2MjgwMDAwLA0KLSAgICAweDM2MmMw
MDAwLA0KLSAgICAweDM2MzAwMDAwLA0KLSAgICAweDM2MzQwMDAwLA0KLSAgICAweDM2MzgwMDAw
LA0KLSAgICAweDM2M2MwMDAwLA0KLSAgICAweDM2NDAwMDAwLA0KLSAgICAweDM2NDQwMDAwLA0K
LSAgICAweDM2NDgwMDAwLA0KLSAgICAweDM2NGMwMDAwLA0KLSAgICAweDM2NTAwMDAwLA0KLSAg
ICAweDM2NTQwMDAwLA0KLSAgICAweDM2NTgwMDAwLA0KLSAgICAweDM2NWMwMDAwLA0KLSAgICAw
eDM2NjAwMDAwLA0KLSAgICAweDM2NjQwMDAwLA0KLSAgICAweDM2NjgwMDAwLA0KLSAgICAweDM2
NmMwMDAwLA0KLSAgICAweDM2NzAwMDAwLA0KLSAgICAweDM2NzQwMDAwLA0KLSAgICAweDM2Nzgw
MDAwLA0KLSAgICAweDM2N2MwMDAwLA0KLSAgICAweDM2ODAwMDAwLA0KLSAgICAweDM2ODIwMDAw
LA0KLSAgICAweDM2ODQwMDAwLA0KLSAgICAweDM2ODYwMDAwLA0KLSAgICAweDM2ODgwMDAwLA0K
LSAgICAweDM2OGEwMDAwLA0KLSAgICAweDM2OGMwMDAwLA0KLSAgICAweDM2OGUwMDAwLA0KLSAg
ICAweDM2OTAwMDAwLA0KLSAgICAweDM2OTIwMDAwLA0KLSAgICAweDM2OTQwMDAwLA0KLSAgICAw
eDM2OTYwMDAwLA0KLSAgICAweDM2OTgwMDAwLA0KLSAgICAweDM2OWEwMDAwLA0KLSAgICAweDM2
OWMwMDAwLA0KLSAgICAweDM2OWUwMDAwLA0KLSAgICAweDM2YTAwMDAwLA0KLSAgICAweDM2YTIw
MDAwLA0KLSAgICAweDM2YTQwMDAwLA0KLSAgICAweDM2YTYwMDAwLA0KLSAgICAweDM2YTgwMDAw
LA0KLSAgICAweDM2YWEwMDAwLA0KLSAgICAweDM2YWMwMDAwLA0KLSAgICAweDM2YWUwMDAwLA0K
LSAgICAweDM2YjAwMDAwLA0KLSAgICAweDM2YjIwMDAwLA0KLSAgICAweDM2YjQwMDAwLA0KLSAg
ICAweDM2YjYwMDAwLA0KLSAgICAweDM2YjgwMDAwLA0KLSAgICAweDM2YmEwMDAwLA0KLSAgICAw
eDM2YmMwMDAwLA0KLSAgICAweDM2YmUwMDAwLA0KLSAgICAweDM2YzAwMDAwLA0KLSAgICAweDM2
YzIwMDAwLA0KLSAgICAweDM2YzQwMDAwLA0KLSAgICAweDM2YzYwMDAwLA0KLSAgICAweDM2Yzgw
MDAwLA0KLSAgICAweDM2Y2EwMDAwLA0KLSAgICAweDM2Y2MwMDAwLA0KLSAgICAweDM2Y2UwMDAw
LA0KLSAgICAweDM2ZDAwMDAwLA0KLSAgICAweDM2ZDIwMDAwLA0KLSAgICAweDM2ZDQwMDAwLA0K
LSAgICAweDM2ZDYwMDAwLA0KLSAgICAweDM2ZDgwMDAwLA0KLSAgICAweDM2ZGEwMDAwLA0KLSAg
ICAweDM2ZGMwMDAwLA0KLSAgICAweDM2ZGUwMDAwLA0KLSAgICAweDM2ZTAwMDAwLA0KLSAgICAw
eDM2ZTIwMDAwLA0KLSAgICAweDM2ZTQwMDAwLA0KLSAgICAweDM2ZTYwMDAwLA0KLSAgICAweDM2
ZTgwMDAwLA0KLSAgICAweDM2ZWEwMDAwLA0KLSAgICAweDM2ZWMwMDAwLA0KLSAgICAweDM2ZWUw
MDAwLA0KLSAgICAweDM2ZjAwMDAwLA0KLSAgICAweDM2ZjIwMDAwLA0KLSAgICAweDM2ZjQwMDAw
LA0KLSAgICAweDM2ZjYwMDAwLA0KLSAgICAweDM2ZjgwMDAwLA0KLSAgICAweDM2ZmEwMDAwLA0K
LSAgICAweDM2ZmMwMDAwLA0KLSAgICAweDM2ZmUwMDAwLA0KLSAgICAweDM3MDAwMDAwLA0KLSAg
ICAweDM3MDEwMDAwLA0KLSAgICAweDM3MDIwMDAwLA0KLSAgICAweDM3MDMwMDAwLA0KLSAgICAw
eDM3MDQwMDAwLA0KLSAgICAweDM3MDUwMDAwLA0KLSAgICAweDM3MDYwMDAwLA0KLSAgICAweDM3
MDcwMDAwLA0KLSAgICAweDM3MDgwMDAwLA0KLSAgICAweDM3MDkwMDAwLA0KLSAgICAweDM3MGEw
MDAwLA0KLSAgICAweDM3MGIwMDAwLA0KLSAgICAweDM3MGMwMDAwLA0KLSAgICAweDM3MGQwMDAw
LA0KLSAgICAweDM3MGUwMDAwLA0KLSAgICAweDM3MGYwMDAwLA0KLSAgICAweDM3MTAwMDAwLA0K
LSAgICAweDM3MTEwMDAwLA0KLSAgICAweDM3MTIwMDAwLA0KLSAgICAweDM3MTMwMDAwLA0KLSAg
ICAweDM3MTQwMDAwLA0KLSAgICAweDM3MTUwMDAwLA0KLSAgICAweDM3MTYwMDAwLA0KLSAgICAw
eDM3MTcwMDAwLA0KLSAgICAweDM3MTgwMDAwLA0KLSAgICAweDM3MTkwMDAwLA0KLSAgICAweDM3
MWEwMDAwLA0KLSAgICAweDM3MWIwMDAwLA0KLSAgICAweDM3MWMwMDAwLA0KLSAgICAweDM3MWQw
MDAwLA0KLSAgICAweDM3MWUwMDAwLA0KLSAgICAweDM3MWYwMDAwLA0KLSAgICAweDM3MjAwMDAw
LA0KLSAgICAweDM3MjEwMDAwLA0KLSAgICAweDM3MjIwMDAwLA0KLSAgICAweDM3MjMwMDAwLA0K
LSAgICAweDM3MjQwMDAwLA0KLSAgICAweDM3MjUwMDAwLA0KLSAgICAweDM3MjYwMDAwLA0KLSAg
ICAweDM3MjcwMDAwLA0KLSAgICAweDM3MjgwMDAwLA0KLSAgICAweDM3MjkwMDAwLA0KLSAgICAw
eDM3MmEwMDAwLA0KLSAgICAweDM3MmIwMDAwLA0KLSAgICAweDM3MmMwMDAwLA0KLSAgICAweDM3
MmQwMDAwLA0KLSAgICAweDM3MmUwMDAwLA0KLSAgICAweDM3MmYwMDAwLA0KLSAgICAweDM3MzAw
MDAwLA0KLSAgICAweDM3MzEwMDAwLA0KLSAgICAweDM3MzIwMDAwLA0KLSAgICAweDM3MzMwMDAw
LA0KLSAgICAweDM3MzQwMDAwLA0KLSAgICAweDM3MzUwMDAwLA0KLSAgICAweDM3MzYwMDAwLA0K
LSAgICAweDM3MzcwMDAwLA0KLSAgICAweDM3MzgwMDAwLA0KLSAgICAweDM3MzkwMDAwLA0KLSAg
ICAweDM3M2EwMDAwLA0KLSAgICAweDM3M2IwMDAwLA0KLSAgICAweDM3M2MwMDAwLA0KLSAgICAw
eDM3M2QwMDAwLA0KLSAgICAweDM3M2UwMDAwLA0KLSAgICAweDM3M2YwMDAwLA0KLSAgICAweDM3
NDAwMDAwLA0KLSAgICAweDM3NDEwMDAwLA0KLSAgICAweDM3NDIwMDAwLA0KLSAgICAweDM3NDMw
MDAwLA0KLSAgICAweDM3NDQwMDAwLA0KLSAgICAweDM3NDUwMDAwLA0KLSAgICAweDM3NDYwMDAw
LA0KLSAgICAweDM3NDcwMDAwLA0KLSAgICAweDM3NDgwMDAwLA0KLSAgICAweDM3NDkwMDAwLA0K
LSAgICAweDM3NGEwMDAwLA0KLSAgICAweDM3NGIwMDAwLA0KLSAgICAweDM3NGMwMDAwLA0KLSAg
ICAweDM3NGQwMDAwLA0KLSAgICAweDM3NGUwMDAwLA0KLSAgICAweDM3NGYwMDAwLA0KLSAgICAw
eDM3NTAwMDAwLA0KLSAgICAweDM3NTEwMDAwLA0KLSAgICAweDM3NTIwMDAwLA0KLSAgICAweDM3
NTMwMDAwLA0KLSAgICAweDM3NTQwMDAwLA0KLSAgICAweDM3NTUwMDAwLA0KLSAgICAweDM3NTYw
MDAwLA0KLSAgICAweDM3NTcwMDAwLA0KLSAgICAweDM3NTgwMDAwLA0KLSAgICAweDM3NTkwMDAw
LA0KLSAgICAweDM3NWEwMDAwLA0KLSAgICAweDM3NWIwMDAwLA0KLSAgICAweDM3NWMwMDAwLA0K
LSAgICAweDM3NWQwMDAwLA0KLSAgICAweDM3NWUwMDAwLA0KLSAgICAweDM3NWYwMDAwLA0KLSAg
ICAweDM3NjAwMDAwLA0KLSAgICAweDM3NjEwMDAwLA0KLSAgICAweDM3NjIwMDAwLA0KLSAgICAw
eDM3NjMwMDAwLA0KLSAgICAweDM3NjQwMDAwLA0KLSAgICAweDM3NjUwMDAwLA0KLSAgICAweDM3
NjYwMDAwLA0KLSAgICAweDM3NjcwMDAwLA0KLSAgICAweDM3NjgwMDAwLA0KLSAgICAweDM3Njkw
MDAwLA0KLSAgICAweDM3NmEwMDAwLA0KLSAgICAweDM3NmIwMDAwLA0KLSAgICAweDM3NmMwMDAw
LA0KLSAgICAweDM3NmQwMDAwLA0KLSAgICAweDM3NmUwMDAwLA0KLSAgICAweDM3NmYwMDAwLA0K
LSAgICAweDM3NzAwMDAwLA0KLSAgICAweDM3NzEwMDAwLA0KLSAgICAweDM3NzIwMDAwLA0KLSAg
ICAweDM3NzMwMDAwLA0KLSAgICAweDM3NzQwMDAwLA0KLSAgICAweDM3NzUwMDAwLA0KLSAgICAw
eDM3NzYwMDAwLA0KLSAgICAweDM3NzcwMDAwLA0KLSAgICAweDM3NzgwMDAwLA0KLSAgICAweDM3
NzkwMDAwLA0KLSAgICAweDM3N2EwMDAwLA0KLSAgICAweDM3N2IwMDAwLA0KLSAgICAweDM3N2Mw
MDAwLA0KLSAgICAweDM3N2QwMDAwLA0KLSAgICAweDM3N2UwMDAwLA0KLSAgICAweDM3N2YwMDAw
LA0KLSAgICAweDM3ODAwMDAwLA0KLSAgICAweDM3ODA4MDAwLA0KLSAgICAweDM3ODEwMDAwLA0K
LSAgICAweDM3ODE4MDAwLA0KLSAgICAweDM3ODIwMDAwLA0KLSAgICAweDM3ODI4MDAwLA0KLSAg
ICAweDM3ODMwMDAwLA0KLSAgICAweDM3ODM4MDAwLA0KLSAgICAweDM3ODQwMDAwLA0KLSAgICAw
eDM3ODQ4MDAwLA0KLSAgICAweDM3ODUwMDAwLA0KLSAgICAweDM3ODU4MDAwLA0KLSAgICAweDM3
ODYwMDAwLA0KLSAgICAweDM3ODY4MDAwLA0KLSAgICAweDM3ODcwMDAwLA0KLSAgICAweDM3ODc4
MDAwLA0KLSAgICAweDM3ODgwMDAwLA0KLSAgICAweDM3ODg4MDAwLA0KLSAgICAweDM3ODkwMDAw
LA0KLSAgICAweDM3ODk4MDAwLA0KLSAgICAweDM3OGEwMDAwLA0KLSAgICAweDM3OGE4MDAwLA0K
LSAgICAweDM3OGIwMDAwLA0KLSAgICAweDM3OGI4MDAwLA0KLSAgICAweDM3OGMwMDAwLA0KLSAg
ICAweDM3OGM4MDAwLA0KLSAgICAweDM3OGQwMDAwLA0KLSAgICAweDM3OGQ4MDAwLA0KLSAgICAw
eDM3OGUwMDAwLA0KLSAgICAweDM3OGU4MDAwLA0KLSAgICAweDM3OGYwMDAwLA0KLSAgICAweDM3
OGY4MDAwLA0KLSAgICAweDM3OTAwMDAwLA0KLSAgICAweDM3OTA4MDAwLA0KLSAgICAweDM3OTEw
MDAwLA0KLSAgICAweDM3OTE4MDAwLA0KLSAgICAweDM3OTIwMDAwLA0KLSAgICAweDM3OTI4MDAw
LA0KLSAgICAweDM3OTMwMDAwLA0KLSAgICAweDM3OTM4MDAwLA0KLSAgICAweDM3OTQwMDAwLA0K
LSAgICAweDM3OTQ4MDAwLA0KLSAgICAweDM3OTUwMDAwLA0KLSAgICAweDM3OTU4MDAwLA0KLSAg
ICAweDM3OTYwMDAwLA0KLSAgICAweDM3OTY4MDAwLA0KLSAgICAweDM3OTcwMDAwLA0KLSAgICAw
eDM3OTc4MDAwLA0KLSAgICAweDM3OTgwMDAwLA0KLSAgICAweDM3OTg4MDAwLA0KLSAgICAweDM3
OTkwMDAwLA0KLSAgICAweDM3OTk4MDAwLA0KLSAgICAweDM3OWEwMDAwLA0KLSAgICAweDM3OWE4
MDAwLA0KLSAgICAweDM3OWIwMDAwLA0KLSAgICAweDM3OWI4MDAwLA0KLSAgICAweDM3OWMwMDAw
LA0KLSAgICAweDM3OWM4MDAwLA0KLSAgICAweDM3OWQwMDAwLA0KLSAgICAweDM3OWQ4MDAwLA0K
LSAgICAweDM3OWUwMDAwLA0KLSAgICAweDM3OWU4MDAwLA0KLSAgICAweDM3OWYwMDAwLA0KLSAg
ICAweDM3OWY4MDAwLA0KLSAgICAweDM3YTAwMDAwLA0KLSAgICAweDM3YTA4MDAwLA0KLSAgICAw
eDM3YTEwMDAwLA0KLSAgICAweDM3YTE4MDAwLA0KLSAgICAweDM3YTIwMDAwLA0KLSAgICAweDM3
YTI4MDAwLA0KLSAgICAweDM3YTMwMDAwLA0KLSAgICAweDM3YTM4MDAwLA0KLSAgICAweDM3YTQw
MDAwLA0KLSAgICAweDM3YTQ4MDAwLA0KLSAgICAweDM3YTUwMDAwLA0KLSAgICAweDM3YTU4MDAw
LA0KLSAgICAweDM3YTYwMDAwLA0KLSAgICAweDM3YTY4MDAwLA0KLSAgICAweDM3YTcwMDAwLA0K
LSAgICAweDM3YTc4MDAwLA0KLSAgICAweDM3YTgwMDAwLA0KLSAgICAweDM3YTg4MDAwLA0KLSAg
ICAweDM3YTkwMDAwLA0KLSAgICAweDM3YTk4MDAwLA0KLSAgICAweDM3YWEwMDAwLA0KLSAgICAw
eDM3YWE4MDAwLA0KLSAgICAweDM3YWIwMDAwLA0KLSAgICAweDM3YWI4MDAwLA0KLSAgICAweDM3
YWMwMDAwLA0KLSAgICAweDM3YWM4MDAwLA0KLSAgICAweDM3YWQwMDAwLA0KLSAgICAweDM3YWQ4
MDAwLA0KLSAgICAweDM3YWUwMDAwLA0KLSAgICAweDM3YWU4MDAwLA0KLSAgICAweDM3YWYwMDAw
LA0KLSAgICAweDM3YWY4MDAwLA0KLSAgICAweDM3YjAwMDAwLA0KLSAgICAweDM3YjA4MDAwLA0K
LSAgICAweDM3YjEwMDAwLA0KLSAgICAweDM3YjE4MDAwLA0KLSAgICAweDM3YjIwMDAwLA0KLSAg
ICAweDM3YjI4MDAwLA0KLSAgICAweDM3YjMwMDAwLA0KLSAgICAweDM3YjM4MDAwLA0KLSAgICAw
eDM3YjQwMDAwLA0KLSAgICAweDM3YjQ4MDAwLA0KLSAgICAweDM3YjUwMDAwLA0KLSAgICAweDM3
YjU4MDAwLA0KLSAgICAweDM3YjYwMDAwLA0KLSAgICAweDM3YjY4MDAwLA0KLSAgICAweDM3Yjcw
MDAwLA0KLSAgICAweDM3Yjc4MDAwLA0KLSAgICAweDM3YjgwMDAwLA0KLSAgICAweDM3Yjg4MDAw
LA0KLSAgICAweDM3YjkwMDAwLA0KLSAgICAweDM3Yjk4MDAwLA0KLSAgICAweDM3YmEwMDAwLA0K
LSAgICAweDM3YmE4MDAwLA0KLSAgICAweDM3YmIwMDAwLA0KLSAgICAweDM3YmI4MDAwLA0KLSAg
ICAweDM3YmMwMDAwLA0KLSAgICAweDM3YmM4MDAwLA0KLSAgICAweDM3YmQwMDAwLA0KLSAgICAw
eDM3YmQ4MDAwLA0KLSAgICAweDM3YmUwMDAwLA0KLSAgICAweDM3YmU4MDAwLA0KLSAgICAweDM3
YmYwMDAwLA0KLSAgICAweDM3YmY4MDAwLA0KLSAgICAweDM3YzAwMDAwLA0KLSAgICAweDM3YzA4
MDAwLA0KLSAgICAweDM3YzEwMDAwLA0KLSAgICAweDM3YzE4MDAwLA0KLSAgICAweDM3YzIwMDAw
LA0KLSAgICAweDM3YzI4MDAwLA0KLSAgICAweDM3YzMwMDAwLA0KLSAgICAweDM3YzM4MDAwLA0K
LSAgICAweDM3YzQwMDAwLA0KLSAgICAweDM3YzQ4MDAwLA0KLSAgICAweDM3YzUwMDAwLA0KLSAg
ICAweDM3YzU4MDAwLA0KLSAgICAweDM3YzYwMDAwLA0KLSAgICAweDM3YzY4MDAwLA0KLSAgICAw
eDM3YzcwMDAwLA0KLSAgICAweDM3Yzc4MDAwLA0KLSAgICAweDM3YzgwMDAwLA0KLSAgICAweDM3
Yzg4MDAwLA0KLSAgICAweDM3YzkwMDAwLA0KLSAgICAweDM3Yzk4MDAwLA0KLSAgICAweDM3Y2Ew
MDAwLA0KLSAgICAweDM3Y2E4MDAwLA0KLSAgICAweDM3Y2IwMDAwLA0KLSAgICAweDM3Y2I4MDAw
LA0KLSAgICAweDM3Y2MwMDAwLA0KLSAgICAweDM3Y2M4MDAwLA0KLSAgICAweDM3Y2QwMDAwLA0K
LSAgICAweDM3Y2Q4MDAwLA0KLSAgICAweDM3Y2UwMDAwLA0KLSAgICAweDM3Y2U4MDAwLA0KLSAg
ICAweDM3Y2YwMDAwLA0KLSAgICAweDM3Y2Y4MDAwLA0KLSAgICAweDM3ZDAwMDAwLA0KLSAgICAw
eDM3ZDA4MDAwLA0KLSAgICAweDM3ZDEwMDAwLA0KLSAgICAweDM3ZDE4MDAwLA0KLSAgICAweDM3
ZDIwMDAwLA0KLSAgICAweDM3ZDI4MDAwLA0KLSAgICAweDM3ZDMwMDAwLA0KLSAgICAweDM3ZDM4
MDAwLA0KLSAgICAweDM3ZDQwMDAwLA0KLSAgICAweDM3ZDQ4MDAwLA0KLSAgICAweDM3ZDUwMDAw
LA0KLSAgICAweDM3ZDU4MDAwLA0KLSAgICAweDM3ZDYwMDAwLA0KLSAgICAweDM3ZDY4MDAwLA0K
LSAgICAweDM3ZDcwMDAwLA0KLSAgICAweDM3ZDc4MDAwLA0KLSAgICAweDM3ZDgwMDAwLA0KLSAg
ICAweDM3ZDg4MDAwLA0KLSAgICAweDM3ZDkwMDAwLA0KLSAgICAweDM3ZDk4MDAwLA0KLSAgICAw
eDM3ZGEwMDAwLA0KLSAgICAweDM3ZGE4MDAwLA0KLSAgICAweDM3ZGIwMDAwLA0KLSAgICAweDM3
ZGI4MDAwLA0KLSAgICAweDM3ZGMwMDAwLA0KLSAgICAweDM3ZGM4MDAwLA0KLSAgICAweDM3ZGQw
MDAwLA0KLSAgICAweDM3ZGQ4MDAwLA0KLSAgICAweDM3ZGUwMDAwLA0KLSAgICAweDM3ZGU4MDAw
LA0KLSAgICAweDM3ZGYwMDAwLA0KLSAgICAweDM3ZGY4MDAwLA0KLSAgICAweDM3ZTAwMDAwLA0K
LSAgICAweDM3ZTA4MDAwLA0KLSAgICAweDM3ZTEwMDAwLA0KLSAgICAweDM3ZTE4MDAwLA0KLSAg
ICAweDM3ZTIwMDAwLA0KLSAgICAweDM3ZTI4MDAwLA0KLSAgICAweDM3ZTMwMDAwLA0KLSAgICAw
eDM3ZTM4MDAwLA0KLSAgICAweDM3ZTQwMDAwLA0KLSAgICAweDM3ZTQ4MDAwLA0KLSAgICAweDM3
ZTUwMDAwLA0KLSAgICAweDM3ZTU4MDAwLA0KLSAgICAweDM3ZTYwMDAwLA0KLSAgICAweDM3ZTY4
MDAwLA0KLSAgICAweDM3ZTcwMDAwLA0KLSAgICAweDM3ZTc4MDAwLA0KLSAgICAweDM3ZTgwMDAw
LA0KLSAgICAweDM3ZTg4MDAwLA0KLSAgICAweDM3ZTkwMDAwLA0KLSAgICAweDM3ZTk4MDAwLA0K
LSAgICAweDM3ZWEwMDAwLA0KLSAgICAweDM3ZWE4MDAwLA0KLSAgICAweDM3ZWIwMDAwLA0KLSAg
ICAweDM3ZWI4MDAwLA0KLSAgICAweDM3ZWMwMDAwLA0KLSAgICAweDM3ZWM4MDAwLA0KLSAgICAw
eDM3ZWQwMDAwLA0KLSAgICAweDM3ZWQ4MDAwLA0KLSAgICAweDM3ZWUwMDAwLA0KLSAgICAweDM3
ZWU4MDAwLA0KLSAgICAweDM3ZWYwMDAwLA0KLSAgICAweDM3ZWY4MDAwLA0KLSAgICAweDM3ZjAw
MDAwLA0KLSAgICAweDM3ZjA4MDAwLA0KLSAgICAweDM3ZjEwMDAwLA0KLSAgICAweDM3ZjE4MDAw
LA0KLSAgICAweDM3ZjIwMDAwLA0KLSAgICAweDM3ZjI4MDAwLA0KLSAgICAweDM3ZjMwMDAwLA0K
LSAgICAweDM3ZjM4MDAwLA0KLSAgICAweDM3ZjQwMDAwLA0KLSAgICAweDM3ZjQ4MDAwLA0KLSAg
ICAweDM3ZjUwMDAwLA0KLSAgICAweDM3ZjU4MDAwLA0KLSAgICAweDM3ZjYwMDAwLA0KLSAgICAw
eDM3ZjY4MDAwLA0KLSAgICAweDM3ZjcwMDAwLA0KLSAgICAweDM3Zjc4MDAwLA0KLSAgICAweDM3
ZjgwMDAwLA0KLSAgICAweDM3Zjg4MDAwLA0KLSAgICAweDM3ZjkwMDAwLA0KLSAgICAweDM3Zjk4
MDAwLA0KLSAgICAweDM3ZmEwMDAwLA0KLSAgICAweDM3ZmE4MDAwLA0KLSAgICAweDM3ZmIwMDAw
LA0KLSAgICAweDM3ZmI4MDAwLA0KLSAgICAweDM3ZmMwMDAwLA0KLSAgICAweDM3ZmM4MDAwLA0K
LSAgICAweDM3ZmQwMDAwLA0KLSAgICAweDM3ZmQ4MDAwLA0KLSAgICAweDM3ZmUwMDAwLA0KLSAg
ICAweDM3ZmU4MDAwLA0KLSAgICAweDM3ZmYwMDAwLA0KLSAgICAweDM3ZmY4MDAwLA0KLSAgICAw
eDM4MDAwMDAwLA0KLSAgICAweDM4MDA0MDAwLA0KLSAgICAweDM4MDA4MDAwLA0KLSAgICAweDM4
MDBjMDAwLA0KLSAgICAweDM4MDEwMDAwLA0KLSAgICAweDM4MDE0MDAwLA0KLSAgICAweDM4MDE4
MDAwLA0KLSAgICAweDM4MDFjMDAwLA0KLSAgICAweDM4MDIwMDAwLA0KLSAgICAweDM4MDI0MDAw
LA0KLSAgICAweDM4MDI4MDAwLA0KLSAgICAweDM4MDJjMDAwLA0KLSAgICAweDM4MDMwMDAwLA0K
LSAgICAweDM4MDM0MDAwLA0KLSAgICAweDM4MDM4MDAwLA0KLSAgICAweDM4MDNjMDAwLA0KLSAg
ICAweDM4MDQwMDAwLA0KLSAgICAweDM4MDQ0MDAwLA0KLSAgICAweDM4MDQ4MDAwLA0KLSAgICAw
eDM4MDRjMDAwLA0KLSAgICAweDM4MDUwMDAwLA0KLSAgICAweDM4MDU0MDAwLA0KLSAgICAweDM4
MDU4MDAwLA0KLSAgICAweDM4MDVjMDAwLA0KLSAgICAweDM4MDYwMDAwLA0KLSAgICAweDM4MDY0
MDAwLA0KLSAgICAweDM4MDY4MDAwLA0KLSAgICAweDM4MDZjMDAwLA0KLSAgICAweDM4MDcwMDAw
LA0KLSAgICAweDM4MDc0MDAwLA0KLSAgICAweDM4MDc4MDAwLA0KLSAgICAweDM4MDdjMDAwLA0K
LSAgICAweDM4MDgwMDAwLA0KLSAgICAweDM4MDg0MDAwLA0KLSAgICAweDM4MDg4MDAwLA0KLSAg
ICAweDM4MDhjMDAwLA0KLSAgICAweDM4MDkwMDAwLA0KLSAgICAweDM4MDk0MDAwLA0KLSAgICAw
eDM4MDk4MDAwLA0KLSAgICAweDM4MDljMDAwLA0KLSAgICAweDM4MGEwMDAwLA0KLSAgICAweDM4
MGE0MDAwLA0KLSAgICAweDM4MGE4MDAwLA0KLSAgICAweDM4MGFjMDAwLA0KLSAgICAweDM4MGIw
MDAwLA0KLSAgICAweDM4MGI0MDAwLA0KLSAgICAweDM4MGI4MDAwLA0KLSAgICAweDM4MGJjMDAw
LA0KLSAgICAweDM4MGMwMDAwLA0KLSAgICAweDM4MGM0MDAwLA0KLSAgICAweDM4MGM4MDAwLA0K
LSAgICAweDM4MGNjMDAwLA0KLSAgICAweDM4MGQwMDAwLA0KLSAgICAweDM4MGQ0MDAwLA0KLSAg
ICAweDM4MGQ4MDAwLA0KLSAgICAweDM4MGRjMDAwLA0KLSAgICAweDM4MGUwMDAwLA0KLSAgICAw
eDM4MGU0MDAwLA0KLSAgICAweDM4MGU4MDAwLA0KLSAgICAweDM4MGVjMDAwLA0KLSAgICAweDM4
MGYwMDAwLA0KLSAgICAweDM4MGY0MDAwLA0KLSAgICAweDM4MGY4MDAwLA0KLSAgICAweDM4MGZj
MDAwLA0KLSAgICAweDM4MTAwMDAwLA0KLSAgICAweDM4MTA0MDAwLA0KLSAgICAweDM4MTA4MDAw
LA0KLSAgICAweDM4MTBjMDAwLA0KLSAgICAweDM4MTEwMDAwLA0KLSAgICAweDM4MTE0MDAwLA0K
LSAgICAweDM4MTE4MDAwLA0KLSAgICAweDM4MTFjMDAwLA0KLSAgICAweDM4MTIwMDAwLA0KLSAg
ICAweDM4MTI0MDAwLA0KLSAgICAweDM4MTI4MDAwLA0KLSAgICAweDM4MTJjMDAwLA0KLSAgICAw
eDM4MTMwMDAwLA0KLSAgICAweDM4MTM0MDAwLA0KLSAgICAweDM4MTM4MDAwLA0KLSAgICAweDM4
MTNjMDAwLA0KLSAgICAweDM4MTQwMDAwLA0KLSAgICAweDM4MTQ0MDAwLA0KLSAgICAweDM4MTQ4
MDAwLA0KLSAgICAweDM4MTRjMDAwLA0KLSAgICAweDM4MTUwMDAwLA0KLSAgICAweDM4MTU0MDAw
LA0KLSAgICAweDM4MTU4MDAwLA0KLSAgICAweDM4MTVjMDAwLA0KLSAgICAweDM4MTYwMDAwLA0K
LSAgICAweDM4MTY0MDAwLA0KLSAgICAweDM4MTY4MDAwLA0KLSAgICAweDM4MTZjMDAwLA0KLSAg
ICAweDM4MTcwMDAwLA0KLSAgICAweDM4MTc0MDAwLA0KLSAgICAweDM4MTc4MDAwLA0KLSAgICAw
eDM4MTdjMDAwLA0KLSAgICAweDM4MTgwMDAwLA0KLSAgICAweDM4MTg0MDAwLA0KLSAgICAweDM4
MTg4MDAwLA0KLSAgICAweDM4MThjMDAwLA0KLSAgICAweDM4MTkwMDAwLA0KLSAgICAweDM4MTk0
MDAwLA0KLSAgICAweDM4MTk4MDAwLA0KLSAgICAweDM4MTljMDAwLA0KLSAgICAweDM4MWEwMDAw
LA0KLSAgICAweDM4MWE0MDAwLA0KLSAgICAweDM4MWE4MDAwLA0KLSAgICAweDM4MWFjMDAwLA0K
LSAgICAweDM4MWIwMDAwLA0KLSAgICAweDM4MWI0MDAwLA0KLSAgICAweDM4MWI4MDAwLA0KLSAg
ICAweDM4MWJjMDAwLA0KLSAgICAweDM4MWMwMDAwLA0KLSAgICAweDM4MWM0MDAwLA0KLSAgICAw
eDM4MWM4MDAwLA0KLSAgICAweDM4MWNjMDAwLA0KLSAgICAweDM4MWQwMDAwLA0KLSAgICAweDM4
MWQ0MDAwLA0KLSAgICAweDM4MWQ4MDAwLA0KLSAgICAweDM4MWRjMDAwLA0KLSAgICAweDM4MWUw
MDAwLA0KLSAgICAweDM4MWU0MDAwLA0KLSAgICAweDM4MWU4MDAwLA0KLSAgICAweDM4MWVjMDAw
LA0KLSAgICAweDM4MWYwMDAwLA0KLSAgICAweDM4MWY0MDAwLA0KLSAgICAweDM4MWY4MDAwLA0K
LSAgICAweDM4MWZjMDAwLA0KLSAgICAweDM4MjAwMDAwLA0KLSAgICAweDM4MjA0MDAwLA0KLSAg
ICAweDM4MjA4MDAwLA0KLSAgICAweDM4MjBjMDAwLA0KLSAgICAweDM4MjEwMDAwLA0KLSAgICAw
eDM4MjE0MDAwLA0KLSAgICAweDM4MjE4MDAwLA0KLSAgICAweDM4MjFjMDAwLA0KLSAgICAweDM4
MjIwMDAwLA0KLSAgICAweDM4MjI0MDAwLA0KLSAgICAweDM4MjI4MDAwLA0KLSAgICAweDM4MjJj
MDAwLA0KLSAgICAweDM4MjMwMDAwLA0KLSAgICAweDM4MjM0MDAwLA0KLSAgICAweDM4MjM4MDAw
LA0KLSAgICAweDM4MjNjMDAwLA0KLSAgICAweDM4MjQwMDAwLA0KLSAgICAweDM4MjQ0MDAwLA0K
LSAgICAweDM4MjQ4MDAwLA0KLSAgICAweDM4MjRjMDAwLA0KLSAgICAweDM4MjUwMDAwLA0KLSAg
ICAweDM4MjU0MDAwLA0KLSAgICAweDM4MjU4MDAwLA0KLSAgICAweDM4MjVjMDAwLA0KLSAgICAw
eDM4MjYwMDAwLA0KLSAgICAweDM4MjY0MDAwLA0KLSAgICAweDM4MjY4MDAwLA0KLSAgICAweDM4
MjZjMDAwLA0KLSAgICAweDM4MjcwMDAwLA0KLSAgICAweDM4Mjc0MDAwLA0KLSAgICAweDM4Mjc4
MDAwLA0KLSAgICAweDM4MjdjMDAwLA0KLSAgICAweDM4MjgwMDAwLA0KLSAgICAweDM4Mjg0MDAw
LA0KLSAgICAweDM4Mjg4MDAwLA0KLSAgICAweDM4MjhjMDAwLA0KLSAgICAweDM4MjkwMDAwLA0K
LSAgICAweDM4Mjk0MDAwLA0KLSAgICAweDM4Mjk4MDAwLA0KLSAgICAweDM4MjljMDAwLA0KLSAg
ICAweDM4MmEwMDAwLA0KLSAgICAweDM4MmE0MDAwLA0KLSAgICAweDM4MmE4MDAwLA0KLSAgICAw
eDM4MmFjMDAwLA0KLSAgICAweDM4MmIwMDAwLA0KLSAgICAweDM4MmI0MDAwLA0KLSAgICAweDM4
MmI4MDAwLA0KLSAgICAweDM4MmJjMDAwLA0KLSAgICAweDM4MmMwMDAwLA0KLSAgICAweDM4MmM0
MDAwLA0KLSAgICAweDM4MmM4MDAwLA0KLSAgICAweDM4MmNjMDAwLA0KLSAgICAweDM4MmQwMDAw
LA0KLSAgICAweDM4MmQ0MDAwLA0KLSAgICAweDM4MmQ4MDAwLA0KLSAgICAweDM4MmRjMDAwLA0K
LSAgICAweDM4MmUwMDAwLA0KLSAgICAweDM4MmU0MDAwLA0KLSAgICAweDM4MmU4MDAwLA0KLSAg
ICAweDM4MmVjMDAwLA0KLSAgICAweDM4MmYwMDAwLA0KLSAgICAweDM4MmY0MDAwLA0KLSAgICAw
eDM4MmY4MDAwLA0KLSAgICAweDM4MmZjMDAwLA0KLSAgICAweDM4MzAwMDAwLA0KLSAgICAweDM4
MzA0MDAwLA0KLSAgICAweDM4MzA4MDAwLA0KLSAgICAweDM4MzBjMDAwLA0KLSAgICAweDM4MzEw
MDAwLA0KLSAgICAweDM4MzE0MDAwLA0KLSAgICAweDM4MzE4MDAwLA0KLSAgICAweDM4MzFjMDAw
LA0KLSAgICAweDM4MzIwMDAwLA0KLSAgICAweDM4MzI0MDAwLA0KLSAgICAweDM4MzI4MDAwLA0K
LSAgICAweDM4MzJjMDAwLA0KLSAgICAweDM4MzMwMDAwLA0KLSAgICAweDM4MzM0MDAwLA0KLSAg
ICAweDM4MzM4MDAwLA0KLSAgICAweDM4MzNjMDAwLA0KLSAgICAweDM4MzQwMDAwLA0KLSAgICAw
eDM4MzQ0MDAwLA0KLSAgICAweDM4MzQ4MDAwLA0KLSAgICAweDM4MzRjMDAwLA0KLSAgICAweDM4
MzUwMDAwLA0KLSAgICAweDM4MzU0MDAwLA0KLSAgICAweDM4MzU4MDAwLA0KLSAgICAweDM4MzVj
MDAwLA0KLSAgICAweDM4MzYwMDAwLA0KLSAgICAweDM4MzY0MDAwLA0KLSAgICAweDM4MzY4MDAw
LA0KLSAgICAweDM4MzZjMDAwLA0KLSAgICAweDM4MzcwMDAwLA0KLSAgICAweDM4Mzc0MDAwLA0K
LSAgICAweDM4Mzc4MDAwLA0KLSAgICAweDM4MzdjMDAwLA0KLSAgICAweDM4MzgwMDAwLA0KLSAg
ICAweDM4Mzg0MDAwLA0KLSAgICAweDM4Mzg4MDAwLA0KLSAgICAweDM4MzhjMDAwLA0KLSAgICAw
eDM4MzkwMDAwLA0KLSAgICAweDM4Mzk0MDAwLA0KLSAgICAweDM4Mzk4MDAwLA0KLSAgICAweDM4
MzljMDAwLA0KLSAgICAweDM4M2EwMDAwLA0KLSAgICAweDM4M2E0MDAwLA0KLSAgICAweDM4M2E4
MDAwLA0KLSAgICAweDM4M2FjMDAwLA0KLSAgICAweDM4M2IwMDAwLA0KLSAgICAweDM4M2I0MDAw
LA0KLSAgICAweDM4M2I4MDAwLA0KLSAgICAweDM4M2JjMDAwLA0KLSAgICAweDM4M2MwMDAwLA0K
LSAgICAweDM4M2M0MDAwLA0KLSAgICAweDM4M2M4MDAwLA0KLSAgICAweDM4M2NjMDAwLA0KLSAg
ICAweDM4M2QwMDAwLA0KLSAgICAweDM4M2Q0MDAwLA0KLSAgICAweDM4M2Q4MDAwLA0KLSAgICAw
eDM4M2RjMDAwLA0KLSAgICAweDM4M2UwMDAwLA0KLSAgICAweDM4M2U0MDAwLA0KLSAgICAweDM4
M2U4MDAwLA0KLSAgICAweDM4M2VjMDAwLA0KLSAgICAweDM4M2YwMDAwLA0KLSAgICAweDM4M2Y0
MDAwLA0KLSAgICAweDM4M2Y4MDAwLA0KLSAgICAweDM4M2ZjMDAwLA0KLSAgICAweDM4NDAwMDAw
LA0KLSAgICAweDM4NDA0MDAwLA0KLSAgICAweDM4NDA4MDAwLA0KLSAgICAweDM4NDBjMDAwLA0K
LSAgICAweDM4NDEwMDAwLA0KLSAgICAweDM4NDE0MDAwLA0KLSAgICAweDM4NDE4MDAwLA0KLSAg
ICAweDM4NDFjMDAwLA0KLSAgICAweDM4NDIwMDAwLA0KLSAgICAweDM4NDI0MDAwLA0KLSAgICAw
eDM4NDI4MDAwLA0KLSAgICAweDM4NDJjMDAwLA0KLSAgICAweDM4NDMwMDAwLA0KLSAgICAweDM4
NDM0MDAwLA0KLSAgICAweDM4NDM4MDAwLA0KLSAgICAweDM4NDNjMDAwLA0KLSAgICAweDM4NDQw
MDAwLA0KLSAgICAweDM4NDQ0MDAwLA0KLSAgICAweDM4NDQ4MDAwLA0KLSAgICAweDM4NDRjMDAw
LA0KLSAgICAweDM4NDUwMDAwLA0KLSAgICAweDM4NDU0MDAwLA0KLSAgICAweDM4NDU4MDAwLA0K
LSAgICAweDM4NDVjMDAwLA0KLSAgICAweDM4NDYwMDAwLA0KLSAgICAweDM4NDY0MDAwLA0KLSAg
ICAweDM4NDY4MDAwLA0KLSAgICAweDM4NDZjMDAwLA0KLSAgICAweDM4NDcwMDAwLA0KLSAgICAw
eDM4NDc0MDAwLA0KLSAgICAweDM4NDc4MDAwLA0KLSAgICAweDM4NDdjMDAwLA0KLSAgICAweDM4
NDgwMDAwLA0KLSAgICAweDM4NDg0MDAwLA0KLSAgICAweDM4NDg4MDAwLA0KLSAgICAweDM4NDhj
MDAwLA0KLSAgICAweDM4NDkwMDAwLA0KLSAgICAweDM4NDk0MDAwLA0KLSAgICAweDM4NDk4MDAw
LA0KLSAgICAweDM4NDljMDAwLA0KLSAgICAweDM4NGEwMDAwLA0KLSAgICAweDM4NGE0MDAwLA0K
LSAgICAweDM4NGE4MDAwLA0KLSAgICAweDM4NGFjMDAwLA0KLSAgICAweDM4NGIwMDAwLA0KLSAg
ICAweDM4NGI0MDAwLA0KLSAgICAweDM4NGI4MDAwLA0KLSAgICAweDM4NGJjMDAwLA0KLSAgICAw
eDM4NGMwMDAwLA0KLSAgICAweDM4NGM0MDAwLA0KLSAgICAweDM4NGM4MDAwLA0KLSAgICAweDM4
NGNjMDAwLA0KLSAgICAweDM4NGQwMDAwLA0KLSAgICAweDM4NGQ0MDAwLA0KLSAgICAweDM4NGQ4
MDAwLA0KLSAgICAweDM4NGRjMDAwLA0KLSAgICAweDM4NGUwMDAwLA0KLSAgICAweDM4NGU0MDAw
LA0KLSAgICAweDM4NGU4MDAwLA0KLSAgICAweDM4NGVjMDAwLA0KLSAgICAweDM4NGYwMDAwLA0K
LSAgICAweDM4NGY0MDAwLA0KLSAgICAweDM4NGY4MDAwLA0KLSAgICAweDM4NGZjMDAwLA0KLSAg
ICAweDM4NTAwMDAwLA0KLSAgICAweDM4NTA0MDAwLA0KLSAgICAweDM4NTA4MDAwLA0KLSAgICAw
eDM4NTBjMDAwLA0KLSAgICAweDM4NTEwMDAwLA0KLSAgICAweDM4NTE0MDAwLA0KLSAgICAweDM4
NTE4MDAwLA0KLSAgICAweDM4NTFjMDAwLA0KLSAgICAweDM4NTIwMDAwLA0KLSAgICAweDM4NTI0
MDAwLA0KLSAgICAweDM4NTI4MDAwLA0KLSAgICAweDM4NTJjMDAwLA0KLSAgICAweDM4NTMwMDAw
LA0KLSAgICAweDM4NTM0MDAwLA0KLSAgICAweDM4NTM4MDAwLA0KLSAgICAweDM4NTNjMDAwLA0K
LSAgICAweDM4NTQwMDAwLA0KLSAgICAweDM4NTQ0MDAwLA0KLSAgICAweDM4NTQ4MDAwLA0KLSAg
ICAweDM4NTRjMDAwLA0KLSAgICAweDM4NTUwMDAwLA0KLSAgICAweDM4NTU0MDAwLA0KLSAgICAw
eDM4NTU4MDAwLA0KLSAgICAweDM4NTVjMDAwLA0KLSAgICAweDM4NTYwMDAwLA0KLSAgICAweDM4
NTY0MDAwLA0KLSAgICAweDM4NTY4MDAwLA0KLSAgICAweDM4NTZjMDAwLA0KLSAgICAweDM4NTcw
MDAwLA0KLSAgICAweDM4NTc0MDAwLA0KLSAgICAweDM4NTc4MDAwLA0KLSAgICAweDM4NTdjMDAw
LA0KLSAgICAweDM4NTgwMDAwLA0KLSAgICAweDM4NTg0MDAwLA0KLSAgICAweDM4NTg4MDAwLA0K
LSAgICAweDM4NThjMDAwLA0KLSAgICAweDM4NTkwMDAwLA0KLSAgICAweDM4NTk0MDAwLA0KLSAg
ICAweDM4NTk4MDAwLA0KLSAgICAweDM4NTljMDAwLA0KLSAgICAweDM4NWEwMDAwLA0KLSAgICAw
eDM4NWE0MDAwLA0KLSAgICAweDM4NWE4MDAwLA0KLSAgICAweDM4NWFjMDAwLA0KLSAgICAweDM4
NWIwMDAwLA0KLSAgICAweDM4NWI0MDAwLA0KLSAgICAweDM4NWI4MDAwLA0KLSAgICAweDM4NWJj
MDAwLA0KLSAgICAweDM4NWMwMDAwLA0KLSAgICAweDM4NWM0MDAwLA0KLSAgICAweDM4NWM4MDAw
LA0KLSAgICAweDM4NWNjMDAwLA0KLSAgICAweDM4NWQwMDAwLA0KLSAgICAweDM4NWQ0MDAwLA0K
LSAgICAweDM4NWQ4MDAwLA0KLSAgICAweDM4NWRjMDAwLA0KLSAgICAweDM4NWUwMDAwLA0KLSAg
ICAweDM4NWU0MDAwLA0KLSAgICAweDM4NWU4MDAwLA0KLSAgICAweDM4NWVjMDAwLA0KLSAgICAw
eDM4NWYwMDAwLA0KLSAgICAweDM4NWY0MDAwLA0KLSAgICAweDM4NWY4MDAwLA0KLSAgICAweDM4
NWZjMDAwLA0KLSAgICAweDM4NjAwMDAwLA0KLSAgICAweDM4NjA0MDAwLA0KLSAgICAweDM4NjA4
MDAwLA0KLSAgICAweDM4NjBjMDAwLA0KLSAgICAweDM4NjEwMDAwLA0KLSAgICAweDM4NjE0MDAw
LA0KLSAgICAweDM4NjE4MDAwLA0KLSAgICAweDM4NjFjMDAwLA0KLSAgICAweDM4NjIwMDAwLA0K
LSAgICAweDM4NjI0MDAwLA0KLSAgICAweDM4NjI4MDAwLA0KLSAgICAweDM4NjJjMDAwLA0KLSAg
ICAweDM4NjMwMDAwLA0KLSAgICAweDM4NjM0MDAwLA0KLSAgICAweDM4NjM4MDAwLA0KLSAgICAw
eDM4NjNjMDAwLA0KLSAgICAweDM4NjQwMDAwLA0KLSAgICAweDM4NjQ0MDAwLA0KLSAgICAweDM4
NjQ4MDAwLA0KLSAgICAweDM4NjRjMDAwLA0KLSAgICAweDM4NjUwMDAwLA0KLSAgICAweDM4NjU0
MDAwLA0KLSAgICAweDM4NjU4MDAwLA0KLSAgICAweDM4NjVjMDAwLA0KLSAgICAweDM4NjYwMDAw
LA0KLSAgICAweDM4NjY0MDAwLA0KLSAgICAweDM4NjY4MDAwLA0KLSAgICAweDM4NjZjMDAwLA0K
LSAgICAweDM4NjcwMDAwLA0KLSAgICAweDM4Njc0MDAwLA0KLSAgICAweDM4Njc4MDAwLA0KLSAg
ICAweDM4NjdjMDAwLA0KLSAgICAweDM4NjgwMDAwLA0KLSAgICAweDM4Njg0MDAwLA0KLSAgICAw
eDM4Njg4MDAwLA0KLSAgICAweDM4NjhjMDAwLA0KLSAgICAweDM4NjkwMDAwLA0KLSAgICAweDM4
Njk0MDAwLA0KLSAgICAweDM4Njk4MDAwLA0KLSAgICAweDM4NjljMDAwLA0KLSAgICAweDM4NmEw
MDAwLA0KLSAgICAweDM4NmE0MDAwLA0KLSAgICAweDM4NmE4MDAwLA0KLSAgICAweDM4NmFjMDAw
LA0KLSAgICAweDM4NmIwMDAwLA0KLSAgICAweDM4NmI0MDAwLA0KLSAgICAweDM4NmI4MDAwLA0K
LSAgICAweDM4NmJjMDAwLA0KLSAgICAweDM4NmMwMDAwLA0KLSAgICAweDM4NmM0MDAwLA0KLSAg
ICAweDM4NmM4MDAwLA0KLSAgICAweDM4NmNjMDAwLA0KLSAgICAweDM4NmQwMDAwLA0KLSAgICAw
eDM4NmQ0MDAwLA0KLSAgICAweDM4NmQ4MDAwLA0KLSAgICAweDM4NmRjMDAwLA0KLSAgICAweDM4
NmUwMDAwLA0KLSAgICAweDM4NmU0MDAwLA0KLSAgICAweDM4NmU4MDAwLA0KLSAgICAweDM4NmVj
MDAwLA0KLSAgICAweDM4NmYwMDAwLA0KLSAgICAweDM4NmY0MDAwLA0KLSAgICAweDM4NmY4MDAw
LA0KLSAgICAweDM4NmZjMDAwLA0KLSAgICAweDM4NzAwMDAwLA0KLSAgICAweDM4NzA0MDAwLA0K
LSAgICAweDM4NzA4MDAwLA0KLSAgICAweDM4NzBjMDAwLA0KLSAgICAweDM4NzEwMDAwLA0KLSAg
ICAweDM4NzE0MDAwLA0KLSAgICAweDM4NzE4MDAwLA0KLSAgICAweDM4NzFjMDAwLA0KLSAgICAw
eDM4NzIwMDAwLA0KLSAgICAweDM4NzI0MDAwLA0KLSAgICAweDM4NzI4MDAwLA0KLSAgICAweDM4
NzJjMDAwLA0KLSAgICAweDM4NzMwMDAwLA0KLSAgICAweDM4NzM0MDAwLA0KLSAgICAweDM4NzM4
MDAwLA0KLSAgICAweDM4NzNjMDAwLA0KLSAgICAweDM4NzQwMDAwLA0KLSAgICAweDM4NzQ0MDAw
LA0KLSAgICAweDM4NzQ4MDAwLA0KLSAgICAweDM4NzRjMDAwLA0KLSAgICAweDM4NzUwMDAwLA0K
LSAgICAweDM4NzU0MDAwLA0KLSAgICAweDM4NzU4MDAwLA0KLSAgICAweDM4NzVjMDAwLA0KLSAg
ICAweDM4NzYwMDAwLA0KLSAgICAweDM4NzY0MDAwLA0KLSAgICAweDM4NzY4MDAwLA0KLSAgICAw
eDM4NzZjMDAwLA0KLSAgICAweDM4NzcwMDAwLA0KLSAgICAweDM4Nzc0MDAwLA0KLSAgICAweDM4
Nzc4MDAwLA0KLSAgICAweDM4NzdjMDAwLA0KLSAgICAweDM4NzgwMDAwLA0KLSAgICAweDM4Nzg0
MDAwLA0KLSAgICAweDM4Nzg4MDAwLA0KLSAgICAweDM4NzhjMDAwLA0KLSAgICAweDM4NzkwMDAw
LA0KLSAgICAweDM4Nzk0MDAwLA0KLSAgICAweDM4Nzk4MDAwLA0KLSAgICAweDM4NzljMDAwLA0K
LSAgICAweDM4N2EwMDAwLA0KLSAgICAweDM4N2E0MDAwLA0KLSAgICAweDM4N2E4MDAwLA0KLSAg
ICAweDM4N2FjMDAwLA0KLSAgICAweDM4N2IwMDAwLA0KLSAgICAweDM4N2I0MDAwLA0KLSAgICAw
eDM4N2I4MDAwLA0KLSAgICAweDM4N2JjMDAwLA0KLSAgICAweDM4N2MwMDAwLA0KLSAgICAweDM4
N2M0MDAwLA0KLSAgICAweDM4N2M4MDAwLA0KLSAgICAweDM4N2NjMDAwLA0KLSAgICAweDM4N2Qw
MDAwLA0KLSAgICAweDM4N2Q0MDAwLA0KLSAgICAweDM4N2Q4MDAwLA0KLSAgICAweDM4N2RjMDAw
LA0KLSAgICAweDM4N2UwMDAwLA0KLSAgICAweDM4N2U0MDAwLA0KLSAgICAweDM4N2U4MDAwLA0K
LSAgICAweDM4N2VjMDAwLA0KLSAgICAweDM4N2YwMDAwLA0KLSAgICAweDM4N2Y0MDAwLA0KLSAg
ICAweDM4N2Y4MDAwLA0KLSAgICAweDM4N2ZjMDAwLA0KLSAgICAweDM4MDAwMDAwLA0KLSAgICAw
eDM4MDAyMDAwLA0KLSAgICAweDM4MDA0MDAwLA0KLSAgICAweDM4MDA2MDAwLA0KLSAgICAweDM4
MDA4MDAwLA0KLSAgICAweDM4MDBhMDAwLA0KLSAgICAweDM4MDBjMDAwLA0KLSAgICAweDM4MDBl
MDAwLA0KLSAgICAweDM4MDEwMDAwLA0KLSAgICAweDM4MDEyMDAwLA0KLSAgICAweDM4MDE0MDAw
LA0KLSAgICAweDM4MDE2MDAwLA0KLSAgICAweDM4MDE4MDAwLA0KLSAgICAweDM4MDFhMDAwLA0K
LSAgICAweDM4MDFjMDAwLA0KLSAgICAweDM4MDFlMDAwLA0KLSAgICAweDM4MDIwMDAwLA0KLSAg
ICAweDM4MDIyMDAwLA0KLSAgICAweDM4MDI0MDAwLA0KLSAgICAweDM4MDI2MDAwLA0KLSAgICAw
eDM4MDI4MDAwLA0KLSAgICAweDM4MDJhMDAwLA0KLSAgICAweDM4MDJjMDAwLA0KLSAgICAweDM4
MDJlMDAwLA0KLSAgICAweDM4MDMwMDAwLA0KLSAgICAweDM4MDMyMDAwLA0KLSAgICAweDM4MDM0
MDAwLA0KLSAgICAweDM4MDM2MDAwLA0KLSAgICAweDM4MDM4MDAwLA0KLSAgICAweDM4MDNhMDAw
LA0KLSAgICAweDM4MDNjMDAwLA0KLSAgICAweDM4MDNlMDAwLA0KLSAgICAweDM4MDQwMDAwLA0K
LSAgICAweDM4MDQyMDAwLA0KLSAgICAweDM4MDQ0MDAwLA0KLSAgICAweDM4MDQ2MDAwLA0KLSAg
ICAweDM4MDQ4MDAwLA0KLSAgICAweDM4MDRhMDAwLA0KLSAgICAweDM4MDRjMDAwLA0KLSAgICAw
eDM4MDRlMDAwLA0KLSAgICAweDM4MDUwMDAwLA0KLSAgICAweDM4MDUyMDAwLA0KLSAgICAweDM4
MDU0MDAwLA0KLSAgICAweDM4MDU2MDAwLA0KLSAgICAweDM4MDU4MDAwLA0KLSAgICAweDM4MDVh
MDAwLA0KLSAgICAweDM4MDVjMDAwLA0KLSAgICAweDM4MDVlMDAwLA0KLSAgICAweDM4MDYwMDAw
LA0KLSAgICAweDM4MDYyMDAwLA0KLSAgICAweDM4MDY0MDAwLA0KLSAgICAweDM4MDY2MDAwLA0K
LSAgICAweDM4MDY4MDAwLA0KLSAgICAweDM4MDZhMDAwLA0KLSAgICAweDM4MDZjMDAwLA0KLSAg
ICAweDM4MDZlMDAwLA0KLSAgICAweDM4MDcwMDAwLA0KLSAgICAweDM4MDcyMDAwLA0KLSAgICAw
eDM4MDc0MDAwLA0KLSAgICAweDM4MDc2MDAwLA0KLSAgICAweDM4MDc4MDAwLA0KLSAgICAweDM4
MDdhMDAwLA0KLSAgICAweDM4MDdjMDAwLA0KLSAgICAweDM4MDdlMDAwLA0KLSAgICAweDM4MDgw
MDAwLA0KLSAgICAweDM4MDgyMDAwLA0KLSAgICAweDM4MDg0MDAwLA0KLSAgICAweDM4MDg2MDAw
LA0KLSAgICAweDM4MDg4MDAwLA0KLSAgICAweDM4MDhhMDAwLA0KLSAgICAweDM4MDhjMDAwLA0K
LSAgICAweDM4MDhlMDAwLA0KLSAgICAweDM4MDkwMDAwLA0KLSAgICAweDM4MDkyMDAwLA0KLSAg
ICAweDM4MDk0MDAwLA0KLSAgICAweDM4MDk2MDAwLA0KLSAgICAweDM4MDk4MDAwLA0KLSAgICAw
eDM4MDlhMDAwLA0KLSAgICAweDM4MDljMDAwLA0KLSAgICAweDM4MDllMDAwLA0KLSAgICAweDM4
MGEwMDAwLA0KLSAgICAweDM4MGEyMDAwLA0KLSAgICAweDM4MGE0MDAwLA0KLSAgICAweDM4MGE2
MDAwLA0KLSAgICAweDM4MGE4MDAwLA0KLSAgICAweDM4MGFhMDAwLA0KLSAgICAweDM4MGFjMDAw
LA0KLSAgICAweDM4MGFlMDAwLA0KLSAgICAweDM4MGIwMDAwLA0KLSAgICAweDM4MGIyMDAwLA0K
LSAgICAweDM4MGI0MDAwLA0KLSAgICAweDM4MGI2MDAwLA0KLSAgICAweDM4MGI4MDAwLA0KLSAg
ICAweDM4MGJhMDAwLA0KLSAgICAweDM4MGJjMDAwLA0KLSAgICAweDM4MGJlMDAwLA0KLSAgICAw
eDM4MGMwMDAwLA0KLSAgICAweDM4MGMyMDAwLA0KLSAgICAweDM4MGM0MDAwLA0KLSAgICAweDM4
MGM2MDAwLA0KLSAgICAweDM4MGM4MDAwLA0KLSAgICAweDM4MGNhMDAwLA0KLSAgICAweDM4MGNj
MDAwLA0KLSAgICAweDM4MGNlMDAwLA0KLSAgICAweDM4MGQwMDAwLA0KLSAgICAweDM4MGQyMDAw
LA0KLSAgICAweDM4MGQ0MDAwLA0KLSAgICAweDM4MGQ2MDAwLA0KLSAgICAweDM4MGQ4MDAwLA0K
LSAgICAweDM4MGRhMDAwLA0KLSAgICAweDM4MGRjMDAwLA0KLSAgICAweDM4MGRlMDAwLA0KLSAg
ICAweDM4MGUwMDAwLA0KLSAgICAweDM4MGUyMDAwLA0KLSAgICAweDM4MGU0MDAwLA0KLSAgICAw
eDM4MGU2MDAwLA0KLSAgICAweDM4MGU4MDAwLA0KLSAgICAweDM4MGVhMDAwLA0KLSAgICAweDM4
MGVjMDAwLA0KLSAgICAweDM4MGVlMDAwLA0KLSAgICAweDM4MGYwMDAwLA0KLSAgICAweDM4MGYy
MDAwLA0KLSAgICAweDM4MGY0MDAwLA0KLSAgICAweDM4MGY2MDAwLA0KLSAgICAweDM4MGY4MDAw
LA0KLSAgICAweDM4MGZhMDAwLA0KLSAgICAweDM4MGZjMDAwLA0KLSAgICAweDM4MGZlMDAwLA0K
LSAgICAweDM4MTAwMDAwLA0KLSAgICAweDM4MTAyMDAwLA0KLSAgICAweDM4MTA0MDAwLA0KLSAg
ICAweDM4MTA2MDAwLA0KLSAgICAweDM4MTA4MDAwLA0KLSAgICAweDM4MTBhMDAwLA0KLSAgICAw
eDM4MTBjMDAwLA0KLSAgICAweDM4MTBlMDAwLA0KLSAgICAweDM4MTEwMDAwLA0KLSAgICAweDM4
MTEyMDAwLA0KLSAgICAweDM4MTE0MDAwLA0KLSAgICAweDM4MTE2MDAwLA0KLSAgICAweDM4MTE4
MDAwLA0KLSAgICAweDM4MTFhMDAwLA0KLSAgICAweDM4MTFjMDAwLA0KLSAgICAweDM4MTFlMDAw
LA0KLSAgICAweDM4MTIwMDAwLA0KLSAgICAweDM4MTIyMDAwLA0KLSAgICAweDM4MTI0MDAwLA0K
LSAgICAweDM4MTI2MDAwLA0KLSAgICAweDM4MTI4MDAwLA0KLSAgICAweDM4MTJhMDAwLA0KLSAg
ICAweDM4MTJjMDAwLA0KLSAgICAweDM4MTJlMDAwLA0KLSAgICAweDM4MTMwMDAwLA0KLSAgICAw
eDM4MTMyMDAwLA0KLSAgICAweDM4MTM0MDAwLA0KLSAgICAweDM4MTM2MDAwLA0KLSAgICAweDM4
MTM4MDAwLA0KLSAgICAweDM4MTNhMDAwLA0KLSAgICAweDM4MTNjMDAwLA0KLSAgICAweDM4MTNl
MDAwLA0KLSAgICAweDM4MTQwMDAwLA0KLSAgICAweDM4MTQyMDAwLA0KLSAgICAweDM4MTQ0MDAw
LA0KLSAgICAweDM4MTQ2MDAwLA0KLSAgICAweDM4MTQ4MDAwLA0KLSAgICAweDM4MTRhMDAwLA0K
LSAgICAweDM4MTRjMDAwLA0KLSAgICAweDM4MTRlMDAwLA0KLSAgICAweDM4MTUwMDAwLA0KLSAg
ICAweDM4MTUyMDAwLA0KLSAgICAweDM4MTU0MDAwLA0KLSAgICAweDM4MTU2MDAwLA0KLSAgICAw
eDM4MTU4MDAwLA0KLSAgICAweDM4MTVhMDAwLA0KLSAgICAweDM4MTVjMDAwLA0KLSAgICAweDM4
MTVlMDAwLA0KLSAgICAweDM4MTYwMDAwLA0KLSAgICAweDM4MTYyMDAwLA0KLSAgICAweDM4MTY0
MDAwLA0KLSAgICAweDM4MTY2MDAwLA0KLSAgICAweDM4MTY4MDAwLA0KLSAgICAweDM4MTZhMDAw
LA0KLSAgICAweDM4MTZjMDAwLA0KLSAgICAweDM4MTZlMDAwLA0KLSAgICAweDM4MTcwMDAwLA0K
LSAgICAweDM4MTcyMDAwLA0KLSAgICAweDM4MTc0MDAwLA0KLSAgICAweDM4MTc2MDAwLA0KLSAg
ICAweDM4MTc4MDAwLA0KLSAgICAweDM4MTdhMDAwLA0KLSAgICAweDM4MTdjMDAwLA0KLSAgICAw
eDM4MTdlMDAwLA0KLSAgICAweDM4MTgwMDAwLA0KLSAgICAweDM4MTgyMDAwLA0KLSAgICAweDM4
MTg0MDAwLA0KLSAgICAweDM4MTg2MDAwLA0KLSAgICAweDM4MTg4MDAwLA0KLSAgICAweDM4MThh
MDAwLA0KLSAgICAweDM4MThjMDAwLA0KLSAgICAweDM4MThlMDAwLA0KLSAgICAweDM4MTkwMDAw
LA0KLSAgICAweDM4MTkyMDAwLA0KLSAgICAweDM4MTk0MDAwLA0KLSAgICAweDM4MTk2MDAwLA0K
LSAgICAweDM4MTk4MDAwLA0KLSAgICAweDM4MTlhMDAwLA0KLSAgICAweDM4MTljMDAwLA0KLSAg
ICAweDM4MTllMDAwLA0KLSAgICAweDM4MWEwMDAwLA0KLSAgICAweDM4MWEyMDAwLA0KLSAgICAw
eDM4MWE0MDAwLA0KLSAgICAweDM4MWE2MDAwLA0KLSAgICAweDM4MWE4MDAwLA0KLSAgICAweDM4
MWFhMDAwLA0KLSAgICAweDM4MWFjMDAwLA0KLSAgICAweDM4MWFlMDAwLA0KLSAgICAweDM4MWIw
MDAwLA0KLSAgICAweDM4MWIyMDAwLA0KLSAgICAweDM4MWI0MDAwLA0KLSAgICAweDM4MWI2MDAw
LA0KLSAgICAweDM4MWI4MDAwLA0KLSAgICAweDM4MWJhMDAwLA0KLSAgICAweDM4MWJjMDAwLA0K
LSAgICAweDM4MWJlMDAwLA0KLSAgICAweDM4MWMwMDAwLA0KLSAgICAweDM4MWMyMDAwLA0KLSAg
ICAweDM4MWM0MDAwLA0KLSAgICAweDM4MWM2MDAwLA0KLSAgICAweDM4MWM4MDAwLA0KLSAgICAw
eDM4MWNhMDAwLA0KLSAgICAweDM4MWNjMDAwLA0KLSAgICAweDM4MWNlMDAwLA0KLSAgICAweDM4
MWQwMDAwLA0KLSAgICAweDM4MWQyMDAwLA0KLSAgICAweDM4MWQ0MDAwLA0KLSAgICAweDM4MWQ2
MDAwLA0KLSAgICAweDM4MWQ4MDAwLA0KLSAgICAweDM4MWRhMDAwLA0KLSAgICAweDM4MWRjMDAw
LA0KLSAgICAweDM4MWRlMDAwLA0KLSAgICAweDM4MWUwMDAwLA0KLSAgICAweDM4MWUyMDAwLA0K
LSAgICAweDM4MWU0MDAwLA0KLSAgICAweDM4MWU2MDAwLA0KLSAgICAweDM4MWU4MDAwLA0KLSAg
ICAweDM4MWVhMDAwLA0KLSAgICAweDM4MWVjMDAwLA0KLSAgICAweDM4MWVlMDAwLA0KLSAgICAw
eDM4MWYwMDAwLA0KLSAgICAweDM4MWYyMDAwLA0KLSAgICAweDM4MWY0MDAwLA0KLSAgICAweDM4
MWY2MDAwLA0KLSAgICAweDM4MWY4MDAwLA0KLSAgICAweDM4MWZhMDAwLA0KLSAgICAweDM4MWZj
MDAwLA0KLSAgICAweDM4MWZlMDAwLA0KLSAgICAweDM4MjAwMDAwLA0KLSAgICAweDM4MjAyMDAw
LA0KLSAgICAweDM4MjA0MDAwLA0KLSAgICAweDM4MjA2MDAwLA0KLSAgICAweDM4MjA4MDAwLA0K
LSAgICAweDM4MjBhMDAwLA0KLSAgICAweDM4MjBjMDAwLA0KLSAgICAweDM4MjBlMDAwLA0KLSAg
ICAweDM4MjEwMDAwLA0KLSAgICAweDM4MjEyMDAwLA0KLSAgICAweDM4MjE0MDAwLA0KLSAgICAw
eDM4MjE2MDAwLA0KLSAgICAweDM4MjE4MDAwLA0KLSAgICAweDM4MjFhMDAwLA0KLSAgICAweDM4
MjFjMDAwLA0KLSAgICAweDM4MjFlMDAwLA0KLSAgICAweDM4MjIwMDAwLA0KLSAgICAweDM4MjIy
MDAwLA0KLSAgICAweDM4MjI0MDAwLA0KLSAgICAweDM4MjI2MDAwLA0KLSAgICAweDM4MjI4MDAw
LA0KLSAgICAweDM4MjJhMDAwLA0KLSAgICAweDM4MjJjMDAwLA0KLSAgICAweDM4MjJlMDAwLA0K
LSAgICAweDM4MjMwMDAwLA0KLSAgICAweDM4MjMyMDAwLA0KLSAgICAweDM4MjM0MDAwLA0KLSAg
ICAweDM4MjM2MDAwLA0KLSAgICAweDM4MjM4MDAwLA0KLSAgICAweDM4MjNhMDAwLA0KLSAgICAw
eDM4MjNjMDAwLA0KLSAgICAweDM4MjNlMDAwLA0KLSAgICAweDM4MjQwMDAwLA0KLSAgICAweDM4
MjQyMDAwLA0KLSAgICAweDM4MjQ0MDAwLA0KLSAgICAweDM4MjQ2MDAwLA0KLSAgICAweDM4MjQ4
MDAwLA0KLSAgICAweDM4MjRhMDAwLA0KLSAgICAweDM4MjRjMDAwLA0KLSAgICAweDM4MjRlMDAw
LA0KLSAgICAweDM4MjUwMDAwLA0KLSAgICAweDM4MjUyMDAwLA0KLSAgICAweDM4MjU0MDAwLA0K
LSAgICAweDM4MjU2MDAwLA0KLSAgICAweDM4MjU4MDAwLA0KLSAgICAweDM4MjVhMDAwLA0KLSAg
ICAweDM4MjVjMDAwLA0KLSAgICAweDM4MjVlMDAwLA0KLSAgICAweDM4MjYwMDAwLA0KLSAgICAw
eDM4MjYyMDAwLA0KLSAgICAweDM4MjY0MDAwLA0KLSAgICAweDM4MjY2MDAwLA0KLSAgICAweDM4
MjY4MDAwLA0KLSAgICAweDM4MjZhMDAwLA0KLSAgICAweDM4MjZjMDAwLA0KLSAgICAweDM4MjZl
MDAwLA0KLSAgICAweDM4MjcwMDAwLA0KLSAgICAweDM4MjcyMDAwLA0KLSAgICAweDM4Mjc0MDAw
LA0KLSAgICAweDM4Mjc2MDAwLA0KLSAgICAweDM4Mjc4MDAwLA0KLSAgICAweDM4MjdhMDAwLA0K
LSAgICAweDM4MjdjMDAwLA0KLSAgICAweDM4MjdlMDAwLA0KLSAgICAweDM4MjgwMDAwLA0KLSAg
ICAweDM4MjgyMDAwLA0KLSAgICAweDM4Mjg0MDAwLA0KLSAgICAweDM4Mjg2MDAwLA0KLSAgICAw
eDM4Mjg4MDAwLA0KLSAgICAweDM4MjhhMDAwLA0KLSAgICAweDM4MjhjMDAwLA0KLSAgICAweDM4
MjhlMDAwLA0KLSAgICAweDM4MjkwMDAwLA0KLSAgICAweDM4MjkyMDAwLA0KLSAgICAweDM4Mjk0
MDAwLA0KLSAgICAweDM4Mjk2MDAwLA0KLSAgICAweDM4Mjk4MDAwLA0KLSAgICAweDM4MjlhMDAw
LA0KLSAgICAweDM4MjljMDAwLA0KLSAgICAweDM4MjllMDAwLA0KLSAgICAweDM4MmEwMDAwLA0K
LSAgICAweDM4MmEyMDAwLA0KLSAgICAweDM4MmE0MDAwLA0KLSAgICAweDM4MmE2MDAwLA0KLSAg
ICAweDM4MmE4MDAwLA0KLSAgICAweDM4MmFhMDAwLA0KLSAgICAweDM4MmFjMDAwLA0KLSAgICAw
eDM4MmFlMDAwLA0KLSAgICAweDM4MmIwMDAwLA0KLSAgICAweDM4MmIyMDAwLA0KLSAgICAweDM4
MmI0MDAwLA0KLSAgICAweDM4MmI2MDAwLA0KLSAgICAweDM4MmI4MDAwLA0KLSAgICAweDM4MmJh
MDAwLA0KLSAgICAweDM4MmJjMDAwLA0KLSAgICAweDM4MmJlMDAwLA0KLSAgICAweDM4MmMwMDAw
LA0KLSAgICAweDM4MmMyMDAwLA0KLSAgICAweDM4MmM0MDAwLA0KLSAgICAweDM4MmM2MDAwLA0K
LSAgICAweDM4MmM4MDAwLA0KLSAgICAweDM4MmNhMDAwLA0KLSAgICAweDM4MmNjMDAwLA0KLSAg
ICAweDM4MmNlMDAwLA0KLSAgICAweDM4MmQwMDAwLA0KLSAgICAweDM4MmQyMDAwLA0KLSAgICAw
eDM4MmQ0MDAwLA0KLSAgICAweDM4MmQ2MDAwLA0KLSAgICAweDM4MmQ4MDAwLA0KLSAgICAweDM4
MmRhMDAwLA0KLSAgICAweDM4MmRjMDAwLA0KLSAgICAweDM4MmRlMDAwLA0KLSAgICAweDM4MmUw
MDAwLA0KLSAgICAweDM4MmUyMDAwLA0KLSAgICAweDM4MmU0MDAwLA0KLSAgICAweDM4MmU2MDAw
LA0KLSAgICAweDM4MmU4MDAwLA0KLSAgICAweDM4MmVhMDAwLA0KLSAgICAweDM4MmVjMDAwLA0K
LSAgICAweDM4MmVlMDAwLA0KLSAgICAweDM4MmYwMDAwLA0KLSAgICAweDM4MmYyMDAwLA0KLSAg
ICAweDM4MmY0MDAwLA0KLSAgICAweDM4MmY2MDAwLA0KLSAgICAweDM4MmY4MDAwLA0KLSAgICAw
eDM4MmZhMDAwLA0KLSAgICAweDM4MmZjMDAwLA0KLSAgICAweDM4MmZlMDAwLA0KLSAgICAweDM4
MzAwMDAwLA0KLSAgICAweDM4MzAyMDAwLA0KLSAgICAweDM4MzA0MDAwLA0KLSAgICAweDM4MzA2
MDAwLA0KLSAgICAweDM4MzA4MDAwLA0KLSAgICAweDM4MzBhMDAwLA0KLSAgICAweDM4MzBjMDAw
LA0KLSAgICAweDM4MzBlMDAwLA0KLSAgICAweDM4MzEwMDAwLA0KLSAgICAweDM4MzEyMDAwLA0K
LSAgICAweDM4MzE0MDAwLA0KLSAgICAweDM4MzE2MDAwLA0KLSAgICAweDM4MzE4MDAwLA0KLSAg
ICAweDM4MzFhMDAwLA0KLSAgICAweDM4MzFjMDAwLA0KLSAgICAweDM4MzFlMDAwLA0KLSAgICAw
eDM4MzIwMDAwLA0KLSAgICAweDM4MzIyMDAwLA0KLSAgICAweDM4MzI0MDAwLA0KLSAgICAweDM4
MzI2MDAwLA0KLSAgICAweDM4MzI4MDAwLA0KLSAgICAweDM4MzJhMDAwLA0KLSAgICAweDM4MzJj
MDAwLA0KLSAgICAweDM4MzJlMDAwLA0KLSAgICAweDM4MzMwMDAwLA0KLSAgICAweDM4MzMyMDAw
LA0KLSAgICAweDM4MzM0MDAwLA0KLSAgICAweDM4MzM2MDAwLA0KLSAgICAweDM4MzM4MDAwLA0K
LSAgICAweDM4MzNhMDAwLA0KLSAgICAweDM4MzNjMDAwLA0KLSAgICAweDM4MzNlMDAwLA0KLSAg
ICAweDM4MzQwMDAwLA0KLSAgICAweDM4MzQyMDAwLA0KLSAgICAweDM4MzQ0MDAwLA0KLSAgICAw
eDM4MzQ2MDAwLA0KLSAgICAweDM4MzQ4MDAwLA0KLSAgICAweDM4MzRhMDAwLA0KLSAgICAweDM4
MzRjMDAwLA0KLSAgICAweDM4MzRlMDAwLA0KLSAgICAweDM4MzUwMDAwLA0KLSAgICAweDM4MzUy
MDAwLA0KLSAgICAweDM4MzU0MDAwLA0KLSAgICAweDM4MzU2MDAwLA0KLSAgICAweDM4MzU4MDAw
LA0KLSAgICAweDM4MzVhMDAwLA0KLSAgICAweDM4MzVjMDAwLA0KLSAgICAweDM4MzVlMDAwLA0K
LSAgICAweDM4MzYwMDAwLA0KLSAgICAweDM4MzYyMDAwLA0KLSAgICAweDM4MzY0MDAwLA0KLSAg
ICAweDM4MzY2MDAwLA0KLSAgICAweDM4MzY4MDAwLA0KLSAgICAweDM4MzZhMDAwLA0KLSAgICAw
eDM4MzZjMDAwLA0KLSAgICAweDM4MzZlMDAwLA0KLSAgICAweDM4MzcwMDAwLA0KLSAgICAweDM4
MzcyMDAwLA0KLSAgICAweDM4Mzc0MDAwLA0KLSAgICAweDM4Mzc2MDAwLA0KLSAgICAweDM4Mzc4
MDAwLA0KLSAgICAweDM4MzdhMDAwLA0KLSAgICAweDM4MzdjMDAwLA0KLSAgICAweDM4MzdlMDAw
LA0KLSAgICAweDM4MzgwMDAwLA0KLSAgICAweDM4MzgyMDAwLA0KLSAgICAweDM4Mzg0MDAwLA0K
LSAgICAweDM4Mzg2MDAwLA0KLSAgICAweDM4Mzg4MDAwLA0KLSAgICAweDM4MzhhMDAwLA0KLSAg
ICAweDM4MzhjMDAwLA0KLSAgICAweDM4MzhlMDAwLA0KLSAgICAweDM4MzkwMDAwLA0KLSAgICAw
eDM4MzkyMDAwLA0KLSAgICAweDM4Mzk0MDAwLA0KLSAgICAweDM4Mzk2MDAwLA0KLSAgICAweDM4
Mzk4MDAwLA0KLSAgICAweDM4MzlhMDAwLA0KLSAgICAweDM4MzljMDAwLA0KLSAgICAweDM4Mzll
MDAwLA0KLSAgICAweDM4M2EwMDAwLA0KLSAgICAweDM4M2EyMDAwLA0KLSAgICAweDM4M2E0MDAw
LA0KLSAgICAweDM4M2E2MDAwLA0KLSAgICAweDM4M2E4MDAwLA0KLSAgICAweDM4M2FhMDAwLA0K
LSAgICAweDM4M2FjMDAwLA0KLSAgICAweDM4M2FlMDAwLA0KLSAgICAweDM4M2IwMDAwLA0KLSAg
ICAweDM4M2IyMDAwLA0KLSAgICAweDM4M2I0MDAwLA0KLSAgICAweDM4M2I2MDAwLA0KLSAgICAw
eDM4M2I4MDAwLA0KLSAgICAweDM4M2JhMDAwLA0KLSAgICAweDM4M2JjMDAwLA0KLSAgICAweDM4
M2JlMDAwLA0KLSAgICAweDM4M2MwMDAwLA0KLSAgICAweDM4M2MyMDAwLA0KLSAgICAweDM4M2M0
MDAwLA0KLSAgICAweDM4M2M2MDAwLA0KLSAgICAweDM4M2M4MDAwLA0KLSAgICAweDM4M2NhMDAw
LA0KLSAgICAweDM4M2NjMDAwLA0KLSAgICAweDM4M2NlMDAwLA0KLSAgICAweDM4M2QwMDAwLA0K
LSAgICAweDM4M2QyMDAwLA0KLSAgICAweDM4M2Q0MDAwLA0KLSAgICAweDM4M2Q2MDAwLA0KLSAg
ICAweDM4M2Q4MDAwLA0KLSAgICAweDM4M2RhMDAwLA0KLSAgICAweDM4M2RjMDAwLA0KLSAgICAw
eDM4M2RlMDAwLA0KLSAgICAweDM4M2UwMDAwLA0KLSAgICAweDM4M2UyMDAwLA0KLSAgICAweDM4
M2U0MDAwLA0KLSAgICAweDM4M2U2MDAwLA0KLSAgICAweDM4M2U4MDAwLA0KLSAgICAweDM4M2Vh
MDAwLA0KLSAgICAweDM4M2VjMDAwLA0KLSAgICAweDM4M2VlMDAwLA0KLSAgICAweDM4M2YwMDAw
LA0KLSAgICAweDM4M2YyMDAwLA0KLSAgICAweDM4M2Y0MDAwLA0KLSAgICAweDM4M2Y2MDAwLA0K
LSAgICAweDM4M2Y4MDAwLA0KLSAgICAweDM4M2ZhMDAwLA0KLSAgICAweDM4M2ZjMDAwLA0KLSAg
ICAweDM4M2ZlMDAwLA0KLSAgICAweDM4NDAwMDAwLA0KLSAgICAweDM4NDAyMDAwLA0KLSAgICAw
eDM4NDA0MDAwLA0KLSAgICAweDM4NDA2MDAwLA0KLSAgICAweDM4NDA4MDAwLA0KLSAgICAweDM4
NDBhMDAwLA0KLSAgICAweDM4NDBjMDAwLA0KLSAgICAweDM4NDBlMDAwLA0KLSAgICAweDM4NDEw
MDAwLA0KLSAgICAweDM4NDEyMDAwLA0KLSAgICAweDM4NDE0MDAwLA0KLSAgICAweDM4NDE2MDAw
LA0KLSAgICAweDM4NDE4MDAwLA0KLSAgICAweDM4NDFhMDAwLA0KLSAgICAweDM4NDFjMDAwLA0K
LSAgICAweDM4NDFlMDAwLA0KLSAgICAweDM4NDIwMDAwLA0KLSAgICAweDM4NDIyMDAwLA0KLSAg
ICAweDM4NDI0MDAwLA0KLSAgICAweDM4NDI2MDAwLA0KLSAgICAweDM4NDI4MDAwLA0KLSAgICAw
eDM4NDJhMDAwLA0KLSAgICAweDM4NDJjMDAwLA0KLSAgICAweDM4NDJlMDAwLA0KLSAgICAweDM4
NDMwMDAwLA0KLSAgICAweDM4NDMyMDAwLA0KLSAgICAweDM4NDM0MDAwLA0KLSAgICAweDM4NDM2
MDAwLA0KLSAgICAweDM4NDM4MDAwLA0KLSAgICAweDM4NDNhMDAwLA0KLSAgICAweDM4NDNjMDAw
LA0KLSAgICAweDM4NDNlMDAwLA0KLSAgICAweDM4NDQwMDAwLA0KLSAgICAweDM4NDQyMDAwLA0K
LSAgICAweDM4NDQ0MDAwLA0KLSAgICAweDM4NDQ2MDAwLA0KLSAgICAweDM4NDQ4MDAwLA0KLSAg
ICAweDM4NDRhMDAwLA0KLSAgICAweDM4NDRjMDAwLA0KLSAgICAweDM4NDRlMDAwLA0KLSAgICAw
eDM4NDUwMDAwLA0KLSAgICAweDM4NDUyMDAwLA0KLSAgICAweDM4NDU0MDAwLA0KLSAgICAweDM4
NDU2MDAwLA0KLSAgICAweDM4NDU4MDAwLA0KLSAgICAweDM4NDVhMDAwLA0KLSAgICAweDM4NDVj
MDAwLA0KLSAgICAweDM4NDVlMDAwLA0KLSAgICAweDM4NDYwMDAwLA0KLSAgICAweDM4NDYyMDAw
LA0KLSAgICAweDM4NDY0MDAwLA0KLSAgICAweDM4NDY2MDAwLA0KLSAgICAweDM4NDY4MDAwLA0K
LSAgICAweDM4NDZhMDAwLA0KLSAgICAweDM4NDZjMDAwLA0KLSAgICAweDM4NDZlMDAwLA0KLSAg
ICAweDM4NDcwMDAwLA0KLSAgICAweDM4NDcyMDAwLA0KLSAgICAweDM4NDc0MDAwLA0KLSAgICAw
eDM4NDc2MDAwLA0KLSAgICAweDM4NDc4MDAwLA0KLSAgICAweDM4NDdhMDAwLA0KLSAgICAweDM4
NDdjMDAwLA0KLSAgICAweDM4NDdlMDAwLA0KLSAgICAweDM4NDgwMDAwLA0KLSAgICAweDM4NDgy
MDAwLA0KLSAgICAweDM4NDg0MDAwLA0KLSAgICAweDM4NDg2MDAwLA0KLSAgICAweDM4NDg4MDAw
LA0KLSAgICAweDM4NDhhMDAwLA0KLSAgICAweDM4NDhjMDAwLA0KLSAgICAweDM4NDhlMDAwLA0K
LSAgICAweDM4NDkwMDAwLA0KLSAgICAweDM4NDkyMDAwLA0KLSAgICAweDM4NDk0MDAwLA0KLSAg
ICAweDM4NDk2MDAwLA0KLSAgICAweDM4NDk4MDAwLA0KLSAgICAweDM4NDlhMDAwLA0KLSAgICAw
eDM4NDljMDAwLA0KLSAgICAweDM4NDllMDAwLA0KLSAgICAweDM4NGEwMDAwLA0KLSAgICAweDM4
NGEyMDAwLA0KLSAgICAweDM4NGE0MDAwLA0KLSAgICAweDM4NGE2MDAwLA0KLSAgICAweDM4NGE4
MDAwLA0KLSAgICAweDM4NGFhMDAwLA0KLSAgICAweDM4NGFjMDAwLA0KLSAgICAweDM4NGFlMDAw
LA0KLSAgICAweDM4NGIwMDAwLA0KLSAgICAweDM4NGIyMDAwLA0KLSAgICAweDM4NGI0MDAwLA0K
LSAgICAweDM4NGI2MDAwLA0KLSAgICAweDM4NGI4MDAwLA0KLSAgICAweDM4NGJhMDAwLA0KLSAg
ICAweDM4NGJjMDAwLA0KLSAgICAweDM4NGJlMDAwLA0KLSAgICAweDM4NGMwMDAwLA0KLSAgICAw
eDM4NGMyMDAwLA0KLSAgICAweDM4NGM0MDAwLA0KLSAgICAweDM4NGM2MDAwLA0KLSAgICAweDM4
NGM4MDAwLA0KLSAgICAweDM4NGNhMDAwLA0KLSAgICAweDM4NGNjMDAwLA0KLSAgICAweDM4NGNl
MDAwLA0KLSAgICAweDM4NGQwMDAwLA0KLSAgICAweDM4NGQyMDAwLA0KLSAgICAweDM4NGQ0MDAw
LA0KLSAgICAweDM4NGQ2MDAwLA0KLSAgICAweDM4NGQ4MDAwLA0KLSAgICAweDM4NGRhMDAwLA0K
LSAgICAweDM4NGRjMDAwLA0KLSAgICAweDM4NGRlMDAwLA0KLSAgICAweDM4NGUwMDAwLA0KLSAg
ICAweDM4NGUyMDAwLA0KLSAgICAweDM4NGU0MDAwLA0KLSAgICAweDM4NGU2MDAwLA0KLSAgICAw
eDM4NGU4MDAwLA0KLSAgICAweDM4NGVhMDAwLA0KLSAgICAweDM4NGVjMDAwLA0KLSAgICAweDM4
NGVlMDAwLA0KLSAgICAweDM4NGYwMDAwLA0KLSAgICAweDM4NGYyMDAwLA0KLSAgICAweDM4NGY0
MDAwLA0KLSAgICAweDM4NGY2MDAwLA0KLSAgICAweDM4NGY4MDAwLA0KLSAgICAweDM4NGZhMDAw
LA0KLSAgICAweDM4NGZjMDAwLA0KLSAgICAweDM4NGZlMDAwLA0KLSAgICAweDM4NTAwMDAwLA0K
LSAgICAweDM4NTAyMDAwLA0KLSAgICAweDM4NTA0MDAwLA0KLSAgICAweDM4NTA2MDAwLA0KLSAg
ICAweDM4NTA4MDAwLA0KLSAgICAweDM4NTBhMDAwLA0KLSAgICAweDM4NTBjMDAwLA0KLSAgICAw
eDM4NTBlMDAwLA0KLSAgICAweDM4NTEwMDAwLA0KLSAgICAweDM4NTEyMDAwLA0KLSAgICAweDM4
NTE0MDAwLA0KLSAgICAweDM4NTE2MDAwLA0KLSAgICAweDM4NTE4MDAwLA0KLSAgICAweDM4NTFh
MDAwLA0KLSAgICAweDM4NTFjMDAwLA0KLSAgICAweDM4NTFlMDAwLA0KLSAgICAweDM4NTIwMDAw
LA0KLSAgICAweDM4NTIyMDAwLA0KLSAgICAweDM4NTI0MDAwLA0KLSAgICAweDM4NTI2MDAwLA0K
LSAgICAweDM4NTI4MDAwLA0KLSAgICAweDM4NTJhMDAwLA0KLSAgICAweDM4NTJjMDAwLA0KLSAg
ICAweDM4NTJlMDAwLA0KLSAgICAweDM4NTMwMDAwLA0KLSAgICAweDM4NTMyMDAwLA0KLSAgICAw
eDM4NTM0MDAwLA0KLSAgICAweDM4NTM2MDAwLA0KLSAgICAweDM4NTM4MDAwLA0KLSAgICAweDM4
NTNhMDAwLA0KLSAgICAweDM4NTNjMDAwLA0KLSAgICAweDM4NTNlMDAwLA0KLSAgICAweDM4NTQw
MDAwLA0KLSAgICAweDM4NTQyMDAwLA0KLSAgICAweDM4NTQ0MDAwLA0KLSAgICAweDM4NTQ2MDAw
LA0KLSAgICAweDM4NTQ4MDAwLA0KLSAgICAweDM4NTRhMDAwLA0KLSAgICAweDM4NTRjMDAwLA0K
LSAgICAweDM4NTRlMDAwLA0KLSAgICAweDM4NTUwMDAwLA0KLSAgICAweDM4NTUyMDAwLA0KLSAg
ICAweDM4NTU0MDAwLA0KLSAgICAweDM4NTU2MDAwLA0KLSAgICAweDM4NTU4MDAwLA0KLSAgICAw
eDM4NTVhMDAwLA0KLSAgICAweDM4NTVjMDAwLA0KLSAgICAweDM4NTVlMDAwLA0KLSAgICAweDM4
NTYwMDAwLA0KLSAgICAweDM4NTYyMDAwLA0KLSAgICAweDM4NTY0MDAwLA0KLSAgICAweDM4NTY2
MDAwLA0KLSAgICAweDM4NTY4MDAwLA0KLSAgICAweDM4NTZhMDAwLA0KLSAgICAweDM4NTZjMDAw
LA0KLSAgICAweDM4NTZlMDAwLA0KLSAgICAweDM4NTcwMDAwLA0KLSAgICAweDM4NTcyMDAwLA0K
LSAgICAweDM4NTc0MDAwLA0KLSAgICAweDM4NTc2MDAwLA0KLSAgICAweDM4NTc4MDAwLA0KLSAg
ICAweDM4NTdhMDAwLA0KLSAgICAweDM4NTdjMDAwLA0KLSAgICAweDM4NTdlMDAwLA0KLSAgICAw
eDM4NTgwMDAwLA0KLSAgICAweDM4NTgyMDAwLA0KLSAgICAweDM4NTg0MDAwLA0KLSAgICAweDM4
NTg2MDAwLA0KLSAgICAweDM4NTg4MDAwLA0KLSAgICAweDM4NThhMDAwLA0KLSAgICAweDM4NThj
MDAwLA0KLSAgICAweDM4NThlMDAwLA0KLSAgICAweDM4NTkwMDAwLA0KLSAgICAweDM4NTkyMDAw
LA0KLSAgICAweDM4NTk0MDAwLA0KLSAgICAweDM4NTk2MDAwLA0KLSAgICAweDM4NTk4MDAwLA0K
LSAgICAweDM4NTlhMDAwLA0KLSAgICAweDM4NTljMDAwLA0KLSAgICAweDM4NTllMDAwLA0KLSAg
ICAweDM4NWEwMDAwLA0KLSAgICAweDM4NWEyMDAwLA0KLSAgICAweDM4NWE0MDAwLA0KLSAgICAw
eDM4NWE2MDAwLA0KLSAgICAweDM4NWE4MDAwLA0KLSAgICAweDM4NWFhMDAwLA0KLSAgICAweDM4
NWFjMDAwLA0KLSAgICAweDM4NWFlMDAwLA0KLSAgICAweDM4NWIwMDAwLA0KLSAgICAweDM4NWIy
MDAwLA0KLSAgICAweDM4NWI0MDAwLA0KLSAgICAweDM4NWI2MDAwLA0KLSAgICAweDM4NWI4MDAw
LA0KLSAgICAweDM4NWJhMDAwLA0KLSAgICAweDM4NWJjMDAwLA0KLSAgICAweDM4NWJlMDAwLA0K
LSAgICAweDM4NWMwMDAwLA0KLSAgICAweDM4NWMyMDAwLA0KLSAgICAweDM4NWM0MDAwLA0KLSAg
ICAweDM4NWM2MDAwLA0KLSAgICAweDM4NWM4MDAwLA0KLSAgICAweDM4NWNhMDAwLA0KLSAgICAw
eDM4NWNjMDAwLA0KLSAgICAweDM4NWNlMDAwLA0KLSAgICAweDM4NWQwMDAwLA0KLSAgICAweDM4
NWQyMDAwLA0KLSAgICAweDM4NWQ0MDAwLA0KLSAgICAweDM4NWQ2MDAwLA0KLSAgICAweDM4NWQ4
MDAwLA0KLSAgICAweDM4NWRhMDAwLA0KLSAgICAweDM4NWRjMDAwLA0KLSAgICAweDM4NWRlMDAw
LA0KLSAgICAweDM4NWUwMDAwLA0KLSAgICAweDM4NWUyMDAwLA0KLSAgICAweDM4NWU0MDAwLA0K
LSAgICAweDM4NWU2MDAwLA0KLSAgICAweDM4NWU4MDAwLA0KLSAgICAweDM4NWVhMDAwLA0KLSAg
ICAweDM4NWVjMDAwLA0KLSAgICAweDM4NWVlMDAwLA0KLSAgICAweDM4NWYwMDAwLA0KLSAgICAw
eDM4NWYyMDAwLA0KLSAgICAweDM4NWY0MDAwLA0KLSAgICAweDM4NWY2MDAwLA0KLSAgICAweDM4
NWY4MDAwLA0KLSAgICAweDM4NWZhMDAwLA0KLSAgICAweDM4NWZjMDAwLA0KLSAgICAweDM4NWZl
MDAwLA0KLSAgICAweDM4NjAwMDAwLA0KLSAgICAweDM4NjAyMDAwLA0KLSAgICAweDM4NjA0MDAw
LA0KLSAgICAweDM4NjA2MDAwLA0KLSAgICAweDM4NjA4MDAwLA0KLSAgICAweDM4NjBhMDAwLA0K
LSAgICAweDM4NjBjMDAwLA0KLSAgICAweDM4NjBlMDAwLA0KLSAgICAweDM4NjEwMDAwLA0KLSAg
ICAweDM4NjEyMDAwLA0KLSAgICAweDM4NjE0MDAwLA0KLSAgICAweDM4NjE2MDAwLA0KLSAgICAw
eDM4NjE4MDAwLA0KLSAgICAweDM4NjFhMDAwLA0KLSAgICAweDM4NjFjMDAwLA0KLSAgICAweDM4
NjFlMDAwLA0KLSAgICAweDM4NjIwMDAwLA0KLSAgICAweDM4NjIyMDAwLA0KLSAgICAweDM4NjI0
MDAwLA0KLSAgICAweDM4NjI2MDAwLA0KLSAgICAweDM4NjI4MDAwLA0KLSAgICAweDM4NjJhMDAw
LA0KLSAgICAweDM4NjJjMDAwLA0KLSAgICAweDM4NjJlMDAwLA0KLSAgICAweDM4NjMwMDAwLA0K
LSAgICAweDM4NjMyMDAwLA0KLSAgICAweDM4NjM0MDAwLA0KLSAgICAweDM4NjM2MDAwLA0KLSAg
ICAweDM4NjM4MDAwLA0KLSAgICAweDM4NjNhMDAwLA0KLSAgICAweDM4NjNjMDAwLA0KLSAgICAw
eDM4NjNlMDAwLA0KLSAgICAweDM4NjQwMDAwLA0KLSAgICAweDM4NjQyMDAwLA0KLSAgICAweDM4
NjQ0MDAwLA0KLSAgICAweDM4NjQ2MDAwLA0KLSAgICAweDM4NjQ4MDAwLA0KLSAgICAweDM4NjRh
MDAwLA0KLSAgICAweDM4NjRjMDAwLA0KLSAgICAweDM4NjRlMDAwLA0KLSAgICAweDM4NjUwMDAw
LA0KLSAgICAweDM4NjUyMDAwLA0KLSAgICAweDM4NjU0MDAwLA0KLSAgICAweDM4NjU2MDAwLA0K
LSAgICAweDM4NjU4MDAwLA0KLSAgICAweDM4NjVhMDAwLA0KLSAgICAweDM4NjVjMDAwLA0KLSAg
ICAweDM4NjVlMDAwLA0KLSAgICAweDM4NjYwMDAwLA0KLSAgICAweDM4NjYyMDAwLA0KLSAgICAw
eDM4NjY0MDAwLA0KLSAgICAweDM4NjY2MDAwLA0KLSAgICAweDM4NjY4MDAwLA0KLSAgICAweDM4
NjZhMDAwLA0KLSAgICAweDM4NjZjMDAwLA0KLSAgICAweDM4NjZlMDAwLA0KLSAgICAweDM4Njcw
MDAwLA0KLSAgICAweDM4NjcyMDAwLA0KLSAgICAweDM4Njc0MDAwLA0KLSAgICAweDM4Njc2MDAw
LA0KLSAgICAweDM4Njc4MDAwLA0KLSAgICAweDM4NjdhMDAwLA0KLSAgICAweDM4NjdjMDAwLA0K
LSAgICAweDM4NjdlMDAwLA0KLSAgICAweDM4NjgwMDAwLA0KLSAgICAweDM4NjgyMDAwLA0KLSAg
ICAweDM4Njg0MDAwLA0KLSAgICAweDM4Njg2MDAwLA0KLSAgICAweDM4Njg4MDAwLA0KLSAgICAw
eDM4NjhhMDAwLA0KLSAgICAweDM4NjhjMDAwLA0KLSAgICAweDM4NjhlMDAwLA0KLSAgICAweDM4
NjkwMDAwLA0KLSAgICAweDM4NjkyMDAwLA0KLSAgICAweDM4Njk0MDAwLA0KLSAgICAweDM4Njk2
MDAwLA0KLSAgICAweDM4Njk4MDAwLA0KLSAgICAweDM4NjlhMDAwLA0KLSAgICAweDM4NjljMDAw
LA0KLSAgICAweDM4NjllMDAwLA0KLSAgICAweDM4NmEwMDAwLA0KLSAgICAweDM4NmEyMDAwLA0K
LSAgICAweDM4NmE0MDAwLA0KLSAgICAweDM4NmE2MDAwLA0KLSAgICAweDM4NmE4MDAwLA0KLSAg
ICAweDM4NmFhMDAwLA0KLSAgICAweDM4NmFjMDAwLA0KLSAgICAweDM4NmFlMDAwLA0KLSAgICAw
eDM4NmIwMDAwLA0KLSAgICAweDM4NmIyMDAwLA0KLSAgICAweDM4NmI0MDAwLA0KLSAgICAweDM4
NmI2MDAwLA0KLSAgICAweDM4NmI4MDAwLA0KLSAgICAweDM4NmJhMDAwLA0KLSAgICAweDM4NmJj
MDAwLA0KLSAgICAweDM4NmJlMDAwLA0KLSAgICAweDM4NmMwMDAwLA0KLSAgICAweDM4NmMyMDAw
LA0KLSAgICAweDM4NmM0MDAwLA0KLSAgICAweDM4NmM2MDAwLA0KLSAgICAweDM4NmM4MDAwLA0K
LSAgICAweDM4NmNhMDAwLA0KLSAgICAweDM4NmNjMDAwLA0KLSAgICAweDM4NmNlMDAwLA0KLSAg
ICAweDM4NmQwMDAwLA0KLSAgICAweDM4NmQyMDAwLA0KLSAgICAweDM4NmQ0MDAwLA0KLSAgICAw
eDM4NmQ2MDAwLA0KLSAgICAweDM4NmQ4MDAwLA0KLSAgICAweDM4NmRhMDAwLA0KLSAgICAweDM4
NmRjMDAwLA0KLSAgICAweDM4NmRlMDAwLA0KLSAgICAweDM4NmUwMDAwLA0KLSAgICAweDM4NmUy
MDAwLA0KLSAgICAweDM4NmU0MDAwLA0KLSAgICAweDM4NmU2MDAwLA0KLSAgICAweDM4NmU4MDAw
LA0KLSAgICAweDM4NmVhMDAwLA0KLSAgICAweDM4NmVjMDAwLA0KLSAgICAweDM4NmVlMDAwLA0K
LSAgICAweDM4NmYwMDAwLA0KLSAgICAweDM4NmYyMDAwLA0KLSAgICAweDM4NmY0MDAwLA0KLSAg
ICAweDM4NmY2MDAwLA0KLSAgICAweDM4NmY4MDAwLA0KLSAgICAweDM4NmZhMDAwLA0KLSAgICAw
eDM4NmZjMDAwLA0KLSAgICAweDM4NmZlMDAwLA0KLSAgICAweDM4NzAwMDAwLA0KLSAgICAweDM4
NzAyMDAwLA0KLSAgICAweDM4NzA0MDAwLA0KLSAgICAweDM4NzA2MDAwLA0KLSAgICAweDM4NzA4
MDAwLA0KLSAgICAweDM4NzBhMDAwLA0KLSAgICAweDM4NzBjMDAwLA0KLSAgICAweDM4NzBlMDAw
LA0KLSAgICAweDM4NzEwMDAwLA0KLSAgICAweDM4NzEyMDAwLA0KLSAgICAweDM4NzE0MDAwLA0K
LSAgICAweDM4NzE2MDAwLA0KLSAgICAweDM4NzE4MDAwLA0KLSAgICAweDM4NzFhMDAwLA0KLSAg
ICAweDM4NzFjMDAwLA0KLSAgICAweDM4NzFlMDAwLA0KLSAgICAweDM4NzIwMDAwLA0KLSAgICAw
eDM4NzIyMDAwLA0KLSAgICAweDM4NzI0MDAwLA0KLSAgICAweDM4NzI2MDAwLA0KLSAgICAweDM4
NzI4MDAwLA0KLSAgICAweDM4NzJhMDAwLA0KLSAgICAweDM4NzJjMDAwLA0KLSAgICAweDM4NzJl
MDAwLA0KLSAgICAweDM4NzMwMDAwLA0KLSAgICAweDM4NzMyMDAwLA0KLSAgICAweDM4NzM0MDAw
LA0KLSAgICAweDM4NzM2MDAwLA0KLSAgICAweDM4NzM4MDAwLA0KLSAgICAweDM4NzNhMDAwLA0K
LSAgICAweDM4NzNjMDAwLA0KLSAgICAweDM4NzNlMDAwLA0KLSAgICAweDM4NzQwMDAwLA0KLSAg
ICAweDM4NzQyMDAwLA0KLSAgICAweDM4NzQ0MDAwLA0KLSAgICAweDM4NzQ2MDAwLA0KLSAgICAw
eDM4NzQ4MDAwLA0KLSAgICAweDM4NzRhMDAwLA0KLSAgICAweDM4NzRjMDAwLA0KLSAgICAweDM4
NzRlMDAwLA0KLSAgICAweDM4NzUwMDAwLA0KLSAgICAweDM4NzUyMDAwLA0KLSAgICAweDM4NzU0
MDAwLA0KLSAgICAweDM4NzU2MDAwLA0KLSAgICAweDM4NzU4MDAwLA0KLSAgICAweDM4NzVhMDAw
LA0KLSAgICAweDM4NzVjMDAwLA0KLSAgICAweDM4NzVlMDAwLA0KLSAgICAweDM4NzYwMDAwLA0K
LSAgICAweDM4NzYyMDAwLA0KLSAgICAweDM4NzY0MDAwLA0KLSAgICAweDM4NzY2MDAwLA0KLSAg
ICAweDM4NzY4MDAwLA0KLSAgICAweDM4NzZhMDAwLA0KLSAgICAweDM4NzZjMDAwLA0KLSAgICAw
eDM4NzZlMDAwLA0KLSAgICAweDM4NzcwMDAwLA0KLSAgICAweDM4NzcyMDAwLA0KLSAgICAweDM4
Nzc0MDAwLA0KLSAgICAweDM4Nzc2MDAwLA0KLSAgICAweDM4Nzc4MDAwLA0KLSAgICAweDM4Nzdh
MDAwLA0KLSAgICAweDM4NzdjMDAwLA0KLSAgICAweDM4NzdlMDAwLA0KLSAgICAweDM4NzgwMDAw
LA0KLSAgICAweDM4NzgyMDAwLA0KLSAgICAweDM4Nzg0MDAwLA0KLSAgICAweDM4Nzg2MDAwLA0K
LSAgICAweDM4Nzg4MDAwLA0KLSAgICAweDM4NzhhMDAwLA0KLSAgICAweDM4NzhjMDAwLA0KLSAg
ICAweDM4NzhlMDAwLA0KLSAgICAweDM4NzkwMDAwLA0KLSAgICAweDM4NzkyMDAwLA0KLSAgICAw
eDM4Nzk0MDAwLA0KLSAgICAweDM4Nzk2MDAwLA0KLSAgICAweDM4Nzk4MDAwLA0KLSAgICAweDM4
NzlhMDAwLA0KLSAgICAweDM4NzljMDAwLA0KLSAgICAweDM4NzllMDAwLA0KLSAgICAweDM4N2Ew
MDAwLA0KLSAgICAweDM4N2EyMDAwLA0KLSAgICAweDM4N2E0MDAwLA0KLSAgICAweDM4N2E2MDAw
LA0KLSAgICAweDM4N2E4MDAwLA0KLSAgICAweDM4N2FhMDAwLA0KLSAgICAweDM4N2FjMDAwLA0K
LSAgICAweDM4N2FlMDAwLA0KLSAgICAweDM4N2IwMDAwLA0KLSAgICAweDM4N2IyMDAwLA0KLSAg
ICAweDM4N2I0MDAwLA0KLSAgICAweDM4N2I2MDAwLA0KLSAgICAweDM4N2I4MDAwLA0KLSAgICAw
eDM4N2JhMDAwLA0KLSAgICAweDM4N2JjMDAwLA0KLSAgICAweDM4N2JlMDAwLA0KLSAgICAweDM4
N2MwMDAwLA0KLSAgICAweDM4N2MyMDAwLA0KLSAgICAweDM4N2M0MDAwLA0KLSAgICAweDM4N2M2
MDAwLA0KLSAgICAweDM4N2M4MDAwLA0KLSAgICAweDM4N2NhMDAwLA0KLSAgICAweDM4N2NjMDAw
LA0KLSAgICAweDM4N2NlMDAwLA0KLSAgICAweDM4N2QwMDAwLA0KLSAgICAweDM4N2QyMDAwLA0K
LSAgICAweDM4N2Q0MDAwLA0KLSAgICAweDM4N2Q2MDAwLA0KLSAgICAweDM4N2Q4MDAwLA0KLSAg
ICAweDM4N2RhMDAwLA0KLSAgICAweDM4N2RjMDAwLA0KLSAgICAweDM4N2RlMDAwLA0KLSAgICAw
eDM4N2UwMDAwLA0KLSAgICAweDM4N2UyMDAwLA0KLSAgICAweDM4N2U0MDAwLA0KLSAgICAweDM4
N2U2MDAwLA0KLSAgICAweDM4N2U4MDAwLA0KLSAgICAweDM4N2VhMDAwLA0KLSAgICAweDM4N2Vj
MDAwLA0KLSAgICAweDM4N2VlMDAwLA0KLSAgICAweDM4N2YwMDAwLA0KLSAgICAweDM4N2YyMDAw
LA0KLSAgICAweDM4N2Y0MDAwLA0KLSAgICAweDM4N2Y2MDAwLA0KLSAgICAweDM4N2Y4MDAwLA0K
LSAgICAweDM4N2ZhMDAwLA0KLSAgICAweDM4N2ZjMDAwLA0KLSAgICAweDM4N2ZlMDAwLA0KLX07
DQotDQotY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfZXhwb25lbnRbNjRdID0gew0KLSAgICAweDAw
MDAwMDAwLA0KLSAgICAweDAwODAwMDAwLA0KLSAgICAweDAxMDAwMDAwLA0KLSAgICAweDAxODAw
MDAwLA0KLSAgICAweDAyMDAwMDAwLA0KLSAgICAweDAyODAwMDAwLA0KLSAgICAweDAzMDAwMDAw
LA0KLSAgICAweDAzODAwMDAwLA0KLSAgICAweDA0MDAwMDAwLA0KLSAgICAweDA0ODAwMDAwLA0K
LSAgICAweDA1MDAwMDAwLA0KLSAgICAweDA1ODAwMDAwLA0KLSAgICAweDA2MDAwMDAwLA0KLSAg
ICAweDA2ODAwMDAwLA0KLSAgICAweDA3MDAwMDAwLA0KLSAgICAweDA3ODAwMDAwLA0KLSAgICAw
eDA4MDAwMDAwLA0KLSAgICAweDA4ODAwMDAwLA0KLSAgICAweDA5MDAwMDAwLA0KLSAgICAweDA5
ODAwMDAwLA0KLSAgICAweDBhMDAwMDAwLA0KLSAgICAweDBhODAwMDAwLA0KLSAgICAweDBiMDAw
MDAwLA0KLSAgICAweDBiODAwMDAwLA0KLSAgICAweDBjMDAwMDAwLA0KLSAgICAweDBjODAwMDAw
LA0KLSAgICAweDBkMDAwMDAwLA0KLSAgICAweDBkODAwMDAwLA0KLSAgICAweDBlMDAwMDAwLA0K
LSAgICAweDBlODAwMDAwLA0KLSAgICAweDBmMDAwMDAwLA0KLSAgICAweDQ3ODAwMDAwLA0KLSAg
ICAweDgwMDAwMDAwLA0KLSAgICAweDgwODAwMDAwLA0KLSAgICAweDgxMDAwMDAwLA0KLSAgICAw
eDgxODAwMDAwLA0KLSAgICAweDgyMDAwMDAwLA0KLSAgICAweDgyODAwMDAwLA0KLSAgICAweDgz
MDAwMDAwLA0KLSAgICAweDgzODAwMDAwLA0KLSAgICAweDg0MDAwMDAwLA0KLSAgICAweDg0ODAw
MDAwLA0KLSAgICAweDg1MDAwMDAwLA0KLSAgICAweDg1ODAwMDAwLA0KLSAgICAweDg2MDAwMDAw
LA0KLSAgICAweDg2ODAwMDAwLA0KLSAgICAweDg3MDAwMDAwLA0KLSAgICAweDg3ODAwMDAwLA0K
LSAgICAweDg4MDAwMDAwLA0KLSAgICAweDg4ODAwMDAwLA0KLSAgICAweDg5MDAwMDAwLA0KLSAg
ICAweDg5ODAwMDAwLA0KLSAgICAweDhhMDAwMDAwLA0KLSAgICAweDhhODAwMDAwLA0KLSAgICAw
eDhiMDAwMDAwLA0KLSAgICAweDhiODAwMDAwLA0KLSAgICAweDhjMDAwMDAwLA0KLSAgICAweDhj
ODAwMDAwLA0KLSAgICAweDhkMDAwMDAwLA0KLSAgICAweDhkODAwMDAwLA0KLSAgICAweDhlMDAw
MDAwLA0KLSAgICAweDhlODAwMDAwLA0KLSAgICAweDhmMDAwMDAwLA0KLSAgICAweGM3ODAwMDAw
LA0KLX07DQotDQotY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfb2Zmc2V0WzY0XSA9IHsNCi0gICAg
MHgwMDAwMDAwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgw
MDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAw
MDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQw
MCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwN
Ci0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0g
ICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAg
MHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgw
MDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAw
MDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQw
MCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwN
Ci0gICAgMHgwMDAwMDAwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0g
ICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAg
MHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgw
MDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAw
MDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQw
MCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwN
Ci0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0g
ICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAg
MHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgw
MDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAwMDQwMCwNCi0gICAgMHgwMDAw
MDQwMCwNCi19Ow0KLQ0KLWZsb2F0IGZsb2F0MTZUb0Zsb2F0MzIodW5zaWduZWQgc2hvcnQgaCkN
Ci17DQotICAgIHVuc2lnbmVkIGkzMiA9IGdfbWFudGlzc2FbZ19vZmZzZXRbaCA+PiAxMF0gKyAo
aCAmIDB4M2ZmKV0gKyBnX2V4cG9uZW50W2ggPj4gMTBdOw0KLSAgICByZXR1cm4gKihmbG9hdCop
ICZpMzI7DQotfQ0KLX0NCi0NCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IGNmMDM5YmYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9GbG9hdDE2VG9GbG9hdDMyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzgg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotIyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotIwotCi0jIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyBhIGZ1bmN0aW9uIHRoYXQg
Y29udmVydHMgMTYtYml0IHByZWNpc2lvbiBmbG9hdGluZwotIyBwb2ludCBudW1iZXJzIHRvIDMy
LWJpdC4KLSMgSXQgaXMgYmFzZWQgb24gZnRwOi8vZnRwLmZveC10b29sa2l0Lm9yZy9wdWIvZmFz
dGhhbGZmbG9hdGNvbnZlcnNpb24ucGRmLgotCi1kZWYgY29udmVydE1hbnRpc3NhKGkpOgotICAg
IGlmIGkgPT0gMDoKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbGlmIGkgPCAxMDI0OgotICAgICAg
ICBtID0gaSA8PCAxMwotICAgICAgICBlID0gMAotICAgICAgICB3aGlsZSBub3QgKG0gJiAweDAw
ODAwMDAwKToKLSAgICAgICAgICAgIGUgLT0gMHgwMDgwMDAwMAotICAgICAgICAgICAgbSA9IG0g
PDwgMQotICAgICAgICBtICY9IH4weDAwODAwMDAwCi0gICAgICAgIGUgKz0gMHgzODgwMDAwMAot
ICAgICAgICByZXR1cm4gbSB8IGUKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gMHgzODAwMDAw
MCArICgoaSAtIDEwMjQpIDw8IDEzKQotCi1kZWYgY29udmVydEV4cG9uZW50KGkpOgotICAgIGlm
IGkgPT0gMDoKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbGlmIGkgaW4gcmFuZ2UoMSwgMzEpOgot
ICAgICAgICByZXR1cm4gaSA8PCAyMwotICAgIGVsaWYgaSA9PSAzMToKLSAgICAgICAgcmV0dXJu
IDB4NDc4MDAwMDAKLSAgICBlbGlmIGkgPT0gMzI6Ci0gICAgICAgIHJldHVybiAweDgwMDAwMDAw
Ci0gICAgZWxpZiBpIGluIHJhbmdlKDMzLCA2Myk6Ci0gICAgICAgIHJldHVybiAweDgwMDAwMDAw
ICsgKChpIC0gMzIpIDw8IDIzKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAweEM3ODAwMDAw
Ci0KLWRlZiBjb252ZXJ0T2Zmc2V0KGkpOgotICAgIGlmIGkgPT0gMCBvciBpID09IDMyOgotICAg
ICAgICByZXR1cm4gMAotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAxMDI0Ci0KLXByaW50ICIi
Ii8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQu
Ci0KLW5hbWVzcGFjZSBnbAotewotIiIiCi0KLXByaW50ICJjb25zdCBzdGF0aWMgdW5zaWduZWQg
Z19tYW50aXNzYVsyMDQ4XSA9IHsiCi1mb3IgaSBpbiByYW5nZSgwLCAyMDQ4KToKLSAgICBwcmlu
dCAiICAgICUjMDEweCwiICUgY29udmVydE1hbnRpc3NhKGkpCi1wcmludCAifTtcbiIKLQotcHJp
bnQgImNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX2V4cG9uZW50WzY0XSA9IHsiCi1mb3IgaSBpbiBy
YW5nZSgwLCA2NCk6Ci0gICAgcHJpbnQgIiAgICAlIzAxMHgsIiAlIGNvbnZlcnRFeHBvbmVudChp
KQotcHJpbnQgIn07XG4iCi0KLXByaW50ICJjb25zdCBzdGF0aWMgdW5zaWduZWQgZ19vZmZzZXRb
NjRdID0geyIKLWZvciBpIGluIHJhbmdlKDAsIDY0KToKLSAgICBwcmludCAiICAgICUjMDEweCwi
ICUgY29udmVydE9mZnNldChpKQotcHJpbnQgIn07XG4iCi0KLXByaW50ICIiImZsb2F0IGZsb2F0
MTZUb0Zsb2F0MzIodW5zaWduZWQgc2hvcnQgaCkKLXsKLSAgICB1bnNpZ25lZCBpMzIgPSBnX21h
bnRpc3NhW2dfb2Zmc2V0W2ggPj4gMTBdICsgKGggJiAweDNmZildICsgZ19leHBvbmVudFtoID4+
IDEwXTsKLSAgICByZXR1cm4gKihmbG9hdCopICZpMzI7Ci19Ci19Ci0iIiIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDc3ZDc5YzAuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1MDkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gRnJhbWVidWZm
ZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6RnJhbWVidWZmZXIgY2xhc3MuIEltcGxlbWVudHMg
R0wgZnJhbWVidWZmZXIKLS8vIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09w
ZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40IHBhZ2UgMTA1LgotCi0jaW5jbHVkZSAibGliR0xF
U3YyL0ZyYW1lYnVmZmVyLmgiCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgotI2luY2x1
ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVy
ZS5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKLQotbmFtZXNwYWNlIGdsCi17
Ci0KLUZyYW1lYnVmZmVyOjpGcmFtZWJ1ZmZlcigpCi17Ci0gICAgbUNvbG9yYnVmZmVyVHlwZSA9
IEdMX05PTkU7Ci0gICAgbURlcHRoYnVmZmVyVHlwZSA9IEdMX05PTkU7Ci0gICAgbVN0ZW5jaWxi
dWZmZXJUeXBlID0gR0xfTk9ORTsKLX0KLQotRnJhbWVidWZmZXI6On5GcmFtZWJ1ZmZlcigpCi17
Ci0gICAgbUNvbG9yYnVmZmVyUG9pbnRlci5zZXQoTlVMTCk7Ci0gICAgbURlcHRoYnVmZmVyUG9p
bnRlci5zZXQoTlVMTCk7Ci0gICAgbVN0ZW5jaWxidWZmZXJQb2ludGVyLnNldChOVUxMKTsKLSAg
ICBtTnVsbENvbG9yYnVmZmVyUG9pbnRlci5zZXQoTlVMTCk7Ci19Ci0KLVJlbmRlcmJ1ZmZlciAq
RnJhbWVidWZmZXI6Omxvb2t1cFJlbmRlcmJ1ZmZlcihHTGVudW0gdHlwZSwgR0x1aW50IGhhbmRs
ZSkgY29uc3QKLXsKLSAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7
Ci0gICAgUmVuZGVyYnVmZmVyICpidWZmZXIgPSBOVUxMOwotCi0gICAgaWYgKHR5cGUgPT0gR0xf
Tk9ORSkKLSAgICB7Ci0gICAgICAgIGJ1ZmZlciA9IE5VTEw7Ci0gICAgfQotICAgIGVsc2UgaWYg
KHR5cGUgPT0gR0xfUkVOREVSQlVGRkVSKQotICAgIHsKLSAgICAgICAgYnVmZmVyID0gY29udGV4
dC0+Z2V0UmVuZGVyYnVmZmVyKGhhbmRsZSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKElzSW50ZXJu
YWxUZXh0dXJlVGFyZ2V0KHR5cGUpKQotICAgIHsKLSAgICAgICAgYnVmZmVyID0gY29udGV4dC0+
Z2V0VGV4dHVyZShoYW5kbGUpLT5nZXRSZW5kZXJidWZmZXIodHlwZSk7Ci0gICAgfQotICAgIGVs
c2UKLSAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1
ZmZlcjsKLX0KLQotdm9pZCBGcmFtZWJ1ZmZlcjo6c2V0Q29sb3JidWZmZXIoR0xlbnVtIHR5cGUs
IEdMdWludCBjb2xvcmJ1ZmZlcikKLXsKLSAgICBtQ29sb3JidWZmZXJUeXBlID0gKGNvbG9yYnVm
ZmVyICE9IDApID8gdHlwZSA6IEdMX05PTkU7Ci0gICAgbUNvbG9yYnVmZmVyUG9pbnRlci5zZXQo
bG9va3VwUmVuZGVyYnVmZmVyKHR5cGUsIGNvbG9yYnVmZmVyKSk7Ci19Ci0KLXZvaWQgRnJhbWVi
dWZmZXI6OnNldERlcHRoYnVmZmVyKEdMZW51bSB0eXBlLCBHTHVpbnQgZGVwdGhidWZmZXIpCi17
Ci0gICAgbURlcHRoYnVmZmVyVHlwZSA9IChkZXB0aGJ1ZmZlciAhPSAwKSA/IHR5cGUgOiBHTF9O
T05FOwotICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KGxvb2t1cFJlbmRlcmJ1ZmZlcih0eXBl
LCBkZXB0aGJ1ZmZlcikpOwotfQotCi12b2lkIEZyYW1lYnVmZmVyOjpzZXRTdGVuY2lsYnVmZmVy
KEdMZW51bSB0eXBlLCBHTHVpbnQgc3RlbmNpbGJ1ZmZlcikKLXsKLSAgICBtU3RlbmNpbGJ1ZmZl
clR5cGUgPSAoc3RlbmNpbGJ1ZmZlciAhPSAwKSA/IHR5cGUgOiBHTF9OT05FOwotICAgIG1TdGVu
Y2lsYnVmZmVyUG9pbnRlci5zZXQobG9va3VwUmVuZGVyYnVmZmVyKHR5cGUsIHN0ZW5jaWxidWZm
ZXIpKTsKLX0KLQotdm9pZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNoVGV4dHVyZShHTHVpbnQgdGV4dHVy
ZSkKLXsKLSAgICBpZiAobUNvbG9yYnVmZmVyUG9pbnRlci5pZCgpID09IHRleHR1cmUgJiYgSXNJ
bnRlcm5hbFRleHR1cmVUYXJnZXQobUNvbG9yYnVmZmVyVHlwZSkpCi0gICAgewotICAgICAgICBt
Q29sb3JidWZmZXJUeXBlID0gR0xfTk9ORTsKLSAgICAgICAgbUNvbG9yYnVmZmVyUG9pbnRlci5z
ZXQoTlVMTCk7Ci0gICAgfQotCi0gICAgaWYgKG1EZXB0aGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSB0
ZXh0dXJlICYmIElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1EZXB0aGJ1ZmZlclR5cGUpKQotICAg
IHsKLSAgICAgICAgbURlcHRoYnVmZmVyVHlwZSA9IEdMX05PTkU7Ci0gICAgICAgIG1EZXB0aGJ1
ZmZlclBvaW50ZXIuc2V0KE5VTEwpOwotICAgIH0KLQotICAgIGlmIChtU3RlbmNpbGJ1ZmZlclBv
aW50ZXIuaWQoKSA9PSB0ZXh0dXJlICYmIElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1TdGVuY2ls
YnVmZmVyVHlwZSkpCi0gICAgewotICAgICAgICBtU3RlbmNpbGJ1ZmZlclR5cGUgPSBHTF9OT05F
OwotICAgICAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOwotICAgIH0KLX0KLQot
dm9pZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNoUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIp
Ci17Ci0gICAgaWYgKG1Db2xvcmJ1ZmZlclBvaW50ZXIuaWQoKSA9PSByZW5kZXJidWZmZXIgJiYg
bUNvbG9yYnVmZmVyVHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCi0gICAgewotICAgICAgICBtQ29s
b3JidWZmZXJUeXBlID0gR0xfTk9ORTsKLSAgICAgICAgbUNvbG9yYnVmZmVyUG9pbnRlci5zZXQo
TlVMTCk7Ci0gICAgfQotCi0gICAgaWYgKG1EZXB0aGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSByZW5k
ZXJidWZmZXIgJiYgbURlcHRoYnVmZmVyVHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCi0gICAgewot
ICAgICAgICBtRGVwdGhidWZmZXJUeXBlID0gR0xfTk9ORTsKLSAgICAgICAgbURlcHRoYnVmZmVy
UG9pbnRlci5zZXQoTlVMTCk7Ci0gICAgfQotCi0gICAgaWYgKG1TdGVuY2lsYnVmZmVyUG9pbnRl
ci5pZCgpID09IHJlbmRlcmJ1ZmZlciAmJiBtU3RlbmNpbGJ1ZmZlclR5cGUgPT0gR0xfUkVOREVS
QlVGRkVSKQotICAgIHsKLSAgICAgICAgbVN0ZW5jaWxidWZmZXJUeXBlID0gR0xfTk9ORTsKLSAg
ICAgICAgbVN0ZW5jaWxidWZmZXJQb2ludGVyLnNldChOVUxMKTsKLSAgICB9Ci19Ci0KLXVuc2ln
bmVkIGludCBGcmFtZWJ1ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKCkKLXsKLSAgICBSZW5k
ZXJidWZmZXIgKmNvbG9yYnVmZmVyID0gbUNvbG9yYnVmZmVyUG9pbnRlci5nZXQoKTsKLQotICAg
IGlmIChjb2xvcmJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb2xvcmJ1ZmZlci0+Z2V0
U2VyaWFsKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8vIEluY3JlbWVudHMgcmVm
Y291bnQgb24gc3VyZmFjZS4KLS8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQg
c3VyZmFjZQotSURpcmVjdDNEU3VyZmFjZTkgKkZyYW1lYnVmZmVyOjpnZXRSZW5kZXJUYXJnZXQo
KQotewotICAgIFJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBtQ29sb3JidWZmZXJQb2ludGVy
LmdldCgpOwotCi0gICAgaWYgKGNvbG9yYnVmZmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNv
bG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsK
LX0KLQotLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgotLy8gY2FsbGVyIG11c3Qg
UmVsZWFzZSgpIHRoZSByZXR1cm5lZCBzdXJmYWNlCi1JRGlyZWN0M0RTdXJmYWNlOSAqRnJhbWVi
dWZmZXI6OmdldERlcHRoU3RlbmNpbCgpCi17Ci0gICAgUmVuZGVyYnVmZmVyICpkZXB0aHN0ZW5j
aWxidWZmZXIgPSBtRGVwdGhidWZmZXJQb2ludGVyLmdldCgpOwotICAgIAotICAgIGlmICghZGVw
dGhzdGVuY2lsYnVmZmVyKQotICAgIHsKLSAgICAgICAgZGVwdGhzdGVuY2lsYnVmZmVyID0gbVN0
ZW5jaWxidWZmZXJQb2ludGVyLmdldCgpOwotICAgIH0KLQotICAgIGlmIChkZXB0aHN0ZW5jaWxi
dWZmZXIpCi0gICAgewotICAgICAgICByZXR1cm4gZGVwdGhzdGVuY2lsYnVmZmVyLT5nZXREZXB0
aFN0ZW5jaWwoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotdW5zaWduZWQgaW50
IEZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlclNlcmlhbCgpCi17Ci0gICAgUmVuZGVyYnVmZmVy
ICpkZXB0aGJ1ZmZlciA9IG1EZXB0aGJ1ZmZlclBvaW50ZXIuZ2V0KCk7Ci0KLSAgICBpZiAoZGVw
dGhidWZmZXIpCi0gICAgewotICAgICAgICByZXR1cm4gZGVwdGhidWZmZXItPmdldFNlcmlhbCgp
OwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi11bnNpZ25lZCBpbnQgRnJhbWVidWZmZXI6
OmdldFN0ZW5jaWxidWZmZXJTZXJpYWwoKQotewotICAgIFJlbmRlcmJ1ZmZlciAqc3RlbmNpbGJ1
ZmZlciA9IG1TdGVuY2lsYnVmZmVyUG9pbnRlci5nZXQoKTsKLQotICAgIGlmIChzdGVuY2lsYnVm
ZmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZW5jaWxidWZmZXItPmdldFNlcmlhbCgpOwot
ICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi1SZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpn
ZXRDb2xvcmJ1ZmZlcigpCi17Ci0gICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXIuZ2V0KCk7
Ci19Ci0KLVJlbmRlcmJ1ZmZlciAqRnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVyKCkKLXsKLSAg
ICByZXR1cm4gbURlcHRoYnVmZmVyUG9pbnRlci5nZXQoKTsKLX0KLQotUmVuZGVyYnVmZmVyICpG
cmFtZWJ1ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZlcigpCi17Ci0gICAgcmV0dXJuIG1TdGVuY2lsYnVm
ZmVyUG9pbnRlci5nZXQoKTsKLX0KLQotUmVuZGVyYnVmZmVyICpGcmFtZWJ1ZmZlcjo6Z2V0TnVs
bENvbG9yYnVmZmVyKCkKLXsKLSAgICBSZW5kZXJidWZmZXIgKm51bGxidWZmZXIgID0gbU51bGxD
b2xvcmJ1ZmZlclBvaW50ZXIuZ2V0KCk7Ci0gICAgUmVuZGVyYnVmZmVyICpkZXB0aGJ1ZmZlciA9
IGdldERlcHRoYnVmZmVyKCk7Ci0KLSAgICBpZiAoIWRlcHRoYnVmZmVyKQotICAgIHsKLSAgICAg
ICAgRVJSKCJVbmV4cGVjdGVkIG51bGwgZGVwdGhidWZmZXIgZm9yIGRlcHRoLW9ubHkgRkJPLiIp
OwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBHTHNpemVpIHdpZHRoICA9IGRl
cHRoYnVmZmVyLT5nZXRXaWR0aCgpOwotICAgIEdMc2l6ZWkgaGVpZ2h0ID0gZGVwdGhidWZmZXIt
PmdldEhlaWdodCgpOwotCi0gICAgaWYgKCFudWxsYnVmZmVyIHx8Ci0gICAgICAgIHdpZHRoICE9
IG51bGxidWZmZXItPmdldFdpZHRoKCkgfHwgaGVpZ2h0ICE9IG51bGxidWZmZXItPmdldEhlaWdo
dCgpKQotICAgIHsKLSAgICAgICAgbnVsbGJ1ZmZlciA9IG5ldyBSZW5kZXJidWZmZXIoMCwgbmV3
IENvbG9yYnVmZmVyKHdpZHRoLCBoZWlnaHQsIEdMX05PTkUsIDApKTsKLSAgICAgICAgbU51bGxD
b2xvcmJ1ZmZlclBvaW50ZXIuc2V0KG51bGxidWZmZXIpOwotICAgIH0KLQotICAgIHJldHVybiBu
dWxsYnVmZmVyOwotfQotCi1HTGVudW0gRnJhbWVidWZmZXI6OmdldENvbG9yYnVmZmVyVHlwZSgp
Ci17Ci0gICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclR5cGU7Ci19Ci0KLUdMZW51bSBGcmFtZWJ1ZmZl
cjo6Z2V0RGVwdGhidWZmZXJUeXBlKCkKLXsKLSAgICByZXR1cm4gbURlcHRoYnVmZmVyVHlwZTsK
LX0KLQotR0xlbnVtIEZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVyVHlwZSgpCi17Ci0gICAg
cmV0dXJuIG1TdGVuY2lsYnVmZmVyVHlwZTsKLX0KLQotR0x1aW50IEZyYW1lYnVmZmVyOjpnZXRD
b2xvcmJ1ZmZlckhhbmRsZSgpCi17Ci0gICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXIuaWQo
KTsKLX0KLQotR0x1aW50IEZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlckhhbmRsZSgpCi17Ci0g
ICAgcmV0dXJuIG1EZXB0aGJ1ZmZlclBvaW50ZXIuaWQoKTsKLX0KLQotR0x1aW50IEZyYW1lYnVm
ZmVyOjpnZXRTdGVuY2lsYnVmZmVySGFuZGxlKCkKLXsKLSAgICByZXR1cm4gbVN0ZW5jaWxidWZm
ZXJQb2ludGVyLmlkKCk7Ci19Ci0KLWJvb2wgRnJhbWVidWZmZXI6Omhhc1N0ZW5jaWwoKQotewot
ICAgIGlmIChtU3RlbmNpbGJ1ZmZlclR5cGUgIT0gR0xfTk9ORSkKLSAgICB7Ci0gICAgICAgIFJl
bmRlcmJ1ZmZlciAqc3RlbmNpbGJ1ZmZlck9iamVjdCA9IGdldFN0ZW5jaWxidWZmZXIoKTsKLQot
ICAgICAgICBpZiAoc3RlbmNpbGJ1ZmZlck9iamVjdCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHN0ZW5jaWxidWZmZXJPYmplY3QtPmdldFN0ZW5jaWxTaXplKCkgPiAwOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1HTGVudW0gRnJhbWVidWZmZXI6
OmNvbXBsZXRlbmVzcygpCi17Ci0gICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29u
dGV4dCgpOwotICAgIGludCB3aWR0aCA9IDA7Ci0gICAgaW50IGhlaWdodCA9IDA7Ci0gICAgaW50
IHNhbXBsZXMgPSAtMTsKLSAgICBib29sIG1pc3NpbmdBdHRhY2htZW50ID0gdHJ1ZTsKLQotICAg
IGlmIChtQ29sb3JidWZmZXJUeXBlICE9IEdMX05PTkUpCi0gICAgewotICAgICAgICBSZW5kZXJi
dWZmZXIgKmNvbG9yYnVmZmVyID0gZ2V0Q29sb3JidWZmZXIoKTsKLQotICAgICAgICBpZiAoIWNv
bG9yYnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJf
SU5DT01QTEVURV9BVFRBQ0hNRU5UOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbG9yYnVm
ZmVyLT5nZXRXaWR0aCgpID09IDAgfHwgY29sb3JidWZmZXItPmdldEhlaWdodCgpID09IDApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FU
VEFDSE1FTlQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobUNvbG9yYnVmZmVyVHlwZSA9PSBH
TF9SRU5ERVJCVUZGRVIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZ2w6OklzQ29sb3JS
ZW5kZXJhYmxlKGNvbG9yYnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRB
Q0hNRU5UOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKElzSW50
ZXJuYWxUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGUpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IGNvbG9yYnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1h
dCgpOwotICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCA9IGdsOjpFeHRyYWN0Rm9ybWF0KGludGVy
bmFsZm9ybWF0KTsKLQotICAgICAgICAgICAgaWYgKElzQ29tcHJlc3NlZChmb3JtYXQpIHx8Ci0g
ICAgICAgICAgICAgICAgZm9ybWF0ID09IEdMX0FMUEhBIHx8Ci0gICAgICAgICAgICAgICAgZm9y
bWF0ID09IEdMX0xVTUlOQU5DRSB8fAotICAgICAgICAgICAgICAgIGZvcm1hdCA9PSBHTF9MVU1J
TkFOQ0VfQUxQSEEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZS
QU1FQlVGRkVSX1VOU1VQUE9SVEVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
KGdsOjpJc0Zsb2F0MzJGb3JtYXQoaW50ZXJuYWxmb3JtYXQpICYmICFjb250ZXh0LT5zdXBwb3J0
c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMoKSkgfHwKLSAgICAgICAgICAgICAgICAoZ2w6Oklz
RmxvYXQxNkZvcm1hdChpbnRlcm5hbGZvcm1hdCkgJiYgIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQx
NlJlbmRlcmFibGVUZXh0dXJlcygpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmIChnbDo6SXNEZXB0aFRleHR1cmUoaW50ZXJuYWxmb3JtYXQpIHx8IGdsOjpJc1N0
ZW5jaWxUZXh0dXJlKGludGVybmFsZm9ybWF0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQ7Ci0gICAgICAgIH0KLQotICAgICAgICB3aWR0aCA9IGNvbG9yYnVmZmVy
LT5nZXRXaWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7
Ci0gICAgICAgIHNhbXBsZXMgPSBjb2xvcmJ1ZmZlci0+Z2V0U2FtcGxlcygpOwotICAgICAgICBt
aXNzaW5nQXR0YWNobWVudCA9IGZhbHNlOwotICAgIH0KLQotICAgIFJlbmRlcmJ1ZmZlciAqZGVw
dGhidWZmZXIgPSBOVUxMOwotICAgIFJlbmRlcmJ1ZmZlciAqc3RlbmNpbGJ1ZmZlciA9IE5VTEw7
Ci0KLSAgICBpZiAobURlcHRoYnVmZmVyVHlwZSAhPSBHTF9OT05FKQotICAgIHsKLSAgICAgICAg
ZGVwdGhidWZmZXIgPSBnZXREZXB0aGJ1ZmZlcigpOwotCi0gICAgICAgIGlmICghZGVwdGhidWZm
ZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGVwdGhidWZmZXItPmdl
dFdpZHRoKCkgPT0gMCB8fCBkZXB0aGJ1ZmZlci0+Z2V0SGVpZ2h0KCkgPT0gMCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVO
VDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtRGVwdGhidWZmZXJUeXBlID09IEdMX1JFTkRF
UkJVRkZFUikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFnbDo6SXNEZXB0aFJlbmRlcmFi
bGUoZGVwdGhidWZmZXItPmdldEludGVybmFsRm9ybWF0KCkpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoSXNJbnRlcm5hbFRl
eHR1cmVUYXJnZXQobURlcHRoYnVmZmVyVHlwZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdM
aW50IGludGVybmFsZm9ybWF0ID0gZGVwdGhidWZmZXItPmdldEludGVybmFsRm9ybWF0KCk7Ci0K
LSAgICAgICAgICAgIC8vIGRlcHRoIHRleHR1cmUgYXR0YWNobWVudHMgcmVxdWlyZSBPRVMvQU5H
TEVfZGVwdGhfdGV4dHVyZQotICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RlcHRo
VGV4dHVyZXMoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBpZiAoIWdsOjpJc0RlcHRoVGV4dHVyZShpbnRlcm5hbGZvcm1hdCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRU
QUNITUVOVDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1cm4gR0xfRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KG1pc3NpbmdBdHRhY2htZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB3aWR0aCA9IGRlcHRo
YnVmZmVyLT5nZXRXaWR0aCgpOwotICAgICAgICAgICAgaGVpZ2h0ID0gZGVwdGhidWZmZXItPmdl
dEhlaWdodCgpOwotICAgICAgICAgICAgc2FtcGxlcyA9IGRlcHRoYnVmZmVyLT5nZXRTYW1wbGVz
KCk7Ci0gICAgICAgICAgICBtaXNzaW5nQXR0YWNobWVudCA9IGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKHdpZHRoICE9IGRlcHRoYnVmZmVyLT5nZXRXaWR0aCgpIHx8IGhlaWdo
dCAhPSBkZXB0aGJ1ZmZlci0+Z2V0SGVpZ2h0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAoc2FtcGxlcyAhPSBkZXB0aGJ1ZmZlci0+Z2V0U2FtcGxlcygpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxU
SVNBTVBMRV9BTkdMRTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChtU3RlbmNpbGJ1ZmZl
clR5cGUgIT0gR0xfTk9ORSkKLSAgICB7Ci0gICAgICAgIHN0ZW5jaWxidWZmZXIgPSBnZXRTdGVu
Y2lsYnVmZmVyKCk7Ci0KLSAgICAgICAgaWYgKCFzdGVuY2lsYnVmZmVyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0ZW5jaWxidWZmZXItPmdldFdpZHRoKCkgPT0gMCB8
fCBzdGVuY2lsYnVmZmVyLT5nZXRIZWlnaHQoKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKG1TdGVuY2lsYnVmZmVyVHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZ2w6OklzU3RlbmNpbFJlbmRlcmFibGUoc3RlbmNp
bGJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChJc0ludGVybmFsVGV4dHVyZVRh
cmdldChtU3RlbmNpbGJ1ZmZlclR5cGUpKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTGludCBp
bnRlcm5hbGZvcm1hdCA9IHN0ZW5jaWxidWZmZXItPmdldEludGVybmFsRm9ybWF0KCk7Ci0KLSAg
ICAgICAgICAgIC8vIHRleHR1cmUgc3RlbmNpbCBhdHRhY2htZW50cyBjb21lIGFsb25nIGFzIHBh
cnQKLSAgICAgICAgICAgIC8vIG9mIE9FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCArIE9FUy9BTkdM
RV9kZXB0aF90ZXh0dXJlCi0gICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRGVwdGhU
ZXh0dXJlcygpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGlmICghZ2w6OklzU3RlbmNpbFRleHR1cmUoaW50ZXJuYWxmb3JtYXQpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FU
VEFDSE1FTlQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIEdMX0ZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChtaXNzaW5nQXR0YWNobWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgd2lkdGggPSBzdGVu
Y2lsYnVmZmVyLT5nZXRXaWR0aCgpOwotICAgICAgICAgICAgaGVpZ2h0ID0gc3RlbmNpbGJ1ZmZl
ci0+Z2V0SGVpZ2h0KCk7Ci0gICAgICAgICAgICBzYW1wbGVzID0gc3RlbmNpbGJ1ZmZlci0+Z2V0
U2FtcGxlcygpOwotICAgICAgICAgICAgbWlzc2luZ0F0dGFjaG1lbnQgPSBmYWxzZTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIGlmICh3aWR0aCAhPSBzdGVuY2lsYnVmZmVyLT5nZXRXaWR0aCgp
IHx8IGhlaWdodCAhPSBzdGVuY2lsYnVmZmVyLT5nZXRIZWlnaHQoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmIChzYW1wbGVzICE9IHN0ZW5jaWxidWZmZXItPmdldFNh
bXBsZXMoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfTVVMVElTQU1QTEVfQU5HTEU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBp
ZiB3ZSBoYXZlIGJvdGggYSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXIsIHRoZXkgbXVzdCByZWZl
ciB0byB0aGUgc2FtZSBvYmplY3QKLSAgICAvLyBzaW5jZSB3ZSBvbmx5IHN1cHBvcnQgcGFja2Vk
X2RlcHRoX3N0ZW5jaWwgYW5kIG5vdCBzZXBhcmF0ZSBkZXB0aCBhbmQgc3RlbmNpbAotICAgIGlm
IChkZXB0aGJ1ZmZlciAmJiBzdGVuY2lsYnVmZmVyICYmIChkZXB0aGJ1ZmZlciAhPSBzdGVuY2ls
YnVmZmVyKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRF
RDsKLSAgICB9Ci0KLSAgICAvLyB3ZSBuZWVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGF0dGFjaG1l
bnQgdG8gYmUgY29tcGxldGUKLSAgICBpZiAobWlzc2luZ0F0dGFjaG1lbnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQ7
Ci0gICAgfQotCi0gICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFOwotfQotCi1EZWZh
dWx0RnJhbWVidWZmZXI6OkRlZmF1bHRGcmFtZWJ1ZmZlcihDb2xvcmJ1ZmZlciAqY29sb3JidWZm
ZXIsIERlcHRoU3RlbmNpbGJ1ZmZlciAqZGVwdGhTdGVuY2lsKQotewotICAgIG1Db2xvcmJ1ZmZl
clBvaW50ZXIuc2V0KG5ldyBSZW5kZXJidWZmZXIoMCwgY29sb3JidWZmZXIpKTsKLQotICAgIFJl
bmRlcmJ1ZmZlciAqZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyID0gbmV3IFJlbmRlcmJ1ZmZlcigw
LCBkZXB0aFN0ZW5jaWwpOwotICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KGRlcHRoU3RlbmNp
bFJlbmRlcmJ1ZmZlcik7Ci0gICAgbVN0ZW5jaWxidWZmZXJQb2ludGVyLnNldChkZXB0aFN0ZW5j
aWxSZW5kZXJidWZmZXIpOwotCi0gICAgbUNvbG9yYnVmZmVyVHlwZSA9IEdMX1JFTkRFUkJVRkZF
UjsKLSAgICBtRGVwdGhidWZmZXJUeXBlID0gKGRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlci0+Z2V0
RGVwdGhTaXplKCkgIT0gMCkgPyBHTF9SRU5ERVJCVUZGRVIgOiBHTF9OT05FOwotICAgIG1TdGVu
Y2lsYnVmZmVyVHlwZSA9IChkZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXItPmdldFN0ZW5jaWxTaXpl
KCkgIT0gMCkgPyBHTF9SRU5ERVJCVUZGRVIgOiBHTF9OT05FOwotfQotCi1pbnQgRnJhbWVidWZm
ZXI6OmdldFNhbXBsZXMoKQotewotICAgIGlmIChjb21wbGV0ZW5lc3MoKSA9PSBHTF9GUkFNRUJV
RkZFUl9DT01QTEVURSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBnZXRDb2xvcmJ1ZmZlcigpLT5n
ZXRTYW1wbGVzKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLX0KLQotR0xlbnVtIERlZmF1bHRGcmFtZWJ1ZmZlcjo6Y29tcGxldGVuZXNzKCkKLXsK
LSAgICAvLyBUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgYWx3YXlzIGJlIGNvbXBsZXRl
Ci0gICAgQVNTRVJUKEZyYW1lYnVmZmVyOjpjb21wbGV0ZW5lc3MoKSA9PSBHTF9GUkFNRUJVRkZF
Ul9DT01QTEVURSk7Ci0KLSAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEU7Ci19Ci0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJh
bWVidWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVi
dWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTRkOWMyYS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBG
cmFtZWJ1ZmZlci5oOiBEZWZpbmVzIHRoZSBnbDo6RnJhbWVidWZmZXIgY2xhc3MuIEltcGxlbWVu
dHMgR0wgZnJhbWVidWZmZXIKLS8vIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4g
W09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40IHBhZ2UgMTA1LgotCi0jaWZuZGVmIExJQkdM
RVNWMl9GUkFNRUJVRkZFUl9IXwotI2RlZmluZSBMSUJHTEVTVjJfRlJBTUVCVUZGRVJfSF8KLQot
I2RlZmluZSBHTF9BUElDQUxMCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0jaW5jbHVkZSA8ZDNk
OS5oPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJjb21tb24v
UmVmQ291bnRPYmplY3QuaCIKLQotbmFtZXNwYWNlIGdsCi17Ci1jbGFzcyBSZW5kZXJidWZmZXI7
Ci1jbGFzcyBDb2xvcmJ1ZmZlcjsKLWNsYXNzIERlcHRoYnVmZmVyOwotY2xhc3MgU3RlbmNpbGJ1
ZmZlcjsKLWNsYXNzIERlcHRoU3RlbmNpbGJ1ZmZlcjsKLQotY2xhc3MgRnJhbWVidWZmZXIKLXsK
LSAgcHVibGljOgotICAgIEZyYW1lYnVmZmVyKCk7Ci0KLSAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZl
cigpOwotCi0gICAgdm9pZCBzZXRDb2xvcmJ1ZmZlcihHTGVudW0gdHlwZSwgR0x1aW50IGNvbG9y
YnVmZmVyKTsKLSAgICB2b2lkIHNldERlcHRoYnVmZmVyKEdMZW51bSB0eXBlLCBHTHVpbnQgZGVw
dGhidWZmZXIpOwotICAgIHZvaWQgc2V0U3RlbmNpbGJ1ZmZlcihHTGVudW0gdHlwZSwgR0x1aW50
IHN0ZW5jaWxidWZmZXIpOwotCi0gICAgdm9pZCBkZXRhY2hUZXh0dXJlKEdMdWludCB0ZXh0dXJl
KTsKLSAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKLQot
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRSZW5kZXJUYXJnZXQoKTsKLSAgICBJRGlyZWN0M0RT
dXJmYWNlOSAqZ2V0RGVwdGhTdGVuY2lsKCk7Ci0KLSAgICB1bnNpZ25lZCBpbnQgZ2V0UmVuZGVy
VGFyZ2V0U2VyaWFsKCk7Ci0gICAgdW5zaWduZWQgaW50IGdldERlcHRoYnVmZmVyU2VyaWFsKCk7
Ci0gICAgdW5zaWduZWQgaW50IGdldFN0ZW5jaWxidWZmZXJTZXJpYWwoKTsKLQotICAgIFJlbmRl
cmJ1ZmZlciAqZ2V0Q29sb3JidWZmZXIoKTsKLSAgICBSZW5kZXJidWZmZXIgKmdldERlcHRoYnVm
ZmVyKCk7Ci0gICAgUmVuZGVyYnVmZmVyICpnZXRTdGVuY2lsYnVmZmVyKCk7Ci0gICAgUmVuZGVy
YnVmZmVyICpnZXROdWxsQ29sb3JidWZmZXIoKTsKLQotICAgIEdMZW51bSBnZXRDb2xvcmJ1ZmZl
clR5cGUoKTsKLSAgICBHTGVudW0gZ2V0RGVwdGhidWZmZXJUeXBlKCk7Ci0gICAgR0xlbnVtIGdl
dFN0ZW5jaWxidWZmZXJUeXBlKCk7Ci0KLSAgICBHTHVpbnQgZ2V0Q29sb3JidWZmZXJIYW5kbGUo
KTsKLSAgICBHTHVpbnQgZ2V0RGVwdGhidWZmZXJIYW5kbGUoKTsKLSAgICBHTHVpbnQgZ2V0U3Rl
bmNpbGJ1ZmZlckhhbmRsZSgpOwotCi0gICAgYm9vbCBoYXNTdGVuY2lsKCk7Ci0gICAgaW50IGdl
dFNhbXBsZXMoKTsKLQotICAgIHZpcnR1YWwgR0xlbnVtIGNvbXBsZXRlbmVzcygpOwotCi0gIHBy
b3RlY3RlZDoKLSAgICBHTGVudW0gbUNvbG9yYnVmZmVyVHlwZTsKLSAgICBCaW5kaW5nUG9pbnRl
cjxSZW5kZXJidWZmZXI+IG1Db2xvcmJ1ZmZlclBvaW50ZXI7Ci0KLSAgICBHTGVudW0gbURlcHRo
YnVmZmVyVHlwZTsKLSAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+IG1EZXB0aGJ1ZmZl
clBvaW50ZXI7Ci0KLSAgICBHTGVudW0gbVN0ZW5jaWxidWZmZXJUeXBlOwotICAgIEJpbmRpbmdQ
b2ludGVyPFJlbmRlcmJ1ZmZlcj4gbVN0ZW5jaWxidWZmZXJQb2ludGVyOwotCi0gICAgQmluZGlu
Z1BvaW50ZXI8UmVuZGVyYnVmZmVyPiBtTnVsbENvbG9yYnVmZmVyUG9pbnRlcjsKLQotICBwcml2
YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGcmFtZWJ1ZmZlcik7Ci0KLSAgICBS
ZW5kZXJidWZmZXIgKmxvb2t1cFJlbmRlcmJ1ZmZlcihHTGVudW0gdHlwZSwgR0x1aW50IGhhbmRs
ZSkgY29uc3Q7Ci19OwotCi1jbGFzcyBEZWZhdWx0RnJhbWVidWZmZXIgOiBwdWJsaWMgRnJhbWVi
dWZmZXIKLXsKLSAgcHVibGljOgotICAgIERlZmF1bHRGcmFtZWJ1ZmZlcihDb2xvcmJ1ZmZlciAq
Y29sb3JidWZmZXIsIERlcHRoU3RlbmNpbGJ1ZmZlciAqZGVwdGhTdGVuY2lsKTsKLQotICAgIHZp
cnR1YWwgR0xlbnVtIGNvbXBsZXRlbmVzcygpOwotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKERlZmF1bHRGcmFtZWJ1ZmZlcik7Ci19OwotCi19Ci0KLSNlbmRpZiAg
IC8vIExJQkdMRVNWMl9GUkFNRUJVRkZFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCBjNDk4ZjhhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDYzICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIEhhbmRsZUFsbG9jYXRv
ci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpIYW5kbGVBbGxvY2F0b3IgY2xhc3MsIHdoaWNoIGlz
IHVzZWQKLS8vIHRvIGFsbG9jYXRlIEdMIGhhbmRsZXMuCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIv
SGFuZGxlQWxsb2NhdG9yLmgiCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgotCi1uYW1l
c3BhY2UgZ2wKLXsKLQotSGFuZGxlQWxsb2NhdG9yOjpIYW5kbGVBbGxvY2F0b3IoKSA6IG1CYXNl
VmFsdWUoMSksIG1OZXh0VmFsdWUoMSkKLXsKLX0KLQotSGFuZGxlQWxsb2NhdG9yOjp+SGFuZGxl
QWxsb2NhdG9yKCkKLXsKLX0KLQotdm9pZCBIYW5kbGVBbGxvY2F0b3I6OnNldEJhc2VIYW5kbGUo
R0x1aW50IHZhbHVlKQotewotICAgIEFTU0VSVChtQmFzZVZhbHVlID09IG1OZXh0VmFsdWUpOwot
ICAgIG1CYXNlVmFsdWUgPSB2YWx1ZTsKLSAgICBtTmV4dFZhbHVlID0gdmFsdWU7Ci19Ci0KLUdM
dWludCBIYW5kbGVBbGxvY2F0b3I6OmFsbG9jYXRlKCkKLXsKLSAgICBpZiAobUZyZWVWYWx1ZXMu
c2l6ZSgpKQotICAgIHsKLSAgICAgICAgR0x1aW50IGhhbmRsZSA9IG1GcmVlVmFsdWVzLmJhY2so
KTsKLSAgICAgICAgbUZyZWVWYWx1ZXMucG9wX2JhY2soKTsKLSAgICAgICAgcmV0dXJuIGhhbmRs
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIG1OZXh0VmFsdWUrKzsKLX0KLQotdm9pZCBIYW5kbGVBbGxv
Y2F0b3I6OnJlbGVhc2UoR0x1aW50IGhhbmRsZSkKLXsKLSAgICBpZiAoaGFuZGxlID09IG1OZXh0
VmFsdWUgLSAxKQotICAgIHsKLSAgICAgICAgLy8gRG9uJ3QgZHJvcCBiZWxvdyBiYXNlIHZhbHVl
Ci0gICAgICAgIGlmKG1OZXh0VmFsdWUgPiBtQmFzZVZhbHVlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtTmV4dFZhbHVlLS07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgLy8gT25seSBmcmVlIGhhbmRsZXMgdGhhdCB3ZSBvd24gLSBkb24ndCBkcm9wIGJlbG93
IHRoZSBiYXNlIHZhbHVlCi0gICAgICAgIGlmIChoYW5kbGUgPj0gbUJhc2VWYWx1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgbUZyZWVWYWx1ZXMucHVzaF9iYWNrKGhhbmRsZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL0hhbmRsZUFsbG9jYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCBhOTJlMTY4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBIYW5kbGVBbGxvY2F0b3IuaDogRGVmaW5lcyB0aGUg
Z2w6OkhhbmRsZUFsbG9jYXRvciBjbGFzcywgd2hpY2ggaXMgdXNlZCB0bwotLy8gYWxsb2NhdGUg
R0wgaGFuZGxlcy4KLQotI2lmbmRlZiBMSUJHTEVTVjJfSEFORExFQUxMT0NBVE9SX0hfCi0jZGVm
aW5lIExJQkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8KLQotI2RlZmluZSBHTF9BUElDQUxMCi0j
aW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLQotY2xhc3MgSGFuZGxlQWxs
b2NhdG9yCi17Ci0gIHB1YmxpYzoKLSAgICBIYW5kbGVBbGxvY2F0b3IoKTsKLSAgICB2aXJ0dWFs
IH5IYW5kbGVBbGxvY2F0b3IoKTsKLQotICAgIHZvaWQgc2V0QmFzZUhhbmRsZShHTHVpbnQgdmFs
dWUpOwotCi0gICAgR0x1aW50IGFsbG9jYXRlKCk7Ci0gICAgdm9pZCByZWxlYXNlKEdMdWludCBo
YW5kbGUpOwotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEhhbmRs
ZUFsbG9jYXRvcik7Ci0KLSAgICBHTHVpbnQgbUJhc2VWYWx1ZTsKLSAgICBHTHVpbnQgbU5leHRW
YWx1ZTsKLSAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPEdMdWludD4gSGFuZGxlTGlzdDsKLSAgICBI
YW5kbGVMaXN0IG1GcmVlVmFsdWVzOwotfTsKLQotfQotCi0jZW5kaWYgICAvLyBMSUJHTEVTVjJf
SEFORExFQUxMT0NBVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggM2RjMGFlZi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDczICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIEluZGV4RGF0YU1hbmFnZXIuY3Bw
OiBEZWZpbmVzIHRoZSBJbmRleERhdGFNYW5hZ2VyLCBhIGNsYXNzIHRoYXQKLS8vIHJ1bnMgdGhl
IEJ1ZmZlciB0cmFuc2xhdGlvbiBwcm9jZXNzIGZvciBpbmRleCBidWZmZXJzLgotCi0jaW5jbHVk
ZSAibGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgotCi0jaW5jbHVkZSAibGliR0xFU3YyL0J1ZmZlci5oIgotI2luY2x1ZGUgImxpYkdMRVN2
Mi9tYXRodXRpbC5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCi0KLW5hbWVzcGFjZSBn
bAotewotdW5zaWduZWQgaW50IEluZGV4QnVmZmVyOjptQ3VycmVudFNlcmlhbCA9IDE7Ci0KLUlu
ZGV4RGF0YU1hbmFnZXI6OkluZGV4RGF0YU1hbmFnZXIoQ29udGV4dCAqY29udGV4dCwgSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlKSA6IG1EZXZpY2UoZGV2aWNlKQotewotICAgIG1TdHJlYW1pbmdC
dWZmZXJTaG9ydCA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlcihtRGV2aWNlLCBJTklUSUFMX0lO
REVYX0JVRkZFUl9TSVpFLCBEM0RGTVRfSU5ERVgxNik7Ci0KLSAgICBpZiAoY29udGV4dC0+c3Vw
cG9ydHMzMmJpdEluZGljZXMoKSkKLSAgICB7Ci0gICAgICAgIG1TdHJlYW1pbmdCdWZmZXJJbnQg
PSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXIobURldmljZSwgSU5JVElBTF9JTkRFWF9CVUZGRVJf
U0laRSwgRDNERk1UX0lOREVYMzIpOwotCi0gICAgICAgIGlmICghbVN0cmVhbWluZ0J1ZmZlcklu
dCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRG9uJ3QgbGVhdmUgaXQgaW4gYSBoYWxmLWlu
aXRpYWxpemVkIHN0YXRlCi0gICAgICAgICAgICBkZWxldGUgbVN0cmVhbWluZ0J1ZmZlclNob3J0
OwotICAgICAgICAgICAgbVN0cmVhbWluZ0J1ZmZlclNob3J0ID0gTlVMTDsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtU3RyZWFtaW5nQnVmZmVySW50ID0gTlVM
TDsKLSAgICB9Ci0KLSAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXJTaG9ydCkKLSAgICB7Ci0gICAg
ICAgIEVSUigiRmFpbGVkIHRvIGFsbG9jYXRlIHRoZSBzdHJlYW1pbmcgaW5kZXggYnVmZmVyKHMp
LiIpOwotICAgIH0KLQotICAgIG1Db3VudGluZ0J1ZmZlciA9IE5VTEw7Ci19Ci0KLUluZGV4RGF0
YU1hbmFnZXI6On5JbmRleERhdGFNYW5hZ2VyKCkKLXsKLSAgICBkZWxldGUgbVN0cmVhbWluZ0J1
ZmZlclNob3J0OwotICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVySW50OwotICAgIGRlbGV0ZSBt
Q291bnRpbmdCdWZmZXI7Ci19Ci0KLXZvaWQgY29udmVydEluZGljZXMoR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQgKmlucHV0LCBHTHNpemVpIGNvdW50LCB2b2lkICpvdXRwdXQpCi17Ci0gICAgaWYg
KHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IEdMdWJ5dGUg
KmluID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGlucHV0KTsKLSAgICAgICAgR0x1c2hv
cnQgKm91dCA9IHN0YXRpY19jYXN0PEdMdXNob3J0Kj4ob3V0cHV0KTsKLQotICAgICAgICBmb3Ig
KEdMc2l6ZWkgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBv
dXRbaV0gPSBpbltpXTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmICh0eXBlID09IEdM
X1VOU0lHTkVEX0lOVCkKLSAgICB7Ci0gICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3Vu
dCAqIHNpemVvZihHTHVpbnQpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJ
R05FRF9TSE9SVCkKLSAgICB7Ci0gICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3VudCAq
IHNpemVvZihHTHVzaG9ydCkpOwotICAgIH0KLSAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci19Ci0K
LXRlbXBsYXRlIDxjbGFzcyBJbmRleFR5cGU+Ci12b2lkIGNvbXB1dGVSYW5nZShjb25zdCBJbmRl
eFR5cGUgKmluZGljZXMsIEdMc2l6ZWkgY291bnQsIEdMdWludCAqbWluSW5kZXgsIEdMdWludCAq
bWF4SW5kZXgpCi17Ci0gICAgKm1pbkluZGV4ID0gaW5kaWNlc1swXTsKLSAgICAqbWF4SW5kZXgg
PSBpbmRpY2VzWzBdOwotCi0gICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
LSAgICB7Ci0gICAgICAgIGlmICgqbWluSW5kZXggPiBpbmRpY2VzW2ldKSAqbWluSW5kZXggPSBp
bmRpY2VzW2ldOwotICAgICAgICBpZiAoKm1heEluZGV4IDwgaW5kaWNlc1tpXSkgKm1heEluZGV4
ID0gaW5kaWNlc1tpXTsKLSAgICB9Ci19Ci0KLXZvaWQgY29tcHV0ZVJhbmdlKEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgY291bnQsIEdMdWludCAqbWluSW5kZXgs
IEdMdWludCAqbWF4SW5kZXgpCi17Ci0gICAgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkK
LSAgICB7Ci0gICAgICAgIGNvbXB1dGVSYW5nZShzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4o
aW5kaWNlcyksIGNvdW50LCBtaW5JbmRleCwgbWF4SW5kZXgpOwotICAgIH0KLSAgICBlbHNlIGlm
ICh0eXBlID09IEdMX1VOU0lHTkVEX0lOVCkKLSAgICB7Ci0gICAgICAgIGNvbXB1dGVSYW5nZShz
dGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBtYXhJ
bmRleCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlQpCi0g
ICAgewotICAgICAgICBjb21wdXRlUmFuZ2Uoc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihp
bmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBtYXhJbmRleCk7Ci0gICAgfQotICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKLX0KLQotR0xlbnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERh
dGEoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIEJ1ZmZlciAqYnVmZmVyLCBjb25zdCBHTHZv
aWQgKmluZGljZXMsIFRyYW5zbGF0ZWRJbmRleERhdGEgKnRyYW5zbGF0ZWQpCi17Ci0gICAgaWYg
KCFtU3RyZWFtaW5nQnVmZmVyU2hvcnQpCi0gICAgewotICAgICAgICByZXR1cm4gR0xfT1VUX09G
X01FTU9SWTsKLSAgICB9Ci0KLSAgICBEM0RGT1JNQVQgZm9ybWF0ID0gKHR5cGUgPT0gR0xfVU5T
SUdORURfSU5UKSA/IEQzREZNVF9JTkRFWDMyIDogRDNERk1UX0lOREVYMTY7Ci0gICAgaW50cHRy
X3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7Ci0gICAgYm9v
bCBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7Ci0KLSAgICBpZiAoYnVmZmVyICE9IE5VTEwpCi0gICAg
ewotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0JZVEU6ICBhbGlnbmVkT2Zmc2V0ID0gKG9mZnNldCAlIHNpemVvZihHTHVieXRlKSA9
PSAwKTsgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IGFsaWduZWRP
ZmZzZXQgPSAob2Zmc2V0ICUgc2l6ZW9mKEdMdXNob3J0KSA9PSAwKTsgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgYWxpZ25lZE9mZnNldCA9IChvZmZzZXQgJSBzaXpl
b2YoR0x1aW50KSA9PSAwKTsgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOyBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodHlw
ZVNpemUodHlwZSkgKiBjb3VudCArIG9mZnNldCA+IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pihi
dWZmZXItPnNpemUoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElE
X09QRVJBVElPTjsKLSAgICAgICAgfQotCi0gICAgICAgIGluZGljZXMgPSBzdGF0aWNfY2FzdDxj
b25zdCBHTHVieXRlKj4oYnVmZmVyLT5kYXRhKCkpICsgb2Zmc2V0OwotICAgIH0KLQotICAgIFN0
cmVhbWluZ0luZGV4QnVmZmVyICpzdHJlYW1pbmdCdWZmZXIgPSAodHlwZSA9PSBHTF9VTlNJR05F
RF9JTlQpID8gbVN0cmVhbWluZ0J1ZmZlckludCA6IG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKLQot
ICAgIFN0YXRpY0luZGV4QnVmZmVyICpzdGF0aWNCdWZmZXIgPSBidWZmZXIgPyBidWZmZXItPmdl
dFN0YXRpY0luZGV4QnVmZmVyKCkgOiBOVUxMOwotICAgIEluZGV4QnVmZmVyICppbmRleEJ1ZmZl
ciA9IHN0cmVhbWluZ0J1ZmZlcjsKLSAgICBVSU5UIHN0cmVhbU9mZnNldCA9IDA7Ci0KLSAgICBp
ZiAoc3RhdGljQnVmZmVyICYmIHN0YXRpY0J1ZmZlci0+bG9va3VwVHlwZSh0eXBlKSAmJiBhbGln
bmVkT2Zmc2V0KQotICAgIHsKLSAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7Ci0g
ICAgICAgIHN0cmVhbU9mZnNldCA9IHN0YXRpY0J1ZmZlci0+bG9va3VwUmFuZ2Uob2Zmc2V0LCBj
b3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOwotCi0g
ICAgICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
cmVhbU9mZnNldCA9IChvZmZzZXQgLyB0eXBlU2l6ZSh0eXBlKSkgKiBpbmRleFNpemUoZm9ybWF0
KTsKLSAgICAgICAgICAgIGNvbXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5z
bGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOwotICAgICAgICAgICAgc3Rh
dGljQnVmZmVyLT5hZGRSYW5nZShvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwg
dHJhbnNsYXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNldCk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgZWxzZQotICAgIHsKLSAgICAgICAgaW50IGNvbnZlcnRDb3VudCA9IGNvdW50OwotCi0gICAg
ICAgIGlmIChzdGF0aWNCdWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChzdGF0aWNC
dWZmZXItPnNpemUoKSA9PSAwICYmIGFsaWduZWRPZmZzZXQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7Ci0gICAgICAgICAgICAgICAg
Y29udmVydENvdW50ID0gYnVmZmVyLT5zaXplKCkgLyB0eXBlU2l6ZSh0eXBlKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBi
dWZmZXItPmludmFsaWRhdGVTdGF0aWNEYXRhKCk7Ci0gICAgICAgICAgICAgICAgc3RhdGljQnVm
ZmVyID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgKm91
dHB1dCA9IE5VTEw7Ci0gICAgICAgIAotICAgICAgICBpZiAoaW5kZXhCdWZmZXIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGluZGV4QnVmZmVyLT5yZXNlcnZlU3BhY2UoY29udmVydENvdW50ICog
aW5kZXhTaXplKGZvcm1hdCksIHR5cGUpOwotICAgICAgICAgICAgb3V0cHV0ID0gaW5kZXhCdWZm
ZXItPm1hcChpbmRleFNpemUoZm9ybWF0KSAqIGNvbnZlcnRDb3VudCwgJnN0cmVhbU9mZnNldCk7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChvdXRwdXQgPT0gTlVMTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gbWFwIGluZGV4IGJ1ZmZlci4iKTsKLSAg
ICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOwotICAgICAgICB9Ci0KLSAgICAgICAg
Y29udmVydEluZGljZXModHlwZSwgc3RhdGljQnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBpbmRp
Y2VzLCBjb252ZXJ0Q291bnQsIG91dHB1dCk7Ci0gICAgICAgIGluZGV4QnVmZmVyLT51bm1hcCgp
OwotCi0gICAgICAgIGNvbXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0
ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOwotCi0gICAgICAgIGlmIChzdGF0
aWNCdWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZzZXQg
LyB0eXBlU2l6ZSh0eXBlKSkgKiBpbmRleFNpemUoZm9ybWF0KTsKLSAgICAgICAgICAgIHN0YXRp
Y0J1ZmZlci0+YWRkUmFuZ2Uob2Zmc2V0LCBjb3VudCwgdHJhbnNsYXRlZC0+bWluSW5kZXgsIHRy
YW5zbGF0ZWQtPm1heEluZGV4LCBzdHJlYW1PZmZzZXQpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgdHJhbnNsYXRlZC0+aW5kZXhCdWZmZXIgPSBpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCk7Ci0g
ICAgdHJhbnNsYXRlZC0+c2VyaWFsID0gaW5kZXhCdWZmZXItPmdldFNlcmlhbCgpOwotICAgIHRy
YW5zbGF0ZWQtPnN0YXJ0SW5kZXggPSBzdHJlYW1PZmZzZXQgLyBpbmRleFNpemUoZm9ybWF0KTsK
LQotICAgIGlmIChidWZmZXIpCi0gICAgewotICAgICAgICBidWZmZXItPnByb21vdGVTdGF0aWNV
c2FnZShjb3VudCAqIHR5cGVTaXplKHR5cGUpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR0xfTk9f
RVJST1I7Ci19Ci0KLXN0ZDo6c2l6ZV90IEluZGV4RGF0YU1hbmFnZXI6OmluZGV4U2l6ZShEM0RG
T1JNQVQgZm9ybWF0KSBjb25zdAotewotICAgIHJldHVybiAoZm9ybWF0ID09IEQzREZNVF9JTkRF
WDMyKSA/IHNpemVvZih1bnNpZ25lZCBpbnQpIDogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKLX0K
LQotc3RkOjpzaXplX3QgSW5kZXhEYXRhTWFuYWdlcjo6dHlwZVNpemUoR0xlbnVtIHR5cGUpIGNv
bnN0Ci17Ci0gICAgc3dpdGNoICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURf
SU5UOiAgIHJldHVybiBzaXplb2YoR0x1aW50KTsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlQ6IHJldHVybiBzaXplb2YoR0x1c2hvcnQpOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRF
OiAgcmV0dXJuIHNpemVvZihHTHVieXRlKTsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
IHJldHVybiBzaXplb2YoR0x1c2hvcnQpOwotICAgIH0KLX0KLQotU3RhdGljSW5kZXhCdWZmZXIg
KkluZGV4RGF0YU1hbmFnZXI6OmdldENvdW50aW5nSW5kaWNlcyhHTHNpemVpIGNvdW50KQotewot
ICAgIGlmIChjb3VudCA8PSA2NTUzNikgICAvLyAxNi1iaXQgaW5kaWNlcwotICAgIHsKLSAgICAg
ICAgY29uc3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0gY291bnQgKiBzaXplb2YodW5zaWdu
ZWQgc2hvcnQpOwotCi0gICAgICAgIGlmICghbUNvdW50aW5nQnVmZmVyIHx8IG1Db3VudGluZ0J1
ZmZlci0+c2l6ZSgpIDwgc3BhY2VOZWVkZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0
ZSBtQ291bnRpbmdCdWZmZXI7Ci0gICAgICAgICAgICBtQ291bnRpbmdCdWZmZXIgPSBuZXcgU3Rh
dGljSW5kZXhCdWZmZXIobURldmljZSk7Ci0gICAgICAgICAgICBtQ291bnRpbmdCdWZmZXItPnJl
c2VydmVTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfU0hPUlQpOwotCi0gICAgICAgICAg
ICBVSU5UIG9mZnNldDsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpkYXRhID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPihtQ291bnRpbmdCdWZmZXItPm1hcChzcGFjZU5lZWRlZCwg
Jm9mZnNldCkpOwotICAgICAgICAKLSAgICAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVtpXSA9IGk7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgbUNvdW50aW5nQnVmZmVyLT51bm1hcCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKG1TdHJlYW1pbmdCdWZm
ZXJJbnQpICAgLy8gMzItYml0IGluZGljZXMgc3VwcG9ydGVkCi0gICAgewotICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgc3BhY2VOZWVkZWQgPSBjb3VudCAqIHNpemVvZih1bnNpZ25lZCBpbnQp
OwotCi0gICAgICAgIGlmICghbUNvdW50aW5nQnVmZmVyIHx8IG1Db3VudGluZ0J1ZmZlci0+c2l6
ZSgpIDwgc3BhY2VOZWVkZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSBtQ291bnRp
bmdCdWZmZXI7Ci0gICAgICAgICAgICBtQ291bnRpbmdCdWZmZXIgPSBuZXcgU3RhdGljSW5kZXhC
dWZmZXIobURldmljZSk7Ci0gICAgICAgICAgICBtQ291bnRpbmdCdWZmZXItPnJlc2VydmVTcGFj
ZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKTsKLQotICAgICAgICAgICAgVUlOVCBvZmZz
ZXQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQqPihtQ291bnRpbmdCdWZmZXItPm1hcChzcGFjZU5lZWRlZCwgJm9mZnNldCkpOwotICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YVtpXSA9IGk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1Db3VudGluZ0J1ZmZlci0+dW5tYXAoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHJldHVybiBOVUxMOwotICAg
IAotICAgIHJldHVybiBtQ291bnRpbmdCdWZmZXI7Ci19Ci0KLUluZGV4QnVmZmVyOjpJbmRleEJ1
ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFVJTlQgc2l6ZSwgRDNERk9STUFUIGZvcm1h
dCkgOiBtRGV2aWNlKGRldmljZSksIG1CdWZmZXJTaXplKHNpemUpLCBtSW5kZXhCdWZmZXIoTlVM
TCkKLXsKLSAgICBpZiAoc2l6ZSA+IDApCi0gICAgewotICAgICAgICBEM0RQT09MIHBvb2wgPSBn
ZXREaXNwbGF5KCktPmdldEJ1ZmZlclBvb2woRDNEVVNBR0VfRFlOQU1JQyB8IEQzRFVTQUdFX1dS
SVRFT05MWSk7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVJbmRleEJ1
ZmZlcihzaXplLCBEM0RVU0FHRV9EWU5BTUlDIHwgRDNEVVNBR0VfV1JJVEVPTkxZLCBmb3JtYXQs
IHBvb2wsICZtSW5kZXhCdWZmZXIsIE5VTEwpOwotICAgICAgICBtU2VyaWFsID0gaXNzdWVTZXJp
YWwoKTsKLQotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEVSUigiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGFuIGluZGV4IGJ1ZmZlciBvZiBzaXpl
ICVsdS4iLCBzaXplKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotSW5kZXhCdWZmZXI6On5JbmRl
eEJ1ZmZlcigpCi17Ci0gICAgaWYgKG1JbmRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIG1JbmRl
eEJ1ZmZlci0+UmVsZWFzZSgpOwotICAgIH0KLX0KLQotSURpcmVjdDNESW5kZXhCdWZmZXI5ICpJ
bmRleEJ1ZmZlcjo6Z2V0QnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUluZGV4QnVmZmVy
OwotfQotCi11bnNpZ25lZCBpbnQgSW5kZXhCdWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1TZXJpYWw7Ci19Ci0KLXVuc2lnbmVkIGludCBJbmRleEJ1ZmZlcjo6aXNzdWVT
ZXJpYWwoKQotewotICAgIHJldHVybiBtQ3VycmVudFNlcmlhbCsrOwotfQotCi12b2lkIEluZGV4
QnVmZmVyOjp1bm1hcCgpCi17Ci0gICAgaWYgKG1JbmRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAg
IG1JbmRleEJ1ZmZlci0+VW5sb2NrKCk7Ci0gICAgfQotfQotCi1TdHJlYW1pbmdJbmRleEJ1ZmZl
cjo6U3RyZWFtaW5nSW5kZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBVSU5UIGlu
aXRpYWxTaXplLCBEM0RGT1JNQVQgZm9ybWF0KSA6IEluZGV4QnVmZmVyKGRldmljZSwgaW5pdGlh
bFNpemUsIGZvcm1hdCkKLXsKLSAgICBtV3JpdGVQb3NpdGlvbiA9IDA7Ci19Ci0KLVN0cmVhbWlu
Z0luZGV4QnVmZmVyOjp+U3RyZWFtaW5nSW5kZXhCdWZmZXIoKQotewotfQotCi12b2lkICpTdHJl
YW1pbmdJbmRleEJ1ZmZlcjo6bWFwKFVJTlQgcmVxdWlyZWRTcGFjZSwgVUlOVCAqb2Zmc2V0KQot
ewotICAgIHZvaWQgKm1hcFB0ciA9IE5VTEw7Ci0KLSAgICBpZiAobUluZGV4QnVmZmVyKQotICAg
IHsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtSW5kZXhCdWZmZXItPkxvY2sobVdyaXRlUG9z
aXRpb24sIHJlcXVpcmVkU3BhY2UsICZtYXBQdHIsIEQzRExPQ0tfTk9PVkVSV1JJVEUpOwotICAg
ICAKLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBF
UlIoIiBMb2NrIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7Ci0gICAgICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgICpvZmZzZXQgPSBtV3JpdGVQb3Np
dGlvbjsKLSAgICAgICAgbVdyaXRlUG9zaXRpb24gKz0gcmVxdWlyZWRTcGFjZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gbWFwUHRyOwotfQotCi12b2lkIFN0cmVhbWluZ0luZGV4QnVmZmVyOjpyZXNl
cnZlU3BhY2UoVUlOVCByZXF1aXJlZFNwYWNlLCBHTGVudW0gdHlwZSkKLXsKLSAgICBpZiAocmVx
dWlyZWRTcGFjZSA+IG1CdWZmZXJTaXplKQotICAgIHsKLSAgICAgICAgaWYgKG1JbmRleEJ1ZmZl
cikKLSAgICAgICAgewotICAgICAgICAgICAgbUluZGV4QnVmZmVyLT5SZWxlYXNlKCk7Ci0gICAg
ICAgICAgICBtSW5kZXhCdWZmZXIgPSBOVUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgbUJ1ZmZl
clNpemUgPSBzdGQ6Om1heChyZXF1aXJlZFNwYWNlLCAyICogbUJ1ZmZlclNpemUpOwotCi0gICAg
ICAgIEQzRFBPT0wgcG9vbCA9IGdldERpc3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9E
WU5BTUlDIHwgRDNEVVNBR0VfV1JJVEVPTkxZKTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBt
RGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZlcihtQnVmZmVyU2l6ZSwgRDNEVVNBR0VfRFlOQU1JQyB8
IEQzRFVTQUdFX1dSSVRFT05MWSwgdHlwZSA9PSBHTF9VTlNJR05FRF9JTlQgPyBEM0RGTVRfSU5E
RVgzMiA6IEQzREZNVF9JTkRFWDE2LCBwb29sLCAmbUluZGV4QnVmZmVyLCBOVUxMKTsKLSAgICAg
ICAgbVNlcmlhbCA9IGlzc3VlU2VyaWFsKCk7Ci0gICAgCi0gICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9jYXRp
bmcgYSB2ZXJ0ZXggYnVmZmVyIG9mIHNpemUgJWx1LiIsIG1CdWZmZXJTaXplKTsKLSAgICAgICAg
fQotCi0gICAgICAgIG1Xcml0ZVBvc2l0aW9uID0gMDsKLSAgICB9Ci0gICAgZWxzZSBpZiAobVdy
aXRlUG9zaXRpb24gKyByZXF1aXJlZFNwYWNlID4gbUJ1ZmZlclNpemUpICAgLy8gUmVjeWNsZQot
ICAgIHsKLSAgICAgICAgdm9pZCAqZHVtbXk7Ci0gICAgICAgIG1JbmRleEJ1ZmZlci0+TG9jaygw
LCAxLCAmZHVtbXksIEQzRExPQ0tfRElTQ0FSRCk7Ci0gICAgICAgIG1JbmRleEJ1ZmZlci0+VW5s
b2NrKCk7Ci0KLSAgICAgICAgbVdyaXRlUG9zaXRpb24gPSAwOwotICAgIH0KLX0KLQotU3RhdGlj
SW5kZXhCdWZmZXI6OlN0YXRpY0luZGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSkg
OiBJbmRleEJ1ZmZlcihkZXZpY2UsIDAsIEQzREZNVF9VTktOT1dOKQotewotICAgIG1DYWNoZVR5
cGUgPSBHTF9OT05FOwotfQotCi1TdGF0aWNJbmRleEJ1ZmZlcjo6flN0YXRpY0luZGV4QnVmZmVy
KCkKLXsKLX0KLQotdm9pZCAqU3RhdGljSW5kZXhCdWZmZXI6Om1hcChVSU5UIHJlcXVpcmVkU3Bh
Y2UsIFVJTlQgKm9mZnNldCkKLXsKLSAgICB2b2lkICptYXBQdHIgPSBOVUxMOwotCi0gICAgaWYg
KG1JbmRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUluZGV4QnVm
ZmVyLT5Mb2NrKDAsIHJlcXVpcmVkU3BhY2UsICZtYXBQdHIsIDApOwotICAgICAKLSAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIiBMb2NrIGZh
aWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVM
TDsKLSAgICAgICAgfQotCi0gICAgICAgICpvZmZzZXQgPSAwOwotICAgIH0KLQotICAgIHJldHVy
biBtYXBQdHI7Ci19Ci0KLXZvaWQgU3RhdGljSW5kZXhCdWZmZXI6OnJlc2VydmVTcGFjZShVSU5U
IHJlcXVpcmVkU3BhY2UsIEdMZW51bSB0eXBlKQotewotICAgIGlmICghbUluZGV4QnVmZmVyICYm
IG1CdWZmZXJTaXplID09IDApCi0gICAgewotICAgICAgICBEM0RQT09MIHBvb2wgPSBnZXREaXNw
bGF5KCktPmdldEJ1ZmZlclBvb2woRDNEVVNBR0VfV1JJVEVPTkxZKTsKLSAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZlcihyZXF1aXJlZFNwYWNlLCBEM0RV
U0FHRV9XUklURU9OTFksIHR5cGUgPT0gR0xfVU5TSUdORURfSU5UID8gRDNERk1UX0lOREVYMzIg
OiBEM0RGTVRfSU5ERVgxNiwgcG9vbCwgJm1JbmRleEJ1ZmZlciwgTlVMTCk7Ci0gICAgICAgIG1T
ZXJpYWwgPSBpc3N1ZVNlcmlhbCgpOwotICAgIAotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGEg
dmVydGV4IGJ1ZmZlciBvZiBzaXplICVsdS4iLCBtQnVmZmVyU2l6ZSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBtQnVmZmVyU2l6ZSA9IHJlcXVpcmVkU3BhY2U7Ci0gICAgICAgIG1DYWNoZVR5cGUg
PSB0eXBlOwotICAgIH0KLSAgICBlbHNlIGlmIChtSW5kZXhCdWZmZXIgJiYgbUJ1ZmZlclNpemUg
Pj0gcmVxdWlyZWRTcGFjZSAmJiBtQ2FjaGVUeXBlID09IHR5cGUpCi0gICAgewotICAgICAgICAv
LyBBbHJlYWR5IGFsbG9jYXRlZAotICAgIH0KLSAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7ICAgLy8g
U3RhdGljIGluZGV4IGJ1ZmZlcnMgY2FuJ3QgYmUgcmVzaXplZAotfQotCi1ib29sIFN0YXRpY0lu
ZGV4QnVmZmVyOjpsb29rdXBUeXBlKEdMZW51bSB0eXBlKQotewotICAgIHJldHVybiBtQ2FjaGVU
eXBlID09IHR5cGU7Ci19Ci0KLVVJTlQgU3RhdGljSW5kZXhCdWZmZXI6Omxvb2t1cFJhbmdlKGlu
dHB0cl90IG9mZnNldCwgR0xzaXplaSBjb3VudCwgVUlOVCAqbWluSW5kZXgsIFVJTlQgKm1heElu
ZGV4KQotewotICAgIEluZGV4UmFuZ2UgcmFuZ2UgPSB7b2Zmc2V0LCBjb3VudH07Ci0KLSAgICBz
dGQ6Om1hcDxJbmRleFJhbmdlLCBJbmRleFJlc3VsdD46Oml0ZXJhdG9yIHJlcyA9IG1DYWNoZS5m
aW5kKHJhbmdlKTsKLSAgICAKLSAgICBpZiAocmVzID09IG1DYWNoZS5lbmQoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICAqbWluSW5kZXggPSByZXMtPnNlY29uZC5t
aW5JbmRleDsKLSAgICAqbWF4SW5kZXggPSByZXMtPnNlY29uZC5tYXhJbmRleDsKLSAgICByZXR1
cm4gcmVzLT5zZWNvbmQuc3RyZWFtT2Zmc2V0OwotfQotCi12b2lkIFN0YXRpY0luZGV4QnVmZmVy
OjphZGRSYW5nZShpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIFVJTlQgbWluSW5kZXgs
IFVJTlQgbWF4SW5kZXgsIFVJTlQgc3RyZWFtT2Zmc2V0KQotewotICAgIEluZGV4UmFuZ2UgaW5k
ZXhSYW5nZSA9IHtvZmZzZXQsIGNvdW50fTsKLSAgICBJbmRleFJlc3VsdCBpbmRleFJlc3VsdCA9
IHttaW5JbmRleCwgbWF4SW5kZXgsIHN0cmVhbU9mZnNldH07Ci0gICAgbUNhY2hlW2luZGV4UmFu
Z2VdID0gaW5kZXhSZXN1bHQ7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvSW5kZXhEYXRhTWFuYWdlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IGMxZDQxNjguLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxNDkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gSW5kZXhEYXRhTWFuYWdlci5o
OiBEZWZpbmVzIHRoZSBJbmRleERhdGFNYW5hZ2VyLCBhIGNsYXNzIHRoYXQKLS8vIHJ1bnMgdGhl
IEJ1ZmZlciB0cmFuc2xhdGlvbiBwcm9jZXNzIGZvciBpbmRleCBidWZmZXJzLgotCi0jaWZuZGVm
IExJQkdMRVNWMl9JTkRFWERBVEFNQU5BR0VSX0hfCi0jZGVmaW5lIExJQkdMRVNWMl9JTkRFWERB
VEFNQU5BR0VSX0hfCi0KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQot
I2RlZmluZSBHTF9BUElDQUxMCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0KLSNpbmNsdWRlICJs
aWJHTEVTdjIvQ29udGV4dC5oIgotCi1uYW1lc3BhY2UKLXsKLSAgICBlbnVtIHsgSU5JVElBTF9J
TkRFWF9CVUZGRVJfU0laRSA9IDQwOTYgKiBzaXplb2YoR0x1aW50KSB9OwotfQotCi1uYW1lc3Bh
Y2UgZ2wKLXsKLQotc3RydWN0IFRyYW5zbGF0ZWRJbmRleERhdGEKLXsKLSAgICBVSU5UIG1pbklu
ZGV4OwotICAgIFVJTlQgbWF4SW5kZXg7Ci0gICAgVUlOVCBzdGFydEluZGV4OwotCi0gICAgSURp
cmVjdDNESW5kZXhCdWZmZXI5ICppbmRleEJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBpbnQgc2VyaWFs
OwotfTsKLQotY2xhc3MgSW5kZXhCdWZmZXIKLXsKLSAgcHVibGljOgotICAgIEluZGV4QnVmZmVy
KElEaXJlY3QzRERldmljZTkgKmRldmljZSwgVUlOVCBzaXplLCBEM0RGT1JNQVQgZm9ybWF0KTsK
LSAgICB2aXJ0dWFsIH5JbmRleEJ1ZmZlcigpOwotCi0gICAgVUlOVCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbUJ1ZmZlclNpemU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgKm1hcChVSU5UIHJlcXVpcmVk
U3BhY2UsIFVJTlQgKm9mZnNldCkgPSAwOwotICAgIHZvaWQgdW5tYXAoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzZXJ2ZVNwYWNlKFVJTlQgcmVxdWlyZWRTcGFjZSwgR0xlbnVtIHR5cGUpID0gMDsK
LQotICAgIElEaXJlY3QzREluZGV4QnVmZmVyOSAqZ2V0QnVmZmVyKCkgY29uc3Q7Ci0gICAgdW5z
aWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OwotCi0gIHByb3RlY3RlZDoKLSAgICBJRGlyZWN0
M0REZXZpY2U5ICpjb25zdCBtRGV2aWNlOwotCi0gICAgSURpcmVjdDNESW5kZXhCdWZmZXI5ICpt
SW5kZXhCdWZmZXI7Ci0gICAgVUlOVCBtQnVmZmVyU2l6ZTsKLQotICAgIHVuc2lnbmVkIGludCBt
U2VyaWFsOwotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVTZXJpYWwoKTsKLSAgICBzdGF0
aWMgdW5zaWduZWQgaW50IG1DdXJyZW50U2VyaWFsOwotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKEluZGV4QnVmZmVyKTsKLX07Ci0KLWNsYXNzIFN0cmVhbWluZ0lu
ZGV4QnVmZmVyIDogcHVibGljIEluZGV4QnVmZmVyCi17Ci0gIHB1YmxpYzoKLSAgICBTdHJlYW1p
bmdJbmRleEJ1ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFVJTlQgaW5pdGlhbFNpemUs
IEQzREZPUk1BVCBmb3JtYXQpOwotICAgIH5TdHJlYW1pbmdJbmRleEJ1ZmZlcigpOwotCi0gICAg
dmlydHVhbCB2b2lkICptYXAoVUlOVCByZXF1aXJlZFNwYWNlLCBVSU5UICpvZmZzZXQpOwotICAg
IHZpcnR1YWwgdm9pZCByZXNlcnZlU3BhY2UoVUlOVCByZXF1aXJlZFNwYWNlLCBHTGVudW0gdHlw
ZSk7Ci0KLSAgcHJpdmF0ZToKLSAgICBVSU5UIG1Xcml0ZVBvc2l0aW9uOwotfTsKLQotY2xhc3Mg
U3RhdGljSW5kZXhCdWZmZXIgOiBwdWJsaWMgSW5kZXhCdWZmZXIKLXsKLSAgcHVibGljOgotICAg
IGV4cGxpY2l0IFN0YXRpY0luZGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSk7Ci0g
ICAgflN0YXRpY0luZGV4QnVmZmVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKm1hcChVSU5UIHJl
cXVpcmVkU3BhY2UsIFVJTlQgKm9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2VydmVTcGFj
ZShVSU5UIHJlcXVpcmVkU3BhY2UsIEdMZW51bSB0eXBlKTsKLQotICAgIGJvb2wgbG9va3VwVHlw
ZShHTGVudW0gdHlwZSk7Ci0gICAgVUlOVCBsb29rdXBSYW5nZShpbnRwdHJfdCBvZmZzZXQsIEdM
c2l6ZWkgY291bnQsIFVJTlQgKm1pbkluZGV4LCBVSU5UICptYXhJbmRleCk7ICAgLy8gUmV0dXJu
cyB0aGUgb2Zmc2V0IGludG8gdGhlIGluZGV4IGJ1ZmZlciwgb3IgLTEgaWYgbm90IGZvdW5kCi0g
ICAgdm9pZCBhZGRSYW5nZShpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIFVJTlQgbWlu
SW5kZXgsIFVJTlQgbWF4SW5kZXgsIFVJTlQgc3RyZWFtT2Zmc2V0KTsKLQotICBwcml2YXRlOgot
ICAgIEdMZW51bSBtQ2FjaGVUeXBlOwotICAgIAotICAgIHN0cnVjdCBJbmRleFJhbmdlCi0gICAg
ewotICAgICAgICBpbnRwdHJfdCBvZmZzZXQ7Ci0gICAgICAgIEdMc2l6ZWkgY291bnQ7Ci0KLSAg
ICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSW5kZXhSYW5nZSYgcmhzKSBjb25zdAotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAob2Zmc2V0ICE9IHJocy5vZmZzZXQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCA8IHJocy5vZmZzZXQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoY291bnQgIT0gcmhzLmNvdW50KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiBjb3VudCA8IHJocy5jb3VudDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBzdHJ1
Y3QgSW5kZXhSZXN1bHQKLSAgICB7Ci0gICAgICAgIFVJTlQgbWluSW5kZXg7Ci0gICAgICAgIFVJ
TlQgbWF4SW5kZXg7Ci0gICAgICAgIFVJTlQgc3RyZWFtT2Zmc2V0OwotICAgIH07Ci0KLSAgICBz
dGQ6Om1hcDxJbmRleFJhbmdlLCBJbmRleFJlc3VsdD4gbUNhY2hlOwotfTsKLQotY2xhc3MgSW5k
ZXhEYXRhTWFuYWdlcgotewotICBwdWJsaWM6Ci0gICAgSW5kZXhEYXRhTWFuYWdlcihDb250ZXh0
ICpjb250ZXh0LCBJRGlyZWN0M0REZXZpY2U5ICpldmljZSk7Ci0gICAgdmlydHVhbCB+SW5kZXhE
YXRhTWFuYWdlcigpOwotCi0gICAgR0xlbnVtIHByZXBhcmVJbmRleERhdGEoR0xlbnVtIHR5cGUs
IEdMc2l6ZWkgY291bnQsIEJ1ZmZlciAqYXJyYXlFbGVtZW50QnVmZmVyLCBjb25zdCBHTHZvaWQg
KmluZGljZXMsIFRyYW5zbGF0ZWRJbmRleERhdGEgKnRyYW5zbGF0ZWQpOwotICAgIFN0YXRpY0lu
ZGV4QnVmZmVyICpnZXRDb3VudGluZ0luZGljZXMoR0xzaXplaSBjb3VudCk7Ci0KLSAgcHJpdmF0
ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSW5kZXhEYXRhTWFuYWdlcik7Ci0KLSAg
ICBzdGQ6OnNpemVfdCB0eXBlU2l6ZShHTGVudW0gdHlwZSkgY29uc3Q7Ci0gICAgc3RkOjpzaXpl
X3QgaW5kZXhTaXplKEQzREZPUk1BVCBmb3JtYXQpIGNvbnN0OwotCi0gICAgSURpcmVjdDNERGV2
aWNlOSAqY29uc3QgbURldmljZTsKLQotICAgIFN0cmVhbWluZ0luZGV4QnVmZmVyICptU3RyZWFt
aW5nQnVmZmVyU2hvcnQ7Ci0gICAgU3RyZWFtaW5nSW5kZXhCdWZmZXIgKm1TdHJlYW1pbmdCdWZm
ZXJJbnQ7Ci0gICAgU3RhdGljSW5kZXhCdWZmZXIgKm1Db3VudGluZ0J1ZmZlcjsKLX07Ci0KLX0K
LQotI2VuZGlmICAgLy8gTElCR0xFU1YyX0lOREVYREFUQU1BTkFHRVJfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCA1ZjUzYTFmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
MjggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gUHJvZ3JhbS5jcHA6IEltcGxlbWVu
dHMgdGhlIGdsOjpQcm9ncmFtIGNsYXNzLiBJbXBsZW1lbnRzIEdMIHByb2dyYW0gb2JqZWN0cwot
Ly8gYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24g
Mi4xMC4zIHBhZ2UgMjguCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbS5oIgotI2luY2x1
ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmgiCi0KLSNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL1No
YWRlci5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKLQotI2luY2x1ZGUgPHN0
cmluZz4KLQotbmFtZXNwYWNlIGdsCi17Ci1jb25zdCBjaGFyICogY29uc3QgZ19mYWtlcGF0aCA9
ICJDOlxcZmFrZXBhdGgiOwotCi1BdHRyaWJ1dGVCaW5kaW5nczo6QXR0cmlidXRlQmluZGluZ3Mo
KQotewotfQotCi1BdHRyaWJ1dGVCaW5kaW5nczo6fkF0dHJpYnV0ZUJpbmRpbmdzKCkKLXsKLX0K
LQotSW5mb0xvZzo6SW5mb0xvZygpIDogbUluZm9Mb2coTlVMTCkKLXsKLX0KLQotSW5mb0xvZzo6
fkluZm9Mb2coKQotewotICAgIGRlbGV0ZVtdIG1JbmZvTG9nOwotfQotCi0KLWludCBJbmZvTG9n
OjpnZXRMZW5ndGgoKSBjb25zdAotewotICAgIGlmICghbUluZm9Mb2cpCi0gICAgewotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICByZXR1cm4gc3RybGVu
KG1JbmZvTG9nKSArIDE7Ci0gICAgfQotfQotCi12b2lkIEluZm9Mb2c6OmdldExvZyhHTHNpemVp
IGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykKLXsKLSAgICBpbnQgaW5k
ZXggPSAwOwotCi0gICAgaWYgKGJ1ZlNpemUgPiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1JbmZv
TG9nKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmRleCA9IHN0ZDo6bWluKGJ1ZlNpemUgLSAx
LCAoaW50KXN0cmxlbihtSW5mb0xvZykpOwotICAgICAgICAgICAgbWVtY3B5KGluZm9Mb2csIG1J
bmZvTG9nLCBpbmRleCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmZvTG9nW2luZGV4XSA9ICdc
MCc7Ci0gICAgfQotCi0gICAgaWYgKGxlbmd0aCkKLSAgICB7Ci0gICAgICAgICpsZW5ndGggPSBp
bmRleDsKLSAgICB9Ci19Ci0KLS8vIGFwcGVuZCBhIHNhbnRpemVkIG1lc3NhZ2UgdG8gdGhlIHBy
b2dyYW0gaW5mbyBsb2cuCi0vLyBUaGUgRDNEIGNvbXBpbGVyIGluY2x1ZGVzIGEgZmFrZSBmaWxl
IHBhdGggaW4gc29tZSBvZiB0aGUgd2FybmluZyBvciBlcnJvciAKLS8vIG1lc3NhZ2VzLCBzbyBs
ZXRzIHJlbW92ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhpcyBmYWtlIGZpbGUgcGF0aCBmcm9tIHRo
ZSBsb2cuCi12b2lkIEluZm9Mb2c6OmFwcGVuZFNhbml0aXplZChjb25zdCBjaGFyICptZXNzYWdl
KQotewotICAgIHN0ZDo6c3RyaW5nIG1zZyhtZXNzYWdlKTsKLQotICAgIHNpemVfdCBmb3VuZDsK
LSAgICBkbwotICAgIHsKLSAgICAgICAgZm91bmQgPSBtc2cuZmluZChnX2Zha2VwYXRoKTsKLSAg
ICAgICAgaWYgKGZvdW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtc2cuZXJhc2UoZm91bmQsIHN0cmxlbihnX2Zha2VwYXRoKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgd2hpbGUgKGZvdW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKLQotICAgIGFwcGVu
ZCgiJXNcbiIsIG1zZy5jX3N0cigpKTsKLX0KLQotdm9pZCBJbmZvTG9nOjphcHBlbmQoY29uc3Qg
Y2hhciAqZm9ybWF0LCAuLi4pCi17Ci0gICAgaWYgKCFmb3JtYXQpCi0gICAgewotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgY2hhciBpbmZvWzEwMjRdOwotCi0gICAgdmFfbGlzdCB2YXJh
cmc7Ci0gICAgdmFfc3RhcnQodmFyYXJnLCBmb3JtYXQpOwotICAgIHZzbnByaW50ZihpbmZvLCBz
aXplb2YoaW5mbyksIGZvcm1hdCwgdmFyYXJnKTsKLSAgICB2YV9lbmQodmFyYXJnKTsKLQotICAg
IHNpemVfdCBpbmZvTGVuZ3RoID0gc3RybGVuKGluZm8pOwotCi0gICAgaWYgKCFtSW5mb0xvZykK
LSAgICB7Ci0gICAgICAgIG1JbmZvTG9nID0gbmV3IGNoYXJbaW5mb0xlbmd0aCArIDFdOwotICAg
ICAgICBzdHJjcHkobUluZm9Mb2csIGluZm8pOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBzaXplX3QgbG9nTGVuZ3RoID0gc3RybGVuKG1JbmZvTG9nKTsKLSAgICAgICAgY2hhciAq
bmV3TG9nID0gbmV3IGNoYXJbbG9nTGVuZ3RoICsgaW5mb0xlbmd0aCArIDFdOwotICAgICAgICBz
dHJjcHkobmV3TG9nLCBtSW5mb0xvZyk7Ci0gICAgICAgIHN0cmNweShuZXdMb2cgKyBsb2dMZW5n
dGgsIGluZm8pOwotCi0gICAgICAgIGRlbGV0ZVtdIG1JbmZvTG9nOwotICAgICAgICBtSW5mb0xv
ZyA9IG5ld0xvZzsKLSAgICB9Ci19Ci0KLXZvaWQgSW5mb0xvZzo6cmVzZXQoKQotewotICAgIGlm
IChtSW5mb0xvZykKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSBbXSBtSW5mb0xvZzsKLSAgICAgICAg
bUluZm9Mb2cgPSBOVUxMOwotICAgIH0KLX0KLQotUHJvZ3JhbTo6UHJvZ3JhbShSZXNvdXJjZU1h
bmFnZXIgKm1hbmFnZXIsIEdMdWludCBoYW5kbGUpIDogbVJlc291cmNlTWFuYWdlcihtYW5hZ2Vy
KSwgbUhhbmRsZShoYW5kbGUpCi17Ci0gICAgbUZyYWdtZW50U2hhZGVyID0gTlVMTDsKLSAgICBt
VmVydGV4U2hhZGVyID0gTlVMTDsKLSAgICBtUHJvZ3JhbUJpbmFyeS5zZXQoTlVMTCk7Ci0gICAg
bURlbGV0ZVN0YXR1cyA9IGZhbHNlOwotICAgIG1MaW5rZWQgPSBmYWxzZTsKLSAgICBtUmVmQ291
bnQgPSAwOwotfQotCi1Qcm9ncmFtOjp+UHJvZ3JhbSgpCi17Ci0gICAgdW5saW5rKHRydWUpOwot
Ci0gICAgaWYgKG1WZXJ0ZXhTaGFkZXIgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIG1WZXJ0ZXhT
aGFkZXItPnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICBpZiAobUZyYWdtZW50U2hhZGVyICE9IE5V
TEwpCi0gICAgewotICAgICAgICBtRnJhZ21lbnRTaGFkZXItPnJlbGVhc2UoKTsKLSAgICB9Ci19
Ci0KLWJvb2wgUHJvZ3JhbTo6YXR0YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKQotewotICAgIGlm
IChzaGFkZXItPmdldFR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVSKQotICAgIHsKLSAgICAgICAg
aWYgKG1WZXJ0ZXhTaGFkZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotCi0gICAgICAgIG1WZXJ0ZXhTaGFkZXIgPSAoVmVydGV4U2hhZGVyKilzaGFk
ZXI7Ci0gICAgICAgIG1WZXJ0ZXhTaGFkZXItPmFkZFJlZigpOwotICAgIH0KLSAgICBlbHNlIGlm
IChzaGFkZXItPmdldFR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCi0gICAgewotICAgICAg
ICBpZiAobUZyYWdtZW50U2hhZGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLQotICAgICAgICBtRnJhZ21lbnRTaGFkZXIgPSAoRnJhZ21lbnRTaGFk
ZXIqKXNoYWRlcjsKLSAgICAgICAgbUZyYWdtZW50U2hhZGVyLT5hZGRSZWYoKTsKLSAgICB9Ci0g
ICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUHJv
Z3JhbTo6ZGV0YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKQotewotICAgIGlmIChzaGFkZXItPmdl
dFR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVSKQotICAgIHsKLSAgICAgICAgaWYgKG1WZXJ0ZXhT
aGFkZXIgIT0gc2hhZGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgIG1W
ZXJ0ZXhTaGFkZXIgPSBOVUxMOwotICAgIH0KLSAgICBlbHNlIGlmIChzaGFkZXItPmdldFR5cGUo
KSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCi0gICAgewotICAgICAgICBpZiAobUZyYWdtZW50U2hh
ZGVyICE9IHNoYWRlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbUZyYWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgIG1G
cmFnbWVudFNoYWRlciA9IE5VTEw7Ci0gICAgfQotICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1pbnQgUHJvZ3JhbTo6Z2V0QXR0YWNoZWRTaGFkZXJzQ291
bnQoKSBjb25zdAotewotICAgIHJldHVybiAobVZlcnRleFNoYWRlciA/IDEgOiAwKSArIChtRnJh
Z21lbnRTaGFkZXIgPyAxIDogMCk7Ci19Ci0KLXZvaWQgQXR0cmlidXRlQmluZGluZ3M6OmJpbmRB
dHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gICAg
aWYgKGluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgbUF0dHJpYnV0ZUJpbmRpbmdbaV0uZXJhc2UobmFtZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBtQXR0cmlidXRlQmluZGluZ1tpbmRleF0uaW5zZXJ0KG5hbWUpOwotICAgIH0KLX0KLQotdm9p
ZCBQcm9ncmFtOjpiaW5kQXR0cmlidXRlTG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFy
ICpuYW1lKQotewotICAgIG1BdHRyaWJ1dGVCaW5kaW5ncy5iaW5kQXR0cmlidXRlTG9jYXRpb24o
aW5kZXgsIG5hbWUpOwotfQotCi0vLyBMaW5rcyB0aGUgSExTTCBjb2RlIG9mIHRoZSB2ZXJ0ZXgg
YW5kIHBpeGVsIHNoYWRlciBieSBtYXRjaGluZyB1cCB0aGVpciB2YXJ5aW5ncywKLS8vIGNvbXBp
bGluZyB0aGVtIGludG8gYmluYXJpZXMsIGRldGVybWluaW5nIHRoZSBhdHRyaWJ1dGUgbWFwcGlu
Z3MsIGFuZCBjb2xsZWN0aW5nCi0vLyBhIGxpc3Qgb2YgdW5pZm9ybXMKLWJvb2wgUHJvZ3JhbTo6
bGluaygpCi17Ci0gICAgdW5saW5rKGZhbHNlKTsKLQotICAgIG1JbmZvTG9nLnJlc2V0KCk7Ci0K
LSAgICBtUHJvZ3JhbUJpbmFyeS5zZXQobmV3IFByb2dyYW1CaW5hcnkoKSk7Ci0gICAgbUxpbmtl
ZCA9IG1Qcm9ncmFtQmluYXJ5LT5saW5rKG1JbmZvTG9nLCBtQXR0cmlidXRlQmluZGluZ3MsIG1G
cmFnbWVudFNoYWRlciwgbVZlcnRleFNoYWRlcik7Ci0KLSAgICByZXR1cm4gbUxpbmtlZDsKLX0K
LQotaW50IEF0dHJpYnV0ZUJpbmRpbmdzOjpnZXRBdHRyaWJ1dGVCaW5kaW5nKGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lKSBjb25zdAotewotICAgIGZvciAoaW50IGxvY2F0aW9uID0gMDsgbG9jYXRp
b24gPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGxvY2F0aW9uKyspCi0gICAgewotICAgICAgICBpZiAo
bUF0dHJpYnV0ZUJpbmRpbmdbbG9jYXRpb25dLmZpbmQobmFtZSkgIT0gbUF0dHJpYnV0ZUJpbmRp
bmdbbG9jYXRpb25dLmVuZCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRp
b247Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gLTE7Ci19Ci0KLS8vIFJldHVybnMg
dGhlIHByb2dyYW0gb2JqZWN0IHRvIGFuIHVubGlua2VkIHN0YXRlLCBiZWZvcmUgcmUtbGlua2lu
Zywgb3IgYXQgZGVzdHJ1Y3Rpb24KLXZvaWQgUHJvZ3JhbTo6dW5saW5rKGJvb2wgZGVzdHJveSkK
LXsKLSAgICBpZiAoZGVzdHJveSkgICAvLyBPYmplY3QgYmVpbmcgZGVzdHJ1Y3RlZAotICAgIHsK
LSAgICAgICAgaWYgKG1GcmFnbWVudFNoYWRlcikKLSAgICAgICAgewotICAgICAgICAgICAgbUZy
YWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBtRnJhZ21lbnRTaGFkZXIgPSBO
VUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1WZXJ0ZXhTaGFkZXIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIG1WZXJ0ZXhTaGFkZXItPnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1WZXJ0
ZXhTaGFkZXIgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbVByb2dyYW1CaW5hcnku
c2V0KE5VTEwpOwotICAgIG1MaW5rZWQgPSBmYWxzZTsKLX0KLQotYm9vbCBQcm9ncmFtOjppc0xp
bmtlZCgpCi17Ci0gICAgcmV0dXJuIG1MaW5rZWQ7Ci19Ci0KLVByb2dyYW1CaW5hcnkqIFByb2dy
YW06OmdldFByb2dyYW1CaW5hcnkoKQotewotICAgIHJldHVybiBtUHJvZ3JhbUJpbmFyeS5nZXQo
KTsKLX0KLQotYm9vbCBQcm9ncmFtOjpzZXRQcm9ncmFtQmluYXJ5KGNvbnN0IHZvaWQgKmJpbmFy
eSwgR0xzaXplaSBsZW5ndGgpCi17Ci0gICAgdW5saW5rKGZhbHNlKTsKLQotICAgIG1JbmZvTG9n
LnJlc2V0KCk7Ci0KLSAgICBtUHJvZ3JhbUJpbmFyeS5zZXQobmV3IFByb2dyYW1CaW5hcnkoKSk7
Ci0gICAgbUxpbmtlZCA9IG1Qcm9ncmFtQmluYXJ5LT5sb2FkKG1JbmZvTG9nLCBiaW5hcnksIGxl
bmd0aCk7Ci0gICAgaWYgKCFtTGlua2VkKQotICAgIHsKLSAgICAgICAgbVByb2dyYW1CaW5hcnku
c2V0KE5VTEwpOwotICAgIH0KLQotICAgIHJldHVybiBtTGlua2VkOwotfQotCi12b2lkIFByb2dy
YW06OnJlbGVhc2UoKQotewotICAgIG1SZWZDb3VudC0tOwotCi0gICAgaWYgKG1SZWZDb3VudCA9
PSAwICYmIG1EZWxldGVTdGF0dXMpCi0gICAgewotICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5k
ZWxldGVQcm9ncmFtKG1IYW5kbGUpOwotICAgIH0KLX0KLQotdm9pZCBQcm9ncmFtOjphZGRSZWYo
KQotewotICAgIG1SZWZDb3VudCsrOwotfQotCi11bnNpZ25lZCBpbnQgUHJvZ3JhbTo6Z2V0UmVm
Q291bnQoKSBjb25zdAotewotICAgIHJldHVybiBtUmVmQ291bnQ7Ci19Ci0KLUdMaW50IFByb2dy
YW06OmdldFByb2dyYW1CaW5hcnlMZW5ndGgoKSBjb25zdAotewotICAgIFByb2dyYW1CaW5hcnkg
KnByb2dyYW1CaW5hcnkgPSBtUHJvZ3JhbUJpbmFyeS5nZXQoKTsKLSAgICBpZiAocHJvZ3JhbUJp
bmFyeSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcm9ncmFtQmluYXJ5LT5nZXRMZW5ndGgoKTsK
LSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi1p
bnQgUHJvZ3JhbTo6Z2V0SW5mb0xvZ0xlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1JbmZv
TG9nLmdldExlbmd0aCgpOwotfQotCi12b2lkIFByb2dyYW06OmdldEluZm9Mb2coR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cpCi17Ci0gICAgcmV0dXJuIG1J
bmZvTG9nLmdldExvZyhidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cpOwotfQotCi12b2lkIFByb2dy
YW06OmdldEF0dGFjaGVkU2hhZGVycyhHTHNpemVpIG1heENvdW50LCBHTHNpemVpICpjb3VudCwg
R0x1aW50ICpzaGFkZXJzKQotewotICAgIGludCB0b3RhbCA9IDA7Ci0KLSAgICBpZiAobVZlcnRl
eFNoYWRlcikKLSAgICB7Ci0gICAgICAgIGlmICh0b3RhbCA8IG1heENvdW50KQotICAgICAgICB7
Ci0gICAgICAgICAgICBzaGFkZXJzW3RvdGFsXSA9IG1WZXJ0ZXhTaGFkZXItPmdldEhhbmRsZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdG90YWwrKzsKLSAgICB9Ci0KLSAgICBpZiAobUZyYWdt
ZW50U2hhZGVyKQotICAgIHsKLSAgICAgICAgaWYgKHRvdGFsIDwgbWF4Q291bnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHNoYWRlcnNbdG90YWxdID0gbUZyYWdtZW50U2hhZGVyLT5nZXRIYW5k
bGUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRvdGFsKys7Ci0gICAgfQotCi0gICAgaWYgKGNv
dW50KQotICAgIHsKLSAgICAgICAgKmNvdW50ID0gdG90YWw7Ci0gICAgfQotfQotCi12b2lkIFBy
b2dyYW06OmdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUp
Ci17Ci0gICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldFByb2dyYW1CaW5hcnko
KTsKLSAgICBpZiAocHJvZ3JhbUJpbmFyeSkKLSAgICB7Ci0gICAgICAgIHByb2dyYW1CaW5hcnkt
PmdldEFjdGl2ZUF0dHJpYnV0ZShpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBu
YW1lKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaWYgKGJ1ZnNpemUgPiAwKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBuYW1lWzBdID0gJ1wwJzsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgaWYgKGxlbmd0aCkKLSAgICAgICAgewotICAgICAgICAgICAgKmxlbmd0aCA9
IDA7Ci0gICAgICAgIH0KLQotICAgICAgICAqdHlwZSA9IEdMX05PTkU7Ci0gICAgICAgICpzaXpl
ID0gMTsKLSAgICB9Ci19Ci0KLUdMaW50IFByb2dyYW06OmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50
KCkKLXsKLSAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gZ2V0UHJvZ3JhbUJpbmFy
eSgpOwotICAgIGlmIChwcm9ncmFtQmluYXJ5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHByb2dy
YW1CaW5hcnktPmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQotR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0
aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCkKLXsKLSAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5ID0gZ2V0UHJvZ3JhbUJpbmFyeSgpOwotICAgIGlmIChwcm9ncmFtQmluYXJ5KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmdldEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0
aCgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19
Ci0KLXZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkg
YnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNo
YXIgKm5hbWUpCi17Ci0gICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldFByb2dy
YW1CaW5hcnkoKTsKLSAgICBpZiAocHJvZ3JhbUJpbmFyeSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVVbmlmb3JtKGluZGV4LCBidWZzaXplLCBsZW5ndGgs
IHNpemUsIHR5cGUsIG5hbWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBpZiAo
YnVmc2l6ZSA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5hbWVbMF0gPSAnXDAnOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGxlbmd0aCkKLSAgICAgICAgewotICAgICAgICAgICAgKmxl
bmd0aCA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICAqc2l6ZSA9IDA7Ci0gICAgICAgICp0eXBl
ID0gR0xfTk9ORTsKLSAgICB9Ci19Ci0KLUdMaW50IFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1D
b3VudCgpCi17Ci0gICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldFByb2dyYW1C
aW5hcnkoKTsKLSAgICBpZiAocHJvZ3JhbUJpbmFyeSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBw
cm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVVbmlmb3JtQ291bnQoKTsKLSAgICB9Ci0gICAgZWxzZQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi1HTGludCBQcm9ncmFtOjpnZXRB
Y3RpdmVVbmlmb3JtTWF4TGVuZ3RoKCkKLXsKLSAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5ID0gZ2V0UHJvZ3JhbUJpbmFyeSgpOwotICAgIGlmIChwcm9ncmFtQmluYXJ5KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgo
KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQot
Ci12b2lkIFByb2dyYW06OmZsYWdGb3JEZWxldGlvbigpCi17Ci0gICAgbURlbGV0ZVN0YXR1cyA9
IHRydWU7Ci19Ci0KLWJvb2wgUHJvZ3JhbTo6aXNGbGFnZ2VkRm9yRGVsZXRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBtRGVsZXRlU3RhdHVzOwotfQotCi12b2lkIFByb2dyYW06OnZhbGlkYXRl
KCkKLXsKLSAgICBtSW5mb0xvZy5yZXNldCgpOwotCi0gICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3Jh
bUJpbmFyeSA9IGdldFByb2dyYW1CaW5hcnkoKTsKLSAgICBpZiAoaXNMaW5rZWQoKSAmJiBwcm9n
cmFtQmluYXJ5KQotICAgIHsKLSAgICAgICAgcHJvZ3JhbUJpbmFyeS0+dmFsaWRhdGUobUluZm9M
b2cpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtSW5mb0xvZy5hcHBlbmQoIlBy
b2dyYW0gaGFzIG5vdCBiZWVuIHN1Y2Nlc3NmdWxseSBsaW5rZWQuIik7Ci0gICAgfQotfQotCi1i
b29sIFByb2dyYW06OmlzVmFsaWRhdGVkKCkgY29uc3QKLXsKLSAgICBQcm9ncmFtQmluYXJ5ICpw
cm9ncmFtQmluYXJ5ID0gbVByb2dyYW1CaW5hcnkuZ2V0KCk7Ci0gICAgaWYgKHByb2dyYW1CaW5h
cnkpCi0gICAgewotICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+aXNWYWxpZGF0ZWQoKTsK
LSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Q
cm9ncmFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWM0NzE2Yi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0uaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyMSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBQcm9ncmFtLmg6
IERlZmluZXMgdGhlIGdsOjpQcm9ncmFtIGNsYXNzLiBJbXBsZW1lbnRzIEdMIHByb2dyYW0gb2Jq
ZWN0cwotLy8gYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNl
Y3Rpb24gMi4xMC4zIHBhZ2UgMjguCi0KLSNpZm5kZWYgTElCR0xFU1YyX1BST0dSQU1fSF8KLSNk
ZWZpbmUgTElCR0xFU1YyX1BST0dSQU1fSF8KLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRl
IDxzZXQ+Ci0KLSNpbmNsdWRlICJsaWJHTEVTdjIvU2hhZGVyLmgiCi0jaW5jbHVkZSAibGliR0xF
U3YyL0NvbnRleHQuaCIKLQotbmFtZXNwYWNlIGdsCi17Ci1jbGFzcyBSZXNvdXJjZU1hbmFnZXI7
Ci1jbGFzcyBGcmFnbWVudFNoYWRlcjsKLWNsYXNzIFZlcnRleFNoYWRlcjsKLQotZXh0ZXJuIGNv
bnN0IGNoYXIgKiBjb25zdCBnX2Zha2VwYXRoOwotCi1jbGFzcyBBdHRyaWJ1dGVCaW5kaW5ncwot
ewotICBwdWJsaWM6Ci0gICAgQXR0cmlidXRlQmluZGluZ3MoKTsKLSAgICB+QXR0cmlidXRlQmlu
ZGluZ3MoKTsKLQotICAgIHZvaWQgYmluZEF0dHJpYnV0ZUxvY2F0aW9uKEdMdWludCBpbmRleCwg
Y29uc3QgY2hhciAqbmFtZSk7Ci0gICAgaW50IGdldEF0dHJpYnV0ZUJpbmRpbmcoY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUpIGNvbnN0OwotCi0gIHByaXZhdGU6Ci0gICAgc3RkOjpzZXQ8c3RkOjpz
dHJpbmc+IG1BdHRyaWJ1dGVCaW5kaW5nW01BWF9WRVJURVhfQVRUUklCU107Ci19OwotCi1jbGFz
cyBJbmZvTG9nCi17Ci0gIHB1YmxpYzoKLSAgICBJbmZvTG9nKCk7Ci0gICAgfkluZm9Mb2coKTsK
LQotICAgIGludCBnZXRMZW5ndGgoKSBjb25zdDsKLSAgICB2b2lkIGdldExvZyhHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZyk7Ci0KLSAgICB2b2lkIGFwcGVu
ZFNhbml0aXplZChjb25zdCBjaGFyICptZXNzYWdlKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyICppbmZvLCAuLi4pOwotICAgIHZvaWQgcmVzZXQoKTsKLSAgcHJpdmF0ZToKLSAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oSW5mb0xvZyk7Ci0gICAgY2hhciAqbUluZm9Mb2c7Ci19Owot
Ci1jbGFzcyBQcm9ncmFtCi17Ci0gIHB1YmxpYzoKLSAgICBQcm9ncmFtKFJlc291cmNlTWFuYWdl
ciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSk7Ci0KLSAgICB+UHJvZ3JhbSgpOwotCi0gICAgYm9v
bCBhdHRhY2hTaGFkZXIoU2hhZGVyICpzaGFkZXIpOwotICAgIGJvb2wgZGV0YWNoU2hhZGVyKFNo
YWRlciAqc2hhZGVyKTsKLSAgICBpbnQgZ2V0QXR0YWNoZWRTaGFkZXJzQ291bnQoKSBjb25zdDsK
LQotICAgIHZvaWQgYmluZEF0dHJpYnV0ZUxvY2F0aW9uKEdMdWludCBpbmRleCwgY29uc3QgY2hh
ciAqbmFtZSk7Ci0KLSAgICBib29sIGxpbmsoKTsKLSAgICBib29sIGlzTGlua2VkKCk7Ci0gICAg
Ym9vbCBzZXRQcm9ncmFtQmluYXJ5KGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBsZW5ndGgp
OwotICAgIFByb2dyYW1CaW5hcnkgKmdldFByb2dyYW1CaW5hcnkoKTsKLQotICAgIGludCBnZXRJ
bmZvTG9nTGVuZ3RoKCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKTsKLSAgICB2b2lkIGdldEF0dGFjaGVk
U2hhZGVycyhHTHNpemVpIG1heENvdW50LCBHTHNpemVpICpjb3VudCwgR0x1aW50ICpzaGFkZXJz
KTsKLQotICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBi
dWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hh
ciAqbmFtZSk7Ci0gICAgR0xpbnQgZ2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKTsKLSAgICBHTGlu
dCBnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgoKTsKLQotICAgIHZvaWQgZ2V0QWN0aXZlVW5p
Zm9ybShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGlu
dCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpOwotICAgIEdMaW50IGdldEFjdGl2
ZVVuaWZvcm1Db3VudCgpOwotICAgIEdMaW50IGdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgoKTsK
LQotICAgIHZvaWQgYWRkUmVmKCk7Ci0gICAgdm9pZCByZWxlYXNlKCk7Ci0gICAgdW5zaWduZWQg
aW50IGdldFJlZkNvdW50KCkgY29uc3Q7Ci0gICAgdm9pZCBmbGFnRm9yRGVsZXRpb24oKTsKLSAg
ICBib29sIGlzRmxhZ2dlZEZvckRlbGV0aW9uKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHZhbGlkYXRl
KCk7Ci0gICAgYm9vbCBpc1ZhbGlkYXRlZCgpIGNvbnN0OwotCi0gICAgR0xpbnQgZ2V0UHJvZ3Jh
bUJpbmFyeUxlbmd0aCgpIGNvbnN0OwotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKFByb2dyYW0pOwotCi0gICAgdm9pZCB1bmxpbmsoYm9vbCBkZXN0cm95ID0gZmFs
c2UpOwotCi0gICAgRnJhZ21lbnRTaGFkZXIgKm1GcmFnbWVudFNoYWRlcjsKLSAgICBWZXJ0ZXhT
aGFkZXIgKm1WZXJ0ZXhTaGFkZXI7Ci0KLSAgICBBdHRyaWJ1dGVCaW5kaW5ncyBtQXR0cmlidXRl
QmluZGluZ3M7Ci0KLSAgICBCaW5kaW5nUG9pbnRlcjxQcm9ncmFtQmluYXJ5PiBtUHJvZ3JhbUJp
bmFyeTsKLSAgICBib29sIG1MaW5rZWQ7Ci0gICAgYm9vbCBtRGVsZXRlU3RhdHVzOyAgIC8vIEZs
YWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvZ3JhbSBjYW4gYmUgZGVsZXRlZCB3aGVuIG5vIGxv
bmdlciBpbiB1c2UKLQotICAgIHVuc2lnbmVkIGludCBtUmVmQ291bnQ7Ci0KLSAgICBSZXNvdXJj
ZU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFnZXI7Ci0gICAgY29uc3QgR0x1aW50IG1IYW5kbGU7Ci0K
LSAgICBJbmZvTG9nIG1JbmZvTG9nOwotfTsKLX0KLQotI2VuZGlmICAgLy8gTElCR0xFU1YyX1BS
T0dSQU1fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvUHJvZ3JhbUJpbmFyeS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL1Byb2dyYW1CaW5hcnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmNjhm
NmU1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UHJvZ3JhbUJpbmFyeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODE0ICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS8vCi0KLS8vIFByb2dyYW0uY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6UHJvZ3Jh
bSBjbGFzcy4gSW1wbGVtZW50cyBHTCBwcm9ncmFtIG9iamVjdHMKLS8vIGFuZCByZWxhdGVkIGZ1
bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuMTAuMyBwYWdlIDI4Lgot
Ci0jaW5jbHVkZSAibGliR0xFU3YyL0JpbmFyeVN0cmVhbS5oIgotI2luY2x1ZGUgImxpYkdMRVN2
Mi9Qcm9ncmFtLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKLQotI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCi0KLSNp
bmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9TaGFkZXIuaCIK
LSNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0K
LSNpZiAhZGVmaW5lZChBTkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9MRVZFTCkKLSNkZWZpbmUg
QU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwgRDNEQ09NUElMRV9PUFRJTUlaQVRJT05f
TEVWRUwzCi0jZW5kaWYKLQotbmFtZXNwYWNlIGdsCi17Ci1zdGQ6OnN0cmluZyBzdHIoaW50IGkp
Ci17Ci0gICAgY2hhciBidWZmZXJbMjBdOwotICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1
ZmZlciksICIlZCIsIGkpOwotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLVVuaWZvcm06OlVuaWZv
cm0oR0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nICZfbmFtZSwgdW5zaWduZWQgaW50IGFy
cmF5U2l6ZSkKLSAgICA6IHR5cGUodHlwZSksIF9uYW1lKF9uYW1lKSwgbmFtZShQcm9ncmFtQmlu
YXJ5Ojp1bmRlY29yYXRlVW5pZm9ybShfbmFtZSkpLCBhcnJheVNpemUoYXJyYXlTaXplKQotewot
ICAgIGludCBieXRlcyA9IFVuaWZvcm1JbnRlcm5hbFNpemUodHlwZSkgKiBhcnJheVNpemU7Ci0g
ICAgZGF0YSA9IG5ldyB1bnNpZ25lZCBjaGFyW2J5dGVzXTsKLSAgICBtZW1zZXQoZGF0YSwgMCwg
Ynl0ZXMpOwotICAgIGRpcnR5ID0gdHJ1ZTsKLX0KLQotVW5pZm9ybTo6flVuaWZvcm0oKQotewot
ICAgIGRlbGV0ZVtdIGRhdGE7Ci19Ci0KLWJvb2wgVW5pZm9ybTo6aXNBcnJheSgpCi17Ci0gICAg
c2l6ZV90IGRvdCA9IF9uYW1lLmZpbmRfbGFzdF9vZignLicpOwotICAgIGlmIChkb3QgPT0gc3Rk
OjpzdHJpbmc6Om5wb3MpIGRvdCA9IC0xOwotCi0gICAgcmV0dXJuIF9uYW1lLmNvbXBhcmUoZG90
ICsgMSwgZG90ICsgNCwgImFyXyIpID09IDA7Ci19Ci0KLVVuaWZvcm1Mb2NhdGlvbjo6VW5pZm9y
bUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZfbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQs
IHVuc2lnbmVkIGludCBpbmRleCkgCi0gICAgOiBuYW1lKFByb2dyYW1CaW5hcnk6OnVuZGVjb3Jh
dGVVbmlmb3JtKF9uYW1lKSksIGVsZW1lbnQoZWxlbWVudCksIGluZGV4KGluZGV4KQotewotfQot
Ci11bnNpZ25lZCBpbnQgUHJvZ3JhbUJpbmFyeTo6bUN1cnJlbnRTZXJpYWwgPSAxOwotCi1Qcm9n
cmFtQmluYXJ5OjpQcm9ncmFtQmluYXJ5KCkgOiBSZWZDb3VudE9iamVjdCgwKSwgbVNlcmlhbChp
c3N1ZVNlcmlhbCgpKQotewotICAgIG1EZXZpY2UgPSBnZXREZXZpY2UoKTsKLQotICAgIG1QaXhl
bEV4ZWN1dGFibGUgPSBOVUxMOwotICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKLSAgICBt
Q29uc3RhbnRUYWJsZVBTID0gTlVMTDsKLSAgICBtQ29uc3RhbnRUYWJsZVZTID0gTlVMTDsKLQot
ICAgIG1WYWxpZGF0ZWQgPSBmYWxzZTsKLQotICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXgg
PCBNQVhfVkVSVEVYX0FUVFJJQlM7IGluZGV4KyspCi0gICAgewotICAgICAgICBtU2VtYW50aWNJ
bmRleFtpbmRleF0gPSAtMTsKLSAgICB9Ci0KLSAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4
IDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7IGluZGV4KyspCi0gICAgewotICAgICAgICBtU2Ft
cGxlcnNQU1tpbmRleF0uYWN0aXZlID0gZmFsc2U7Ci0gICAgfQotCi0gICAgZm9yIChpbnQgaW5k
ZXggPSAwOyBpbmRleCA8IE1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU19WVEY7IGluZGV4
KyspCi0gICAgewotICAgICAgICBtU2FtcGxlcnNWU1tpbmRleF0uYWN0aXZlID0gZmFsc2U7Ci0g
ICAgfQotCi0gICAgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UgPSAwOwotICAgIG1Vc2VkUGl4ZWxT
YW1wbGVyUmFuZ2UgPSAwOwotCi0gICAgbUR4RGVwdGhSYW5nZUxvY2F0aW9uID0gLTE7Ci0gICAg
bUR4RGVwdGhMb2NhdGlvbiA9IC0xOwotICAgIG1EeENvb3JkTG9jYXRpb24gPSAtMTsKLSAgICBt
RHhIYWxmUGl4ZWxTaXplTG9jYXRpb24gPSAtMTsKLSAgICBtRHhGcm9udENDV0xvY2F0aW9uID0g
LTE7Ci0gICAgbUR4UG9pbnRzT3JMaW5lc0xvY2F0aW9uID0gLTE7Ci19Ci0KLVByb2dyYW1CaW5h
cnk6On5Qcm9ncmFtQmluYXJ5KCkKLXsKLSAgICBpZiAobVBpeGVsRXhlY3V0YWJsZSkKLSAgICB7
Ci0gICAgICAgIG1QaXhlbEV4ZWN1dGFibGUtPlJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICBpZiAo
bVZlcnRleEV4ZWN1dGFibGUpCi0gICAgewotICAgICAgICBtVmVydGV4RXhlY3V0YWJsZS0+UmVs
ZWFzZSgpOwotICAgIH0KLQotICAgIGRlbGV0ZSBtQ29uc3RhbnRUYWJsZVBTOwotICAgIGRlbGV0
ZSBtQ29uc3RhbnRUYWJsZVZTOwotCi0gICAgd2hpbGUgKCFtVW5pZm9ybXMuZW1wdHkoKSkKLSAg
ICB7Ci0gICAgICAgIGRlbGV0ZSBtVW5pZm9ybXMuYmFjaygpOwotICAgICAgICBtVW5pZm9ybXMu
cG9wX2JhY2soKTsKLSAgICB9Ci19Ci0KLXVuc2lnbmVkIGludCBQcm9ncmFtQmluYXJ5OjpnZXRT
ZXJpYWwoKSBjb25zdAotewotICAgIHJldHVybiBtU2VyaWFsOwotfQotCi11bnNpZ25lZCBpbnQg
UHJvZ3JhbUJpbmFyeTo6aXNzdWVTZXJpYWwoKQotewotICAgIHJldHVybiBtQ3VycmVudFNlcmlh
bCsrOwotfQotCi1JRGlyZWN0M0RQaXhlbFNoYWRlcjkgKlByb2dyYW1CaW5hcnk6OmdldFBpeGVs
U2hhZGVyKCkKLXsKLSAgICByZXR1cm4gbVBpeGVsRXhlY3V0YWJsZTsKLX0KLQotSURpcmVjdDNE
VmVydGV4U2hhZGVyOSAqUHJvZ3JhbUJpbmFyeTo6Z2V0VmVydGV4U2hhZGVyKCkKLXsKLSAgICBy
ZXR1cm4gbVZlcnRleEV4ZWN1dGFibGU7Ci19Ci0KLUdMdWludCBQcm9ncmFtQmluYXJ5OjpnZXRB
dHRyaWJ1dGVMb2NhdGlvbihjb25zdCBjaGFyICpuYW1lKQotewotICAgIGlmIChuYW1lKQotICAg
IHsKLSAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IE1BWF9WRVJURVhfQVRUUklC
UzsgaW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1MaW5rZWRBdHRyaWJ1dGVb
aW5kZXhdLm5hbWUgPT0gc3RkOjpzdHJpbmcobmFtZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIC0xOwotfQotCi1pbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0U2VtYW50aWNJbmRl
eChpbnQgYXR0cmlidXRlSW5kZXgpCi17Ci0gICAgQVNTRVJUKGF0dHJpYnV0ZUluZGV4ID49IDAg
JiYgYXR0cmlidXRlSW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJQlMpOwotICAgIAotICAgIHJldHVy
biBtU2VtYW50aWNJbmRleFthdHRyaWJ1dGVJbmRleF07Ci19Ci0KLS8vIFJldHVybnMgb25lIG1v
cmUgdGhhbiB0aGUgaGlnaGVzdCBzYW1wbGVyIGluZGV4IHVzZWQuCi1HTGludCBQcm9ncmFtQmlu
YXJ5OjpnZXRVc2VkU2FtcGxlclJhbmdlKFNhbXBsZXJUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNo
ICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgU0FNUExFUl9QSVhFTDoKLSAgICAgICAgcmV0dXJu
IG1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2U7Ci0gICAgICBjYXNlIFNBTVBMRVJfVkVSVEVYOgotICAg
ICAgICByZXR1cm4gbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7Ci0gICAgICBkZWZhdWx0OgotICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLWJvb2wg
UHJvZ3JhbUJpbmFyeTo6dXNlc1BvaW50U2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Vc2Vz
UG9pbnRTaXplOwotfQotCi0vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgdGV4dHVyZSBpbWFn
ZSB1bml0ICgwLTE5KSBjb3JyZXNwb25kaW5nIHRvIGEgRGlyZWN0M0QgOSBzYW1wbGVyCi0vLyBp
bmRleCAoMC0xNSBmb3IgdGhlIHBpeGVsIHNoYWRlciBhbmQgMC0zIGZvciB0aGUgdmVydGV4IHNo
YWRlcikuCi1HTGludCBQcm9ncmFtQmluYXJ5OjpnZXRTYW1wbGVyTWFwcGluZyhTYW1wbGVyVHlw
ZSB0eXBlLCB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4KQotewotICAgIEdMaW50IGxvZ2ljYWxU
ZXh0dXJlVW5pdCA9IC0xOwotCi0gICAgc3dpdGNoICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2Ug
U0FNUExFUl9QSVhFTDoKLSAgICAgICAgQVNTRVJUKHNhbXBsZXJJbmRleCA8IHNpemVvZihtU2Ft
cGxlcnNQUykvc2l6ZW9mKG1TYW1wbGVyc1BTWzBdKSk7Ci0KLSAgICAgICAgaWYgKG1TYW1wbGVy
c1BTW3NhbXBsZXJJbmRleF0uYWN0aXZlKQotICAgICAgICB7Ci0gICAgICAgICAgICBsb2dpY2Fs
VGV4dHVyZVVuaXQgPSBtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5p
dDsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU0FNUExFUl9WRVJURVg6
Ci0gICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzVlMpL3NpemVv
ZihtU2FtcGxlcnNWU1swXSkpOwotCi0gICAgICAgIGlmIChtU2FtcGxlcnNWU1tzYW1wbGVySW5k
ZXhdLmFjdGl2ZSkKLSAgICAgICAgewotICAgICAgICAgICAgbG9naWNhbFRleHR1cmVVbml0ID0g
bVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQ7Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQot
ICAgIGlmIChsb2dpY2FsVGV4dHVyZVVuaXQgPj0gMCAmJiBsb2dpY2FsVGV4dHVyZVVuaXQgPCAo
R0xpbnQpZ2V0Q29udGV4dCgpLT5nZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxvZ2ljYWxUZXh0dXJlVW5pdDsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gLTE7Ci19Ci0KLS8vIFJldHVybnMgdGhlIHRleHR1cmUgdHlwZSBmb3IgYSBnaXZl
biBEaXJlY3QzRCA5IHNhbXBsZXIgdHlwZSBhbmQKLS8vIGluZGV4ICgwLTE1IGZvciB0aGUgcGl4
ZWwgc2hhZGVyIGFuZCAwLTMgZm9yIHRoZSB2ZXJ0ZXggc2hhZGVyKS4KLVRleHR1cmVUeXBlIFBy
b2dyYW1CaW5hcnk6OmdldFNhbXBsZXJUZXh0dXJlVHlwZShTYW1wbGVyVHlwZSB0eXBlLCB1bnNp
Z25lZCBpbnQgc2FtcGxlckluZGV4KQotewotICAgIHN3aXRjaCAodHlwZSkKLSAgICB7Ci0gICAg
ICBjYXNlIFNBTVBMRVJfUElYRUw6Ci0gICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXggPCBzaXpl
b2YobVNhbXBsZXJzUFMpL3NpemVvZihtU2FtcGxlcnNQU1swXSkpOwotICAgICAgICBBU1NFUlQo
bVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3RpdmUpOwotICAgICAgICByZXR1cm4gbVNhbXBs
ZXJzUFNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZTsKLSAgICAgIGNhc2UgU0FNUExFUl9WRVJU
RVg6Ci0gICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzVlMpL3Np
emVvZihtU2FtcGxlcnNWU1swXSkpOwotICAgICAgICBBU1NFUlQobVNhbXBsZXJzVlNbc2FtcGxl
ckluZGV4XS5hY3RpdmUpOwotICAgICAgICByZXR1cm4gbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4
XS50ZXh0dXJlVHlwZTsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIFRFWFRVUkVfMkQ7Ci19Ci0KLUdMaW50IFByb2dyYW1CaW5hcnk6OmdldFVuaWZv
cm1Mb2NhdGlvbihzdGQ6OnN0cmluZyBuYW1lKQotewotICAgIHVuc2lnbmVkIGludCBzdWJzY3Jp
cHQgPSAwOwotCi0gICAgLy8gU3RyaXAgYW55IHRyYWlsaW5nIGFycmF5IG9wZXJhdG9yIGFuZCBy
ZXRyaWV2ZSB0aGUgc3Vic2NyaXB0Ci0gICAgc2l6ZV90IG9wZW4gPSBuYW1lLmZpbmRfbGFzdF9v
ZignWycpOwotICAgIHNpemVfdCBjbG9zZSA9IG5hbWUuZmluZF9sYXN0X29mKCddJyk7Ci0gICAg
aWYgKG9wZW4gIT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYgY2xvc2UgPT0gbmFtZS5sZW5ndGgoKSAt
IDEpCi0gICAgewotICAgICAgICBzdWJzY3JpcHQgPSBhdG9pKG5hbWUuc3Vic3RyKG9wZW4gKyAx
KS5jX3N0cigpKTsKLSAgICAgICAgbmFtZS5lcmFzZShvcGVuKTsKLSAgICB9Ci0KLSAgICB1bnNp
Z25lZCBpbnQgbnVtVW5pZm9ybXMgPSBtVW5pZm9ybUluZGV4LnNpemUoKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGludCBsb2NhdGlvbiA9IDA7IGxvY2F0aW9uIDwgbnVtVW5pZm9ybXM7IGxvY2F0aW9u
KyspCi0gICAgewotICAgICAgICBpZiAobVVuaWZvcm1JbmRleFtsb2NhdGlvbl0ubmFtZSA9PSBu
YW1lICYmCi0gICAgICAgICAgICBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ID09IHN1
YnNjcmlwdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIC0xOwotfQotCi1ib29sIFByb2dyYW1CaW5hcnk6OnNl
dFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQq
IHYpCi17Ci0gICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3Jt
SW5kZXguc2l6ZSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uaW5kZXhdOwotICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gdHJ1ZTsKLQotICAgIGlmICh0
YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0ZMT0FUKQotICAgIHsKLSAgICAgICAgaW50IGFycmF5
U2l6ZSA9IHRhcmdldFVuaWZvcm0tPmFycmF5U2l6ZTsKLQotICAgICAgICBpZiAoYXJyYXlTaXpl
ID09IDEgJiYgY291bnQgPiAxKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0
aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJ
RF9PUEVSQVRJT04KLQotICAgICAgICBjb3VudCA9IHN0ZDo6bWluKGFycmF5U2l6ZSAtIChpbnQp
bVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOwotCi0gICAgICAgIEdMZmxv
YXQgKnRhcmdldCA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOwotICAg
ICAgICAgICAgdGFyZ2V0WzFdID0gMDsKLSAgICAgICAgICAgIHRhcmdldFsyXSA9IDA7Ci0gICAg
ICAgICAgICB0YXJnZXRbM10gPSAwOwotICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7Ci0gICAgICAg
ICAgICB2ICs9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9y
bS0+dHlwZSA9PSBHTF9CT09MKQotICAgIHsKLSAgICAgICAgaW50IGFycmF5U2l6ZSA9IHRhcmdl
dFVuaWZvcm0tPmFycmF5U2l6ZTsKLQotICAgICAgICBpZiAoYXJyYXlTaXplID09IDEgJiYgY291
bnQgPiAxKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRl
IGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04K
LQotICAgICAgICBjb3VudCA9IHN0ZDo6bWluKGFycmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOwotICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJh
bXMgPSAoR0xib29sZWFuKil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudDsKLQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh2W2ldID09IDAuMGYpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgYm9vbFBhcmFtc1tpXSA9IEdMX0ZBTFNFOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJvb2xQ
YXJhbXNbaV0gPSBHTF9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQotewotICAgIGlmIChsb2NhdGlv
biA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3Jt
ID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLSAgICB0YXJnZXRV
bmlmb3JtLT5kaXJ0eSA9IHRydWU7Ci0KLSAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBH
TF9GTE9BVF9WRUMyKQotICAgIHsKLSAgICAgICAgaW50IGFycmF5U2l6ZSA9IHRhcmdldFVuaWZv
cm0tPmFycmF5U2l6ZTsKLQotICAgICAgICBpZiAoYXJyYXlTaXplID09IDEgJiYgY291bnQgPiAx
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFy
cmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KLQotICAg
ICAgICBjb3VudCA9IHN0ZDo6bWluKGFycmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudCwgY291bnQpOwotCi0gICAgICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZs
b2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVu
dCAqIDQ7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOwotICAgICAgICAgICAgdGFyZ2V0WzFd
ID0gdlsxXTsKLSAgICAgICAgICAgIHRhcmdldFsyXSA9IDA7Ci0gICAgICAgICAgICB0YXJnZXRb
M10gPSAwOwotICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7Ci0gICAgICAgICAgICB2ICs9IDI7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9C
T09MX1ZFQzIpCi0gICAgewotICAgICAgICBpbnQgYXJyYXlTaXplID0gdGFyZ2V0VW5pZm9ybS0+
YXJyYXlTaXplOwotCi0gICAgICAgIGlmIChhcnJheVNpemUgPT0gMSAmJiBjb3VudCA+IDEpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkg
dG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgotCi0gICAgICAg
IGNvdW50ID0gc3RkOjptaW4oYXJyYXlTaXplIC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9u
XS5lbGVtZW50LCBjb3VudCk7Ci0KLSAgICAgICAgR0xib29sZWFuICpib29sUGFyYW1zID0gKEdM
Ym9vbGVhbiopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQgKiAyOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQgKiAyOyArK2kp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh2W2ldID09IDAuMGYpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgYm9vbFBhcmFtc1tpXSA9IEdMX0ZBTFNFOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJvb2xQ
YXJhbXNbaV0gPSBHTF9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IGVsc2UgCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgUHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTNmdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKLXsKLSAgICBpZiAobG9jYXRp
b24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9y
bSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07Ci0gICAgdGFyZ2V0
VW5pZm9ybS0+ZGlydHkgPSB0cnVlOwotCi0gICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0g
R0xfRkxPQVRfVkVDMykKLSAgICB7Ci0gICAgICAgIGludCBhcnJheVNpemUgPSB0YXJnZXRVbmlm
b3JtLT5hcnJheVNpemU7Ci0KLSAgICAgICAgaWYgKGFycmF5U2l6ZSA9PSAxICYmIGNvdW50ID4g
MSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBh
cnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCi0KLSAg
ICAgICAgY291bnQgPSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9j
YXRpb25dLmVsZW1lbnQsIGNvdW50KTsKLQotICAgICAgICBHTGZsb2F0ICp0YXJnZXQgPSAoR0xm
bG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1l
bnQgKiA0OwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICAg
ICAgewotICAgICAgICAgICAgdGFyZ2V0WzBdID0gdlswXTsKLSAgICAgICAgICAgIHRhcmdldFsx
XSA9IHZbMV07Ci0gICAgICAgICAgICB0YXJnZXRbMl0gPSB2WzJdOwotICAgICAgICAgICAgdGFy
Z2V0WzNdID0gMDsKLSAgICAgICAgICAgIHRhcmdldCArPSA0OwotICAgICAgICAgICAgdiArPSAz
OwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0g
R0xfQk9PTF9WRUMzKQotICAgIHsKLSAgICAgICAgaW50IGFycmF5U2l6ZSA9IHRhcmdldFVuaWZv
cm0tPmFycmF5U2l6ZTsKLQotICAgICAgICBpZiAoYXJyYXlTaXplID09IDEgJiYgY291bnQgPiAx
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFy
cmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KLQotICAg
ICAgICBjb3VudCA9IHN0ZDo6bWluKGFycmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudCwgY291bnQpOwotICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSAo
R0xib29sZWFuKil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0u
ZWxlbWVudCAqIDM7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudCAqIDM7ICsr
aSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHZbaV0gPT0gMC4wZikKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBib29sUGFyYW1zW2ldID0gR0xfRkFMU0U7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm9v
bFBhcmFtc1tpXSA9IEdMX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgZWxzZSAKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtNGZ2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQotewotICAgIGlmIChsb2Nh
dGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlm
b3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLSAgICB0YXJn
ZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7Ci0KLSAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9
PSBHTF9GTE9BVF9WRUM0KQotICAgIHsKLSAgICAgICAgaW50IGFycmF5U2l6ZSA9IHRhcmdldFVu
aWZvcm0tPmFycmF5U2l6ZTsKLQotICAgICAgICBpZiAoYXJyYXlTaXplID09IDEgJiYgY291bnQg
PiAxKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFu
IGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KLQot
ICAgICAgICBjb3VudCA9IHN0ZDo6bWluKGFycmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRleFts
b2NhdGlvbl0uZWxlbWVudCwgY291bnQpOwotCi0gICAgICAgIG1lbWNweSh0YXJnZXRVbmlmb3Jt
LT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIHNpemVvZihHTGZsb2F0
KSAqIDQsCi0gICAgICAgICAgICAgICB2LCA0ICogc2l6ZW9mKEdMZmxvYXQpICogY291bnQpOwot
ICAgIH0KLSAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDNCkK
LSAgICB7Ci0gICAgICAgIGludCBhcnJheVNpemUgPSB0YXJnZXRVbmlmb3JtLT5hcnJheVNpemU7
Ci0KLSAgICAgICAgaWYgKGFycmF5U2l6ZSA9PSAxICYmIGNvdW50ID4gMSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1h
cnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCi0KLSAgICAgICAgY291bnQgPSBz
dGQ6Om1pbihhcnJheVNpemUgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQs
IGNvdW50KTsKLSAgICAgICAgR0xib29sZWFuICpib29sUGFyYW1zID0gKEdMYm9vbGVhbiopdGFy
Z2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0Owot
Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQgKiA0OyArK2kpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICh2W2ldID09IDAuMGYpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgYm9vbFBhcmFtc1tpXSA9IEdMX0ZBTFNFOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJvb2xQYXJhbXNbaV0gPSBH
TF9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgCi0gICAg
ewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIGludCB0YXJnZXRXaWR0aCwgaW50IHRhcmdldEhlaWdodCwg
aW50IHNyY1dpZHRoLCBpbnQgc3JjSGVpZ2h0Pgotdm9pZCB0cmFuc3Bvc2VNYXRyaXgoVCAqdGFy
Z2V0LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKLXsKLSAgICBpbnQgY29weVdpZHRoID0gc3RkOjpt
aW4odGFyZ2V0V2lkdGgsIHNyY1dpZHRoKTsKLSAgICBpbnQgY29weUhlaWdodCA9IHN0ZDo6bWlu
KHRhcmdldEhlaWdodCwgc3JjSGVpZ2h0KTsKLQotICAgIGZvciAoaW50IHggPSAwOyB4IDwgY29w
eVdpZHRoOyB4KyspCi0gICAgewotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGNvcHlIZWln
aHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdGFyZ2V0W3ggKiB0YXJnZXRXaWR0aCAr
IHldID0gKFQpdmFsdWVbeSAqIHNyY1dpZHRoICsgeF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ly8gY2xlYXIgdW5maWxsZWQgcmlnaHQgc2lkZQotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgY29w
eUhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IHNyY1dpZHRoOyB4IDwg
dGFyZ2V0V2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgdGFyZ2V0W3kgKiB0YXJn
ZXRXaWR0aCArIHhdID0gKFQpMDsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyBjbGVhciB1bmZp
bGxlZCBib3R0b20uCi0gICAgZm9yIChpbnQgeSA9IHNyY0hlaWdodDsgeSA8IHRhcmdldEhlaWdo
dDsgeSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB0YXJnZXRXaWR0aDsg
eCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB0YXJnZXRbeSAqIHRhcmdldFdpZHRoICsgeF0g
PSAoVCkwOwotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIFByb2dyYW1CaW5hcnk6OnNldFVu
aWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQotewotICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludClt
VW5pZm9ybUluZGV4LnNpemUoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhb
bG9jYXRpb25dLmluZGV4XTsKLSAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7Ci0KLSAg
ICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSAhPSBHTF9GTE9BVF9NQVQyKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGludCBhcnJheVNpemUgPSB0YXJnZXRVbmlm
b3JtLT5hcnJheVNpemU7Ci0KLSAgICBpZiAoYXJyYXlTaXplID09IDEgJiYgY291bnQgPiAxKQot
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8g
YSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgotCi0gICAgY291bnQg
PSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1l
bnQsIGNvdW50KTsKLQotICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0Kil0YXJnZXRVbmlm
b3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDg7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgdHJhbnNwb3NlTWF0
cml4PEdMZmxvYXQsNCwyLDIsMj4odGFyZ2V0LCB2YWx1ZSk7Ci0gICAgICAgIHRhcmdldCArPSA4
OwotICAgICAgICB2YWx1ZSArPSA0OwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQotewotICAgIGlmIChsb2NhdGlvbiA8
IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0g
bVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLSAgICB0YXJnZXRVbmlm
b3JtLT5kaXJ0eSA9IHRydWU7Ci0KLSAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSAhPSBHTF9G
TE9BVF9NQVQzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlu
dCBhcnJheVNpemUgPSB0YXJnZXRVbmlmb3JtLT5hcnJheVNpemU7Ci0KLSAgICBpZiAoYXJyYXlT
aXplID09IDEgJiYgY291bnQgPiAxKQotICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRp
bmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElE
X09QRVJBVElPTgotCi0gICAgY291bnQgPSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50KW1Vbmlm
b3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKLQotICAgIEdMZmxvYXQgKnRhcmdl
dCA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uZWxlbWVudCAqIDEyOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAg
ICB7Ci0gICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGZsb2F0LDQsMywzLDM+KHRhcmdldCwgdmFs
dWUpOwotICAgICAgICB0YXJnZXQgKz0gMTI7Ci0gICAgICAgIHZhbHVlICs9IDk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQotYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3Jt
TWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKLXsKLSAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZv
cm1JbmRleC5zaXplKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0
aW9uXS5pbmRleF07Ci0gICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOwotCi0gICAgaWYg
KHRhcmdldFVuaWZvcm0tPnR5cGUgIT0gR0xfRkxPQVRfTUFUNCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpbnQgYXJyYXlTaXplID0gdGFyZ2V0VW5pZm9ybS0+
YXJyYXlTaXplOwotCi0gICAgaWYgKGFycmF5U2l6ZSA9PSAxICYmIGNvdW50ID4gMSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9u
LWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KLQotICAgIGNvdW50ID0gc3Rk
OjptaW4oYXJyYXlTaXplIC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBj
b3VudCk7Ci0KLSAgICBHTGZsb2F0ICp0YXJnZXQgPSAoR0xmbG9hdCopKHRhcmdldFVuaWZvcm0t
PmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogc2l6ZW9mKEdMZmxvYXQp
ICogMTYpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICB7Ci0gICAg
ICAgIHRyYW5zcG9zZU1hdHJpeDxHTGZsb2F0LDQsNCw0LDQ+KHRhcmdldCwgdmFsdWUpOwotICAg
ICAgICB0YXJnZXQgKz0gMTY7Ci0gICAgICAgIHZhbHVlICs9IDE2OwotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0xaXYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQotewotICAgIGlmIChsb2Nh
dGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlm
b3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLSAgICB0YXJn
ZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7Ci0KLSAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9
PSBHTF9JTlQgfHwKLSAgICAgICAgdGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9TQU1QTEVSXzJE
IHx8Ci0gICAgICAgIHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfU0FNUExFUl9DVUJFKQotICAg
IHsKLSAgICAgICAgaW50IGFycmF5U2l6ZSA9IHRhcmdldFVuaWZvcm0tPmFycmF5U2l6ZTsKLQot
ICAgICAgICBpZiAoYXJyYXlTaXplID09IDEgJiYgY291bnQgPiAxKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5
IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KLQotICAgICAgICBjb3VudCA9IHN0ZDo6
bWluKGFycmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291
bnQpOwotCi0gICAgICAgIG1lbWNweSh0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uZWxlbWVudCAqIHNpemVvZihHTGludCksCi0gICAgICAgICAgICAgICB2LCBz
aXplb2YoR0xpbnQpICogY291bnQpOwotICAgIH0KLSAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3Jt
LT50eXBlID09IEdMX0JPT0wpCi0gICAgewotICAgICAgICBpbnQgYXJyYXlTaXplID0gdGFyZ2V0
VW5pZm9ybS0+YXJyYXlTaXplOwotCi0gICAgICAgIGlmIChhcnJheVNpemUgPT0gMSAmJiBjb3Vu
dCA+IDEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUg
YW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgot
Ci0gICAgICAgIGNvdW50ID0gc3RkOjptaW4oYXJyYXlTaXplIC0gKGludCltVW5pZm9ybUluZGV4
W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7Ci0gICAgICAgIEdMYm9vbGVhbiAqYm9vbFBhcmFt
cyA9IChHTGJvb2xlYW4qKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0
aW9uXS5lbGVtZW50OwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKHZbaV0gPT0gMCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBib29sUGFyYW1zW2ldID0gR0xfRkFMU0U7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm9vbFBhcmFt
c1tpXSA9IEdMX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQotewotICAgIGlmIChsb2NhdGlvbiA8IDAg
fHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVu
aWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLSAgICB0YXJnZXRVbmlmb3Jt
LT5kaXJ0eSA9IHRydWU7Ci0KLSAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9JTlRf
VkVDMikKLSAgICB7Ci0gICAgICAgIGludCBhcnJheVNpemUgPSB0YXJnZXRVbmlmb3JtLT5hcnJh
eVNpemU7Ci0KLSAgICAgICAgaWYgKGFycmF5U2l6ZSA9PSAxICYmIGNvdW50ID4gMSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBh
IG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCi0KLSAgICAgICAgY291
bnQgPSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQsIGNvdW50KTsKLQotICAgICAgICBtZW1jcHkodGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBzaXplb2YoR0xpbnQpICogMiwKLSAgICAg
ICAgICAgICAgIHYsIDIgKiBzaXplb2YoR0xpbnQpICogY291bnQpOwotICAgIH0KLSAgICBlbHNl
IGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDMikKLSAgICB7Ci0gICAgICAg
IGludCBhcnJheVNpemUgPSB0YXJnZXRVbmlmb3JtLT5hcnJheVNpemU7Ci0KLSAgICAgICAgaWYg
KGFycmF5U2l6ZSA9PSAxICYmIGNvdW50ID4gMSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlz
IGFuIElOVkFMSURfT1BFUkFUSU9OCi0KLSAgICAgICAgY291bnQgPSBzdGQ6Om1pbihhcnJheVNp
emUgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKLSAgICAg
ICAgR0xib29sZWFuICpib29sUGFyYW1zID0gKEdMYm9vbGVhbiopdGFyZ2V0VW5pZm9ybS0+ZGF0
YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiAyOwotCi0gICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQgKiAyOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICh2W2ldID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm9vbFBhcmFtc1tp
XSA9IEdMX0ZBTFNFOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGJvb2xQYXJhbXNbaV0gPSBHTF9UUlVFOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtQmluYXJ5
OjpzZXRVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dCAqdikKLXsKLSAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZv
cm1JbmRleC5zaXplKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0
aW9uXS5pbmRleF07Ci0gICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOwotCi0gICAgaWYg
KHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfSU5UX1ZFQzMpCi0gICAgewotICAgICAgICBpbnQg
YXJyYXlTaXplID0gdGFyZ2V0VW5pZm9ybS0+YXJyYXlTaXplOwotCi0gICAgICAgIGlmIChhcnJh
eVNpemUgPT0gMSAmJiBjb3VudCA+IDEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0
dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJ
TlZBTElEX09QRVJBVElPTgotCi0gICAgICAgIGNvdW50ID0gc3RkOjptaW4oYXJyYXlTaXplIC0g
KGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7Ci0KLSAgICAgICAg
bWVtY3B5KHRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVt
ZW50ICogc2l6ZW9mKEdMaW50KSAqIDMsCi0gICAgICAgICAgICAgICB2LCAzICogc2l6ZW9mKEdM
aW50KSAqIGNvdW50KTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9
PSBHTF9CT09MX1ZFQzMpCi0gICAgewotICAgICAgICBpbnQgYXJyYXlTaXplID0gdGFyZ2V0VW5p
Zm9ybS0+YXJyYXlTaXplOwotCi0gICAgICAgIGlmIChhcnJheVNpemUgPT0gMSAmJiBjb3VudCA+
IDEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4g
YXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgotCi0g
ICAgICAgIGNvdW50ID0gc3RkOjptaW4oYXJyYXlTaXplIC0gKGludCltVW5pZm9ybUluZGV4W2xv
Y2F0aW9uXS5lbGVtZW50LCBjb3VudCk7Ci0gICAgICAgIEdMYm9vbGVhbiAqYm9vbFBhcmFtcyA9
IChHTGJvb2xlYW4qKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9u
XS5lbGVtZW50ICogMzsKLQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ICogMzsg
KytpKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodltpXSA9PSAwKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGJvb2xQYXJhbXNbaV0gPSBHTF9GQUxTRTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBib29s
UGFyYW1zW2ldID0gR0xfVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgUHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTRpdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCi17Ci0gICAgaWYgKGxvY2F0aW9u
IDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0g
PSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOwotICAgIHRhcmdldFVu
aWZvcm0tPmRpcnR5ID0gdHJ1ZTsKLQotICAgIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdM
X0lOVF9WRUM0KQotICAgIHsKLSAgICAgICAgaW50IGFycmF5U2l6ZSA9IHRhcmdldFVuaWZvcm0t
PmFycmF5U2l6ZTsKLQotICAgICAgICBpZiAoYXJyYXlTaXplID09IDEgJiYgY291bnQgPiAxKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5
IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KLQotICAgICAg
ICBjb3VudCA9IHN0ZDo6bWluKGFycmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uZWxlbWVudCwgY291bnQpOwotCi0gICAgICAgIG1lbWNweSh0YXJnZXRVbmlmb3JtLT5kYXRh
ICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIHNpemVvZihHTGludCkgKiA0LAot
ICAgICAgICAgICAgICAgdiwgNCAqIHNpemVvZihHTGludCkgKiBjb3VudCk7Ci0gICAgfQotICAg
IGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTF9WRUM0KQotICAgIHsKLSAg
ICAgICAgaW50IGFycmF5U2l6ZSA9IHRhcmdldFVuaWZvcm0tPmFycmF5U2l6ZTsKLQotICAgICAg
ICBpZiAoYXJyYXlTaXplID09IDEgJiYgY291bnQgPiAxKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZv
cm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KLQotICAgICAgICBjb3VudCA9IHN0ZDo6bWluKGFy
cmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOwot
ICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSAoR0xib29sZWFuKil0YXJnZXRVbmlmb3Jt
LT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7Ci0KLSAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudCAqIDQ7ICsraSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKHZbaV0gPT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBib29sUGFy
YW1zW2ldID0gR0xfRkFMU0U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm9vbFBhcmFtc1tpXSA9IEdMX1RSVUU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFByb2dyYW1C
aW5hcnk6OmdldFVuaWZvcm1mdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwgR0xm
bG9hdCAqcGFyYW1zKQotewotICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGlu
dCltVW5pZm9ybUluZGV4LnNpemUoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5k
ZXhbbG9jYXRpb25dLmluZGV4XTsKLQotICAgIC8vIHNpemVkIHF1ZXJpZXMgLS0gZW5zdXJlIHRo
ZSBwcm92aWRlZCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoCi0gICAgaWYgKGJ1ZlNpemUpCi0gICAg
ewotICAgICAgICBpbnQgcmVxdWlyZWRCeXRlcyA9IFVuaWZvcm1FeHRlcm5hbFNpemUodGFyZ2V0
VW5pZm9ybS0+dHlwZSk7Ci0gICAgICAgIGlmICgqYnVmU2l6ZSA8IHJlcXVpcmVkQnl0ZXMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHN3aXRjaCAodGFyZ2V0VW5pZm9ybS0+dHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX0ZM
T0FUX01BVDI6Ci0gICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGZsb2F0LDIsMiw0LDI+KHBhcmFt
cywgKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9u
XS5lbGVtZW50ICogOCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQz
OgotICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xmbG9hdCwzLDMsNCwzPihwYXJhbXMsIChHTGZs
b2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVu
dCAqIDEyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6Ci0gICAg
ICAgIHRyYW5zcG9zZU1hdHJpeDxHTGZsb2F0LDQsNCw0LDQ+KHBhcmFtcywgKEdMZmxvYXQqKXRh
cmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogMTYp
OwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGludCBjb3VudCA9IFVuaWZvcm1FeHRlcm5hbENvbXBvbmVudENvdW50KHRhcmdl
dFVuaWZvcm0tPnR5cGUpOwotICAgICAgICAgICAgdW5zaWduZWQgaW50IGludGVybmFsQ291bnQg
PSBVbmlmb3JtSW50ZXJuYWxDb21wb25lbnRDb3VudCh0YXJnZXRVbmlmb3JtLT50eXBlKTsKLQot
ICAgICAgICAgICAgc3dpdGNoIChVbmlmb3JtQ29tcG9uZW50VHlwZSh0YXJnZXRVbmlmb3JtLT50
eXBlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9CT09MOgotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpib29sUGFyYW1zID0g
KEdMYm9vbGVhbiopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
LmVsZW1lbnQgKiBpbnRlcm5hbENvdW50OwotCi0gICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKGJvb2xQYXJhbXNbaV0gPT0gR0xf
RkFMU0UpID8gMC4wZiA6IDEuMGY7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxP
QVQ6Ci0gICAgICAgICAgICAgICAgbWVtY3B5KHBhcmFtcywgdGFyZ2V0VW5pZm9ybS0+ZGF0YSAr
IG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBpbnRlcm5hbENvdW50ICogc2l6ZW9m
KEdMZmxvYXQpLAotICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAqIHNpemVvZihHTGZsb2F0
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmludFBhcmFtcyA9
IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQgKiBpbnRlcm5hbENvdW50OwotCi0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKGZsb2F0KWludFBhcmFtc1tpXTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFByb2dy
YW1CaW5hcnk6OmdldFVuaWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwg
R0xpbnQgKnBhcmFtcykKLXsKLSAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChp
bnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUlu
ZGV4W2xvY2F0aW9uXS5pbmRleF07Ci0KLSAgICAvLyBzaXplZCBxdWVyaWVzIC0tIGVuc3VyZSB0
aGUgcHJvdmlkZWQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaAotICAgIGlmIChidWZTaXplKQotICAg
IHsKLSAgICAgICAgaW50IHJlcXVpcmVkQnl0ZXMgPSBVbmlmb3JtRXh0ZXJuYWxTaXplKHRhcmdl
dFVuaWZvcm0tPnR5cGUpOwotICAgICAgICBpZiAoKmJ1ZlNpemUgPCByZXF1aXJlZEJ5dGVzKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBzd2l0Y2ggKHRhcmdldFVuaWZvcm0tPnR5cGUpCi0gICAgewotICAgICAgY2FzZSBHTF9G
TE9BVF9NQVQyOgotICAgICAgICB7Ci0gICAgICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xpbnQs
MiwyLDQsMj4ocGFyYW1zLCAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3Jt
SW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA4KTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKLSAgICAgICAgewotICAgICAgICAgICAgdHJhbnNw
b3NlTWF0cml4PEdMaW50LDMsMyw0LDM+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0t
PmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogMTIpOwotICAgICAgICB9
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgotICAgICAgICB7Ci0g
ICAgICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xpbnQsNCw0LDQsND4ocGFyYW1zLCAoR0xmbG9h
dCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQg
KiAxNik7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAg
ICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQgPSBVbmlmb3JtRXh0ZXJuYWxDb21w
b25lbnRDb3VudCh0YXJnZXRVbmlmb3JtLT50eXBlKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBpbnRlcm5hbENvdW50ID0gVW5pZm9ybUludGVybmFsQ29tcG9uZW50Q291bnQodGFyZ2V0VW5p
Zm9ybS0+dHlwZSk7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoVW5pZm9ybUNvbXBvbmVudFR5cGUo
dGFyZ2V0VW5pZm9ybS0+dHlwZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2Ug
R0xfQk9PTDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biAqYm9vbFBhcmFtcyA9IHRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0
aW9uXS5lbGVtZW50ICogaW50ZXJuYWxDb3VudDsKLQotICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IChHTGludClib29sUGFyYW1z
W2ldOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqZmxvYXRQYXJhbXMgPSAoR0xmbG9h
dCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQg
KiBpbnRlcm5hbENvdW50OwotCi0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKEdMaW50KWZsb2F0UGFyYW1zW2ldOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKLSAgICAgICAgICAgICAgICBtZW1jcHkocGFy
YW1zLCB0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVu
dCAqIGludGVybmFsQ291bnQgKiBzaXplb2YoR0xpbnQpLAotICAgICAgICAgICAgICAgICAgICAg
ICBjb3VudCAqIHNpemVvZihHTGludCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgUHJvZ3JhbUJpbmFyeTo6ZGly
dHlBbGxVbmlmb3JtcygpCi17Ci0gICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0gbVVuaWZv
cm1zLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpbmRleCA9IDA7IGluZGV4IDwgbnVt
VW5pZm9ybXM7IGluZGV4KyspCi0gICAgewotICAgICAgICBtVW5pZm9ybXNbaW5kZXhdLT5kaXJ0
eSA9IHRydWU7Ci0gICAgfQotfQotCi0vLyBBcHBsaWVzIGFsbCB0aGUgdW5pZm9ybXMgc2V0IGZv
ciB0aGlzIHByb2dyYW0gb2JqZWN0IHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQotdm9pZCBQcm9n
cmFtQmluYXJ5OjphcHBseVVuaWZvcm1zKCkKLXsKLSAgICBmb3IgKHN0ZDo6dmVjdG9yPFVuaWZv
cm0qPjo6aXRlcmF0b3IgdWIgPSBtVW5pZm9ybXMuYmVnaW4oKSwgdWUgPSBtVW5pZm9ybXMuZW5k
KCk7IHViICE9IHVlOyArK3ViKSB7Ci0gICAgICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSAq
dWI7Ci0KLSAgICAgICAgaWYgKHRhcmdldFVuaWZvcm0tPmRpcnR5KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbnQgYXJyYXlTaXplID0gdGFyZ2V0VW5pZm9ybS0+YXJyYXlTaXplOwotICAgICAg
ICAgICAgR0xmbG9hdCAqZiA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhOwotICAgICAg
ICAgICAgR0xpbnQgKmkgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGE7Ci0gICAgICAgICAg
ICBHTGJvb2xlYW4gKmIgPSAoR0xib29sZWFuKil0YXJnZXRVbmlmb3JtLT5kYXRhOwotCi0gICAg
ICAgICAgICBzd2l0Y2ggKHRhcmdldFVuaWZvcm0tPnR5cGUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfQk9PTDogICAgICAgYXBwbHlVbmlmb3JtbmJ2KHRhcmdldFVuaWZv
cm0sIGFycmF5U2l6ZSwgMSwgYik7ICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0JP
T0xfVkVDMjogIGFwcGx5VW5pZm9ybW5idih0YXJnZXRVbmlmb3JtLCBhcnJheVNpemUsIDIsIGIp
OyAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6ICBhcHBseVVuaWZv
cm1uYnYodGFyZ2V0VW5pZm9ybSwgYXJyYXlTaXplLCAzLCBiKTsgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfQk9PTF9WRUM0OiAgYXBwbHlVbmlmb3JtbmJ2KHRhcmdldFVuaWZvcm0s
IGFycmF5U2l6ZSwgNCwgYik7ICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FU
OgotICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6Ci0gICAgICAgICAgICAgIGNhc2Ug
R0xfRkxPQVRfVkVDMzoKLSAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OgotICAgICAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
TUFUMzoKLSAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiBhcHBseVVuaWZvcm1uZnYo
dGFyZ2V0VW5pZm9ybSwgZik7ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfU0FNUExFUl8yRDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVSX0NVQkU6
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSU5UOiAgICAgICAgYXBwbHlVbmlmb3JtMWl2KHRhcmdl
dFVuaWZvcm0sIGFycmF5U2l6ZSwgaSk7ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNl
IEdMX0lOVF9WRUMyOiAgIGFwcGx5VW5pZm9ybTJpdih0YXJnZXRVbmlmb3JtLCBhcnJheVNpemUs
IGkpOyAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzogICBhcHBs
eVVuaWZvcm0zaXYodGFyZ2V0VW5pZm9ybSwgYXJyYXlTaXplLCBpKTsgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfSU5UX1ZFQzQ6ICAgYXBwbHlVbmlmb3JtNGl2KHRhcmdldFVu
aWZvcm0sIGFycmF5U2l6ZSwgaSk7ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLS8vIENvbXBpbGVzIHRoZSBITFNMIGNvZGUgb2YgdGhlIGF0dGFjaGVkIHNoYWRlcnMgaW50
byBleGVjdXRhYmxlIGJpbmFyaWVzCi1JRDNEMTBCbG9iICpQcm9ncmFtQmluYXJ5Ojpjb21waWxl
VG9CaW5hcnkoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqaGxzbCwgY29uc3QgY2hhciAq
cHJvZmlsZSwgRDNEQ29uc3RhbnRUYWJsZSAqKmNvbnN0YW50VGFibGUpCi17Ci0gICAgaWYgKCFo
bHNsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgSFJFU1VMVCBy
ZXN1bHQgPSBTX09LOwotICAgIFVJTlQgZmxhZ3MgPSAwOwotICAgIHN0ZDo6c3RyaW5nIHNvdXJj
ZVRleHQ7Ci0gICAgaWYgKHBlcmZBY3RpdmUoKSkKLSAgICB7Ci0gICAgICAgIGZsYWdzIHw9IEQz
RENPTVBJTEVfREVCVUc7Ci0jaWZkZWYgTkRFQlVHCi0gICAgICAgIGZsYWdzIHw9IEFOR0xFX0NP
TVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMOwotI2Vsc2UKLSAgICAgICAgZmxhZ3MgfD0gRDNEQ09N
UElMRV9TS0lQX09QVElNSVpBVElPTjsKLSNlbmRpZgotCi0gICAgICAgIHN0ZDo6c3RyaW5nIHNv
dXJjZVBhdGggPSBnZXRUZW1wUGF0aCgpOwotICAgICAgICBzb3VyY2VUZXh0ID0gc3RkOjpzdHJp
bmcoIiNsaW5lIDIgXCIiKSArIHNvdXJjZVBhdGggKyBzdGQ6OnN0cmluZygiXCJcblxuIikgKyBz
dGQ6OnN0cmluZyhobHNsKTsKLSAgICAgICAgd3JpdGVGaWxlKHNvdXJjZVBhdGguY19zdHIoKSwg
c291cmNlVGV4dC5jX3N0cigpLCBzb3VyY2VUZXh0LnNpemUoKSk7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIGZsYWdzIHw9IEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVM
OwotICAgICAgICBzb3VyY2VUZXh0ID0gaGxzbDsKLSAgICB9Ci0KLSAgICAvLyBTb21ldGltZXMg
RDNEQ29tcGlsZSB3aWxsIGZhaWwgd2l0aCB0aGUgZGVmYXVsdCBjb21waWxhdGlvbiBmbGFncyBm
b3IgY29tcGxpY2F0ZWQgc2hhZGVycyB3aGVuIGl0IHdvdWxkIG90aGVyd2lzZSBwYXNzIHdpdGgg
YWx0ZXJuYXRpdmUgb3B0aW9ucy4KLSAgICAvLyBUcnkgdGhlIGRlZmF1bHQgZmxhZ3MgZmlyc3Qg
YW5kIGlmIGNvbXBpbGF0aW9uIGZhaWxzLCB0cnkgc29tZSBhbHRlcm5hdGl2ZXMuIAotICAgIGNv
bnN0IHN0YXRpYyBVSU5UIGV4dHJhRmxhZ3NbXSA9Ci0gICAgewotICAgICAgICAwLAotICAgICAg
ICBEM0RDT01QSUxFX0FWT0lEX0ZMT1dfQ09OVFJPTCwKLSAgICAgICAgRDNEQ09NUElMRV9QUkVG
RVJfRkxPV19DT05UUk9MCi0gICAgfTsKLQotICAgIGNvbnN0IHN0YXRpYyBjaGFyICogY29uc3Qg
ZXh0cmFGbGFnTmFtZXNbXSA9Ci0gICAgewotICAgICAgICAiZGVmYXVsdCIsCi0gICAgICAgICJh
dm9pZCBmbG93IGNvbnRyb2wiLAotICAgICAgICAicHJlZmVyIGZsb3cgY29udHJvbCIKLSAgICB9
OwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoZXh0cmFGbGFncykgLyBzaXplb2Yo
VUlOVCk7ICsraSkKLSAgICB7Ci0gICAgICAgIElEM0QxMEJsb2IgKmVycm9yTWVzc2FnZSA9IE5V
TEw7Ci0gICAgICAgIElEM0QxMEJsb2IgKmJpbmFyeSA9IE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9
IGdldERpc3BsYXkoKS0+Y29tcGlsZVNoYWRlclNvdXJjZShobHNsLCBnX2Zha2VwYXRoLCBwcm9m
aWxlLCBmbGFncyB8IGV4dHJhRmxhZ3NbaV0sICZiaW5hcnksICZlcnJvck1lc3NhZ2UpOwotICAg
ICAgICBpZiAoZXJyb3JNZXNzYWdlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBjaGFy
ICptZXNzYWdlID0gKGNvbnN0IGNoYXIqKWVycm9yTWVzc2FnZS0+R2V0QnVmZmVyUG9pbnRlcigp
OwotCi0gICAgICAgICAgICBpbmZvTG9nLmFwcGVuZFNhbml0aXplZChtZXNzYWdlKTsKLSAgICAg
ICAgICAgIFRSQUNFKCJcbiVzIiwgaGxzbCk7Ci0gICAgICAgICAgICBUUkFDRSgiXG4lcyIsIG1l
c3NhZ2UpOwotCi0gICAgICAgICAgICBlcnJvck1lc3NhZ2UtPlJlbGVhc2UoKTsKLSAgICAgICAg
ICAgIGVycm9yTWVzc2FnZSA9IE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoU1VDQ0VF
REVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEQzRENvbnN0YW50VGFibGUgKnRh
YmxlID0gbmV3IEQzRENvbnN0YW50VGFibGUoYmluYXJ5LT5HZXRCdWZmZXJQb2ludGVyKCksIGJp
bmFyeS0+R2V0QnVmZmVyU2l6ZSgpKTsKLSAgICAgICAgICAgIGlmICh0YWJsZS0+ZXJyb3IoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZWxldGUgdGFibGU7Ci0gICAgICAgICAg
ICAgICAgYmluYXJ5LT5SZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICpjb25zdGFudFRhYmxlID0gdGFibGU7Ci0gICAg
Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9S
WSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgKElEM0QxMEJsb2IqKSBOVUxMKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIldhcm5pbmc6IEQz
RCBzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkIHdpdGggIik7Ci0gICAgICAgICAgICBpbmZvTG9n
LmFwcGVuZChleHRyYUZsYWdOYW1lc1tpXSk7Ci0gICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgi
IGZsYWdzLiIpOwotICAgICAgICAgICAgaWYgKGkgKyAxIDwgc2l6ZW9mKGV4dHJhRmxhZ05hbWVz
KSAvIHNpemVvZihjaGFyKikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW5mb0xv
Zy5hcHBlbmQoIiBSZXRyeWluZyB3aXRoICIpOwotICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBw
ZW5kKGV4dHJhRmxhZ05hbWVzW2kgKyAxXSk7Ci0gICAgICAgICAgICAgICAgaW5mb0xvZy5hcHBl
bmQoIi5cbiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IE5VTEw7Ci19Ci0KLS8vIFBhY2tzIHZhcnlpbmdzIGludG8gZ2VuZXJpYyB2YXJ5aW5nIHJlZ2lz
dGVycywgdXNpbmcgdGhlIGFsZ29yaXRobSBmcm9tIFtPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFn
ZSAxLjAwIHJldi4gMTddIGFwcGVuZGl4IEEgc2VjdGlvbiA3IHBhZ2UgMTExCi0vLyBSZXR1cm5z
IHRoZSBudW1iZXIgb2YgdXNlZCB2YXJ5aW5nIHJlZ2lzdGVycywgb3IgLTEgaWYgdW5zdWNjZXNm
dWwKLWludCBQcm9ncmFtQmluYXJ5OjpwYWNrVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZywgY29u
c3QgVmFyeWluZyAqcGFja2luZ1tdWzRdLCBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIp
Ci17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IGdldENvbnRleHQoKTsKLSAgICBjb25zdCBpbnQg
bWF4VmFyeWluZ1ZlY3RvcnMgPSBjb250ZXh0LT5nZXRNYXhpbXVtVmFyeWluZ1ZlY3RvcnMoKTsK
LQotICAgIGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIHZhcnlpbmcgPSBmcmFnbWVudFNoYWRl
ci0+bVZhcnlpbmdzLmJlZ2luKCk7IHZhcnlpbmcgIT0gZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5n
cy5lbmQoKTsgdmFyeWluZysrKQotICAgIHsKLSAgICAgICAgaW50IG4gPSBWYXJpYWJsZVJvd0Nv
dW50KHZhcnlpbmctPnR5cGUpICogdmFyeWluZy0+c2l6ZTsKLSAgICAgICAgaW50IG0gPSBWYXJp
YWJsZUNvbHVtbkNvdW50KHZhcnlpbmctPnR5cGUpOwotICAgICAgICBib29sIHN1Y2Nlc3MgPSBm
YWxzZTsKLQotICAgICAgICBpZiAobSA9PSAyIHx8IG0gPT0gMyB8fCBtID09IDQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZvciAoaW50IHIgPSAwOyByIDw9IG1heFZhcnlpbmdWZWN0b3JzIC0g
biAmJiAhc3VjY2VzczsgcisrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJvb2wg
YXZhaWxhYmxlID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
biAmJiBhdmFpbGFibGU7IHkrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgbSAmJiBhdmFpbGFibGU7IHgrKykKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhY2tpbmdbciArIHldW3hd
KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF2YWlsYWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGF2
YWlsYWJsZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZhcnlpbmct
PnJlZyA9IHI7Ci0gICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPmNvbCA9IDA7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBuOyB5KyspCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbTsg
eCsrKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhY2tpbmdbciArIHldW3hdID0gJip2YXJ5aW5nOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgc3VjY2Vz
cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MgJiYgbSA9PSAyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGZvciAoaW50IHIgPSBtYXhWYXJ5aW5nVmVjdG9ycyAtIG47IHIgPj0gMCAmJiAhc3VjY2Vzczsg
ci0tKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBhdmFpbGFi
bGUgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbiAm
JiBhdmFpbGFibGU7IHkrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChpbnQgeCA9IDI7IHggPCA0ICYmIGF2YWlsYWJsZTsgeCsrKQotICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWNr
aW5nW3IgKyB5XVt4XSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGUpCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPnJlZyA9IHI7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXJ5aW5nLT5jb2wgPSAyOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG47IHkrKykKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMjsgeCA8
IDQ7IHgrKykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhY2tpbmdbciArIHldW3hdID0gJip2YXJ5aW5nOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAobSA9PSAxKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgc3BhY2VbNF0gPSB7MH07
Ci0KLSAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbWF4VmFyeWluZ1ZlY3RvcnM7IHkr
KykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IDQ7
IHgrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHNwYWNlW3hdICs9
IHBhY2tpbmdbeV1beF0gPyAwIDogMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGludCBjb2x1bW4gPSAwOwotCi0gICAgICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IDQ7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoc3Bh
Y2VbeF0gPj0gbiAmJiBzcGFjZVt4XSA8IHNwYWNlW2NvbHVtbl0pCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSB4OwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHNwYWNlW2NvbHVtbl0gPj0gbikKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCByID0gMDsgciA8IG1heFZhcnlpbmdW
ZWN0b3JzOyByKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAo
IXBhY2tpbmdbcl1bY29sdW1uXSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyeWluZy0+cmVnID0gcjsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgeSA9IHI7IHkgPCByICsgbjsgeSsrKQotICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tpbmdbeV1bY29sdW1uXSA9ICYqdmFy
eWluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICB2YXJ5aW5nLT5jb2wgPSBjb2x1bW47Ci0KLSAgICAgICAgICAgICAgICBz
dWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIFVO
UkVBQ0hBQkxFKCk7Ci0KLSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbmZvTG9nLmFwcGVuZCgiQ291bGQgbm90IHBhY2sgdmFyeWluZyAlcyIsIHZhcnlpbmct
Pm5hbWUuY19zdHIoKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCi0gICAgaW50
IHJlZ2lzdGVycyA9IDA7Ci0KLSAgICBmb3IgKGludCByID0gMDsgciA8IG1heFZhcnlpbmdWZWN0
b3JzOyByKyspCi0gICAgewotICAgICAgICBpZiAocGFja2luZ1tyXVswXSB8fCBwYWNraW5nW3Jd
WzFdIHx8IHBhY2tpbmdbcl1bMl0gfHwgcGFja2luZ1tyXVszXSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmVnaXN0ZXJzKys7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVnaXN0
ZXJzOwotfQotCi1ib29sIFByb2dyYW1CaW5hcnk6OmxpbmtWYXJ5aW5ncyhJbmZvTG9nICZpbmZv
TG9nLCBzdGQ6OnN0cmluZyYgcGl4ZWxITFNMLCBzdGQ6OnN0cmluZyYgdmVydGV4SExTTCwgRnJh
Z21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlcikK
LXsKLSAgICBpZiAocGl4ZWxITFNMLmVtcHR5KCkgfHwgdmVydGV4SExTTC5lbXB0eSgpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFJlc2V0IHRoZSB2YXJ5
aW5nIHJlZ2lzdGVyIGFzc2lnbm1lbnRzCi0gICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3Ig
ZnJhZ1ZhciA9IGZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuYmVnaW4oKTsgZnJhZ1ZhciAhPSBm
cmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmVuZCgpOyBmcmFnVmFyKyspCi0gICAgewotICAgICAg
ICBmcmFnVmFyLT5yZWcgPSAtMTsKLSAgICAgICAgZnJhZ1Zhci0+Y29sID0gLTE7Ci0gICAgfQot
Ci0gICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgdnR4VmFyID0gdmVydGV4U2hhZGVyLT5t
VmFyeWluZ3MuYmVnaW4oKTsgdnR4VmFyICE9IHZlcnRleFNoYWRlci0+bVZhcnlpbmdzLmVuZCgp
OyB2dHhWYXIrKykKLSAgICB7Ci0gICAgICAgIHZ0eFZhci0+cmVnID0gLTE7Ci0gICAgICAgIHZ0
eFZhci0+Y29sID0gLTE7Ci0gICAgfQotCi0gICAgLy8gTWFwIHRoZSB2YXJ5aW5ncyB0byB0aGUg
cmVnaXN0ZXIgZmlsZQotICAgIGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbTUFYX1ZBUllJTkdfVkVD
VE9SU19TTTNdWzRdID0ge05VTEx9OwotICAgIGludCByZWdpc3RlcnMgPSBwYWNrVmFyeWluZ3Mo
aW5mb0xvZywgcGFja2luZywgZnJhZ21lbnRTaGFkZXIpOwotCi0gICAgaWYgKHJlZ2lzdGVycyA8
IDApCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gV3JpdGUg
dGhlIEhMU0wgaW5wdXQvb3V0cHV0IGRlY2xhcmF0aW9ucwotICAgIENvbnRleHQgKmNvbnRleHQg
PSBnZXRDb250ZXh0KCk7Ci0gICAgY29uc3QgYm9vbCBzbTMgPSBjb250ZXh0LT5zdXBwb3J0c1No
YWRlck1vZGVsMygpOwotICAgIGNvbnN0IGludCBtYXhWYXJ5aW5nVmVjdG9ycyA9IGNvbnRleHQt
PmdldE1heGltdW1WYXJ5aW5nVmVjdG9ycygpOwotCi0gICAgaWYgKHJlZ2lzdGVycyA9PSBtYXhW
YXJ5aW5nVmVjdG9ycyAmJiBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQpCi0gICAgewot
ICAgICAgICBpbmZvTG9nLmFwcGVuZCgiTm8gdmFyeWluZyByZWdpc3RlcnMgbGVmdCB0byBzdXBw
b3J0IGdsX0ZyYWdDb29yZCIpOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciBpbnB1dCA9IGZyYWdtZW50U2hhZGVyLT5tVmFy
eWluZ3MuYmVnaW4oKTsgaW5wdXQgIT0gZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5lbmQoKTsg
aW5wdXQrKykKLSAgICB7Ci0gICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwotCi0gICAgICAg
IGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIG91dHB1dCA9IHZlcnRleFNoYWRlci0+bVZhcnlp
bmdzLmJlZ2luKCk7IG91dHB1dCAhPSB2ZXJ0ZXhTaGFkZXItPm1WYXJ5aW5ncy5lbmQoKTsgb3V0
cHV0KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChvdXRwdXQtPm5hbWUgPT0gaW5wdXQt
Pm5hbWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG91dHB1dC0+dHlwZSAh
PSBpbnB1dC0+dHlwZSB8fCBvdXRwdXQtPnNpemUgIT0gaW5wdXQtPnNpemUpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVHlwZSBvZiB2ZXJ0
ZXggdmFyeWluZyAlcyBkb2VzIG5vdCBtYXRjaCB0aGF0IG9mIHRoZSBmcmFnbWVudCB2YXJ5aW5n
Iiwgb3V0cHV0LT5uYW1lLmNfc3RyKCkpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBvdXRwdXQtPnJlZyA9
IGlucHV0LT5yZWc7Ci0gICAgICAgICAgICAgICAgb3V0cHV0LT5jb2wgPSBpbnB1dC0+Y29sOwot
Ci0gICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW1hdGNoZWQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJGcmFnbWVudCB2YXJ5aW5nICVzIGRv
ZXMgbm90IG1hdGNoIGFueSB2ZXJ0ZXggdmFyeWluZyIsIGlucHV0LT5uYW1lLmNfc3RyKCkpOwot
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtVXNl
c1BvaW50U2l6ZSA9IHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNpemU7Ci0gICAgc3RkOjpzdHJp
bmcgdmFyeWluZ1NlbWFudGljID0gKG1Vc2VzUG9pbnRTaXplICYmIHNtMykgPyAiQ09MT1IiIDog
IlRFWENPT1JEIjsKLQotICAgIHZlcnRleEhMU0wgKz0gInN0cnVjdCBWU19JTlBVVFxuIgotICAg
ICAgICAgICAgICAgICAgICJ7XG4iOwotCi0gICAgaW50IHNlbWFudGljSW5kZXggPSAwOwotICAg
IGZvciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+
bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0
ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChhdHRyaWJ1dGUt
PnR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgIHZlcnRleEhM
U0wgKz0gIiAgICBmbG9hdCAiOyAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZF
QzI6IHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDIgIjsgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEdMX0ZMT0FUX1ZFQzM6IHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDMgIjsgICBicmVhazsKLSAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6IHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDQgIjsg
ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6IHZlcnRleEhMU0wgKz0gIiAg
ICBmbG9hdDJ4MiAiOyBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6IHZlcnRl
eEhMU0wgKz0gIiAgICBmbG9hdDN4MyAiOyBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FU
X01BVDQ6IHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDR4NCAiOyBicmVhazsKLSAgICAgICAgICBk
ZWZhdWx0OiAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlcnRleEhMU0wg
Kz0gZGVjb3JhdGVBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKSArICIgOiBURVhDT09SRCIgKyBz
dHIoc2VtYW50aWNJbmRleCkgKyAiO1xuIjsKLQotICAgICAgICBzZW1hbnRpY0luZGV4ICs9IFZh
cmlhYmxlUm93Q291bnQoYXR0cmlidXRlLT50eXBlKTsKLSAgICB9Ci0KLSAgICB2ZXJ0ZXhITFNM
ICs9ICJ9O1xuIgotICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAi
c3RydWN0IFZTX09VVFBVVFxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAg
ICAgICAgICAgIiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBQT1NJVElPTjtcbiI7Ci0KLSAgICBm
b3IgKGludCByID0gMDsgciA8IHJlZ2lzdGVyczsgcisrKQotICAgIHsKLSAgICAgICAgaW50IHJl
Z2lzdGVyU2l6ZSA9IHBhY2tpbmdbcl1bM10gPyA0IDogKHBhY2tpbmdbcl1bMl0gPyAzIDogKHBh
Y2tpbmdbcl1bMV0gPyAyIDogMSkpOwotCi0gICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBmbG9h
dCIgKyBzdHIocmVnaXN0ZXJTaXplKSArICIgdiIgKyBzdHIocikgKyAiIDogIiArIHZhcnlpbmdT
ZW1hbnRpYyArIHN0cihyKSArICI7XG4iOwotICAgIH0KLQotICAgIGlmIChmcmFnbWVudFNoYWRl
ci0+bVVzZXNGcmFnQ29vcmQpCi0gICAgewotICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgICAgZmxv
YXQ0IGdsX0ZyYWdDb29yZCA6ICIgKyB2YXJ5aW5nU2VtYW50aWMgKyBzdHIocmVnaXN0ZXJzKSAr
ICI7XG4iOwotICAgIH0KLQotICAgIGlmICh2ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9pbnRTaXplICYm
IHNtMykKLSAgICB7Ci0gICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdCBnbF9Qb2ludFNp
emUgOiBQU0laRTtcbiI7Ci0gICAgfQotCi0gICAgdmVydGV4SExTTCArPSAifTtcbiIKLSAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgIlZTX09VVFBVVCBtYWluKFZT
X0lOUFVUIGlucHV0KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iOwotCi0gICAgZm9yIChB
dHRyaWJ1dGVBcnJheTo6aXRlcmF0b3IgYXR0cmlidXRlID0gdmVydGV4U2hhZGVyLT5tQXR0cmli
dXRlcy5iZWdpbigpOyBhdHRyaWJ1dGUgIT0gdmVydGV4U2hhZGVyLT5tQXR0cmlidXRlcy5lbmQo
KTsgYXR0cmlidXRlKyspCi0gICAgewotICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgICAgIiArIGRl
Y29yYXRlQXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSkgKyAiID0gIjsKLQotICAgICAgICBpZiAo
VmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpID4gMSkgICAvLyBNYXRyaXgKLSAgICAg
ICAgewotICAgICAgICAgICAgdmVydGV4SExTTCArPSAidHJhbnNwb3NlIjsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZlcnRleEhMU0wgKz0gIihpbnB1dC4iICsgZGVjb3JhdGVBdHRyaWJ1dGUoYXR0
cmlidXRlLT5uYW1lKSArICIpO1xuIjsKLSAgICB9Ci0KLSAgICB2ZXJ0ZXhITFNMICs9ICJcbiIK
LSAgICAgICAgICAgICAgICAgICAiICAgIGdsX21haW4oKTtcbiIKLSAgICAgICAgICAgICAgICAg
ICAiXG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICBWU19PVVRQVVQgb3V0cHV0O1xuIgotICAg
ICAgICAgICAgICAgICAgICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54
IC0gZHhfSGFsZlBpeGVsU2l6ZS54ICogZ2xfUG9zaXRpb24udztcbiIKLSAgICAgICAgICAgICAg
ICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi55ID0gLShnbF9Qb3NpdGlvbi55ICsgZHhfSGFs
ZlBpeGVsU2l6ZS55ICogZ2xfUG9zaXRpb24udyk7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAg
ICBvdXRwdXQuZ2xfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykg
KiAwLjU7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24udyA9
IGdsX1Bvc2l0aW9uLnc7XG4iOwotCi0gICAgaWYgKHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNp
emUgJiYgc20zKQotICAgIHsKLSAgICAgICAgdmVydGV4SExTTCArPSAiICAgIG91dHB1dC5nbF9Q
b2ludFNpemUgPSBnbF9Qb2ludFNpemU7XG4iOwotICAgIH0KLQotICAgIGlmIChmcmFnbWVudFNo
YWRlci0+bVVzZXNGcmFnQ29vcmQpCi0gICAgewotICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgICAg
b3V0cHV0LmdsX0ZyYWdDb29yZCA9IGdsX1Bvc2l0aW9uO1xuIjsKLSAgICB9Ci0KLSAgICBmb3Ig
KFZhcnlpbmdMaXN0OjppdGVyYXRvciB2YXJ5aW5nID0gdmVydGV4U2hhZGVyLT5tVmFyeWluZ3Mu
YmVnaW4oKTsgdmFyeWluZyAhPSB2ZXJ0ZXhTaGFkZXItPm1WYXJ5aW5ncy5lbmQoKTsgdmFyeWlu
ZysrKQotICAgIHsKLSAgICAgICAgaWYgKHZhcnlpbmctPnJlZyA+PSAwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhcnlpbmctPnNpemU7IGkrKykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgcm93cyA9IFZhcmlhYmxlUm93Q291bnQodmFy
eWluZy0+dHlwZSk7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHJvd3M7
IGorKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGludCByID0gdmFy
eWluZy0+cmVnICsgaSAqIHJvd3MgKyBqOwotICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNM
ICs9ICIgICAgb3V0cHV0LnYiICsgc3RyKHIpOwotCi0gICAgICAgICAgICAgICAgICAgIGJvb2wg
c2hhcmVkUmVnaXN0ZXIgPSBmYWxzZTsgICAvLyBSZWdpc3RlciB1c2VkIGJ5IG11bHRpcGxlIHZh
cnlpbmdzCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCB4ID0gMDsgeCA8IDQ7IHgrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhY2tpbmdbcl1beF0gJiYgcGFja2luZ1tyXVt4XSAhPSBwYWNraW5n
W3JdWzBdKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNoYXJlZFJlZ2lzdGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgIGlmKHNoYXJlZFJlZ2lzdGVyKQotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICIuIjsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCA0OyB4KyspCi0gICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBh
Y2tpbmdbcl1beF0gPT0gJip2YXJ5aW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHgpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIDA6IHZlcnRleEhMU0wgKz0gIngiOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIDE6IHZlcnRleEhMU0wgKz0gInkiOyBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHZlcnRleEhMU0wgKz0gInoiOyBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHZlcnRleEhMU0wgKz0g
InciOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHZlcnRleEhMU0wgKz0gIiA9ICIg
KyB2YXJ5aW5nLT5uYW1lOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHZhcnlpbmctPmFycmF5KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICJbIiArIHN0cihpKSArICJdIjsKLSAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChyb3dzID4gMSkKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAi
WyIgKyBzdHIoaikgKyAiXSI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHZlcnRleEhMU0wgKz0gIjtcbiI7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdmVydGV4
SExTTCArPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gb3V0cHV0O1xuIgot
ICAgICAgICAgICAgICAgICAgICJ9XG4iOwotCi0gICAgcGl4ZWxITFNMICs9ICJzdHJ1Y3QgUFNf
SU5QVVRcbiIKLSAgICAgICAgICAgICAgICAgICJ7XG4iOwotICAgIAotICAgIGZvciAoVmFyeWlu
Z0xpc3Q6Oml0ZXJhdG9yIHZhcnlpbmcgPSBmcmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmJlZ2lu
KCk7IHZhcnlpbmcgIT0gZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5lbmQoKTsgdmFyeWluZysr
KQotICAgIHsKLSAgICAgICAgaWYgKHZhcnlpbmctPnJlZyA+PSAwKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhcnlpbmctPnNpemU7IGkrKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgcm93cyA9IFZhcmlhYmxlUm93Q291bnQodmFyeWlu
Zy0+dHlwZSk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByb3dzOyBqKysp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBuID0g
c3RyKHZhcnlpbmctPnJlZyArIGkgKiByb3dzICsgaik7Ci0gICAgICAgICAgICAgICAgICAgIHBp
eGVsSExTTCArPSAiICAgIGZsb2F0NCB2IiArIG4gKyAiIDogIiArIHZhcnlpbmdTZW1hbnRpYyAr
IG4gKyAiO1xuIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIGlmIChmcmFnbWVudFNo
YWRlci0+bVVzZXNGcmFnQ29vcmQpCi0gICAgewotICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBm
bG9hdDQgZ2xfRnJhZ0Nvb3JkIDogIiArIHZhcnlpbmdTZW1hbnRpYyArIHN0cihyZWdpc3RlcnMp
ICsgIjtcbiI7Ci0gICAgICAgIGlmIChzbTMpIHsKLSAgICAgICAgICAgIHBpeGVsSExTTCArPSAi
ICAgIGZsb2F0MiBkeF9WUG9zIDogVlBPUztcbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzUG9pbnRDb29yZCAmJiBzbTMpCi0gICAgewotICAgICAg
ICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdDIgZ2xfUG9pbnRDb29yZCA6IFRFWENPT1JEMDtcbiI7
Ci0gICAgfQotCi0gICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0Zyb250RmFjaW5nKQotICAg
IHsKLSAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZmxvYXQgdkZhY2UgOiBWRkFDRTtcbiI7Ci0g
ICAgfQotCi0gICAgcGl4ZWxITFNMICs9ICJ9O1xuIgotICAgICAgICAgICAgICAgICAgIlxuIgot
ICAgICAgICAgICAgICAgICAgInN0cnVjdCBQU19PVVRQVVRcbiIKLSAgICAgICAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAgICAgICAiICAgIGZsb2F0NCBnbF9Db2xvclsxXSA6IENPTE9S
O1xuIjsKLQotICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnRGVwdGgpCi0gICAgewot
ICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdCBnbF9EZXB0aCA6IERFUFRIO1xuIjsKLSAg
ICB9Ci0KLSAgICBwaXhlbEhMU0wgKz0gICJ9O1xuIgotICAgICAgICAgICAgICAgICAgIlxuIgot
ICAgICAgICAgICAgICAgICAgIlBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KVxuIgotICAg
ICAgICAgICAgICAgICAgIntcbiI7Ci0KLSAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJh
Z0Nvb3JkKQotICAgIHsKLSAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZmxvYXQgcmh3ID0gMS4w
IC8gaW5wdXQuZ2xfRnJhZ0Nvb3JkLnc7XG4iOwotICAgICAgICAKLSAgICAgICAgaWYgKHNtMykK
LSAgICAgICAgewotICAgICAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfRnJhZ0Nvb3JkLngg
PSBpbnB1dC5keF9WUG9zLnggKyAwLjU7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9WUG9zLnkgKyAwLjU7XG4iOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgLy8gZHhfQ29vcmQgY29udGFp
bnMgdGhlIHZpZXdwb3J0IHdpZHRoLzIsIGhlaWdodC8yLCBjZW50ZXIueCBhbmQgY2VudGVyLnku
IFNlZSBDb250ZXh0OjphcHBseVJlbmRlclRhcmdldCgpCi0gICAgICAgICAgICBwaXhlbEhMU0wg
Kz0gIiAgICBnbF9GcmFnQ29vcmQueCA9IChpbnB1dC5nbF9GcmFnQ29vcmQueCAqIHJodykgKiBk
eF9Db29yZC54ICsgZHhfQ29vcmQuejtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICBnbF9GcmFnQ29vcmQueSA9IChpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJodykgKiBkeF9Db29y
ZC55ICsgZHhfQ29vcmQudztcbiI7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHBpeGVs
SExTTCArPSAiICAgIGdsX0ZyYWdDb29yZC56ID0gKGlucHV0LmdsX0ZyYWdDb29yZC56ICogcmh3
KSAqIGR4X0RlcHRoLnggKyBkeF9EZXB0aC55O1xuIgotICAgICAgICAgICAgICAgICAgICAgICIg
ICAgZ2xfRnJhZ0Nvb3JkLncgPSByaHc7XG4iOwotICAgIH0KLQotICAgIGlmIChmcmFnbWVudFNo
YWRlci0+bVVzZXNQb2ludENvb3JkICYmIHNtMykKLSAgICB7Ci0gICAgICAgIHBpeGVsSExTTCAr
PSAiICAgIGdsX1BvaW50Q29vcmQueCA9IGlucHV0LmdsX1BvaW50Q29vcmQueDtcbiI7Ci0gICAg
ICAgIHBpeGVsSExTTCArPSAiICAgIGdsX1BvaW50Q29vcmQueSA9IDEuMCAtIGlucHV0LmdsX1Bv
aW50Q29vcmQueTtcbiI7Ci0gICAgfQotCi0gICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0Zy
b250RmFjaW5nKQotICAgIHsKLSAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfRnJvbnRGYWNp
bmcgPSBkeF9Qb2ludHNPckxpbmVzIHx8IChkeF9Gcm9udENDVyA/IChpbnB1dC52RmFjZSA+PSAw
LjApIDogKGlucHV0LnZGYWNlIDw9IDAuMCkpO1xuIjsKLSAgICB9Ci0KLSAgICBmb3IgKFZhcnlp
bmdMaXN0OjppdGVyYXRvciB2YXJ5aW5nID0gZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5iZWdp
bigpOyB2YXJ5aW5nICE9IGZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcr
KykKLSAgICB7Ci0gICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YXJ5aW5nLT5zaXplOyBpKyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHJvd3MgPSBWYXJpYWJsZVJvd0NvdW50KHZhcnlp
bmctPnR5cGUpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcm93czsgaisr
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbiA9
IHN0cih2YXJ5aW5nLT5yZWcgKyBpICogcm93cyArIGopOwotICAgICAgICAgICAgICAgICAgICBw
aXhlbEhMU0wgKz0gIiAgICAiICsgdmFyeWluZy0+bmFtZTsKLQotICAgICAgICAgICAgICAgICAg
ICBpZiAodmFyeWluZy0+YXJyYXkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBpeGVsSExTTCArPSAiWyIgKyBzdHIoaSkgKyAiXSI7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAocm93cyA+IDEpCi0gICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsSExTTCArPSAiWyIg
KyBzdHIoaikgKyAiXSI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKFZhcmlhYmxlQ29sdW1uQ291bnQodmFyeWluZy0+dHlwZSkpCi0gICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHBpeGVsSExTTCAr
PSAiID0gaW5wdXQudiIgKyBuICsgIi54O1xuIjsgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6IHBpeGVsSExTTCArPSAiID0gaW5wdXQudiIgKyBuICsgIi54eTtcbiI7ICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHBpeGVsSExTTCArPSAiID0gaW5w
dXQudiIgKyBuICsgIi54eXo7XG4iOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNl
IDQ6IHBpeGVsSExTTCArPSAiID0gaW5wdXQudiIgKyBuICsgIjtcbiI7ICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICBwaXhlbEhMU0wgKz0gIlxu
IgotICAgICAgICAgICAgICAgICAgIiAgICBnbF9tYWluKCk7XG4iCi0gICAgICAgICAgICAgICAg
ICAiXG4iCi0gICAgICAgICAgICAgICAgICAiICAgIFBTX09VVFBVVCBvdXRwdXQ7XG4iCi0gICAg
ICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Db2xvclswXSA9IGdsX0NvbG9yWzBdO1xuIjsK
LQotICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnRGVwdGgpCi0gICAgewotICAgICAg
ICBwaXhlbEhMU0wgKz0gIiAgICBvdXRwdXQuZ2xfRGVwdGggPSBnbF9EZXB0aDtcbiI7Ci0gICAg
fQotCi0gICAgcGl4ZWxITFNMICs9ICJcbiIKLSAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IG91dHB1dDtcbiIKLSAgICAgICAgICAgICAgICAgICJ9XG4iOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgUHJvZ3JhbUJpbmFyeTo6bG9hZChJbmZvTG9nICZpbmZvTG9nLCBjb25zdCB2
b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKQotewotICAgIEJpbmFyeUlucHV0U3RyZWFtIHN0
cmVhbShiaW5hcnksIGxlbmd0aCk7Ci0KLSAgICBpbnQgZm9ybWF0ID0gMDsKLSAgICBzdHJlYW0u
cmVhZCgmZm9ybWF0KTsKLSAgICBpZiAoZm9ybWF0ICE9IEdMX1BST0dSQU1fQklOQVJZX0FOR0xF
KQotICAgIHsKLSAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJvZ3JhbSBiaW5hcnkg
Zm9ybWF0LiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaW50IHZlcnNp
b24gPSAwOwotICAgIHN0cmVhbS5yZWFkKCZ2ZXJzaW9uKTsKLSAgICBpZiAodmVyc2lvbiAhPSBW
RVJTSU9OX0RXT1JEKQotICAgIHsKLSAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJv
Z3JhbSBiaW5hcnkgdmVyc2lvbi4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyArK2kpCi0gICAgewot
ICAgICAgICBzdHJlYW0ucmVhZCgmbUxpbmtlZEF0dHJpYnV0ZVtpXS50eXBlKTsKLSAgICAgICAg
c3RkOjpzdHJpbmcgbmFtZTsKLSAgICAgICAgc3RyZWFtLnJlYWQoJm5hbWUpOwotICAgICAgICBt
TGlua2VkQXR0cmlidXRlW2ldLm5hbWUgPSBuYW1lOwotICAgICAgICBzdHJlYW0ucmVhZCgmbVNl
bWFudGljSW5kZXhbaV0pOwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7ICsraSkKLSAgICB7Ci0gICAgICAgIHN0cmVhbS5y
ZWFkKCZtU2FtcGxlcnNQU1tpXS5hY3RpdmUpOwotICAgICAgICBzdHJlYW0ucmVhZCgmbVNhbXBs
ZXJzUFNbaV0ubG9naWNhbFRleHR1cmVVbml0KTsKLSAgICAgICAgCi0gICAgICAgIGludCB0ZXh0
dXJlVHlwZTsKLSAgICAgICAgc3RyZWFtLnJlYWQoJnRleHR1cmVUeXBlKTsKLSAgICAgICAgbVNh
bXBsZXJzUFNbaV0udGV4dHVyZVR5cGUgPSAoVGV4dHVyZVR5cGUpIHRleHR1cmVUeXBlOwotICAg
IH0KLQotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9URVhUVVJF
X0lNQUdFX1VOSVRTX1ZURjsgKytpKQotICAgIHsKLSAgICAgICAgc3RyZWFtLnJlYWQoJm1TYW1w
bGVyc1ZTW2ldLmFjdGl2ZSk7Ci0gICAgICAgIHN0cmVhbS5yZWFkKCZtU2FtcGxlcnNWU1tpXS5s
b2dpY2FsVGV4dHVyZVVuaXQpOwotICAgICAgICAKLSAgICAgICAgaW50IHRleHR1cmVUeXBlOwot
ICAgICAgICBzdHJlYW0ucmVhZCgmdGV4dHVyZVR5cGUpOwotICAgICAgICBtU2FtcGxlcnNWU1tp
XS50ZXh0dXJlVHlwZSA9IChUZXh0dXJlVHlwZSkgdGV4dHVyZVR5cGU7Ci0gICAgfQotCi0gICAg
c3RyZWFtLnJlYWQoJm1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKLSAgICBzdHJlYW0ucmVhZCgm
bVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7Ci0gICAgc3RyZWFtLnJlYWQoJm1Vc2VzUG9pbnRTaXpl
KTsKLQotICAgIHNpemVfdCBzaXplOwotICAgIHN0cmVhbS5yZWFkKCZzaXplKTsKLSAgICBpZiAo
c3RyZWFtLmVycm9yKCkpCi0gICAgewotICAgICAgICBpbmZvTG9nLmFwcGVuZCgiSW52YWxpZCBw
cm9ncmFtIGJpbmFyeS4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG1V
bmlmb3Jtcy5yZXNpemUoc2l6ZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBz
aXplOyArK2kpCi0gICAgewotICAgICAgICBHTGVudW0gdHlwZTsKLSAgICAgICAgc3RkOjpzdHJp
bmcgX25hbWU7Ci0gICAgICAgIHVuc2lnbmVkIGludCBhcnJheVNpemU7Ci0KLSAgICAgICAgc3Ry
ZWFtLnJlYWQoJnR5cGUpOwotICAgICAgICBzdHJlYW0ucmVhZCgmX25hbWUpOwotICAgICAgICBz
dHJlYW0ucmVhZCgmYXJyYXlTaXplKTsKLQotICAgICAgICBtVW5pZm9ybXNbaV0gPSBuZXcgVW5p
Zm9ybSh0eXBlLCBfbmFtZSwgYXJyYXlTaXplKTsKLSAgICAgICAgCi0gICAgICAgIHN0cmVhbS5y
ZWFkKCZtVW5pZm9ybXNbaV0tPnBzLmZsb2F0NEluZGV4KTsKLSAgICAgICAgc3RyZWFtLnJlYWQo
Jm1Vbmlmb3Jtc1tpXS0+cHMuc2FtcGxlckluZGV4KTsKLSAgICAgICAgc3RyZWFtLnJlYWQoJm1V
bmlmb3Jtc1tpXS0+cHMuYm9vbEluZGV4KTsKLSAgICAgICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jt
c1tpXS0+cHMucmVnaXN0ZXJDb3VudCk7Ci0KLSAgICAgICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jt
c1tpXS0+dnMuZmxvYXQ0SW5kZXgpOwotICAgICAgICBzdHJlYW0ucmVhZCgmbVVuaWZvcm1zW2ld
LT52cy5zYW1wbGVySW5kZXgpOwotICAgICAgICBzdHJlYW0ucmVhZCgmbVVuaWZvcm1zW2ldLT52
cy5ib29sSW5kZXgpOwotICAgICAgICBzdHJlYW0ucmVhZCgmbVVuaWZvcm1zW2ldLT52cy5yZWdp
c3RlckNvdW50KTsKLSAgICB9Ci0KLSAgICBzdHJlYW0ucmVhZCgmc2l6ZSk7Ci0gICAgaWYgKHN0
cmVhbS5lcnJvcigpKQotICAgIHsKLSAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJv
Z3JhbSBiaW5hcnkuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtVW5p
Zm9ybUluZGV4LnJlc2l6ZShzaXplKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHNpemU7ICsraSkKLSAgICB7Ci0gICAgICAgIHN0cmVhbS5yZWFkKCZtVW5pZm9ybUluZGV4W2ld
Lm5hbWUpOwotICAgICAgICBzdHJlYW0ucmVhZCgmbVVuaWZvcm1JbmRleFtpXS5lbGVtZW50KTsK
LSAgICAgICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3JtSW5kZXhbaV0uaW5kZXgpOwotICAgIH0KLQot
ICAgIHN0cmVhbS5yZWFkKCZtRHhEZXB0aFJhbmdlTG9jYXRpb24pOwotICAgIHN0cmVhbS5yZWFk
KCZtRHhEZXB0aExvY2F0aW9uKTsKLSAgICBzdHJlYW0ucmVhZCgmbUR4Q29vcmRMb2NhdGlvbik7
Ci0gICAgc3RyZWFtLnJlYWQoJm1EeEhhbGZQaXhlbFNpemVMb2NhdGlvbik7Ci0gICAgc3RyZWFt
LnJlYWQoJm1EeEZyb250Q0NXTG9jYXRpb24pOwotICAgIHN0cmVhbS5yZWFkKCZtRHhQb2ludHNP
ckxpbmVzTG9jYXRpb24pOwotCi0gICAgdW5zaWduZWQgaW50IHBpeGVsU2hhZGVyU2l6ZTsKLSAg
ICBzdHJlYW0ucmVhZCgmcGl4ZWxTaGFkZXJTaXplKTsKLQotICAgIHVuc2lnbmVkIGludCB2ZXJ0
ZXhTaGFkZXJTaXplOwotICAgIHN0cmVhbS5yZWFkKCZ2ZXJ0ZXhTaGFkZXJTaXplKTsKLQotICAg
IGNvbnN0IGNoYXIgKnB0ciA9IChjb25zdCBjaGFyKikgYmluYXJ5ICsgc3RyZWFtLm9mZnNldCgp
OwotCi0gICAgY29uc3QgRDNEQ0FQUzkgKmJpbmFyeUlkZW50aWZpZXIgPSAoY29uc3QgRDNEQ0FQ
UzkqKSBwdHI7Ci0gICAgcHRyICs9IHNpemVvZihHVUlEKTsKLQotICAgIEQzREFEQVBURVJfSURF
TlRJRklFUjkgKmN1cnJlbnRJZGVudGlmaWVyID0gZ2V0RGlzcGxheSgpLT5nZXRBZGFwdGVySWRl
bnRpZmllcigpOwotICAgIGlmIChtZW1jbXAoJmN1cnJlbnRJZGVudGlmaWVyLT5EZXZpY2VJZGVu
dGlmaWVyLCBiaW5hcnlJZGVudGlmaWVyLCBzaXplb2YoR1VJRCkpICE9IDApCi0gICAgewotICAg
ICAgICBpbmZvTG9nLmFwcGVuZCgiSW52YWxpZCBwcm9ncmFtIGJpbmFyeS4iKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIgKnBpeGVsU2hhZGVyRnVuY3Rp
b24gPSBwdHI7Ci0gICAgcHRyICs9IHBpeGVsU2hhZGVyU2l6ZTsKLQotICAgIGNvbnN0IGNoYXIg
KnZlcnRleFNoYWRlckZ1bmN0aW9uID0gcHRyOwotICAgIHB0ciArPSB2ZXJ0ZXhTaGFkZXJTaXpl
OwotCi0gICAgbVBpeGVsRXhlY3V0YWJsZSA9IGdldERpc3BsYXkoKS0+Y3JlYXRlUGl4ZWxTaGFk
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBEV09SRCo+KHBpeGVsU2hhZGVyRnVuY3Rpb24pLCBw
aXhlbFNoYWRlclNpemUpOwotICAgIGlmICghbVBpeGVsRXhlY3V0YWJsZSkKLSAgICB7Ci0gICAg
ICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBub3QgY3JlYXRlIHBpeGVsIHNoYWRlci4iKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gZ2V0
RGlzcGxheSgpLT5jcmVhdGVWZXJ0ZXhTaGFkZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBEV09S
RCo+KHZlcnRleFNoYWRlckZ1bmN0aW9uKSwgdmVydGV4U2hhZGVyU2l6ZSk7Ci0gICAgaWYgKCFt
VmVydGV4RXhlY3V0YWJsZSkKLSAgICB7Ci0gICAgICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBu
b3QgY3JlYXRlIHZlcnRleCBzaGFkZXIuIik7Ci0gICAgICAgIG1QaXhlbEV4ZWN1dGFibGUtPlJl
bGVhc2UoKTsKLSAgICAgICAgbVBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtQmlu
YXJ5OjpzYXZlKHZvaWQqIGJpbmFyeSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgp
Ci17Ci0gICAgQmluYXJ5T3V0cHV0U3RyZWFtIHN0cmVhbTsKLQotICAgIHN0cmVhbS53cml0ZShH
TF9QUk9HUkFNX0JJTkFSWV9BTkdMRSk7Ci0gICAgc3RyZWFtLndyaXRlKFZFUlNJT05fRFdPUkQp
OwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7
ICsraSkKLSAgICB7Ci0gICAgICAgIHN0cmVhbS53cml0ZShtTGlua2VkQXR0cmlidXRlW2ldLnR5
cGUpOwotICAgICAgICBzdHJlYW0ud3JpdGUobUxpbmtlZEF0dHJpYnV0ZVtpXS5uYW1lKTsKLSAg
ICAgICAgc3RyZWFtLndyaXRlKG1TZW1hbnRpY0luZGV4W2ldKTsKLSAgICB9Ci0KLSAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOyArK2kpCi0g
ICAgewotICAgICAgICBzdHJlYW0ud3JpdGUobVNhbXBsZXJzUFNbaV0uYWN0aXZlKTsKLSAgICAg
ICAgc3RyZWFtLndyaXRlKG1TYW1wbGVyc1BTW2ldLmxvZ2ljYWxUZXh0dXJlVW5pdCk7Ci0gICAg
ICAgIHN0cmVhbS53cml0ZSgoaW50KSBtU2FtcGxlcnNQU1tpXS50ZXh0dXJlVHlwZSk7Ci0gICAg
fQotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX1RFWFRVUkVf
SU1BR0VfVU5JVFNfVlRGOyArK2kpCi0gICAgewotICAgICAgICBzdHJlYW0ud3JpdGUobVNhbXBs
ZXJzVlNbaV0uYWN0aXZlKTsKLSAgICAgICAgc3RyZWFtLndyaXRlKG1TYW1wbGVyc1ZTW2ldLmxv
Z2ljYWxUZXh0dXJlVW5pdCk7Ci0gICAgICAgIHN0cmVhbS53cml0ZSgoaW50KSBtU2FtcGxlcnNW
U1tpXS50ZXh0dXJlVHlwZSk7Ci0gICAgfQotCi0gICAgc3RyZWFtLndyaXRlKG1Vc2VkVmVydGV4
U2FtcGxlclJhbmdlKTsKLSAgICBzdHJlYW0ud3JpdGUobVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7
Ci0gICAgc3RyZWFtLndyaXRlKG1Vc2VzUG9pbnRTaXplKTsKLQotICAgIHN0cmVhbS53cml0ZSht
VW5pZm9ybXMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1Vbmlm
b3Jtcy5zaXplKCk7ICsraSkKLSAgICB7Ci0gICAgICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybXNb
aV0tPnR5cGUpOwotICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT5fbmFtZSk7Ci0g
ICAgICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybXNbaV0tPmFycmF5U2l6ZSk7Ci0KLSAgICAgICAg
c3RyZWFtLndyaXRlKG1Vbmlmb3Jtc1tpXS0+cHMuZmxvYXQ0SW5kZXgpOwotICAgICAgICBzdHJl
YW0ud3JpdGUobVVuaWZvcm1zW2ldLT5wcy5zYW1wbGVySW5kZXgpOwotICAgICAgICBzdHJlYW0u
d3JpdGUobVVuaWZvcm1zW2ldLT5wcy5ib29sSW5kZXgpOwotICAgICAgICBzdHJlYW0ud3JpdGUo
bVVuaWZvcm1zW2ldLT5wcy5yZWdpc3RlckNvdW50KTsKLQotICAgICAgICBzdHJlYW0ud3JpdGUo
bVVuaWZvcm1zW2ldLT52cy5mbG9hdDRJbmRleCk7Ci0gICAgICAgIHN0cmVhbS53cml0ZShtVW5p
Zm9ybXNbaV0tPnZzLnNhbXBsZXJJbmRleCk7Ci0gICAgICAgIHN0cmVhbS53cml0ZShtVW5pZm9y
bXNbaV0tPnZzLmJvb2xJbmRleCk7Ci0gICAgICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybXNbaV0t
PnZzLnJlZ2lzdGVyQ291bnQpOwotICAgIH0KLQotICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybUlu
ZGV4LnNpemUoKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtVW5pZm9ybUlu
ZGV4LnNpemUoKTsgKytpKQotICAgIHsKLSAgICAgICAgc3RyZWFtLndyaXRlKG1Vbmlmb3JtSW5k
ZXhbaV0ubmFtZSk7Ci0gICAgICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybUluZGV4W2ldLmVsZW1l
bnQpOwotICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1JbmRleFtpXS5pbmRleCk7Ci0gICAg
fQotCi0gICAgc3RyZWFtLndyaXRlKG1EeERlcHRoUmFuZ2VMb2NhdGlvbik7Ci0gICAgc3RyZWFt
LndyaXRlKG1EeERlcHRoTG9jYXRpb24pOwotICAgIHN0cmVhbS53cml0ZShtRHhDb29yZExvY2F0
aW9uKTsKLSAgICBzdHJlYW0ud3JpdGUobUR4SGFsZlBpeGVsU2l6ZUxvY2F0aW9uKTsKLSAgICBz
dHJlYW0ud3JpdGUobUR4RnJvbnRDQ1dMb2NhdGlvbik7Ci0gICAgc3RyZWFtLndyaXRlKG1EeFBv
aW50c09yTGluZXNMb2NhdGlvbik7Ci0KLSAgICBVSU5UIHBpeGVsU2hhZGVyU2l6ZTsKLSAgICBI
UkVTVUxUIHJlc3VsdCA9IG1QaXhlbEV4ZWN1dGFibGUtPkdldEZ1bmN0aW9uKE5VTEwsICZwaXhl
bFNoYWRlclNpemUpOwotICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0gICAgc3RyZWFt
LndyaXRlKHBpeGVsU2hhZGVyU2l6ZSk7Ci0KLSAgICBVSU5UIHZlcnRleFNoYWRlclNpemU7Ci0g
ICAgcmVzdWx0ID0gbVZlcnRleEV4ZWN1dGFibGUtPkdldEZ1bmN0aW9uKE5VTEwsICZ2ZXJ0ZXhT
aGFkZXJTaXplKTsKLSAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgIHN0cmVhbS53
cml0ZSh2ZXJ0ZXhTaGFkZXJTaXplKTsKLQotICAgIEQzREFEQVBURVJfSURFTlRJRklFUjkgKmlk
ZW50aWZpZXIgPSBnZXREaXNwbGF5KCktPmdldEFkYXB0ZXJJZGVudGlmaWVyKCk7Ci0KLSAgICBH
THNpemVpIHN0cmVhbUxlbmd0aCA9IHN0cmVhbS5sZW5ndGgoKTsKLSAgICBjb25zdCB2b2lkICpz
dHJlYW1EYXRhID0gc3RyZWFtLmRhdGEoKTsKLQotICAgIEdMc2l6ZWkgdG90YWxMZW5ndGggPSBz
dHJlYW1MZW5ndGggKyBzaXplb2YoR1VJRCkgKyBwaXhlbFNoYWRlclNpemUgKyB2ZXJ0ZXhTaGFk
ZXJTaXplOwotICAgIGlmICh0b3RhbExlbmd0aCA+IGJ1ZlNpemUpCi0gICAgewotICAgICAgICBp
ZiAobGVuZ3RoKQotICAgICAgICB7Ci0gICAgICAgICAgICAqbGVuZ3RoID0gMDsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoYmluYXJ5KQotICAg
IHsKLSAgICAgICAgY2hhciAqcHRyID0gKGNoYXIqKSBiaW5hcnk7Ci0KLSAgICAgICAgbWVtY3B5
KHB0ciwgc3RyZWFtRGF0YSwgc3RyZWFtTGVuZ3RoKTsKLSAgICAgICAgcHRyICs9IHN0cmVhbUxl
bmd0aDsKLQotICAgICAgICBtZW1jcHkocHRyLCAmaWRlbnRpZmllci0+RGV2aWNlSWRlbnRpZmll
ciwgc2l6ZW9mKEdVSUQpKTsKLSAgICAgICAgcHRyICs9IHNpemVvZihHVUlEKTsKLQotICAgICAg
ICByZXN1bHQgPSBtUGl4ZWxFeGVjdXRhYmxlLT5HZXRGdW5jdGlvbihwdHIsICZwaXhlbFNoYWRl
clNpemUpOwotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgICAgICBwdHIg
Kz0gcGl4ZWxTaGFkZXJTaXplOwotCi0gICAgICAgIHJlc3VsdCA9IG1WZXJ0ZXhFeGVjdXRhYmxl
LT5HZXRGdW5jdGlvbihwdHIsICZ2ZXJ0ZXhTaGFkZXJTaXplKTsKLSAgICAgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKLSAgICAgICAgcHRyICs9IHZlcnRleFNoYWRlclNpemU7Ci0KLSAg
ICAgICAgQVNTRVJUKHB0ciAtIHRvdGFsTGVuZ3RoID09IGJpbmFyeSk7Ci0gICAgfQotCi0gICAg
aWYgKGxlbmd0aCkKLSAgICB7Ci0gICAgICAgICpsZW5ndGggPSB0b3RhbExlbmd0aDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0TGVuZ3Ro
KCkKLXsKLSAgICBHTGludCBsZW5ndGg7Ci0gICAgaWYgKHNhdmUoTlVMTCwgSU5UX01BWCwgJmxl
bmd0aCkpCi0gICAgewotICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLWJvb2wgUHJvZ3JhbUJpbmFyeTo6
bGluayhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5kaW5ncyAmYXR0cmlidXRl
QmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2
ZXJ0ZXhTaGFkZXIpCi17Ci0gICAgaWYgKCFmcmFnbWVudFNoYWRlciB8fCAhZnJhZ21lbnRTaGFk
ZXItPmlzQ29tcGlsZWQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAoIXZlcnRleFNoYWRlciB8fCAhdmVydGV4U2hhZGVyLT5pc0NvbXBpbGVkKCkpCi0g
ICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgcGl4
ZWxITFNMID0gZnJhZ21lbnRTaGFkZXItPmdldEhMU0woKTsKLSAgICBzdGQ6OnN0cmluZyB2ZXJ0
ZXhITFNMID0gdmVydGV4U2hhZGVyLT5nZXRITFNMKCk7Ci0KLSAgICBpZiAoIWxpbmtWYXJ5aW5n
cyhpbmZvTG9nLCBwaXhlbEhMU0wsIHZlcnRleEhMU0wsIGZyYWdtZW50U2hhZGVyLCB2ZXJ0ZXhT
aGFkZXIpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIENvbnRl
eHQgKmNvbnRleHQgPSBnZXRDb250ZXh0KCk7Ci0gICAgY29uc3QgY2hhciAqdmVydGV4UHJvZmls
ZSA9IGNvbnRleHQtPnN1cHBvcnRzU2hhZGVyTW9kZWwzKCkgPyAidnNfM18wIiA6ICJ2c18yXzAi
OwotICAgIGNvbnN0IGNoYXIgKnBpeGVsUHJvZmlsZSA9IGNvbnRleHQtPnN1cHBvcnRzU2hhZGVy
TW9kZWwzKCkgPyAicHNfM18wIiA6ICJwc18yXzAiOwotCi0gICAgSUQzRDEwQmxvYiAqdmVydGV4
QmluYXJ5ID0gY29tcGlsZVRvQmluYXJ5KGluZm9Mb2csIHZlcnRleEhMU0wuY19zdHIoKSwgdmVy
dGV4UHJvZmlsZSwgJm1Db25zdGFudFRhYmxlVlMpOwotICAgIElEM0QxMEJsb2IgKnBpeGVsQmlu
YXJ5ID0gY29tcGlsZVRvQmluYXJ5KGluZm9Mb2csIHBpeGVsSExTTC5jX3N0cigpLCBwaXhlbFBy
b2ZpbGUsICZtQ29uc3RhbnRUYWJsZVBTKTsKLQotICAgIGlmICh2ZXJ0ZXhCaW5hcnkgJiYgcGl4
ZWxCaW5hcnkpCi0gICAgewotICAgICAgICBtVmVydGV4RXhlY3V0YWJsZSA9IGdldERpc3BsYXko
KS0+Y3JlYXRlVmVydGV4U2hhZGVyKChEV09SRCopdmVydGV4QmluYXJ5LT5HZXRCdWZmZXJQb2lu
dGVyKCksIHZlcnRleEJpbmFyeS0+R2V0QnVmZmVyU2l6ZSgpKTsKLSAgICAgICAgaWYgKCFtVmVy
dGV4RXhlY3V0YWJsZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09V
VF9PRl9NRU1PUlksIGZhbHNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1QaXhlbEV4ZWN1dGFi
bGUgPSBnZXREaXNwbGF5KCktPmNyZWF0ZVBpeGVsU2hhZGVyKChEV09SRCopcGl4ZWxCaW5hcnkt
PkdldEJ1ZmZlclBvaW50ZXIoKSwgcGl4ZWxCaW5hcnktPkdldEJ1ZmZlclNpemUoKSk7Ci0gICAg
ICAgIGlmICghbVBpeGVsRXhlY3V0YWJsZSkKLSAgICAgICAgewotICAgICAgICAgICAgbVZlcnRl
eEV4ZWN1dGFibGUtPlJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0g
TlVMTDsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2ZXJ0ZXhCaW5hcnktPlJlbGVhc2UoKTsKLSAgICAgICAg
cGl4ZWxCaW5hcnktPlJlbGVhc2UoKTsKLSAgICAgICAgdmVydGV4QmluYXJ5ID0gTlVMTDsKLSAg
ICAgICAgcGl4ZWxCaW5hcnkgPSBOVUxMOwotCi0gICAgICAgIGlmICghbGlua0F0dHJpYnV0ZXMo
aW5mb0xvZywgYXR0cmlidXRlQmluZGluZ3MsIGZyYWdtZW50U2hhZGVyLCB2ZXJ0ZXhTaGFkZXIp
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIWxpbmtVbmlmb3JtcyhpbmZvTG9nLCBHTF9GUkFHTUVOVF9TSEFERVIsIG1Db25z
dGFudFRhYmxlUFMpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIWxpbmtVbmlmb3JtcyhpbmZvTG9nLCBHTF9WRVJURVhfU0hB
REVSLCBtQ29uc3RhbnRUYWJsZVZTKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gdGhlc2UgdW5pZm9ybXMgYXJlIHNlYXJjaGVk
IGFzIGFscmVhZHktZGVjb3JhdGVkIGJlY2F1c2UgZ2xfIGFuZCBkeF8KLSAgICAgICAgLy8gYXJl
IHJlc2VydmVkIHByZWZpeGVzLCBhbmQgZG8gbm90IHJlY2VpdmUgYWRkaXRpb25hbCBkZWNvcmF0
aW9uCi0gICAgICAgIG1EeERlcHRoUmFuZ2VMb2NhdGlvbiA9IGdldFVuaWZvcm1Mb2NhdGlvbigi
ZHhfRGVwdGhSYW5nZSIpOwotICAgICAgICBtRHhEZXB0aExvY2F0aW9uID0gZ2V0VW5pZm9ybUxv
Y2F0aW9uKCJkeF9EZXB0aCIpOwotICAgICAgICBtRHhDb29yZExvY2F0aW9uID0gZ2V0VW5pZm9y
bUxvY2F0aW9uKCJkeF9Db29yZCIpOwotICAgICAgICBtRHhIYWxmUGl4ZWxTaXplTG9jYXRpb24g
PSBnZXRVbmlmb3JtTG9jYXRpb24oImR4X0hhbGZQaXhlbFNpemUiKTsKLSAgICAgICAgbUR4RnJv
bnRDQ1dMb2NhdGlvbiA9IGdldFVuaWZvcm1Mb2NhdGlvbigiZHhfRnJvbnRDQ1ciKTsKLSAgICAg
ICAgbUR4UG9pbnRzT3JMaW5lc0xvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJkeF9Qb2lu
dHNPckxpbmVzIik7Ci0KLSAgICAgICAgY29udGV4dC0+bWFya0R4VW5pZm9ybXNEaXJ0eSgpOwot
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
Ly8gRGV0ZXJtaW5lcyB0aGUgbWFwcGluZyBiZXR3ZWVuIEdMIGF0dHJpYnV0ZXMgYW5kIERpcmVj
dDNEIDkgdmVydGV4IHN0cmVhbSB1c2FnZSBpbmRpY2VzCi1ib29sIFByb2dyYW1CaW5hcnk6Omxp
bmtBdHRyaWJ1dGVzKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IEF0dHJpYnV0ZUJpbmRpbmdzICZh
dHRyaWJ1dGVCaW5kaW5ncywgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhT
aGFkZXIgKnZlcnRleFNoYWRlcikKLXsKLSAgICB1bnNpZ25lZCBpbnQgdXNlZExvY2F0aW9ucyA9
IDA7Ci0KLSAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGEgYmluZGluZyBsb2NhdGlv
bgotICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNo
YWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0
dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQotICAgIHsKLSAgICAgICAgaW50IGxvY2F0aW9u
ID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmlidXRlQmluZGluZyhhdHRyaWJ1dGUtPm5hbWUp
OwotCi0gICAgICAgIGlmIChsb2NhdGlvbiAhPSAtMSkgICAvLyBTZXQgYnkgZ2xCaW5kQXR0cmli
TG9jYXRpb24KLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtTGlua2VkQXR0cmlidXRlW2xv
Y2F0aW9uXS5uYW1lLmVtcHR5KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8g
TXVsdGlwbGUgYWN0aXZlIGF0dHJpYnV0ZXMgYm91bmQgdG8gdGhlIHNhbWUgbG9jYXRpb247IG5v
dCBhbiBlcnJvcgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtTGlua2VkQXR0cmlidXRl
W2xvY2F0aW9uXSA9ICphdHRyaWJ1dGU7Ci0KLSAgICAgICAgICAgIGludCByb3dzID0gVmFyaWFi
bGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpOwotCi0gICAgICAgICAgICBpZiAocm93cyArIGxv
Y2F0aW9uID4gTUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGluZm9Mb2cuYXBwZW5kKCJBY3RpdmUgYXR0cmlidXRlICglcykgYXQgbG9jYXRpb24gJWQg
aXMgdG9vIGJpZyB0byBmaXQiLCBhdHRyaWJ1dGUtPm5hbWUuY19zdHIoKSwgbG9jYXRpb24pOwot
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICB1c2VkTG9jYXRpb25zIHw9IDEgPDwgKGxvY2F0aW9uICsgaSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBk
b24ndCBoYXZlIGEgYmluZGluZyBsb2NhdGlvbgotICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0
ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0
cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQot
ICAgIHsKLSAgICAgICAgaW50IGxvY2F0aW9uID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmli
dXRlQmluZGluZyhhdHRyaWJ1dGUtPm5hbWUpOwotCi0gICAgICAgIGlmIChsb2NhdGlvbiA9PSAt
MSkgICAvLyBOb3Qgc2V0IGJ5IGdsQmluZEF0dHJpYkxvY2F0aW9uCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGludCByb3dzID0gVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpOwotICAg
ICAgICAgICAgaW50IGF2YWlsYWJsZUluZGV4ID0gQWxsb2NhdGVGaXJzdEZyZWVCaXRzKCZ1c2Vk
TG9jYXRpb25zLCByb3dzLCBNQVhfVkVSVEVYX0FUVFJJQlMpOwotCi0gICAgICAgICAgICBpZiAo
YXZhaWxhYmxlSW5kZXggPT0gLTEgfHwgYXZhaWxhYmxlSW5kZXggKyByb3dzID4gTUFYX1ZFUlRF
WF9BVFRSSUJTKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5k
KCJUb28gbWFueSBhY3RpdmUgYXR0cmlidXRlcyAoJXMpIiwgYXR0cmlidXRlLT5uYW1lLmNfc3Ry
KCkpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIEZhaWwgdG8gbGluawot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtTGlua2VkQXR0cmlidXRlW2F2YWlsYWJsZUlu
ZGV4XSA9ICphdHRyaWJ1dGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGludCBhdHRy
aWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyApCi0g
ICAgewotICAgICAgICBpbnQgaW5kZXggPSB2ZXJ0ZXhTaGFkZXItPmdldFNlbWFudGljSW5kZXgo
bUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0ubmFtZSk7Ci0gICAgICAgIGludCByb3dz
ID0gc3RkOjptYXgoVmFyaWFibGVSb3dDb3VudChtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUlu
ZGV4XS50eXBlKSwgMSk7Ci0KLSAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPCByb3dzOyByKysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0ZUluZGV4Kytd
ID0gaW5kZXgrKzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIFByb2dyYW1CaW5hcnk6OmxpbmtVbmlmb3JtcyhJbmZvTG9nICZpbmZvTG9nLCBHTGVudW0g
c2hhZGVyLCBEM0RDb25zdGFudFRhYmxlICpjb25zdGFudFRhYmxlKQotewotICAgIGZvciAodW5z
aWduZWQgaW50IGNvbnN0YW50SW5kZXggPSAwOyBjb25zdGFudEluZGV4IDwgY29uc3RhbnRUYWJs
ZS0+Y29uc3RhbnRzKCk7IGNvbnN0YW50SW5kZXgrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IEQz
RENvbnN0YW50ICpjb25zdGFudCA9IGNvbnN0YW50VGFibGUtPmdldENvbnN0YW50KGNvbnN0YW50
SW5kZXgpOwotCi0gICAgICAgIGlmICghZGVmaW5lVW5pZm9ybShpbmZvTG9nLCBzaGFkZXIsIGNv
bnN0YW50KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIEFkZHMgdGhlIGRlc2NyaXB0aW9u
IG9mIGEgY29uc3RhbnQgZm91bmQgaW4gdGhlIGJpbmFyeSBzaGFkZXIgdG8gdGhlIGxpc3Qgb2Yg
dW5pZm9ybXMKLS8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNmdWwgKHVuaWZvcm0gbm90IGFscmVh
ZHkgZGVmaW5lZCkKLWJvb2wgUHJvZ3JhbUJpbmFyeTo6ZGVmaW5lVW5pZm9ybShJbmZvTG9nICZp
bmZvTG9nLCBHTGVudW0gc2hhZGVyLCBjb25zdCBEM0RDb25zdGFudCAqY29uc3RhbnQsIHN0ZDo6
c3RyaW5nIG5hbWUpCi17Ci0gICAgaWYgKGNvbnN0YW50LT5yZWdpc3RlclNldCA9PSBEM0RDb25z
dGFudDo6UlNfU0FNUExFUikKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgY29uc3RhbnQtPnJlZ2lzdGVyQ291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29uc3QgRDNEQ29uc3RhbnQgKnBzQ29uc3RhbnQgPSBtQ29uc3RhbnRUYWJsZVBTLT5nZXRD
b25zdGFudEJ5TmFtZShjb25zdGFudC0+bmFtZS5jX3N0cigpKTsKLSAgICAgICAgICAgIGNvbnN0
IEQzRENvbnN0YW50ICp2c0NvbnN0YW50ID0gbUNvbnN0YW50VGFibGVWUy0+Z2V0Q29uc3RhbnRC
eU5hbWUoY29uc3RhbnQtPm5hbWUuY19zdHIoKSk7Ci0KLSAgICAgICAgICAgIGlmIChwc0NvbnN0
YW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVy
SW5kZXggPSBwc0NvbnN0YW50LT5yZWdpc3RlckluZGV4ICsgaTsKLQotICAgICAgICAgICAgICAg
IGlmIChzYW1wbGVySW5kZXggPCBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUykKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0uYWN0
aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4
XS50ZXh0dXJlVHlwZSA9IChjb25zdGFudC0+dHlwZSA9PSBEM0RDb25zdGFudDo6UFRfU0FNUExF
UkNVQkUpID8gVEVYVFVSRV9DVUJFIDogVEVYVFVSRV8yRDsKLSAgICAgICAgICAgICAgICAgICAg
bVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQgPSAwOwotICAgICAg
ICAgICAgICAgICAgICBtVXNlZFBpeGVsU2FtcGxlclJhbmdlID0gc3RkOjptYXgoc2FtcGxlcklu
ZGV4ICsgMSwgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGluZm9Mb2cuYXBwZW5kKCJQaXhlbCBzaGFkZXIgc2FtcGxlciBjb3VudCBleGNlZWRzIE1BWF9U
RVhUVVJFX0lNQUdFX1VOSVRTICglZCkuIiwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodnNDb25zdGFudCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gdnND
b25zdGFudC0+cmVnaXN0ZXJJbmRleCArIGk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc2FtcGxl
ckluZGV4IDwgZ2V0Q29udGV4dCgpLT5nZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHMo
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1ZTW3Nh
bXBsZXJJbmRleF0uYWN0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJz
VlNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZSA9IChjb25zdGFudC0+dHlwZSA9PSBEM0RDb25z
dGFudDo6UFRfU0FNUExFUkNVQkUpID8gVEVYVFVSRV9DVUJFIDogVEVYVFVSRV8yRDsKLSAgICAg
ICAgICAgICAgICAgICAgbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVu
aXQgPSAwOwotICAgICAgICAgICAgICAgICAgICBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSA9IHN0
ZDo6bWF4KHNhbXBsZXJJbmRleCArIDEsIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIlZlcnRleCBzaGFkZXIgc2FtcGxlciBj
b3VudCBleGNlZWRzIE1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyAoJWQpLiIsIGdldENv
bnRleHQoKS0+Z2V0TWF4aW11bVZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCkpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoKGNvbnN0YW50LT50eXBlQ2xhc3MpCi0g
ICAgewotICAgICAgY2FzZSBEM0RDb25zdGFudDo6Q0xBU1NfU1RSVUNUOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBhcnJheUluZGV4ID0gMDsgYXJyYXlJbmRleCA8
IGNvbnN0YW50LT5lbGVtZW50czsgYXJyYXlJbmRleCsrKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGZpZWxkID0gMDsgZmllbGQgPCBjb25zdGFudC0+
c3RydWN0TWVtYmVyc1thcnJheUluZGV4XS5zaXplKCk7IGZpZWxkKyspCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBEM0RDb25zdGFudCAqZmllbGRDb25zdGFu
dCA9IGNvbnN0YW50LT5zdHJ1Y3RNZW1iZXJzW2FycmF5SW5kZXhdW2ZpZWxkXTsKLQotICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBzdHJ1Y3RJbmRleCA9IChjb25zdGFudC0+ZWxlbWVu
dHMgPiAxKSA/ICgiWyIgKyBzdHIoYXJyYXlJbmRleCkgKyAiXSIpIDogIiI7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFkZWZpbmVVbmlmb3JtKGluZm9Mb2csIHNoYWRlciwgZmllbGRDb25z
dGFudCwgbmFtZSArIGNvbnN0YW50LT5uYW1lICsgc3RydWN0SW5kZXggKyAiLiIpKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICBjYXNlIEQzRENvbnN0
YW50OjpDTEFTU19TQ0FMQVI6Ci0gICAgICBjYXNlIEQzRENvbnN0YW50OjpDTEFTU19WRUNUT1I6
Ci0gICAgICBjYXNlIEQzRENvbnN0YW50OjpDTEFTU19NQVRSSVhfQ09MVU1OUzoKLSAgICAgIGNh
c2UgRDNEQ29uc3RhbnQ6OkNMQVNTX09CSkVDVDoKLSAgICAgICAgcmV0dXJuIGRlZmluZVVuaWZv
cm0oc2hhZGVyLCBjb25zdGFudCwgbmFtZSArIGNvbnN0YW50LT5uYW1lKTsKLSAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci19Ci0KLWJvb2wgUHJvZ3JhbUJpbmFyeTo6ZGVmaW5lVW5pZm9ybShHTGVudW0gc2hhZGVyLCBj
b25zdCBEM0RDb25zdGFudCAqY29uc3RhbnQsIGNvbnN0IHN0ZDo6c3RyaW5nICZfbmFtZSkKLXsK
LSAgICBVbmlmb3JtICp1bmlmb3JtID0gY3JlYXRlVW5pZm9ybShjb25zdGFudCwgX25hbWUpOwot
Ci0gICAgaWYoIXVuaWZvcm0pCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBkZWZpbmVkCi0gICAgR0xpbnQgbG9jYXRpb24gPSBn
ZXRVbmlmb3JtTG9jYXRpb24odW5pZm9ybS0+bmFtZSk7Ci0gICAgR0xlbnVtIHR5cGUgPSB1bmlm
b3JtLT50eXBlOwotCi0gICAgaWYgKGxvY2F0aW9uID49IDApCi0gICAgewotICAgICAgICBkZWxl
dGUgdW5pZm9ybTsKLSAgICAgICAgdW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xv
Y2F0aW9uXS5pbmRleF07Ci0gICAgfQotCi0gICAgaWYgKHNoYWRlciA9PSBHTF9GUkFHTUVOVF9T
SEFERVIpIHVuaWZvcm0tPnBzLnNldChjb25zdGFudCk7Ci0gICAgaWYgKHNoYWRlciA9PSBHTF9W
RVJURVhfU0hBREVSKSAgIHVuaWZvcm0tPnZzLnNldChjb25zdGFudCk7Ci0KLSAgICBpZiAobG9j
YXRpb24gPj0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bmlmb3JtLT50eXBlID09IHR5cGU7
Ci0gICAgfQotCi0gICAgbVVuaWZvcm1zLnB1c2hfYmFjayh1bmlmb3JtKTsKLSAgICB1bnNpZ25l
ZCBpbnQgdW5pZm9ybUluZGV4ID0gbVVuaWZvcm1zLnNpemUoKSAtIDE7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHVuaWZvcm0tPmFycmF5U2l6ZTsgKytpKQotICAgIHsKLSAg
ICAgICAgbVVuaWZvcm1JbmRleC5wdXNoX2JhY2soVW5pZm9ybUxvY2F0aW9uKF9uYW1lLCBpLCB1
bmlmb3JtSW5kZXgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotVW5pZm9ybSAq
UHJvZ3JhbUJpbmFyeTo6Y3JlYXRlVW5pZm9ybShjb25zdCBEM0RDb25zdGFudCAqY29uc3RhbnQs
IGNvbnN0IHN0ZDo6c3RyaW5nICZfbmFtZSkKLXsKLSAgICBpZiAoY29uc3RhbnQtPnJvd3MgPT0g
MSkgICAvLyBWZWN0b3JzIGFuZCBzY2FsYXJzCi0gICAgewotICAgICAgICBzd2l0Y2ggKGNvbnN0
YW50LT50eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBEM0RDb25zdGFudDo6UFRfU0FN
UExFUjJEOgotICAgICAgICAgICAgc3dpdGNoIChjb25zdGFudC0+Y29sdW1ucykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfU0FNUExF
Ul8yRCwgX25hbWUsIGNvbnN0YW50LT5lbGVtZW50cyk7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6
IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIEQzRENvbnN0YW50OjpQVF9TQU1QTEVSQ1VCRToKLSAgICAgICAgICAgIHN3aXRj
aCAoY29uc3RhbnQtPmNvbHVtbnMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2Ug
MTogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX1NBTVBMRVJfQ1VCRSwgX25hbWUsIGNvbnN0YW50LT5l
bGVtZW50cyk7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEQzRENvbnN0YW50OjpQ
VF9CT09MOgotICAgICAgICAgICAgc3dpdGNoIChjb25zdGFudC0+Y29sdW1ucykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfQk9PTCwg
X25hbWUsIGNvbnN0YW50LT5lbGVtZW50cyk7Ci0gICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJu
IG5ldyBVbmlmb3JtKEdMX0JPT0xfVkVDMiwgX25hbWUsIGNvbnN0YW50LT5lbGVtZW50cyk7Ci0g
ICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX0JPT0xfVkVDMywgX25h
bWUsIGNvbnN0YW50LT5lbGVtZW50cyk7Ci0gICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5l
dyBVbmlmb3JtKEdMX0JPT0xfVkVDNCwgX25hbWUsIGNvbnN0YW50LT5lbGVtZW50cyk7Ci0gICAg
ICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEQzRENvbnN0YW50OjpQVF9JTlQ6Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGNvbnN0YW50LT5jb2x1bW5zKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICBjYXNlIDE6IHJldHVybiBuZXcgVW5pZm9ybShHTF9JTlQsIF9uYW1lLCBjb25zdGFudC0+
ZWxlbWVudHMpOwotICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgVW5pZm9ybShHTF9J
TlRfVkVDMiwgX25hbWUsIGNvbnN0YW50LT5lbGVtZW50cyk7Ci0gICAgICAgICAgICAgIGNhc2Ug
MzogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX0lOVF9WRUMzLCBfbmFtZSwgY29uc3RhbnQtPmVsZW1l
bnRzKTsKLSAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfSU5UX1ZF
QzQsIF9uYW1lLCBjb25zdGFudC0+ZWxlbWVudHMpOwotICAgICAgICAgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBEM0RDb25zdGFudDo6UFRfRkxPQVQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKGNvbnN0
YW50LT5jb2x1bW5zKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIDE6IHJldHVy
biBuZXcgVW5pZm9ybShHTF9GTE9BVCwgX25hbWUsIGNvbnN0YW50LT5lbGVtZW50cyk7Ci0gICAg
ICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX0ZMT0FUX1ZFQzIsIF9uYW1l
LCBjb25zdGFudC0+ZWxlbWVudHMpOwotICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBuZXcg
VW5pZm9ybShHTF9GTE9BVF9WRUMzLCBfbmFtZSwgY29uc3RhbnQtPmVsZW1lbnRzKTsKLSAgICAg
ICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfRkxPQVRfVkVDNCwgX25hbWUs
IGNvbnN0YW50LT5lbGVtZW50cyk7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNl
IGlmIChjb25zdGFudC0+cm93cyA9PSBjb25zdGFudC0+Y29sdW1ucykgIC8vIFNxdWFyZSBtYXRy
aWNlcwotICAgIHsKLSAgICAgICAgc3dpdGNoIChjb25zdGFudC0+dHlwZSkKLSAgICAgICAgewot
ICAgICAgICAgIGNhc2UgRDNEQ29uc3RhbnQ6OlBUX0ZMT0FUOgotICAgICAgICAgICAgc3dpdGNo
IChjb25zdGFudC0+cm93cykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAyOiBy
ZXR1cm4gbmV3IFVuaWZvcm0oR0xfRkxPQVRfTUFUMiwgX25hbWUsIGNvbnN0YW50LT5lbGVtZW50
cyk7Ci0gICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX0ZMT0FUX01B
VDMsIF9uYW1lLCBjb25zdGFudC0+ZWxlbWVudHMpOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJl
dHVybiBuZXcgVW5pZm9ybShHTF9GTE9BVF9NQVQ0LCBfbmFtZSwgY29uc3RhbnQtPmVsZW1lbnRz
KTsKLSAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgcmV0dXJuIDA7
Ci19Ci0KLS8vIFRoaXMgbWV0aG9kIG5lZWRzIHRvIG1hdGNoIE91dHB1dEhMU0w6OmRlY29yYXRl
Ci1zdGQ6OnN0cmluZyBQcm9ncmFtQmluYXJ5OjpkZWNvcmF0ZUF0dHJpYnV0ZShjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZSkKLXsKLSAgICBpZiAobmFtZS5jb21wYXJlKDAsIDMsICJnbF8iKSAhPSAw
ICYmIG5hbWUuY29tcGFyZSgwLCAzLCAiZHhfIikgIT0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAiXyIgKyBuYW1lOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotc3RkOjpz
dHJpbmcgUHJvZ3JhbUJpbmFyeTo6dW5kZWNvcmF0ZVVuaWZvcm0oY29uc3Qgc3RkOjpzdHJpbmcg
Jl9uYW1lKQotewotICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBfbmFtZTsKLSAgICAKLSAgICAvLyBS
ZW1vdmUgYW55IHN0cnVjdHVyZSBmaWVsZCBkZWNvcmF0aW9uCi0gICAgc2l6ZV90IHBvcyA9IDA7
Ci0gICAgd2hpbGUgKChwb3MgPSBuYW1lLmZpbmQoIi5fIiwgcG9zKSkgIT0gc3RkOjpzdHJpbmc6
Om5wb3MpCi0gICAgewotICAgICAgICBuYW1lLnJlcGxhY2UocG9zLCAyLCAiLiIpOwotICAgIH0K
LQotICAgIC8vIFJlbW92ZSB0aGUgbGVhZGluZyBkZWNvcmF0aW9uCi0gICAgaWYgKG5hbWVbMF0g
PT0gJ18nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyKDEpOwotICAgIH0KLSAg
ICBlbHNlIGlmIChuYW1lLmNvbXBhcmUoMCwgMywgImFyXyIpID09IDApCi0gICAgewotICAgICAg
ICByZXR1cm4gbmFtZS5zdWJzdHIoMyk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBuYW1lOwot
fQotCi12b2lkIFByb2dyYW1CaW5hcnk6OmFwcGx5VW5pZm9ybW5idihVbmlmb3JtICp0YXJnZXRV
bmlmb3JtLCBHTHNpemVpIGNvdW50LCBpbnQgd2lkdGgsIGNvbnN0IEdMYm9vbGVhbiAqdikKLXsK
LSAgICBmbG9hdCB2ZWN0b3JbRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTICogNF07Ci0gICAgQk9P
TCBib29sVmVjdG9yW0QzRDlfTUFYX0JPT0xfQ09OU1RBTlRTXTsKLQotICAgIGlmICh0YXJnZXRV
bmlmb3JtLT5wcy5mbG9hdDRJbmRleCA+PSAwIHx8IHRhcmdldFVuaWZvcm0tPnZzLmZsb2F0NElu
ZGV4ID49IDApCi0gICAgewotICAgICAgICBBU1NFUlQoY291bnQgPD0gRDNEOV9NQVhfRkxPQVRf
Q09OU1RBTlRTKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoaiA8IHdpZHRoKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgdmVjdG9yW2kgKiA0ICsgal0gPSAodltpICogd2lkdGggKyBq
XSA9PSBHTF9GQUxTRSkgPyAwLjBmIDogMS4wZjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdmVj
dG9yW2kgKiA0ICsgal0gPSAwLjBmOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh0YXJnZXRVbmlmb3JtLT5wcy5ib29sSW5kZXgg
Pj0gMCB8fCB0YXJnZXRVbmlmb3JtLT52cy5ib29sSW5kZXggPj0gMCkKLSAgICB7Ci0gICAgICAg
IGludCBwc0NvdW50ID0gdGFyZ2V0VW5pZm9ybS0+cHMuYm9vbEluZGV4ID49IDAgPyB0YXJnZXRV
bmlmb3JtLT5wcy5yZWdpc3RlckNvdW50IDogMDsKLSAgICAgICAgaW50IHZzQ291bnQgPSB0YXJn
ZXRVbmlmb3JtLT52cy5ib29sSW5kZXggPj0gMCA/IHRhcmdldFVuaWZvcm0tPnZzLnJlZ2lzdGVy
Q291bnQgOiAwOwotICAgICAgICBpbnQgY29weUNvdW50ID0gc3RkOjptaW4oY291bnQgKiB3aWR0
aCwgc3RkOjptYXgocHNDb3VudCwgdnNDb3VudCkpOwotICAgICAgICBBU1NFUlQoY29weUNvdW50
IDw9IEQzRDlfTUFYX0JPT0xfQ09OU1RBTlRTKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3B5Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbFZlY3RvcltpXSA9
IHZbaV0gIT0gR0xfRkFMU0U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodGFyZ2V0VW5p
Zm9ybS0+cHMuZmxvYXQ0SW5kZXggPj0gMCkKLSAgICB7Ci0gICAgICAgIG1EZXZpY2UtPlNldFBp
eGVsU2hhZGVyQ29uc3RhbnRGKHRhcmdldFVuaWZvcm0tPnBzLmZsb2F0NEluZGV4LCB2ZWN0b3Is
IHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVyQ291bnQpOwotICAgIH0KLSAgICAgICAgCi0gICAg
aWYgKHRhcmdldFVuaWZvcm0tPnBzLmJvb2xJbmRleCA+PSAwKQotICAgIHsKLSAgICAgICAgbURl
dmljZS0+U2V0UGl4ZWxTaGFkZXJDb25zdGFudEIodGFyZ2V0VW5pZm9ybS0+cHMuYm9vbEluZGV4
LCBib29sVmVjdG9yLCB0YXJnZXRVbmlmb3JtLT5wcy5yZWdpc3RlckNvdW50KTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKHRhcmdldFVuaWZvcm0tPnZzLmZsb2F0NEluZGV4ID49IDApCi0gICAgewot
ICAgICAgICBtRGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+
dnMuZmxvYXQ0SW5kZXgsIHZlY3RvciwgdGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJDb3VudCk7
Ci0gICAgfQotICAgICAgICAKLSAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dnMuYm9vbEluZGV4ID49
IDApCi0gICAgewotICAgICAgICBtRGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXJDb25zdGFudEIodGFy
Z2V0VW5pZm9ybS0+dnMuYm9vbEluZGV4LCBib29sVmVjdG9yLCB0YXJnZXRVbmlmb3JtLT52cy5y
ZWdpc3RlckNvdW50KTsKLSAgICB9Ci19Ci0KLWJvb2wgUHJvZ3JhbUJpbmFyeTo6YXBwbHlVbmlm
b3JtbmZ2KFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxvYXQgKnYpCi17Ci0gICAg
aWYgKHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVyQ291bnQpCi0gICAgewotICAgICAgICBtRGV2
aWNlLT5TZXRQaXhlbFNoYWRlckNvbnN0YW50Rih0YXJnZXRVbmlmb3JtLT5wcy5mbG9hdDRJbmRl
eCwgdiwgdGFyZ2V0VW5pZm9ybS0+cHMucmVnaXN0ZXJDb3VudCk7Ci0gICAgfQotCi0gICAgaWYg
KHRhcmdldFVuaWZvcm0tPnZzLnJlZ2lzdGVyQ291bnQpCi0gICAgewotICAgICAgICBtRGV2aWNl
LT5TZXRWZXJ0ZXhTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+dnMuZmxvYXQ0SW5kZXgs
IHYsIHRhcmdldFVuaWZvcm0tPnZzLnJlZ2lzdGVyQ291bnQpOwotICAgIH0KLQotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIFByb2dyYW1CaW5hcnk6OmFwcGx5VW5pZm9ybTFpdihVbmlmb3Jt
ICp0YXJnZXRVbmlmb3JtLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKLXsKLSAgICBB
U1NFUlQoY291bnQgPD0gRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTKTsKLSAgICBWZWN0b3I0IHZl
Y3RvcltEM0Q5X01BWF9GTE9BVF9DT05TVEFOVFNdOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgdmVjdG9yW2ldID0gVmVjdG9yNCgoZmxvYXQp
dltpXSwgMCwgMCwgMCk7Ci0gICAgfQotCi0gICAgaWYgKHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lz
dGVyQ291bnQpCi0gICAgewotICAgICAgICBpZiAodGFyZ2V0VW5pZm9ybS0+cHMuc2FtcGxlcklu
ZGV4ID49IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBmaXJzdEluZGV4
ID0gdGFyZ2V0VW5pZm9ybS0+cHMuc2FtcGxlckluZGV4OwotCi0gICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCA9IGZpcnN0SW5kZXggKyBpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1TYW1wbGVyc1BTW3NhbXBs
ZXJJbmRleF0uYWN0aXZlKTsKLSAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzUFNbc2FtcGxl
ckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQgPSB2W2ldOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVCh0YXJnZXRVbmlmb3JtLT5wcy5mbG9hdDRJbmRleCA+PSAwKTsKLSAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFBpeGVsU2hhZGVyQ29uc3RhbnRGKHRhcmdldFVuaWZvcm0tPnBzLmZs
b2F0NEluZGV4LCAoY29uc3QgZmxvYXQqKXZlY3RvciwgdGFyZ2V0VW5pZm9ybS0+cHMucmVnaXN0
ZXJDb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dnMu
cmVnaXN0ZXJDb3VudCkKLSAgICB7Ci0gICAgICAgIGlmICh0YXJnZXRVbmlmb3JtLT52cy5zYW1w
bGVySW5kZXggPj0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0
SW5kZXggPSB0YXJnZXRVbmlmb3JtLT52cy5zYW1wbGVySW5kZXg7Ci0KLSAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gZmlyc3RJbmRleCArIGk7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoc2FtcGxlckluZGV4IDwgTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VO
SVRTX1ZURikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCht
U2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1T
YW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0ID0gdltpXTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQodGFyZ2V0VW5pZm9ybS0+dnMuZmxvYXQ0SW5kZXgg
Pj0gMCk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXJDb25zdGFudEYodGFy
Z2V0VW5pZm9ybS0+dnMuZmxvYXQ0SW5kZXgsIChjb25zdCBmbG9hdCAqKXZlY3RvciwgdGFyZ2V0
VW5pZm9ybS0+dnMucmVnaXN0ZXJDb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtQmluYXJ5OjphcHBseVVuaWZvcm0yaXYoVW5pZm9y
bSAqdGFyZ2V0VW5pZm9ybSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCi17Ci0gICAg
QVNTRVJUKGNvdW50IDw9IEQzRDlfTUFYX0ZMT0FUX0NPTlNUQU5UUyk7Ci0gICAgVmVjdG9yNCB2
ZWN0b3JbRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTXTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIHZlY3RvcltpXSA9IFZlY3RvcjQoKGZsb2F0
KXZbMF0sIChmbG9hdCl2WzFdLCAwLCAwKTsKLQotICAgICAgICB2ICs9IDI7Ci0gICAgfQotCi0g
ICAgYXBwbHlVbmlmb3Jtbml2KHRhcmdldFVuaWZvcm0sIGNvdW50LCB2ZWN0b3IpOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUHJvZ3JhbUJpbmFyeTo6YXBwbHlVbmlmb3JtM2l2KFVu
aWZvcm0gKnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQotewot
ICAgIEFTU0VSVChjb3VudCA8PSBEM0Q5X01BWF9GTE9BVF9DT05TVEFOVFMpOwotICAgIFZlY3Rv
cjQgdmVjdG9yW0QzRDlfTUFYX0ZMT0FUX0NPTlNUQU5UU107Ci0KLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IGNvdW50OyBpKyspCi0gICAgewotICAgICAgICB2ZWN0b3JbaV0gPSBWZWN0b3I0KChm
bG9hdCl2WzBdLCAoZmxvYXQpdlsxXSwgKGZsb2F0KXZbMl0sIDApOwotCi0gICAgICAgIHYgKz0g
MzsKLSAgICB9Ci0KLSAgICBhcHBseVVuaWZvcm1uaXYodGFyZ2V0VW5pZm9ybSwgY291bnQsIHZl
Y3Rvcik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtQmluYXJ5OjphcHBs
eVVuaWZvcm00aXYoVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnYpCi17Ci0gICAgQVNTRVJUKGNvdW50IDw9IEQzRDlfTUFYX0ZMT0FUX0NPTlNUQU5U
Uyk7Ci0gICAgVmVjdG9yNCB2ZWN0b3JbRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTXTsKLQotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIHZlY3Rvcltp
XSA9IFZlY3RvcjQoKGZsb2F0KXZbMF0sIChmbG9hdCl2WzFdLCAoZmxvYXQpdlsyXSwgKGZsb2F0
KXZbM10pOwotCi0gICAgICAgIHYgKz0gNDsKLSAgICB9Ci0KLSAgICBhcHBseVVuaWZvcm1uaXYo
dGFyZ2V0VW5pZm9ybSwgY291bnQsIHZlY3Rvcik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBQcm9ncmFtQmluYXJ5OjphcHBseVVuaWZvcm1uaXYoVW5pZm9ybSAqdGFyZ2V0VW5pZm9y
bSwgR0xzaXplaSBjb3VudCwgY29uc3QgVmVjdG9yNCAqdmVjdG9yKQotewotICAgIGlmICh0YXJn
ZXRVbmlmb3JtLT5wcy5yZWdpc3RlckNvdW50KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHRhcmdl
dFVuaWZvcm0tPnBzLmZsb2F0NEluZGV4ID49IDApOwotICAgICAgICBtRGV2aWNlLT5TZXRQaXhl
bFNoYWRlckNvbnN0YW50Rih0YXJnZXRVbmlmb3JtLT5wcy5mbG9hdDRJbmRleCwgKGNvbnN0IGZs
b2F0ICopdmVjdG9yLCB0YXJnZXRVbmlmb3JtLT5wcy5yZWdpc3RlckNvdW50KTsKLSAgICB9Ci0K
LSAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJDb3VudCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCh0YXJnZXRVbmlmb3JtLT52cy5mbG9hdDRJbmRleCA+PSAwKTsKLSAgICAgICAgbURl
dmljZS0+U2V0VmVydGV4U2hhZGVyQ29uc3RhbnRGKHRhcmdldFVuaWZvcm0tPnZzLmZsb2F0NElu
ZGV4LCAoY29uc3QgZmxvYXQgKil2ZWN0b3IsIHRhcmdldFVuaWZvcm0tPnZzLnJlZ2lzdGVyQ291
bnQpOwotICAgIH0KLX0KLQotYm9vbCBQcm9ncmFtQmluYXJ5Ojppc1ZhbGlkYXRlZCgpIGNvbnN0
IAotewotICAgIHJldHVybiBtVmFsaWRhdGVkOwotfQotCi12b2lkIFByb2dyYW1CaW5hcnk6Omdl
dEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpCi17Ci0gICAg
Ly8gU2tpcCBvdmVyIGluYWN0aXZlIGF0dHJpYnV0ZXMKLSAgICB1bnNpZ25lZCBpbnQgYWN0aXZl
QXR0cmlidXRlID0gMDsKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlOwotICAgIGZvciAoYXR0
cmlidXRlID0gMDsgYXR0cmlidXRlIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGUrKykK
LSAgICB7Ci0gICAgICAgIGlmIChtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0ubmFtZS5lbXB0
eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChhY3RpdmVBdHRyaWJ1dGUgPT0gaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgYWN0aXZlQXR0cmlidXRlKys7Ci0gICAgfQot
Ci0gICAgaWYgKGJ1ZnNpemUgPiAwKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc3RyaW5n
ID0gbUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVdLm5hbWUuY19zdHIoKTsKLQotICAgICAgICBz
dHJuY3B5KG5hbWUsIHN0cmluZywgYnVmc2l6ZSk7Ci0gICAgICAgIG5hbWVbYnVmc2l6ZSAtIDFd
ID0gJ1wwJzsKLQotICAgICAgICBpZiAobGVuZ3RoKQotICAgICAgICB7Ci0gICAgICAgICAgICAq
bGVuZ3RoID0gc3RybGVuKG5hbWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgKnNpemUgPSAx
OyAgIC8vIEFsd2F5cyBhIHNpbmdsZSAndHlwZScgaW5zdGFuY2UKLQotICAgICp0eXBlID0gbUxp
bmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVdLnR5cGU7Ci19Ci0KLUdMaW50IFByb2dyYW1CaW5hcnk6
OmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkKLXsKLSAgICBpbnQgY291bnQgPSAwOwotCi0gICAg
Zm9yIChpbnQgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8IE1BWF9WRVJURVhf
QVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIGlmICghbUxpbmtlZEF0
dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0ubmFtZS5lbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb3VudCsrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvdW50OwotfQot
Ci1HTGludCBQcm9ncmFtQmluYXJ5OjpnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgoKQotewot
ICAgIGludCBtYXhMZW5ndGggPSAwOwotCi0gICAgZm9yIChpbnQgYXR0cmlidXRlSW5kZXggPSAw
OyBhdHRyaWJ1dGVJbmRleCA8IE1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykK
LSAgICB7Ci0gICAgICAgIGlmICghbUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0ubmFt
ZS5lbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBtYXhMZW5ndGggPSBzdGQ6Om1heCgo
aW50KShtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4XS5uYW1lLmxlbmd0aCgpICsgMSks
IG1heExlbmd0aCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbWF4TGVuZ3RoOwot
fQotCi12b2lkIFByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBH
THNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlw
ZSwgR0xjaGFyICpuYW1lKQotewotICAgIC8vIFNraXAgb3ZlciBpbnRlcm5hbCB1bmlmb3Jtcwot
ICAgIHVuc2lnbmVkIGludCBhY3RpdmVVbmlmb3JtID0gMDsKLSAgICB1bnNpZ25lZCBpbnQgdW5p
Zm9ybTsKLSAgICBmb3IgKHVuaWZvcm0gPSAwOyB1bmlmb3JtIDwgbVVuaWZvcm1zLnNpemUoKTsg
dW5pZm9ybSsrKQotICAgIHsKLSAgICAgICAgaWYgKG1Vbmlmb3Jtc1t1bmlmb3JtXS0+bmFtZS5j
b21wYXJlKDAsIDMsICJkeF8iKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhY3RpdmVVbmlmb3JtID09IGluZGV4KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGFjdGl2ZVVu
aWZvcm0rKzsKLSAgICB9Ci0KLSAgICBBU1NFUlQodW5pZm9ybSA8IG1Vbmlmb3Jtcy5zaXplKCkp
OyAgIC8vIGluZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIGdldEFjdGl2ZVVuaWZvcm1Db3VudCgp
Ci0KLSAgICBpZiAoYnVmc2l6ZSA+IDApCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZyBzdHJp
bmcgPSBtVW5pZm9ybXNbdW5pZm9ybV0tPm5hbWU7Ci0KLSAgICAgICAgaWYgKG1Vbmlmb3Jtc1t1
bmlmb3JtXS0+aXNBcnJheSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJpbmcgKz0gIlsw
XSI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJuY3B5KG5hbWUsIHN0cmluZy5jX3N0cigpLCBi
dWZzaXplKTsKLSAgICAgICAgbmFtZVtidWZzaXplIC0gMV0gPSAnXDAnOwotCi0gICAgICAgIGlm
IChsZW5ndGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgICpsZW5ndGggPSBzdHJsZW4obmFtZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAqc2l6ZSA9IG1Vbmlmb3Jtc1t1bmlmb3JtXS0+YXJy
YXlTaXplOwotCi0gICAgKnR5cGUgPSBtVW5pZm9ybXNbdW5pZm9ybV0tPnR5cGU7Ci19Ci0KLUdM
aW50IFByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpCi17Ci0gICAgaW50IGNv
dW50ID0gMDsKLQotICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtcyA9IG1Vbmlmb3Jtcy5zaXpl
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4
IDwgbnVtVW5pZm9ybXM7IHVuaWZvcm1JbmRleCsrKQotICAgIHsKLSAgICAgICAgaWYgKG1Vbmlm
b3Jtc1t1bmlmb3JtSW5kZXhdLT5uYW1lLmNvbXBhcmUoMCwgMywgImR4XyIpICE9IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gY291bnQ7Ci19Ci0KLUdMaW50IFByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZVVuaWZvcm1NYXhM
ZW5ndGgoKQotewotICAgIGludCBtYXhMZW5ndGggPSAwOwotCi0gICAgdW5zaWduZWQgaW50IG51
bVVuaWZvcm1zID0gbVVuaWZvcm1zLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCB1bmlm
b3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCBudW1Vbmlmb3JtczsgdW5pZm9ybUluZGV4Kysp
Ci0gICAgewotICAgICAgICBpZiAoIW1Vbmlmb3Jtc1t1bmlmb3JtSW5kZXhdLT5uYW1lLmVtcHR5
KCkgJiYgbVVuaWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuY29tcGFyZSgwLCAzLCAiZHhfIikg
IT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IGxlbmd0aCA9IChpbnQpKG1Vbmlmb3Jt
c1t1bmlmb3JtSW5kZXhdLT5uYW1lLmxlbmd0aCgpICsgMSk7Ci0gICAgICAgICAgICBpZiAobVVu
aWZvcm1zW3VuaWZvcm1JbmRleF0tPmlzQXJyYXkoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBsZW5ndGggKz0gMzsgIC8vIENvdW50aW5nIGluICJbMF0iLgotICAgICAgICAgICAg
fQotICAgICAgICAgICAgbWF4TGVuZ3RoID0gc3RkOjptYXgobGVuZ3RoLCBtYXhMZW5ndGgpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG1heExlbmd0aDsKLX0KLQotdm9pZCBQcm9n
cmFtQmluYXJ5Ojp2YWxpZGF0ZShJbmZvTG9nICZpbmZvTG9nKQotewotICAgIGFwcGx5VW5pZm9y
bXMoKTsKLSAgICBpZiAoIXZhbGlkYXRlU2FtcGxlcnMoJmluZm9Mb2cpKQotICAgIHsKLSAgICAg
ICAgbVZhbGlkYXRlZCA9IGZhbHNlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBt
VmFsaWRhdGVkID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wgUHJvZ3JhbUJpbmFyeTo6dmFsaWRh
dGVTYW1wbGVycyhJbmZvTG9nICppbmZvTG9nKQotewotICAgIC8vIGlmIGFueSB0d28gYWN0aXZl
IHNhbXBsZXJzIGluIGEgcHJvZ3JhbSBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBidXQgcmVmZXIg
dG8gdGhlIHNhbWUKLSAgICAvLyB0ZXh0dXJlIGltYWdlIHVuaXQsIGFuZCB0aGlzIGlzIHRoZSBj
dXJyZW50IHByb2dyYW0sIHRoZW4gVmFsaWRhdGVQcm9ncmFtIHdpbGwgZmFpbCwgYW5kCi0gICAg
Ly8gRHJhd0FycmF5cyBhbmQgRHJhd0VsZW1lbnRzIHdpbGwgaXNzdWUgdGhlIElOVkFMSURfT1BF
UkFUSU9OIGVycm9yLgotCi0gICAgY29uc3QgdW5zaWduZWQgaW50IG1heENvbWJpbmVkVGV4dHVy
ZUltYWdlVW5pdHMgPSBnZXRDb250ZXh0KCktPmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzKCk7Ci0gICAgVGV4dHVyZVR5cGUgdGV4dHVyZVVuaXRUeXBlW01BWF9DT01CSU5FRF9U
RVhUVVJFX0lNQUdFX1VOSVRTX1ZURl07Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURjsgKytpKQotICAgIHsKLSAg
ICAgICAgdGV4dHVyZVVuaXRUeXBlW2ldID0gVEVYVFVSRV9VTktOT1dOOwotICAgIH0KLQotICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZTsgKytp
KQotICAgIHsKLSAgICAgICAgaWYgKG1TYW1wbGVyc1BTW2ldLmFjdGl2ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHVuaXQgPSBtU2FtcGxlcnNQU1tpXS5sb2dpY2FsVGV4
dHVyZVVuaXQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh1bml0ID49IG1heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KGluZm9Mb2cpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbmZvTG9n
LT5hcHBlbmQoIlNhbXBsZXIgdW5pZm9ybSAoJWQpIGV4Y2VlZHMgTUFYX0NPTUJJTkVEX1RFWFRV
UkVfSU1BR0VfVU5JVFMgKCVkKSIsIHVuaXQsIG1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMp
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRleHR1cmVVbml0VHlwZVt1bml0XSAhPSBU
RVhUVVJFX1VOS05PV04pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1TYW1w
bGVyc1BTW2ldLnRleHR1cmVUeXBlICE9IHRleHR1cmVVbml0VHlwZVt1bml0XSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmZvTG9nKQotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvTG9nLT5hcHBlbmQoIlNhbXBs
ZXJzIG9mIGNvbmZsaWN0aW5nIHR5cGVzIHJlZmVyIHRvIHRoZSBzYW1lIHRleHR1cmUgaW1hZ2Ug
dW5pdCAoJWQpLiIsIHVuaXQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXh0dXJl
VW5pdFR5cGVbdW5pdF0gPSBtU2FtcGxlcnNQU1tpXS50ZXh0dXJlVHlwZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
bVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7ICsraSkKLSAgICB7Ci0gICAgICAgIGlmIChtU2FtcGxl
cnNWU1tpXS5hY3RpdmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGludCB1bml0
ID0gbVNhbXBsZXJzVlNbaV0ubG9naWNhbFRleHR1cmVVbml0OwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAodW5pdCA+PSBtYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmIChpbmZvTG9nKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy0+YXBwZW5kKCJTYW1wbGVyIHVuaWZvcm0gKCVk
KSBleGNlZWRzIE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkiLCB1bml0LCBt
YXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
ICh0ZXh0dXJlVW5pdFR5cGVbdW5pdF0gIT0gVEVYVFVSRV9VTktOT1dOKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmIChtU2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZSAhPSB0ZXh0
dXJlVW5pdFR5cGVbdW5pdF0pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5mb0xvZykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb0xvZy0+YXBwZW5kKCJTYW1wbGVycyBvZiBjb25mbGljdGluZyB0eXBlcyByZWZl
ciB0byB0aGUgc2FtZSB0ZXh0dXJlIGltYWdlIHVuaXQgKCVkKS4iLCB1bml0KTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgdGV4dHVyZVVuaXRUeXBlW3VuaXRdID0gbVNhbXBsZXJzVlNb
aV0udGV4dHVyZVR5cGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0RHhEZXB0aFJhbmdlTG9j
YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtRHhEZXB0aFJhbmdlTG9jYXRpb247Ci19Ci0K
LUdMaW50IFByb2dyYW1CaW5hcnk6OmdldER4RGVwdGhMb2NhdGlvbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1EeERlcHRoTG9jYXRpb247Ci19Ci0KLUdMaW50IFByb2dyYW1CaW5hcnk6OmdldER4
Q29vcmRMb2NhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1EeENvb3JkTG9jYXRpb247Ci19
Ci0KLUdMaW50IFByb2dyYW1CaW5hcnk6OmdldER4SGFsZlBpeGVsU2l6ZUxvY2F0aW9uKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbUR4SGFsZlBpeGVsU2l6ZUxvY2F0aW9uOwotfQotCi1HTGludCBQ
cm9ncmFtQmluYXJ5OjpnZXREeEZyb250Q0NXTG9jYXRpb24oKSBjb25zdAotewotICAgIHJldHVy
biBtRHhGcm9udENDV0xvY2F0aW9uOwotfQotCi1HTGludCBQcm9ncmFtQmluYXJ5OjpnZXREeFBv
aW50c09yTGluZXNMb2NhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1EeFBvaW50c09yTGlu
ZXNMb2NhdGlvbjsKLX0KLQotUHJvZ3JhbUJpbmFyeTo6U2FtcGxlcjo6U2FtcGxlcigpIDogYWN0
aXZlKGZhbHNlKSwgbG9naWNhbFRleHR1cmVVbml0KDApLCB0ZXh0dXJlVHlwZShURVhUVVJFXzJE
KQotewotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL1Byb2dyYW1CaW5hcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUHJvZ3JhbUJpbmFyeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZmZl
NzBiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UHJvZ3JhbUJpbmFyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjM1ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLS8vIFByb2dyYW0uaDogRGVmaW5lcyB0aGUgZ2w6OlByb2dyYW0gY2xhc3Mu
IEltcGxlbWVudHMgR0wgcHJvZ3JhbSBvYmplY3RzCi0vLyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFs
aXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjEwLjMgcGFnZSAyOC4KLQotI2lmbmRl
ZiBMSUJHTEVTVjJfUFJPR1JBTV9CSU5BUllfSF8KLSNkZWZpbmUgTElCR0xFU1YyX1BST0dSQU1f
QklOQVJZX0hfCi0KLSNkZWZpbmUgR0xfQVBJQ0FMTAotI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgot
I2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgotCi0jaW5jbHVkZSA8ZDNkY29tcGlsZXIuaD4KLSNp
bmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAibGliR0xFU3Yy
L0NvbnRleHQuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvRDNEQ29uc3RhbnRUYWJsZS5oIgotI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9TaGFkZXIu
aCIKLQotbmFtZXNwYWNlIGdsCi17Ci1jbGFzcyBGcmFnbWVudFNoYWRlcjsKLWNsYXNzIFZlcnRl
eFNoYWRlcjsKLQotLy8gSGVscGVyIHN0cnVjdCByZXByZXNlbnRpbmcgYSBzaW5nbGUgc2hhZGVy
IHVuaWZvcm0KLXN0cnVjdCBVbmlmb3JtCi17Ci0gICAgVW5pZm9ybShHTGVudW0gdHlwZSwgY29u
c3Qgc3RkOjpzdHJpbmcgJl9uYW1lLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplKTsKLQotICAgIH5V
bmlmb3JtKCk7Ci0KLSAgICBib29sIGlzQXJyYXkoKTsKLQotICAgIGNvbnN0IEdMZW51bSB0eXBl
OwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIF9uYW1lOyAgIC8vIERlY29yYXRlZCBuYW1lCi0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgbmFtZTsgICAgLy8gVW5kZWNvcmF0ZWQgbmFtZQotICAgIGNvbnN0
IHVuc2lnbmVkIGludCBhcnJheVNpemU7Ci0KLSAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwotICAg
IGJvb2wgZGlydHk7Ci0KLSAgICBzdHJ1Y3QgUmVnaXN0ZXJJbmZvCi0gICAgewotICAgICAgICBS
ZWdpc3RlckluZm8oKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdDRJbmRleCA9IC0xOwot
ICAgICAgICAgICAgc2FtcGxlckluZGV4ID0gLTE7Ci0gICAgICAgICAgICBib29sSW5kZXggPSAt
MTsKLSAgICAgICAgICAgIHJlZ2lzdGVyQ291bnQgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBzZXQoY29uc3QgRDNEQ29uc3RhbnQgKmNvbnN0YW50KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBzd2l0Y2goY29uc3RhbnQtPnJlZ2lzdGVyU2V0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBjYXNlIEQzRENvbnN0YW50OjpSU19CT09MOiAgICBib29sSW5kZXggPSBjb25zdGFu
dC0+cmVnaXN0ZXJJbmRleDsgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRDNEQ29uc3Rh
bnQ6OlJTX0ZMT0FUNDogIGZsb2F0NEluZGV4ID0gY29uc3RhbnQtPnJlZ2lzdGVySW5kZXg7ICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBEM0RDb25zdGFudDo6UlNfU0FNUExFUjogc2FtcGxl
ckluZGV4ID0gY29uc3RhbnQtPnJlZ2lzdGVySW5kZXg7IGJyZWFrOwotICAgICAgICAgICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBBU1NFUlQocmVnaXN0ZXJDb3VudCA9PSAwIHx8IHJlZ2lzdGVyQ291bnQgPT0gKGlu
dCljb25zdGFudC0+cmVnaXN0ZXJDb3VudCk7Ci0gICAgICAgICAgICByZWdpc3RlckNvdW50ID0g
Y29uc3RhbnQtPnJlZ2lzdGVyQ291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgZmxvYXQ0
SW5kZXg7Ci0gICAgICAgIGludCBzYW1wbGVySW5kZXg7Ci0gICAgICAgIGludCBib29sSW5kZXg7
Ci0KLSAgICAgICAgaW50IHJlZ2lzdGVyQ291bnQ7Ci0gICAgfTsKLQotICAgIFJlZ2lzdGVySW5m
byBwczsKLSAgICBSZWdpc3RlckluZm8gdnM7Ci19OwotCi0vLyBTdHJ1Y3QgdXNlZCBmb3IgY29y
cmVsYXRpbmcgdW5pZm9ybXMvZWxlbWVudHMgb2YgdW5pZm9ybSBhcnJheXMgdG8gaGFuZGxlcwot
c3RydWN0IFVuaWZvcm1Mb2NhdGlvbgotewotICAgIFVuaWZvcm1Mb2NhdGlvbigpCi0gICAgewot
ICAgIH0KLQotICAgIFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmX25hbWUsIHVu
c2lnbmVkIGludCBlbGVtZW50LCB1bnNpZ25lZCBpbnQgaW5kZXgpOwotCi0gICAgc3RkOjpzdHJp
bmcgbmFtZTsKLSAgICB1bnNpZ25lZCBpbnQgZWxlbWVudDsKLSAgICB1bnNpZ25lZCBpbnQgaW5k
ZXg7Ci19OwotCi0vLyBUaGlzIGlzIHRoZSByZXN1bHQgb2YgbGlua2luZyBhIHByb2dyYW0uIEl0
IGlzIHRoZSBzdGF0ZSB0aGF0IHdvdWxkIGJlIHBhc3NlZCB0byBQcm9ncmFtQmluYXJ5LgotY2xh
c3MgUHJvZ3JhbUJpbmFyeSA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAotewotICBwdWJsaWM6Ci0g
ICAgUHJvZ3JhbUJpbmFyeSgpOwotICAgIH5Qcm9ncmFtQmluYXJ5KCk7Ci0KLSAgICBJRGlyZWN0
M0RQaXhlbFNoYWRlcjkgKmdldFBpeGVsU2hhZGVyKCk7Ci0gICAgSURpcmVjdDNEVmVydGV4U2hh
ZGVyOSAqZ2V0VmVydGV4U2hhZGVyKCk7Ci0KLSAgICBHTHVpbnQgZ2V0QXR0cmlidXRlTG9jYXRp
b24oY29uc3QgY2hhciAqbmFtZSk7Ci0gICAgaW50IGdldFNlbWFudGljSW5kZXgoaW50IGF0dHJp
YnV0ZUluZGV4KTsKLQotICAgIEdMaW50IGdldFNhbXBsZXJNYXBwaW5nKFNhbXBsZXJUeXBlIHR5
cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgpOwotICAgIFRleHR1cmVUeXBlIGdldFNhbXBs
ZXJUZXh0dXJlVHlwZShTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4
KTsKLSAgICBHTGludCBnZXRVc2VkU2FtcGxlclJhbmdlKFNhbXBsZXJUeXBlIHR5cGUpOwotICAg
IGJvb2wgdXNlc1BvaW50U2l6ZSgpIGNvbnN0OwotCi0gICAgR0xpbnQgZ2V0VW5pZm9ybUxvY2F0
aW9uKHN0ZDo6c3RyaW5nIG5hbWUpOwotICAgIGJvb2wgc2V0VW5pZm9ybTFmdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7Ci0gICAgYm9vbCBzZXRVbmlm
b3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsK
LSAgICBib29sIHNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZmxvYXQgKnYpOwotICAgIGJvb2wgc2V0VW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7Ci0gICAgYm9vbCBzZXRVbmlmb3JtTWF0
cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7Ci0gICAgYm9vbCBzZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgYm9vbCBzZXRVbmlmb3JtTWF0cml4
NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
Ci0gICAgYm9vbCBzZXRVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdik7Ci0gICAgYm9vbCBzZXRVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Ci0gICAgYm9vbCBzZXRVbmlmb3JtM2l2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Ci0gICAgYm9vbCBz
ZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dik7Ci0KLSAgICBib29sIGdldFVuaWZvcm1mdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSAqYnVm
U2l6ZSwgR0xmbG9hdCAqcGFyYW1zKTsKLSAgICBib29sIGdldFVuaWZvcm1pdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7Ci0KLSAgICBHTGludCBnZXRE
eERlcHRoUmFuZ2VMb2NhdGlvbigpIGNvbnN0OwotICAgIEdMaW50IGdldER4RGVwdGhMb2NhdGlv
bigpIGNvbnN0OwotICAgIEdMaW50IGdldER4Q29vcmRMb2NhdGlvbigpIGNvbnN0OwotICAgIEdM
aW50IGdldER4SGFsZlBpeGVsU2l6ZUxvY2F0aW9uKCkgY29uc3Q7Ci0gICAgR0xpbnQgZ2V0RHhG
cm9udENDV0xvY2F0aW9uKCkgY29uc3Q7Ci0gICAgR0xpbnQgZ2V0RHhQb2ludHNPckxpbmVzTG9j
YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgZGlydHlBbGxVbmlmb3JtcygpOwotICAgIHZvaWQg
YXBwbHlVbmlmb3JtcygpOwotCi0gICAgYm9vbCBsb2FkKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0
IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBsZW5ndGgpOwotICAgIGJvb2wgc2F2ZSh2b2lkKiBiaW5h
cnksIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoKTsKLSAgICBHTGludCBnZXRMZW5n
dGgoKTsKLQotICAgIGJvb2wgbGluayhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVC
aW5kaW5ncyAmYXR0cmlidXRlQmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRl
ciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpOwotICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFk
ZXJzKEdMc2l6ZWkgbWF4Q291bnQsIEdMc2l6ZWkgKmNvdW50LCBHTHVpbnQgKnNoYWRlcnMpOwot
Ci0gICAgdm9pZCBnZXRBY3RpdmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpu
YW1lKTsKLSAgICBHTGludCBnZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOwotICAgIEdMaW50IGdl
dEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpOwotCi0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jt
KEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpz
aXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSk7Ci0gICAgR0xpbnQgZ2V0QWN0aXZlVW5p
Zm9ybUNvdW50KCk7Ci0gICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpOwotCi0g
ICAgdm9pZCB2YWxpZGF0ZShJbmZvTG9nICZpbmZvTG9nKTsKLSAgICBib29sIHZhbGlkYXRlU2Ft
cGxlcnMoSW5mb0xvZyAqaW5mb0xvZyk7Ci0gICAgYm9vbCBpc1ZhbGlkYXRlZCgpIGNvbnN0Owot
Ci0gICAgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OwotCi0gICAgc3RhdGljIHN0ZDo6
c3RyaW5nIGRlY29yYXRlQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKTsgICAgLy8g
UHJlcGVuZCBhbiB1bmRlcnNjb3JlCi0gICAgc3RhdGljIHN0ZDo6c3RyaW5nIHVuZGVjb3JhdGVV
bmlmb3JtKGNvbnN0IHN0ZDo6c3RyaW5nICZfbmFtZSk7ICAgLy8gUmVtb3ZlIGxlYWRpbmcgdW5k
ZXJzY29yZQotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFByb2dy
YW1CaW5hcnkpOwotCi0gICAgSUQzRDEwQmxvYiAqY29tcGlsZVRvQmluYXJ5KEluZm9Mb2cgJmlu
Zm9Mb2csIGNvbnN0IGNoYXIgKmhsc2wsIGNvbnN0IGNoYXIgKnByb2ZpbGUsIEQzRENvbnN0YW50
VGFibGUgKipjb25zdGFudFRhYmxlKTsKLQotICAgIGludCBwYWNrVmFyeWluZ3MoSW5mb0xvZyAm
aW5mb0xvZywgY29uc3QgVmFyeWluZyAqcGFja2luZ1tdWzRdLCBGcmFnbWVudFNoYWRlciAqZnJh
Z21lbnRTaGFkZXIpOwotICAgIGJvb2wgbGlua1ZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csIHN0
ZDo6c3RyaW5nJiBwaXhlbEhMU0wsIHN0ZDo6c3RyaW5nJiB2ZXJ0ZXhITFNMLCBGcmFnbWVudFNo
YWRlciAqZnJhZ21lbnRTaGFkZXIsIFZlcnRleFNoYWRlciAqdmVydGV4U2hhZGVyKTsKLQotICAg
IGJvb2wgbGlua0F0dHJpYnV0ZXMoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgQXR0cmlidXRlQmlu
ZGluZ3MgJmF0dHJpYnV0ZUJpbmRpbmdzLCBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIs
IFZlcnRleFNoYWRlciAqdmVydGV4U2hhZGVyKTsKLQotICAgIGJvb2wgbGlua1VuaWZvcm1zKElu
Zm9Mb2cgJmluZm9Mb2csIEdMZW51bSBzaGFkZXIsIEQzRENvbnN0YW50VGFibGUgKmNvbnN0YW50
VGFibGUpOwotICAgIGJvb2wgZGVmaW5lVW5pZm9ybShJbmZvTG9nICZpbmZvTG9nLCBHTGVudW0g
c2hhZGVyLCBjb25zdCBEM0RDb25zdGFudCAqY29uc3RhbnQsIHN0ZDo6c3RyaW5nIG5hbWUgPSAi
Iik7Ci0gICAgYm9vbCBkZWZpbmVVbmlmb3JtKEdMZW51bSBzaGFkZXIsIGNvbnN0IEQzRENvbnN0
YW50ICpjb25zdGFudCwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpOwotICAgIFVuaWZvcm0gKmNy
ZWF0ZVVuaWZvcm0oIGNvbnN0IEQzRENvbnN0YW50ICpjb25zdGFudCwgY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUpOwotICAgIGJvb2wgYXBwbHlVbmlmb3JtbmZ2KFVuaWZvcm0gKnRhcmdldFVuaWZv
cm0sIGNvbnN0IEdMZmxvYXQgKnYpOwotICAgIGJvb2wgYXBwbHlVbmlmb3JtMWl2KFVuaWZvcm0g
KnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKLSAgICBib29s
IGFwcGx5VW5pZm9ybTJpdihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdik7Ci0gICAgYm9vbCBhcHBseVVuaWZvcm0zaXYoVW5pZm9ybSAqdGFyZ2V0
VW5pZm9ybSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOwotICAgIGJvb2wgYXBwbHlV
bmlmb3JtNGl2KFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
aW50ICp2KTsKLSAgICB2b2lkIGFwcGx5VW5pZm9ybW5pdihVbmlmb3JtICp0YXJnZXRVbmlmb3Jt
LCBHTHNpemVpIGNvdW50LCBjb25zdCBWZWN0b3I0ICp2ZWN0b3IpOwotICAgIHZvaWQgYXBwbHlV
bmlmb3JtbmJ2KFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkgY291bnQsIGludCB3aWR0
aCwgY29uc3QgR0xib29sZWFuICp2KTsKLQotICAgIElEaXJlY3QzRERldmljZTkgKm1EZXZpY2U7
Ci0KLSAgICBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKm1QaXhlbEV4ZWN1dGFibGU7Ci0gICAgSURp
cmVjdDNEVmVydGV4U2hhZGVyOSAqbVZlcnRleEV4ZWN1dGFibGU7Ci0KLSAgICAvLyBUaGVzZSBh
cmUgb25seSB1c2VkIGR1cmluZyBsaW5raW5nLgotICAgIEQzRENvbnN0YW50VGFibGUgKm1Db25z
dGFudFRhYmxlUFM7Ci0gICAgRDNEQ29uc3RhbnRUYWJsZSAqbUNvbnN0YW50VGFibGVWUzsKLQot
ICAgIEF0dHJpYnV0ZSBtTGlua2VkQXR0cmlidXRlW01BWF9WRVJURVhfQVRUUklCU107Ci0gICAg
aW50IG1TZW1hbnRpY0luZGV4W01BWF9WRVJURVhfQVRUUklCU107Ci0KLSAgICBzdHJ1Y3QgU2Ft
cGxlcgotICAgIHsKLSAgICAgICAgU2FtcGxlcigpOwotCi0gICAgICAgIGJvb2wgYWN0aXZlOwot
ICAgICAgICBHTGludCBsb2dpY2FsVGV4dHVyZVVuaXQ7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRl
eHR1cmVUeXBlOwotICAgIH07Ci0KLSAgICBTYW1wbGVyIG1TYW1wbGVyc1BTW01BWF9URVhUVVJF
X0lNQUdFX1VOSVRTXTsKLSAgICBTYW1wbGVyIG1TYW1wbGVyc1ZTW01BWF9WRVJURVhfVEVYVFVS
RV9JTUFHRV9VTklUU19WVEZdOwotICAgIEdMdWludCBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZTsK
LSAgICBHTHVpbnQgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZTsKLSAgICBib29sIG1Vc2VzUG9pbnRT
aXplOwotCi0gICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxVbmlmb3JtKj4gVW5pZm9ybUFycmF5Owot
ICAgIFVuaWZvcm1BcnJheSBtVW5pZm9ybXM7Ci0gICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxVbmlm
b3JtTG9jYXRpb24+IFVuaWZvcm1JbmRleDsKLSAgICBVbmlmb3JtSW5kZXggbVVuaWZvcm1JbmRl
eDsKLQotICAgIEdMaW50IG1EeERlcHRoUmFuZ2VMb2NhdGlvbjsKLSAgICBHTGludCBtRHhEZXB0
aExvY2F0aW9uOwotICAgIEdMaW50IG1EeENvb3JkTG9jYXRpb247Ci0gICAgR0xpbnQgbUR4SGFs
ZlBpeGVsU2l6ZUxvY2F0aW9uOwotICAgIEdMaW50IG1EeEZyb250Q0NXTG9jYXRpb247Ci0gICAg
R0xpbnQgbUR4UG9pbnRzT3JMaW5lc0xvY2F0aW9uOwotCi0gICAgYm9vbCBtVmFsaWRhdGVkOwot
Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IG1TZXJpYWw7Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQg
aW50IGlzc3VlU2VyaWFsKCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGludCBtQ3VycmVudFNlcmlh
bDsKLX07Ci19Ci0KLSNlbmRpZiAgIC8vIExJQkdMRVNWMl9QUk9HUkFNX0JJTkFSWV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9RdWVyeS5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTBlZGRhNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEyOCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gUXVlcnkuY3BwOiBJbXBsZW1lbnRzIHRo
ZSBnbDo6UXVlcnkgY2xhc3MKLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9RdWVyeS5oIgotCi0jaW5j
bHVkZSAibGliR0xFU3YyL21haW4uaCIKLQotbmFtZXNwYWNlIGdsCi17Ci0KLVF1ZXJ5OjpRdWVy
eShHTHVpbnQgaWQsIEdMZW51bSB0eXBlKSA6IFJlZkNvdW50T2JqZWN0KGlkKQoteyAKLSAgICBt
UXVlcnkgPSBOVUxMOwotICAgIG1TdGF0dXMgPSBHTF9GQUxTRTsKLSAgICBtUmVzdWx0ID0gR0xf
RkFMU0U7Ci0gICAgbVR5cGUgPSB0eXBlOwotfQotCi1RdWVyeTo6flF1ZXJ5KCkKLXsKLSAgICBp
ZiAobVF1ZXJ5ICE9IE5VTEwpCi0gICAgewotICAgICAgICBtUXVlcnktPlJlbGVhc2UoKTsKLSAg
ICAgICAgbVF1ZXJ5ID0gTlVMTDsKLSAgICB9Ci19Ci0KLXZvaWQgUXVlcnk6OmJlZ2luKCkKLXsK
LSAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCi0gICAgewotICAgICAgICBpZiAoRkFJTEVEKGdldERl
dmljZSgpLT5DcmVhdGVRdWVyeShEM0RRVUVSWVRZUEVfT0NDTFVTSU9OLCAmbVF1ZXJ5KSkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJ
U1NVRV9CRUdJTik7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLX0KLQotdm9pZCBR
dWVyeTo6ZW5kKCkKLXsKLSAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIH0KLQotICAgIEhSRVNVTFQg
cmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9FTkQpOwotICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7Ci0gICAgCi0gICAgbVN0YXR1cyA9IEdMX0ZBTFNFOwotICAgIG1SZXN1bHQg
PSBHTF9GQUxTRTsKLX0KLQotR0x1aW50IFF1ZXJ5OjpnZXRSZXN1bHQoKQotewotICAgIGlmICht
UXVlcnkgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIHdoaWxlICghdGVzdFF1ZXJ5KCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIFNsZWVwKDApOwotICAgICAgICAgICAgLy8gZXhwbGljaXRseSBj
aGVjayBmb3IgZGV2aWNlIGxvc3MKLSAgICAgICAgICAgIC8vIHNvbWUgZHJpdmVycyBzZWVtIHRv
IHJldHVybiBTX0ZBTFNFIGV2ZW4gaWYgdGhlIGRldmljZSBpcyBsb3N0Ci0gICAgICAgICAgICAv
LyBpbnN0ZWFkIG9mIEQzREVSUl9ERVZJQ0VMT1NUIGxpa2UgdGhleSBzaG91bGQKLSAgICAgICAg
ICAgIGlmIChnbDo6Z2V0RGlzcGxheSgpLT50ZXN0RGV2aWNlTG9zdCgpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGdsOjpnZXREaXNwbGF5KCktPm5vdGlmeURldmljZUxvc3QoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgMCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKEdMdWludCltUmVzdWx0
OwotfQotCi1HTGJvb2xlYW4gUXVlcnk6OmlzUmVzdWx0QXZhaWxhYmxlKCkKLXsKLSAgICBpZiAo
bVF1ZXJ5ICE9IE5VTEwpCi0gICAgewotICAgICAgICB0ZXN0UXVlcnkoKTsKLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIG1TdGF0dXM7Ci19Ci0KLUdMZW51bSBRdWVyeTo6Z2V0VHlwZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1UeXBlOwotfQotCi1HTGJvb2xlYW4gUXVlcnk6OnRlc3RRdWVyeSgp
Ci17Ci0gICAgaWYgKG1RdWVyeSAhPSBOVUxMICYmIG1TdGF0dXMgIT0gR0xfVFJVRSkKLSAgICB7
Ci0gICAgICAgIERXT1JEIG51bVBpeGVscyA9IDA7Ci0KLSAgICAgICAgSFJFU1VMVCBocmVzID0g
bVF1ZXJ5LT5HZXREYXRhKCZudW1QaXhlbHMsIHNpemVvZihEV09SRCksIEQzREdFVERBVEFfRkxV
U0gpOwotICAgICAgICBpZiAoaHJlcyA9PSBTX09LKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
U3RhdHVzID0gR0xfVFJVRTsKLQotICAgICAgICAgICAgc3dpdGNoIChtVHlwZSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOgotICAg
ICAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgot
ICAgICAgICAgICAgICAgIG1SZXN1bHQgPSAobnVtUGl4ZWxzID4gMCkgPyBHTF9UUlVFIDogR0xf
RkFMU0U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBlbHNlIGlmIChjaGVja0RldmljZUxvc3QoaHJlcykpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9UUlVFKTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG1TdGF0dXM7Ci0gICAgfQotCi0gICAgcmV0dXJu
IEdMX1RSVUU7IC8vIHByZXZlbnQgYmxvY2tpbmcgd2hlbiBxdWVyeSBpcyBudWxsCi19Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDc5MzU3YTAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9RdWVyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFF1ZXJ5Lmg6IERlZmluZXMgdGhlIGdsOjpRdWVy
eSBjbGFzcwotCi0jaWZuZGVmIExJQkdMRVNWMl9RVUVSWV9IXwotI2RlZmluZSBMSUJHTEVTVjJf
UVVFUllfSF8KLQotI2RlZmluZSBHTF9BUElDQUxMCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0j
aW5jbHVkZSA8ZDNkOS5oPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNs
dWRlICJjb21tb24vUmVmQ291bnRPYmplY3QuaCIKLQotbmFtZXNwYWNlIGdsCi17Ci0KLWNsYXNz
IFF1ZXJ5IDogcHVibGljIFJlZkNvdW50T2JqZWN0Ci17Ci0gIHB1YmxpYzoKLSAgICBRdWVyeShH
THVpbnQgaWQsIEdMZW51bSB0eXBlKTsKLSAgICB2aXJ0dWFsIH5RdWVyeSgpOwotCi0gICAgdm9p
ZCBiZWdpbigpOwotICAgIHZvaWQgZW5kKCk7Ci0gICAgR0x1aW50IGdldFJlc3VsdCgpOwotICAg
IEdMYm9vbGVhbiBpc1Jlc3VsdEF2YWlsYWJsZSgpOwotCi0gICAgR0xlbnVtIGdldFR5cGUoKSBj
b25zdDsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihRdWVyeSk7
Ci0KLSAgICBHTGJvb2xlYW4gdGVzdFF1ZXJ5KCk7Ci0KLSAgICBJRGlyZWN0M0RRdWVyeTkqIG1R
dWVyeTsKLSAgICBHTGVudW0gbVR5cGU7Ci0gICAgR0xib29sZWFuIG1TdGF0dXM7Ci0gICAgR0xp
bnQgbVJlc3VsdDsKLX07Ci0KLX0KLQotI2VuZGlmICAgLy8gTElCR0xFU1YyX1FVRVJZX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JFQURNRSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUkVBRE1FCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyN2QzZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JFQURNRQpAQCAtMCwwICsxIEBACitU
aGlzIGRpcmVjdG9yeSdzIGNvbnRlbnRzIGFyZSBub3Qgc3luY2VkIGZyb20gdGhlIEFOR0xFIHBy
b2plY3QgYmVjYXVzZSBubyBwbGF0Zm9ybSBpbiBXZWJLaXQgbmVlZHMgdGhlbSB5ZXQuClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCA0YjkxMWU4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3NyArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBSZW5kZXJidWZmZXIuY3BwOiB0aGUgZ2w6OlJl
bmRlcmJ1ZmZlciBjbGFzcyBhbmQgaXRzIGRlcml2ZWQgY2xhc3NlcwotLy8gQ29sb3JidWZmZXIs
IERlcHRoYnVmZmVyIGFuZCBTdGVuY2lsYnVmZmVyLiBJbXBsZW1lbnRzIEdMIHJlbmRlcmJ1ZmZl
cgotLy8gb2JqZWN0cyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4y
NF0gc2VjdGlvbiA0LjQuMyBwYWdlIDEwOC4KLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJi
dWZmZXIuaCIKLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCi0jaW5jbHVkZSAibGliR0xF
U3YyL1RleHR1cmUuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCi0KLW5hbWVz
cGFjZSBnbAotewotdW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Om1DdXJyZW50U2Vy
aWFsID0gMTsKLQotUmVuZGVyYnVmZmVySW50ZXJmYWNlOjpSZW5kZXJidWZmZXJJbnRlcmZhY2Uo
KQotewotfQotCi0vLyBUaGUgZGVmYXVsdCBjYXNlIGZvciBjbGFzc2VzIGluaGVyaXRlZCBmcm9t
IFJlbmRlcmJ1ZmZlckludGVyZmFjZSBpcyBub3QgdG8KLS8vIG5lZWQgdG8gZG8gYW55dGhpbmcg
dXBvbiB0aGUgcmVmZXJlbmNlIGNvdW50IHRvIHRoZSBwYXJlbnQgUmVuZGVyYnVmZmVyIGluY3Jl
bWVudGluZwotLy8gb3IgZGVjcmVtZW50aW5nLiAKLXZvaWQgUmVuZGVyYnVmZmVySW50ZXJmYWNl
OjphZGRQcm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KQotewotfQotCi12b2lkIFJl
bmRlcmJ1ZmZlckludGVyZmFjZTo6cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJv
eHkpCi17Ci19Ci0KLUdMdWludCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldFJlZFNpemUoKSBj
b25zdAotewotICAgIHJldHVybiBkeDJlczo6R2V0UmVkU2l6ZShnZXREM0RGb3JtYXQoKSk7Ci19
Ci0KLUdMdWludCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldEdyZWVuU2l6ZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGR4MmVzOjpHZXRHcmVlblNpemUoZ2V0RDNERm9ybWF0KCkpOwotfQotCi1H
THVpbnQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjpnZXRCbHVlU2l6ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGR4MmVzOjpHZXRCbHVlU2l6ZShnZXREM0RGb3JtYXQoKSk7Ci19Ci0KLUdMdWludCBS
ZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldEFscGhhU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGR4MmVzOjpHZXRBbHBoYVNpemUoZ2V0RDNERm9ybWF0KCkpOwotfQotCi1HTHVpbnQgUmVuZGVy
YnVmZmVySW50ZXJmYWNlOjpnZXREZXB0aFNpemUoKSBjb25zdAotewotICAgIHJldHVybiBkeDJl
czo6R2V0RGVwdGhTaXplKGdldEQzREZvcm1hdCgpKTsKLX0KLQotR0x1aW50IFJlbmRlcmJ1ZmZl
ckludGVyZmFjZTo6Z2V0U3RlbmNpbFNpemUoKSBjb25zdAotewotICAgIHJldHVybiBkeDJlczo6
R2V0U3RlbmNpbFNpemUoZ2V0RDNERm9ybWF0KCkpOwotfQotCi0vLy8vLyBSZW5kZXJidWZmZXJU
ZXh0dXJlMkQgSW1wbGVtZW50YXRpb24gLy8vLy8vLy8KLQotUmVuZGVyYnVmZmVyVGV4dHVyZTJE
OjpSZW5kZXJidWZmZXJUZXh0dXJlMkQoVGV4dHVyZTJEICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0
KSA6IG1UYXJnZXQodGFyZ2V0KQotewotICAgIG1UZXh0dXJlMkQuc2V0KHRleHR1cmUpOwotfQot
Ci1SZW5kZXJidWZmZXJUZXh0dXJlMkQ6On5SZW5kZXJidWZmZXJUZXh0dXJlMkQoKQotewotICAg
IG1UZXh0dXJlMkQuc2V0KE5VTEwpOwotfQotCi0vLyBUZXh0dXJlcyBuZWVkIHRvIG1haW50YWlu
IHRoZWlyIG93biByZWZlcmVuY2UgY291bnQgZm9yIHJlZmVyZW5jZXMgdmlhCi0vLyBSZW5kZXJi
dWZmZXJzIGFjdGluZyBhcyBwcm94aWVzLiBIZXJlLCB3ZSBub3RpZnkgdGhlIHRleHR1cmUgb2Yg
YSByZWZlcmVuY2UuCi12b2lkIFJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6YWRkUHJveHlSZWYoY29u
c3QgUmVuZGVyYnVmZmVyICpwcm94eSkKLXsKLSAgICBtVGV4dHVyZTJELT5hZGRQcm94eVJlZihw
cm94eSk7Ci19Ci0KLXZvaWQgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpyZWxlYXNlUHJveHkoY29u
c3QgUmVuZGVyYnVmZmVyICpwcm94eSkKLXsKLSAgICBtVGV4dHVyZTJELT5yZWxlYXNlUHJveHko
cHJveHkpOwotfQotCi0vLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCi0vLyBjYWxs
ZXIgbXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKLUlEaXJlY3QzRFN1cmZhY2U5
ICpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFJlbmRlclRhcmdldCgpCi17Ci0gICAgcmV0dXJu
IG1UZXh0dXJlMkQtPmdldFJlbmRlclRhcmdldChtVGFyZ2V0KTsKLX0KLQotLy8gSW5jcmVtZW50
cyByZWZjb3VudCBvbiBzdXJmYWNlLgotLy8gY2FsbGVyIG11c3QgUmVsZWFzZSgpIHRoZSByZXR1
cm5lZCBzdXJmYWNlCi1JRGlyZWN0M0RTdXJmYWNlOSAqUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpn
ZXREZXB0aFN0ZW5jaWwoKQotewotICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXREZXB0aFN0ZW5j
aWwobVRhcmdldCk7Ci19Ci0KLUdMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRXaWR0
aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldFdpZHRoKDApOwotfQotCi1H
THNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0SGVpZ2h0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbVRleHR1cmUyRC0+Z2V0SGVpZ2h0KDApOwotfQotCi1HTGVudW0gUmVuZGVyYnVmZmVy
VGV4dHVyZTJEOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1UZXh0
dXJlMkQtPmdldEludGVybmFsRm9ybWF0KDApOwotfQotCi1EM0RGT1JNQVQgUmVuZGVyYnVmZmVy
VGV4dHVyZTJEOjpnZXREM0RGb3JtYXQoKSBjb25zdAotewotICAgIHJldHVybiBtVGV4dHVyZTJE
LT5nZXREM0RGb3JtYXQoMCk7Ci19Ci0KLUdMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpn
ZXRTYW1wbGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotdW5zaWduZWQgaW50IFJl
bmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0U2VyaWFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVRl
eHR1cmUyRC0+Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKG1UYXJnZXQpOwotfQotCi0vLy8vLyBSZW5k
ZXJidWZmZXJUZXh0dXJlQ3ViZU1hcCBJbXBsZW1lbnRhdGlvbiAvLy8vLy8vLwotCi1SZW5kZXJi
dWZmZXJUZXh0dXJlQ3ViZU1hcDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAoVGV4dHVyZUN1
YmVNYXAgKnRleHR1cmUsIEdMZW51bSB0YXJnZXQpIDogbVRhcmdldCh0YXJnZXQpCi17Ci0gICAg
bVRleHR1cmVDdWJlTWFwLnNldCh0ZXh0dXJlKTsKLX0KLQotUmVuZGVyYnVmZmVyVGV4dHVyZUN1
YmVNYXA6On5SZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcCgpCi17Ci0gICAgbVRleHR1cmVDdWJl
TWFwLnNldChOVUxMKTsKLX0KLQotLy8gVGV4dHVyZXMgbmVlZCB0byBtYWludGFpbiB0aGVpciBv
d24gcmVmZXJlbmNlIGNvdW50IGZvciByZWZlcmVuY2VzIHZpYQotLy8gUmVuZGVyYnVmZmVycyBh
Y3RpbmcgYXMgcHJveGllcy4gSGVyZSwgd2Ugbm90aWZ5IHRoZSB0ZXh0dXJlIG9mIGEgcmVmZXJl
bmNlLgotdm9pZCBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6YWRkUHJveHlSZWYoY29uc3Qg
UmVuZGVyYnVmZmVyICpwcm94eSkKLXsKLSAgICBtVGV4dHVyZUN1YmVNYXAtPmFkZFByb3h5UmVm
KHByb3h5KTsKLX0KLQotdm9pZCBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6cmVsZWFzZVBy
b3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCi17Ci0gICAgbVRleHR1cmVDdWJlTWFwLT5y
ZWxlYXNlUHJveHkocHJveHkpOwotfQotCi0vLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZh
Y2UuCi0vLyBjYWxsZXIgbXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKLUlEaXJl
Y3QzRFN1cmZhY2U5ICpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVyVGFyZ2V0
KCkKLXsKLSAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRSZW5kZXJUYXJnZXQobVRhcmdl
dCk7Ci19Ci0KLS8vIEluY3JlbWVudHMgcmVmY291bnQgb24gc3VyZmFjZS4KLS8vIGNhbGxlciBt
dXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgc3VyZmFjZQotSURpcmVjdDNEU3VyZmFjZTkgKlJl
bmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXREZXB0aFN0ZW5jaWwoKQotewotICAgIHJldHVy
biBOVUxMOwotfQotCi1HTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRXaWR0
aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0V2lkdGgoR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKTsKLX0KLQotR0xzaXplaSBSZW5kZXJidWZmZXJU
ZXh0dXJlQ3ViZU1hcDo6Z2V0SGVpZ2h0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVRleHR1cmVD
dWJlTWFwLT5nZXRIZWlnaHQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKTsKLX0K
LQotR0xlbnVtIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRJbnRlcm5hbEZvcm1hdCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0SW50ZXJuYWxGb3JtYXQo
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKTsKLX0KLQotRDNERk9STUFUIFJlbmRl
cmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXREM0RGb3JtYXQoKSBjb25zdAotewotICAgIHJldHVy
biBtVGV4dHVyZUN1YmVNYXAtPmdldEQzREZvcm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1gsIDApOwotfQotCi1HTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRT
YW1wbGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotdW5zaWduZWQgaW50IFJlbmRl
cmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRTZXJpYWwoKSBjb25zdAotewotICAgIHJldHVybiBt
VGV4dHVyZUN1YmVNYXAtPmdldFJlbmRlclRhcmdldFNlcmlhbChtVGFyZ2V0KTsKLX0KLQotLy8v
Ly8vIFJlbmRlcmJ1ZmZlciBJbXBsZW1lbnRhdGlvbiAvLy8vLy8KLQotUmVuZGVyYnVmZmVyOjpS
ZW5kZXJidWZmZXIoR0x1aW50IGlkLCBSZW5kZXJidWZmZXJJbnRlcmZhY2UgKmluc3RhbmNlKSA6
IFJlZkNvdW50T2JqZWN0KGlkKQotewotICAgIEFTU0VSVChpbnN0YW5jZSAhPSBOVUxMKTsKLSAg
ICBtSW5zdGFuY2UgPSBpbnN0YW5jZTsKLX0KLQotUmVuZGVyYnVmZmVyOjp+UmVuZGVyYnVmZmVy
KCkKLXsKLSAgICBkZWxldGUgbUluc3RhbmNlOwotfQotCi0vLyBUaGUgUmVuZGVyYnVmZmVySW50
ZXJmYWNlIGNvbnRhaW5lZCBpbiB0aGlzIFJlbmRlcmJ1ZmZlciBtYXkgbmVlZCB0byBtYWludGFp
bgotLy8gaXRzIG93biByZWZlcmVuY2UgY291bnQsIHNvIHdlIHBhc3MgaXQgb24gaGVyZS4KLXZv
aWQgUmVuZGVyYnVmZmVyOjphZGRSZWYoKSBjb25zdAotewotICAgIG1JbnN0YW5jZS0+YWRkUHJv
eHlSZWYodGhpcyk7Ci0KLSAgICBSZWZDb3VudE9iamVjdDo6YWRkUmVmKCk7Ci19Ci0KLXZvaWQg
UmVuZGVyYnVmZmVyOjpyZWxlYXNlKCkgY29uc3QKLXsKLSAgICBtSW5zdGFuY2UtPnJlbGVhc2VQ
cm94eSh0aGlzKTsKLQotICAgIFJlZkNvdW50T2JqZWN0OjpyZWxlYXNlKCk7Ci19Ci0KLS8vIElu
Y3JlbWVudHMgcmVmY291bnQgb24gc3VyZmFjZS4KLS8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0
aGUgcmV0dXJuZWQgc3VyZmFjZQotSURpcmVjdDNEU3VyZmFjZTkgKlJlbmRlcmJ1ZmZlcjo6Z2V0
UmVuZGVyVGFyZ2V0KCkKLXsKLSAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRSZW5kZXJUYXJnZXQo
KTsKLX0KLQotLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgotLy8gY2FsbGVyIG11
c3QgUmVsZWFzZSgpIHRoZSByZXR1cm5lZCBzdXJmYWNlCi1JRGlyZWN0M0RTdXJmYWNlOSAqUmVu
ZGVyYnVmZmVyOjpnZXREZXB0aFN0ZW5jaWwoKQotewotICAgIHJldHVybiBtSW5zdGFuY2UtPmdl
dERlcHRoU3RlbmNpbCgpOwotfQotCi1HTHNpemVpIFJlbmRlcmJ1ZmZlcjo6Z2V0V2lkdGgoKSBj
b25zdAotewotICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFdpZHRoKCk7Ci19Ci0KLUdMc2l6ZWkg
UmVuZGVyYnVmZmVyOjpnZXRIZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtSW5zdGFuY2Ut
PmdldEhlaWdodCgpOwotfQotCi1HTGVudW0gUmVuZGVyYnVmZmVyOjpnZXRJbnRlcm5hbEZvcm1h
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsK
LX0KLQotRDNERk9STUFUIFJlbmRlcmJ1ZmZlcjo6Z2V0RDNERm9ybWF0KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbUluc3RhbmNlLT5nZXREM0RGb3JtYXQoKTsKLX0KLQotR0x1aW50IFJlbmRlcmJ1
ZmZlcjo6Z2V0UmVkU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVk
U2l6ZSgpOwotfQotCi1HTHVpbnQgUmVuZGVyYnVmZmVyOjpnZXRHcmVlblNpemUoKSBjb25zdAot
ewotICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEdyZWVuU2l6ZSgpOwotfQotCi1HTHVpbnQgUmVu
ZGVyYnVmZmVyOjpnZXRCbHVlU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1JbnN0YW5jZS0+
Z2V0Qmx1ZVNpemUoKTsKLX0KLQotR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0QWxwaGFTaXplKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRBbHBoYVNpemUoKTsKLX0KLQotR0x1
aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUlu
c3RhbmNlLT5nZXREZXB0aFNpemUoKTsKLX0KLQotR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0U3Rl
bmNpbFNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFN0ZW5jaWxTaXpl
KCk7Ci19Ci0KLUdMc2l6ZWkgUmVuZGVyYnVmZmVyOjpnZXRTYW1wbGVzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbUluc3RhbmNlLT5nZXRTYW1wbGVzKCk7Ci19Ci0KLXVuc2lnbmVkIGludCBSZW5k
ZXJidWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0
U2VyaWFsKCk7Ci19Ci0KLXZvaWQgUmVuZGVyYnVmZmVyOjpzZXRTdG9yYWdlKFJlbmRlcmJ1ZmZl
clN0b3JhZ2UgKm5ld1N0b3JhZ2UpCi17Ci0gICAgQVNTRVJUKG5ld1N0b3JhZ2UgIT0gTlVMTCk7
Ci0KLSAgICBkZWxldGUgbUluc3RhbmNlOwotICAgIG1JbnN0YW5jZSA9IG5ld1N0b3JhZ2U7Ci19
Ci0KLVJlbmRlcmJ1ZmZlclN0b3JhZ2U6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UoKSA6IG1TZXJpYWwo
aXNzdWVTZXJpYWwoKSkKLXsKLSAgICBtV2lkdGggPSAwOwotICAgIG1IZWlnaHQgPSAwOwotICAg
IG1JbnRlcm5hbEZvcm1hdCA9IEdMX1JHQkE0OwotICAgIG1EM0RGb3JtYXQgPSBEM0RGTVRfQThS
OEc4Qjg7Ci0gICAgbVNhbXBsZXMgPSAwOwotfQotCi1SZW5kZXJidWZmZXJTdG9yYWdlOjp+UmVu
ZGVyYnVmZmVyU3RvcmFnZSgpCi17Ci19Ci0KLS8vIEluY3JlbWVudHMgcmVmY291bnQgb24gc3Vy
ZmFjZS4KLS8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgc3VyZmFjZQotSURp
cmVjdDNEU3VyZmFjZTkgKlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFJlbmRlclRhcmdldCgpCi17
Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8vIEluY3JlbWVudHMgcmVmY291bnQgb24gc3VyZmFj
ZS4KLS8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgc3VyZmFjZQotSURpcmVj
dDNEU3VyZmFjZTkgKlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldERlcHRoU3RlbmNpbCgpCi17Ci0g
ICAgcmV0dXJuIE5VTEw7Ci19Ci0KLUdMc2l6ZWkgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0V2lk
dGgoKSBjb25zdAotewotICAgIHJldHVybiBtV2lkdGg7Ci19Ci0KLUdMc2l6ZWkgUmVuZGVyYnVm
ZmVyU3RvcmFnZTo6Z2V0SGVpZ2h0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUhlaWdodDsKLX0K
LQotR0xlbnVtIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbUludGVybmFsRm9ybWF0OwotfQotCi1EM0RGT1JNQVQgUmVuZGVyYnVm
ZmVyU3RvcmFnZTo6Z2V0RDNERm9ybWF0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUQzREZvcm1h
dDsKLX0KLQotR0xzaXplaSBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRTYW1wbGVzKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbVNhbXBsZXM7Ci19Ci0KLXVuc2lnbmVkIGludCBSZW5kZXJidWZmZXJT
dG9yYWdlOjpnZXRTZXJpYWwoKSBjb25zdAotewotICAgIHJldHVybiBtU2VyaWFsOwotfQotCi11
bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVTZXJpYWwoKQotewotICAgIHJl
dHVybiBtQ3VycmVudFNlcmlhbCsrOwotfQotCi11bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyU3Rv
cmFnZTo6aXNzdWVDdWJlU2VyaWFscygpCi17Ci0gICAgdW5zaWduZWQgaW50IGZpcnN0U2VyaWFs
ID0gbUN1cnJlbnRTZXJpYWw7Ci0gICAgbUN1cnJlbnRTZXJpYWwgKz0gNjsKLSAgICByZXR1cm4g
Zmlyc3RTZXJpYWw7Ci19Ci0KLUNvbG9yYnVmZmVyOjpDb2xvcmJ1ZmZlcihJRGlyZWN0M0RTdXJm
YWNlOSAqcmVuZGVyVGFyZ2V0KSA6IG1SZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQotewotICAg
IGlmIChyZW5kZXJUYXJnZXQpCi0gICAgewotICAgICAgICByZW5kZXJUYXJnZXQtPkFkZFJlZigp
OwotCi0gICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlwdGlvbjsKLSAgICAgICAgcmVuZGVy
VGFyZ2V0LT5HZXREZXNjKCZkZXNjcmlwdGlvbik7Ci0KLSAgICAgICAgbVdpZHRoID0gZGVzY3Jp
cHRpb24uV2lkdGg7Ci0gICAgICAgIG1IZWlnaHQgPSBkZXNjcmlwdGlvbi5IZWlnaHQ7Ci0gICAg
ICAgIG1JbnRlcm5hbEZvcm1hdCA9IGR4MmVzOjpDb252ZXJ0QmFja0J1ZmZlckZvcm1hdChkZXNj
cmlwdGlvbi5Gb3JtYXQpOwotICAgICAgICBtRDNERm9ybWF0ID0gZGVzY3JpcHRpb24uRm9ybWF0
OwotICAgICAgICBtU2FtcGxlcyA9IGR4MmVzOjpHZXRTYW1wbGVzRnJvbU11bHRpc2FtcGxlVHlw
ZShkZXNjcmlwdGlvbi5NdWx0aVNhbXBsZVR5cGUpOwotICAgIH0KLX0KLQotQ29sb3JidWZmZXI6
OkNvbG9yYnVmZmVyKGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXpl
aSBzYW1wbGVzKSA6IG1SZW5kZXJUYXJnZXQoTlVMTCkKLXsKLSAgICBJRGlyZWN0M0REZXZpY2U5
ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKLQotICAgIEQzREZPUk1BVCByZXF1ZXN0ZWRGb3JtYXQg
PSBlczJkeDo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChmb3JtYXQpOwotICAgIGludCBzdXBw
b3J0ZWRTYW1wbGVzID0gZ2V0Q29udGV4dCgpLT5nZXROZWFyZXN0U3VwcG9ydGVkU2FtcGxlcyhy
ZXF1ZXN0ZWRGb3JtYXQsIHNhbXBsZXMpOwotCi0gICAgaWYgKHN1cHBvcnRlZFNhbXBsZXMgPT0g
LTEpCi0gICAgewotICAgICAgICBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLQotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKQotICAgIHsK
LSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldCh3aWR0
aCwgaGVpZ2h0LCByZXF1ZXN0ZWRGb3JtYXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVzMmR4OjpHZXRNdWx0aXNhbXBsZVR5cGVGcm9tU2Ft
cGxlcyhzdXBwb3J0ZWRTYW1wbGVzKSwgMCwgRkFMU0UsICZtUmVuZGVyVGFyZ2V0LCBOVUxMKTsK
LQotICAgICAgICBpZiAocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3Vs
dCA9PSBFX09VVE9GTUVNT1JZKQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKLQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLSAgICB9Ci0KLSAgICBtV2lkdGggPSB3aWR0aDsK
LSAgICBtSGVpZ2h0ID0gaGVpZ2h0OwotICAgIG1JbnRlcm5hbEZvcm1hdCA9IGZvcm1hdDsKLSAg
ICBtRDNERm9ybWF0ID0gcmVxdWVzdGVkRm9ybWF0OwotICAgIG1TYW1wbGVzID0gc3VwcG9ydGVk
U2FtcGxlczsKLX0KLQotQ29sb3JidWZmZXI6On5Db2xvcmJ1ZmZlcigpCi17Ci0gICAgaWYgKG1S
ZW5kZXJUYXJnZXQpCi0gICAgewotICAgICAgICBtUmVuZGVyVGFyZ2V0LT5SZWxlYXNlKCk7Ci0g
ICAgfQotfQotCi0vLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCi0vLyBjYWxsZXIg
bXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKLUlEaXJlY3QzRFN1cmZhY2U5ICpD
b2xvcmJ1ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0KCkKLXsKLSAgICBpZiAobVJlbmRlclRhcmdldCkK
LSAgICB7Ci0gICAgICAgIG1SZW5kZXJUYXJnZXQtPkFkZFJlZigpOwotICAgIH0KLQotICAgIHJl
dHVybiBtUmVuZGVyVGFyZ2V0OwotfQotCi1EZXB0aFN0ZW5jaWxidWZmZXI6OkRlcHRoU3RlbmNp
bGJ1ZmZlcihJRGlyZWN0M0RTdXJmYWNlOSAqZGVwdGhTdGVuY2lsKSA6IG1EZXB0aFN0ZW5jaWwo
ZGVwdGhTdGVuY2lsKQotewotICAgIGlmIChkZXB0aFN0ZW5jaWwpCi0gICAgewotICAgICAgICBk
ZXB0aFN0ZW5jaWwtPkFkZFJlZigpOwotCi0gICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlw
dGlvbjsKLSAgICAgICAgZGVwdGhTdGVuY2lsLT5HZXREZXNjKCZkZXNjcmlwdGlvbik7Ci0KLSAg
ICAgICAgbVdpZHRoID0gZGVzY3JpcHRpb24uV2lkdGg7Ci0gICAgICAgIG1IZWlnaHQgPSBkZXNj
cmlwdGlvbi5IZWlnaHQ7Ci0gICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IGR4MmVzOjpDb252ZXJ0
RGVwdGhTdGVuY2lsRm9ybWF0KGRlc2NyaXB0aW9uLkZvcm1hdCk7Ci0gICAgICAgIG1TYW1wbGVz
ID0gZHgyZXM6OkdldFNhbXBsZXNGcm9tTXVsdGlzYW1wbGVUeXBlKGRlc2NyaXB0aW9uLk11bHRp
U2FtcGxlVHlwZSk7IAotICAgICAgICBtRDNERm9ybWF0ID0gZGVzY3JpcHRpb24uRm9ybWF0Owot
ICAgIH0KLX0KLQotRGVwdGhTdGVuY2lsYnVmZmVyOjpEZXB0aFN0ZW5jaWxidWZmZXIoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpCi17Ci0gICAgSURpcmVjdDNERGV2aWNl
OSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KLSAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKLSAg
ICAKLSAgICBpbnQgc3VwcG9ydGVkU2FtcGxlcyA9IGdldENvbnRleHQoKS0+Z2V0TmVhcmVzdFN1
cHBvcnRlZFNhbXBsZXMoRDNERk1UX0QyNFM4LCBzYW1wbGVzKTsKLQotICAgIGlmIChzdXBwb3J0
ZWRTYW1wbGVzID09IC0xKQotICAgIHsKLSAgICAgICAgZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0
ID4gMCkKLSAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0
aFN0ZW5jaWxTdXJmYWNlKHdpZHRoLCBoZWlnaHQsIEQzREZNVF9EMjRTOCwgZXMyZHg6OkdldE11
bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKHN1cHBvcnRlZFNhbXBsZXMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBGQUxTRSwg
Jm1EZXB0aFN0ZW5jaWwsIDApOwotCi0gICAgICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9G
VklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgIH0KLQot
ICAgIG1XaWR0aCA9IHdpZHRoOwotICAgIG1IZWlnaHQgPSBoZWlnaHQ7Ci0gICAgbUludGVybmFs
Rm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7Ci0gICAgbUQzREZvcm1hdCA9IEQzREZN
VF9EMjRTODsKLSAgICBtU2FtcGxlcyA9IHN1cHBvcnRlZFNhbXBsZXM7Ci19Ci0KLURlcHRoU3Rl
bmNpbGJ1ZmZlcjo6fkRlcHRoU3RlbmNpbGJ1ZmZlcigpCi17Ci0gICAgaWYgKG1EZXB0aFN0ZW5j
aWwpCi0gICAgewotICAgICAgICBtRGVwdGhTdGVuY2lsLT5SZWxlYXNlKCk7Ci0gICAgfQotfQot
Ci0vLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCi0vLyBjYWxsZXIgbXVzdCBSZWxl
YXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKLUlEaXJlY3QzRFN1cmZhY2U5ICpEZXB0aFN0ZW5j
aWxidWZmZXI6OmdldERlcHRoU3RlbmNpbCgpCi17Ci0gICAgaWYgKG1EZXB0aFN0ZW5jaWwpCi0g
ICAgewotICAgICAgICBtRGVwdGhTdGVuY2lsLT5BZGRSZWYoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbURlcHRoU3RlbmNpbDsKLX0KLQotRGVwdGhidWZmZXI6OkRlcHRoYnVmZmVyKElEaXJlY3Qz
RFN1cmZhY2U5ICpkZXB0aFN0ZW5jaWwpIDogRGVwdGhTdGVuY2lsYnVmZmVyKGRlcHRoU3RlbmNp
bCkKLXsKLSAgICBpZiAoZGVwdGhTdGVuY2lsKQotICAgIHsKLSAgICAgICAgbUludGVybmFsRm9y
bWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7ICAgLy8gSWYgdGhlIHJlbmRlcmJ1ZmZlciBwYXJh
bWV0ZXJzIGFyZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlvbgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4cGVjdCBvbmUgb2Yg
dGhlIHZhbGlkIHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVuZGVyYnVmZmVyU3Rv
cmFnZQotICAgIH0KLX0KLQotRGVwdGhidWZmZXI6OkRlcHRoYnVmZmVyKGludCB3aWR0aCwgaW50
IGhlaWdodCwgR0xzaXplaSBzYW1wbGVzKSA6IERlcHRoU3RlbmNpbGJ1ZmZlcih3aWR0aCwgaGVp
Z2h0LCBzYW1wbGVzKQotewotICAgIGlmIChtRGVwdGhTdGVuY2lsKQotICAgIHsKLSAgICAgICAg
bUludGVybmFsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7ICAgLy8gSWYgdGhlIHJlbmRl
cmJ1ZmZlciBwYXJhbWV0ZXJzIGFyZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4
cGVjdCBvbmUgb2YgdGhlIHZhbGlkIHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZQotICAgIH0KLX0KLQotRGVwdGhidWZmZXI6On5EZXB0aGJ1ZmZlcigp
Ci17Ci19Ci0KLVN0ZW5jaWxidWZmZXI6OlN0ZW5jaWxidWZmZXIoSURpcmVjdDNEU3VyZmFjZTkg
KmRlcHRoU3RlbmNpbCkgOiBEZXB0aFN0ZW5jaWxidWZmZXIoZGVwdGhTdGVuY2lsKQotewotICAg
IGlmIChkZXB0aFN0ZW5jaWwpCi0gICAgewotICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBHTF9T
VEVOQ0lMX0lOREVYODsgICAvLyBJZiB0aGUgcmVuZGVyYnVmZmVyIHBhcmFtZXRlcnMgYXJlIHF1
ZXJpZWQsIHRoZSBjYWxsaW5nIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgZXhwZWN0IG9uZSBvZiB0aGUgdmFsaWQgcmVuZGVy
YnVmZmVyIGZvcm1hdHMgZm9yIHVzZSBpbiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZ2xSZW5kZXJidWZmZXJTdG9yYWdlCi0gICAgfQotfQotCi1T
dGVuY2lsYnVmZmVyOjpTdGVuY2lsYnVmZmVyKGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xzaXpl
aSBzYW1wbGVzKSA6IERlcHRoU3RlbmNpbGJ1ZmZlcih3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKQot
ewotICAgIGlmIChtRGVwdGhTdGVuY2lsKQotICAgIHsKLSAgICAgICAgbUludGVybmFsRm9ybWF0
ID0gR0xfU1RFTkNJTF9JTkRFWDg7ICAgLy8gSWYgdGhlIHJlbmRlcmJ1ZmZlciBwYXJhbWV0ZXJz
IGFyZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlvbgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4cGVjdCBvbmUgb2YgdGhlIHZhbGlk
IHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQotICAgIH0K
LX0KLQotU3RlbmNpbGJ1ZmZlcjo6flN0ZW5jaWxidWZmZXIoKQotewotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTZkNWRkYi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsMjU3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFJlbmRlcmJ1
ZmZlci5oOiBEZWZpbmVzIHRoZSB3cmFwcGVyIGNsYXNzIGdsOjpSZW5kZXJidWZmZXIsIGFzIHdl
bGwgYXMgdGhlCi0vLyBjbGFzcyBoaWVyYXJjaHkgdXNlZCB0byBzdG9yZSBpdHMgY29udGVudHM6
IFJlbmRlcmJ1ZmZlclN0b3JhZ2UsIENvbG9yYnVmZmVyLAotLy8gRGVwdGhTdGVuY2lsYnVmZmVy
LCBEZXB0aGJ1ZmZlciBhbmQgU3RlbmNpbGJ1ZmZlci4gSW1wbGVtZW50cyBHTCByZW5kZXJidWZm
ZXIKLS8vIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAu
MjRdIHNlY3Rpb24gNC40LjMgcGFnZSAxMDguCi0KLSNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkJV
RkZFUl9IXwotI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSQlVGRkVSX0hfCi0KLSNkZWZpbmUgR0xf
QVBJQ0FMTAotI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2luY2x1ZGUgPGQzZDkuaD4KLQotI2lu
Y2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2Jq
ZWN0LmgiCi0KLW5hbWVzcGFjZSBnbAotewotY2xhc3MgVGV4dHVyZTJEOwotY2xhc3MgVGV4dHVy
ZUN1YmVNYXA7Ci1jbGFzcyBSZW5kZXJidWZmZXI7Ci1jbGFzcyBDb2xvcmJ1ZmZlcjsKLWNsYXNz
IERlcHRoU3RlbmNpbGJ1ZmZlcjsKLQotY2xhc3MgUmVuZGVyYnVmZmVySW50ZXJmYWNlCi17Ci0g
IHB1YmxpYzoKLSAgICBSZW5kZXJidWZmZXJJbnRlcmZhY2UoKTsKLQotICAgIHZpcnR1YWwgflJl
bmRlcmJ1ZmZlckludGVyZmFjZSgpIHt9OwotCi0gICAgdmlydHVhbCB2b2lkIGFkZFByb3h5UmVm
KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOwotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUHJv
eHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7Ci0KLSAgICB2aXJ0dWFsIElEaXJlY3QzRFN1
cmZhY2U5ICpnZXRSZW5kZXJUYXJnZXQoKSA9IDA7Ci0gICAgdmlydHVhbCBJRGlyZWN0M0RTdXJm
YWNlOSAqZ2V0RGVwdGhTdGVuY2lsKCkgPSAwOwotCi0gICAgdmlydHVhbCBHTHNpemVpIGdldFdp
ZHRoKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgR0xzaXplaSBnZXRTYW1wbGVzKCkgY29uc3QgPSAwOwotCi0gICAgR0x1aW50IGdldFJlZFNp
emUoKSBjb25zdDsKLSAgICBHTHVpbnQgZ2V0R3JlZW5TaXplKCkgY29uc3Q7Ci0gICAgR0x1aW50
IGdldEJsdWVTaXplKCkgY29uc3Q7Ci0gICAgR0x1aW50IGdldEFscGhhU2l6ZSgpIGNvbnN0Owot
ICAgIEdMdWludCBnZXREZXB0aFNpemUoKSBjb25zdDsKLSAgICBHTHVpbnQgZ2V0U3RlbmNpbFNp
emUoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0
ID0gMDsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJi
dWZmZXJJbnRlcmZhY2UpOwotfTsKLQotY2xhc3MgUmVuZGVyYnVmZmVyVGV4dHVyZTJEIDogcHVi
bGljIFJlbmRlcmJ1ZmZlckludGVyZmFjZQotewotICBwdWJsaWM6Ci0gICAgUmVuZGVyYnVmZmVy
VGV4dHVyZTJEKFRleHR1cmUyRCAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCk7Ci0KLSAgICB2aXJ0
dWFsIH5SZW5kZXJidWZmZXJUZXh0dXJlMkQoKTsKLQotICAgIHZvaWQgYWRkUHJveHlSZWYoY29u
c3QgUmVuZGVyYnVmZmVyICpwcm94eSk7Ci0gICAgdm9pZCByZWxlYXNlUHJveHkoY29uc3QgUmVu
ZGVyYnVmZmVyICpwcm94eSk7Ci0KLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0UmVuZGVyVGFy
Z2V0KCk7Ci0gICAgSURpcmVjdDNEU3VyZmFjZTkgKmdldERlcHRoU3RlbmNpbCgpOwotCi0gICAg
dmlydHVhbCBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBHTHNpemVpIGdl
dEhlaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OwotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKFJlbmRlcmJ1ZmZlclRleHR1cmUyRCk7Ci0KLSAgICBCaW5kaW5nUG9pbnRl
ciA8VGV4dHVyZTJEPiBtVGV4dHVyZTJEOwotICAgIEdMZW51bSBtVGFyZ2V0OwotfTsKLQotY2xh
c3MgUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAgOiBwdWJsaWMgUmVuZGVyYnVmZmVySW50ZXJm
YWNlCi17Ci0gIHB1YmxpYzoKLSAgICBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcChUZXh0dXJl
Q3ViZU1hcCAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCk7Ci0KLSAgICB2aXJ0dWFsIH5SZW5kZXJi
dWZmZXJUZXh0dXJlQ3ViZU1hcCgpOwotCi0gICAgdm9pZCBhZGRQcm94eVJlZihjb25zdCBSZW5k
ZXJidWZmZXIgKnByb3h5KTsKLSAgICB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZm
ZXIgKnByb3h5KTsKLQotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRSZW5kZXJUYXJnZXQoKTsK
LSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0RGVwdGhTdGVuY2lsKCk7Ci0KLSAgICB2aXJ0dWFs
IEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0SGVpZ2h0
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIEQzREZPUk1BVCBnZXREM0RGb3JtYXQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OwotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
Z2V0U2VyaWFsKCkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXApOwotCi0gICAgQmluZGluZ1BvaW50ZXIg
PFRleHR1cmVDdWJlTWFwPiBtVGV4dHVyZUN1YmVNYXA7Ci0gICAgR0xlbnVtIG1UYXJnZXQ7Ci19
OwotCi0vLyBBIGNsYXNzIGRlcml2ZWQgZnJvbSBSZW5kZXJidWZmZXJTdG9yYWdlIGlzIGNyZWF0
ZWQgd2hlbmV2ZXIgZ2xSZW5kZXJidWZmZXJTdG9yYWdlCi0vLyBpcyBjYWxsZWQuIFRoZSBzcGVj
aWZpYyBjb25jcmV0ZSB0eXBlIGRlcGVuZHMgb24gd2hldGhlciB0aGUgaW50ZXJuYWwgZm9ybWF0
IGlzCi0vLyBjb2xvdXIgZGVwdGgsIHN0ZW5jaWwgb3IgcGFja2VkIGRlcHRoL3N0ZW5jaWwuCi1j
bGFzcyBSZW5kZXJidWZmZXJTdG9yYWdlIDogcHVibGljIFJlbmRlcmJ1ZmZlckludGVyZmFjZQot
ewotICBwdWJsaWM6Ci0gICAgUmVuZGVyYnVmZmVyU3RvcmFnZSgpOwotCi0gICAgdmlydHVhbCB+
UmVuZGVyYnVmZmVyU3RvcmFnZSgpID0gMDsKLQotICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFj
ZTkgKmdldFJlbmRlclRhcmdldCgpOwotICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdl
dERlcHRoU3RlbmNpbCgpOwotCi0gICAgdmlydHVhbCBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgR0xl
bnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0
RDNERm9ybWF0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25z
dDsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OwotCi0gICAg
c3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZVNlcmlhbCgpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBp
bnQgaXNzdWVDdWJlU2VyaWFscygpOwotCi0gIHByb3RlY3RlZDoKLSAgICBHTHNpemVpIG1XaWR0
aDsKLSAgICBHTHNpemVpIG1IZWlnaHQ7Ci0gICAgR0xlbnVtIG1JbnRlcm5hbEZvcm1hdDsKLSAg
ICBEM0RGT1JNQVQgbUQzREZvcm1hdDsKLSAgICBHTHNpemVpIG1TYW1wbGVzOwotCi0gIHByaXZh
dGU6Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOwot
Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IG1TZXJpYWw7Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQg
aW50IG1DdXJyZW50U2VyaWFsOwotfTsKLQotLy8gUmVuZGVyYnVmZmVyIGltcGxlbWVudHMgdGhl
IEdMIHJlbmRlcmJ1ZmZlciBvYmplY3QuCi0vLyBJdCdzIG9ubHkgYSBwcm94eSBmb3IgYSBSZW5k
ZXJidWZmZXJJbnRlcmZhY2UgaW5zdGFuY2U7IHRoZSBpbnRlcm5hbCBvYmplY3QKLS8vIGNhbiBj
aGFuZ2Ugd2hlbmV2ZXIgZ2xSZW5kZXJidWZmZXJTdG9yYWdlIGlzIGNhbGxlZC4KLWNsYXNzIFJl
bmRlcmJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAotewotICBwdWJsaWM6Ci0gICAgUmVu
ZGVyYnVmZmVyKEdMdWludCBpZCwgUmVuZGVyYnVmZmVySW50ZXJmYWNlICpzdG9yYWdlKTsKLQot
ICAgIHZpcnR1YWwgflJlbmRlcmJ1ZmZlcigpOwotCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIGZy
b20gUmVmQ291bnRPYmplY3QgYXJlIG92ZXJsb2FkZWQgaGVyZSBiZWNhdXNlCi0gICAgLy8gVGV4
dHVyZXMgbmVlZCB0byBtYWludGFpbiB0aGVpciBvd24gY291bnQgb2YgcmVmZXJlbmNlcyB0byB0
aGVtIHZpYQotICAgIC8vIFJlbmRlcmJ1ZmZlcnMvUmVuZGVyYnVmZmVyVGV4dHVyZXMuIFRoZXNl
IGZ1bmN0aW9ucyBpbnZva2UgdGhvc2UKLSAgICAvLyByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rp
b25zIG9uIHRoZSBSZW5kZXJidWZmZXJJbnRlcmZhY2UuCi0gICAgdm9pZCBhZGRSZWYoKSBjb25z
dDsKLSAgICB2b2lkIHJlbGVhc2UoKSBjb25zdDsKLQotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpn
ZXRSZW5kZXJUYXJnZXQoKTsKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0RGVwdGhTdGVuY2ls
KCk7Ci0KLSAgICBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7Ci0gICAgR0xzaXplaSBnZXRIZWln
aHQoKSBjb25zdDsKLSAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdDsKLSAgICBE
M0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3Q7Ci0gICAgR0x1aW50IGdldFJlZFNpemUoKSBj
b25zdDsKLSAgICBHTHVpbnQgZ2V0R3JlZW5TaXplKCkgY29uc3Q7Ci0gICAgR0x1aW50IGdldEJs
dWVTaXplKCkgY29uc3Q7Ci0gICAgR0x1aW50IGdldEFscGhhU2l6ZSgpIGNvbnN0OwotICAgIEdM
dWludCBnZXREZXB0aFNpemUoKSBjb25zdDsKLSAgICBHTHVpbnQgZ2V0U3RlbmNpbFNpemUoKSBj
b25zdDsKLSAgICBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKLQotICAgIHVuc2lnbmVkIGlu
dCBnZXRTZXJpYWwoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0U3RvcmFnZShSZW5kZXJidWZmZXJT
dG9yYWdlICpuZXdTdG9yYWdlKTsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihSZW5kZXJidWZmZXIpOwotCi0gICAgUmVuZGVyYnVmZmVySW50ZXJmYWNlICptSW5z
dGFuY2U7Ci19OwotCi1jbGFzcyBDb2xvcmJ1ZmZlciA6IHB1YmxpYyBSZW5kZXJidWZmZXJTdG9y
YWdlCi17Ci0gIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDb2xvcmJ1ZmZlcihJRGlyZWN0M0RTdXJm
YWNlOSAqcmVuZGVyVGFyZ2V0KTsKLSAgICBDb2xvcmJ1ZmZlcihHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzKTsKLQotICAgIHZpcnR1
YWwgfkNvbG9yYnVmZmVyKCk7Ci0KLSAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRS
ZW5kZXJUYXJnZXQoKTsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihDb2xvcmJ1ZmZlcik7Ci0KLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbVJlbmRlclRhcmdldDsK
LX07Ci0KLWNsYXNzIERlcHRoU3RlbmNpbGJ1ZmZlciA6IHB1YmxpYyBSZW5kZXJidWZmZXJTdG9y
YWdlCi17Ci0gIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEZXB0aFN0ZW5jaWxidWZmZXIoSURpcmVj
dDNEU3VyZmFjZTkgKmRlcHRoU3RlbmNpbCk7Ci0gICAgRGVwdGhTdGVuY2lsYnVmZmVyKEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpOwotCi0gICAgfkRlcHRo
U3RlbmNpbGJ1ZmZlcigpOwotCi0gICAgdmlydHVhbCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0RGVw
dGhTdGVuY2lsKCk7Ci0KLSAgcHJvdGVjdGVkOgotICAgIElEaXJlY3QzRFN1cmZhY2U5ICptRGVw
dGhTdGVuY2lsOwotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKERl
cHRoU3RlbmNpbGJ1ZmZlcik7Ci19OwotCi1jbGFzcyBEZXB0aGJ1ZmZlciA6IHB1YmxpYyBEZXB0
aFN0ZW5jaWxidWZmZXIKLXsKLSAgcHVibGljOgotICAgIGV4cGxpY2l0IERlcHRoYnVmZmVyKElE
aXJlY3QzRFN1cmZhY2U5ICpkZXB0aFN0ZW5jaWwpOwotICAgIERlcHRoYnVmZmVyKEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpOwotCi0gICAgdmlydHVhbCB+
RGVwdGhidWZmZXIoKTsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihEZXB0aGJ1ZmZlcik7Ci19OwotCi1jbGFzcyBTdGVuY2lsYnVmZmVyIDogcHVibGljIERlcHRo
U3RlbmNpbGJ1ZmZlcgotewotICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3RlbmNpbGJ1ZmZlcihJ
RGlyZWN0M0RTdXJmYWNlOSAqZGVwdGhTdGVuY2lsKTsKLSAgICBTdGVuY2lsYnVmZmVyKEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpOwotCi0gICAgdmlydHVh
bCB+U3RlbmNpbGJ1ZmZlcigpOwotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKFN0ZW5jaWxidWZmZXIpOwotfTsKLX0KLQotI2VuZGlmICAgLy8gTElCR0xFU1YyX1JF
TkRFUkJVRkZFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCA0Yjk3ZTljLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMCArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBSZXNvdXJjZU1hbmFnZXIuY3BwOiBJbXBsZW1l
bnRzIHRoZSBnbDo6UmVzb3VyY2VNYW5hZ2VyIGNsYXNzLCB3aGljaCB0cmFja3MgYW5kIAotLy8g
cmV0cmlldmVzIG9iamVjdHMgd2hpY2ggbWF5IGJlIHNoYXJlZCBieSBtdWx0aXBsZSBDb250ZXh0
cy4KLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaCIKLQotI2luY2x1ZGUg
ImxpYkdMRVN2Mi9CdWZmZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbS5oIgotI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvU2hh
ZGVyLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKLQotbmFtZXNwYWNlIGdsCi17
Ci1SZXNvdXJjZU1hbmFnZXI6OlJlc291cmNlTWFuYWdlcigpCi17Ci0gICAgbVJlZkNvdW50ID0g
MTsKLX0KLQotUmVzb3VyY2VNYW5hZ2VyOjp+UmVzb3VyY2VNYW5hZ2VyKCkKLXsKLSAgICB3aGls
ZSAoIW1CdWZmZXJNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZUJ1ZmZlcihtQnVm
ZmVyTWFwLmJlZ2luKCktPmZpcnN0KTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIW1Qcm9ncmFtTWFw
LmVtcHR5KCkpCi0gICAgewotICAgICAgICBkZWxldGVQcm9ncmFtKG1Qcm9ncmFtTWFwLmJlZ2lu
KCktPmZpcnN0KTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIW1TaGFkZXJNYXAuZW1wdHkoKSkKLSAg
ICB7Ci0gICAgICAgIGRlbGV0ZVNoYWRlcihtU2hhZGVyTWFwLmJlZ2luKCktPmZpcnN0KTsKLSAg
ICB9Ci0KLSAgICB3aGlsZSAoIW1SZW5kZXJidWZmZXJNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAg
ICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcihtUmVuZGVyYnVmZmVyTWFwLmJlZ2luKCktPmZpcnN0KTsK
LSAgICB9Ci0KLSAgICB3aGlsZSAoIW1UZXh0dXJlTWFwLmVtcHR5KCkpCi0gICAgewotICAgICAg
ICBkZWxldGVUZXh0dXJlKG1UZXh0dXJlTWFwLmJlZ2luKCktPmZpcnN0KTsKLSAgICB9Ci19Ci0K
LXZvaWQgUmVzb3VyY2VNYW5hZ2VyOjphZGRSZWYoKQotewotICAgIG1SZWZDb3VudCsrOwotfQot
Ci12b2lkIFJlc291cmNlTWFuYWdlcjo6cmVsZWFzZSgpCi17Ci0gICAgaWYgKC0tbVJlZkNvdW50
ID09IDApCi0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci19Ci0KLS8vIFJldHVy
bnMgYW4gdW51c2VkIGJ1ZmZlciBuYW1lCi1HTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVC
dWZmZXIoKQotewotICAgIEdMdWludCBoYW5kbGUgPSBtQnVmZmVySGFuZGxlQWxsb2NhdG9yLmFs
bG9jYXRlKCk7Ci0KLSAgICBtQnVmZmVyTWFwW2hhbmRsZV0gPSBOVUxMOwotCi0gICAgcmV0dXJu
IGhhbmRsZTsKLX0KLQotLy8gUmV0dXJucyBhbiB1bnVzZWQgc2hhZGVyL3Byb2dyYW0gbmFtZQot
R0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlU2hhZGVyKEdMZW51bSB0eXBlKQotewotICAg
IEdMdWludCBoYW5kbGUgPSBtUHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgp
OwotCi0gICAgaWYgKHR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICB7Ci0gICAgICAgIG1T
aGFkZXJNYXBbaGFuZGxlXSA9IG5ldyBWZXJ0ZXhTaGFkZXIodGhpcywgaGFuZGxlKTsKLSAgICB9
Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCi0gICAgewotICAgICAg
ICBtU2hhZGVyTWFwW2hhbmRsZV0gPSBuZXcgRnJhZ21lbnRTaGFkZXIodGhpcywgaGFuZGxlKTsK
LSAgICB9Ci0gICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgcmV0dXJuIGhhbmRsZTsKLX0K
LQotLy8gUmV0dXJucyBhbiB1bnVzZWQgcHJvZ3JhbS9zaGFkZXIgbmFtZQotR0x1aW50IFJlc291
cmNlTWFuYWdlcjo6Y3JlYXRlUHJvZ3JhbSgpCi17Ci0gICAgR0x1aW50IGhhbmRsZSA9IG1Qcm9n
cmFtU2hhZGVySGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7Ci0KLSAgICBtUHJvZ3JhbU1hcFto
YW5kbGVdID0gbmV3IFByb2dyYW0odGhpcywgaGFuZGxlKTsKLQotICAgIHJldHVybiBoYW5kbGU7
Ci19Ci0KLS8vIFJldHVybnMgYW4gdW51c2VkIHRleHR1cmUgbmFtZQotR0x1aW50IFJlc291cmNl
TWFuYWdlcjo6Y3JlYXRlVGV4dHVyZSgpCi17Ci0gICAgR0x1aW50IGhhbmRsZSA9IG1UZXh0dXJl
SGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7Ci0KLSAgICBtVGV4dHVyZU1hcFtoYW5kbGVdID0g
TlVMTDsKLQotICAgIHJldHVybiBoYW5kbGU7Ci19Ci0KLS8vIFJldHVybnMgYW4gdW51c2VkIHJl
bmRlcmJ1ZmZlciBuYW1lCi1HTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVSZW5kZXJidWZm
ZXIoKQotewotICAgIEdMdWludCBoYW5kbGUgPSBtUmVuZGVyYnVmZmVySGFuZGxlQWxsb2NhdG9y
LmFsbG9jYXRlKCk7Ci0KLSAgICBtUmVuZGVyYnVmZmVyTWFwW2hhbmRsZV0gPSBOVUxMOwotCi0g
ICAgcmV0dXJuIGhhbmRsZTsKLX0KLQotdm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZUJ1ZmZl
cihHTHVpbnQgYnVmZmVyKQotewotICAgIEJ1ZmZlck1hcDo6aXRlcmF0b3IgYnVmZmVyT2JqZWN0
ID0gbUJ1ZmZlck1hcC5maW5kKGJ1ZmZlcik7Ci0KLSAgICBpZiAoYnVmZmVyT2JqZWN0ICE9IG1C
dWZmZXJNYXAuZW5kKCkpCi0gICAgewotICAgICAgICBtQnVmZmVySGFuZGxlQWxsb2NhdG9yLnJl
bGVhc2UoYnVmZmVyT2JqZWN0LT5maXJzdCk7Ci0gICAgICAgIGlmIChidWZmZXJPYmplY3QtPnNl
Y29uZCkgYnVmZmVyT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2UoKTsKLSAgICAgICAgbUJ1ZmZlck1h
cC5lcmFzZShidWZmZXJPYmplY3QpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZU1hbmFnZXI6
OmRlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKQotewotICAgIFNoYWRlck1hcDo6aXRlcmF0b3Ig
c2hhZGVyT2JqZWN0ID0gbVNoYWRlck1hcC5maW5kKHNoYWRlcik7Ci0KLSAgICBpZiAoc2hhZGVy
T2JqZWN0ICE9IG1TaGFkZXJNYXAuZW5kKCkpCi0gICAgewotICAgICAgICBpZiAoc2hhZGVyT2Jq
ZWN0LT5zZWNvbmQtPmdldFJlZkNvdW50KCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAg
bVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IucmVsZWFzZShzaGFkZXJPYmplY3QtPmZpcnN0
KTsKLSAgICAgICAgICAgIGRlbGV0ZSBzaGFkZXJPYmplY3QtPnNlY29uZDsKLSAgICAgICAgICAg
IG1TaGFkZXJNYXAuZXJhc2Uoc2hhZGVyT2JqZWN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNoYWRlck9iamVjdC0+c2Vjb25kLT5mbGFnRm9yRGVs
ZXRpb24oKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRl
bGV0ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCi17Ci0gICAgUHJvZ3JhbU1hcDo6aXRlcmF0b3Ig
cHJvZ3JhbU9iamVjdCA9IG1Qcm9ncmFtTWFwLmZpbmQocHJvZ3JhbSk7Ci0KLSAgICBpZiAocHJv
Z3JhbU9iamVjdCAhPSBtUHJvZ3JhbU1hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9n
cmFtT2JqZWN0LT5zZWNvbmQtPmdldFJlZkNvdW50KCkgPT0gMCkKLSAgICAgICAgewotICAgICAg
ICAgICAgbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IucmVsZWFzZShwcm9ncmFtT2JqZWN0
LT5maXJzdCk7Ci0gICAgICAgICAgICBkZWxldGUgcHJvZ3JhbU9iamVjdC0+c2Vjb25kOwotICAg
ICAgICAgICAgbVByb2dyYW1NYXAuZXJhc2UocHJvZ3JhbU9iamVjdCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICB7IAotICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2Vjb25k
LT5mbGFnRm9yRGVsZXRpb24oKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJj
ZU1hbmFnZXI6OmRlbGV0ZVRleHR1cmUoR0x1aW50IHRleHR1cmUpCi17Ci0gICAgVGV4dHVyZU1h
cDo6aXRlcmF0b3IgdGV4dHVyZU9iamVjdCA9IG1UZXh0dXJlTWFwLmZpbmQodGV4dHVyZSk7Ci0K
LSAgICBpZiAodGV4dHVyZU9iamVjdCAhPSBtVGV4dHVyZU1hcC5lbmQoKSkKLSAgICB7Ci0gICAg
ICAgIG1UZXh0dXJlSGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UodGV4dHVyZU9iamVjdC0+Zmlyc3Qp
OwotICAgICAgICBpZiAodGV4dHVyZU9iamVjdC0+c2Vjb25kKSB0ZXh0dXJlT2JqZWN0LT5zZWNv
bmQtPnJlbGVhc2UoKTsKLSAgICAgICAgbVRleHR1cmVNYXAuZXJhc2UodGV4dHVyZU9iamVjdCk7
Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTWFuYWdlcjo6ZGVsZXRlUmVuZGVyYnVmZmVyKEdM
dWludCByZW5kZXJidWZmZXIpCi17Ci0gICAgUmVuZGVyYnVmZmVyTWFwOjppdGVyYXRvciByZW5k
ZXJidWZmZXJPYmplY3QgPSBtUmVuZGVyYnVmZmVyTWFwLmZpbmQocmVuZGVyYnVmZmVyKTsKLQot
ICAgIGlmIChyZW5kZXJidWZmZXJPYmplY3QgIT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQoKSkKLSAg
ICB7Ci0gICAgICAgIG1SZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0b3IucmVsZWFzZShyZW5kZXJi
dWZmZXJPYmplY3QtPmZpcnN0KTsKLSAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlck9iamVjdC0+c2Vj
b25kKSByZW5kZXJidWZmZXJPYmplY3QtPnNlY29uZC0+cmVsZWFzZSgpOwotICAgICAgICBtUmVu
ZGVyYnVmZmVyTWFwLmVyYXNlKHJlbmRlcmJ1ZmZlck9iamVjdCk7Ci0gICAgfQotfQotCi1CdWZm
ZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0QnVmZmVyKHVuc2lnbmVkIGludCBoYW5kbGUpCi17Ci0g
ICAgQnVmZmVyTWFwOjppdGVyYXRvciBidWZmZXIgPSBtQnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsK
LQotICAgIGlmIChidWZmZXIgPT0gbUJ1ZmZlck1hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gYnVmZmVy
LT5zZWNvbmQ7Ci0gICAgfQotfQotCi1TaGFkZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0U2hhZGVy
KHVuc2lnbmVkIGludCBoYW5kbGUpCi17Ci0gICAgU2hhZGVyTWFwOjppdGVyYXRvciBzaGFkZXIg
PSBtU2hhZGVyTWFwLmZpbmQoaGFuZGxlKTsKLQotICAgIGlmIChzaGFkZXIgPT0gbVNoYWRlck1h
cC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICByZXR1cm4gc2hhZGVyLT5zZWNvbmQ7Ci0gICAgfQotfQotCi1UZXh0dXJl
ICpSZXNvdXJjZU1hbmFnZXI6OmdldFRleHR1cmUodW5zaWduZWQgaW50IGhhbmRsZSkKLXsKLSAg
ICBpZiAoaGFuZGxlID09IDApIHJldHVybiBOVUxMOwotCi0gICAgVGV4dHVyZU1hcDo6aXRlcmF0
b3IgdGV4dHVyZSA9IG1UZXh0dXJlTWFwLmZpbmQoaGFuZGxlKTsKLQotICAgIGlmICh0ZXh0dXJl
ID09IG1UZXh0dXJlTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg
fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiB0ZXh0dXJlLT5zZWNvbmQ7Ci0gICAg
fQotfQotCi1Qcm9ncmFtICpSZXNvdXJjZU1hbmFnZXI6OmdldFByb2dyYW0odW5zaWduZWQgaW50
IGhhbmRsZSkKLXsKLSAgICBQcm9ncmFtTWFwOjppdGVyYXRvciBwcm9ncmFtID0gbVByb2dyYW1N
YXAuZmluZChoYW5kbGUpOwotCi0gICAgaWYgKHByb2dyYW0gPT0gbVByb2dyYW1NYXAuZW5kKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHByb2dyYW0tPnNlY29uZDsKLSAgICB9Ci19Ci0KLVJlbmRlcmJ1ZmZlciAq
UmVzb3VyY2VNYW5hZ2VyOjpnZXRSZW5kZXJidWZmZXIodW5zaWduZWQgaW50IGhhbmRsZSkKLXsK
LSAgICBSZW5kZXJidWZmZXJNYXA6Oml0ZXJhdG9yIHJlbmRlcmJ1ZmZlciA9IG1SZW5kZXJidWZm
ZXJNYXAuZmluZChoYW5kbGUpOwotCi0gICAgaWYgKHJlbmRlcmJ1ZmZlciA9PSBtUmVuZGVyYnVm
ZmVyTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVs
c2UKLSAgICB7Ci0gICAgICAgIHJldHVybiByZW5kZXJidWZmZXItPnNlY29uZDsKLSAgICB9Ci19
Ci0KLXZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpzZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSwg
UmVuZGVyYnVmZmVyICpidWZmZXIpCi17Ci0gICAgbVJlbmRlcmJ1ZmZlck1hcFtoYW5kbGVdID0g
YnVmZmVyOwotfQotCi12b2lkIFJlc291cmNlTWFuYWdlcjo6Y2hlY2tCdWZmZXJBbGxvY2F0aW9u
KHVuc2lnbmVkIGludCBidWZmZXIpCi17Ci0gICAgaWYgKGJ1ZmZlciAhPSAwICYmICFnZXRCdWZm
ZXIoYnVmZmVyKSkKLSAgICB7Ci0gICAgICAgIEJ1ZmZlciAqYnVmZmVyT2JqZWN0ID0gbmV3IEJ1
ZmZlcihidWZmZXIpOwotICAgICAgICBtQnVmZmVyTWFwW2J1ZmZlcl0gPSBidWZmZXJPYmplY3Q7
Ci0gICAgICAgIGJ1ZmZlck9iamVjdC0+YWRkUmVmKCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291
cmNlTWFuYWdlcjo6Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbihHTHVpbnQgdGV4dHVyZSwgVGV4dHVy
ZVR5cGUgdHlwZSkKLXsKLSAgICBpZiAoIWdldFRleHR1cmUodGV4dHVyZSkgJiYgdGV4dHVyZSAh
PSAwKQotICAgIHsKLSAgICAgICAgVGV4dHVyZSAqdGV4dHVyZU9iamVjdDsKLQotICAgICAgICBp
ZiAodHlwZSA9PSBURVhUVVJFXzJEKQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXh0dXJlT2Jq
ZWN0ID0gbmV3IFRleHR1cmUyRCh0ZXh0dXJlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlm
ICh0eXBlID09IFRFWFRVUkVfQ1VCRSkKLSAgICAgICAgewotICAgICAgICAgICAgdGV4dHVyZU9i
amVjdCA9IG5ldyBUZXh0dXJlQ3ViZU1hcCh0ZXh0dXJlKTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtVGV4dHVyZU1hcFt0ZXh0dXJlXSA9IHRleHR1
cmVPYmplY3Q7Ci0gICAgICAgIHRleHR1cmVPYmplY3QtPmFkZFJlZigpOwotICAgIH0KLX0KLQot
dm9pZCBSZXNvdXJjZU1hbmFnZXI6OmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihHTHVpbnQg
cmVuZGVyYnVmZmVyKQotewotICAgIGlmIChyZW5kZXJidWZmZXIgIT0gMCAmJiAhZ2V0UmVuZGVy
YnVmZmVyKHJlbmRlcmJ1ZmZlcikpCi0gICAgewotICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRl
cmJ1ZmZlck9iamVjdCA9IG5ldyBSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyLCBuZXcgQ29sb3Ji
dWZmZXIoMCwgMCwgR0xfUkdCQTQsIDApKTsKLSAgICAgICAgbVJlbmRlcmJ1ZmZlck1hcFtyZW5k
ZXJidWZmZXJdID0gcmVuZGVyYnVmZmVyT2JqZWN0OwotICAgICAgICByZW5kZXJidWZmZXJPYmpl
Y3QtPmFkZFJlZigpOwotICAgIH0KLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IGFlNGYxYjAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDExNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBSZXNvdXJjZU1hbmFnZXIuaCA6
IERlZmluZXMgdGhlIFJlc291cmNlTWFuYWdlciBjbGFzcywgd2hpY2ggdHJhY2tzIG9iamVjdHMK
LS8vIHNoYXJlZCBieSBtdWx0aXBsZSBHTCBjb250ZXh0cy4KLQotI2lmbmRlZiBMSUJHTEVTVjJf
UkVTT1VSQ0VNQU5BR0VSX0hfCi0jZGVmaW5lIExJQkdMRVNWMl9SRVNPVVJDRU1BTkFHRVJfSF8K
LQotI2RlZmluZSBHTF9BUElDQUxMCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0KLSNpZmRlZiBf
TVNDX1ZFUgotI2luY2x1ZGUgPGhhc2hfbWFwPgotI2Vsc2UKLSNpbmNsdWRlIDx1bm9yZGVyZWRf
bWFwPgotI2VuZGlmCi0KLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2luY2x1ZGUg
ImxpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCIKLQotbmFtZXNwYWNlIGdsCi17Ci1jbGFzcyBC
dWZmZXI7Ci1jbGFzcyBTaGFkZXI7Ci1jbGFzcyBQcm9ncmFtOwotY2xhc3MgVGV4dHVyZTsKLWNs
YXNzIFJlbmRlcmJ1ZmZlcjsKLQotZW51bSBUZXh0dXJlVHlwZQotewotICAgIFRFWFRVUkVfMkQs
Ci0gICAgVEVYVFVSRV9DVUJFLAotCi0gICAgVEVYVFVSRV9UWVBFX0NPVU5ULAotICAgIFRFWFRV
UkVfVU5LTk9XTgotfTsKLQotZW51bSBTYW1wbGVyVHlwZQotewotICAgIFNBTVBMRVJfUElYRUws
Ci0gICAgU0FNUExFUl9WRVJURVgKLX07Ci0KLWNsYXNzIFJlc291cmNlTWFuYWdlcgotewotICBw
dWJsaWM6Ci0gICAgUmVzb3VyY2VNYW5hZ2VyKCk7Ci0gICAgflJlc291cmNlTWFuYWdlcigpOwot
Ci0gICAgdm9pZCBhZGRSZWYoKTsKLSAgICB2b2lkIHJlbGVhc2UoKTsKLQotICAgIEdMdWludCBj
cmVhdGVCdWZmZXIoKTsKLSAgICBHTHVpbnQgY3JlYXRlU2hhZGVyKEdMZW51bSB0eXBlKTsKLSAg
ICBHTHVpbnQgY3JlYXRlUHJvZ3JhbSgpOwotICAgIEdMdWludCBjcmVhdGVUZXh0dXJlKCk7Ci0g
ICAgR0x1aW50IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotCi0gICAgdm9pZCBkZWxldGVCdWZmZXIo
R0x1aW50IGJ1ZmZlcik7Ci0gICAgdm9pZCBkZWxldGVTaGFkZXIoR0x1aW50IHNoYWRlcik7Ci0g
ICAgdm9pZCBkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKLSAgICB2b2lkIGRlbGV0ZVRl
eHR1cmUoR0x1aW50IHRleHR1cmUpOwotICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKEdMdWlu
dCByZW5kZXJidWZmZXIpOwotCi0gICAgQnVmZmVyICpnZXRCdWZmZXIoR0x1aW50IGhhbmRsZSk7
Ci0gICAgU2hhZGVyICpnZXRTaGFkZXIoR0x1aW50IGhhbmRsZSk7Ci0gICAgUHJvZ3JhbSAqZ2V0
UHJvZ3JhbShHTHVpbnQgaGFuZGxlKTsKLSAgICBUZXh0dXJlICpnZXRUZXh0dXJlKEdMdWludCBo
YW5kbGUpOwotICAgIFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVyYnVmZmVyKEdMdWludCBoYW5kbGUp
OwotICAgIAotICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVyKEdMdWludCBoYW5kbGUsIFJlbmRlcmJ1
ZmZlciAqcmVuZGVyYnVmZmVyKTsKLQotICAgIHZvaWQgY2hlY2tCdWZmZXJBbGxvY2F0aW9uKHVu
c2lnbmVkIGludCBidWZmZXIpOwotICAgIHZvaWQgY2hlY2tUZXh0dXJlQWxsb2NhdGlvbihHTHVp
bnQgdGV4dHVyZSwgVGV4dHVyZVR5cGUgdHlwZSk7Ci0gICAgdm9pZCBjaGVja1JlbmRlcmJ1ZmZl
ckFsbG9jYXRpb24oR0x1aW50IHJlbmRlcmJ1ZmZlcik7Ci0KLSAgcHJpdmF0ZToKLSAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oUmVzb3VyY2VNYW5hZ2VyKTsKLQotICAgIHN0ZDo6c2l6ZV90
IG1SZWZDb3VudDsKLQotI2lmbmRlZiBIQVNIX01BUAotIyBpZmRlZiBfTVNDX1ZFUgotIyAgZGVm
aW5lIEhBU0hfTUFQIHN0ZGV4dDo6aGFzaF9tYXAKLSMgZWxzZQotIyAgZGVmaW5lIEhBU0hfTUFQ
IHN0ZDo6dW5vcmRlcmVkX21hcAotIyBlbmRpZgotI2VuZGlmCi0KLSAgICB0eXBlZGVmIEhBU0hf
TUFQPEdMdWludCwgQnVmZmVyKj4gQnVmZmVyTWFwOwotICAgIEJ1ZmZlck1hcCBtQnVmZmVyTWFw
OwotICAgIEhhbmRsZUFsbG9jYXRvciBtQnVmZmVySGFuZGxlQWxsb2NhdG9yOwotCi0gICAgdHlw
ZWRlZiBIQVNIX01BUDxHTHVpbnQsIFNoYWRlcio+IFNoYWRlck1hcDsKLSAgICBTaGFkZXJNYXAg
bVNoYWRlck1hcDsKLQotICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBQcm9ncmFtKj4gUHJv
Z3JhbU1hcDsKLSAgICBQcm9ncmFtTWFwIG1Qcm9ncmFtTWFwOwotICAgIEhhbmRsZUFsbG9jYXRv
ciBtUHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvcjsKLQotICAgIHR5cGVkZWYgSEFTSF9NQVA8
R0x1aW50LCBUZXh0dXJlKj4gVGV4dHVyZU1hcDsKLSAgICBUZXh0dXJlTWFwIG1UZXh0dXJlTWFw
OwotICAgIEhhbmRsZUFsbG9jYXRvciBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvcjsKLQotICAgIHR5
cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBSZW5kZXJidWZmZXIqPiBSZW5kZXJidWZmZXJNYXA7Ci0g
ICAgUmVuZGVyYnVmZmVyTWFwIG1SZW5kZXJidWZmZXJNYXA7Ci0gICAgSGFuZGxlQWxsb2NhdG9y
IG1SZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0b3I7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBMSUJH
TEVTVjJfUkVTT1VSQ0VNQU5BR0VSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL1NoYWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGMz
ZWU2NDQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9TaGFkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTg4ICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLS8vCi0KLS8vIFNoYWRlci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpTaGFkZXIgY2xhc3Mg
YW5kIGl0cyAgZGVyaXZlZCBjbGFzc2VzCi0vLyBWZXJ0ZXhTaGFkZXIgYW5kIEZyYWdtZW50U2hh
ZGVyLiBJbXBsZW1lbnRzIEdMIHNoYWRlciBvYmplY3RzIGFuZCByZWxhdGVkCi0vLyBmdW5jdGlv
bmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjEwIHBhZ2UgMjQgYW5kIHNlY3Rp
b24gMy44IHBhZ2UgODQuCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIvU2hhZGVyLmgiCi0KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLSNpbmNsdWRl
ICJsaWJHTEVTdjIvbWFpbi5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKLQot
bmFtZXNwYWNlIGdsCi17Ci12b2lkICpTaGFkZXI6Om1GcmFnbWVudENvbXBpbGVyID0gTlVMTDsK
LXZvaWQgKlNoYWRlcjo6bVZlcnRleENvbXBpbGVyID0gTlVMTDsKLQotU2hhZGVyOjpTaGFkZXIo
UmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKSA6IG1IYW5kbGUoaGFuZGxl
KSwgbVJlc291cmNlTWFuYWdlcihtYW5hZ2VyKQotewotICAgIG1Tb3VyY2UgPSBOVUxMOwotICAg
IG1IbHNsID0gTlVMTDsKLSAgICBtSW5mb0xvZyA9IE5VTEw7Ci0KLSAgICB1bmNvbXBpbGUoKTsK
LSAgICBpbml0aWFsaXplQ29tcGlsZXIoKTsKLQotICAgIG1SZWZDb3VudCA9IDA7Ci0gICAgbURl
bGV0ZVN0YXR1cyA9IGZhbHNlOwotfQotCi1TaGFkZXI6On5TaGFkZXIoKQotewotICAgIGRlbGV0
ZVtdIG1Tb3VyY2U7Ci0gICAgZGVsZXRlW10gbUhsc2w7Ci0gICAgZGVsZXRlW10gbUluZm9Mb2c7
Ci19Ci0KLUdMdWludCBTaGFkZXI6OmdldEhhbmRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1I
YW5kbGU7Ci19Ci0KLXZvaWQgU2hhZGVyOjpzZXRTb3VyY2UoR0xzaXplaSBjb3VudCwgY29uc3Qg
Y2hhciAqKnN0cmluZywgY29uc3QgR0xpbnQgKmxlbmd0aCkKLXsKLSAgICBkZWxldGVbXSBtU291
cmNlOwotICAgIGludCB0b3RhbExlbmd0aCA9IDA7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNvdW50OyBpKyspCi0gICAgewotICAgICAgICBpZiAobGVuZ3RoICYmIGxlbmd0aFtpXSA+PSAw
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0b3RhbExlbmd0aCArPSBsZW5ndGhbaV07Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICB0b3RhbExlbmd0aCAr
PSAoaW50KXN0cmxlbihzdHJpbmdbaV0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbVNvdXJj
ZSA9IG5ldyBjaGFyW3RvdGFsTGVuZ3RoICsgMV07Ci0gICAgY2hhciAqY29kZSA9IG1Tb3VyY2U7
Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgewotICAgICAgICBp
bnQgc3RyaW5nTGVuZ3RoOwotCi0gICAgICAgIGlmIChsZW5ndGggJiYgbGVuZ3RoW2ldID49IDAp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IGxlbmd0aFtpXTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9
IChpbnQpc3RybGVuKHN0cmluZ1tpXSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJuY3B5KGNv
ZGUsIHN0cmluZ1tpXSwgc3RyaW5nTGVuZ3RoKTsKLSAgICAgICAgY29kZSArPSBzdHJpbmdMZW5n
dGg7Ci0gICAgfQotCi0gICAgbVNvdXJjZVt0b3RhbExlbmd0aF0gPSAnXDAnOwotfQotCi1pbnQg
U2hhZGVyOjpnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3QKLXsKLSAgICBpZiAoIW1JbmZvTG9nKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAg
cmV0dXJuIHN0cmxlbihtSW5mb0xvZykgKyAxOwotICAgIH0KLX0KLQotdm9pZCBTaGFkZXI6Omdl
dEluZm9Mb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cp
Ci17Ci0gICAgaW50IGluZGV4ID0gMDsKLQotICAgIGlmIChidWZTaXplID4gMCkKLSAgICB7Ci0g
ICAgICAgIGlmIChtSW5mb0xvZykKLSAgICAgICAgewotICAgICAgICAgICAgaW5kZXggPSBzdGQ6
Om1pbihidWZTaXplIC0gMSwgKGludClzdHJsZW4obUluZm9Mb2cpKTsKLSAgICAgICAgICAgIG1l
bWNweShpbmZvTG9nLCBtSW5mb0xvZywgaW5kZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5m
b0xvZ1tpbmRleF0gPSAnXDAnOwotICAgIH0KLQotICAgIGlmIChsZW5ndGgpCi0gICAgewotICAg
ICAgICAqbGVuZ3RoID0gaW5kZXg7Ci0gICAgfQotfQotCi1pbnQgU2hhZGVyOjpnZXRTb3VyY2VM
ZW5ndGgoKSBjb25zdAotewotICAgIGlmICghbVNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgIHJldHVybiBzdHJsZW4obVNvdXJj
ZSkgKyAxOwotICAgIH0KLX0KLQotaW50IFNoYWRlcjo6Z2V0VHJhbnNsYXRlZFNvdXJjZUxlbmd0
aCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtSGxzbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgIHJldHVybiBzdHJsZW4obUhsc2wpICsgMTsK
LSAgICB9Ci19Ci0KLXZvaWQgU2hhZGVyOjpnZXRTb3VyY2VJbXBsKGNoYXIgKnNvdXJjZSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcikKLXsKLSAgICBpbnQg
aW5kZXggPSAwOwotCi0gICAgaWYgKGJ1ZlNpemUgPiAwKQotICAgIHsKLSAgICAgICAgaWYgKHNv
dXJjZSkKLSAgICAgICAgewotICAgICAgICAgICAgaW5kZXggPSBzdGQ6Om1pbihidWZTaXplIC0g
MSwgKGludClzdHJsZW4oc291cmNlKSk7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzb3Vy
Y2UsIGluZGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1ZmZlcltpbmRleF0gPSAnXDAnOwot
ICAgIH0KLQotICAgIGlmIChsZW5ndGgpCi0gICAgewotICAgICAgICAqbGVuZ3RoID0gaW5kZXg7
Ci0gICAgfQotfQotCi12b2lkIFNoYWRlcjo6Z2V0U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpCi17Ci0gICAgZ2V0U291cmNlSW1wbChtU291cmNl
LCBidWZTaXplLCBsZW5ndGgsIGJ1ZmZlcik7Ci19Ci0KLXZvaWQgU2hhZGVyOjpnZXRUcmFuc2xh
dGVkU291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIp
Ci17Ci0gICAgZ2V0U291cmNlSW1wbChtSGxzbCwgYnVmU2l6ZSwgbGVuZ3RoLCBidWZmZXIpOwot
fQotCi1ib29sIFNoYWRlcjo6aXNDb21waWxlZCgpCi17Ci0gICAgcmV0dXJuIG1IbHNsICE9IE5V
TEw7Ci19Ci0KLWNvbnN0IGNoYXIgKlNoYWRlcjo6Z2V0SExTTCgpCi17Ci0gICAgcmV0dXJuIG1I
bHNsOwotfQotCi12b2lkIFNoYWRlcjo6YWRkUmVmKCkKLXsKLSAgICBtUmVmQ291bnQrKzsKLX0K
LQotdm9pZCBTaGFkZXI6OnJlbGVhc2UoKQotewotICAgIG1SZWZDb3VudC0tOwotCi0gICAgaWYg
KG1SZWZDb3VudCA9PSAwICYmIG1EZWxldGVTdGF0dXMpCi0gICAgewotICAgICAgICBtUmVzb3Vy
Y2VNYW5hZ2VyLT5kZWxldGVTaGFkZXIobUhhbmRsZSk7Ci0gICAgfQotfQotCi11bnNpZ25lZCBp
bnQgU2hhZGVyOjpnZXRSZWZDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1SZWZDb3VudDsK
LX0KLQotYm9vbCBTaGFkZXI6OmlzRmxhZ2dlZEZvckRlbGV0aW9uKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbURlbGV0ZVN0YXR1czsKLX0KLQotdm9pZCBTaGFkZXI6OmZsYWdGb3JEZWxldGlvbigp
Ci17Ci0gICAgbURlbGV0ZVN0YXR1cyA9IHRydWU7Ci19Ci0KLS8vIFBlcmZvcm0gYSBvbmUtdGlt
ZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2hhZGVyIGNvbXBpbGVyIChvciBhZnRlciBiZWluZyBk
ZXN0cnVjdGVkIGJ5IHJlbGVhc2VDb21waWxlcikKLXZvaWQgU2hhZGVyOjppbml0aWFsaXplQ29t
cGlsZXIoKQotewotICAgIGlmICghbUZyYWdtZW50Q29tcGlsZXIpCi0gICAgewotICAgICAgICBp
bnQgcmVzdWx0ID0gU2hJbml0aWFsaXplKCk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAg
ICAgewotICAgICAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAg
ICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0gICAgICAgICAgICBDb250
ZXh0ICpjb250ZXh0ID0gZ2V0Q29udGV4dCgpOwotCi0gICAgICAgICAgICByZXNvdXJjZXMuTWF4
VmVydGV4QXR0cmlicyA9IE1BWF9WRVJURVhfQVRUUklCUzsKLSAgICAgICAgICAgIHJlc291cmNl
cy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA9IE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOwot
ICAgICAgICAgICAgcmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzID0gY29udGV4dC0+Z2V0TWF4
aW11bVZhcnlpbmdWZWN0b3JzKCk7Ci0gICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4VGV4
dHVyZUltYWdlVW5pdHMgPSBjb250ZXh0LT5nZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5p
dHMoKTsKLSAgICAgICAgICAgIHJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
ID0gY29udGV4dC0+Z2V0TWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKTsKLSAgICAg
ICAgICAgIHJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyA9IE1BWF9URVhUVVJFX0lNQUdF
X1VOSVRTOwotICAgICAgICAgICAgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMg
PSBjb250ZXh0LT5nZXRNYXhpbXVtRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpOwotICAgICAgICAg
ICAgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gTUFYX0RSQVdfQlVGRkVSUzsKLSAgICAgICAg
ICAgIHJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSBjb250ZXh0LT5zdXBwb3J0
c0Rlcml2YXRpdmVJbnN0cnVjdGlvbnMoKSA/IDEgOiAwOwotICAgICAgICAgICAgLy8gcmVzb3Vy
Y2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSBnZXREaXNwbGF5KCktPmlzRDNkOUV4RGV2aWNl
KCkgPyAxIDogMDsgLy8gVE9ETzogY29tbWVudGVkIG91dCB1bnRpbCB0aGUgZXh0ZW5zaW9uIGlz
IGFjdHVhbGx5IHN1cHBvcnRlZC4KLSAgICAgICAgICAgIHJlc291cmNlcy5GcmFnbWVudFByZWNp
c2lvbkhpZ2ggPSAxOyAgIC8vIFNoYWRlciBNb2RlbCAyKyBhbHdheXMgc3VwcG9ydHMgRlAyNCAo
czE2ZTcpIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGhpZ2hwCi0gICAgICAgICAgICByZXNvdXJjZXMu
RVhUX2ZyYWdfZGVwdGggPSAxOyAvLyBTaGFkZXIgTW9kZWwgMisgYWx3YXlzIHN1cHBvcnRzIGV4
cGxpY2l0IGRlcHRoIG91dHB1dAotCi0gICAgICAgICAgICBtRnJhZ21lbnRDb21waWxlciA9IFNo
Q29uc3RydWN0Q29tcGlsZXIoU0hfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTMl9TUEVDLCBTSF9I
TFNMX09VVFBVVCwgJnJlc291cmNlcyk7Ci0gICAgICAgICAgICBtVmVydGV4Q29tcGlsZXIgPSBT
aENvbnN0cnVjdENvbXBpbGVyKFNIX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMyX1NQRUMsIFNIX0hM
U0xfT1VUUFVULCAmcmVzb3VyY2VzKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBTaGFk
ZXI6OnJlbGVhc2VDb21waWxlcigpCi17Ci0gICAgU2hEZXN0cnVjdChtRnJhZ21lbnRDb21waWxl
cik7Ci0gICAgU2hEZXN0cnVjdChtVmVydGV4Q29tcGlsZXIpOwotCi0gICAgbUZyYWdtZW50Q29t
cGlsZXIgPSBOVUxMOwotICAgIG1WZXJ0ZXhDb21waWxlciA9IE5VTEw7Ci0KLSAgICBTaEZpbmFs
aXplKCk7Ci19Ci0KLXZvaWQgU2hhZGVyOjpwYXJzZVZhcnlpbmdzKCkKLXsKLSAgICBpZiAobUhs
c2wpCi0gICAgewotICAgICAgICBjb25zdCBjaGFyICppbnB1dCA9IHN0cnN0cihtSGxzbCwgIi8v
IFZhcnlpbmdzIikgKyAxMjsKLQotICAgICAgICB3aGlsZSh0cnVlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjaGFyIHZhcnlpbmdUeXBlWzI1Nl07Ci0gICAgICAgICAgICBjaGFyIHZhcnlpbmdO
YW1lWzI1Nl07Ci0KLSAgICAgICAgICAgIGludCBtYXRjaGVzID0gc3NjYW5mKGlucHV0LCAic3Rh
dGljICUyNTVzICUyNTVzIiwgdmFyeWluZ1R5cGUsIHZhcnlpbmdOYW1lKTsKLQotICAgICAgICAg
ICAgaWYgKG1hdGNoZXMgIT0gMikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2hhciAqYXJyYXkgPSBzdHJzdHIodmFy
eWluZ05hbWUsICJbIik7Ci0gICAgICAgICAgICBpbnQgc2l6ZSA9IDE7Ci0KLSAgICAgICAgICAg
IGlmIChhcnJheSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzaXplID0gYXRvaShh
cnJheSArIDEpOwotICAgICAgICAgICAgICAgICphcnJheSA9ICdcMCc7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIG1WYXJ5aW5ncy5wdXNoX2JhY2soVmFyeWluZyhwYXJzZVR5cGUodmFy
eWluZ1R5cGUpLCB2YXJ5aW5nTmFtZSwgc2l6ZSwgYXJyYXkgIT0gTlVMTCkpOwotCi0gICAgICAg
ICAgICBpbnB1dCA9IHN0cnN0cihpbnB1dCwgIjsiKSArIDI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBtVXNlc0ZyYWdDb29yZCA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfRlJBR19DT09SRCIpICE9
IE5VTEw7Ci0gICAgICAgIG1Vc2VzRnJvbnRGYWNpbmcgPSBzdHJzdHIobUhsc2wsICJHTF9VU0VT
X0ZST05UX0ZBQ0lORyIpICE9IE5VTEw7Ci0gICAgICAgIG1Vc2VzUG9pbnRTaXplID0gc3Ryc3Ry
KG1IbHNsLCAiR0xfVVNFU19QT0lOVF9TSVpFIikgIT0gTlVMTDsKLSAgICAgICAgbVVzZXNQb2lu
dENvb3JkID0gc3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19QT0lOVF9DT09SRCIpICE9IE5VTEw7Ci0g
ICAgICAgIG1Vc2VzRnJhZ0RlcHRoID0gc3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19GUkFHX0RFUFRI
IikgIT0gTlVMTDsKLSAgICB9Ci19Ci0KLS8vIGluaXRpYWxpemUvY2xlYW4gdXAgcHJldmlvdXMg
c3RhdGUKLXZvaWQgU2hhZGVyOjp1bmNvbXBpbGUoKQotewotICAgIC8vIHNldCBieSBjb21waWxl
VG9ITFNMCi0gICAgZGVsZXRlW10gbUhsc2w7Ci0gICAgbUhsc2wgPSBOVUxMOwotICAgIGRlbGV0
ZVtdIG1JbmZvTG9nOwotICAgIG1JbmZvTG9nID0gTlVMTDsKLQotICAgIC8vIHNldCBieSBwYXJz
ZVZhcnlpbmdzCi0gICAgbVZhcnlpbmdzLmNsZWFyKCk7Ci0KLSAgICBtVXNlc0ZyYWdDb29yZCA9
IGZhbHNlOwotICAgIG1Vc2VzRnJvbnRGYWNpbmcgPSBmYWxzZTsKLSAgICBtVXNlc1BvaW50U2l6
ZSA9IGZhbHNlOwotICAgIG1Vc2VzUG9pbnRDb29yZCA9IGZhbHNlOwotICAgIG1Vc2VzRnJhZ0Rl
cHRoID0gZmFsc2U7Ci19Ci0KLXZvaWQgU2hhZGVyOjpjb21waWxlVG9ITFNMKHZvaWQgKmNvbXBp
bGVyKQotewotICAgIC8vIGVuc3VyZSB3ZSBkb24ndCBwYXNzIGEgTlVMTCBzb3VyY2UgdG8gdGhl
IGNvbXBpbGVyCi0gICAgY29uc3QgY2hhciAqc291cmNlID0gIlwwIjsKLSAgICBpZiAobVNvdXJj
ZSkKLSAgICB7Ci0gICAgICAgIHNvdXJjZSA9IG1Tb3VyY2U7Ci0gICAgfQotCi0gICAgLy8gZW5z
dXJlIHRoZSBjb21waWxlciBpcyBsb2FkZWQKLSAgICBpbml0aWFsaXplQ29tcGlsZXIoKTsKLQot
ICAgIGludCBjb21waWxlT3B0aW9ucyA9IFNIX09CSkVDVF9DT0RFOwotICAgIHN0ZDo6c3RyaW5n
IHNvdXJjZVBhdGg7Ci0gICAgaWYgKHBlcmZBY3RpdmUoKSkKLSAgICB7Ci0gICAgICAgIHNvdXJj
ZVBhdGggPSBnZXRUZW1wUGF0aCgpOwotICAgICAgICB3cml0ZUZpbGUoc291cmNlUGF0aC5jX3N0
cigpLCBzb3VyY2UsIHN0cmxlbihzb3VyY2UpKTsKLSAgICAgICAgY29tcGlsZU9wdGlvbnMgfD0g
U0hfTElORV9ESVJFQ1RJVkVTOwotICAgIH0KLQotICAgIGludCByZXN1bHQ7Ci0gICAgaWYgKHNv
dXJjZVBhdGguZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIHJlc3VsdCA9IFNoQ29tcGlsZShjb21w
aWxlciwgJnNvdXJjZSwgMSwgY29tcGlsZU9wdGlvbnMpOwotICAgIH0KLSAgICBlbHNlCi0gICAg
ewotICAgICAgICBjb25zdCBjaGFyKiBzb3VyY2VTdHJpbmdzWzJdID0KLSAgICAgICAgewotICAg
ICAgICAgICAgc291cmNlUGF0aC5jX3N0cigpLAotICAgICAgICAgICAgc291cmNlCi0gICAgICAg
IH07Ci0KLSAgICAgICAgcmVzdWx0ID0gU2hDb21waWxlKGNvbXBpbGVyLCBzb3VyY2VTdHJpbmdz
LCAyLCBjb21waWxlT3B0aW9ucyB8IFNIX1NPVVJDRV9QQVRIKTsKLSAgICB9Ci0KLSAgICBpZiAo
cmVzdWx0KQotICAgIHsKLSAgICAgICAgc2l6ZV90IG9iakNvZGVMZW4gPSAwOwotICAgICAgICBT
aEdldEluZm8oY29tcGlsZXIsIFNIX09CSkVDVF9DT0RFX0xFTkdUSCwgJm9iakNvZGVMZW4pOwot
ICAgICAgICBtSGxzbCA9IG5ldyBjaGFyW29iakNvZGVMZW5dOwotICAgICAgICBTaEdldE9iamVj
dENvZGUoY29tcGlsZXIsIG1IbHNsKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg
c2l6ZV90IGluZm9Mb2dMZW4gPSAwOwotICAgICAgICBTaEdldEluZm8oY29tcGlsZXIsIFNIX0lO
Rk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW4pOwotICAgICAgICBtSW5mb0xvZyA9IG5ldyBjaGFy
W2luZm9Mb2dMZW5dOwotICAgICAgICBTaEdldEluZm9Mb2coY29tcGlsZXIsIG1JbmZvTG9nKTsK
LQotICAgICAgICBUUkFDRSgiXG4lcyIsIG1JbmZvTG9nKTsKLSAgICB9Ci19Ci0KLUdMZW51bSBT
aGFkZXI6OnBhcnNlVHlwZShjb25zdCBzdGQ6OnN0cmluZyAmdHlwZSkKLXsKLSAgICBpZiAodHlw
ZSA9PSAiZmxvYXQiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOwotICAgIH0KLSAg
ICBlbHNlIGlmICh0eXBlID09ICJmbG9hdDIiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEdMX0ZM
T0FUX1ZFQzI7Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUgPT0gImZsb2F0MyIpCi0gICAgewot
ICAgICAgICByZXR1cm4gR0xfRkxPQVRfVkVDMzsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZSA9
PSAiZmxvYXQ0IikKLSAgICB7Ci0gICAgICAgIHJldHVybiBHTF9GTE9BVF9WRUM0OwotICAgIH0K
LSAgICBlbHNlIGlmICh0eXBlID09ICJmbG9hdDJ4MiIpCi0gICAgewotICAgICAgICByZXR1cm4g
R0xfRkxPQVRfTUFUMjsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZSA9PSAiZmxvYXQzeDMiKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01BVDM7Ci0gICAgfQotICAgIGVsc2UgaWYg
KHR5cGUgPT0gImZsb2F0NHg0IikKLSAgICB7Ci0gICAgICAgIHJldHVybiBHTF9GTE9BVF9NQVQ0
OwotICAgIH0KLSAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAgICByZXR1cm4gR0xfTk9ORTsK
LX0KLQotLy8gdHJ1ZSBpZiB2YXJ5aW5nIHggaGFzIGEgaGlnaGVyIHByaW9yaXR5IGluIHBhY2tp
bmcgdGhhbiB5Ci1ib29sIFNoYWRlcjo6Y29tcGFyZVZhcnlpbmcoY29uc3QgVmFyeWluZyAmeCwg
Y29uc3QgVmFyeWluZyAmeSkKLXsKLSAgICBpZih4LnR5cGUgPT0geS50eXBlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHguc2l6ZSA+IHkuc2l6ZTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHgudHlw
ZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6IHJldHVybiB0cnVlOwotICAgICAg
Y2FzZSBHTF9GTE9BVF9NQVQyOgotICAgICAgICBzd2l0Y2goeS50eXBlKQotICAgICAgICB7Ci0g
ICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQyOiByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZF
QzQ6IHJldHVybiB0cnVlOwotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOwotICAgICAgICAgIGNhc2UgR0xfRkxP
QVQ6ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
LSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKLSAg
ICAgICAgc3dpdGNoKHkudHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
TUFUNDogcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogcmV0dXJu
IGZhbHNlOwotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOiByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBjYXNlIEdM
X0ZMT0FUX1ZFQzM6IHJldHVybiB0cnVlOwotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjog
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgotICAgICAgICBzd2l0Y2goeS50eXBlKQot
ICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOiByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgY2Fz
ZSBHTF9GTE9BVF9WRUM0OiByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVF9N
QVQzOiByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6IHJldHVybiB0
cnVlOwotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9G
TE9BVF9WRUMzOgotICAgICAgICBzd2l0Y2goeS50eXBlKQotICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9B
VF9NQVQyOiByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OiByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOiByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBjYXNl
IEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOwotICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKLSAgICAgICAg
c3dpdGNoKHkudHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDog
cmV0dXJuIGZhbHNlOwotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogcmV0dXJuIGZhbHNl
OwotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIGZhbHNlOwotICAgICAgICAg
IGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGNhc2UgR0xfRkxP
QVRfVkVDMzogcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9GTE9BVDogcmV0dXJuIGZhbHNlOwotICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZlcnRleFNoYWRl
cjo6VmVydGV4U2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSkg
OiBTaGFkZXIobWFuYWdlciwgaGFuZGxlKQotewotfQotCi1WZXJ0ZXhTaGFkZXI6On5WZXJ0ZXhT
aGFkZXIoKQotewotfQotCi1HTGVudW0gVmVydGV4U2hhZGVyOjpnZXRUeXBlKCkKLXsKLSAgICBy
ZXR1cm4gR0xfVkVSVEVYX1NIQURFUjsKLX0KLQotdm9pZCBWZXJ0ZXhTaGFkZXI6OnVuY29tcGls
ZSgpCi17Ci0gICAgU2hhZGVyOjp1bmNvbXBpbGUoKTsKLQotICAgIC8vIHNldCBieSBQYXJzZUF0
dHJpYnV0ZXMKLSAgICBtQXR0cmlidXRlcy5jbGVhcigpOwotfQotCi12b2lkIFZlcnRleFNoYWRl
cjo6Y29tcGlsZSgpCi17Ci0gICAgdW5jb21waWxlKCk7Ci0KLSAgICBjb21waWxlVG9ITFNMKG1W
ZXJ0ZXhDb21waWxlcik7Ci0gICAgcGFyc2VBdHRyaWJ1dGVzKCk7Ci0gICAgcGFyc2VWYXJ5aW5n
cygpOwotfQotCi1pbnQgVmVydGV4U2hhZGVyOjpnZXRTZW1hbnRpY0luZGV4KGNvbnN0IHN0ZDo6
c3RyaW5nICZhdHRyaWJ1dGVOYW1lKQotewotICAgIGlmICghYXR0cmlidXRlTmFtZS5lbXB0eSgp
KQotICAgIHsKLSAgICAgICAgaW50IHNlbWFudGljSW5kZXggPSAwOwotICAgICAgICBmb3IgKEF0
dHJpYnV0ZUFycmF5OjppdGVyYXRvciBhdHRyaWJ1dGUgPSBtQXR0cmlidXRlcy5iZWdpbigpOyBh
dHRyaWJ1dGUgIT0gbUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoYXR0cmlidXRlLT5uYW1lID09IGF0dHJpYnV0ZU5hbWUpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljSW5kZXg7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHNlbWFudGljSW5kZXggKz0gVmFyaWFibGVSb3dDb3VudChhdHRy
aWJ1dGUtPnR5cGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIC0xOwotfQotCi12
b2lkIFZlcnRleFNoYWRlcjo6cGFyc2VBdHRyaWJ1dGVzKCkKLXsKLSAgICBjb25zdCBjaGFyICpo
bHNsID0gZ2V0SExTTCgpOwotICAgIGlmIChobHNsKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hh
ciAqaW5wdXQgPSBzdHJzdHIoaGxzbCwgIi8vIEF0dHJpYnV0ZXMiKSArIDE0OwotCi0gICAgICAg
IHdoaWxlKHRydWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgYXR0cmlidXRlVHlwZVsy
NTZdOwotICAgICAgICAgICAgY2hhciBhdHRyaWJ1dGVOYW1lWzI1Nl07Ci0KLSAgICAgICAgICAg
IGludCBtYXRjaGVzID0gc3NjYW5mKGlucHV0LCAic3RhdGljICUyNTVzIF8lMjU1cyIsIGF0dHJp
YnV0ZVR5cGUsIGF0dHJpYnV0ZU5hbWUpOwotCi0gICAgICAgICAgICBpZiAobWF0Y2hlcyAhPSAy
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBtQXR0cmlidXRlcy5wdXNoX2JhY2soQXR0cmlidXRlKHBhcnNlVHlwZShh
dHRyaWJ1dGVUeXBlKSwgYXR0cmlidXRlTmFtZSkpOwotCi0gICAgICAgICAgICBpbnB1dCA9IHN0
cnN0cihpbnB1dCwgIjsiKSArIDI7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLUZyYWdtZW50U2hh
ZGVyOjpGcmFnbWVudFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIEdMdWludCBoYW5k
bGUpIDogU2hhZGVyKG1hbmFnZXIsIGhhbmRsZSkKLXsKLX0KLQotRnJhZ21lbnRTaGFkZXI6On5G
cmFnbWVudFNoYWRlcigpCi17Ci19Ci0KLUdMZW51bSBGcmFnbWVudFNoYWRlcjo6Z2V0VHlwZSgp
Ci17Ci0gICAgcmV0dXJuIEdMX0ZSQUdNRU5UX1NIQURFUjsKLX0KLQotdm9pZCBGcmFnbWVudFNo
YWRlcjo6Y29tcGlsZSgpCi17Ci0gICAgdW5jb21waWxlKCk7Ci0KLSAgICBjb21waWxlVG9ITFNM
KG1GcmFnbWVudENvbXBpbGVyKTsKLSAgICBwYXJzZVZhcnlpbmdzKCk7Ci0gICAgbVZhcnlpbmdz
LnNvcnQoY29tcGFyZVZhcnlpbmcpOwotfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvU2hhZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU2
Y2EwM2QuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9TaGFkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotCi0vLyBTaGFkZXIuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3QgZ2w6OlNoYWRlciBjbGFz
cyBhbmQgaXRzIGNvbmNyZXRlIGRlcml2ZWQKLS8vIGNsYXNzZXMgVmVydGV4U2hhZGVyIGFuZCBG
cmFnbWVudFNoYWRlci4gSW1wbGVtZW50cyBHTCBzaGFkZXIgb2JqZWN0cyBhbmQKLS8vIHJlbGF0
ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi4xMCBwYWdlIDI0
IGFuZCBzZWN0aW9uCi0vLyAzLjggcGFnZSA4NC4KLQotI2lmbmRlZiBMSUJHTEVTVjJfU0hBREVS
X0hfCi0jZGVmaW5lIExJQkdMRVNWMl9TSEFERVJfSF8KLQotI2RlZmluZSBHTF9BUElDQUxMCi0j
aW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGxpc3Q+
Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAibGliR0xFU3YyL1Jlc291cmNlTWFuYWdl
ci5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLXN0cnVjdCBWYXJ5aW5nCi17Ci0gICAgVmFyeWluZyhH
TGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGludCBzaXplLCBib29sIGFycmF5
KQotICAgICAgICA6IHR5cGUodHlwZSksIG5hbWUobmFtZSksIHNpemUoc2l6ZSksIGFycmF5KGFy
cmF5KSwgcmVnKC0xKSwgY29sKC0xKQotICAgIHsKLSAgICB9Ci0KLSAgICBHTGVudW0gdHlwZTsK
LSAgICBzdGQ6OnN0cmluZyBuYW1lOwotICAgIGludCBzaXplOyAgIC8vIE51bWJlciBvZiAndHlw
ZScgZWxlbWVudHMKLSAgICBib29sIGFycmF5OwotCi0gICAgaW50IHJlZzsgICAgLy8gRmlyc3Qg
dmFyeWluZyByZWdpc3RlciwgYXNzaWduZWQgZHVyaW5nIGxpbmsKLSAgICBpbnQgY29sOyAgICAv
LyBGaXJzdCByZWdpc3RlciBlbGVtZW50LCBhc3NpZ25lZCBkdXJpbmcgbGluawotfTsKLQotdHlw
ZWRlZiBzdGQ6Omxpc3Q8VmFyeWluZz4gVmFyeWluZ0xpc3Q7Ci0KLWNsYXNzIFNoYWRlcgotewot
ICAgIGZyaWVuZCBjbGFzcyBQcm9ncmFtQmluYXJ5OwotCi0gIHB1YmxpYzoKLSAgICBTaGFkZXIo
UmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKTsKLQotICAgIHZpcnR1YWwg
flNoYWRlcigpOwotCi0gICAgdmlydHVhbCBHTGVudW0gZ2V0VHlwZSgpID0gMDsKLSAgICBHTHVp
bnQgZ2V0SGFuZGxlKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGRlbGV0ZVNvdXJjZSgpOwotICAgIHZv
aWQgc2V0U291cmNlKEdMc2l6ZWkgY291bnQsIGNvbnN0IGNoYXIgKipzdHJpbmcsIGNvbnN0IEdM
aW50ICpsZW5ndGgpOwotICAgIGludCBnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3Q7Ci0gICAgdm9p
ZCBnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZv
TG9nKTsKLSAgICBpbnQgZ2V0U291cmNlTGVuZ3RoKCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRTb3Vy
Y2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcik7Ci0gICAg
aW50IGdldFRyYW5zbGF0ZWRTb3VyY2VMZW5ndGgoKSBjb25zdDsKLSAgICB2b2lkIGdldFRyYW5z
bGF0ZWRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZl
cik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5jb21waWxlKCk7Ci0gICAgYm9vbCBpc0NvbXBpbGVkKCk7Ci0gICAgY29uc3QgY2hhciAqZ2V0
SExTTCgpOwotCi0gICAgdm9pZCBhZGRSZWYoKTsKLSAgICB2b2lkIHJlbGVhc2UoKTsKLSAgICB1
bnNpZ25lZCBpbnQgZ2V0UmVmQ291bnQoKSBjb25zdDsKLSAgICBib29sIGlzRmxhZ2dlZEZvckRl
bGV0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBmbGFnRm9yRGVsZXRpb24oKTsKLQotICAgIHN0YXRp
YyB2b2lkIHJlbGVhc2VDb21waWxlcigpOwotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIHBhcnNl
VmFyeWluZ3MoKTsKLQotICAgIHZvaWQgY29tcGlsZVRvSExTTCh2b2lkICpjb21waWxlcik7Ci0K
LSAgICB2b2lkIGdldFNvdXJjZUltcGwoY2hhciAqc291cmNlLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgY2hhciAqYnVmZmVyKTsKLQotICAgIHN0YXRpYyBHTGVudW0gcGFyc2VU
eXBlKGNvbnN0IHN0ZDo6c3RyaW5nICZ0eXBlKTsKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJlVmFy
eWluZyhjb25zdCBWYXJ5aW5nICZ4LCBjb25zdCBWYXJ5aW5nICZ5KTsKLQotICAgIFZhcnlpbmdM
aXN0IG1WYXJ5aW5nczsKLQotICAgIGJvb2wgbVVzZXNGcmFnQ29vcmQ7Ci0gICAgYm9vbCBtVXNl
c0Zyb250RmFjaW5nOwotICAgIGJvb2wgbVVzZXNQb2ludFNpemU7Ci0gICAgYm9vbCBtVXNlc1Bv
aW50Q29vcmQ7Ci0gICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKLQotICAgIHN0YXRpYyB2b2lkICpt
RnJhZ21lbnRDb21waWxlcjsKLSAgICBzdGF0aWMgdm9pZCAqbVZlcnRleENvbXBpbGVyOwotCi0g
IHByaXZhdGU6Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNoYWRlcik7Ci0KLSAgICB2
b2lkIGluaXRpYWxpemVDb21waWxlcigpOwotCi0gICAgY29uc3QgR0x1aW50IG1IYW5kbGU7Ci0g
ICAgdW5zaWduZWQgaW50IG1SZWZDb3VudDsgICAgIC8vIE51bWJlciBvZiBwcm9ncmFtIG9iamVj
dHMgdGhpcyBzaGFkZXIgaXMgYXR0YWNoZWQgdG8KLSAgICBib29sIG1EZWxldGVTdGF0dXM7ICAg
ICAgICAgLy8gRmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzaGFkZXIgY2FuIGJlIGRlbGV0ZWQg
d2hlbiBubyBsb25nZXIgaW4gdXNlCi0KLSAgICBjaGFyICptU291cmNlOwotICAgIGNoYXIgKm1I
bHNsOwotICAgIGNoYXIgKm1JbmZvTG9nOwotCi0gICAgUmVzb3VyY2VNYW5hZ2VyICptUmVzb3Vy
Y2VNYW5hZ2VyOwotfTsKLQotc3RydWN0IEF0dHJpYnV0ZQotewotICAgIEF0dHJpYnV0ZSgpIDog
dHlwZShHTF9OT05FKSwgbmFtZSgiIikKLSAgICB7Ci0gICAgfQotCi0gICAgQXR0cmlidXRlKEdM
ZW51bSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgOiB0eXBlKHR5cGUpLCBuYW1lKG5h
bWUpCi0gICAgewotICAgIH0KLQotICAgIEdMZW51bSB0eXBlOwotICAgIHN0ZDo6c3RyaW5nIG5h
bWU7Ci19OwotCi10eXBlZGVmIHN0ZDo6dmVjdG9yPEF0dHJpYnV0ZT4gQXR0cmlidXRlQXJyYXk7
Ci0KLWNsYXNzIFZlcnRleFNoYWRlciA6IHB1YmxpYyBTaGFkZXIKLXsKLSAgICBmcmllbmQgY2xh
c3MgUHJvZ3JhbUJpbmFyeTsKLQotICBwdWJsaWM6Ci0gICAgVmVydGV4U2hhZGVyKFJlc291cmNl
TWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSk7Ci0KLSAgICB+VmVydGV4U2hhZGVyKCk7
Ci0KLSAgICB2aXJ0dWFsIEdMZW51bSBnZXRUeXBlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBp
bGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5jb21waWxlKCk7Ci0gICAgaW50IGdldFNlbWFudGlj
SW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJmF0dHJpYnV0ZU5hbWUpOwotCi0gIHByaXZhdGU6Ci0g
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFZlcnRleFNoYWRlcik7Ci0KLSAgICB2b2lkIHBh
cnNlQXR0cmlidXRlcygpOwotCi0gICAgQXR0cmlidXRlQXJyYXkgbUF0dHJpYnV0ZXM7Ci19Owot
Ci1jbGFzcyBGcmFnbWVudFNoYWRlciA6IHB1YmxpYyBTaGFkZXIKLXsKLSAgcHVibGljOgotICAg
IEZyYWdtZW50U2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSk7
Ci0KLSAgICB+RnJhZ21lbnRTaGFkZXIoKTsKLQotICAgIHZpcnR1YWwgR0xlbnVtIGdldFR5cGUo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZSgpOwotCi0gIHByaXZhdGU6Ci0gICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKEZyYWdtZW50U2hhZGVyKTsKLX07Ci19Ci0KLSNlbmRpZiAgIC8v
IExJQkdMRVNWMl9TSEFERVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1RleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNzhj
NWUzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
VGV4dHVyZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTA3ICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLS8vCi0KLS8vIFRleHR1cmUuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6VGV4dHVyZSBjbGFz
cyBhbmQgaXRzIGRlcml2ZWQgY2xhc3NlcwotLy8gVGV4dHVyZTJEIGFuZCBUZXh0dXJlQ3ViZU1h
cC4gSW1wbGVtZW50cyBHTCB0ZXh0dXJlIG9iamVjdHMgYW5kIHJlbGF0ZWQKLS8vIGZ1bmN0aW9u
YWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuNyBwYWdlIDYzLgotCi0jaW5jbHVk
ZSAibGliR0xFU3YyL1RleHR1cmUuaCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgotCi0jaW5jbHVkZSAibGliRUdML0Rpc3BsYXkuaCIKLQotI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL21hdGh1dGlsLmgi
Ci0jaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9C
bGl0LmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBn
bAotewotdW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlOjptQ3VycmVudFRleHR1cmVTZXJpYWwg
PSAxOwotCi1zdGF0aWMgRDNERk9STUFUIENvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0xp
bnQgaW50ZXJuYWxmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKLSAgICB7
Ci0gICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgotICAgICAgY2FzZSBHTF9ERVBUSF9D
T01QT05FTlQzMl9PRVM6Ci0gICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOgotICAg
ICAgICByZXR1cm4gRDNERk1UX0lOVFo7Ci0gICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQ6Ci0gICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
OgotICAgICAgICByZXR1cm4gRDNERk1UX0RYVDE7Ci0gICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgIHJldHVybiBEM0RGTVRfRFhUMzsKLSAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKLSAgICAgICAgcmV0dXJu
IEQzREZNVF9EWFQ1OwotICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKLSAgICAgIGNhc2UgR0xf
UkdCMzJGX0VYVDoKLSAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgotICAgICAgY2FzZSBHTF9M
VU1JTkFOQ0UzMkZfRVhUOgotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOgot
ICAgICAgICByZXR1cm4gRDNERk1UX0EzMkIzMkczMlIzMkY7Ci0gICAgICBjYXNlIEdMX1JHQkEx
NkZfRVhUOgotICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgotICAgICAgY2FzZSBHTF9BTFBIQTE2
Rl9FWFQ6Ci0gICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6Ci0gICAgICBjYXNlIEdMX0xV
TUlOQU5DRV9BTFBIQTE2Rl9FWFQ6Ci0gICAgICAgIHJldHVybiBEM0RGTVRfQTE2QjE2RzE2UjE2
RjsKLSAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9FWFQ6Ci0gICAgICAgIGlmIChnZXRDb250ZXh0
KCktPnN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXMoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIEQzREZNVF9MODsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFOF9BTFBIQThfRVhUOgotICAgICAgICBpZiAoZ2V0Q29udGV4dCgpLT5zdXBw
b3J0c0x1bWluYW5jZUFscGhhVGV4dHVyZXMoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIEQzREZNVF9BOEw4OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBH
TF9SR0I4X09FUzoKLSAgICAgIGNhc2UgR0xfUkdCNTY1OgotICAgICAgICByZXR1cm4gRDNERk1U
X1g4UjhHOEI4OwotICAgIH0KLQotICAgIHJldHVybiBEM0RGTVRfQThSOEc4Qjg7Ci19Ci0KLXN0
YXRpYyBib29sIElzVGV4dHVyZUZvcm1hdFJlbmRlcmFibGUoRDNERk9STUFUIGZvcm1hdCkKLXsK
LSAgICBpZiAoZm9ybWF0ID09IEQzREZNVF9JTlRaKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIHN3aXRjaChmb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBEM0RGTVRf
TDg6Ci0gICAgICBjYXNlIEQzREZNVF9BOEw4OgotICAgICAgY2FzZSBEM0RGTVRfRFhUMToKLSAg
ICAgIGNhc2UgRDNERk1UX0RYVDM6Ci0gICAgICBjYXNlIEQzREZNVF9EWFQ1OgotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKLSAgICAgIGNhc2UgRDNE
Rk1UX1g4UjhHOEI4OgotICAgICAgY2FzZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjoKLSAgICAgIGNh
c2UgRDNERk1UX0EzMkIzMkczMlIzMkY6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZGVm
YXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRFdPUkQgR2V0VGV4dHVyZVVzYWdlKEQzREZPUk1BVCBkM2Rm
bXQsIEdMZW51bSBnbHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSkKLXsKLSAgICBEV09SRCBk
M2R1c2FnZSA9IDA7Ci0KLSAgICBpZiAoZDNkZm10ID09IEQzREZNVF9JTlRaKQotICAgIHsKLSAg
ICAgICAgZDNkdXNhZ2UgfD0gRDNEVVNBR0VfREVQVEhTVEVOQ0lMOwotICAgIH0KLSAgICBlbHNl
IGlmKGZvcmNlUmVuZGVyYWJsZSB8fCAoSXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZShkM2RmbXQp
ICYmIChnbHVzYWdlID09IEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUpKSkKLSAgICB7
Ci0gICAgICAgIGQzZHVzYWdlIHw9IEQzRFVTQUdFX1JFTkRFUlRBUkdFVDsKLSAgICB9Ci0gICAg
cmV0dXJuIGQzZHVzYWdlOwotfQotCi1zdGF0aWMgdm9pZCBNYWtlVmFsaWRTaXplKGJvb2wgaXNJ
bWFnZSwgYm9vbCBpc0NvbXByZXNzZWQsIEdMc2l6ZWkgKnJlcXVlc3RXaWR0aCwgR0xzaXplaSAq
cmVxdWVzdEhlaWdodCwgaW50ICpsZXZlbE9mZnNldCkKLXsKLSAgICBpbnQgdXBzYW1wbGVDb3Vu
dCA9IDA7Ci0KLSAgICBpZiAoaXNDb21wcmVzc2VkKQotICAgIHsKLSAgICAgICAgLy8gRG9uJ3Qg
ZXhwYW5kIHRoZSBzaXplIG9mIGZ1bGwgdGV4dHVyZXMgdGhhdCBhcmUgYXQgbGVhc3QgNHg0Ci0g
ICAgICAgIC8vIGFscmVhZHkuCi0gICAgICAgIGlmIChpc0ltYWdlIHx8ICpyZXF1ZXN0V2lkdGgg
PCA0IHx8ICpyZXF1ZXN0SGVpZ2h0IDwgNCkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUg
KCpyZXF1ZXN0V2lkdGggJSA0ICE9IDAgfHwgKnJlcXVlc3RIZWlnaHQgJSA0ICE9IDApCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKnJlcXVlc3RXaWR0aCA8PD0gMTsKLSAgICAgICAg
ICAgICAgICAqcmVxdWVzdEhlaWdodCA8PD0gMTsKLSAgICAgICAgICAgICAgICB1cHNhbXBsZUNv
dW50Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKmxldmVsT2Zmc2V0
ID0gdXBzYW1wbGVDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgQ29weUxvY2thYmxlU3VyZmFjZXMo
SURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UpCi17Ci0g
ICAgRDNETE9DS0VEX1JFQ1Qgc291cmNlTG9jayA9IHswfTsKLSAgICBEM0RMT0NLRURfUkVDVCBk
ZXN0TG9jayA9IHswfTsKLSAgICAKLSAgICBzb3VyY2UtPkxvY2tSZWN0KCZzb3VyY2VMb2NrLCBO
VUxMLCAwKTsKLSAgICBkZXN0LT5Mb2NrUmVjdCgmZGVzdExvY2ssIE5VTEwsIDApOwotICAgIAot
ICAgIGlmIChzb3VyY2VMb2NrLnBCaXRzICYmIGRlc3RMb2NrLnBCaXRzKQotICAgIHsKLSAgICAg
ICAgRDNEU1VSRkFDRV9ERVNDIGRlc2M7Ci0gICAgICAgIHNvdXJjZS0+R2V0RGVzYygmZGVzYyk7
Ci0KLSAgICAgICAgaW50IHJvd3MgPSBkeDo6SXNDb21wcmVzc2VkRm9ybWF0KGRlc2MuRm9ybWF0
KSA/IGRlc2MuSGVpZ2h0IC8gNCA6IGRlc2MuSGVpZ2h0OwotICAgICAgICBpbnQgYnl0ZXMgPSBk
eDo6Q29tcHV0ZVJvd1NpemUoZGVzYy5Gb3JtYXQsIGRlc2MuV2lkdGgpOwotICAgICAgICBBU1NF
UlQoYnl0ZXMgPD0gc291cmNlTG9jay5QaXRjaCAmJiBieXRlcyA8PSBkZXN0TG9jay5QaXRjaCk7
Ci0KLSAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykKLSAgICAgICAgewotICAg
ICAgICAgICAgbWVtY3B5KChjaGFyKilkZXN0TG9jay5wQml0cyArIGRlc3RMb2NrLlBpdGNoICog
aSwgKGNoYXIqKXNvdXJjZUxvY2sucEJpdHMgKyBzb3VyY2VMb2NrLlBpdGNoICogaSwgYnl0ZXMp
OwotICAgICAgICB9Ci0KLSAgICAgICAgc291cmNlLT5VbmxvY2tSZWN0KCk7Ci0gICAgICAgIGRl
c3QtPlVubG9ja1JlY3QoKTsKLSAgICB9Ci0gICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotfQotCi1J
bWFnZTo6SW1hZ2UoKQotewotICAgIG1XaWR0aCA9IDA7IAotICAgIG1IZWlnaHQgPSAwOwotICAg
IG1JbnRlcm5hbEZvcm1hdCA9IEdMX05PTkU7Ci0KLSAgICBtU3VyZmFjZSA9IE5VTEw7Ci0KLSAg
ICBtRGlydHkgPSBmYWxzZTsKLQotICAgIG1EM0RQb29sID0gRDNEUE9PTF9TWVNURU1NRU07Ci0g
ICAgbUQzREZvcm1hdCA9IEQzREZNVF9VTktOT1dOOwotfQotCi1JbWFnZTo6fkltYWdlKCkKLXsK
LSAgICBpZiAobVN1cmZhY2UpCi0gICAgewotICAgICAgICBtU3VyZmFjZS0+UmVsZWFzZSgpOwot
ICAgIH0KLX0KLQotYm9vbCBJbWFnZTo6cmVkZWZpbmUoR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBib29sIGZvcmNlUmVsZWFzZSkKLXsKLSAgICBp
ZiAobVdpZHRoICE9IHdpZHRoIHx8Ci0gICAgICAgIG1IZWlnaHQgIT0gaGVpZ2h0IHx8Ci0gICAg
ICAgIG1JbnRlcm5hbEZvcm1hdCAhPSBpbnRlcm5hbGZvcm1hdCB8fAotICAgICAgICBmb3JjZVJl
bGVhc2UpCi0gICAgewotICAgICAgICBtV2lkdGggPSB3aWR0aDsKLSAgICAgICAgbUhlaWdodCA9
IGhlaWdodDsKLSAgICAgICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxmb3JtYXQ7Ci0gICAg
ICAgIC8vIGNvbXB1dGUgdGhlIGQzZCBmb3JtYXQgdGhhdCB3aWxsIGJlIHVzZWQKLSAgICAgICAg
bUQzREZvcm1hdCA9IENvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQp
OwotCi0gICAgICAgIGlmIChtU3VyZmFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgbVN1cmZh
Y2UtPlJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1TdXJmYWNlID0gTlVMTDsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dm9pZCBJbWFnZTo6Y3JlYXRlU3VyZmFjZSgpCi17Ci0gICAgaWYobVN1cmZhY2UpCi0gICAgewot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSURpcmVjdDNEVGV4dHVyZTkgKm5ld1RleHR1
cmUgPSBOVUxMOwotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpuZXdTdXJmYWNlID0gTlVMTDsKLSAg
ICBjb25zdCBEM0RQT09MIHBvb2xUb1VzZSA9IEQzRFBPT0xfU1lTVEVNTUVNOwotICAgIGNvbnN0
IEQzREZPUk1BVCBkM2RGb3JtYXQgPSBnZXREM0RGb3JtYXQoKTsKLSAgICBBU1NFUlQoZDNkRm9y
bWF0ICE9IEQzREZNVF9JTlRaKTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIGZvciBkZXB0
aCB0ZXh0dXJlcwotCi0gICAgaWYgKG1XaWR0aCAhPSAwICYmIG1IZWlnaHQgIT0gMCkKLSAgICB7
Ci0gICAgICAgIGludCBsZXZlbFRvRmV0Y2ggPSAwOwotICAgICAgICBHTHNpemVpIHJlcXVlc3RX
aWR0aCA9IG1XaWR0aDsKLSAgICAgICAgR0xzaXplaSByZXF1ZXN0SGVpZ2h0ID0gbUhlaWdodDsK
LSAgICAgICAgTWFrZVZhbGlkU2l6ZSh0cnVlLCBJc0NvbXByZXNzZWQobUludGVybmFsRm9ybWF0
KSwgJnJlcXVlc3RXaWR0aCwgJnJlcXVlc3RIZWlnaHQsICZsZXZlbFRvRmV0Y2gpOwotCi0gICAg
ICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0RGV2aWNlKCktPkNyZWF0ZVRleHR1cmUocmVxdWVzdFdp
ZHRoLCByZXF1ZXN0SGVpZ2h0LCBsZXZlbFRvRmV0Y2ggKyAxLCAwLCBkM2RGb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9vbFRvVXNl
LCAmbmV3VGV4dHVyZSwgTlVMTCk7Ci0KLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVN
T1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKLSAgICAgICAgICAgIEVSUigiQ3JlYXRp
bmcgaW1hZ2Ugc3VyZmFjZSBmYWlsZWQuIik7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7Ci0gICAgICAgIH0KLQotICAgICAgICBuZXdUZXh0dXJlLT5HZXRTdXJm
YWNlTGV2ZWwobGV2ZWxUb0ZldGNoLCAmbmV3U3VyZmFjZSk7Ci0gICAgICAgIG5ld1RleHR1cmUt
PlJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICBtU3VyZmFjZSA9IG5ld1N1cmZhY2U7Ci0gICAgbURp
cnR5ID0gZmFsc2U7Ci0gICAgbUQzRFBvb2wgPSBwb29sVG9Vc2U7Ci19Ci0KLUhSRVNVTFQgSW1h
Z2U6OmxvY2soRDNETE9DS0VEX1JFQ1QgKmxvY2tlZFJlY3QsIGNvbnN0IFJFQ1QgKnJlY3QpCi17
Ci0gICAgY3JlYXRlU3VyZmFjZSgpOwotCi0gICAgSFJFU1VMVCByZXN1bHQgPSBEM0RFUlJfSU5W
QUxJRENBTEw7Ci0KLSAgICBpZiAobVN1cmZhY2UpCi0gICAgewotICAgICAgICByZXN1bHQgPSBt
U3VyZmFjZS0+TG9ja1JlY3QobG9ja2VkUmVjdCwgcmVjdCwgMCk7Ci0gICAgICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICAgICAgbURpcnR5ID0gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEltYWdlOjp1bmxvY2soKQotewotICAgIGlmICht
U3VyZmFjZSkKLSAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVN1cmZhY2UtPlVubG9j
a1JlY3QoKTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLSAgICB9Ci19Ci0K
LWJvb2wgSW1hZ2U6OmlzUmVuZGVyYWJsZUZvcm1hdCgpIGNvbnN0Ci17ICAgIAotICAgIHJldHVy
biBJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGdldEQzREZvcm1hdCgpKTsKLX0KLQotRDNERk9S
TUFUIEltYWdlOjpnZXREM0RGb3JtYXQoKSBjb25zdAotewotICAgIC8vIHRoaXMgc2hvdWxkIG9u
bHkgaGFwcGVuIGlmIHRoZSBpbWFnZSBoYXNuJ3QgYmVlbiByZWRlZmluZWQgZmlyc3QKLSAgICAv
LyB3aGljaCB3b3VsZCBiZSBhIGJ1ZyBieSB0aGUgY2FsbGVyCi0gICAgQVNTRVJUKG1EM0RGb3Jt
YXQgIT0gRDNERk1UX1VOS05PV04pOwotCi0gICAgcmV0dXJuIG1EM0RGb3JtYXQ7Ci19Ci0KLUlE
aXJlY3QzRFN1cmZhY2U5ICpJbWFnZTo6Z2V0U3VyZmFjZSgpCi17Ci0gICAgY3JlYXRlU3VyZmFj
ZSgpOwotCi0gICAgcmV0dXJuIG1TdXJmYWNlOwotfQotCi12b2lkIEltYWdlOjpzZXRNYW5hZ2Vk
U3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSkKLXsKLSAgICBEM0RTVVJGQUNFX0RF
U0MgZGVzYzsKLSAgICBzdXJmYWNlLT5HZXREZXNjKCZkZXNjKTsKLSAgICBBU1NFUlQoZGVzYy5Q
b29sID09IEQzRFBPT0xfTUFOQUdFRCk7Ci0KLSAgICBpZiAoKEdMc2l6ZWkpZGVzYy5XaWR0aCA9
PSBtV2lkdGggJiYgKEdMc2l6ZWkpZGVzYy5IZWlnaHQgPT0gbUhlaWdodCkKLSAgICB7Ci0gICAg
ICAgIGlmIChtU3VyZmFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgQ29weUxvY2thYmxlU3Vy
ZmFjZXMoc3VyZmFjZSwgbVN1cmZhY2UpOwotICAgICAgICAgICAgbVN1cmZhY2UtPlJlbGVhc2Uo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1TdXJmYWNlID0gc3VyZmFjZTsKLSAgICAgICAgbUQz
RFBvb2wgPSBkZXNjLlBvb2w7Ci0gICAgfQotfQotCi12b2lkIEltYWdlOjp1cGRhdGVTdXJmYWNl
KElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0U3VyZmFjZSwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKnNvdXJjZVN1cmZhY2UgPSBnZXRTdXJmYWNlKCk7Ci0KLSAgICBpZiAoc291cmNlU3Vy
ZmFjZSAmJiBzb3VyY2VTdXJmYWNlICE9IGRlc3RTdXJmYWNlKQotICAgIHsKLSAgICAgICAgUkVD
VCByZWN0OwotICAgICAgICByZWN0LmxlZnQgPSB4b2Zmc2V0OwotICAgICAgICByZWN0LnRvcCA9
IHlvZmZzZXQ7Ci0gICAgICAgIHJlY3QucmlnaHQgPSB4b2Zmc2V0ICsgd2lkdGg7Ci0gICAgICAg
IHJlY3QuYm90dG9tID0geW9mZnNldCArIGhlaWdodDsKLQotICAgICAgICBQT0lOVCBwb2ludCA9
IHtyZWN0LmxlZnQsIHJlY3QudG9wfTsKLQotICAgICAgICBpZiAobUQzRFBvb2wgPT0gRDNEUE9P
TF9NQU5BR0VEKQotICAgICAgICB7Ci0gICAgICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsK
LSAgICAgICAgICAgIHNvdXJjZVN1cmZhY2UtPkdldERlc2MoJmRlc2MpOwotCi0gICAgICAgICAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZiA9IDA7Ci0gICAgICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGdldERldmljZSgpLT5DcmVhdGVPZmZzY3JlZW5QbGFpblN1cmZhY2UoZGVzYy5XaWR0aCwg
ZGVzYy5IZWlnaHQsIGRlc2MuRm9ybWF0LCBEM0RQT09MX1NZU1RFTU1FTSwgJnN1cmYsIE5VTEwp
OwotCi0gICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgQ29weUxvY2thYmxlU3VyZmFjZXMoc3VyZiwgc291cmNlU3VyZmFjZSk7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2V0RGV2aWNlKCktPlVwZGF0ZVN1cmZhY2Uoc3Vy
ZiwgJnJlY3QsIGRlc3RTdXJmYWNlLCAmcG9pbnQpOwotICAgICAgICAgICAgICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgc3VyZi0+UmVsZWFzZSgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAg
ICAgLy8gVXBkYXRlU3VyZmFjZTogc291cmNlIG11c3QgYmUgU1lTVEVNTUVNLCBkZXN0IG11c3Qg
YmUgREVGQVVMVCBwb29scwotICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBnZXREZXZpY2Uo
KS0+VXBkYXRlU3VyZmFjZShzb3VyY2VTdXJmYWNlLCAmcmVjdCwgZGVzdFN1cmZhY2UsICZwb2lu
dCk7Ci0gICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi0vLyBTdG9yZSB0aGUgcGl4ZWwgcmVjdGFuZ2xlIGRlc2lnbmF0ZWQgYnkgeG9m
ZnNldCx5b2Zmc2V0LHdpZHRoLGhlaWdodCB3aXRoIHBpeGVscyBzdG9yZWQgYXMgZm9ybWF0L3R5
cGUgYXQgaW5wdXQKLS8vIGludG8gdGhlIHRhcmdldCBwaXhlbCByZWN0YW5nbGUuCi12b2lkIElt
YWdlOjpsb2FkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgIEdMaW50IHVucGFja0FsaWdu
bWVudCwgY29uc3Qgdm9pZCAqaW5wdXQpCi17Ci0gICAgUkVDVCBsb2NrUmVjdCA9Ci0gICAgewot
ICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LAotICAgICAgICB4b2Zmc2V0ICsgd2lkdGgsIHlvZmZz
ZXQgKyBoZWlnaHQKLSAgICB9OwotCi0gICAgRDNETE9DS0VEX1JFQ1QgbG9ja2VkOwotICAgIEhS
RVNVTFQgcmVzdWx0ID0gbG9jaygmbG9ja2VkLCAmbG9ja1JlY3QpOwotICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLQotICAgIEdMc2l6ZWkg
aW5wdXRQaXRjaCA9IENvbXB1dGVQaXRjaCh3aWR0aCwgbUludGVybmFsRm9ybWF0LCB1bnBhY2tB
bGlnbm1lbnQpOwotCi0gICAgc3dpdGNoIChtSW50ZXJuYWxGb3JtYXQpCi0gICAgewotICAgICAg
Y2FzZSBHTF9BTFBIQThfRVhUOgotICAgICAgICBpZiAoc3VwcG9ydHNTU0UyKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGxvYWRBbHBoYURhdGFTU0UyKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0
Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBsb2FkQWxwaGFEYXRhKHdpZHRoLCBoZWln
aHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOgotICAg
ICAgICBsb2FkTHVtaW5hbmNlRGF0YSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
bG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMsIGdldEQzREZvcm1hdCgpID09IEQzREZNVF9MOCk7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6Ci0gICAgICAgIGxv
YWRBbHBoYUZsb2F0RGF0YSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2Vk
LlBpdGNoLCBsb2NrZWQucEJpdHMpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFMzJGX0VYVDoKLSAgICAgICAgbG9hZEx1bWluYW5jZUZsb2F0RGF0YSh3aWR0aCwgaGVp
Z2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgotICAgICAgICBsb2FkQWxw
aGFIYWxmRmxvYXREYXRhKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQu
UGl0Y2gsIGxvY2tlZC5wQml0cyk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0UxNkZfRVhUOgotICAgICAgICBsb2FkTHVtaW5hbmNlSGFsZkZsb2F0RGF0YSh3aWR0aCwg
aGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhUOgotICAg
ICAgICBsb2FkTHVtaW5hbmNlQWxwaGFEYXRhKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlu
cHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cywgZ2V0RDNERm9ybWF0KCkgPT0gRDNERk1U
X0E4TDgpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJG
X0VYVDoKLSAgICAgICAgbG9hZEx1bWluYW5jZUFscGhhRmxvYXREYXRhKHdpZHRoLCBoZWlnaHQs
IGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOgotICAgICAgICBs
b2FkTHVtaW5hbmNlQWxwaGFIYWxmRmxvYXREYXRhKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gs
IGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9SR0I4X09FUzoKLSAgICAgICAgbG9hZFJHQlVCeXRlRGF0YSh3aWR0aCwgaGVp
Z2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfUkdCNTY1OgotICAgICAgICBsb2FkUkdCNTY1RGF0
YSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQu
cEJpdHMpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgotICAgICAg
ICBpZiAoc3VwcG9ydHNTU0UyKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxvYWRSR0JBVUJ5
dGVEYXRhU1NFMih3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNo
LCBsb2NrZWQucEJpdHMpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgbG9hZFJHQkFVQnl0ZURhdGEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5w
dXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKLSAgICAgICAgfQotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgR0xfUkdCQTQ6Ci0gICAgICAgIGxvYWRSR0JBNDQ0NERhdGEod2lkdGgs
IGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1JHQjVfQTE6Ci0gICAgICAgIGxvYWRSR0JB
NTU1MURhdGEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwg
bG9ja2VkLnBCaXRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0JHUkE4X0VYVDoK
LSAgICAgICAgbG9hZEJHUkFEYXRhKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBs
b2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgLy8gZmxv
YXQgdGV4dHVyZXMgYXJlIGNvbnZlcnRlZCB0byBSR0JBLCBub3QgQkdSQSwgYXMgdGhleSdyZSBz
dG9yZWQgdGhhdCB3YXkgaW4gRDNECi0gICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6Ci0gICAgICAg
IGxvYWRSR0JGbG9hdERhdGEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tl
ZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1JH
QjE2Rl9FWFQ6Ci0gICAgICAgIGxvYWRSR0JIYWxmRmxvYXREYXRhKHdpZHRoLCBoZWlnaHQsIGlu
cHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKLSAgICAgICAgbG9hZFJHQkFGbG9hdERh
dGEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2Vk
LnBCaXRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgotICAg
ICAgICBsb2FkUkdCQUhhbGZGbG9hdERhdGEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5w
dXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAKLSAgICB9Ci0KLSAgICB1bmxvY2soKTsKLX0KLQotdm9p
ZCBJbWFnZTo6bG9hZEFscGhhRGF0YShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKLXsKLSAgICBjb25zdCB1
bnNpZ25lZCBjaGFyICpzb3VyY2UgPSBOVUxMOwotICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBO
VUxMOwotICAgIAotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgewot
ICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQp
ICsgeSAqIGlucHV0UGl0Y2g7Ci0gICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0g
PSAwOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gMDsKLSAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAyXSA9IDA7Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3VyY2VbeF07
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgSW1hZ2U6OmxvYWRBbHBoYUZsb2F0RGF0YShH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRj
aCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxM
OwotICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKLQotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVp
Z2h0OyB5KyspCi0gICAgewotICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBp
bnB1dFBpdGNoKTsKLSAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7Ci0gICAg
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgZGVzdFs0ICogeCArIDBdID0gMDsKLSAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IDA7
Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAwOwotICAgICAgICAgICAgZGVzdFs0ICog
eCArIDNdID0gc291cmNlW3hdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEltYWdlOjps
b2FkQWxwaGFIYWxmRmxvYXREYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwotICAgIHVuc2lnbmVkIHNob3J0
ICpkZXN0ID0gTlVMTDsKLQotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0g
ICAgewotICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNo
b3J0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1
dFBpdGNoKTsKLSAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgc2hvcnQq
PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7
Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgewotICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gMDsKLSAgICAgICAgICAgIGRlc3RbNCAqIHggKyAx
XSA9IDA7Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAwOwotICAgICAgICAgICAgZGVz
dFs0ICogeCArIDNdID0gc291cmNlW3hdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIElt
YWdlOjpsb2FkTHVtaW5hbmNlRGF0YShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICpp
bnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0aXZlKSBjb25z
dAotewotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7Ci0gICAgdW5zaWdu
ZWQgY2hhciAqZGVzdCA9IE5VTEw7Ci0KLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQotICAgIHsKLSAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoOwotICAgICAgICBkZXN0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7Ci0KLSAgICAgICAg
aWYgKCFuYXRpdmUpICAgLy8gQkdSQTggZGVzdGluYXRpb24gZm9ybWF0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeF07Ci0gICAgICAgICAg
ICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hdOwotICAgICAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10g
PSAweEZGOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgICAvLyBMOCBk
ZXN0aW5hdGlvbiBmb3JtYXQKLSAgICAgICAgewotICAgICAgICAgICAgbWVtY3B5KGRlc3QsIHNv
dXJjZSwgd2lkdGgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEltYWdlOjpsb2FkTHVt
aW5hbmNlRmxvYXREYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAgIGNvbnN0
IGZsb2F0ICpzb3VyY2UgPSBOVUxMOwotICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKLQotICAgIGZv
ciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBzb3VyY2UgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKLSAgICAgICAgZGVzdCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkg
KiBvdXRwdXRQaXRjaCk7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykK
LSAgICAgICAgewotICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3hdOwotICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hdOwotICAgICAgICAgICAgZGVzdFs0
ICogeCArIDJdID0gc291cmNlW3hdOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMS4w
ZjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBJbWFnZTo6bG9hZEx1bWluYW5jZUhhbGZG
bG9hdERhdGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQs
IHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwotICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0ID0g
TlVMTDsKLQotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgewotICAg
ICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsK
LSAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPihzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7Ci0gICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDBdID0gc291cmNlW3hdOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDFd
ID0gc291cmNlW3hdOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlW3hdOwot
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMHgzQzAwOyAvLyBTRUVFRUVNTU1NTU1NTU1N
LCBTID0gMCwgRSA9IDE1LCBNID0gMDogMTZiaXQgZmxwdCByZXByZXNlbnRhdGlvbiBvZiAxCi0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgSW1hZ2U6OmxvYWRMdW1pbmFuY2VBbHBoYURhdGEo
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0aXZlKSBjb25zdAotewotICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7Ci0gICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5V
TEw7Ci0KLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgIHsKLSAgICAg
ICAgc291cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkg
KiBpbnB1dFBpdGNoOwotICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7Ci0gICAgICAgIAotICAgICAgICBpZiAoIW5hdGl2
ZSkgICAvLyBCR1JBOCBkZXN0aW5hdGlvbiBmb3JtYXQKLSAgICAgICAgewotICAgICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVsyKngrMF07Ci0gICAgICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDFdID0gc291cmNlWzIqeCswXTsKLSAgICAgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgMl0gPSBzb3VyY2VbMip4KzBdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAz
XSA9IHNvdXJjZVsyKngrMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNlLCB3aWR0aCAqIDIp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFG
bG9hdERhdGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKLXsKLSAgICBjb25zdCBm
bG9hdCAqc291cmNlID0gTlVMTDsKLSAgICBmbG9hdCAqZGVzdCA9IE5VTEw7Ci0KLSAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAgc291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7Ci0gICAgICAgIGRlc3QgPSByZWludGVycHJl
dF9jYXN0PGZsb2F0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICog
b3V0cHV0UGl0Y2gpOwotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVsyKngrMF07Ci0g
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbMip4KzBdOwotICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDJdID0gc291cmNlWzIqeCswXTsKLSAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAzXSA9IHNvdXJjZVsyKngrMV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgSW1hZ2U6
OmxvYWRMdW1pbmFuY2VBbHBoYUhhbGZGbG9hdERhdGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpIGNvbnN0Ci17Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7
Ci0gICAgdW5zaWduZWQgc2hvcnQgKmRlc3QgPSBOVUxMOwotCi0gICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBoZWlnaHQ7IHkrKykKLSAgICB7Ci0gICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOwotICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQp
ICsgeSAqIG91dHB1dFBpdGNoKTsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsg
eCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbMip4
KzBdOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlWzIqeCswXTsKLSAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyKngrMF07Ci0gICAgICAgICAgICBkZXN0
WzQgKiB4ICsgM10gPSBzb3VyY2VbMip4KzFdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lk
IEltYWdlOjpsb2FkUkdCVUJ5dGVEYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7Ci0gICAgdW5zaWduZWQgY2hhciAqZGVz
dCA9IE5VTEw7Ci0KLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgIHsK
LSAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0
KSArIHkgKiBpbnB1dFBpdGNoOwotICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7Ci0gICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdFs0ICogeCArIDBd
ID0gc291cmNlW3ggKiAzICsgMl07Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3Vy
Y2VbeCAqIDMgKyAxXTsKLSAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4ICog
MyArIDBdOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMHhGRjsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBJbWFnZTo6bG9hZFJHQjU2NURhdGEoR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwg
Y29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25z
dAotewotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwotICAgIHVuc2ln
bmVkIGNoYXIgKmRlc3QgPSBOVUxMOwotCi0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7
IHkrKykKLSAgICB7Ci0gICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsg
eSAqIGlucHV0UGl0Y2gpOwotICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdi
YSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4
MDAxRikgPDwgMykgfCAoKHJnYmEgJiAweDAwMUYpID4+IDIpOwotICAgICAgICAgICAgZGVzdFs0
ICogeCArIDFdID0gKChyZ2JhICYgMHgwN0UwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdFMCkgPj4g
OSk7Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweEY4MDApID4+IDgp
IHwgKChyZ2JhICYgMHhGODAwKSA+PiAxMyk7Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10g
PSAweEZGOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEltYWdlOjpsb2FkUkdCRmxvYXRE
YXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQ
aXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBO
VUxMOwotICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKLQotICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
aGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkg
KiBpbnB1dFBpdGNoKTsKLSAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7Ci0g
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAg
ICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3ggKiAzICsgMF07Ci0gICAgICAgICAgICBk
ZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeCAqIDMgKyAxXTsKLSAgICAgICAgICAgIGRlc3RbNCAq
IHggKyAyXSA9IHNvdXJjZVt4ICogMyArIDJdOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDNd
ID0gMS4wZjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBJbWFnZTo6bG9hZFJHQkhhbGZG
bG9hdERhdGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0ICpzb3VyY2UgPSBOVUxMOwotICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0ID0gTlVMTDsK
LQotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBz
b3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKLSAgICAg
ICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7Ci0gICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdFs0
ICogeCArIDBdID0gc291cmNlW3ggKiAzICsgMF07Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsg
MV0gPSBzb3VyY2VbeCAqIDMgKyAxXTsKLSAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNv
dXJjZVt4ICogMyArIDJdOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMHgzQzAwOyAv
LyBTRUVFRUVNTU1NTU1NTU1NLCBTID0gMCwgRSA9IDE1LCBNID0gMDogMTZiaXQgZmxwdCByZXBy
ZXNlbnRhdGlvbiBvZiAxCi0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgSW1hZ2U6OmxvYWRS
R0JBVUJ5dGVEYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXpl
X3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKLXsKLSAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgKnNvdXJjZSA9IE5VTEw7Ci0gICAgdW5zaWduZWQgaW50ICpkZXN0ID0gTlVMTDsKLSAg
ICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAgc291cmNl
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOwotICAgICAgICBkZXN0
ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7Ci0KLSAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQg
cmdiYSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgIGRlc3RbeF0gPSAoX3JvdGwocmdiYSwgMTYp
ICYgMHgwMGZmMDBmZikgfCAocmdiYSAmIDB4ZmYwMGZmMDApOwotICAgICAgICB9Ci0gICAgfQot
fQotCi12b2lkIEltYWdlOjpsb2FkUkdCQTQ0NDREYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29u
c3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAot
ewotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwotICAgIHVuc2lnbmVk
IGNoYXIgKmRlc3QgPSBOVUxMOwotCi0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkr
KykKLSAgICB7Ci0gICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAq
IGlucHV0UGl0Y2gpOwotICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiYSA9
IHNvdXJjZVt4XTsKLSAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4MDBG
MCkgPDwgMCkgfCAoKHJnYmEgJiAweDAwRjApID4+IDQpOwotICAgICAgICAgICAgZGVzdFs0ICog
eCArIDFdID0gKChyZ2JhICYgMHgwRjAwKSA+PiA0KSB8ICgocmdiYSAmIDB4MEYwMCkgPj4gOCk7
Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweEYwMDApID4+IDgpIHwg
KChyZ2JhICYgMHhGMDAwKSA+PiAxMik7Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAo
KHJnYmEgJiAweDAwMEYpIDw8IDQpIHwgKChyZ2JhICYgMHgwMDBGKSA+PiAwKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotdm9pZCBJbWFnZTo6bG9hZFJHQkE1NTUxRGF0YShHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0
UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1
dCkgY29uc3QKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVMTDsKLSAg
ICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKLQotICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
aGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlu
cHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKLSAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOwotICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNo
b3J0IHJnYmEgPSBzb3VyY2VbeF07Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAoKHJn
YmEgJiAweDAwM0UpIDw8IDIpIHwgKChyZ2JhICYgMHgwMDNFKSA+PiAzKTsKLSAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAxXSA9ICgocmdiYSAmIDB4MDdDMCkgPj4gMykgfCAoKHJnYmEgJiAweDA3
QzApID4+IDgpOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gKChyZ2JhICYgMHhGODAw
KSA+PiA4KSB8ICgocmdiYSAmIDB4RjgwMCkgPj4gMTMpOwotICAgICAgICAgICAgZGVzdFs0ICog
eCArIDNdID0gKHJnYmEgJiAweDAwMDEpID8gMHhGRiA6IDA7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXZvaWQgSW1hZ2U6OmxvYWRSR0JBRmxvYXREYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNv
bnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QK
LXsKLSAgICBjb25zdCBmbG9hdCAqc291cmNlID0gTlVMTDsKLSAgICBmbG9hdCAqZGVzdCA9IE5V
TEw7Ci0KLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgIHsKLSAgICAg
ICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7Ci0gICAgICAgIGRl
c3QgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOwotICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNl
LCB3aWR0aCAqIDE2KTsKLSAgICB9Ci19Ci0KLXZvaWQgSW1hZ2U6OmxvYWRSR0JBSGFsZkZsb2F0
RGF0YShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBv
dXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIgKnNvdXJjZSA9IE5VTEw7Ci0gICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7Ci0KLSAg
ICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAgc291cmNl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBp
dGNoOwotICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkg
KyB5ICogb3V0cHV0UGl0Y2g7Ci0gICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHdpZHRoICog
OCk7Ci0gICAgfQotfQotCi12b2lkIEltYWdlOjpsb2FkQkdSQURhdGEoR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gs
IGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29u
c3QKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2UgPSBOVUxMOwotICAgIHVuc2ln
bmVkIGNoYXIgKmRlc3QgPSBOVUxMOwotCi0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7
IHkrKykKLSAgICB7Ci0gICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaDsKLSAgICAgICAgZGVzdCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOwotICAgICAgICBt
ZW1jcHkoZGVzdCwgc291cmNlLCB3aWR0aCo0KTsKLSAgICB9Ci19Ci0KLXZvaWQgSW1hZ2U6Omxv
YWRDb21wcmVzc2VkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICppbnB1dCkgewotICAgIEFTU0VSVCh4b2Zmc2V0ICUgNCA9PSAwKTsKLSAgICBBU1NF
UlQoeW9mZnNldCAlIDQgPT0gMCk7Ci0KLSAgICBSRUNUIGxvY2tSZWN0ID0gewotICAgICAgICB4
b2Zmc2V0LCB5b2Zmc2V0LAotICAgICAgICB4b2Zmc2V0ICsgd2lkdGgsIHlvZmZzZXQgKyBoZWln
aHQKLSAgICB9OwotCi0gICAgRDNETE9DS0VEX1JFQ1QgbG9ja2VkOwotICAgIEhSRVNVTFQgcmVz
dWx0ID0gbG9jaygmbG9ja2VkLCAmbG9ja1JlY3QpOwotICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
LSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHNpemVpIGlucHV0U2l6ZSA9
IENvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgaGVpZ2h0LCBtSW50ZXJuYWxGb3JtYXQpOwot
ICAgIEdMc2l6ZWkgaW5wdXRQaXRjaCA9IENvbXB1dGVDb21wcmVzc2VkUGl0Y2god2lkdGgsIG1J
bnRlcm5hbEZvcm1hdCk7Ci0gICAgaW50IHJvd3MgPSBpbnB1dFNpemUgLyBpbnB1dFBpdGNoOwot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgKytpKQotICAgIHsKLSAgICAgICAgbWVtY3B5
KCh2b2lkKikoKEJZVEUqKWxvY2tlZC5wQml0cyArIGkgKiBsb2NrZWQuUGl0Y2gpLCAodm9pZCop
KChCWVRFKilpbnB1dCArIGkgKiBpbnB1dFBpdGNoKSwgaW5wdXRQaXRjaCk7Ci0gICAgfQotCi0g
ICAgdW5sb2NrKCk7Ci19Ci0KLS8vIFRoaXMgaW1wbGVtZW50cyBnbENvcHlUZXhbU3ViXUltYWdl
MkQgZm9yIG5vbi1yZW5kZXJhYmxlIGludGVybmFsIHRleHR1cmUgZm9ybWF0cyBhbmQgaW5jb21w
bGV0ZSB0ZXh0dXJlcwotdm9pZCBJbWFnZTo6Y29weShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgSURp
cmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCkKLXsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpk
ZXZpY2UgPSBnZXREZXZpY2UoKTsKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0
RGF0YSA9IE5VTEw7Ci0gICAgRDNEU1VSRkFDRV9ERVNDIGRlc2NyaXB0aW9uOwotICAgIHJlbmRl
clRhcmdldC0+R2V0RGVzYygmZGVzY3JpcHRpb24pOwotICAgIAotICAgIEhSRVNVTFQgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVPZmZzY3JlZW5QbGFpblN1cmZhY2UoZGVzY3JpcHRpb24uV2lkdGgs
IGRlc2NyaXB0aW9uLkhlaWdodCwgZGVzY3JpcHRpb24uRm9ybWF0LCBEM0RQT09MX1NZU1RFTU1F
TSwgJnJlbmRlclRhcmdldERhdGEsIE5VTEwpOwotCi0gICAgaWYgKEZBSUxFRChyZXN1bHQpKQot
ICAgIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIG1hdGNoaW5nIGRlc3RpbmF0aW9u
IHN1cmZhY2UuIik7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAg
ICB9Ci0KLSAgICByZXN1bHQgPSBkZXZpY2UtPkdldFJlbmRlclRhcmdldERhdGEocmVuZGVyVGFy
Z2V0LCByZW5kZXJUYXJnZXREYXRhKTsKLQotICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICB7
Ci0gICAgICAgIEVSUigiR2V0UmVuZGVyVGFyZ2V0RGF0YSB1bmV4cGVjdGVkbHkgZmFpbGVkLiIp
OwotICAgICAgICByZW5kZXJUYXJnZXREYXRhLT5SZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci0KLSAgICBSRUNUIHNvdXJjZVJlY3QgPSB7
eCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0fTsKLSAgICBSRUNUIGRlc3RSZWN0ID0ge3hvZmZz
ZXQsIHlvZmZzZXQsIHhvZmZzZXQgKyB3aWR0aCwgeW9mZnNldCArIGhlaWdodH07Ci0KLSAgICBE
M0RMT0NLRURfUkVDVCBzb3VyY2VMb2NrID0gezB9OwotICAgIHJlc3VsdCA9IHJlbmRlclRhcmdl
dERhdGEtPkxvY2tSZWN0KCZzb3VyY2VMb2NrLCAmc291cmNlUmVjdCwgMCk7Ci0KLSAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCi0gICAgewotICAgICAgICBFUlIoIkZhaWxlZCB0byBsb2NrIHRoZSBz
b3VyY2Ugc3VyZmFjZSAocmVjdGFuZ2xlIG1pZ2h0IGJlIGludmFsaWQpLiIpOwotICAgICAgICBy
ZW5kZXJUYXJnZXREYXRhLT5SZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKLSAgICB9Ci0KLSAgICBEM0RMT0NLRURfUkVDVCBkZXN0TG9jayA9IHswfTsK
LSAgICByZXN1bHQgPSBsb2NrKCZkZXN0TG9jaywgJmRlc3RSZWN0KTsKLSAgICAKLSAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCi0gICAgewotICAgICAgICBFUlIoIkZhaWxlZCB0byBsb2NrIHRoZSBk
ZXN0aW5hdGlvbiBzdXJmYWNlIChyZWN0YW5nbGUgbWlnaHQgYmUgaW52YWxpZCkuIik7Ci0gICAg
ICAgIHJlbmRlclRhcmdldERhdGEtPlVubG9ja1JlY3QoKTsKLSAgICAgICAgcmVuZGVyVGFyZ2V0
RGF0YS0+UmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
Ci0gICAgfQotCi0gICAgaWYgKGRlc3RMb2NrLnBCaXRzICYmIHNvdXJjZUxvY2sucEJpdHMpCi0g
ICAgewotICAgICAgICB1bnNpZ25lZCBjaGFyICpzb3VyY2UgPSAodW5zaWduZWQgY2hhciopc291
cmNlTG9jay5wQml0czsKLSAgICAgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9ICh1bnNpZ25lZCBj
aGFyKilkZXN0TG9jay5wQml0czsKLQotICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uLkZvcm1h
dCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgotICAgICAgICAg
IGNhc2UgRDNERk1UX0E4UjhHOEI4OgotICAgICAgICAgICAgc3dpdGNoKGdldEQzREZvcm1hdCgp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKLSAg
ICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6Ci0gICAgICAgICAgICAgICAgZm9yKGlu
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgNCAqIHdpZHRoKTsKLQotICAgICAgICAgICAg
ICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICAgICAg
ZGVzdCArPSBkZXN0TG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRDNERk1UX0w4OgotICAgICAgICAgICAgICAg
IGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3hdID0gc291cmNlW3gg
KiA0ICsgMl07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICAgICAgZGVzdCArPSBk
ZXN0TG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4TDg6Ci0gICAgICAgICAgICAgICAgZm9yKGlu
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeCAqIDIgKyAwXSA9IHNvdXJjZVt4
ICogNCArIDJdOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICogMiArIDFdID0gc291
cmNlW3ggKiA0ICsgM107Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICAgICAgZGVz
dCArPSBkZXN0TG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ug
RDNERk1UX1I1RzZCNToKLSAgICAgICAgICAgIHN3aXRjaChnZXREM0RGb3JtYXQoKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6Ci0gICAgICAgICAg
ICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0
IHJnYiA9ICgodW5zaWduZWQgc2hvcnQqKXNvdXJjZSlbeF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIHJlZCA9IChyZ2IgJiAweEY4MDApID4+IDg7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuID0gKHJnYiAmIDB4MDdFMCkgPj4gMzsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZSA9IChyZ2IgJiAweDAw
MUYpIDw8IDM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKyAwXSA9IGJsdWUgfCAo
Ymx1ZSA+PiA1KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeCArIDFdID0gZ3JlZW4g
fCAoZ3JlZW4gPj4gNik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKyAyXSA9IHJl
ZCB8IChyZWQgPj4gNSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKyAzXSA9IDB4
RkY7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBzb3VyY2Ug
Kz0gc291cmNlTG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICAgICAgZGVzdCArPSBkZXN0TG9j
ay5QaXRjaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgRDNERk1UX0w4OgotICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7
IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZCA9IHNvdXJjZVt4ICogMiAr
IDFdICYgMHhGODsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeF0gPSByZWQgfCAocmVk
ID4+IDUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgc291
cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVz
dExvY2suUGl0Y2g7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEQzREZNVF9B
MVI1RzVCNToKLSAgICAgICAgICAgIHN3aXRjaChnZXREM0RGb3JtYXQoKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6Ci0gICAgICAgICAgICAgICAg
Zm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGFyZ2Ig
PSAoKHVuc2lnbmVkIHNob3J0Kilzb3VyY2UpW3hdOwotICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciByZWQgPSAoYXJnYiAmIDB4N0MwMCkgPj4gNzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW4gPSAoYXJnYiAmIDB4MDNFMCkgPj4gMjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZSA9IChhcmdiICYgMHgwMDFG
KSA8PCAzOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICsgMF0gPSBibHVlIHwgKGJs
dWUgPj4gNSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKyAxXSA9IGdyZWVuIHwg
KGdyZWVuID4+IDUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICsgMl0gPSByZWQg
fCAocmVkID4+IDUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICsgM10gPSAweEZG
OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgc291cmNlICs9
IHNvdXJjZUxvY2suUGl0Y2g7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2su
UGl0Y2g7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKLSAgICAgICAgICAgICAgICBmb3IoaW50IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYXJnYiA9ICgodW5zaWdu
ZWQgc2hvcnQqKXNvdXJjZSlbeF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIHJlZCA9IChhcmdiICYgMHg3QzAwKSA+PiA3OwotICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBncmVlbiA9IChhcmdiICYgMHgwM0UwKSA+PiAyOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBibHVlID0gKGFyZ2IgJiAweDAwMUYpIDw8IDM7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gKHNpZ25lZCBzaG9y
dClhcmdiID4+IDE1OwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICsgMF0gPSBibHVl
IHwgKGJsdWUgPj4gNSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKyAxXSA9IGdy
ZWVuIHwgKGdyZWVuID4+IDUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICsgMl0g
PSByZWQgfCAocmVkID4+IDUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICsgM10g
PSBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHNv
dXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOwotICAgICAgICAgICAgICAgICAgICBkZXN0ICs9IGRl
c3RMb2NrLlBpdGNoOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfTDg6Ci0gICAgICAgICAgICAgICAgZm9yKGludCB5
ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcmVkID0gc291cmNlW3gg
KiAyICsgMV0gJiAweDdDOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4XSA9IChyZWQg
PDwgMSkgfCAocmVkID4+IDQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7Ci0gICAgICAgICAgICAgICAgICAg
IGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEQzREZNVF9BOEw4OgotICAgICAgICAgICAg
ICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHJl
ZCA9IHNvdXJjZVt4ICogMiArIDFdICYgMHg3QzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3RbeCAqIDIgKyAwXSA9IChyZWQgPDwgMSkgfCAocmVkID4+IDQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdFt4ICogMiArIDFdID0gKHNpZ25lZCBjaGFyKXNvdXJjZVt4ICogMiArIDFd
ID4+IDc7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UgKz0gc291cmNlTG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICAgICAgZGVzdCArPSBkZXN0
TG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdW5sb2NrKCk7
Ci0gICAgcmVuZGVyVGFyZ2V0RGF0YS0+VW5sb2NrUmVjdCgpOwotCi0gICAgcmVuZGVyVGFyZ2V0
RGF0YS0+UmVsZWFzZSgpOwotCi0gICAgbURpcnR5ID0gdHJ1ZTsKLX0KLQotbmFtZXNwYWNlCi17
Ci1zdHJ1Y3QgTDgKLXsKLSAgICB1bnNpZ25lZCBjaGFyIEw7Ci0KLSAgICBzdGF0aWMgdm9pZCBh
dmVyYWdlKEw4ICpkc3QsIGNvbnN0IEw4ICpzcmMxLCBjb25zdCBMOCAqc3JjMikKLSAgICB7Ci0g
ICAgICAgIGRzdC0+TCA9ICgoc3JjMS0+TCBeIHNyYzItPkwpID4+IDEpICsgKHNyYzEtPkwgJiBz
cmMyLT5MKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQThMOAotewotICAgIHVuc2lnbmVkIGNoYXIg
TDsKLSAgICB1bnNpZ25lZCBjaGFyIEE7Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEE4TDgg
KmRzdCwgY29uc3QgQThMOCAqc3JjMSwgY29uc3QgQThMOCAqc3JjMikKLSAgICB7Ci0gICAgICAg
ICoodW5zaWduZWQgc2hvcnQqKWRzdCA9ICgoKCoodW5zaWduZWQgc2hvcnQqKXNyYzEgXiAqKHVu
c2lnbmVkIHNob3J0KilzcmMyKSAmIDB4RkVGRSkgPj4gMSkgKyAoKih1bnNpZ25lZCBzaG9ydCop
c3JjMSAmICoodW5zaWduZWQgc2hvcnQqKXNyYzIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBBOFI4
RzhCOAotewotICAgIHVuc2lnbmVkIGNoYXIgQjsKLSAgICB1bnNpZ25lZCBjaGFyIEc7Ci0gICAg
dW5zaWduZWQgY2hhciBSOwotICAgIHVuc2lnbmVkIGNoYXIgQTsKLQotICAgIHN0YXRpYyB2b2lk
IGF2ZXJhZ2UoQThSOEc4QjggKmRzdCwgY29uc3QgQThSOEc4QjggKnNyYzEsIGNvbnN0IEE4UjhH
OEI4ICpzcmMyKQotICAgIHsKLSAgICAgICAgKih1bnNpZ25lZCBpbnQqKWRzdCA9ICgoKCoodW5z
aWduZWQgaW50KilzcmMxIF4gKih1bnNpZ25lZCBpbnQqKXNyYzIpICYgMHhGRUZFRkVGRSkgPj4g
MSkgKyAoKih1bnNpZ25lZCBpbnQqKXNyYzEgJiAqKHVuc2lnbmVkIGludCopc3JjMik7Ci0gICAg
fQotfTsKLQotc3RydWN0IEExNkIxNkcxNlIxNkYKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBSOwot
ICAgIHVuc2lnbmVkIHNob3J0IEc7Ci0gICAgdW5zaWduZWQgc2hvcnQgQjsKLSAgICB1bnNpZ25l
ZCBzaG9ydCBBOwotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShBMTZCMTZHMTZSMTZGICpkc3Qs
IGNvbnN0IEExNkIxNkcxNlIxNkYgKnNyYzEsIGNvbnN0IEExNkIxNkcxNlIxNkYgKnNyYzIpCi0g
ICAgewotICAgICAgICBkc3QtPlIgPSBmbG9hdDMyVG9GbG9hdDE2KChmbG9hdDE2VG9GbG9hdDMy
KHNyYzEtPlIpICsgZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5SKSkgKiAwLjVmKTsKLSAgICAgICAg
ZHN0LT5HID0gZmxvYXQzMlRvRmxvYXQxNigoZmxvYXQxNlRvRmxvYXQzMihzcmMxLT5HKSArIGZs
b2F0MTZUb0Zsb2F0MzIoc3JjMi0+RykpICogMC41Zik7Ci0gICAgICAgIGRzdC0+QiA9IGZsb2F0
MzJUb0Zsb2F0MTYoKGZsb2F0MTZUb0Zsb2F0MzIoc3JjMS0+QikgKyBmbG9hdDE2VG9GbG9hdDMy
KHNyYzItPkIpKSAqIDAuNWYpOwotICAgICAgICBkc3QtPkEgPSBmbG9hdDMyVG9GbG9hdDE2KChm
bG9hdDE2VG9GbG9hdDMyKHNyYzEtPkEpICsgZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5BKSkgKiAw
LjVmKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQTMyQjMyRzMyUjMyRgotewotICAgIGZsb2F0IFI7
Ci0gICAgZmxvYXQgRzsKLSAgICBmbG9hdCBCOwotICAgIGZsb2F0IEE7Ci0KLSAgICBzdGF0aWMg
dm9pZCBhdmVyYWdlKEEzMkIzMkczMlIzMkYgKmRzdCwgY29uc3QgQTMyQjMyRzMyUjMyRiAqc3Jj
MSwgY29uc3QgQTMyQjMyRzMyUjMyRiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IChz
cmMxLT5SICsgc3JjMi0+UikgKiAwLjVmOwotICAgICAgICBkc3QtPkcgPSAoc3JjMS0+RyArIHNy
YzItPkcpICogMC41ZjsKLSAgICAgICAgZHN0LT5CID0gKHNyYzEtPkIgKyBzcmMyLT5CKSAqIDAu
NWY7Ci0gICAgICAgIGRzdC0+QSA9IChzcmMxLT5BICsgc3JjMi0+QSkgKiAwLjVmOwotICAgIH0K
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBHZW5lcmF0ZU1pcCh1bnNpZ25lZCBp
bnQgc291cmNlV2lkdGgsIHVuc2lnbmVkIGludCBzb3VyY2VIZWlnaHQsCi0gICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZURhdGEsIGludCBzb3VyY2VQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqZGVzdERhdGEsIGludCBkZXN0UGl0Y2gpCi17
Ci0gICAgdW5zaWduZWQgaW50IG1pcFdpZHRoID0gc3RkOjptYXgoMVUsIHNvdXJjZVdpZHRoID4+
IDEpOwotICAgIHVuc2lnbmVkIGludCBtaXBIZWlnaHQgPSBzdGQ6Om1heCgxVSwgc291cmNlSGVp
Z2h0ID4+IDEpOwotCi0gICAgaWYgKHNvdXJjZUhlaWdodCA9PSAxKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKHNvdXJjZVdpZHRoICE9IDEpOwotCi0gICAgICAgIGNvbnN0IFQgKnNyYyA9IChjb25z
dCBUKilzb3VyY2VEYXRhOwotICAgICAgICBUICpkc3QgPSAoVCopZGVzdERhdGE7Ci0KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtaXBXaWR0aDsgeCsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBUOjphdmVyYWdlKCZkc3RbeF0sICZzcmNbeCAqIDJdLCAmc3JjW3ggKiAy
ICsgMV0pOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHNvdXJjZVdpZHRoID09IDEp
Ci0gICAgewotICAgICAgICBBU1NFUlQoc291cmNlSGVpZ2h0ICE9IDEpOwotCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaW50IHkgPSAwOyB5IDwgbWlwSGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IFQgKnNyYzAgPSAoY29uc3QgVCopKHNvdXJjZURhdGEgKyB5ICogMiAq
IHNvdXJjZVBpdGNoKTsKLSAgICAgICAgICAgIGNvbnN0IFQgKnNyYzEgPSAoY29uc3QgVCopKHNv
dXJjZURhdGEgKyB5ICogMiAqIHNvdXJjZVBpdGNoICsgc291cmNlUGl0Y2gpOwotICAgICAgICAg
ICAgVCAqZHN0ID0gKFQqKShkZXN0RGF0YSArIHkgKiBkZXN0UGl0Y2gpOwotCi0gICAgICAgICAg
ICBUOjphdmVyYWdlKGRzdCwgc3JjMCwgc3JjMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgeSA9IDA7IHkgPCBtaXBIZWlnaHQ7
IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVCAqc3JjMCA9IChjb25zdCBUKiko
c291cmNlRGF0YSArIHkgKiAyICogc291cmNlUGl0Y2gpOwotICAgICAgICAgICAgY29uc3QgVCAq
c3JjMSA9IChjb25zdCBUKikoc291cmNlRGF0YSArIHkgKiAyICogc291cmNlUGl0Y2ggKyBzb3Vy
Y2VQaXRjaCk7Ci0gICAgICAgICAgICBUICpkc3QgPSAoVCopKGRlc3REYXRhICsgeSAqIGRlc3RQ
aXRjaCk7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IHggPSAwOyB4IDwgbWlwV2lk
dGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUIHRtcDA7Ci0gICAgICAg
ICAgICAgICAgVCB0bXAxOwotCi0gICAgICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMCwgJnNy
YzBbeCAqIDJdLCAmc3JjMFt4ICogMiArIDFdKTsKLSAgICAgICAgICAgICAgICBUOjphdmVyYWdl
KCZ0bXAxLCAmc3JjMVt4ICogMl0sICZzcmMxW3ggKiAyICsgMV0pOwotICAgICAgICAgICAgICAg
IFQ6OmF2ZXJhZ2UoJmRzdFt4XSwgJnRtcDAsICZ0bXAxKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBHZW5lcmF0ZU1pcChJRGlyZWN0M0RTdXJmYWNlOSAqZGVz
dFN1cmZhY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2VTdXJmYWNlKQotewotICAgIEQzRFNV
UkZBQ0VfREVTQyBkZXN0RGVzYzsKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGRlc3RTdXJmYWNlLT5H
ZXREZXNjKCZkZXN0RGVzYyk7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLQotICAg
IEQzRFNVUkZBQ0VfREVTQyBzb3VyY2VEZXNjOwotICAgIHJlc3VsdCA9IHNvdXJjZVN1cmZhY2Ut
PkdldERlc2MoJnNvdXJjZURlc2MpOwotICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0K
LSAgICBBU1NFUlQoc291cmNlRGVzYy5Gb3JtYXQgPT0gZGVzdERlc2MuRm9ybWF0KTsKLSAgICBB
U1NFUlQoc291cmNlRGVzYy5XaWR0aCA9PSAxIHx8IHNvdXJjZURlc2MuV2lkdGggLyAyID09IGRl
c3REZXNjLldpZHRoKTsKLSAgICBBU1NFUlQoc291cmNlRGVzYy5IZWlnaHQgPT0gMSB8fCBzb3Vy
Y2VEZXNjLkhlaWdodCAvIDIgPT0gZGVzdERlc2MuSGVpZ2h0KTsKLQotICAgIEQzRExPQ0tFRF9S
RUNUIHNvdXJjZUxvY2tlZCA9IHswfTsKLSAgICByZXN1bHQgPSBzb3VyY2VTdXJmYWNlLT5Mb2Nr
UmVjdCgmc291cmNlTG9ja2VkLCBOVUxMLCBEM0RMT0NLX1JFQURPTkxZKTsKLSAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOwotCi0gICAgRDNETE9DS0VEX1JFQ1QgZGVzdExvY2tlZCA9IHsw
fTsKLSAgICByZXN1bHQgPSBkZXN0U3VyZmFjZS0+TG9ja1JlY3QoJmRlc3RMb2NrZWQsIE5VTEws
IDApOwotICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyICpzb3VyY2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oc291cmNlTG9ja2VkLnBCaXRzKTsKLSAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRlc3RMb2NrZWQucEJpdHMpOwotCi0gICAg
aWYgKHNvdXJjZURhdGEgJiYgZGVzdERhdGEpCi0gICAgewotICAgICAgICBzd2l0Y2ggKHNvdXJj
ZURlc2MuRm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBEM0RGTVRfTDg6Ci0gICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxMOD4oc291cmNlRGVzYy5XaWR0aCwgc291cmNlRGVzYy5IZWln
aHQsIHNvdXJjZURhdGEsIHNvdXJjZUxvY2tlZC5QaXRjaCwgZGVzdERhdGEsIGRlc3RMb2NrZWQu
UGl0Y2gpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBEM0RGTVRfQThMODoK
LSAgICAgICAgICAgIEdlbmVyYXRlTWlwPEE4TDg+KHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURl
c2MuSGVpZ2h0LCBzb3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gsIGRlc3REYXRhLCBkZXN0
TG9ja2VkLlBpdGNoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRDNERk1U
X0E4UjhHOEI4OgotICAgICAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgotICAgICAgICAgICAg
R2VuZXJhdGVNaXA8QThSOEc4Qjg+KHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURlc2MuSGVpZ2h0
LCBzb3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gsIGRlc3REYXRhLCBkZXN0TG9ja2VkLlBp
dGNoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRDNERk1UX0ExNkIxNkcx
NlIxNkY6Ci0gICAgICAgICAgICBHZW5lcmF0ZU1pcDxBMTZCMTZHMTZSMTZGPihzb3VyY2VEZXNj
LldpZHRoLCBzb3VyY2VEZXNjLkhlaWdodCwgc291cmNlRGF0YSwgc291cmNlTG9ja2VkLlBpdGNo
LCBkZXN0RGF0YSwgZGVzdExvY2tlZC5QaXRjaCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgotICAgICAgICAgICAgR2VuZXJhdGVNaXA8
QTMyQjMyRzMyUjMyRj4oc291cmNlRGVzYy5XaWR0aCwgc291cmNlRGVzYy5IZWlnaHQsIHNvdXJj
ZURhdGEsIHNvdXJjZUxvY2tlZC5QaXRjaCwgZGVzdERhdGEsIGRlc3RMb2NrZWQuUGl0Y2gpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGRlc3RT
dXJmYWNlLT5VbmxvY2tSZWN0KCk7Ci0gICAgICAgIHNvdXJjZVN1cmZhY2UtPlVubG9ja1JlY3Qo
KTsKLSAgICB9Ci19Ci19Ci0KLVRleHR1cmVTdG9yYWdlOjpUZXh0dXJlU3RvcmFnZShEV09SRCB1
c2FnZSkKLSAgICA6IG1Mb2RPZmZzZXQoMCksCi0gICAgICBtRDNEVXNhZ2UodXNhZ2UpLAotICAg
ICAgbUQzRFBvb2woZ2V0RGlzcGxheSgpLT5nZXRUZXh0dXJlUG9vbCh1c2FnZSkpLAotICAgICAg
bVRleHR1cmVTZXJpYWwoaXNzdWVUZXh0dXJlU2VyaWFsKCkpCi17Ci19Ci0KLVRleHR1cmVTdG9y
YWdlOjp+VGV4dHVyZVN0b3JhZ2UoKQotewotfQotCi1ib29sIFRleHR1cmVTdG9yYWdlOjppc1Jl
bmRlclRhcmdldCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtRDNEVXNhZ2UgJiAoRDNEVVNBR0Vf
UkVOREVSVEFSR0VUIHwgRDNEVVNBR0VfREVQVEhTVEVOQ0lMKSkgIT0gMDsKLX0KLQotYm9vbCBU
ZXh0dXJlU3RvcmFnZTo6aXNNYW5hZ2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1EM0RQb29s
ID09IEQzRFBPT0xfTUFOQUdFRCk7Ci19Ci0KLUQzRFBPT0wgVGV4dHVyZVN0b3JhZ2U6OmdldFBv
b2woKSBjb25zdAotewotICAgIHJldHVybiBtRDNEUG9vbDsKLX0KLQotRFdPUkQgVGV4dHVyZVN0
b3JhZ2U6OmdldFVzYWdlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUQzRFVzYWdlOwotfQotCi11
bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2U6OmdldFRleHR1cmVTZXJpYWwoKSBjb25zdAotewot
ICAgIHJldHVybiBtVGV4dHVyZVNlcmlhbDsKLX0KLQotdW5zaWduZWQgaW50IFRleHR1cmVTdG9y
YWdlOjppc3N1ZVRleHR1cmVTZXJpYWwoKQotewotICAgIHJldHVybiBtQ3VycmVudFRleHR1cmVT
ZXJpYWwrKzsKLX0KLQotaW50IFRleHR1cmVTdG9yYWdlOjpnZXRMb2RPZmZzZXQoKSBjb25zdAot
ewotICAgIHJldHVybiBtTG9kT2Zmc2V0OwotfQotCi1UZXh0dXJlOjpUZXh0dXJlKEdMdWludCBp
ZCkgOiBSZWZDb3VudE9iamVjdChpZCkKLXsKLSAgICBtTWluRmlsdGVyID0gR0xfTkVBUkVTVF9N
SVBNQVBfTElORUFSOwotICAgIG1NYWdGaWx0ZXIgPSBHTF9MSU5FQVI7Ci0gICAgbVdyYXBTID0g
R0xfUkVQRUFUOwotICAgIG1XcmFwVCA9IEdMX1JFUEVBVDsKLSAgICBtRGlydHlQYXJhbWV0ZXJz
ID0gdHJ1ZTsKLSAgICBtVXNhZ2UgPSBHTF9OT05FOwotICAgIG1NYXhBbmlzb3Ryb3B5ID0gMS4w
ZjsKLSAgICAKLSAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwotCi0gICAgbUltbXV0YWJsZSA9IGZh
bHNlOwotfQotCi1UZXh0dXJlOjp+VGV4dHVyZSgpCi17Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBv
biBzdWNjZXNzZnVsIGZpbHRlciBzdGF0ZSB1cGRhdGUgKHZhbGlkIGVudW0gcGFyYW1ldGVyKQot
Ym9vbCBUZXh0dXJlOjpzZXRNaW5GaWx0ZXIoR0xlbnVtIGZpbHRlcikKLXsKLSAgICBzd2l0Y2gg
KGZpbHRlcikKLSAgICB7Ci0gICAgICBjYXNlIEdMX05FQVJFU1Q6Ci0gICAgICBjYXNlIEdMX0xJ
TkVBUjoKLSAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDoKLSAgICAgIGNhc2Ug
R0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgotICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9M
SU5FQVI6Ci0gICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobU1pbkZpbHRlciAhPSBmaWx0ZXIpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgbU1pbkZpbHRlciA9IGZpbHRlcjsKLSAgICAgICAgICAgICAgICBtRGlydHlQ
YXJhbWV0ZXJzID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotfQotCi0vLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCBmaWx0ZXIgc3RhdGUgdXBkYXRl
ICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKLWJvb2wgVGV4dHVyZTo6c2V0TWFnRmlsdGVyKEdMZW51
bSBmaWx0ZXIpCi17Ci0gICAgc3dpdGNoIChmaWx0ZXIpCi0gICAgewotICAgICAgY2FzZSBHTF9O
RUFSRVNUOgotICAgICAgY2FzZSBHTF9MSU5FQVI6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChtTWFnRmlsdGVyICE9IGZpbHRlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBt
TWFnRmlsdGVyID0gZmlsdGVyOwotICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlcnMgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLS8vIFJl
dHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIHdyYXAgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBh
cmFtZXRlcikKLWJvb2wgVGV4dHVyZTo6c2V0V3JhcFMoR0xlbnVtIHdyYXApCi17Ci0gICAgc3dp
dGNoICh3cmFwKQotICAgIHsKLSAgICAgIGNhc2UgR0xfUkVQRUFUOgotICAgICAgY2FzZSBHTF9D
TEFNUF9UT19FREdFOgotICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChtV3JhcFMgIT0gd3JhcCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBtV3JhcFMgPSB3cmFwOwotICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlcnMg
PSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLS8v
IFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIHdyYXAgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVt
IHBhcmFtZXRlcikKLWJvb2wgVGV4dHVyZTo6c2V0V3JhcFQoR0xlbnVtIHdyYXApCi17Ci0gICAg
c3dpdGNoICh3cmFwKQotICAgIHsKLSAgICAgIGNhc2UgR0xfUkVQRUFUOgotICAgICAgY2FzZSBH
TF9DTEFNUF9UT19FREdFOgotICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChtV3JhcFQgIT0gd3JhcCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBtV3JhcFQgPSB3cmFwOwotICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRl
cnMgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0K
LS8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIG1heCBhbmlzb3Ryb3B5IHVwZGF0ZSAodmFs
aWQgYW5pc290cm9weSB2YWx1ZSkKLWJvb2wgVGV4dHVyZTo6c2V0TWF4QW5pc290cm9weShmbG9h
dCB0ZXh0dXJlTWF4QW5pc290cm9weSwgZmxvYXQgY29udGV4dE1heEFuaXNvdHJvcHkpCi17Ci0g
ICAgdGV4dHVyZU1heEFuaXNvdHJvcHkgPSBzdGQ6Om1pbih0ZXh0dXJlTWF4QW5pc290cm9weSwg
Y29udGV4dE1heEFuaXNvdHJvcHkpOwotICAgIGlmICh0ZXh0dXJlTWF4QW5pc290cm9weSA8IDEu
MGYpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChtTWF4QW5p
c290cm9weSAhPSB0ZXh0dXJlTWF4QW5pc290cm9weSkKLSAgICB7Ci0gICAgICAgIG1NYXhBbmlz
b3Ryb3B5ID0gdGV4dHVyZU1heEFuaXNvdHJvcHk7Ci0gICAgICAgIG1EaXJ0eVBhcmFtZXRlcnMg
PSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIG9u
IHN1Y2Nlc3NmdWwgdXNhZ2Ugc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKLWJv
b2wgVGV4dHVyZTo6c2V0VXNhZ2UoR0xlbnVtIHVzYWdlKQotewotICAgIHN3aXRjaCAodXNhZ2Up
Ci0gICAgewotICAgICAgY2FzZSBHTF9OT05FOgotICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0FOR0xFOgotICAgICAgICBtVXNhZ2UgPSB1c2FnZTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQot
Ci1HTGVudW0gVGV4dHVyZTo6Z2V0TWluRmlsdGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbU1p
bkZpbHRlcjsKLX0KLQotR0xlbnVtIFRleHR1cmU6OmdldE1hZ0ZpbHRlcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1NYWdGaWx0ZXI7Ci19Ci0KLUdMZW51bSBUZXh0dXJlOjpnZXRXcmFwUygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1XcmFwUzsKLX0KLQotR0xlbnVtIFRleHR1cmU6OmdldFdyYXBU
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVdyYXBUOwotfQotCi1mbG9hdCBUZXh0dXJlOjpnZXRN
YXhBbmlzb3Ryb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbU1heEFuaXNvdHJvcHk7Ci19Ci0K
LUdMZW51bSBUZXh0dXJlOjpnZXRVc2FnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Vc2FnZTsK
LX0KLQotYm9vbCBUZXh0dXJlOjppc01pcG1hcEZpbHRlcmVkKCkgY29uc3QKLXsKLSAgICBzd2l0
Y2ggKG1NaW5GaWx0ZXIpCi0gICAgewotICAgICAgY2FzZSBHTF9ORUFSRVNUOgotICAgICAgY2Fz
ZSBHTF9MSU5FQVI6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGNhc2UgR0xfTkVBUkVT
VF9NSVBNQVBfTkVBUkVTVDoKLSAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgot
ICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI6Ci0gICAgICBjYXNlIEdMX0xJTkVB
Ul9NSVBNQVBfTElORUFSOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgVGV4
dHVyZTo6c2V0SW1hZ2UoR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMs
IEltYWdlICppbWFnZSkKLXsKLSAgICBpZiAocGl4ZWxzICE9IE5VTEwpCi0gICAgewotICAgICAg
ICBpbWFnZS0+bG9hZERhdGEoMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGltYWdlLT5nZXRIZWln
aHQoKSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMpOwotICAgICAgICBtRGlydHlJbWFnZXMgPSB0
cnVlOwotICAgIH0KLX0KLQotdm9pZCBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1hZ2UgKmltYWdlKQotewotICAgIGlm
IChwaXhlbHMgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIGltYWdlLT5sb2FkQ29tcHJlc3NlZERh
dGEoMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGltYWdlLT5nZXRIZWlnaHQoKSwgcGl4ZWxzKTsK
LSAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wgVGV4dHVyZTo6
c3ViSW1hZ2UoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGln
bm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1hZ2UgKmltYWdlKQotewotICAgIGlmIChwaXhl
bHMgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIGltYWdlLT5sb2FkRGF0YSh4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7Ci0gICAgICAgIG1E
aXJ0eUltYWdlcyA9IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
VGV4dHVyZTo6c3ViSW1hZ2VDb21wcmVzc2VkKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1hZ2UpCi17Ci0gICAgaWYgKHBp
eGVscyAhPSBOVUxMKQotICAgIHsKLSAgICAgICAgaW1hZ2UtPmxvYWRDb21wcmVzc2VkRGF0YSh4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBwaXhlbHMpOwotICAgICAgICBtRGlydHlJ
bWFnZXMgPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1JRGlyZWN0M0RC
YXNlVGV4dHVyZTkgKlRleHR1cmU6OmdldFRleHR1cmUoKQotewotICAgIC8vIGVuc3VyZSB0aGUg
dW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKLSAgICBpZiAoZ2V0U3RvcmFnZShmYWxzZSkg
PT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHVwZGF0
ZVRleHR1cmUoKTsKLQotICAgIHJldHVybiBnZXRCYXNlVGV4dHVyZSgpOwotfQotCi1ib29sIFRl
eHR1cmU6Omhhc0RpcnR5UGFyYW1ldGVycygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1EaXJ0eVBh
cmFtZXRlcnM7Ci19Ci0KLWJvb2wgVGV4dHVyZTo6aGFzRGlydHlJbWFnZXMoKSBjb25zdAotewot
ICAgIHJldHVybiBtRGlydHlJbWFnZXM7Ci19Ci0KLXZvaWQgVGV4dHVyZTo6cmVzZXREaXJ0eSgp
Ci17Ci0gICAgbURpcnR5UGFyYW1ldGVycyA9IGZhbHNlOwotICAgIG1EaXJ0eUltYWdlcyA9IGZh
bHNlOwotfQotCi11bnNpZ25lZCBpbnQgVGV4dHVyZTo6Z2V0VGV4dHVyZVNlcmlhbCgpCi17Ci0g
ICAgVGV4dHVyZVN0b3JhZ2UgKnRleHR1cmUgPSBnZXRTdG9yYWdlKGZhbHNlKTsKLSAgICByZXR1
cm4gdGV4dHVyZSA/IHRleHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKSA6IDA7Ci19Ci0KLXVuc2ln
bmVkIGludCBUZXh0dXJlOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdldCkKLXsK
LSAgICBUZXh0dXJlU3RvcmFnZSAqdGV4dHVyZSA9IGdldFN0b3JhZ2UodHJ1ZSk7Ci0gICAgcmV0
dXJuIHRleHR1cmUgPyB0ZXh0dXJlLT5nZXRSZW5kZXJUYXJnZXRTZXJpYWwodGFyZ2V0KSA6IDA7
Ci19Ci0KLWJvb2wgVGV4dHVyZTo6aXNJbW11dGFibGUoKSBjb25zdAotewotICAgIHJldHVybiBt
SW1tdXRhYmxlOwotfQotCi1pbnQgVGV4dHVyZTo6Z2V0TG9kT2Zmc2V0KCkKLXsKLSAgICBUZXh0
dXJlU3RvcmFnZSAqdGV4dHVyZSA9IGdldFN0b3JhZ2UoZmFsc2UpOwotICAgIHJldHVybiB0ZXh0
dXJlID8gdGV4dHVyZS0+Z2V0TG9kT2Zmc2V0KCkgOiAwOwotfQotCi1HTGludCBUZXh0dXJlOjpj
cmVhdGlvbkxldmVscyhHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkgY29uc3QKLXsKLSAg
ICBpZiAoKGlzUG93Mih3aWR0aCkgJiYgaXNQb3cyKGhlaWdodCkpIHx8IGdldENvbnRleHQoKS0+
c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCi0gICAgewotICAgICAgICByZXR1cm4gMDsgICAv
LyBNYXhpbXVtIG51bWJlciBvZiBsZXZlbHMKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgLy8gT3BlbkdMIEVTIDIuMCB3aXRob3V0IEdMX09FU190ZXh0dXJlX25wb3QgZG9lcyBub3Qg
cGVybWl0IE5QT1QgbWlwbWFwcy4KLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotfQotCi1HTGlu
dCBUZXh0dXJlOjpjcmVhdGlvbkxldmVscyhHTHNpemVpIHNpemUpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGNyZWF0aW9uTGV2ZWxzKHNpemUsIHNpemUpOwotfQotCi1pbnQgVGV4dHVyZTo6bGV2ZWxD
b3VudCgpCi17Ci0gICAgcmV0dXJuIGdldEJhc2VUZXh0dXJlKCkgPyBnZXRCYXNlVGV4dHVyZSgp
LT5HZXRMZXZlbENvdW50KCkgLSBnZXRMb2RPZmZzZXQoKSA6IDA7Ci19Ci0KLUJsaXQgKlRleHR1
cmU6OmdldEJsaXR0ZXIoKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBnZXRDb250ZXh0KCk7
Ci0gICAgcmV0dXJuIGNvbnRleHQtPmdldEJsaXR0ZXIoKTsKLX0KLQotYm9vbCBUZXh0dXJlOjpj
b3B5VG9SZW5kZXJUYXJnZXQoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIElEaXJlY3QzRFN1cmZh
Y2U5ICpzb3VyY2UsIGJvb2wgZnJvbU1hbmFnZWQpCi17Ci0gICAgaWYgKHNvdXJjZSAmJiBkZXN0
KQotICAgIHsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBEM0RFUlJfT1VUT0ZWSURFT01FTU9S
WTsKLQotICAgICAgICBpZiAoZnJvbU1hbmFnZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEQz
RFNVUkZBQ0VfREVTQyBkZXNjOwotICAgICAgICAgICAgc291cmNlLT5HZXREZXNjKCZkZXNjKTsK
LQotICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmYgPSAwOwotICAgICAgICAgICAg
cmVzdWx0ID0gZ2V0RGV2aWNlKCktPkNyZWF0ZU9mZnNjcmVlblBsYWluU3VyZmFjZShkZXNjLldp
ZHRoLCBkZXNjLkhlaWdodCwgZGVzYy5Gb3JtYXQsIEQzRFBPT0xfU1lTVEVNTUVNLCAmc3VyZiwg
TlVMTCk7Ci0KLSAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBDb3B5TG9ja2FibGVTdXJmYWNlcyhzdXJmLCBzb3VyY2UpOwot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdldERldmljZSgpLT5VcGRhdGVTdXJmYWNlKHN1cmYs
IE5VTEwsIGRlc3QsIE5VTEwpOwotICAgICAgICAgICAgICAgIHN1cmYtPlJlbGVhc2UoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IGdldERpc3BsYXkoKTsKLSAgICAgICAgICAgIElE
aXJlY3QzRERldmljZTkgKmRldmljZSA9IGRpc3BsYXktPmdldERldmljZSgpOwotCi0gICAgICAg
ICAgICBkaXNwbGF5LT5lbmRTY2VuZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5T
dHJldGNoUmVjdChzb3VyY2UsIE5VTEwsIGRlc3QsIE5VTEwsIEQzRFRFWEZfTk9ORSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09
IEVfT1VUT0ZNRU1PUlkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVRleHR1cmVTdG9yYWdlMkQ6OlRleHR1cmVT
dG9yYWdlMkQoSURpcmVjdDNEVGV4dHVyZTkgKnN1cmZhY2VUZXh0dXJlKSA6IFRleHR1cmVTdG9y
YWdlKEQzRFVTQUdFX1JFTkRFUlRBUkdFVCksIG1SZW5kZXJUYXJnZXRTZXJpYWwoUmVuZGVyYnVm
ZmVyU3RvcmFnZTo6aXNzdWVTZXJpYWwoKSkKLXsKLSAgICBtVGV4dHVyZSA9IHN1cmZhY2VUZXh0
dXJlOwotfQotCi1UZXh0dXJlU3RvcmFnZTJEOjpUZXh0dXJlU3RvcmFnZTJEKGludCBsZXZlbHMs
IEQzREZPUk1BVCBmb3JtYXQsIERXT1JEIHVzYWdlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi0g
ICAgOiBUZXh0dXJlU3RvcmFnZSh1c2FnZSksIG1SZW5kZXJUYXJnZXRTZXJpYWwoUmVuZGVyYnVm
ZmVyU3RvcmFnZTo6aXNzdWVTZXJpYWwoKSkKLXsKLSAgICBtVGV4dHVyZSA9IE5VTEw7Ci0gICAg
Ly8gaWYgdGhlIHdpZHRoIG9yIGhlaWdodCBpcyBub3QgcG9zaXRpdmUgdGhpcyBzaG91bGQgYmUg
dHJlYXRlZCBhcyBhbiBpbmNvbXBsZXRlIHRleHR1cmUKLSAgICAvLyB3ZSBoYW5kbGUgdGhhdCBo
ZXJlIGJ5IHNraXBwaW5nIHRoZSBkM2QgdGV4dHVyZSBjcmVhdGlvbgotICAgIGlmICh3aWR0aCA+
IDAgJiYgaGVpZ2h0ID4gMCkKLSAgICB7Ci0gICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmlj
ZSA9IGdldERldmljZSgpOwotICAgICAgICBNYWtlVmFsaWRTaXplKGZhbHNlLCBkeDo6SXNDb21w
cmVzc2VkRm9ybWF0KGZvcm1hdCksICZ3aWR0aCwgJmhlaWdodCwgJm1Mb2RPZmZzZXQpOwotICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZSh3aWR0aCwgaGVpZ2h0
LCBsZXZlbHMgPyBsZXZlbHMgKyBtTG9kT2Zmc2V0IDogMCwgZ2V0VXNhZ2UoKSwgZm9ybWF0LCBn
ZXRQb29sKCksICZtVGV4dHVyZSwgTlVMTCk7Ci0KLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJ
REVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKLSAgICAgICAgICAgIGVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1UZXh0dXJlU3RvcmFn
ZTJEOjp+VGV4dHVyZVN0b3JhZ2UyRCgpCi17Ci0gICAgaWYgKG1UZXh0dXJlKQotICAgIHsKLSAg
ICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKLSAgICB9Ci19Ci0KLS8vIEluY3JlbWVudHMgcmVm
Y291bnQgb24gc3VyZmFjZS4KLS8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQg
c3VyZmFjZQotSURpcmVjdDNEU3VyZmFjZTkgKlRleHR1cmVTdG9yYWdlMkQ6OmdldFN1cmZhY2VM
ZXZlbChpbnQgbGV2ZWwsIGJvb2wgZGlydHkpCi17Ci0gICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1
cmZhY2UgPSBOVUxMOwotCi0gICAgaWYgKG1UZXh0dXJlKQotICAgIHsKLSAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBtVGV4dHVyZS0+R2V0U3VyZmFjZUxldmVsKGxldmVsICsgbUxvZE9mZnNldCwg
JnN1cmZhY2UpOwotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotCi0gICAgICAg
IC8vIFdpdGggbWFuYWdlZCB0ZXh0dXJlcyB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIGluZm9ybWVk
IG9mIHVwZGF0ZXMgdG8gdGhlIGxvd2VyIG1pcG1hcCBsZXZlbHMKLSAgICAgICAgaWYgKGxldmVs
ICE9IDAgJiYgaXNNYW5hZ2VkKCkgJiYgZGlydHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1U
ZXh0dXJlLT5BZGREaXJ0eVJlY3QoTlVMTCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gc3VyZmFjZTsKLX0KLQotSURpcmVjdDNEQmFzZVRleHR1cmU5ICpUZXh0dXJlU3RvcmFnZTJE
OjpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1UZXh0dXJlOwotfQotCi11
bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2UyRDo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51
bSB0YXJnZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1SZW5kZXJUYXJnZXRTZXJpYWw7Ci19Ci0K
LVRleHR1cmUyRDo6VGV4dHVyZTJEKEdMdWludCBpZCkgOiBUZXh0dXJlKGlkKQotewotICAgIG1U
ZXhTdG9yYWdlID0gTlVMTDsKLSAgICBtU3VyZmFjZSA9IE5VTEw7Ci0gICAgbUNvbG9yYnVmZmVy
UHJveHkgPSBOVUxMOwotICAgIG1Qcm94eVJlZnMgPSAwOwotfQotCi1UZXh0dXJlMkQ6On5UZXh0
dXJlMkQoKQotewotICAgIG1Db2xvcmJ1ZmZlclByb3h5ID0gTlVMTDsKLQotICAgIGRlbGV0ZSBt
VGV4U3RvcmFnZTsKLSAgICBtVGV4U3RvcmFnZSA9IE5VTEw7Ci0gICAgCi0gICAgaWYgKG1TdXJm
YWNlKQotICAgIHsKLSAgICAgICAgbVN1cmZhY2UtPnNldEJvdW5kVGV4dHVyZShOVUxMKTsKLSAg
ICAgICAgbVN1cmZhY2UgPSBOVUxMOwotICAgIH0KLX0KLQotLy8gV2UgbmVlZCB0byBtYWludGFp
biBhIGNvdW50IG9mIHJlZmVyZW5jZXMgdG8gcmVuZGVyYnVmZmVycyBhY3RpbmcgYXMgCi0vLyBw
cm94aWVzIGZvciB0aGlzIHRleHR1cmUsIHNvIHRoYXQgd2UgZG8gbm90IGF0dGVtcHQgdG8gdXNl
IGEgcG9pbnRlciAKLS8vIHRvIGEgcmVuZGVyYnVmZmVyIHByb3h5IHdoaWNoIGhhcyBiZWVuIGRl
bGV0ZWQuCi12b2lkIFRleHR1cmUyRDo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpw
cm94eSkKLXsKLSAgICBtUHJveHlSZWZzKys7Ci19Ci0KLXZvaWQgVGV4dHVyZTJEOjpyZWxlYXNl
UHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSkKLXsKLSAgICBpZiAobVByb3h5UmVmcyA+
IDApCi0gICAgICAgIG1Qcm94eVJlZnMtLTsKLQotICAgIGlmIChtUHJveHlSZWZzID09IDApCi0g
ICAgICAgIG1Db2xvcmJ1ZmZlclByb3h5ID0gTlVMTDsKLX0KLQotR0xlbnVtIFRleHR1cmUyRDo6
Z2V0VGFyZ2V0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gR0xfVEVYVFVSRV8yRDsKLX0KLQotR0xz
aXplaSBUZXh0dXJlMkQ6OmdldFdpZHRoKEdMaW50IGxldmVsKSBjb25zdAotewotICAgIGlmIChs
ZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKLSAgICAgICAgcmV0dXJu
IG1JbWFnZUFycmF5W2xldmVsXS5nZXRXaWR0aCgpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJu
IDA7Ci19Ci0KLUdMc2l6ZWkgVGV4dHVyZTJEOjpnZXRIZWlnaHQoR0xpbnQgbGV2ZWwpIGNvbnN0
Ci17Ci0gICAgaWYgKGxldmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQot
ICAgICAgICByZXR1cm4gbUltYWdlQXJyYXlbbGV2ZWxdLmdldEhlaWdodCgpOwotICAgIGVsc2UK
LSAgICAgICAgcmV0dXJuIDA7Ci19Ci0KLUdMZW51bSBUZXh0dXJlMkQ6OmdldEludGVybmFsRm9y
bWF0KEdMaW50IGxldmVsKSBjb25zdAotewotICAgIGlmIChsZXZlbCA8IElNUExFTUVOVEFUSU9O
X01BWF9URVhUVVJFX0xFVkVMUykKLSAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5W2xldmVsXS5n
ZXRJbnRlcm5hbEZvcm1hdCgpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIEdMX05PTkU7Ci19
Ci0KLUQzREZPUk1BVCBUZXh0dXJlMkQ6OmdldEQzREZvcm1hdChHTGludCBsZXZlbCkgY29uc3QK
LXsKLSAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCi0g
ICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVtsZXZlbF0uZ2V0RDNERm9ybWF0KCk7Ci0gICAgZWxz
ZQotICAgICAgICByZXR1cm4gRDNERk1UX1VOS05PV047Ci19Ci0KLXZvaWQgVGV4dHVyZTJEOjpy
ZWRlZmluZUltYWdlKEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgcmVsZWFzZVRleEltYWdlKCk7Ci0KLSAgICBi
b29sIHJlZGVmaW5lZCA9IG1JbWFnZUFycmF5W2xldmVsXS5yZWRlZmluZShpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZmFsc2UpOwotCi0gICAgaWYgKG1UZXhTdG9yYWdlICYmIHJlZGVm
aW5lZCkKLSAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05f
TUFYX1RFWFRVUkVfTEVWRUxTOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1JbWFnZUFy
cmF5W2ldLm1hcmtEaXJ0eSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZGVsZXRlIG1UZXhTdG9y
YWdlOwotICAgICAgICBtVGV4U3RvcmFnZSA9IE5VTEw7Ci0gICAgICAgIG1EaXJ0eUltYWdlcyA9
IHRydWU7Ci0gICAgfQotfQotCi12b2lkIFRleHR1cmUyRDo6c2V0SW1hZ2UoR0xpbnQgbGV2ZWws
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgR0xp
bnQgaW50ZXJuYWxmb3JtYXQgPSBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5
cGUpOwotICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KTsKLQotICAgIFRleHR1cmU6OnNldEltYWdlKHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCAm
bUltYWdlQXJyYXlbbGV2ZWxdKTsKLX0KLQotdm9pZCBUZXh0dXJlMkQ6OmJpbmRUZXhJbWFnZShl
Z2w6OlN1cmZhY2UgKnN1cmZhY2UpCi17Ci0gICAgcmVsZWFzZVRleEltYWdlKCk7Ci0KLSAgICBH
TGludCBpbnRlcm5hbGZvcm1hdDsKLQotICAgIHN3aXRjaChzdXJmYWNlLT5nZXRGb3JtYXQoKSkK
LSAgICB7Ci0gICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKLSAgICAgICAgaW50ZXJuYWxmb3Jt
YXQgPSBHTF9SR0JBOF9PRVM7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBEM0RGTVRfWDhS
OEc4Qjg6Ci0gICAgICAgIGludGVybmFsZm9ybWF0ID0gR0xfUkdCOF9PRVM7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbUltYWdlQXJyYXlbMF0ucmVkZWZpbmUoaW50ZXJuYWxmb3Jt
YXQsIHN1cmZhY2UtPmdldFdpZHRoKCksIHN1cmZhY2UtPmdldEhlaWdodCgpLCB0cnVlKTsKLQot
ICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKLSAgICBtVGV4U3RvcmFnZSA9IG5ldyBUZXh0dXJlU3Rv
cmFnZTJEKHN1cmZhY2UtPmdldE9mZnNjcmVlblRleHR1cmUoKSk7Ci0KLSAgICBtRGlydHlJbWFn
ZXMgPSB0cnVlOwotICAgIG1TdXJmYWNlID0gc3VyZmFjZTsKLSAgICBtU3VyZmFjZS0+c2V0Qm91
bmRUZXh0dXJlKHRoaXMpOwotfQotCi12b2lkIFRleHR1cmUyRDo6cmVsZWFzZVRleEltYWdlKCkK
LXsKLSAgICBpZiAobVN1cmZhY2UpCi0gICAgewotICAgICAgICBtU3VyZmFjZS0+c2V0Qm91bmRU
ZXh0dXJlKE5VTEwpOwotICAgICAgICBtU3VyZmFjZSA9IE5VTEw7Ci0KLSAgICAgICAgaWYgKG1U
ZXhTdG9yYWdlKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGUgbVRleFN0b3JhZ2U7Ci0g
ICAgICAgICAgICBtVGV4U3RvcmFnZSA9IE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBtSW1hZ2VBcnJheVtpXS5yZWRlZmluZShHTF9SR0JBOF9P
RVMsIDAsIDAsIHRydWUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFRleHR1cmUyRDo6
c2V0Q29tcHJlc3NlZEltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVs
cykKLXsKLSAgICAvLyBjb21wcmVzc2VkIGZvcm1hdHMgZG9uJ3QgaGF2ZSBzZXBhcmF0ZSBzaXpl
ZCBpbnRlcm5hbCBmb3JtYXRzLS0gd2UgY2FuIGp1c3QgdXNlIHRoZSBjb21wcmVzc2VkIGZvcm1h
dCBkaXJlY3RseQotICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7Ci0KLSAgICBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoaW1hZ2VTaXplLCBwaXhlbHMs
ICZtSW1hZ2VBcnJheVtsZXZlbF0pOwotfQotCi12b2lkIFRleHR1cmUyRDo6Y29tbWl0UmVjdChH
TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpCi17Ci0gICAgQVNTRVJUKG1JbWFnZUFycmF5W2xldmVsXS5nZXRTdXJm
YWNlKCkgIT0gTlVMTCk7Ci0KLSAgICBpZiAobGV2ZWwgPCBsZXZlbENvdW50KCkpCi0gICAgewot
ICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdExldmVsID0gbVRleFN0b3JhZ2UtPmdldFN1
cmZhY2VMZXZlbChsZXZlbCwgdHJ1ZSk7Ci0KLSAgICAgICAgaWYgKGRlc3RMZXZlbCkKLSAgICAg
ICAgewotICAgICAgICAgICAgSW1hZ2UgKmltYWdlID0gJm1JbWFnZUFycmF5W2xldmVsXTsKLSAg
ICAgICAgICAgIGltYWdlLT51cGRhdGVTdXJmYWNlKGRlc3RMZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICAgICAgICAgIGRlc3RMZXZlbC0+UmVsZWFzZSgpOwot
ICAgICAgICAgICAgaW1hZ2UtPm1hcmtDbGVhbigpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIFRleHR1cmUyRDo6c3ViSW1hZ2UoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCi17
Ci0gICAgaWYgKFRleHR1cmU6OnN1YkltYWdlKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMsICZtSW1hZ2VBcnJheVts
ZXZlbF0pKQotICAgIHsKLSAgICAgICAgY29tbWl0UmVjdChsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQotfQotCi12b2lkIFRleHR1cmUyRDo6c3ViSW1hZ2VD
b21wcmVzc2VkKEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNp
emUsIGNvbnN0IHZvaWQgKnBpeGVscykKLXsKLSAgICBpZiAoVGV4dHVyZTo6c3ViSW1hZ2VDb21w
cmVzc2VkKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXpl
LCBwaXhlbHMsICZtSW1hZ2VBcnJheVtsZXZlbF0pKQotICAgIHsKLSAgICAgICAgY29tbWl0UmVj
dChsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQotfQotCi12
b2lkIFRleHR1cmUyRDo6Y29weUltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIg
KnNvdXJjZSkKLXsKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0ID0gc291cmNl
LT5nZXRSZW5kZXJUYXJnZXQoKTsKLQotICAgIGlmICghcmVuZGVyVGFyZ2V0KQotICAgIHsKLSAg
ICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHJlbmRlciB0YXJnZXQuIik7Ci0gICAg
ICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci0KLSAgICBHTGludCBp
bnRlcm5hbGZvcm1hdCA9IENvbnZlcnRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgR0xfVU5T
SUdORURfQllURSk7Ci0gICAgcmVkZWZpbmVJbWFnZShsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpOwotICAgCi0gICAgaWYgKCFtSW1hZ2VBcnJheVtsZXZlbF0uaXNSZW5kZXJh
YmxlRm9ybWF0KCkpCi0gICAgewotICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0uY29weSgwLCAw
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCByZW5kZXJUYXJnZXQpOwotICAgICAgICBtRGlydHlJbWFn
ZXMgPSB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBpZiAoIW1UZXhTdG9y
YWdlIHx8ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIG1JbWFnZUFycmF5W2xldmVsXS5tYXJrQ2xlYW4oKTsKLQotICAgICAgICBpZiAod2lkdGgg
IT0gMCAmJiBoZWlnaHQgIT0gMCAmJiBsZXZlbCA8IGxldmVsQ291bnQoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgUkVDVCBzb3VyY2VSZWN0OwotICAgICAgICAgICAgc291cmNlUmVjdC5sZWZ0
ID0geDsKLSAgICAgICAgICAgIHNvdXJjZVJlY3QucmlnaHQgPSB4ICsgd2lkdGg7Ci0gICAgICAg
ICAgICBzb3VyY2VSZWN0LnRvcCA9IHk7Ci0gICAgICAgICAgICBzb3VyY2VSZWN0LmJvdHRvbSA9
IHkgKyBoZWlnaHQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5
ICpkZXN0ID0gbVRleFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChsZXZlbCwgdHJ1ZSk7Ci0KLSAg
ICAgICAgICAgIGlmIChkZXN0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdldEJs
aXR0ZXIoKS0+Y29weShyZW5kZXJUYXJnZXQsIHNvdXJjZVJlY3QsIGZvcm1hdCwgMCwgMCwgZGVz
dCk7Ci0gICAgICAgICAgICAgICAgZGVzdC0+UmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmVuZGVyVGFyZ2V0LT5SZWxlYXNlKCk7Ci19Ci0KLXZvaWQg
VGV4dHVyZTJEOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQotewotICAgIGlmICh4b2Zmc2V0
ICsgd2lkdGggPiBtSW1hZ2VBcnJheVtsZXZlbF0uZ2V0V2lkdGgoKSB8fCB5b2Zmc2V0ICsgaGVp
Z2h0ID4gbUltYWdlQXJyYXlbbGV2ZWxdLmdldEhlaWdodCgpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgIH0KLQotICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICpyZW5kZXJUYXJnZXQgPSBzb3VyY2UtPmdldFJlbmRlclRhcmdldCgpOwotCi0gICAgaWYg
KCFyZW5kZXJUYXJnZXQpCi0gICAgewotICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0
aGUgcmVuZGVyIHRhcmdldC4iKTsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOwotICAgIH0KLQotICAgIGlmICghbUltYWdlQXJyYXlbbGV2ZWxdLmlzUmVuZGVyYWJsZUZv
cm1hdCgpIHx8ICghbVRleFN0b3JhZ2UgJiYgIWlzU2FtcGxlckNvbXBsZXRlKCkpKQotICAgIHsK
LSAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLmNvcHkoeG9mZnNldCwgeW9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCwgcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1
ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAh
bVRleFN0b3JhZ2UtPmlzUmVuZGVyVGFyZ2V0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnZlcnRUb1JlbmRlclRhcmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB1cGRh
dGVUZXh0dXJlKCk7Ci0KLSAgICAgICAgaWYgKGxldmVsIDwgbGV2ZWxDb3VudCgpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBSRUNUIHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBzb3VyY2VSZWN0
LmxlZnQgPSB4OwotICAgICAgICAgICAgc291cmNlUmVjdC5yaWdodCA9IHggKyB3aWR0aDsKLSAg
ICAgICAgICAgIHNvdXJjZVJlY3QudG9wID0geTsKLSAgICAgICAgICAgIHNvdXJjZVJlY3QuYm90
dG9tID0geSArIGhlaWdodDsKLQotICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3Qg
PSBtVGV4U3RvcmFnZS0+Z2V0U3VyZmFjZUxldmVsKGxldmVsLCB0cnVlKTsKLQotICAgICAgICAg
ICAgaWYgKGRlc3QpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2V0QmxpdHRlcigp
LT5jb3B5KHJlbmRlclRhcmdldCwgc291cmNlUmVjdCwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpFeHRyYWN0Rm9ybWF0KG1JbWFnZUFycmF5WzBdLmdldEludGVybmFs
Rm9ybWF0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5
b2Zmc2V0LCBkZXN0KTsKLSAgICAgICAgICAgICAgICBkZXN0LT5SZWxlYXNlKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsK
LX0KLQotdm9pZCBUZXh0dXJlMkQ6OnN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgRDNERk9S
TUFUIGQzZGZtdCA9IENvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQp
OwotICAgIERXT1JEIGQzZHVzYWdlID0gR2V0VGV4dHVyZVVzYWdlKGQzZGZtdCwgbVVzYWdlLCBm
YWxzZSk7Ci0KLSAgICBkZWxldGUgbVRleFN0b3JhZ2U7Ci0gICAgbVRleFN0b3JhZ2UgPSBuZXcg
VGV4dHVyZVN0b3JhZ2UyRChsZXZlbHMsIGQzZGZtdCwgZDNkdXNhZ2UsIHdpZHRoLCBoZWlnaHQp
OwotICAgIG1JbW11dGFibGUgPSB0cnVlOwotCi0gICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZl
bCA8IGxldmVsczsgbGV2ZWwrKykKLSAgICB7Ci0gICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS5y
ZWRlZmluZShpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgdHJ1ZSk7Ci0gICAgICAgIHdp
ZHRoID0gc3RkOjptYXgoMSwgd2lkdGggPj4gMSk7Ci0gICAgICAgIGhlaWdodCA9IHN0ZDo6bWF4
KDEsIGhlaWdodCA+PiAxKTsKLSAgICB9Ci0KLSAgICBmb3IgKGludCBsZXZlbCA9IGxldmVsczsg
bGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGxldmVsKyspCi0gICAg
ewotICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0ucmVkZWZpbmUoR0xfTk9ORSwgMCwgMCwgdHJ1
ZSk7Ci0gICAgfQotCi0gICAgaWYgKG1UZXhTdG9yYWdlLT5pc01hbmFnZWQoKSkKLSAgICB7Ci0g
ICAgICAgIGludCBsZXZlbHMgPSBsZXZlbENvdW50KCk7Ci0KLSAgICAgICAgZm9yIChpbnQgbGV2
ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwrKykKLSAgICAgICAgewotICAgICAgICAgICAg
SURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBtVGV4U3RvcmFnZS0+Z2V0U3VyZmFjZUxldmVs
KGxldmVsLCBmYWxzZSk7Ci0gICAgICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0uc2V0TWFuYWdl
ZFN1cmZhY2Uoc3VyZmFjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFRlc3RzIGZvciAy
RCB0ZXh0dXJlIHNhbXBsaW5nIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rp
b24gMy44LjIgcGFnZSA4NS4KLWJvb2wgVGV4dHVyZTJEOjppc1NhbXBsZXJDb21wbGV0ZSgpIGNv
bnN0Ci17Ci0gICAgR0xzaXplaSB3aWR0aCA9IG1JbWFnZUFycmF5WzBdLmdldFdpZHRoKCk7Ci0g
ICAgR0xzaXplaSBoZWlnaHQgPSBtSW1hZ2VBcnJheVswXS5nZXRIZWlnaHQoKTsKLQotICAgIGlm
ICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIGJvb2wgbWlwbWFwcGluZyA9IGlzTWlwbWFwRmlsdGVyZWQoKTsKLQot
ICAgIGlmICgoSXNGbG9hdDMyRm9ybWF0KGdldEludGVybmFsRm9ybWF0KDApKSAmJiAhZ2V0Q29u
dGV4dCgpLT5zdXBwb3J0c0Zsb2F0MzJMaW5lYXJGaWx0ZXIoKSkgfHwKLSAgICAgICAgKElzRmxv
YXQxNkZvcm1hdChnZXRJbnRlcm5hbEZvcm1hdCgwKSkgJiYgIWdldENvbnRleHQoKS0+c3VwcG9y
dHNGbG9hdDE2TGluZWFyRmlsdGVyKCkpKQotICAgIHsKLSAgICAgICAgaWYgKG1NYWdGaWx0ZXIg
IT0gR0xfTkVBUkVTVCB8fCAobU1pbkZpbHRlciAhPSBHTF9ORUFSRVNUICYmIG1NaW5GaWx0ZXIg
IT0gR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgbnBvdFN1cHBvcnQgPSBn
ZXRDb250ZXh0KCktPnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSgpOwotCi0gICAgaWYgKCFucG90
U3VwcG9ydCkKLSAgICB7Ci0gICAgICAgIGlmICgoZ2V0V3JhcFMoKSAhPSBHTF9DTEFNUF9UT19F
REdFICYmICFpc1BvdzIod2lkdGgpKSB8fAotICAgICAgICAgICAgKGdldFdyYXBUKCkgIT0gR0xf
Q0xBTVBfVE9fRURHRSAmJiAhaXNQb3cyKGhlaWdodCkpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobWlwbWFwcGluZykK
LSAgICB7Ci0gICAgICAgIGlmICghbnBvdFN1cHBvcnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghaXNQb3cyKHdpZHRoKSB8fCAhaXNQb3cyKGhlaWdodCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCFpc01pcG1hcENvbXBsZXRlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci0vLyBUZXN0cyBmb3IgMkQgdGV4dHVyZSAobWlwbWFwKSBjb21wbGV0ZW5lc3MuIFtPcGVuR0wg
RVMgMi4wLjI0XSBzZWN0aW9uIDMuNy4xMCBwYWdlIDgxLgotYm9vbCBUZXh0dXJlMkQ6OmlzTWlw
bWFwQ29tcGxldGUoKSBjb25zdAotewotICAgIGlmIChpc0ltbXV0YWJsZSgpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgR0xzaXplaSB3aWR0aCA9IG1JbWFnZUFy
cmF5WzBdLmdldFdpZHRoKCk7Ci0gICAgR0xzaXplaSBoZWlnaHQgPSBtSW1hZ2VBcnJheVswXS5n
ZXRIZWlnaHQoKTsKLQotICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGludCBxID0gbG9nMihzdGQ6Om1h
eCh3aWR0aCwgaGVpZ2h0KSk7Ci0KLSAgICBmb3IgKGludCBsZXZlbCA9IDE7IGxldmVsIDw9IHE7
IGxldmVsKyspCi0gICAgewotICAgICAgICBpZiAobUltYWdlQXJyYXlbbGV2ZWxdLmdldEludGVy
bmFsRm9ybWF0KCkgIT0gbUltYWdlQXJyYXlbMF0uZ2V0SW50ZXJuYWxGb3JtYXQoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KG1JbWFnZUFycmF5W2xldmVsXS5nZXRXaWR0aCgpICE9IHN0ZDo6bWF4KDEsIHdpZHRoID4+IGxl
dmVsKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKG1JbWFnZUFycmF5W2xldmVsXS5nZXRIZWlnaHQoKSAhPSBzdGQ6Om1heCgx
LCBoZWlnaHQgPj4gbGV2ZWwpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBUZXh0dXJl
MkQ6OmlzQ29tcHJlc3NlZChHTGludCBsZXZlbCkgY29uc3QKLXsKLSAgICByZXR1cm4gSXNDb21w
cmVzc2VkKGdldEludGVybmFsRm9ybWF0KGxldmVsKSk7Ci19Ci0KLWJvb2wgVGV4dHVyZTJEOjpp
c0RlcHRoKEdMaW50IGxldmVsKSBjb25zdAotewotICAgIHJldHVybiBJc0RlcHRoVGV4dHVyZShn
ZXRJbnRlcm5hbEZvcm1hdChsZXZlbCkpOwotfQotCi1JRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRl
eHR1cmUyRDo6Z2V0QmFzZVRleHR1cmUoKSBjb25zdAotewotICAgIHJldHVybiBtVGV4U3RvcmFn
ZSA/IG1UZXhTdG9yYWdlLT5nZXRCYXNlVGV4dHVyZSgpIDogTlVMTDsKLX0KLQotLy8gQ29uc3Ry
dWN0cyBhIERpcmVjdDNEIDkgdGV4dHVyZSByZXNvdXJjZSBmcm9tIHRoZSB0ZXh0dXJlIGltYWdl
cwotdm9pZCBUZXh0dXJlMkQ6OmNyZWF0ZVRleHR1cmUoKQotewotICAgIGRlbGV0ZSBtVGV4U3Rv
cmFnZTsKLSAgICBtVGV4U3RvcmFnZSA9IE5VTEw7Ci0KLSAgICBHTHNpemVpIHdpZHRoID0gbUlt
YWdlQXJyYXlbMF0uZ2V0V2lkdGgoKTsKLSAgICBHTHNpemVpIGhlaWdodCA9IG1JbWFnZUFycmF5
WzBdLmdldEhlaWdodCgpOwotCi0gICAgaWYgKCEod2lkdGggPiAwICYmIGhlaWdodCA+IDApKQot
ICAgICAgICByZXR1cm47IC8vIGRvIG5vdCBhdHRlbXB0IHRvIGNyZWF0ZSBkM2QgdGV4dHVyZXMg
Zm9yIG5vbmV4aXN0YW50IGRhdGEKLQotICAgIEdMaW50IGxldmVscyA9IGNyZWF0aW9uTGV2ZWxz
KHdpZHRoLCBoZWlnaHQpOwotICAgIEQzREZPUk1BVCBkM2RmbXQgPSBtSW1hZ2VBcnJheVswXS5n
ZXREM0RGb3JtYXQoKTsKLSAgICBEV09SRCBkM2R1c2FnZSA9IEdldFRleHR1cmVVc2FnZShkM2Rm
bXQsIG1Vc2FnZSwgZmFsc2UpOwotCi0gICAgbVRleFN0b3JhZ2UgPSBuZXcgVGV4dHVyZVN0b3Jh
Z2UyRChsZXZlbHMsIGQzZGZtdCwgZDNkdXNhZ2UsIHdpZHRoLCBoZWlnaHQpOwotICAgIAotICAg
IGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpCi0gICAgewotICAgICAgICBpbnQgbGV2ZWxz
ID0gbGV2ZWxDb3VudCgpOwotCi0gICAgICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBs
ZXZlbHM7IGxldmVsKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5
ICpzdXJmYWNlID0gbVRleFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChsZXZlbCwgZmFsc2UpOwot
ICAgICAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLnNldE1hbmFnZWRTdXJmYWNlKHN1cmZhY2Up
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKLX0KLQotdm9p
ZCBUZXh0dXJlMkQ6OnVwZGF0ZVRleHR1cmUoKQotewotICAgIGJvb2wgbWlwbWFwcGluZyA9IChp
c01pcG1hcEZpbHRlcmVkKCkgJiYgaXNNaXBtYXBDb21wbGV0ZSgpKTsKLQotICAgIGludCBsZXZl
bHMgPSAobWlwbWFwcGluZyA/IGxldmVsQ291bnQoKSA6IDEpOwotCi0gICAgZm9yIChpbnQgbGV2
ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwrKykKLSAgICB7Ci0gICAgICAgIEltYWdlICpp
bWFnZSA9ICZtSW1hZ2VBcnJheVtsZXZlbF07Ci0KLSAgICAgICAgaWYgKGltYWdlLT5pc0RpcnR5
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbW1pdFJlY3QobGV2ZWwsIDAsIDAsIG1JbWFn
ZUFycmF5W2xldmVsXS5nZXRXaWR0aCgpLCBtSW1hZ2VBcnJheVtsZXZlbF0uZ2V0SGVpZ2h0KCkp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFRleHR1cmUyRDo6Y29udmVydFRvUmVuZGVy
VGFyZ2V0KCkKLXsKLSAgICBUZXh0dXJlU3RvcmFnZTJEICpuZXdUZXhTdG9yYWdlID0gTlVMTDsK
LQotICAgIGlmIChtSW1hZ2VBcnJheVswXS5nZXRXaWR0aCgpICE9IDAgJiYgbUltYWdlQXJyYXlb
MF0uZ2V0SGVpZ2h0KCkgIT0gMCkKLSAgICB7Ci0gICAgICAgIEdMc2l6ZWkgd2lkdGggPSBtSW1h
Z2VBcnJheVswXS5nZXRXaWR0aCgpOwotICAgICAgICBHTHNpemVpIGhlaWdodCA9IG1JbWFnZUFy
cmF5WzBdLmdldEhlaWdodCgpOwotICAgICAgICBHTGludCBsZXZlbHMgPSBjcmVhdGlvbkxldmVs
cyh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgRDNERk9STUFUIGQzZGZtdCA9IG1JbWFnZUFycmF5
WzBdLmdldEQzREZvcm1hdCgpOwotICAgICAgICBEV09SRCBkM2R1c2FnZSA9IEdldFRleHR1cmVV
c2FnZShkM2RmbXQsIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUsIHRydWUpOwotCi0g
ICAgICAgIG5ld1RleFN0b3JhZ2UgPSBuZXcgVGV4dHVyZVN0b3JhZ2UyRChsZXZlbHMsIGQzZGZt
dCwgZDNkdXNhZ2UsIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgICAgIGlmIChtVGV4U3RvcmFnZSAh
PSBOVUxMKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgp
OwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlID0gbVRleFN0
b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChpLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgSURpcmVj
dDNEU3VyZmFjZTkgKmRlc3QgPSBuZXdUZXhTdG9yYWdlLT5nZXRTdXJmYWNlTGV2ZWwoaSwgdHJ1
ZSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWNvcHlUb1JlbmRlclRhcmdldChkZXN0LCBzb3Vy
Y2UsIG1UZXhTdG9yYWdlLT5pc01hbmFnZWQoKSkpCi0gICAgICAgICAgICAgICAgeyAgIAotICAg
ICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdUZXhTdG9yYWdlOwotICAgICAgICAgICAgICAgICAg
IGlmIChzb3VyY2UpIHNvdXJjZS0+UmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgIGlmIChk
ZXN0KSBkZXN0LT5SZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlm
IChzb3VyY2UpIHNvdXJjZS0+UmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChkZXN0KSBk
ZXN0LT5SZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBk
ZWxldGUgbVRleFN0b3JhZ2U7Ci0gICAgbVRleFN0b3JhZ2UgPSBuZXdUZXhTdG9yYWdlOwotCi0g
ICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKLX0KLQotdm9pZCBUZXh0dXJlMkQ6OmdlbmVyYXRlTWlw
bWFwcygpCi17Ci0gICAgaWYgKCFnZXRDb250ZXh0KCktPnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVy
ZSgpKQotICAgIHsKLSAgICAgICAgaWYgKCFpc1BvdzIobUltYWdlQXJyYXlbMF0uZ2V0V2lkdGgo
KSkgfHwgIWlzUG93MihtSW1hZ2VBcnJheVswXS5nZXRIZWlnaHQoKSkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBQdXJnZSBhcnJheSBsZXZlbHMgMSB0aHJvdWdoIHEgYW5kIHJlc2V0
IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBnZW5lcmF0ZWQgbWlwbWFwIGxldmVscy4KLSAgICB1bnNp
Z25lZCBpbnQgcSA9IGxvZzIoc3RkOjptYXgobUltYWdlQXJyYXlbMF0uZ2V0V2lkdGgoKSwgbUlt
YWdlQXJyYXlbMF0uZ2V0SGVpZ2h0KCkpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsg
aSA8PSBxOyBpKyspCi0gICAgewotICAgICAgICByZWRlZmluZUltYWdlKGksIG1JbWFnZUFycmF5
WzBdLmdldEludGVybmFsRm9ybWF0KCksIAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWF4KG1JbWFnZUFycmF5WzBdLmdldFdpZHRoKCkgPj4gaSwgMSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXgobUltYWdlQXJyYXlbMF0uZ2V0SGVpZ2h0KCkgPj4gaSwgMSkpOwot
ICAgIH0KLQotICAgIGlmIChtVGV4U3RvcmFnZSAmJiBtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJn
ZXQoKSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDw9IHE7IGkr
KykKLSAgICAgICAgewotICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnVwcGVyID0gbVRl
eFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChpIC0gMSwgZmFsc2UpOwotICAgICAgICAgICAgSURp
cmVjdDNEU3VyZmFjZTkgKmxvd2VyID0gbVRleFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChpLCB0
cnVlKTsKLQotICAgICAgICAgICAgaWYgKHVwcGVyICE9IE5VTEwgJiYgbG93ZXIgIT0gTlVMTCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnZXRCbGl0dGVyKCktPmJveEZpbHRlcih1
cHBlciwgbG93ZXIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodXBwZXIgIT0g
TlVMTCkgdXBwZXItPlJlbGVhc2UoKTsKLSAgICAgICAgICAgIGlmIChsb3dlciAhPSBOVUxMKSBs
b3dlci0+UmVsZWFzZSgpOwotCi0gICAgICAgICAgICBtSW1hZ2VBcnJheVtpXS5tYXJrQ2xlYW4o
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
SW1hZ2VBcnJheVtpXS5nZXRTdXJmYWNlKCkgPT0gTlVMTCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIEdlbmVyYXRlTWlwKG1JbWFnZUFycmF5W2ldLmdldFN1cmZhY2UoKSwg
bUltYWdlQXJyYXlbaSAtIDFdLmdldFN1cmZhY2UoKSk7Ci0KLSAgICAgICAgICAgIG1JbWFnZUFy
cmF5W2ldLm1hcmtEaXJ0eSgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1SZW5kZXJidWZmZXIg
KlRleHR1cmUyRDo6Z2V0UmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKHRh
cmdldCAhPSBHTF9URVhUVVJFXzJEKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAoUmVuZGVyYnVmZmVyICopTlVMTCk7Ci0gICAgfQotCi0gICAgaWYg
KG1Db2xvcmJ1ZmZlclByb3h5ID09IE5VTEwpCi0gICAgewotICAgICAgICBtQ29sb3JidWZmZXJQ
cm94eSA9IG5ldyBSZW5kZXJidWZmZXIoaWQoKSwgbmV3IFJlbmRlcmJ1ZmZlclRleHR1cmUyRCh0
aGlzLCB0YXJnZXQpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbUNvbG9yYnVmZmVyUHJveHk7Ci19
Ci0KLS8vIEluY3JlbWVudHMgcmVmY291bnQgb24gc3VyZmFjZS4KLS8vIGNhbGxlciBtdXN0IFJl
bGVhc2UoKSB0aGUgcmV0dXJuZWQgc3VyZmFjZQotSURpcmVjdDNEU3VyZmFjZTkgKlRleHR1cmUy
RDo6Z2V0UmVuZGVyVGFyZ2V0KEdMZW51bSB0YXJnZXQpCi17Ci0gICAgQVNTRVJUKHRhcmdldCA9
PSBHTF9URVhUVVJFXzJEKTsKLQotICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJl
IGlzIGNyZWF0ZWQKLSAgICBpZiAoZ2V0U3RvcmFnZSh0cnVlKSA9PSBOVUxMKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgdXBkYXRlVGV4dHVyZSgpOwotICAgIAot
ICAgIC8vIGVuc3VyZSB0aGlzIGlzIE5PVCBhIGRlcHRoIHRleHR1cmUKLSAgICBpZiAoaXNEZXB0
aCgwKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gbVRl
eFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbCgwLCBmYWxzZSk7Ci19Ci0KLS8vIEluY3JlbWVudHMg
cmVmY291bnQgb24gc3VyZmFjZS4KLS8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJu
ZWQgc3VyZmFjZQotSURpcmVjdDNEU3VyZmFjZTkgKlRleHR1cmUyRDo6Z2V0RGVwdGhTdGVuY2ls
KEdMZW51bSB0YXJnZXQpCi17Ci0gICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKTsK
LQotICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKLSAgICBp
ZiAoZ2V0U3RvcmFnZSh0cnVlKSA9PSBOVUxMKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7
Ci0gICAgfQotCi0gICAgdXBkYXRlVGV4dHVyZSgpOwotCi0gICAgLy8gZW5zdXJlIHRoaXMgaXMg
YWN0dWFsbHkgYSBkZXB0aCB0ZXh0dXJlCi0gICAgaWYgKCFpc0RlcHRoKDApKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBtVGV4U3RvcmFnZS0+Z2V0U3Vy
ZmFjZUxldmVsKDAsIGZhbHNlKTsKLX0KLQotVGV4dHVyZVN0b3JhZ2UgKlRleHR1cmUyRDo6Z2V0
U3RvcmFnZShib29sIHJlbmRlclRhcmdldCkKLXsKLSAgICBpZiAoIW1UZXhTdG9yYWdlIHx8IChy
ZW5kZXJUYXJnZXQgJiYgIW1UZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdldCgpKSkKLSAgICB7Ci0g
ICAgICAgIGlmIChyZW5kZXJUYXJnZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnZlcnRU
b1JlbmRlclRhcmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgY3JlYXRlVGV4dHVyZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IG1UZXhTdG9yYWdlOwotfQotCi1UZXh0dXJlU3RvcmFnZUN1YmVNYXA6OlRleHR1cmVTdG9yYWdl
Q3ViZU1hcChpbnQgbGV2ZWxzLCBEM0RGT1JNQVQgZm9ybWF0LCBEV09SRCB1c2FnZSwgaW50IHNp
emUpCi0gICAgOiBUZXh0dXJlU3RvcmFnZSh1c2FnZSksIG1GaXJzdFJlbmRlclRhcmdldFNlcmlh
bChSZW5kZXJidWZmZXJTdG9yYWdlOjppc3N1ZUN1YmVTZXJpYWxzKCkpCi17Ci0gICAgbVRleHR1
cmUgPSBOVUxMOwotICAgIC8vIGlmIHRoZSBzaXplIGlzIG5vdCBwb3NpdGl2ZSB0aGlzIHNob3Vs
ZCBiZSB0cmVhdGVkIGFzIGFuIGluY29tcGxldGUgdGV4dHVyZQotICAgIC8vIHdlIGhhbmRsZSB0
aGF0IGhlcmUgYnkgc2tpcHBpbmcgdGhlIGQzZCB0ZXh0dXJlIGNyZWF0aW9uCi0gICAgaWYgKHNp
emUgPiAwKQotICAgIHsKLSAgICAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2
aWNlKCk7Ci0gICAgICAgIGludCBoZWlnaHQgPSBzaXplOwotICAgICAgICBNYWtlVmFsaWRTaXpl
KGZhbHNlLCBkeDo6SXNDb21wcmVzc2VkRm9ybWF0KGZvcm1hdCksICZzaXplLCAmaGVpZ2h0LCAm
bUxvZE9mZnNldCk7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVDdWJl
VGV4dHVyZShzaXplLCBsZXZlbHMgPyBsZXZlbHMgKyBtTG9kT2Zmc2V0IDogMCwgZ2V0VXNhZ2Uo
KSwgZm9ybWF0LCBnZXRQb29sKCksICZtVGV4dHVyZSwgTlVMTCk7Ci0KLSAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQz
REVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKLSAgICAg
ICAgICAgIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1U
ZXh0dXJlU3RvcmFnZUN1YmVNYXA6On5UZXh0dXJlU3RvcmFnZUN1YmVNYXAoKQotewotICAgIGlm
IChtVGV4dHVyZSkKLSAgICB7Ci0gICAgICAgIG1UZXh0dXJlLT5SZWxlYXNlKCk7Ci0gICAgfQot
fQotCi0vLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCi0vLyBjYWxsZXIgbXVzdCBS
ZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKLUlEaXJlY3QzRFN1cmZhY2U5ICpUZXh0dXJl
U3RvcmFnZUN1YmVNYXA6OmdldEN1YmVNYXBTdXJmYWNlKEdMZW51bSBmYWNlVGFyZ2V0LCBpbnQg
bGV2ZWwsIGJvb2wgZGlydHkpCi17Ci0gICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBO
VUxMOwotCi0gICAgaWYgKG1UZXh0dXJlKQotICAgIHsKLSAgICAgICAgRDNEQ1VCRU1BUF9GQUNF
UyBmYWNlID0gZXMyZHg6OkNvbnZlcnRDdWJlRmFjZShmYWNlVGFyZ2V0KTsKLSAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBtVGV4dHVyZS0+R2V0Q3ViZU1hcFN1cmZhY2UoZmFjZSwgbGV2ZWwgKyBt
TG9kT2Zmc2V0LCAmc3VyZmFjZSk7Ci0gICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
Ci0KLSAgICAgICAgLy8gV2l0aCBtYW5hZ2VkIHRleHR1cmVzIHRoZSBkcml2ZXIgbmVlZHMgdG8g
YmUgaW5mb3JtZWQgb2YgdXBkYXRlcyB0byB0aGUgbG93ZXIgbWlwbWFwIGxldmVscwotICAgICAg
ICBpZiAobGV2ZWwgIT0gMCAmJiBpc01hbmFnZWQoKSAmJiBkaXJ0eSkKLSAgICAgICAgewotICAg
ICAgICAgICAgbVRleHR1cmUtPkFkZERpcnR5UmVjdChmYWNlLCBOVUxMKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHJldHVybiBzdXJmYWNlOwotfQotCi1JRGlyZWN0M0RCYXNlVGV4dHVyZTkg
KlRleHR1cmVTdG9yYWdlQ3ViZU1hcDo6Z2V0QmFzZVRleHR1cmUoKSBjb25zdAotewotICAgIHJl
dHVybiBtVGV4dHVyZTsKLX0KLQotdW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlQ3ViZU1hcDo6
Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbCArIFRleHR1cmVDdWJlTWFwOjpmYWNlSW5kZXgodGFy
Z2V0KTsKLX0KLQotVGV4dHVyZUN1YmVNYXA6OlRleHR1cmVDdWJlTWFwKEdMdWludCBpZCkgOiBU
ZXh0dXJlKGlkKQotewotICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IDY7IGkrKykKLSAgICB7Ci0gICAgICAgIG1GYWNlUHJveGllc1tpXSA9IE5VTEw7Ci0g
ICAgICAgIG1GYWNlUHJveHlSZWZzW2ldID0gMDsKLSAgICB9Ci19Ci0KLVRleHR1cmVDdWJlTWFw
Ojp+VGV4dHVyZUN1YmVNYXAoKQotewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQot
ICAgIHsKLSAgICAgICAgbUZhY2VQcm94aWVzW2ldID0gTlVMTDsKLSAgICB9Ci0KLSAgICBkZWxl
dGUgbVRleFN0b3JhZ2U7Ci0gICAgbVRleFN0b3JhZ2UgPSBOVUxMOwotfQotCi0vLyBXZSBuZWVk
IHRvIG1haW50YWluIGEgY291bnQgb2YgcmVmZXJlbmNlcyB0byByZW5kZXJidWZmZXJzIGFjdGlu
ZyBhcyAKLS8vIHByb3hpZXMgZm9yIHRoaXMgdGV4dHVyZSwgc28gdGhhdCB0aGUgdGV4dHVyZSBp
cyBub3QgZGVsZXRlZCB3aGlsZSAKLS8vIHByb3h5IHJlZmVyZW5jZXMgc3RpbGwgZXhpc3QuIElm
IHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywKLS8vIHdlIHNldCBvdXIgcHJveHkg
cG9pbnRlciBOVUxMLCBzbyB0aGF0IGEgbmV3IGF0dGVtcHQgYXQgcmVmZXJlbmNpbmcKLS8vIHdp
bGwgY2F1c2UgcmVjcmVhdGlvbi4KLXZvaWQgVGV4dHVyZUN1YmVNYXA6OmFkZFByb3h5UmVmKGNv
bnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyBp
KyspCi0gICAgewotICAgICAgICBpZiAobUZhY2VQcm94aWVzW2ldID09IHByb3h5KQotICAgICAg
ICAgICAgbUZhY2VQcm94eVJlZnNbaV0rKzsKLSAgICB9Ci19Ci0KLXZvaWQgVGV4dHVyZUN1YmVN
YXA6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KQotewotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgNjsgaSsrKQotICAgIHsKLSAgICAgICAgaWYgKG1GYWNlUHJveGllc1tp
XSA9PSBwcm94eSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1GYWNlUHJveHlSZWZzW2ld
ID4gMCkKLSAgICAgICAgICAgICAgICBtRmFjZVByb3h5UmVmc1tpXS0tOwotCi0gICAgICAgICAg
ICBpZiAobUZhY2VQcm94eVJlZnNbaV0gPT0gMCkKLSAgICAgICAgICAgICAgICBtRmFjZVByb3hp
ZXNbaV0gPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotfQotCi1HTGVudW0gVGV4dHVyZUN1YmVN
YXA6OmdldFRhcmdldCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdMX1RFWFRVUkVfQ1VCRV9NQVA7
Ci19Ci0KLUdMc2l6ZWkgVGV4dHVyZUN1YmVNYXA6OmdldFdpZHRoKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsKSBjb25zdAotewotICAgIGlmIChsZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9U
RVhUVVJFX0xFVkVMUykKLSAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJn
ZXQpXVtsZXZlbF0uZ2V0V2lkdGgoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQot
Ci1HTHNpemVpIFRleHR1cmVDdWJlTWFwOjpnZXRIZWlnaHQoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwpIGNvbnN0Ci17Ci0gICAgaWYgKGxldmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRV
UkVfTEVWRUxTKQotICAgICAgICByZXR1cm4gbUltYWdlQXJyYXlbZmFjZUluZGV4KHRhcmdldCld
W2xldmVsXS5nZXRIZWlnaHQoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotCi1H
TGVudW0gVGV4dHVyZUN1YmVNYXA6OmdldEludGVybmFsRm9ybWF0KEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsKSBjb25zdAotewotICAgIGlmIChsZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9U
RVhUVVJFX0xFVkVMUykKLSAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJn
ZXQpXVtsZXZlbF0uZ2V0SW50ZXJuYWxGb3JtYXQoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVy
biBHTF9OT05FOwotfQotCi1EM0RGT1JNQVQgVGV4dHVyZUN1YmVNYXA6OmdldEQzREZvcm1hdChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3QKLXsKLSAgICBpZiAobGV2ZWwgPCBJTVBM
RU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCi0gICAgICAgIHJldHVybiBtSW1hZ2VBcnJh
eVtmYWNlSW5kZXgodGFyZ2V0KV1bbGV2ZWxdLmdldEQzREZvcm1hdCgpOwotICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuIEQzREZNVF9VTktOT1dOOwotfQotCi12b2lkIFRleHR1cmVDdWJlTWFwOjpz
ZXRJbWFnZVBvc1goR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2
b2lkICpwaXhlbHMpCi17Ci0gICAgc2V0SW1hZ2UoMCwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMpOwotfQotCi12b2lkIFRleHR1cmVD
dWJlTWFwOjpzZXRJbWFnZU5lZ1goR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50
LCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgc2V0SW1hZ2UoMSwgbGV2ZWwsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMpOwotfQotCi12b2lk
IFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZVBvc1koR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNr
QWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgc2V0SW1hZ2UoMiwgbGV2ZWws
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMpOwot
fQotCi12b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZU5lZ1koR0xpbnQgbGV2ZWwsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xp
bnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAgc2V0SW1hZ2Uo
MywgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBw
aXhlbHMpOwotfQotCi12b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZVBvc1ooR0xpbnQgbGV2
ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCi17Ci0gICAg
c2V0SW1hZ2UoNCwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxp
Z25tZW50LCBwaXhlbHMpOwotfQotCi12b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZU5lZ1oo
R0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMp
Ci17Ci0gICAgc2V0SW1hZ2UoNSwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
dW5wYWNrQWxpZ25tZW50LCBwaXhlbHMpOwotfQotCi12b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRD
b21wcmVzc2VkSW1hZ2UoR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscykKLXsKLSAgICAvLyBjb21wcmVzc2VkIGZvcm1hdHMgZG9uJ3QgaGF2ZSBzZXBh
cmF0ZSBzaXplZCBpbnRlcm5hbCBmb3JtYXRzLS0gd2UgY2FuIGp1c3QgdXNlIHRoZSBjb21wcmVz
c2VkIGZvcm1hdCBkaXJlY3RseQotICAgIHJlZGVmaW5lSW1hZ2UoZmFjZUluZGV4KGZhY2UpLCBs
ZXZlbCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIFRleHR1cmU6OnNldENvbXByZXNz
ZWRJbWFnZShpbWFnZVNpemUsIHBpeGVscywgJm1JbWFnZUFycmF5W2ZhY2VJbmRleChmYWNlKV1b
bGV2ZWxdKTsKLX0KLQotdm9pZCBUZXh0dXJlQ3ViZU1hcDo6Y29tbWl0UmVjdChpbnQgZmFjZSwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KQotewotICAgIEFTU0VSVChtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0u
Z2V0U3VyZmFjZSgpICE9IE5VTEwpOwotCi0gICAgaWYgKGxldmVsIDwgbGV2ZWxDb3VudCgpKQot
ICAgIHsKLSAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RMZXZlbCA9IG1UZXhTdG9yYWdl
LT5nZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmYWNl
LCBsZXZlbCwgdHJ1ZSk7Ci0gICAgICAgIEFTU0VSVChkZXN0TGV2ZWwgIT0gTlVMTCk7Ci0KLSAg
ICAgICAgaWYgKGRlc3RMZXZlbCAhPSBOVUxMKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbWFn
ZSAqaW1hZ2UgPSAmbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdOwotICAgICAgICAgICAgaW1hZ2Ut
PnVwZGF0ZVN1cmZhY2UoZGVzdExldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
KTsKLQotICAgICAgICAgICAgZGVzdExldmVsLT5SZWxlYXNlKCk7Ci0gICAgICAgICAgICBpbWFn
ZS0+bWFya0NsZWFuKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgVGV4dHVyZUN1YmVN
YXA6OnN1YkltYWdlKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxz
KQotewotICAgIGlmIChUZXh0dXJlOjpzdWJJbWFnZSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCAmbUltYWdlQXJy
YXlbZmFjZUluZGV4KHRhcmdldCldW2xldmVsXSkpCi0gICAgewotICAgICAgICBjb21taXRSZWN0
KGZhY2VJbmRleCh0YXJnZXQpLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCk7Ci0gICAgfQotfQotCi12b2lkIFRleHR1cmVDdWJlTWFwOjpzdWJJbWFnZUNvbXByZXNzZWQo
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQotewotICAgIGlmIChUZXh0dXJlOjpzdWJJbWFn
ZUNvbXByZXNzZWQoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFn
ZVNpemUsIHBpeGVscywgJm1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0pKQot
ICAgIHsKLSAgICAgICAgY29tbWl0UmVjdChmYWNlSW5kZXgodGFyZ2V0KSwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLX0KLQotLy8gVGVzdHMgZm9yIGN1
YmUgbWFwIHNhbXBsaW5nIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24g
My44LjIgcGFnZSA4Ni4KLWJvb2wgVGV4dHVyZUN1YmVNYXA6OmlzU2FtcGxlckNvbXBsZXRlKCkg
Y29uc3QKLXsKLSAgICBpbnQgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLmdldFdpZHRoKCk7Ci0K
LSAgICBib29sIG1pcG1hcHBpbmcgPSBpc01pcG1hcEZpbHRlcmVkKCk7Ci0KLSAgICBpZiAoKGds
OjpFeHRyYWN0VHlwZShnZXRJbnRlcm5hbEZvcm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1gsIDApKSA9PSBHTF9GTE9BVCAmJiAhZ2V0Q29udGV4dCgpLT5zdXBwb3J0c0Zsb2F0MzJM
aW5lYXJGaWx0ZXIoKSkgfHwKLSAgICAgICAgKGdsOjpFeHRyYWN0VHlwZShnZXRJbnRlcm5hbEZv
cm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDApID09IEdMX0hBTEZfRkxPQVRf
T0VTKSAmJiAhZ2V0Q29udGV4dCgpLT5zdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIoKSkpCi0g
ICAgewotICAgICAgICBpZiAobU1hZ0ZpbHRlciAhPSBHTF9ORUFSRVNUIHx8IChtTWluRmlsdGVy
ICE9IEdMX05FQVJFU1QgJiYgbU1pbkZpbHRlciAhPSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNU
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKCFpc1BvdzIoc2l6ZSkgJiYgIWdldENvbnRleHQoKS0+c3VwcG9ydHNOb25Q
b3dlcjJUZXh0dXJlKCkpCi0gICAgewotICAgICAgICBpZiAoZ2V0V3JhcFMoKSAhPSBHTF9DTEFN
UF9UT19FREdFIHx8IGdldFdyYXBUKCkgIT0gR0xfQ0xBTVBfVE9fRURHRSB8fCBtaXBtYXBwaW5n
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAoIW1pcG1hcHBpbmcpCi0gICAgewotICAgICAgICBpZiAoIWlzQ3ViZUNvbXBs
ZXRlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBpZiAoIWlzTWlwbWFwQ3ViZUNvbXBsZXRl
KCkpICAgLy8gQWxzbyB0ZXN0cyBmb3IgaXNDdWJlQ29tcGxldGUoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotLy8gVGVzdHMgZm9yIGN1YmUgdGV4dHVyZSBjb21wbGV0ZW5lc3MuIFtPcGVuR0wg
RVMgMi4wLjI0XSBzZWN0aW9uIDMuNy4xMCBwYWdlIDgxLgotYm9vbCBUZXh0dXJlQ3ViZU1hcDo6
aXNDdWJlQ29tcGxldGUoKSBjb25zdAotewotICAgIGlmIChtSW1hZ2VBcnJheVswXVswXS5nZXRX
aWR0aCgpIDw9IDAgfHwgbUltYWdlQXJyYXlbMF1bMF0uZ2V0SGVpZ2h0KCkgIT0gbUltYWdlQXJy
YXlbMF1bMF0uZ2V0V2lkdGgoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCBmYWNlID0gMTsgZmFjZSA8IDY7IGZhY2UrKykKLSAg
ICB7Ci0gICAgICAgIGlmIChtSW1hZ2VBcnJheVtmYWNlXVswXS5nZXRXaWR0aCgpICE9IG1JbWFn
ZUFycmF5WzBdWzBdLmdldFdpZHRoKCkgfHwKLSAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2Vd
WzBdLmdldFdpZHRoKCkgIT0gbUltYWdlQXJyYXlbMF1bMF0uZ2V0SGVpZ2h0KCkgfHwKLSAgICAg
ICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdWzBdLmdldEludGVybmFsRm9ybWF0KCkgIT0gbUltYWdl
QXJyYXlbMF1bMF0uZ2V0SW50ZXJuYWxGb3JtYXQoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgVGV4dHVyZUN1YmVNYXA6OmlzTWlwbWFwQ3ViZUNvbXBsZXRlKCkgY29uc3QKLXsKLSAg
ICBpZiAoaXNJbW11dGFibGUoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIGlmICghaXNDdWJlQ29tcGxldGUoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBHTHNpemVpIHNpemUgPSBtSW1hZ2VBcnJheVswXVswXS5nZXRXaWR0
aCgpOwotCi0gICAgaW50IHEgPSBsb2cyKHNpemUpOwotCi0gICAgZm9yIChpbnQgZmFjZSA9IDA7
IGZhY2UgPCA2OyBmYWNlKyspCi0gICAgewotICAgICAgICBmb3IgKGludCBsZXZlbCA9IDE7IGxl
dmVsIDw9IHE7IGxldmVsKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJh
eVtmYWNlXVtsZXZlbF0uZ2V0SW50ZXJuYWxGb3JtYXQoKSAhPSBtSW1hZ2VBcnJheVswXVswXS5n
ZXRJbnRlcm5hbEZvcm1hdCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1JbWFnZUFycmF5W2Zh
Y2VdW2xldmVsXS5nZXRXaWR0aCgpICE9IHN0ZDo6bWF4KDEsIHNpemUgPj4gbGV2ZWwpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFRleHR1cmVD
dWJlTWFwOjppc0NvbXByZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIElzQ29tcHJlc3NlZChnZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVs
KSk7Ci19Ci0KLUlEaXJlY3QzREJhc2VUZXh0dXJlOSAqVGV4dHVyZUN1YmVNYXA6OmdldEJhc2VU
ZXh0dXJlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVRleFN0b3JhZ2UgPyBtVGV4U3RvcmFnZS0+
Z2V0QmFzZVRleHR1cmUoKSA6IE5VTEw7Ci19Ci0KLS8vIENvbnN0cnVjdHMgYSBEaXJlY3QzRCA5
IHRleHR1cmUgcmVzb3VyY2UgZnJvbSB0aGUgdGV4dHVyZSBpbWFnZXMsIG9yIHJldHVybnMgYW4g
ZXhpc3Rpbmcgb25lCi12b2lkIFRleHR1cmVDdWJlTWFwOjpjcmVhdGVUZXh0dXJlKCkKLXsKLSAg
ICBkZWxldGUgbVRleFN0b3JhZ2U7Ci0gICAgbVRleFN0b3JhZ2UgPSBOVUxMOwotCi0gICAgR0xz
aXplaSBzaXplID0gbUltYWdlQXJyYXlbMF1bMF0uZ2V0V2lkdGgoKTsKLQotICAgIGlmICghKHNp
emUgPiAwKSkKLSAgICAgICAgcmV0dXJuOyAvLyBkbyBub3QgYXR0ZW1wdCB0byBjcmVhdGUgZDNk
IHRleHR1cmVzIGZvciBub25leGlzdGFudCBkYXRhCi0KLSAgICBHTGludCBsZXZlbHMgPSBjcmVh
dGlvbkxldmVscyhzaXplKTsKLSAgICBEM0RGT1JNQVQgZDNkZm10ID0gbUltYWdlQXJyYXlbMF1b
MF0uZ2V0RDNERm9ybWF0KCk7Ci0gICAgRFdPUkQgZDNkdXNhZ2UgPSBHZXRUZXh0dXJlVXNhZ2Uo
ZDNkZm10LCBtVXNhZ2UsIGZhbHNlKTsKLQotICAgIG1UZXhTdG9yYWdlID0gbmV3IFRleHR1cmVT
dG9yYWdlQ3ViZU1hcChsZXZlbHMsIGQzZGZtdCwgZDNkdXNhZ2UsIHNpemUpOwotCi0gICAgaWYg
KG1UZXhTdG9yYWdlLT5pc01hbmFnZWQoKSkKLSAgICB7Ci0gICAgICAgIGludCBsZXZlbHMgPSBs
ZXZlbENvdW50KCk7Ci0KLSAgICAgICAgZm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNl
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBs
ZXZlbHM7IGxldmVsKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSURpcmVjdDNE
U3VyZmFjZTkgKnN1cmZhY2UgPSBtVGV4U3RvcmFnZS0+Z2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZmFjZSwgbGV2ZWwsIGZhbHNlKTsKLSAgICAgICAg
ICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0uc2V0TWFuYWdlZFN1cmZhY2Uoc3VyZmFj
ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtRGlydHlJbWFnZXMg
PSB0cnVlOwotfQotCi12b2lkIFRleHR1cmVDdWJlTWFwOjp1cGRhdGVUZXh0dXJlKCkKLXsKLSAg
ICBib29sIG1pcG1hcHBpbmcgPSBpc01pcG1hcEZpbHRlcmVkKCkgJiYgaXNNaXBtYXBDdWJlQ29t
cGxldGUoKTsKLQotICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQotICAg
IHsKLSAgICAgICAgaW50IGxldmVscyA9IChtaXBtYXBwaW5nID8gbGV2ZWxDb3VudCgpIDogMSk7
Ci0KLSAgICAgICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwrKykK
LSAgICAgICAgewotICAgICAgICAgICAgSW1hZ2UgKmltYWdlID0gJm1JbWFnZUFycmF5W2ZhY2Vd
W2xldmVsXTsKLQotICAgICAgICAgICAgaWYgKGltYWdlLT5pc0RpcnR5KCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29tbWl0UmVjdChmYWNlLCBsZXZlbCwgMCwgMCwgaW1hZ2Ut
PmdldFdpZHRoKCksIGltYWdlLT5nZXRIZWlnaHQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLXZvaWQgVGV4dHVyZUN1YmVNYXA6OmNvbnZlcnRUb1JlbmRlclRhcmdl
dCgpCi17Ci0gICAgVGV4dHVyZVN0b3JhZ2VDdWJlTWFwICpuZXdUZXhTdG9yYWdlID0gTlVMTDsK
LQotICAgIGlmIChtSW1hZ2VBcnJheVswXVswXS5nZXRXaWR0aCgpICE9IDApCi0gICAgewotICAg
ICAgICBHTHNpemVpIHNpemUgPSBtSW1hZ2VBcnJheVswXVswXS5nZXRXaWR0aCgpOwotICAgICAg
ICBHTGludCBsZXZlbHMgPSBjcmVhdGlvbkxldmVscyhzaXplKTsKLSAgICAgICAgRDNERk9STUFU
IGQzZGZtdCA9IG1JbWFnZUFycmF5WzBdWzBdLmdldEQzREZvcm1hdCgpOwotICAgICAgICBEV09S
RCBkM2R1c2FnZSA9IEdldFRleHR1cmVVc2FnZShkM2RmbXQsIEdMX0ZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfQU5HTEUsIHRydWUpOwotCi0gICAgICAgIG5ld1RleFN0b3JhZ2UgPSBuZXcgVGV4dHVy
ZVN0b3JhZ2VDdWJlTWFwKGxldmVscywgZDNkZm10LCBkM2R1c2FnZSwgc2l6ZSk7Ci0KLSAgICAg
ICAgaWYgKG1UZXhTdG9yYWdlICE9IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBs
ZXZlbHMgPSBsZXZlbENvdW50KCk7Ci0gICAgICAgICAgICBmb3IgKGludCBmID0gMDsgZiA8IDY7
IGYrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxldmVsczsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgSURp
cmVjdDNEU3VyZmFjZTkgKnNvdXJjZSA9IG1UZXhTdG9yYWdlLT5nZXRDdWJlTWFwU3VyZmFjZShH
TF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBpLCBmYWxzZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0ID0gbmV3VGV4U3RvcmFnZS0+Z2V0Q3Vi
ZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZiwgaSwgdHJ1ZSk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3B5VG9SZW5kZXJUYXJnZXQoZGVzdCwgc291
cmNlLCBtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpKQotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdUZXhTdG9yYWdlOwotICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc291cmNlKSBzb3VyY2UtPlJlbGVhc2UoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGRlc3QpIGRlc3QtPlJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSkgc291cmNlLT5SZWxlYXNlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChkZXN0KSBkZXN0LT5SZWxlYXNlKCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZGVsZXRlIG1U
ZXhTdG9yYWdlOwotICAgIG1UZXhTdG9yYWdlID0gbmV3VGV4U3RvcmFnZTsKLQotICAgIG1EaXJ0
eUltYWdlcyA9IHRydWU7Ci19Ci0KLXZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdlKGludCBm
YWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKQotewotICAgIEdMaW50IGludGVybmFsZm9ybWF0ID0gQ29udmVydFNpemVkSW50
ZXJuYWxGb3JtYXQoZm9ybWF0LCB0eXBlKTsKLSAgICByZWRlZmluZUltYWdlKGZhY2VJbmRleCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIFRleHR1cmU6OnNl
dEltYWdlKHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCAmbUltYWdlQXJyYXlbZmFjZUluZGV4XVts
ZXZlbF0pOwotfQotCi11bnNpZ25lZCBpbnQgVGV4dHVyZUN1YmVNYXA6OmZhY2VJbmRleChHTGVu
dW0gZmFjZSkKLXsKLSAgICBNRVRBX0FTU0VSVChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1ggLSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggPT0gMSk7Ci0gICAgTUVUQV9BU1NF
UlQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZIC0gR0xfVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YID09IDIpOwotICAgIE1FVEFfQVNTRVJUKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWSAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9PSAzKTsKLSAgICBNRVRB
X0FTU0VSVChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ogLSBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1ggPT0gNCk7Ci0gICAgTUVUQV9BU1NFUlQoR0xfVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9aIC0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YID09IDUpOwotCi0g
ICAgcmV0dXJuIGZhY2UgLSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g7Ci19Ci0KLXZv
aWQgVGV4dHVyZUN1YmVNYXA6OnJlZGVmaW5lSW1hZ2UoaW50IGZhY2UsIEdMaW50IGxldmVsLCBH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCi17Ci0g
ICAgYm9vbCByZWRlZmluZWQgPSBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0ucmVkZWZpbmUoaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZhbHNlKTsKLQotICAgIGlmIChtVGV4U3RvcmFn
ZSAmJiByZWRlZmluZWQpCi0gICAgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IElNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBmb3IgKGludCBmID0gMDsgZiA8IDY7IGYrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBtSW1hZ2VBcnJheVtmXVtpXS5tYXJrRGlydHkoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKLSAgICAgICAgbVRleFN0b3JhZ2Ug
PSBOVUxMOwotCi0gICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Ci0gICAgfQotfQotCi12b2lk
IFRleHR1cmVDdWJlTWFwOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
ZW51bSBmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQotewotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5k
ZXJUYXJnZXQgPSBzb3VyY2UtPmdldFJlbmRlclRhcmdldCgpOwotCi0gICAgaWYgKCFyZW5kZXJU
YXJnZXQpCi0gICAgewotICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVy
IHRhcmdldC4iKTsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAg
IH0KLQotICAgIHVuc2lnbmVkIGludCBmYWNlaW5kZXggPSBmYWNlSW5kZXgodGFyZ2V0KTsKLSAg
ICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IGdsOjpDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChm
b3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUpOwotICAgIHJlZGVmaW5lSW1hZ2UoZmFjZWluZGV4LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgaWYgKCFtSW1hZ2VB
cnJheVtmYWNlaW5kZXhdW2xldmVsXS5pc1JlbmRlcmFibGVGb3JtYXQoKSkKLSAgICB7Ci0gICAg
ICAgIG1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLmNvcHkoMCwgMCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKLSAg
ICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAhbVRleFN0
b3JhZ2UtPmlzUmVuZGVyVGFyZ2V0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnZlcnRU
b1JlbmRlclRhcmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtSW1hZ2VBcnJh
eVtmYWNlaW5kZXhdW2xldmVsXS5tYXJrQ2xlYW4oKTsKLQotICAgICAgICBBU1NFUlQod2lkdGgg
PT0gaGVpZ2h0KTsKLQotICAgICAgICBpZiAod2lkdGggPiAwICYmIGxldmVsIDwgbGV2ZWxDb3Vu
dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBSRUNUIHNvdXJjZVJlY3Q7Ci0gICAgICAgICAg
ICBzb3VyY2VSZWN0LmxlZnQgPSB4OwotICAgICAgICAgICAgc291cmNlUmVjdC5yaWdodCA9IHgg
KyB3aWR0aDsKLSAgICAgICAgICAgIHNvdXJjZVJlY3QudG9wID0geTsKLSAgICAgICAgICAgIHNv
dXJjZVJlY3QuYm90dG9tID0geSArIGhlaWdodDsKLQotICAgICAgICAgICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKmRlc3QgPSBtVGV4U3RvcmFnZS0+Z2V0Q3ViZU1hcFN1cmZhY2UodGFyZ2V0LCBsZXZl
bCwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGlmIChkZXN0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGdldEJsaXR0ZXIoKS0+Y29weShyZW5kZXJUYXJnZXQsIHNvdXJjZVJlY3QsIGZv
cm1hdCwgMCwgMCwgZGVzdCk7Ci0gICAgICAgICAgICAgICAgZGVzdC0+UmVsZWFzZSgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVuZGVyVGFyZ2V0LT5SZWxlYXNl
KCk7Ci19Ci0KLXZvaWQgVGV4dHVyZUN1YmVNYXA6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2Up
Ci17Ci0gICAgR0xzaXplaSBzaXplID0gbUltYWdlQXJyYXlbZmFjZUluZGV4KHRhcmdldCldW2xl
dmVsXS5nZXRXaWR0aCgpOwotCi0gICAgaWYgKHhvZmZzZXQgKyB3aWR0aCA+IHNpemUgfHwgeW9m
ZnNldCArIGhlaWdodCA+IHNpemUpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0gICAgfQotCi0gICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdl
dCA9IHNvdXJjZS0+Z2V0UmVuZGVyVGFyZ2V0KCk7Ci0KLSAgICBpZiAoIXJlbmRlclRhcmdldCkK
LSAgICB7Ci0gICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0
LiIpOwotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotCi0g
ICAgdW5zaWduZWQgaW50IGZhY2VpbmRleCA9IGZhY2VJbmRleCh0YXJnZXQpOwotCi0gICAgaWYg
KCFtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS5pc1JlbmRlcmFibGVGb3JtYXQoKSB8fCAo
IW1UZXhTdG9yYWdlICYmICFpc1NhbXBsZXJDb21wbGV0ZSgpKSkKLSAgICB7Ci0gICAgICAgIG1J
bWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLmNvcHkoMCwgMCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKLSAgICB9Ci0g
ICAgZWxzZQotICAgIHsKLSAgICAgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAhbVRleFN0b3JhZ2Ut
PmlzUmVuZGVyVGFyZ2V0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnZlcnRUb1JlbmRl
clRhcmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB1cGRhdGVUZXh0dXJlKCk7
Ci0KLSAgICAgICAgaWYgKGxldmVsIDwgbGV2ZWxDb3VudCgpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBSRUNUIHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBzb3VyY2VSZWN0LmxlZnQgPSB4Owot
ICAgICAgICAgICAgc291cmNlUmVjdC5yaWdodCA9IHggKyB3aWR0aDsKLSAgICAgICAgICAgIHNv
dXJjZVJlY3QudG9wID0geTsKLSAgICAgICAgICAgIHNvdXJjZVJlY3QuYm90dG9tID0geSArIGhl
aWdodDsKLQotICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QgPSBtVGV4U3RvcmFn
ZS0+Z2V0Q3ViZU1hcFN1cmZhY2UodGFyZ2V0LCBsZXZlbCwgdHJ1ZSk7Ci0KLSAgICAgICAgICAg
IGlmIChkZXN0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdldEJsaXR0ZXIoKS0+
Y29weShyZW5kZXJUYXJnZXQsIHNvdXJjZVJlY3QsIGdsOjpFeHRyYWN0Rm9ybWF0KG1JbWFnZUFy
cmF5WzBdWzBdLmdldEludGVybmFsRm9ybWF0KCkpLCB4b2Zmc2V0LCB5b2Zmc2V0LCBkZXN0KTsK
LSAgICAgICAgICAgICAgICBkZXN0LT5SZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKLX0KLQotdm9pZCBUZXh0
dXJlQ3ViZU1hcDo6c3RvcmFnZShHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHNpemUpCi17Ci0gICAgRDNERk9STUFUIGQzZGZtdCA9IENvbnZlcnRUZXh0dXJl
SW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOwotICAgIERXT1JEIGQzZHVzYWdlID0gR2V0
VGV4dHVyZVVzYWdlKGQzZGZtdCwgbVVzYWdlLCBmYWxzZSk7Ci0KLSAgICBkZWxldGUgbVRleFN0
b3JhZ2U7Ci0gICAgbVRleFN0b3JhZ2UgPSBuZXcgVGV4dHVyZVN0b3JhZ2VDdWJlTWFwKGxldmVs
cywgZDNkZm10LCBkM2R1c2FnZSwgc2l6ZSk7Ci0gICAgbUltbXV0YWJsZSA9IHRydWU7Ci0KLSAg
ICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQotICAgIHsKLSAg
ICAgICAgZm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS5yZWRlZmluZShpbnRlcm5hbGZvcm1h
dCwgc2l6ZSwgc2l6ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBzaXplID0gc3RkOjptYXgoMSwgc2l6
ZSA+PiAxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoaW50IGxldmVsID0gbGV2ZWxz
OyBsZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgbGV2ZWwrKykKLSAg
ICB7Ci0gICAgICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0ucmVkZWZpbmUoR0xfTk9O
RSwgMCwgMCwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobVRleFN0b3JhZ2Ut
PmlzTWFuYWdlZCgpKQotICAgIHsKLSAgICAgICAgaW50IGxldmVscyA9IGxldmVsQ291bnQoKTsK
LQotICAgICAgICBmb3IgKGludCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKLSAgICAgICAg
ewotICAgICAgICAgICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwr
KykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3Vy
ZmFjZSA9IG1UZXhTdG9yYWdlLT5nZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ggKyBmYWNlLCBsZXZlbCwgZmFsc2UpOwotICAgICAgICAgICAgICAgIG1JbWFn
ZUFycmF5W2ZhY2VdW2xldmVsXS5zZXRNYW5hZ2VkU3VyZmFjZShzdXJmYWNlKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBUZXh0dXJlQ3ViZU1hcDo6Z2VuZXJh
dGVNaXBtYXBzKCkKLXsKLSAgICBpZiAoIWlzQ3ViZUNvbXBsZXRlKCkpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIH0KLQotICAgIGlmICgh
Z2V0Q29udGV4dCgpLT5zdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSkKLSAgICB7Ci0gICAgICAg
IGlmICghaXNQb3cyKG1JbWFnZUFycmF5WzBdWzBdLmdldFdpZHRoKCkpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxzIDEgdGhyb3VnaCBxIGFuZCByZXNl
dCB0aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1pcG1hcCBsZXZlbHMuCi0gICAgdW5z
aWduZWQgaW50IHEgPSBsb2cyKG1JbWFnZUFycmF5WzBdWzBdLmdldFdpZHRoKCkpOwotICAgIGZv
ciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisrKQotICAgIHsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZWRlZmluZUltYWdlKGYsIGksIG1JbWFnZUFycmF5W2ZdWzBdLmdldEludGVybmFsRm9ybWF0KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1JbWFnZUFycmF5W2Zd
WzBdLmdldFdpZHRoKCkgPj4gaSwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWF4KG1JbWFnZUFycmF5W2ZdWzBdLmdldFdpZHRoKCkgPj4gaSwgMSkpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKG1UZXhTdG9yYWdlICYmIG1UZXhTdG9yYWdlLT5pc1JlbmRl
clRhcmdldCgpKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZiA9IDA7IGYgPCA2
OyBmKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBp
IDw9IHE7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJm
YWNlOSAqdXBwZXIgPSBtVGV4U3RvcmFnZS0+Z2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YICsgZiwgaSAtIDEsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBJ
RGlyZWN0M0RTdXJmYWNlOSAqbG93ZXIgPSBtVGV4U3RvcmFnZS0+Z2V0Q3ViZU1hcFN1cmZhY2Uo
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZiwgaSwgdHJ1ZSk7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAodXBwZXIgIT0gTlVMTCAmJiBsb3dlciAhPSBOVUxMKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZ2V0QmxpdHRlcigpLT5ib3hGaWx0ZXIodXBwZXIs
IGxvd2VyKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAodXBwZXIg
IT0gTlVMTCkgdXBwZXItPlJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBpZiAobG93ZXIgIT0g
TlVMTCkgbG93ZXItPlJlbGVhc2UoKTsKLQotICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2Zd
W2ldLm1hcmtDbGVhbigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGVs
c2UKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBp
KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1JbWFnZUFycmF5W2ZdW2ld
LmdldFN1cmZhY2UoKSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwKG1JbWFnZUFycmF5W2ZdW2ldLmdldFN1cmZh
Y2UoKSwgbUltYWdlQXJyYXlbZl1baSAtIDFdLmdldFN1cmZhY2UoKSk7Ci0KLSAgICAgICAgICAg
ICAgICBtSW1hZ2VBcnJheVtmXVtpXS5tYXJrRGlydHkoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLX0KLQotUmVuZGVyYnVmZmVyICpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVy
YnVmZmVyKEdMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0
KHRhcmdldCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sIChSZW5kZXJidWZmZXIgKilOVUxMKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBpbnQgZmFj
ZSA9IGZhY2VJbmRleCh0YXJnZXQpOwotCi0gICAgaWYgKG1GYWNlUHJveGllc1tmYWNlXSA9PSBO
VUxMKQotICAgIHsKLSAgICAgICAgbUZhY2VQcm94aWVzW2ZhY2VdID0gbmV3IFJlbmRlcmJ1ZmZl
cihpZCgpLCBuZXcgUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAodGhpcywgdGFyZ2V0KSk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIG1GYWNlUHJveGllc1tmYWNlXTsKLX0KLQotLy8gSW5jcmVtZW50
cyByZWZjb3VudCBvbiBzdXJmYWNlLgotLy8gY2FsbGVyIG11c3QgUmVsZWFzZSgpIHRoZSByZXR1
cm5lZCBzdXJmYWNlCi1JRGlyZWN0M0RTdXJmYWNlOSAqVGV4dHVyZUN1YmVNYXA6OmdldFJlbmRl
clRhcmdldChHTGVudW0gdGFyZ2V0KQotewotICAgIEFTU0VSVChJc0N1YmVtYXBUZXh0dXJlVGFy
Z2V0KHRhcmdldCkpOwotCi0gICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMg
Y3JlYXRlZAotICAgIGlmIChnZXRTdG9yYWdlKHRydWUpID09IE5VTEwpCi0gICAgewotICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICB1cGRhdGVUZXh0dXJlKCk7Ci0gICAgCi0gICAg
cmV0dXJuIG1UZXhTdG9yYWdlLT5nZXRDdWJlTWFwU3VyZmFjZSh0YXJnZXQsIDAsIGZhbHNlKTsK
LX0KLQotVGV4dHVyZVN0b3JhZ2UgKlRleHR1cmVDdWJlTWFwOjpnZXRTdG9yYWdlKGJvb2wgcmVu
ZGVyVGFyZ2V0KQotewotICAgIGlmICghbVRleFN0b3JhZ2UgfHwgKHJlbmRlclRhcmdldCAmJiAh
bVRleFN0b3JhZ2UtPmlzUmVuZGVyVGFyZ2V0KCkpKQotICAgIHsKLSAgICAgICAgaWYgKHJlbmRl
clRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBjcmVhdGVU
ZXh0dXJlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbVRleFN0b3JhZ2U7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
VGV4dHVyZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGRlYjJkMDUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MzQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gVGV4dHVyZS5o
OiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBnbDo6VGV4dHVyZSBjbGFzcyBhbmQgaXRzIGNvbmNyZXRl
IGRlcml2ZWQKLS8vIGNsYXNzZXMgVGV4dHVyZTJEIGFuZCBUZXh0dXJlQ3ViZU1hcC4gSW1wbGVt
ZW50cyBHTCB0ZXh0dXJlIG9iamVjdHMgYW5kCi0vLyByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtP
cGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuNyBwYWdlIDYzLgotCi0jaWZuZGVmIExJQkdMRVNW
Ml9URVhUVVJFX0hfCi0jZGVmaW5lIExJQkdMRVNWMl9URVhUVVJFX0hfCi0KLSNpbmNsdWRlIDx2
ZWN0b3I+Ci0KLSNkZWZpbmUgR0xfQVBJQ0FMTAotI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2lu
Y2x1ZGUgPGQzZDkuaD4KLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImNv
bW1vbi9SZWZDb3VudE9iamVjdC5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIu
aCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCi0KLW5hbWVzcGFjZSBlZ2wKLXsK
LWNsYXNzIFN1cmZhY2U7Ci19Ci0KLW5hbWVzcGFjZSBnbAotewotY2xhc3MgQmxpdDsKLWNsYXNz
IEZyYW1lYnVmZmVyOwotCi1lbnVtCi17Ci0gICAgLy8gVGhlc2UgYXJlIHRoZSBtYXhpbXVtcyB0
aGUgaW1wbGVtZW50YXRpb24gY2FuIHN1cHBvcnQKLSAgICAvLyBUaGUgYWN0dWFsIEdMIGNhcHMg
YXJlIGxpbWl0ZWQgYnkgdGhlIGRldmljZSBjYXBzCi0gICAgLy8gYW5kIHNob3VsZCBiZSBxdWVy
aWVkIGZyb20gdGhlIENvbnRleHQKLSAgICBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9TSVpF
ID0gMTYzODQsCi0gICAgSU1QTEVNRU5UQVRJT05fTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSA9
IDE2Mzg0LAotCi0gICAgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTID0gMTUgICAv
LyAxK2xvZzIgb2YgTUFYX1RFWFRVUkVfU0laRQotfTsKLQotY2xhc3MgSW1hZ2UKLXsKLSAgcHVi
bGljOgotICAgIEltYWdlKCk7Ci0gICAgfkltYWdlKCk7Ci0KLSAgICBib29sIHJlZGVmaW5lKEdM
aW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgYm9vbCBm
b3JjZVJlbGVhc2UpOwotICAgIHZvaWQgbWFya0RpcnR5KCkge21EaXJ0eSA9IHRydWU7fQotICAg
IHZvaWQgbWFya0NsZWFuKCkge21EaXJ0eSA9IGZhbHNlO30KLQotICAgIGJvb2wgaXNSZW5kZXJh
YmxlRm9ybWF0KCkgY29uc3Q7Ci0gICAgRDNERk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0Owot
Ci0gICAgR0xzaXplaSBnZXRXaWR0aCgpIGNvbnN0IHtyZXR1cm4gbVdpZHRoO30KLSAgICBHTHNp
emVpIGdldEhlaWdodCgpIGNvbnN0IHtyZXR1cm4gbUhlaWdodDt9Ci0gICAgR0xlbnVtIGdldElu
dGVybmFsRm9ybWF0KCkgY29uc3Qge3JldHVybiBtSW50ZXJuYWxGb3JtYXQ7fQotICAgIGJvb2wg
aXNEaXJ0eSgpIGNvbnN0IHtyZXR1cm4gbVN1cmZhY2UgJiYgbURpcnR5O30KLSAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZSgpOwotCi0gICAgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShJ
RGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSk7Ci0gICAgdm9pZCB1cGRhdGVTdXJmYWNlKElEaXJl
Y3QzRFN1cmZhY2U5ICpkZXN0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci0KLSAgICB2b2lkIGxvYWREYXRhKEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICppbnB1dCk7Ci0K
LSAgICB2b2lkIGxvYWRBbHBoYURhdGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwg
c2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwotICAgIHZvaWQgbG9hZEFs
cGhhRGF0YVNTRTIoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBv
dXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRBbHBoYUZsb2F0
RGF0YShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQ
aXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRBbHBoYUhhbGZGbG9hdERh
dGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwotICAgIHZvaWQgbG9hZEx1bWluYW5jZURhdGEo
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0LCBib29sIG5hdGl2ZSkgY29uc3Q7Ci0gICAgdm9pZCBsb2FkTHVtaW5hbmNl
RmxvYXREYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRMdW1pbmFu
Y2VIYWxmRmxvYXREYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlu
cHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7Ci0gICAgdm9pZCBs
b2FkTHVtaW5hbmNlQWxwaGFEYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0LCBib29sIG5hdGl2ZSkgY29u
c3Q7Ci0gICAgdm9pZCBsb2FkTHVtaW5hbmNlQWxwaGFGbG9hdERhdGEoR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCkgY29uc3Q7Ci0gICAgdm9pZCBsb2FkTHVtaW5hbmNlQWxwaGFIYWxmRmxvYXREYXRh
KEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRSR0JVQnl0
ZURhdGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBp
dGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwotICAgIHZvaWQgbG9hZFJHQjU2NURhdGEoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRSR0JGbG9hdERhdGEoR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0
OwotICAgIHZvaWQgbG9hZFJHQkhhbGZGbG9hdERhdGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29u
c3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsK
LSAgICB2b2lkIGxvYWRSR0JBVUJ5dGVEYXRhU1NFMihHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29u
c3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsK
LSAgICB2b2lkIGxvYWRSR0JBVUJ5dGVEYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7Ci0gICAgdm9p
ZCBsb2FkUkdCQTQ0NDREYXRhKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNp
emVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRSR0JB
NTU1MURhdGEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwotICAgIHZvaWQgbG9hZFJHQkFGbG9hdERhdGEo
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRSR0JBSGFsZkZsb2F0RGF0YShHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRCR1JBRGF0YShHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwg
Y29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25z
dDsKLSAgICB2b2lkIGxvYWRDb21wcmVzc2VkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICppbnB1dCk7Ci0KLSAgICB2b2lkIGNvcHkoR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5kZXJUYXJnZXQpOwotCi0gIHByaXZhdGU6
Ci0gICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEltYWdlKTsKLQotICAgIHZvaWQgY3JlYXRl
U3VyZmFjZSgpOwotCi0gICAgSFJFU1VMVCBsb2NrKEQzRExPQ0tFRF9SRUNUICpsb2NrZWRSZWN0
LCBjb25zdCBSRUNUICpyZWN0KTsKLSAgICB2b2lkIHVubG9jaygpOwotCi0gICAgR0xzaXplaSBt
V2lkdGg7Ci0gICAgR0xzaXplaSBtSGVpZ2h0OwotICAgIEdMaW50IG1JbnRlcm5hbEZvcm1hdDsK
LQotICAgIGJvb2wgbURpcnR5OwotCi0gICAgRDNEUE9PTCBtRDNEUG9vbDsgICAvLyBjYW4gb25s
eSBiZSBEM0RQT09MX1NZU1RFTU1FTSBvciBEM0RQT09MX01BTkFHRUQgc2luY2UgaXQgbmVlZHMg
dG8gYmUgbG9ja2FibGUuCi0gICAgRDNERk9STUFUIG1EM0RGb3JtYXQ7Ci0KLSAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqbVN1cmZhY2U7Ci19OwotCi1jbGFzcyBUZXh0dXJlU3RvcmFnZQotewotICBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgVGV4dHVyZVN0b3JhZ2UoRFdPUkQgdXNhZ2UpOwotCi0gICAg
dmlydHVhbCB+VGV4dHVyZVN0b3JhZ2UoKTsKLQotICAgIGJvb2wgaXNSZW5kZXJUYXJnZXQoKSBj
b25zdDsKLSAgICBib29sIGlzTWFuYWdlZCgpIGNvbnN0OwotICAgIEQzRFBPT0wgZ2V0UG9vbCgp
IGNvbnN0OwotICAgIERXT1JEIGdldFVzYWdlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgaW50IGdl
dFRleHR1cmVTZXJpYWwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZW5k
ZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdldCkgY29uc3QgPSAwOwotICAgIGludCBnZXRMb2RP
ZmZzZXQoKSBjb25zdDsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgaW50IG1Mb2RPZmZzZXQ7Ci0KLSAg
cHJpdmF0ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2UpOwot
Ci0gICAgY29uc3QgRFdPUkQgbUQzRFVzYWdlOwotICAgIGNvbnN0IEQzRFBPT0wgbUQzRFBvb2w7
Ci0KLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgbVRleHR1cmVTZXJpYWw7Ci0gICAgc3RhdGljIHVu
c2lnbmVkIGludCBpc3N1ZVRleHR1cmVTZXJpYWwoKTsKLQotICAgIHN0YXRpYyB1bnNpZ25lZCBp
bnQgbUN1cnJlbnRUZXh0dXJlU2VyaWFsOwotfTsKLQotY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBS
ZWZDb3VudE9iamVjdAotewotICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGV4dHVyZShHTHVpbnQg
aWQpOwotCi0gICAgdmlydHVhbCB+VGV4dHVyZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZFBy
b3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpID0gMDsKLQotICAgIHZpcnR1
YWwgR0xlbnVtIGdldFRhcmdldCgpIGNvbnN0ID0gMDsKLQotICAgIGJvb2wgc2V0TWluRmlsdGVy
KEdMZW51bSBmaWx0ZXIpOwotICAgIGJvb2wgc2V0TWFnRmlsdGVyKEdMZW51bSBmaWx0ZXIpOwot
ICAgIGJvb2wgc2V0V3JhcFMoR0xlbnVtIHdyYXApOwotICAgIGJvb2wgc2V0V3JhcFQoR0xlbnVt
IHdyYXApOwotICAgIGJvb2wgc2V0TWF4QW5pc290cm9weShmbG9hdCB0ZXh0dXJlTWF4QW5pc290
cm9weSwgZmxvYXQgY29udGV4dE1heEFuaXNvdHJvcHkpOwotICAgIGJvb2wgc2V0VXNhZ2UoR0xl
bnVtIHVzYWdlKTsKLQotICAgIEdMZW51bSBnZXRNaW5GaWx0ZXIoKSBjb25zdDsKLSAgICBHTGVu
dW0gZ2V0TWFnRmlsdGVyKCkgY29uc3Q7Ci0gICAgR0xlbnVtIGdldFdyYXBTKCkgY29uc3Q7Ci0g
ICAgR0xlbnVtIGdldFdyYXBUKCkgY29uc3Q7Ci0gICAgZmxvYXQgZ2V0TWF4QW5pc290cm9weSgp
IGNvbnN0OwotICAgIEdMZW51bSBnZXRVc2FnZSgpIGNvbnN0OwotICAgIGJvb2wgaXNNaXBtYXBG
aWx0ZXJlZCgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIGlzU2FtcGxlckNvbXBsZXRlKCkg
Y29uc3QgPSAwOwotCi0gICAgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpnZXRUZXh0dXJlKCk7Ci0g
ICAgdmlydHVhbCBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0KSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXBzKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKSA9IDA7Ci0KLSAgICBib29sIGhhc0Rp
cnR5UGFyYW1ldGVycygpIGNvbnN0OwotICAgIGJvb2wgaGFzRGlydHlJbWFnZXMoKSBjb25zdDsK
LSAgICB2b2lkIHJlc2V0RGlydHkoKTsKLSAgICB1bnNpZ25lZCBpbnQgZ2V0VGV4dHVyZVNlcmlh
bCgpOwotICAgIHVuc2lnbmVkIGludCBnZXRSZW5kZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdl
dCk7Ci0KLSAgICBib29sIGlzSW1tdXRhYmxlKCkgY29uc3Q7Ci0gICAgaW50IGdldExvZE9mZnNl
dCgpOwotCi0gICAgc3RhdGljIGNvbnN0IEdMdWludCBJTkNPTVBMRVRFX1RFWFRVUkVfSUQgPSBz
dGF0aWNfY2FzdDxHTHVpbnQ+KC0xKTsgICAvLyBFdmVyeSB0ZXh0dXJlIHRha2VzIGFuIGlkIGF0
IGNyZWF0aW9uIHRpbWUuIFRoZSB2YWx1ZSBpcyBhcmJpdHJhcnkgYmVjYXVzZSBpdCBpcyBuZXZl
ciByZWdpc3RlcmVkIHdpdGggdGhlIHJlc291cmNlIG1hbmFnZXIuCi0KLSAgcHJvdGVjdGVkOgot
ICAgIHZvaWQgc2V0SW1hZ2UoR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhl
bHMsIEltYWdlICppbWFnZSk7Ci0gICAgYm9vbCBzdWJJbWFnZShHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJ
bWFnZSAqaW1hZ2UpOwotICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdlKEdMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkICpwaXhlbHMsIEltYWdlICppbWFnZSk7Ci0gICAgYm9vbCBzdWJJbWFn
ZUNvbXByZXNzZWQoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2
b2lkICpwaXhlbHMsIEltYWdlICppbWFnZSk7Ci0KLSAgICBHTGludCBjcmVhdGlvbkxldmVscyhH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkgY29uc3Q7Ci0gICAgR0xpbnQgY3JlYXRpb25M
ZXZlbHMoR0xzaXplaSBzaXplKSBjb25zdDsKLQotICAgIHZpcnR1YWwgSURpcmVjdDNEQmFzZVRl
eHR1cmU5ICpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlVGV4dHVyZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZSgpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvUmVuZGVyVGFyZ2V0KCkgPSAwOwotICAgIHZpcnR1
YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldFJlbmRlclRhcmdldChHTGVudW0gdGFyZ2V0KSA9IDA7
Ci0KLSAgICBpbnQgbGV2ZWxDb3VudCgpOwotCi0gICAgc3RhdGljIEJsaXQgKmdldEJsaXR0ZXIo
KTsKLSAgICBzdGF0aWMgYm9vbCBjb3B5VG9SZW5kZXJUYXJnZXQoSURpcmVjdDNEU3VyZmFjZTkg
KmRlc3QsIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGJvb2wgZnJvbU1hbmFnZWQpOwotCi0g
ICAgR0xlbnVtIG1NaW5GaWx0ZXI7Ci0gICAgR0xlbnVtIG1NYWdGaWx0ZXI7Ci0gICAgR0xlbnVt
IG1XcmFwUzsKLSAgICBHTGVudW0gbVdyYXBUOwotICAgIGZsb2F0IG1NYXhBbmlzb3Ryb3B5Owot
ICAgIGJvb2wgbURpcnR5UGFyYW1ldGVyczsKLSAgICBHTGVudW0gbVVzYWdlOwotCi0gICAgYm9v
bCBtRGlydHlJbWFnZXM7Ci0KLSAgICBib29sIG1JbW11dGFibGU7Ci0KLSAgcHJpdmF0ZToKLSAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZSk7Ci0KLSAgICB2aXJ0dWFsIFRleHR1
cmVTdG9yYWdlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KSA9IDA7Ci19OwotCi1jbGFz
cyBUZXh0dXJlU3RvcmFnZTJEIDogcHVibGljIFRleHR1cmVTdG9yYWdlCi17Ci0gIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBUZXh0dXJlU3RvcmFnZTJEKElEaXJlY3QzRFRleHR1cmU5ICpzdXJmYWNl
VGV4dHVyZSk7Ci0gICAgVGV4dHVyZVN0b3JhZ2UyRChpbnQgbGV2ZWxzLCBEM0RGT1JNQVQgZm9y
bWF0LCBEV09SRCB1c2FnZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLQotICAgIHZpcnR1YWwg
flRleHR1cmVTdG9yYWdlMkQoKTsKLQotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRTdXJmYWNl
TGV2ZWwoaW50IGxldmVsLCBib29sIGRpcnR5KTsKLSAgICBJRGlyZWN0M0RCYXNlVGV4dHVyZTkg
KmdldEJhc2VUZXh0dXJlKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRS
ZW5kZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdldCkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToKLSAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2UyRCk7Ci0KLSAgICBJRGly
ZWN0M0RUZXh0dXJlOSAqbVRleHR1cmU7Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IG1SZW5kZXJU
YXJnZXRTZXJpYWw7Ci19OwotCi1jbGFzcyBUZXh0dXJlMkQgOiBwdWJsaWMgVGV4dHVyZQotewot
ICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGV4dHVyZTJEKEdMdWludCBpZCk7Ci0KLSAgICB+VGV4
dHVyZTJEKCk7Ci0KLSAgICB2b2lkIGFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJv
eHkpOwotICAgIHZvaWQgcmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOwot
Ci0gICAgdmlydHVhbCBHTGVudW0gZ2V0VGFyZ2V0KCkgY29uc3Q7Ci0KLSAgICBHTHNpemVpIGdl
dFdpZHRoKEdMaW50IGxldmVsKSBjb25zdDsKLSAgICBHTHNpemVpIGdldEhlaWdodChHTGludCBs
ZXZlbCkgY29uc3Q7Ci0gICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KEdMaW50IGxldmVsKSBj
b25zdDsKLSAgICBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KEdMaW50IGxldmVsKSBjb25zdDsKLSAg
ICBib29sIGlzQ29tcHJlc3NlZChHTGludCBsZXZlbCkgY29uc3Q7Ci0gICAgYm9vbCBpc0RlcHRo
KEdMaW50IGxldmVsKSBjb25zdDsKLQotICAgIHZvaWQgc2V0SW1hZ2UoR0xpbnQgbGV2ZWwsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
R0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOwotICAgIHZvaWQgc2V0
Q29tcHJlc3NlZEltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscyk7
Ci0gICAgdm9pZCBzdWJJbWFnZShHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7Ci0gICAg
dm9pZCBzdWJJbWFnZUNvbXByZXNzZWQoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
THNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLSAgICB2b2lkIGNvcHlJbWFn
ZShHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2UpOwotICAgIHZpcnR1YWwg
dm9pZCBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKTsKLSAgICB2b2lkIHN0b3JhZ2UoR0xzaXpl
aSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQpOwotCi0gICAgdmlydHVhbCBib29sIGlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwotICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlVGV4SW1hZ2UoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBnZW5l
cmF0ZU1pcG1hcHMoKTsKLQotICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZm
ZXIoR0xlbnVtIHRhcmdldCk7Ci0KLSAgcHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBSZW5k
ZXJidWZmZXJUZXh0dXJlMkQ7Ci0gICAgdmlydHVhbCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0UmVu
ZGVyVGFyZ2V0KEdMZW51bSB0YXJnZXQpOwotICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkg
KmdldERlcHRoU3RlbmNpbChHTGVudW0gdGFyZ2V0KTsKLQotICBwcml2YXRlOgotICAgIERJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlMkQpOwotCi0gICAgdmlydHVhbCBJRGlyZWN0M0RC
YXNlVGV4dHVyZTkgKmdldEJhc2VUZXh0dXJlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVRleHR1cmUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZSgpOwotICAgIHZp
cnR1YWwgdm9pZCBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKLSAgICB2aXJ0dWFsIFRleHR1cmVT
dG9yYWdlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KTsKLQotICAgIGJvb2wgaXNNaXBt
YXBDb21wbGV0ZSgpIGNvbnN0OwotCi0gICAgdm9pZCByZWRlZmluZUltYWdlKEdMaW50IGxldmVs
LCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwot
ICAgIHZvaWQgY29tbWl0UmVjdChHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotCi0gICAgSW1hZ2UgbUltYWdl
QXJyYXlbSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTXTsKLQotICAgIFRleHR1cmVT
dG9yYWdlMkQgKm1UZXhTdG9yYWdlOwotICAgIGVnbDo6U3VyZmFjZSAqbVN1cmZhY2U7Ci0KLSAg
ICAvLyBBIHNwZWNpZmljIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBpcyBrZXB0IGZvciBjb2xv
cmJ1ZmZlciBwcm94eSByZWZlcmVuY2VzLAotICAgIC8vIGJlY2F1c2UsIGFzIHRoZSByZW5kZXJi
dWZmZXIgYWN0aW5nIGFzIHByb3h5IHdpbGwgbWFpbnRhaW4gYSBiaW5kaW5nIHBvaW50ZXIKLSAg
ICAvLyBiYWNrIHRvIHRoaXMgdGV4dHVyZSwgdGhlcmUgd291bGQgYmUgYSBjaXJjdWxhciByZWZl
cmVuY2UgaWYgd2UgdXNlZCBhIGJpbmRpbmcKLSAgICAvLyBwb2ludGVyIGhlcmUuIFRoaXMgcmVm
ZXJlbmNlIGNvdW50IHdpbGwgY2F1c2UgdGhlIHBvaW50ZXIgdG8gYmUgc2V0IHRvIE5VTEwgaWYK
LSAgICAvLyB0aGUgY291bnQgZHJvcHMgdG8gemVybywgYnV0IHdpbGwgbm90IGNhdXNlIGRlbGV0
aW9uIG9mIHRoZSBSZW5kZXJidWZmZXIuCi0gICAgUmVuZGVyYnVmZmVyICptQ29sb3JidWZmZXJQ
cm94eTsKLSAgICB1bnNpZ25lZCBpbnQgbVByb3h5UmVmczsKLX07Ci0KLWNsYXNzIFRleHR1cmVT
dG9yYWdlQ3ViZU1hcCA6IHB1YmxpYyBUZXh0dXJlU3RvcmFnZQotewotICBwdWJsaWM6Ci0gICAg
VGV4dHVyZVN0b3JhZ2VDdWJlTWFwKGludCBsZXZlbHMsIEQzREZPUk1BVCBmb3JtYXQsIERXT1JE
IHVzYWdlLCBpbnQgc2l6ZSk7Ci0KLSAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZUN1YmVNYXAo
KTsKLQotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRDdWJlTWFwU3VyZmFjZShHTGVudW0gZmFj
ZVRhcmdldCwgaW50IGxldmVsLCBib29sIGRpcnR5KTsKLSAgICBJRGlyZWN0M0RCYXNlVGV4dHVy
ZTkgKmdldEJhc2VUZXh0dXJlKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBn
ZXRSZW5kZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdldCkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToK
LSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2VDdWJlTWFwKTsKLQot
ICAgIElEaXJlY3QzREN1YmVUZXh0dXJlOSAqbVRleHR1cmU7Ci0gICAgY29uc3QgdW5zaWduZWQg
aW50IG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbDsKLX07Ci0KLWNsYXNzIFRleHR1cmVDdWJlTWFw
IDogcHVibGljIFRleHR1cmUKLXsKLSAgcHVibGljOgotICAgIGV4cGxpY2l0IFRleHR1cmVDdWJl
TWFwKEdMdWludCBpZCk7Ci0KLSAgICB+VGV4dHVyZUN1YmVNYXAoKTsKLQotICAgIHZvaWQgYWRk
UHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7Ci0gICAgdm9pZCByZWxlYXNlUHJv
eHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7Ci0KLSAgICB2aXJ0dWFsIEdMZW51bSBnZXRU
YXJnZXQoKSBjb25zdDsKLSAgICAKLSAgICBHTHNpemVpIGdldFdpZHRoKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsKSBjb25zdDsKLSAgICBHTHNpemVpIGdldEhlaWdodChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCkgY29uc3Q7Ci0gICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKLSAgICBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKLSAgICBib29sIGlzQ29tcHJlc3Nl
ZChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldEltYWdl
UG9zWChHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBp
eGVscyk7Ci0gICAgdm9pZCBzZXRJbWFnZU5lZ1goR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNr
QWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOwotICAgIHZvaWQgc2V0SW1hZ2VQb3NZKEdM
aW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsK
LSAgICB2b2lkIHNldEltYWdlTmVnWShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1l
bnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7Ci0gICAgdm9pZCBzZXRJbWFnZVBvc1ooR0xpbnQgbGV2
ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOwotICAgIHZv
aWQgc2V0SW1hZ2VOZWdaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29u
c3Qgdm9pZCAqcGl4ZWxzKTsKLQotICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSBm
YWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOwotCi0gICAgdm9p
ZCBzdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7
Ci0gICAgdm9pZCBzdWJJbWFnZUNvbXByZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KTsKLSAgICB2b2lkIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt
IGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEZyYW1lYnVmZmVyICpzb3VyY2UpOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZl
ciAqc291cmNlKTsKLSAgICB2b2lkIHN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSBzaXplKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc1NhbXBsZXJD
b21wbGV0ZSgpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwcygpOwot
Ci0gICAgdmlydHVhbCBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0
KTsKLQotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZmFjZUluZGV4KEdMZW51bSBmYWNlKTsKLQot
ICBwcm90ZWN0ZWQ6Ci0gICAgZnJpZW5kIGNsYXNzIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFw
OwotICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldFJlbmRlclRhcmdldChHTGVudW0g
dGFyZ2V0KTsKLQotICBwcml2YXRlOgotICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0
dXJlQ3ViZU1hcCk7Ci0KLSAgICB2aXJ0dWFsIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqZ2V0QmFz
ZVRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnZlcnRU
b1JlbmRlclRhcmdldCgpOwotICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmdldFN0b3JhZ2Uo
Ym9vbCByZW5kZXJUYXJnZXQpOwotCi0gICAgYm9vbCBpc0N1YmVDb21wbGV0ZSgpIGNvbnN0Owot
ICAgIGJvb2wgaXNNaXBtYXBDdWJlQ29tcGxldGUoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0SW1h
Z2UoaW50IGZhY2VJbmRleCwgR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBj
b25zdCB2b2lkICpwaXhlbHMpOwotICAgIHZvaWQgY29tbWl0UmVjdChpbnQgZmFjZUluZGV4LCBH
TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpOwotICAgIHZvaWQgcmVkZWZpbmVJbWFnZShpbnQgZmFjZUluZGV4LCBH
TGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KTsKLQotICAgIEltYWdlIG1JbWFnZUFycmF5WzZdW0lNUExFTUVOVEFUSU9OX01BWF9U
RVhUVVJFX0xFVkVMU107Ci0KLSAgICBUZXh0dXJlU3RvcmFnZUN1YmVNYXAgKm1UZXhTdG9yYWdl
OwotCi0gICAgLy8gQSBzcGVjaWZpYyBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgaXMga2VwdCBm
b3IgY29sb3JidWZmZXIgcHJveHkgcmVmZXJlbmNlcywKLSAgICAvLyBiZWNhdXNlLCBhcyB0aGUg
cmVuZGVyYnVmZmVyIGFjdGluZyBhcyBwcm94eSB3aWxsIG1haW50YWluIGEgYmluZGluZyBwb2lu
dGVyCi0gICAgLy8gYmFjayB0byB0aGlzIHRleHR1cmUsIHRoZXJlIHdvdWxkIGJlIGEgY2lyY3Vs
YXIgcmVmZXJlbmNlIGlmIHdlIHVzZWQgYSBiaW5kaW5nCi0gICAgLy8gcG9pbnRlciBoZXJlLiBU
aGlzIHJlZmVyZW5jZSBjb3VudCB3aWxsIGNhdXNlIHRoZSBwb2ludGVyIHRvIGJlIHNldCB0byBO
VUxMIGlmCi0gICAgLy8gdGhlIGNvdW50IGRyb3BzIHRvIHplcm8sIGJ1dCB3aWxsIG5vdCBjYXVz
ZSBkZWxldGlvbiBvZiB0aGUgUmVuZGVyYnVmZmVyLgotICAgIFJlbmRlcmJ1ZmZlciAqbUZhY2VQ
cm94aWVzWzZdOwotICAgIHVuc2lnbmVkIGludCAqbUZhY2VQcm94eVJlZnNbNl07Ci19OwotfQot
Ci0jZW5kaWYgICAvLyBMSUJHTEVTVjJfVEVYVFVSRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlU1NFMi5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1RleHR1cmVTU0UyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggNDhlYTY2NC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL1RleHR1cmVTU0UyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEwMCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBUZXh0dXJlU1NFMi5jcHA6IElt
cGxlbWVudHMgU1NFMi1iYXNlZCBmdW5jdGlvbnMgb2YgZ2w6OkltYWdlIGNsYXNzLiBJdCdzCi0v
LyBpbiBhIHNlcGFyYXRlZCBmaWxlIGZvciBHQ0MsIHdoaWNoIGNhbiBlbmFibGUgU1NFIHVzYWdl
IG9ubHkgcGVyLWZpbGUsCi0vLyBub3QgZm9yIGNvZGUgYmxvY2tzIHRoYXQgdXNlIFNTRTIgZXhw
bGljaXRseS4KLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCi0KLSNpbmNsdWRlIDxp
bnRyaW4uaD4KLQotbmFtZXNwYWNlIGdsCi17Ci0KLXZvaWQgSW1hZ2U6OmxvYWRSR0JBVUJ5dGVE
YXRhU1NFMihHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAotewotICAgIGNvbnN0IHVuc2lnbmVk
IGludCAqc291cmNlID0gTlVMTDsKLSAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOwotICAg
IF9fbTEyOGkgYnJNYXNrID0gX21tX3NldDFfZXBpMzIoMHgwMGZmMDBmZik7Ci0KLSAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAgc291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOwotICAgICAgICBkZXN0ID0gcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
b3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7Ci0gICAgICAgIGludCB4ID0gMDsKLQotICAgICAg
ICAvLyBNYWtlIG91dHB1dCB3cml0ZXMgYWxpZ25lZAotICAgICAgICBmb3IgKHggPSAwOyAoKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCZkZXN0W3hdKSAmIDE1KSAhPSAwKSAmJiB4IDwgd2lk
dGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgaW50IHJnYmEgPSBzb3Vy
Y2VbeF07Ci0gICAgICAgICAgICBkZXN0W3hdID0gKF9yb3RsKHJnYmEsIDE2KSAmIDB4MDBmZjAw
ZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoOyB4
ICsgMyA8IHdpZHRoOyB4ICs9IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fbTEyOGkgc291
cmNlRGF0YSA9IF9tbV9sb2FkdV9zaTEyOChyZWludGVycHJldF9jYXN0PGNvbnN0IF9fbTEyOGkq
Pigmc291cmNlW3hdKSk7Ci0gICAgICAgICAgICAvLyBNYXNrIG91dCBnIGFuZCBhLCB3aGljaCBk
b24ndCBjaGFuZ2UKLSAgICAgICAgICAgIF9fbTEyOGkgZ2FDb21wb25lbnRzID0gX21tX2FuZG5v
dF9zaTEyOChick1hc2ssIHNvdXJjZURhdGEpOwotICAgICAgICAgICAgLy8gTWFzayBvdXQgYiBh
bmQgcgotICAgICAgICAgICAgX19tMTI4aSBickNvbXBvbmVudHMgPSBfbW1fYW5kX3NpMTI4KHNv
dXJjZURhdGEsIGJyTWFzayk7Ci0gICAgICAgICAgICAvLyBTd2FwIGIgYW5kIHIKLSAgICAgICAg
ICAgIF9fbTEyOGkgYnJTd2FwcGVkID0gX21tX3NodWZmbGVoaV9lcGkxNihfbW1fc2h1ZmZsZWxv
X2VwaTE2KGJyQ29tcG9uZW50cywgX01NX1NIVUZGTEUoMiwgMywgMCwgMSkpLCBfTU1fU0hVRkZM
RSgyLCAzLCAwLCAxKSk7Ci0gICAgICAgICAgICBfX20xMjhpIHJlc3VsdCA9IF9tbV9vcl9zaTEy
OChnYUNvbXBvbmVudHMsIGJyU3dhcHBlZCk7Ci0gICAgICAgICAgICBfbW1fc3RvcmVfc2kxMjgo
cmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4oJmRlc3RbeF0pLCByZXN1bHQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gUGVyZm9ybSBsZWZ0b3ZlciB3cml0ZXMKLSAgICAgICAgZm9yICg7IHgg
PCB3aWR0aDsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmdiYSA9
IHNvdXJjZVt4XTsKLSAgICAgICAgICAgIGRlc3RbeF0gPSAoX3JvdGwocmdiYSwgMTYpICYgMHgw
MGZmMDBmZikgfCAocmdiYSAmIDB4ZmYwMGZmMDApOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIEltYWdlOjpsb2FkQWxwaGFEYXRhU1NFMihHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Ci17Ci0g
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKLSAgICB1bnNpZ25lZCBpbnQg
KmRlc3QgPSBOVUxMOwotICAgIF9fbTEyOGkgemVyb1dpZGUgPSBfbW1fc2V0emVyb19zaTEyOCgp
OwotCi0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICB7Ci0gICAgICAg
IHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICog
aW5wdXRQaXRjaDsKLSAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50
Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gp
OwotCi0gICAgICAgIGludCB4OwotICAgICAgICAvLyBNYWtlIG91dHB1dCB3cml0ZXMgYWxpZ25l
ZAotICAgICAgICBmb3IgKHggPSAwOyAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCZkZXN0
W3hdKSAmIDB4RikgIT0gMCAmJiB4IDwgd2lkdGgpOyB4KyspCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGRlc3RbeF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNvdXJjZVt4XSkgPDwgMjQ7
Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKDsgeCArIDcgPCB3aWR0aDsgeCArPSA4KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBfX20xMjhpIHNvdXJjZURhdGEgPSBfbW1fbG9hZGxfZXBpNjQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBfX20xMjhpKj4oJnNvdXJjZVt4XSkpOwotICAgICAgICAg
ICAgLy8gSW50ZXJsZWF2ZSBlYWNoIGJ5dGUgdG8gMTZiaXQsIG1ha2UgdGhlIGxvd2VyIGJ5dGUg
dG8gemVybwotICAgICAgICAgICAgc291cmNlRGF0YSA9IF9tbV91bnBhY2tsb19lcGk4KHplcm9X
aWRlLCBzb3VyY2VEYXRhKTsKLSAgICAgICAgICAgIC8vIEludGVybGVhdmUgZWFjaCAxNmJpdCB0
byAzMmJpdCwgbWFrZSB0aGUgbG93ZXIgMTZiaXQgdG8gemVybwotICAgICAgICAgICAgX19tMTI4
aSBsbyA9IF9tbV91bnBhY2tsb19lcGkxNih6ZXJvV2lkZSwgc291cmNlRGF0YSk7Ci0gICAgICAg
ICAgICBfX20xMjhpIGhpID0gX21tX3VucGFja2hpX2VwaTE2KHplcm9XaWRlLCBzb3VyY2VEYXRh
KTsKLQotICAgICAgICAgICAgX21tX3N0b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4
aSo+KCZkZXN0W3hdKSwgbG8pOwotICAgICAgICAgICAgX21tX3N0b3JlX3NpMTI4KHJlaW50ZXJw
cmV0X2Nhc3Q8X19tMTI4aSo+KCZkZXN0W3ggKyA0XSksIGhpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIEhhbmRsZSB0aGUgcmVtYWluZGVyCi0gICAgICAgIGZvciAoOyB4IDwgd2lkdGg7IHgr
KykKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdFt4XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oc291cmNlW3hdKSA8PCAyNDsKLSAgICAgICAgfQotICAgIH0KLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFu
YWdlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRleERh
dGFNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzJjNDAxOC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRleERh
dGFNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4MyArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotCi0vLyBWZXJ0ZXhEYXRhTWFuYWdlci5oOiBEZWZpbmVzIHRoZSBWZXJ0ZXhEYXRh
TWFuYWdlciwgYSBjbGFzcyB0aGF0Ci0vLyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJv
Y2Vzcy4KLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCi0j
aW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3Jh
bUJpbmFyeS5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCi0KLSNpbmNsdWRlICJsaWJH
TEVTdjIvdmVydGV4Y29udmVyc2lvbi5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9JbmRleERhdGFN
YW5hZ2VyLmgiCi0KLW5hbWVzcGFjZQotewotICAgIGVudW0geyBJTklUSUFMX1NUUkVBTV9CVUZG
RVJfU0laRSA9IDEwMjQqMTAyNCB9OwotICAgIC8vIFRoaXMgaGFzIHRvIGJlIGF0IGxlYXN0IDRr
IG9yIGVsc2UgaXQgZmFpbHMgb24gQVRJIGNhcmRzLgotICAgIGVudW0geyBDT05TVEFOVF9WRVJU
RVhfQlVGRkVSX1NJWkUgPSA0MDk2IH07Ci19Ci0KLW5hbWVzcGFjZSBnbAotewotdW5zaWduZWQg
aW50IFZlcnRleEJ1ZmZlcjo6bUN1cnJlbnRTZXJpYWwgPSAxOwotCi1pbnQgZWxlbWVudHNJbkJ1
ZmZlcihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgaW50IHNpemUpCi17Ci0gICAg
aW50IHN0cmlkZSA9IGF0dHJpYnV0ZS5zdHJpZGUoKTsKLSAgICByZXR1cm4gKHNpemUgLSBhdHRy
aWJ1dGUubU9mZnNldCAlIHN0cmlkZSArIChzdHJpZGUgLSBhdHRyaWJ1dGUudHlwZVNpemUoKSkp
IC8gc3RyaWRlOwotfQotCi1WZXJ0ZXhEYXRhTWFuYWdlcjo6VmVydGV4RGF0YU1hbmFnZXIoQ29u
dGV4dCAqY29udGV4dCwgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlKSA6IG1Db250ZXh0KGNvbnRl
eHQpLCBtRGV2aWNlKGRldmljZSkKLXsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJU
RVhfQVRUUklCUzsgaSsrKQotICAgIHsKLSAgICAgICAgbURpcnR5Q3VycmVudFZhbHVlW2ldID0g
dHJ1ZTsKLSAgICAgICAgbUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXSA9IE5VTEw7Ci0gICAgICAgIG1D
dXJyZW50VmFsdWVPZmZzZXRzW2ldID0gMDsKLSAgICB9Ci0KLSAgICBjb25zdCBEM0RDQVBTOSAm
Y2FwcyA9IGNvbnRleHQtPmdldERldmljZUNhcHMoKTsKLSAgICBjaGVja1ZlcnRleENhcHMoY2Fw
cy5EZWNsVHlwZXMpOwotCi0gICAgbVN0cmVhbWluZ0J1ZmZlciA9IG5ldyBTdHJlYW1pbmdWZXJ0
ZXhCdWZmZXIobURldmljZSwgSU5JVElBTF9TVFJFQU1fQlVGRkVSX1NJWkUpOwotCi0gICAgaWYg
KCFtU3RyZWFtaW5nQnVmZmVyKQotICAgIHsKLSAgICAgICAgRVJSKCJGYWlsZWQgdG8gYWxsb2Nh
dGUgdGhlIHN0cmVhbWluZyB2ZXJ0ZXggYnVmZmVyLiIpOwotICAgIH0KLX0KLQotVmVydGV4RGF0
YU1hbmFnZXI6On5WZXJ0ZXhEYXRhTWFuYWdlcigpCi17Ci0gICAgZGVsZXRlIG1TdHJlYW1pbmdC
dWZmZXI7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgaSsr
KQotICAgIHsKLSAgICAgICAgZGVsZXRlIG1DdXJyZW50VmFsdWVCdWZmZXJbaV07Ci0gICAgfQot
fQotCi1zdGQ6OnNpemVfdCBWZXJ0ZXhEYXRhTWFuYWdlcjo6d3JpdGVBdHRyaWJ1dGVEYXRhKEFy
cmF5VmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZmZXIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50
LCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgR0xzaXplaSBpbnN0YW5jZXMpCi17
Ci0gICAgQnVmZmVyICpidWZmZXIgPSBhdHRyaWJ1dGUubUJvdW5kQnVmZmVyLmdldCgpOwotCi0g
ICAgaW50IGlucHV0U3RyaWRlID0gYXR0cmlidXRlLnN0cmlkZSgpOwotICAgIGludCBlbGVtZW50
U2l6ZSA9IGF0dHJpYnV0ZS50eXBlU2l6ZSgpOwotICAgIGNvbnN0IEZvcm1hdENvbnZlcnRlciAm
Y29udmVydGVyID0gZm9ybWF0Q29udmVydGVyKGF0dHJpYnV0ZSk7Ci0gICAgc3RkOjpzaXplX3Qg
c3RyZWFtT2Zmc2V0ID0gMDsKLQotICAgIHZvaWQgKm91dHB1dCA9IE5VTEw7Ci0gICAgCi0gICAg
aWYgKHZlcnRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIG91dHB1dCA9IHZlcnRleEJ1ZmZlci0+
bWFwKGF0dHJpYnV0ZSwgc3BhY2VSZXF1aXJlZChhdHRyaWJ1dGUsIGNvdW50LCBpbnN0YW5jZXMp
LCAmc3RyZWFtT2Zmc2V0KTsKLSAgICB9Ci0KLSAgICBpZiAob3V0cHV0ID09IE5VTEwpCi0gICAg
ewotICAgICAgICBFUlIoIkZhaWxlZCB0byBtYXAgdmVydGV4IGJ1ZmZlci4iKTsKLSAgICAgICAg
cmV0dXJuIC0xOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIgKmlucHV0ID0gTlVMTDsKLQotICAg
IGlmIChidWZmZXIpCi0gICAgewotICAgICAgICBpbnQgb2Zmc2V0ID0gYXR0cmlidXRlLm1PZmZz
ZXQ7Ci0KLSAgICAgICAgaW5wdXQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5k
YXRhKCkpICsgb2Zmc2V0OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBpbnB1dCA9
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhdHRyaWJ1dGUubVBvaW50ZXIpOwotICAgIH0KLQot
ICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBhdHRyaWJ1dGUubURpdmlzb3IgPT0gMCkKLSAgICB7
Ci0gICAgICAgIGlucHV0ICs9IGlucHV0U3RyaWRlICogc3RhcnQ7Ci0gICAgfQotCi0gICAgaWYg
KGNvbnZlcnRlci5pZGVudGl0eSAmJiBpbnB1dFN0cmlkZSA9PSBlbGVtZW50U2l6ZSkKLSAgICB7
Ci0gICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3VudCAqIGlucHV0U3RyaWRlKTsKLSAg
ICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgY29udmVydGVyLmNvbnZlcnRBcnJheShpbnB1
dCwgaW5wdXRTdHJpZGUsIGNvdW50LCBvdXRwdXQpOwotICAgIH0KLQotICAgIHZlcnRleEJ1ZmZl
ci0+dW5tYXAoKTsKLQotICAgIHJldHVybiBzdHJlYW1PZmZzZXQ7Ci19Ci0KLUdMZW51bSBWZXJ0
ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleERhdGEoR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291
bnQsIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgKnRyYW5zbGF0ZWQsIEdMc2l6ZWkgaW5zdGFuY2VzKQot
ewotICAgIGlmICghbVN0cmVhbWluZ0J1ZmZlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBHTF9P
VVRfT0ZfTUVNT1JZOwotICAgIH0KLQotICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZUFycmF5ICZh
dHRyaWJzID0gbUNvbnRleHQtPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKLSAgICBQcm9ncmFtQmlu
YXJ5ICpwcm9ncmFtQmluYXJ5ID0gbUNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7
Ci0KLSAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFY
X1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQotICAgIHsKLSAgICAgICAgdHJhbnNs
YXRlZFthdHRyaWJ1dGVJbmRleF0uYWN0aXZlID0gKHByb2dyYW1CaW5hcnktPmdldFNlbWFudGlj
SW5kZXgoYXR0cmlidXRlSW5kZXgpICE9IC0xKTsKLSAgICB9Ci0KLSAgICAvLyBEZXRlcm1pbmUg
dGhlIHJlcXVpcmVkIHN0b3JhZ2Ugc2l6ZSBwZXIgdXNlZCBidWZmZXIsIGFuZCBpbnZhbGlkYXRl
IHN0YXRpYyBidWZmZXJzIHRoYXQgZG9uJ3QgY29udGFpbiBtYXRjaGluZyBhdHRyaWJ1dGVzCi0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICB7Ci0g
ICAgICAgIGlmICh0cmFuc2xhdGVkW2ldLmFjdGl2ZSAmJiBhdHRyaWJzW2ldLm1BcnJheUVuYWJs
ZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJ1ZmZlciAqYnVmZmVyID0gYXR0cmlic1tpXS5t
Qm91bmRCdWZmZXIuZ2V0KCk7Ci0gICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXIgKnN0YXRp
Y0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxM
OwotCi0gICAgICAgICAgICBpZiAoc3RhdGljQnVmZmVyKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGlmIChzdGF0aWNCdWZmZXItPnNpemUoKSA9PSAwKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsQ291bnQgPSBlbGVtZW50c0luQnVmZmVy
KGF0dHJpYnNbaV0sIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
QnVmZmVyLT5hZGRSZXF1aXJlZFNwYWNlKHNwYWNlUmVxdWlyZWQoYXR0cmlic1tpXSwgdG90YWxD
b3VudCwgMCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChz
dGF0aWNCdWZmZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKSA9PSAtMSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3RhdGljIGJ1ZmZlciBkb2Vz
bid0IGhhdmUgbWF0Y2hpbmcgYXR0cmlidXRlcywgc28gZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBz
dHJlYW1pbmcgYnVmZmVyCi0gICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgc3BhY2Ugb2Yg
YWxsIHByZXZpb3VzIGF0dHJpYnV0ZXMgYmVsb25naW5nIHRvIHRoZSBpbnZhbGlkYXRlZCBzdGF0
aWMgYnVmZmVyIHRvIHRoZSBzdHJlYW1pbmcgYnVmZmVyCi0gICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IHByZXZpb3VzID0gMDsgcHJldmlvdXMgPCBpOyBwcmV2aW91cysrKQotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlZFtwcmV2
aW91c10uYWN0aXZlICYmIGF0dHJpYnNbcHJldmlvdXNdLm1BcnJheUVuYWJsZWQpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICpw
cmV2aW91c0J1ZmZlciA9IGF0dHJpYnNbcHJldmlvdXNdLm1Cb3VuZEJ1ZmZlci5nZXQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXIgKnByZXZpb3VzU3Rh
dGljQnVmZmVyID0gcHJldmlvdXNCdWZmZXIgPyBwcmV2aW91c0J1ZmZlci0+Z2V0U3RhdGljVmVy
dGV4QnVmZmVyKCkgOiBOVUxMOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0
YXRpY0J1ZmZlciA9PSBwcmV2aW91c1N0YXRpY0J1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdHJlYW1pbmdCdWZm
ZXItPmFkZFJlcXVpcmVkU3BhY2Uoc3BhY2VSZXF1aXJlZChhdHRyaWJzW3ByZXZpb3VzXSwgY291
bnQsIGluc3RhbmNlcykpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgICAgIG1TdHJlYW1pbmdCdWZmZXItPmFkZFJlcXVpcmVkU3BhY2Uoc3BhY2VSZXF1aXJlZChh
dHRyaWJzW2ldLCBjb3VudCwgaW5zdGFuY2VzKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyLT5pbnZhbGlkYXRlU3RhdGljRGF0YSgpOwotICAgICAgICAgICAgICAgIH0gICAgCi0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgbVN0cmVhbWluZ0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFjZShzcGFjZVJlcXVpcmVkKGF0dHJp
YnNbaV0sIGNvdW50LCBpbnN0YW5jZXMpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIFJlc2VydmUgdGhlIHJlcXVpcmVkIHNwYWNlIHBlciB1c2VkIGJ1ZmZlcgot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCi0gICAgewot
ICAgICAgICBpZiAodHJhbnNsYXRlZFtpXS5hY3RpdmUgJiYgYXR0cmlic1tpXS5tQXJyYXlFbmFi
bGVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0u
bUJvdW5kQnVmZmVyLmdldCgpOwotICAgICAgICAgICAgQXJyYXlWZXJ0ZXhCdWZmZXIgKnN0YXRp
Y0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxM
OwotICAgICAgICAgICAgQXJyYXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlciA9IHN0YXRpY0J1
ZmZlciA/IHN0YXRpY0J1ZmZlciA6IG1TdHJlYW1pbmdCdWZmZXI7Ci0KLSAgICAgICAgICAgIGlm
ICh2ZXJ0ZXhCdWZmZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmVydGV4QnVm
ZmVyLT5yZXNlcnZlUmVxdWlyZWRTcGFjZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgLy8gUGVyZm9ybSB0aGUgdmVydGV4IGRhdGEgdHJhbnNsYXRpb25zCi0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICB7Ci0gICAg
ICAgIGlmICh0cmFuc2xhdGVkW2ldLmFjdGl2ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOwotCi0gICAg
ICAgICAgICAgICAgaWYgKCFidWZmZXIgJiYgYXR0cmlic1tpXS5tUG9pbnRlciA9PSBOVUxMKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhcHBs
aWNhdGlvbiBlcnJvciB0aGF0IHdvdWxkIG5vcm1hbGx5IHJlc3VsdCBpbiBhIGNyYXNoLCBidXQg
d2UgY2F0Y2ggaXQgYW5kIHJldHVybiBhbiBlcnJvcgotICAgICAgICAgICAgICAgICAgICBFUlIo
IkFuIGVuYWJsZWQgdmVydGV4IGFycmF5IGhhcyBubyBidWZmZXIgYW5kIG5vIHBvaW50ZXIuIik7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElEX09QRVJBVElPTjsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXRDb252ZXJ0ZXIgJmNv
bnZlcnRlciA9IGZvcm1hdENvbnZlcnRlcihhdHRyaWJzW2ldKTsKLQotICAgICAgICAgICAgICAg
IFN0YXRpY1ZlcnRleEJ1ZmZlciAqc3RhdGljQnVmZmVyID0gYnVmZmVyID8gYnVmZmVyLT5nZXRT
dGF0aWNWZXJ0ZXhCdWZmZXIoKSA6IE5VTEw7Ci0gICAgICAgICAgICAgICAgQXJyYXlWZXJ0ZXhC
dWZmZXIgKnZlcnRleEJ1ZmZlciA9IHN0YXRpY0J1ZmZlciA/IHN0YXRpY0J1ZmZlciA6IHN0YXRp
Y19jYXN0PEFycmF5VmVydGV4QnVmZmVyKj4obVN0cmVhbWluZ0J1ZmZlcik7Ci0KLSAgICAgICAg
ICAgICAgICBzdGQ6OnNpemVfdCBzdHJlYW1PZmZzZXQgPSAtMTsKLQotICAgICAgICAgICAgICAg
IGlmIChzdGF0aWNCdWZmZXIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzdHJlYW1PZmZzZXQgPSBzdGF0aWNCdWZmZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ld
KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0xKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBl
bnRpcmUgYnVmZmVyCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9IGVs
ZW1lbnRzSW5CdWZmZXIoYXR0cmlic1tpXSwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHN0YXJ0SW5kZXggPSBhdHRyaWJzW2ldLm1PZmZzZXQgLyBhdHRyaWJz
W2ldLnN0cmlkZSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSB3
cml0ZUF0dHJpYnV0ZURhdGEoc3RhdGljQnVmZmVyLCAtc3RhcnRJbmRleCwgdG90YWxDb3VudCwg
YXR0cmlic1tpXSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RyZWFtT2Zmc2V0ICE9IC0xKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgKz0gKGF0dHJpYnNbaV0ubU9mZnNldCAv
IGF0dHJpYnNbaV0uc3RyaWRlKCkpICogY29udmVydGVyLm91dHB1dEVsZW1lbnRTaXplOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmlic1tpXS5t
RGl2aXNvciA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbU9mZnNldCArPSBzdGFydCAqIGNvbnZlcnRlci5vdXRwdXRFbGVt
ZW50U2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSB3cml0ZUF0dHJpYnV0ZURh
dGEobVN0cmVhbWluZ0J1ZmZlciwgc3RhcnQsIGNvdW50LCBhdHRyaWJzW2ldLCBpbnN0YW5jZXMp
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChzdHJlYW1PZmZzZXQg
PT0gLTEpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xf
T1VUX09GX01FTU9SWTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkW2ldLnZlcnRleEJ1ZmZlciA9IHZlcnRleEJ1ZmZlci0+Z2V0QnVmZmVyKCk7Ci0gICAg
ICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zZXJpYWwgPSB2ZXJ0ZXhCdWZmZXItPmdldFNlcmlh
bCgpOwotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uZGl2aXNvciA9IGF0dHJpYnNbaV0u
bURpdmlzb3I7Ci0KLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnR5cGUgPSBjb252ZXJ0
ZXIuZDNkRGVjbFR5cGU7Ci0gICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zdHJpZGUgPSBj
b252ZXJ0ZXIub3V0cHV0RWxlbWVudFNpemU7Ci0gICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtp
XS5vZmZzZXQgPSBzdHJlYW1PZmZzZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtQ3VycmVudFZhbHVlQnVmZmVy
W2ldKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRWYWx1
ZUJ1ZmZlcltpXSA9IG5ldyBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXIobURldmljZSwgQ09OU1RBTlRf
VkVSVEVYX0JVRkZFUl9TSVpFKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXIgKmJ1ZmZlciA9IG1DdXJyZW50VmFsdWVCdWZmZXJbaV07
Ci0KLSAgICAgICAgICAgICAgICBpZiAobURpcnR5Q3VycmVudFZhbHVlW2ldKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHJlcXVpcmVkU3BhY2UgPSA0
ICogc2l6ZW9mKGZsb2F0KTsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5hZGRSZXF1aXJl
ZFNwYWNlKHJlcXVpcmVkU3BhY2UpOwotICAgICAgICAgICAgICAgICAgICBidWZmZXItPnJlc2Vy
dmVSZXF1aXJlZFNwYWNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0ICpkYXRhID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQqPihidWZmZXItPm1hcChWZXJ0ZXhBdHRyaWJ1dGUoKSwgcmVxdWlyZWRT
cGFjZSwgJm1DdXJyZW50VmFsdWVPZmZzZXRzW2ldKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChkYXRhKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
YXRhWzBdID0gYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzBdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YVsxXSA9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVsxXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFbMl0gPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbMl07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhWzNdID0gYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzNd
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT51bm1hcCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbURpcnR5Q3VycmVudFZhbHVlW2ldID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVk
W2ldLnZlcnRleEJ1ZmZlciA9IG1DdXJyZW50VmFsdWVCdWZmZXJbaV0tPmdldEJ1ZmZlcigpOwot
ICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uc2VyaWFsID0gbUN1cnJlbnRWYWx1ZUJ1ZmZl
cltpXS0+Z2V0U2VyaWFsKCk7Ci0gICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5kaXZpc29y
ID0gMDsKLQotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0udHlwZSA9IEQzRERFQ0xUWVBF
X0ZMT0FUNDsKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0cmlkZSA9IDA7Ci0gICAg
ICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5vZmZzZXQgPSBtQ3VycmVudFZhbHVlT2Zmc2V0c1tp
XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCi0gICAgewotICAgICAgICBpZiAodHJhbnNs
YXRlZFtpXS5hY3RpdmUgJiYgYXR0cmlic1tpXS5tQXJyYXlFbmFibGVkKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgp
OwotCi0gICAgICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGJ1ZmZlci0+cHJvbW90ZVN0YXRpY1VzYWdlKGNvdW50ICogYXR0cmlic1tpXS50eXBlU2l6
ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBHTF9O
T19FUlJPUjsKLX0KLQotc3RkOjpzaXplX3QgVmVydGV4RGF0YU1hbmFnZXI6OnNwYWNlUmVxdWly
ZWQoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50LCBHTHNp
emVpIGluc3RhbmNlcykgY29uc3QKLXsKLSAgICBzaXplX3QgZWxlbWVudFNpemUgPSBmb3JtYXRD
b252ZXJ0ZXIoYXR0cmliKS5vdXRwdXRFbGVtZW50U2l6ZTsKLQotICAgIGlmIChpbnN0YW5jZXMg
PT0gMCB8fCBhdHRyaWIubURpdmlzb3IgPT0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlbGVt
ZW50U2l6ZSAqIGNvdW50OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4g
ZWxlbWVudFNpemUgKiAoKGluc3RhbmNlcyArIGF0dHJpYi5tRGl2aXNvciAtIDEpIC8gYXR0cmli
Lm1EaXZpc29yKTsKLSAgICB9Ci19Ci0KLS8vIE1hcHBpbmcgZnJvbSBPcGVuR0wtRVMgdmVydGV4
IGF0dHJpYiB0eXBlIHRvIEQzRCBkZWNsIHR5cGU6Ci0vLwotLy8gQllURSAgICAgICAgICAgICAg
ICAgU0hPUlQgKENhc3QpCi0vLyBCWVRFLW5vcm0gICAgICAgICAgICBGTE9BVCAoTm9ybWFsaXpl
KSAoY2FuJ3QgYmUgZXhhY3RseSByZXByZXNlbnRlZCBhcyBTSE9SVC1ub3JtKQotLy8gVU5TSUdO
RURfQllURSAgICAgICAgVUJZVEU0IChJZGVudGl0eSkgb3IgU0hPUlQgKENhc3QpCi0vLyBVTlNJ
R05FRF9CWVRFLW5vcm0gICBVQllURTROIChJZGVudGl0eSkgb3IgRkxPQVQgKE5vcm1hbGl6ZSkK
LS8vIFNIT1JUICAgICAgICAgICAgICAgIFNIT1JUIChJZGVudGl0eSkKLS8vIFNIT1JULW5vcm0g
ICAgICAgICAgIFNIT1JULW5vcm0gKElkZW50aXR5KSBvciBGTE9BVCAoTm9ybWFsaXplKQotLy8g
VU5TSUdORURfU0hPUlQgICAgICAgRkxPQVQgKENhc3QpCi0vLyBVTlNJR05FRF9TSE9SVC1ub3Jt
ICBVU0hPUlQtbm9ybSAoSWRlbnRpdHkpIG9yIEZMT0FUIChOb3JtYWxpemUpCi0vLyBGSVhFRCAo
bm90IGluIFdlYkdMKSBGTE9BVCAoRml4ZWRUb0Zsb2F0KQotLy8gRkxPQVQgICAgICAgICAgICAg
ICAgRkxPQVQgKElkZW50aXR5KQotCi0vLyBHTFRvQ1R5cGUgbWFwcyBmcm9tIEdMIHR5cGUgKGFz
IEdMZW51bSkgdG8gdGhlIEMgdHlwZWRlZi4gCi10ZW1wbGF0ZSA8R0xlbnVtIEdMVHlwZT4gc3Ry
dWN0IEdMVG9DVHlwZSB7IH07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfQllU
RT4geyB0eXBlZGVmIEdMYnl0ZSB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlw
ZTxHTF9VTlNJR05FRF9CWVRFPiB7IHR5cGVkZWYgR0x1Ynl0ZSB0eXBlOyB9OwotdGVtcGxhdGUg
PD4gc3RydWN0IEdMVG9DVHlwZTxHTF9TSE9SVD4geyB0eXBlZGVmIEdMc2hvcnQgdHlwZTsgfTsK
LXRlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfVU5TSUdORURfU0hPUlQ+IHsgdHlwZWRl
ZiBHTHVzaG9ydCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9GSVhF
RD4geyB0eXBlZGVmIEdMdWludCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlw
ZTxHTF9GTE9BVD4geyB0eXBlZGVmIEdMZmxvYXQgdHlwZTsgfTsKLQotLy8gVGhpcyBkaWZmZXJz
IGZyb20gRDNEREVDTFRZUEUgaW4gdGhhdCBpdCBpcyB1bnNpemVkLiAoU2l6ZSBleHBhbnNpb24g
aXMgYXBwbGllZCBsYXN0LikKLWVudW0gRDNEVmVydGV4VHlwZQotewotICAgIEQzRFZUX0ZMT0FU
LAotICAgIEQzRFZUX1NIT1JULAotICAgIEQzRFZUX1NIT1JUX05PUk0sCi0gICAgRDNEVlRfVUJZ
VEUsCi0gICAgRDNEVlRfVUJZVEVfTk9STSwKLSAgICBEM0RWVF9VU0hPUlRfTk9STQotfTsKLQot
Ly8gRDNEVG9DVHlwZSBtYXBzIGZyb20gRDNEIHZlcnRleCB0eXBlIChhcyBlbnVtIEQzRFZlcnRl
eFR5cGUpIHRvIHRoZSBjb3JyZXNwb25kaW5nIEMgdHlwZS4KLXRlbXBsYXRlIDx1bnNpZ25lZCBp
bnQgRDNEVHlwZT4gc3RydWN0IEQzRFRvQ1R5cGUgeyB9OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RDNEVG9DVHlwZTxEM0RWVF9GTE9BVD4geyB0eXBlZGVmIGZsb2F0IHR5cGU7IH07Ci10ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9TSE9SVD4geyB0eXBlZGVmIHNob3J0IHR5cGU7
IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9TSE9SVF9OT1JNPiB7IHR5
cGVkZWYgc2hvcnQgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBEM0RUb0NUeXBlPEQzRFZU
X1VCWVRFPiB7IHR5cGVkZWYgdW5zaWduZWQgY2hhciB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3Ry
dWN0IEQzRFRvQ1R5cGU8RDNEVlRfVUJZVEVfTk9STT4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
dHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBEM0RUb0NUeXBlPEQzRFZUX1VTSE9SVF9OT1JN
PiB7IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdHlwZTsgfTsKLQotLy8gRW5jb2RlIHRoZSB0eXBl
L3NpemUgY29tYmluYXRpb25zIHRoYXQgRDNEIHBlcm1pdHMuIEZvciBlYWNoIHR5cGUvc2l6ZSBp
dCBleHBhbmRzIHRvIGEgd2lkZW5lciB0aGF0IHdpbGwgcHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUg
ZmluYWwgc2l6ZS4KLXRlbXBsYXRlIDx1bnNpZ25lZCBpbnQgdHlwZSwgaW50IHNpemU+Ci1zdHJ1
Y3QgV2lkZW5SdWxlCi17Ci19OwotCi10ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1
bGU8RDNEVlRfRkxPQVQsIHNpemU+ICAgICAgICAgIDogZ2w6Ok5vV2lkZW48c2l6ZT4geyB9Owot
dGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1NIT1JULCBzaXplPiAg
ICAgICAgICA6IGdsOjpXaWRlblRvRXZlbjxzaXplPiB7IH07Ci10ZW1wbGF0ZSA8aW50IHNpemU+
IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfU0hPUlRfTk9STSwgc2l6ZT4gICAgIDogZ2w6OldpZGVu
VG9FdmVuPHNpemU+IHsgfTsKLXRlbXBsYXRlIDxpbnQgc2l6ZT4gc3RydWN0IFdpZGVuUnVsZTxE
M0RWVF9VQllURSwgc2l6ZT4gICAgICAgICAgOiBnbDo6V2lkZW5Ub0ZvdXI8c2l6ZT4geyB9Owot
dGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1VCWVRFX05PUk0sIHNp
emU+ICAgICA6IGdsOjpXaWRlblRvRm91cjxzaXplPiB7IH07Ci10ZW1wbGF0ZSA8aW50IHNpemU+
IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfVVNIT1JUX05PUk0sIHNpemU+ICAgIDogZ2w6OldpZGVu
VG9FdmVuPHNpemU+IHsgfTsKLQotLy8gVmVydGV4VHlwZUZsYWdzIGVuY29kZXMgdGhlIEQzRENB
UFM5OjpEZWNsVHlwZSBmbGFnIGFuZCB2ZXJ0ZXggZGVjbGFyYXRpb24gZmxhZyBmb3IgZWFjaCBE
M0QgdmVydGV4IHR5cGUgJiBzaXplIGNvbWJpbmF0aW9uLgotdGVtcGxhdGUgPHVuc2lnbmVkIGlu
dCBkM2R0eXBlLCBpbnQgc2l6ZT4KLXN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3MKLXsKLX07Ci0KLXRl
bXBsYXRlIDx1bnNpZ25lZCBpbnQgX2NhcGZsYWcsIHVuc2lnbmVkIGludCBfZGVjbGZsYWc+Ci1z
dHJ1Y3QgVmVydGV4VHlwZUZsYWdzSGVscGVyCi17Ci0gICAgZW51bSB7IGNhcGZsYWcgPSBfY2Fw
ZmxhZyB9OwotICAgIGVudW0geyBkZWNsZmxhZyA9IF9kZWNsZmxhZyB9OwotfTsKLQotdGVtcGxh
dGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9GTE9BVCwgMT4gOiBWZXJ0ZXhUeXBl
RmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxPQVQxPiB7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1
Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX0ZMT0FULCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBl
cjwwLCBEM0RERUNMVFlQRV9GTE9BVDI+IHsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhU
eXBlRmxhZ3M8RDNEVlRfRkxPQVQsIDM+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERF
Q0xUWVBFX0ZMT0FUMz4geyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxE
M0RWVF9GTE9BVCwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxP
QVQ0PiB7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1NIT1JU
LCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjwwLCBEM0RERUNMVFlQRV9TSE9SVDI+IHsgfTsK
LXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfU0hPUlQsIDQ+IDogVmVy
dGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERFQ0xUWVBFX1NIT1JUND4geyB9OwotdGVtcGxhdGUg
PD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5
cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfU0hPUlQyTiwgRDNEREVDTFRZUEVfU0hPUlQyTj4geyB9
OwotdGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCA0
PiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfU0hPUlQ0TiwgRDNEREVDTFRZUEVf
U0hPUlQ0Tj4geyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9V
QllURSwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8RDNERFRDQVBTX1VCWVRFNCwgRDNEREVD
TFRZUEVfVUJZVEU0PiB7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQz
RFZUX1VCWVRFX05PUk0sIDQ+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19VQllU
RTROLCBEM0RERUNMVFlQRV9VQllURTROPiB7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4
VHlwZUZsYWdzPEQzRFZUX1VTSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjxE
M0REVENBUFNfVVNIT1JUMk4sIEQzRERFQ0xUWVBFX1VTSE9SVDJOPiB7IH07Ci10ZW1wbGF0ZSA8
PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1VTSE9SVF9OT1JNLCA0PiA6IFZlcnRleFR5
cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfVVNIT1JUNE4sIEQzRERFQ0xUWVBFX1VTSE9SVDROPiB7
IH07Ci0KLQotLy8gVmVydGV4VHlwZU1hcHBpbmcgbWFwcyBHTCB0eXBlICYgbm9ybWFsaXplZCBm
bGFnIHRvIHByZWZlcnJlZCBhbmQgZmFsbGJhY2sgRDNEIHZlcnRleCB0eXBlcyAoYXMgRDNEVmVy
dGV4VHlwZSBlbnVtcykuCi10ZW1wbGF0ZSA8R0xlbnVtIEdMdHlwZSwgYm9vbCBub3JtYWxpemVk
Pgotc3RydWN0IFZlcnRleFR5cGVNYXBwaW5nCi17Ci19OwotCi10ZW1wbGF0ZSA8RDNEVmVydGV4
VHlwZSBQcmVmZXJyZWQsIEQzRFZlcnRleFR5cGUgRmFsbGJhY2sgPSBQcmVmZXJyZWQ+Ci1zdHJ1
Y3QgVmVydGV4VHlwZU1hcHBpbmdCYXNlCi17Ci0gICAgZW51bSB7IHByZWZlcnJlZCA9IFByZWZl
cnJlZCB9OwotICAgIGVudW0geyBmYWxsYmFjayA9IEZhbGxiYWNrIH07Ci19OwotCi10ZW1wbGF0
ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfQllURSwgZmFsc2U+ICAgICAgICAgICAg
ICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfU0hPUlQ+IHsgfTsgICAg
ICAgICAgICAgICAgICAgICAgIC8vIENhc3QKLXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBl
TWFwcGluZzxHTF9CWVRFLCB0cnVlPiAgICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5
cGVNYXBwaW5nQmFzZTxEM0RWVF9GTE9BVD4geyB9OyAgICAgICAgICAgICAgICAgICAgICAgLy8g
Tm9ybWFsaXplCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdO
RURfQllURSwgZmFsc2U+ICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNE
VlRfVUJZVEUsIEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgIC8vIElkZW50aXR5LCBDYXN0Ci10
ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURfQllURSwgdHJ1
ZT4gICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfVUJZVEVfTk9S
TSwgRDNEVlRfRkxPQVQ+IHsgfTsgICAgIC8vIElkZW50aXR5LCBOb3JtYWxpemUKLXRlbXBsYXRl
IDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9TSE9SVCwgZmFsc2U+ICAgICAgICAgICAg
ICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9TSE9SVD4geyB9OyAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpdHkKLXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhU
eXBlTWFwcGluZzxHTF9TSE9SVCwgdHJ1ZT4gICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRl
eFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9TSE9SVF9OT1JNLCBEM0RWVF9GTE9BVD4geyB9OyAgICAg
Ly8gQ2FzdCwgTm9ybWFsaXplCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8
R0xfVU5TSUdORURfU0hPUlQsIGZhbHNlPiAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGlu
Z0Jhc2U8RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc3QKLXRl
bXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9VTlNJR05FRF9TSE9SVCwgdHJ1
ZT4gICAgICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9VU0hPUlRfTk9S
TSwgRDNEVlRfRkxPQVQ+IHsgfTsgICAgLy8gQ2FzdCwgTm9ybWFsaXplCi10ZW1wbGF0ZSA8Ym9v
bCBub3JtYWxpemVkPiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfRklYRUQsIG5vcm1hbGl6
ZWQ+ICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZpeGVkVG9GbG9hdAotdGVtcGxhdGUgPGJvb2wgbm9ybWFsaXplZD4g
c3RydWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX0ZMT0FULCBub3JtYWxpemVkPiAgIDogVmVydGV4
VHlwZU1hcHBpbmdCYXNlPEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgICAgICAgICAgICAgICAv
LyBJZGVudGl0eQotCi0KLS8vIEdpdmVuIGEgR0wgdHlwZSAmIG5vcm0gZmxhZyBhbmQgYSBEM0Qg
dHlwZSwgQ29udmVyc2lvblJ1bGUgcHJvdmlkZXMgdGhlIHR5cGUgY29udmVyc2lvbiBydWxlIChD
YXN0LCBOb3JtYWxpemUsIElkZW50aXR5LCBGaXhlZFRvRmxvYXQpLgotLy8gVGhlIGNvbnZlcnNp
b24gcnVsZXMgdGhlbXNlbHZlcyBhcmUgZGVmaW5lZCBpbiB2ZXJ0ZXhjb252ZXJzaW9uLmguCi0K
LS8vIEFsbW9zdCBhbGwgY2FzZXMgYXJlIGNvdmVyZWQgYnkgQ2FzdCAoaW5jbHVkaW5nIHRob3Nl
IHRoYXQgYXJlIGFjdHVhbGx5IElkZW50aXR5IHNpbmNlIENhc3Q8VCxUPiBrbm93cyBpdCdzIGFu
IGlkZW50aXR5IG1hcHBpbmcpLgotdGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZSwgYm9vbCBub3Jt
YWxpemVkLCB1bnNpZ25lZCBpbnQgdG9UeXBlPgotc3RydWN0IENvbnZlcnNpb25SdWxlIDogZ2w6
OkNhc3Q8dHlwZW5hbWUgR0xUb0NUeXBlPGZyb21UeXBlPjo6dHlwZSwgdHlwZW5hbWUgRDNEVG9D
VHlwZTx0b1R5cGU+Ojp0eXBlPgotewotfTsKLQotLy8gQWxsIGNvbnZlcnNpb25zIGZyb20gbm9y
bWFsaXplZCB0eXBlcyB0byBmbG9hdCB1c2UgdGhlIE5vcm1hbGl6ZSBvcGVyYXRvci4KLXRlbXBs
YXRlIDxHTGVudW0gZnJvbVR5cGU+IHN0cnVjdCBDb252ZXJzaW9uUnVsZTxmcm9tVHlwZSwgdHJ1
ZSwgRDNEVlRfRkxPQVQ+IDogZ2w6Ok5vcm1hbGl6ZTx0eXBlbmFtZSBHTFRvQ1R5cGU8ZnJvbVR5
cGU+Ojp0eXBlPiB7IH07Ci0KLS8vIFVzZSBhIGZ1bGwgc3BlY2lhbGlzYXRpb24gZm9yIHRoaXMg
c28gdGhhdCBpdCBwcmVmZXJlbnRpYWxseSBtYXRjaGVzIGFoZWFkIG9mIHRoZSBnZW5lcmljIG5v
cm1hbGl6ZS10by1mbG9hdCBydWxlcy4KLXRlbXBsYXRlIDw+IHN0cnVjdCBDb252ZXJzaW9uUnVs
ZTxHTF9GSVhFRCwgdHJ1ZSwgRDNEVlRfRkxPQVQ+IDogZ2w6OkZpeGVkVG9GbG9hdDxHTGludCwg
MTY+IHsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBDb252ZXJzaW9uUnVsZTxHTF9GSVhFRCwgZmFs
c2UsIEQzRFZUX0ZMT0FUPiA6IGdsOjpGaXhlZFRvRmxvYXQ8R0xpbnQsIDE2PiB7IH07Ci0KLS8v
IEEgMi1zdGFnZSBjb25zdHJ1Y3Rpb24gaXMgdXNlZCBmb3IgRGVmYXVsdFZlcnRleFZhbHVlcyBi
ZWNhdXNlIGZsb2F0IG11c3QgdXNlIFNpbXBsZURlZmF1bHRWYWx1ZXMgKGkuZS4gMC8xKQotLy8g
d2hldGhlciBpdCBpcyBub3JtYWxpemVkIG9yIG5vdC4KLXRlbXBsYXRlIDxjbGFzcyBULCBib29s
IG5vcm1hbGl6ZWQ+Ci1zdHJ1Y3QgRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMgotewotfTsKLQot
dGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBEZWZhdWx0VmVydGV4VmFsdWVzU3RhZ2UyPFQsIHRy
dWU+ICA6IGdsOjpOb3JtYWxpemVkRGVmYXVsdFZhbHVlczxUPiB7IH07Ci10ZW1wbGF0ZSA8Y2xh
c3MgVD4gc3RydWN0IERlZmF1bHRWZXJ0ZXhWYWx1ZXNTdGFnZTI8VCwgZmFsc2U+IDogZ2w6OlNp
bXBsZURlZmF1bHRWYWx1ZXM8VD4geyB9OwotCi0vLyBXb3JrIG91dCB0aGUgZGVmYXVsdCB2YWx1
ZSBydWxlIGZvciBhIEQzRCB0eXBlIChleHByZXNzZWQgYXMgdGhlIEMgdHlwZSkgYW5kIAotdGVt
cGxhdGUgPGNsYXNzIFQsIGJvb2wgbm9ybWFsaXplZD4KLXN0cnVjdCBEZWZhdWx0VmVydGV4VmFs
dWVzIDogRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMjxULCBub3JtYWxpemVkPgotewotfTsKLQot
dGVtcGxhdGUgPGJvb2wgbm9ybWFsaXplZD4gc3RydWN0IERlZmF1bHRWZXJ0ZXhWYWx1ZXM8Zmxv
YXQsIG5vcm1hbGl6ZWQ+IDogZ2w6OlNpbXBsZURlZmF1bHRWYWx1ZXM8ZmxvYXQ+IHsgfTsKLQot
Ly8gUG9saWN5IHJ1bGVzIGZvciB1c2Ugd2l0aCBDb252ZXJ0ZXIsIHRvIGNob29zZSB3aGV0aGVy
IHRvIHVzZSB0aGUgcHJlZmVycmVkIG9yIGZhbGxiYWNrIGNvbnZlcnNpb24uCi0vLyBUaGUgZmFs
bGJhY2sgY29udmVyc2lvbiBwcm9kdWNlcyBhbiBvdXRwdXQgdGhhdCBhbGwgRDNEOSBkZXZpY2Vz
IG11c3Qgc3VwcG9ydC4KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgVXNlUHJlZmVycmVkIHsg
ZW51bSB7IHR5cGUgPSBUOjpwcmVmZXJyZWQgfTsgfTsKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1
Y3QgVXNlRmFsbGJhY2sgeyBlbnVtIHsgdHlwZSA9IFQ6OmZhbGxiYWNrIH07IH07Ci0KLS8vIENv
bnZlcnRlciB0aWVzIGl0IGFsbCB0b2dldGhlci4gR2l2ZW4gYW4gT3BlbkdMIHR5cGUvbm9ybS9z
aXplIGFuZCBjaG9pY2Ugb2YgcHJlZmVycmVkL2ZhbGxiYWNrIGNvbnZlcnNpb24sCi0vLyBpdCBw
cm92aWRlcyBhbGwgdGhlIG1lbWJlcnMgb2YgdGhlIGFwcHJvcHJpYXRlIFZlcnRleERhdGFDb252
ZXJ0ZXIsIHRoZSBEM0RDQVBTOTo6RGVjbFR5cGVzIGZsYWcgaW4gY2FwIGZsYWcKLS8vIGFuZCB0
aGUgRDNEREVDTFRZUEUgbWVtYmVyIG5lZWRlZCBmb3IgdGhlIHZlcnRleCBkZWNsYXJhdGlvbiBp
biBkZWNsZmxhZy4KLXRlbXBsYXRlIDxHTGVudW0gZnJvbVR5cGUsIGJvb2wgbm9ybWFsaXplZCwg
aW50IHNpemUsIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBQcmVmZXJlbmNlUnVsZT4KLXN0cnVj
dCBDb252ZXJ0ZXIKLSAgICA6IGdsOjpWZXJ0ZXhEYXRhQ29udmVydGVyPHR5cGVuYW1lIEdMVG9D
VHlwZTxmcm9tVHlwZT46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRl
blJ1bGU8UHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxp
emVkPiA+Ojp0eXBlLCBzaXplPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZl
cnNpb25SdWxlPGZyb21UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFByZWZlcmVuY2VSdWxlPCBWZXJ0ZXhUeXBlTWFwcGluZzxmcm9tVHlwZSwgbm9y
bWFsaXplZD4gPjo6dHlwZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0
VmVydGV4VmFsdWVzPHR5cGVuYW1lIEQzRFRvQ1R5cGU8UHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5
cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxpemVkPiA+Ojp0eXBlPjo6dHlwZSwgbm9ybWFsaXpl
ZCA+ID4KLXsKLXByaXZhdGU6Ci0gICAgZW51bSB7IGQzZHR5cGUgPSBQcmVmZXJlbmNlUnVsZTwg
VmVydGV4VHlwZU1hcHBpbmc8ZnJvbVR5cGUsIG5vcm1hbGl6ZWQ+ID46OnR5cGUgfTsKLSAgICBl
bnVtIHsgZDNkc2l6ZSA9IFdpZGVuUnVsZTxkM2R0eXBlLCBzaXplPjo6ZmluYWxXaWR0aCB9Owot
Ci1wdWJsaWM6Ci0gICAgZW51bSB7IGNhcGZsYWcgPSBWZXJ0ZXhUeXBlRmxhZ3M8ZDNkdHlwZSwg
ZDNkc2l6ZT46OmNhcGZsYWcgfTsKLSAgICBlbnVtIHsgZGVjbGZsYWcgPSBWZXJ0ZXhUeXBlRmxh
Z3M8ZDNkdHlwZSwgZDNkc2l6ZT46OmRlY2xmbGFnIH07Ci19OwotCi0vLyBJbml0aWFsaXNlIGEg
VHJhbnNsYXRpb25JbmZvCi0jZGVmaW5lIFRSQU5TTEFUSU9OKHR5cGUsIG5vcm0sIHNpemUsIHBy
ZWZlcnJlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENvbnZlcnRlcjx0eXBlLCBub3JtLCBzaXplLCBw
cmVmZXJyZWQ+OjppZGVudGl0eSwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IENvbnZlcnRlcjx0eXBlLCBub3JtLCBzaXplLCBwcmVmZXJyZWQ+OjpmaW5hbFNpemUsICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENvbnZlcnRlcjx0eXBlLCBub3JtLCBzaXpl
LCBwcmVmZXJyZWQ+Ojpjb252ZXJ0QXJyYXksICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIHN0YXRpY19jYXN0PEQzRERFQ0xUWVBFPihDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwg
cHJlZmVycmVkPjo6ZGVjbGZsYWcpICBcCi0gICAgfQotCi0jZGVmaW5lIFRSQU5TTEFUSU9OX0ZP
Ul9UWVBFX05PUk1fU0laRSh0eXBlLCBub3JtLCBzaXplKSAgICBcCi0gICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENv
bnZlcnRlcjx0eXBlLCBub3JtLCBzaXplLCBVc2VQcmVmZXJyZWQ+OjpjYXBmbGFnLCBcCi0gICAg
ICAgIFRSQU5TTEFUSU9OKHR5cGUsIG5vcm0sIHNpemUsIFVzZVByZWZlcnJlZCksICAgICAgICBc
Ci0gICAgICAgIFRSQU5TTEFUSU9OKHR5cGUsIG5vcm0sIHNpemUsIFVzZUZhbGxiYWNrKSAgICAg
ICAgICBcCi0gICAgfQotCi0jZGVmaW5lIFRSQU5TTEFUSU9OU19GT1JfVFlQRSh0eXBlKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHsgVFJBTlNMQVRJT05fRk9S
X1RZUEVfTk9STV9TSVpFKHR5cGUsIGZhbHNlLCAxKSwgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9S
TV9TSVpFKHR5cGUsIGZhbHNlLCAyKSwgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5
cGUsIGZhbHNlLCAzKSwgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIGZhbHNl
LCA0KSB9LCBcCi0gICAgICAgIHsgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUs
IHRydWUsIDEpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgdHJ1ZSwgMiks
IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCAzKSwgVFJBTlNMQVRJ
T05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIHRydWUsIDQpIH0sICAgICBcCi0gICAgfQotCi0j
ZGVmaW5lIFRSQU5TTEFUSU9OU19GT1JfVFlQRV9OT19OT1JNKHR5cGUpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHsgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5
cGUsIGZhbHNlLCAxKSwgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIGZhbHNl
LCAyKSwgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIGZhbHNlLCAzKSwgVFJB
TlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIGZhbHNlLCA0KSB9LCBcCi0gICAgICAg
IHsgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIGZhbHNlLCAxKSwgVFJBTlNM
QVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIGZhbHNlLCAyKSwgVFJBTlNMQVRJT05fRk9S
X1RZUEVfTk9STV9TSVpFKHR5cGUsIGZhbHNlLCAzKSwgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9S
TV9TSVpFKHR5cGUsIGZhbHNlLCA0KSB9LCBcCi0gICAgfQotCi1jb25zdCBWZXJ0ZXhEYXRhTWFu
YWdlcjo6VHJhbnNsYXRpb25EZXNjcmlwdGlvbiBWZXJ0ZXhEYXRhTWFuYWdlcjo6bVBvc3NpYmxl
VHJhbnNsYXRpb25zW05VTV9HTF9WRVJURVhfQVRUUklCX1RZUEVTXVsyXVs0XSA9IC8vIFtHTCB0
eXBlcyBhcyBlbnVtZXJhdGVkIGJ5IHR5cGVJbmRleCgpXVtub3JtYWxpemVkXVtzaXplLTFdCi17
Ci0gICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX0JZVEUpLAotICAgIFRSQU5TTEFUSU9OU19G
T1JfVFlQRShHTF9VTlNJR05FRF9CWVRFKSwKLSAgICBUUkFOU0xBVElPTlNfRk9SX1RZUEUoR0xf
U0hPUlQpLAotICAgIFRSQU5TTEFUSU9OU19GT1JfVFlQRShHTF9VTlNJR05FRF9TSE9SVCksCi0g
ICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFX05PX05PUk0oR0xfRklYRUQpLAotICAgIFRSQU5TTEFU
SU9OU19GT1JfVFlQRV9OT19OT1JNKEdMX0ZMT0FUKQotfTsKLQotdm9pZCBWZXJ0ZXhEYXRhTWFu
YWdlcjo6Y2hlY2tWZXJ0ZXhDYXBzKERXT1JEIGRlY2xUeXBlcykKLXsKLSAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IE5VTV9HTF9WRVJURVhfQVRUUklCX1RZUEVTOyBpKyspCi0gICAg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IDI7IGorKykKLSAgICAgICAg
ewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgayA9IDA7IGsgPCA0OyBrKyspCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtq
XVtrXS5jYXBzRmxhZyA9PSAwIHx8IChkZWNsVHlwZXMgJiBtUG9zc2libGVUcmFuc2xhdGlvbnNb
aV1bal1ba10uY2Fwc0ZsYWcpICE9IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBtQXR0cmlidXRlVHlwZXNbaV1bal1ba10gPSBtUG9zc2libGVUcmFuc2xhdGlvbnNb
aV1bal1ba10ucHJlZmVycmVkQ29udmVyc2lvbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUF0
dHJpYnV0ZVR5cGVzW2ldW2pdW2tdID0gbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLmZh
bGxiYWNrQ29udmVyc2lvbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLS8vIFRoaXMgaXMgdXNlZCB0byBpbmRleCBtQXR0cmlidXRlVHlw
ZXMgYW5kIG1Qb3NzaWJsZVRyYW5zbGF0aW9ucy4KLXVuc2lnbmVkIGludCBWZXJ0ZXhEYXRhTWFu
YWdlcjo6dHlwZUluZGV4KEdMZW51bSB0eXBlKSBjb25zdAotewotICAgIHN3aXRjaCAodHlwZSkK
LSAgICB7Ci0gICAgICBjYXNlIEdMX0JZVEU6IHJldHVybiAwOwotICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOiByZXR1cm4gMTsKLSAgICAgIGNhc2UgR0xfU0hPUlQ6IHJldHVybiAyOwotICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJuIDM7Ci0gICAgICBjYXNlIEdMX0ZJWEVE
OiByZXR1cm4gNDsKLSAgICAgIGNhc2UgR0xfRkxPQVQ6IHJldHVybiA1OwotCi0gICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1cm4gNTsKLSAgICB9Ci19Ci0KLVZlcnRleEJ1ZmZlcjo6
VmVydGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgc3RkOjpzaXplX3Qgc2l6ZSwg
RFdPUkQgdXNhZ2VGbGFncykgOiBtRGV2aWNlKGRldmljZSksIG1WZXJ0ZXhCdWZmZXIoTlVMTCkK
LXsKLSAgICBpZiAoc2l6ZSA+IDApCi0gICAgewotICAgICAgICBEM0RQT09MIHBvb2wgPSBnZXRE
aXNwbGF5KCktPmdldEJ1ZmZlclBvb2wodXNhZ2VGbGFncyk7Ci0gICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVWZXJ0ZXhCdWZmZXIoc2l6ZSwgdXNhZ2VGbGFncywgMCwgcG9v
bCwgJm1WZXJ0ZXhCdWZmZXIsIE5VTEwpOwotICAgICAgICBtU2VyaWFsID0gaXNzdWVTZXJpYWwo
KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgewotICAg
ICAgICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9jYXRpbmcgYSB2ZXJ0ZXggYnVmZmVyIG9m
IHNpemUgJWx1LiIsIHNpemUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1WZXJ0ZXhCdWZmZXI6
On5WZXJ0ZXhCdWZmZXIoKQotewotICAgIGlmIChtVmVydGV4QnVmZmVyKQotICAgIHsKLSAgICAg
ICAgbVZlcnRleEJ1ZmZlci0+UmVsZWFzZSgpOwotICAgIH0KLX0KLQotdm9pZCBWZXJ0ZXhCdWZm
ZXI6OnVubWFwKCkKLXsKLSAgICBpZiAobVZlcnRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIG1W
ZXJ0ZXhCdWZmZXItPlVubG9jaygpOwotICAgIH0KLX0KLQotSURpcmVjdDNEVmVydGV4QnVmZmVy
OSAqVmVydGV4QnVmZmVyOjpnZXRCdWZmZXIoKSBjb25zdAotewotICAgIHJldHVybiBtVmVydGV4
QnVmZmVyOwotfQotCi11bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOjpnZXRTZXJpYWwoKSBjb25z
dAotewotICAgIHJldHVybiBtU2VyaWFsOwotfQotCi11bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVy
Ojppc3N1ZVNlcmlhbCgpCi17Ci0gICAgcmV0dXJuIG1DdXJyZW50U2VyaWFsKys7Ci19Ci0KLUFy
cmF5VmVydGV4QnVmZmVyOjpBcnJheVZlcnRleEJ1ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZp
Y2UsIHN0ZDo6c2l6ZV90IHNpemUsIERXT1JEIHVzYWdlRmxhZ3MpIDogVmVydGV4QnVmZmVyKGRl
dmljZSwgc2l6ZSwgdXNhZ2VGbGFncykKLXsKLSAgICBtQnVmZmVyU2l6ZSA9IHNpemU7Ci0gICAg
bVdyaXRlUG9zaXRpb24gPSAwOwotICAgIG1SZXF1aXJlZFNwYWNlID0gMDsKLX0KLQotQXJyYXlW
ZXJ0ZXhCdWZmZXI6On5BcnJheVZlcnRleEJ1ZmZlcigpCi17Ci19Ci0KLXZvaWQgQXJyYXlWZXJ0
ZXhCdWZmZXI6OmFkZFJlcXVpcmVkU3BhY2UoVUlOVCByZXF1aXJlZFNwYWNlKQotewotICAgIG1S
ZXF1aXJlZFNwYWNlICs9IHJlcXVpcmVkU3BhY2U7Ci19Ci0KLVN0cmVhbWluZ1ZlcnRleEJ1ZmZl
cjo6U3RyZWFtaW5nVmVydGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgc3RkOjpz
aXplX3QgaW5pdGlhbFNpemUpIDogQXJyYXlWZXJ0ZXhCdWZmZXIoZGV2aWNlLCBpbml0aWFsU2l6
ZSwgRDNEVVNBR0VfRFlOQU1JQyB8IEQzRFVTQUdFX1dSSVRFT05MWSkKLXsKLX0KLQotU3RyZWFt
aW5nVmVydGV4QnVmZmVyOjp+U3RyZWFtaW5nVmVydGV4QnVmZmVyKCkKLXsKLX0KLQotdm9pZCAq
U3RyZWFtaW5nVmVydGV4QnVmZmVyOjptYXAoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1
dGUsIHN0ZDo6c2l6ZV90IHJlcXVpcmVkU3BhY2UsIHN0ZDo6c2l6ZV90ICpvZmZzZXQpCi17Ci0g
ICAgdm9pZCAqbWFwUHRyID0gTlVMTDsKLQotICAgIGlmIChtVmVydGV4QnVmZmVyKQotICAgIHsK
LSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG1Xcml0ZVBvc2l0
aW9uLCByZXF1aXJlZFNwYWNlLCAmbWFwUHRyLCBEM0RMT0NLX05PT1ZFUldSSVRFKTsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAg
RVJSKCJMb2NrIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7Ci0gICAgICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgICpvZmZzZXQgPSBtV3JpdGVQb3Np
dGlvbjsKLSAgICAgICAgbVdyaXRlUG9zaXRpb24gKz0gcmVxdWlyZWRTcGFjZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gbWFwUHRyOwotfQotCi12b2lkIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlcjo6cmVz
ZXJ2ZVJlcXVpcmVkU3BhY2UoKQotewotICAgIGlmIChtUmVxdWlyZWRTcGFjZSA+IG1CdWZmZXJT
aXplKQotICAgIHsKLSAgICAgICAgaWYgKG1WZXJ0ZXhCdWZmZXIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIG1WZXJ0ZXhCdWZmZXItPlJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1WZXJ0ZXhCdWZm
ZXIgPSBOVUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgbUJ1ZmZlclNpemUgPSBzdGQ6Om1heCht
UmVxdWlyZWRTcGFjZSwgMyAqIG1CdWZmZXJTaXplIC8gMik7ICAgLy8gMS41IHggbUJ1ZmZlclNp
emUgaXMgYXJiaXRyYXJ5IGFuZCBzaG91bGQgYmUgY2hlY2tlZCB0byBzZWUgd2UgZG9uJ3QgaGF2
ZSB0b28gbWFueSByZWFsbG9jYXRpb25zLgotCi0gICAgICAgIEQzRFBPT0wgcG9vbCA9IGdldERp
c3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9EWU5BTUlDIHwgRDNEVVNBR0VfV1JJVEVP
TkxZKTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVWZXJ0ZXhCdWZm
ZXIobUJ1ZmZlclNpemUsIEQzRFVTQUdFX0RZTkFNSUMgfCBEM0RVU0FHRV9XUklURU9OTFksIDAs
IHBvb2wsICZtVmVydGV4QnVmZmVyLCBOVUxMKTsKLSAgICAgICAgbVNlcmlhbCA9IGlzc3VlU2Vy
aWFsKCk7Ci0gICAgCi0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgewotICAg
ICAgICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9jYXRpbmcgYSB2ZXJ0ZXggYnVmZmVyIG9m
IHNpemUgJWx1LiIsIG1CdWZmZXJTaXplKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1Xcml0ZVBv
c2l0aW9uID0gMDsKLSAgICB9Ci0gICAgZWxzZSBpZiAobVdyaXRlUG9zaXRpb24gKyBtUmVxdWly
ZWRTcGFjZSA+IG1CdWZmZXJTaXplKSAgIC8vIFJlY3ljbGUKLSAgICB7Ci0gICAgICAgIGlmICht
VmVydGV4QnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICB2b2lkICpkdW1teTsKLSAgICAg
ICAgICAgIG1WZXJ0ZXhCdWZmZXItPkxvY2soMCwgMSwgJmR1bW15LCBEM0RMT0NLX0RJU0NBUkQp
OwotICAgICAgICAgICAgbVZlcnRleEJ1ZmZlci0+VW5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBtV3JpdGVQb3NpdGlvbiA9IDA7Ci0gICAgfQotCi0gICAgbVJlcXVpcmVkU3BhY2UgPSAw
OwotfQotCi1TdGF0aWNWZXJ0ZXhCdWZmZXI6OlN0YXRpY1ZlcnRleEJ1ZmZlcihJRGlyZWN0M0RE
ZXZpY2U5ICpkZXZpY2UpIDogQXJyYXlWZXJ0ZXhCdWZmZXIoZGV2aWNlLCAwLCBEM0RVU0FHRV9X
UklURU9OTFkpCi17Ci19Ci0KLVN0YXRpY1ZlcnRleEJ1ZmZlcjo6flN0YXRpY1ZlcnRleEJ1ZmZl
cigpCi17Ci19Ci0KLXZvaWQgKlN0YXRpY1ZlcnRleEJ1ZmZlcjo6bWFwKGNvbnN0IFZlcnRleEF0
dHJpYnV0ZSAmYXR0cmlidXRlLCBzdGQ6OnNpemVfdCByZXF1aXJlZFNwYWNlLCBzdGQ6OnNpemVf
dCAqc3RyZWFtT2Zmc2V0KQotewotICAgIHZvaWQgKm1hcFB0ciA9IE5VTEw7Ci0KLSAgICBpZiAo
bVZlcnRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVZlcnRleEJ1
ZmZlci0+TG9jayhtV3JpdGVQb3NpdGlvbiwgcmVxdWlyZWRTcGFjZSwgJm1hcFB0ciwgMCk7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEVSUigiTG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOwotICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgYXR0cmlidXRlT2Zm
c2V0ID0gYXR0cmlidXRlLm1PZmZzZXQgJSBhdHRyaWJ1dGUuc3RyaWRlKCk7Ci0gICAgICAgIFZl
cnRleEVsZW1lbnQgZWxlbWVudCA9IHthdHRyaWJ1dGUubVR5cGUsIGF0dHJpYnV0ZS5tU2l6ZSwg
YXR0cmlidXRlLnN0cmlkZSgpLCBhdHRyaWJ1dGUubU5vcm1hbGl6ZWQsIGF0dHJpYnV0ZU9mZnNl
dCwgbVdyaXRlUG9zaXRpb259OwotICAgICAgICBtQ2FjaGUucHVzaF9iYWNrKGVsZW1lbnQpOwot
Ci0gICAgICAgICpzdHJlYW1PZmZzZXQgPSBtV3JpdGVQb3NpdGlvbjsKLSAgICAgICAgbVdyaXRl
UG9zaXRpb24gKz0gcmVxdWlyZWRTcGFjZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWFwUHRyOwot
fQotCi12b2lkIFN0YXRpY1ZlcnRleEJ1ZmZlcjo6cmVzZXJ2ZVJlcXVpcmVkU3BhY2UoKQotewot
ICAgIGlmICghbVZlcnRleEJ1ZmZlciAmJiBtQnVmZmVyU2l6ZSA9PSAwKQotICAgIHsKLSAgICAg
ICAgRDNEUE9PTCBwb29sID0gZ2V0RGlzcGxheSgpLT5nZXRCdWZmZXJQb29sKEQzRFVTQUdFX1dS
SVRFT05MWSk7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVmVydGV4
QnVmZmVyKG1SZXF1aXJlZFNwYWNlLCBEM0RVU0FHRV9XUklURU9OTFksIDAsIHBvb2wsICZtVmVy
dGV4QnVmZmVyLCBOVUxMKTsKLSAgICAgICAgbVNlcmlhbCA9IGlzc3VlU2VyaWFsKCk7Ci0KLSAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIk91
dCBvZiBtZW1vcnkgYWxsb2NhdGluZyBhIHZlcnRleCBidWZmZXIgb2Ygc2l6ZSAlbHUuIiwgbVJl
cXVpcmVkU3BhY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgbUJ1ZmZlclNpemUgPSBtUmVxdWly
ZWRTcGFjZTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobVZlcnRleEJ1ZmZlciAmJiBtQnVmZmVyU2l6
ZSA+PSBtUmVxdWlyZWRTcGFjZSkKLSAgICB7Ci0gICAgICAgIC8vIEFscmVhZHkgYWxsb2NhdGVk
Ci0gICAgfQotICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsgICAvLyBTdGF0aWMgdmVydGV4IGJ1ZmZl
cnMgY2FuJ3QgYmUgcmVzaXplZAotCi0gICAgbVJlcXVpcmVkU3BhY2UgPSAwOwotfQotCi1zdGQ6
OnNpemVfdCBTdGF0aWNWZXJ0ZXhCdWZmZXI6Omxvb2t1cEF0dHJpYnV0ZShjb25zdCBWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYnV0ZSkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBlbGVtZW50ID0g
MDsgZWxlbWVudCA8IG1DYWNoZS5zaXplKCk7IGVsZW1lbnQrKykKLSAgICB7Ci0gICAgICAgIGlm
IChtQ2FjaGVbZWxlbWVudF0udHlwZSA9PSBhdHRyaWJ1dGUubVR5cGUgJiYKLSAgICAgICAgICAg
IG1DYWNoZVtlbGVtZW50XS5zaXplID09IGF0dHJpYnV0ZS5tU2l6ZSAmJgotICAgICAgICAgICAg
bUNhY2hlW2VsZW1lbnRdLnN0cmlkZSA9PSBhdHRyaWJ1dGUuc3RyaWRlKCkgJiYKLSAgICAgICAg
ICAgIG1DYWNoZVtlbGVtZW50XS5ub3JtYWxpemVkID09IGF0dHJpYnV0ZS5tTm9ybWFsaXplZCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1DYWNoZVtlbGVtZW50XS5hdHRyaWJ1dGVPZmZz
ZXQgPT0gYXR0cmlidXRlLm1PZmZzZXQgJSBhdHRyaWJ1dGUuc3RyaWRlKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1DYWNoZVtlbGVtZW50XS5zdHJlYW1PZmZzZXQ7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gLTE7Ci19Ci0K
LWNvbnN0IFZlcnRleERhdGFNYW5hZ2VyOjpGb3JtYXRDb252ZXJ0ZXIgJlZlcnRleERhdGFNYW5h
Z2VyOjpmb3JtYXRDb252ZXJ0ZXIoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1BdHRyaWJ1dGVUeXBlc1t0eXBlSW5kZXgoYXR0cmlidXRlLm1U
eXBlKV1bYXR0cmlidXRlLm1Ob3JtYWxpemVkXVthdHRyaWJ1dGUubVNpemUgLSAxXTsKLX0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVmVydGV4
RGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVmVy
dGV4RGF0YU1hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODU3NTkxYS4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRl
eERhdGFNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLQotLy8gVmVydGV4RGF0YU1hbmFnZXIuaDogRGVmaW5lcyB0aGUgVmVydGV4RGF0
YU1hbmFnZXIsIGEgY2xhc3MgdGhhdAotLy8gcnVucyB0aGUgQnVmZmVyIHRyYW5zbGF0aW9uIHBy
b2Nlc3MuCi0KLSNpZm5kZWYgTElCR0xFU1YyX1ZFUlRFWERBVEFNQU5BR0VSX0hfCi0jZGVmaW5l
IExJQkdMRVNWMl9WRVJURVhEQVRBTUFOQUdFUl9IXwotCi0jaW5jbHVkZSA8dmVjdG9yPgotI2lu
Y2x1ZGUgPGNzdGRkZWY+Ci0KLSNkZWZpbmUgR0xfQVBJQ0FMTAotI2luY2x1ZGUgPEdMRVMyL2ds
Mi5oPgotCi0jaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKLQotbmFtZXNwYWNlIGdsCi17
Ci0KLXN0cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlCi17Ci0gICAgYm9vbCBhY3RpdmU7Ci0KLSAg
ICBEM0RERUNMVFlQRSB0eXBlOwotICAgIFVJTlQgb2Zmc2V0OwotICAgIFVJTlQgc3RyaWRlOyAg
IC8vIDAgbWVhbnMgbm90IHRvIGFkdmFuY2UgdGhlIHJlYWQgcG9pbnRlciBhdCBhbGwKLQotICAg
IElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKnZlcnRleEJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBpbnQg
c2VyaWFsOwotICAgIHVuc2lnbmVkIGludCBkaXZpc29yOwotfTsKLQotY2xhc3MgVmVydGV4QnVm
ZmVyCi17Ci0gIHB1YmxpYzoKLSAgICBWZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2
aWNlLCBzdGQ6OnNpemVfdCBzaXplLCBEV09SRCB1c2FnZUZsYWdzKTsKLSAgICB2aXJ0dWFsIH5W
ZXJ0ZXhCdWZmZXIoKTsKLQotICAgIHZvaWQgdW5tYXAoKTsKLQotICAgIElEaXJlY3QzRFZlcnRl
eEJ1ZmZlcjkgKmdldEJ1ZmZlcigpIGNvbnN0OwotICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwo
KSBjb25zdDsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqY29uc3QgbURl
dmljZTsKLSAgICBJRGlyZWN0M0RWZXJ0ZXhCdWZmZXI5ICptVmVydGV4QnVmZmVyOwotCi0gICAg
dW5zaWduZWQgaW50IG1TZXJpYWw7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZVNlcmlh
bCgpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbUN1cnJlbnRTZXJpYWw7Ci0KLSAgcHJpdmF0
ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4QnVmZmVyKTsKLX07Ci0KLWNs
YXNzIEFycmF5VmVydGV4QnVmZmVyIDogcHVibGljIFZlcnRleEJ1ZmZlcgotewotICBwdWJsaWM6
Ci0gICAgQXJyYXlWZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBzdGQ6OnNp
emVfdCBzaXplLCBEV09SRCB1c2FnZUZsYWdzKTsKLSAgICB+QXJyYXlWZXJ0ZXhCdWZmZXIoKTsK
LQotICAgIHN0ZDo6c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyU2l6ZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCAqbWFwKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBz
dGQ6OnNpemVfdCByZXF1aXJlZFNwYWNlLCBzdGQ6OnNpemVfdCAqc3RyZWFtT2Zmc2V0KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHJlc2VydmVSZXF1aXJlZFNwYWNlKCkgPSAwOwotICAgIHZvaWQg
YWRkUmVxdWlyZWRTcGFjZShVSU5UIHJlcXVpcmVkU3BhY2UpOwotCi0gIHByb3RlY3RlZDoKLSAg
ICBzdGQ6OnNpemVfdCBtQnVmZmVyU2l6ZTsKLSAgICBzdGQ6OnNpemVfdCBtV3JpdGVQb3NpdGlv
bjsKLSAgICBzdGQ6OnNpemVfdCBtUmVxdWlyZWRTcGFjZTsKLX07Ci0KLWNsYXNzIFN0cmVhbWlu
Z1ZlcnRleEJ1ZmZlciA6IHB1YmxpYyBBcnJheVZlcnRleEJ1ZmZlcgotewotICBwdWJsaWM6Ci0g
ICAgU3RyZWFtaW5nVmVydGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgc3RkOjpz
aXplX3QgaW5pdGlhbFNpemUpOwotICAgIH5TdHJlYW1pbmdWZXJ0ZXhCdWZmZXIoKTsKLQotICAg
IHZvaWQgKm1hcChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgc3RkOjpzaXplX3Qg
cmVxdWlyZWRTcGFjZSwgc3RkOjpzaXplX3QgKnN0cmVhbU9mZnNldCk7Ci0gICAgdm9pZCByZXNl
cnZlUmVxdWlyZWRTcGFjZSgpOwotfTsKLQotY2xhc3MgU3RhdGljVmVydGV4QnVmZmVyIDogcHVi
bGljIEFycmF5VmVydGV4QnVmZmVyCi17Ci0gIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTdGF0aWNW
ZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlKTsKLSAgICB+U3RhdGljVmVydGV4
QnVmZmVyKCk7Ci0KLSAgICB2b2lkICptYXAoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1
dGUsIHN0ZDo6c2l6ZV90IHJlcXVpcmVkU3BhY2UsIHN0ZDo6c2l6ZV90ICpzdHJlYW1PZmZzZXQp
OwotICAgIHZvaWQgcmVzZXJ2ZVJlcXVpcmVkU3BhY2UoKTsKLQotICAgIHN0ZDo6c2l6ZV90IGxv
b2t1cEF0dHJpYnV0ZShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7ICAgLy8gUmV0
dXJucyB0aGUgb2Zmc2V0IGludG8gdGhlIHZlcnRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBmb3Vu
ZAotCi0gIHByaXZhdGU6Ci0gICAgc3RydWN0IFZlcnRleEVsZW1lbnQKLSAgICB7Ci0gICAgICAg
IEdMZW51bSB0eXBlOwotICAgICAgICBHTGludCBzaXplOwotICAgICAgICBHTHNpemVpIHN0cmlk
ZTsKLSAgICAgICAgYm9vbCBub3JtYWxpemVkOwotICAgICAgICBpbnQgYXR0cmlidXRlT2Zmc2V0
OwotCi0gICAgICAgIHN0ZDo6c2l6ZV90IHN0cmVhbU9mZnNldDsKLSAgICB9OwotCi0gICAgc3Rk
Ojp2ZWN0b3I8VmVydGV4RWxlbWVudD4gbUNhY2hlOwotfTsKLQotY2xhc3MgVmVydGV4RGF0YU1h
bmFnZXIKLXsKLSAgcHVibGljOgotICAgIFZlcnRleERhdGFNYW5hZ2VyKENvbnRleHQgKmNvbnRl
eHQsIElEaXJlY3QzRERldmljZTkgKmJhY2tlbmQpOwotICAgIHZpcnR1YWwgflZlcnRleERhdGFN
YW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGRpcnR5Q3VycmVudFZhbHVlKGludCBpbmRleCkgeyBtRGly
dHlDdXJyZW50VmFsdWVbaW5kZXhdID0gdHJ1ZTsgfQotCi0gICAgR0xlbnVtIHByZXBhcmVWZXJ0
ZXhEYXRhKEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFuc2xhdGVkQXR0cmlidXRlICpv
dXRBdHRyaWJzLCBHTHNpemVpIGluc3RhbmNlcyk7Ci0KLSAgcHJpdmF0ZToKLSAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oVmVydGV4RGF0YU1hbmFnZXIpOwotCi0gICAgc3RkOjpzaXplX3Qg
c3BhY2VSZXF1aXJlZChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgc3RkOjpzaXplX3Qg
Y291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdDsKLSAgICBzdGQ6OnNpemVfdCB3cml0ZUF0
dHJpYnV0ZURhdGEoQXJyYXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlciwgR0xpbnQgc3RhcnQs
IEdMc2l6ZWkgY291bnQsIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBHTHNpemVp
IGluc3RhbmNlcyk7Ci0KLSAgICBDb250ZXh0ICpjb25zdCBtQ29udGV4dDsKLSAgICBJRGlyZWN0
M0REZXZpY2U5ICpjb25zdCBtRGV2aWNlOwotCi0gICAgU3RyZWFtaW5nVmVydGV4QnVmZmVyICpt
U3RyZWFtaW5nQnVmZmVyOwotCi0gICAgYm9vbCBtRGlydHlDdXJyZW50VmFsdWVbTUFYX1ZFUlRF
WF9BVFRSSUJTXTsKLSAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXIgKm1DdXJyZW50VmFsdWVCdWZm
ZXJbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKLSAgICBzdGQ6OnNpemVfdCBtQ3VycmVudFZhbHVlT2Zm
c2V0c1tNQVhfVkVSVEVYX0FUVFJJQlNdOwotCi0gICAgLy8gQXR0cmlidXRlIGZvcm1hdCBjb252
ZXJzaW9uCi0gICAgc3RydWN0IEZvcm1hdENvbnZlcnRlcgotICAgIHsKLSAgICAgICAgYm9vbCBp
ZGVudGl0eTsKLSAgICAgICAgc3RkOjpzaXplX3Qgb3V0cHV0RWxlbWVudFNpemU7Ci0gICAgICAg
IHZvaWQgKCpjb252ZXJ0QXJyYXkpKGNvbnN0IHZvaWQgKmluLCBzdGQ6OnNpemVfdCBzdHJpZGUs
IHN0ZDo6c2l6ZV90IG4sIHZvaWQgKm91dCk7Ci0gICAgICAgIEQzRERFQ0xUWVBFIGQzZERlY2xU
eXBlOwotICAgIH07Ci0KLSAgICBlbnVtIHsgTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVMgPSA2
IH07Ci0KLSAgICBGb3JtYXRDb252ZXJ0ZXIgbUF0dHJpYnV0ZVR5cGVzW05VTV9HTF9WRVJURVhf
QVRUUklCX1RZUEVTXVsyXVs0XTsgICAvLyBbR0wgdHlwZXMgYXMgZW51bWVyYXRlZCBieSB0eXBl
SW5kZXgoKV1bbm9ybWFsaXplZF1bc2l6ZSAtIDFdCi0KLSAgICBzdHJ1Y3QgVHJhbnNsYXRpb25E
ZXNjcmlwdGlvbgotICAgIHsKLSAgICAgICAgRFdPUkQgY2Fwc0ZsYWc7Ci0gICAgICAgIEZvcm1h
dENvbnZlcnRlciBwcmVmZXJyZWRDb252ZXJzaW9uOwotICAgICAgICBGb3JtYXRDb252ZXJ0ZXIg
ZmFsbGJhY2tDb252ZXJzaW9uOwotICAgIH07Ci0KLSAgICAvLyBUaGlzIHRhYmxlIGlzIHVzZWQg
dG8gZ2VuZXJhdGUgbUF0dHJpYnV0ZVR5cGVzLgotICAgIHN0YXRpYyBjb25zdCBUcmFuc2xhdGlv
bkRlc2NyaXB0aW9uIG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1fR0xfVkVSVEVYX0FUVFJJQl9U
WVBFU11bMl1bNF07IC8vIFtHTCB0eXBlcyBhcyBlbnVtZXJhdGVkIGJ5IHR5cGVJbmRleCgpXVtu
b3JtYWxpemVkXVtzaXplIC0gMV0KLQotICAgIHZvaWQgY2hlY2tWZXJ0ZXhDYXBzKERXT1JEIGRl
Y2xUeXBlcyk7Ci0KLSAgICB1bnNpZ25lZCBpbnQgdHlwZUluZGV4KEdMZW51bSB0eXBlKSBjb25z
dDsKLSAgICBjb25zdCBGb3JtYXRDb252ZXJ0ZXIgJmZvcm1hdENvbnZlcnRlcihjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkgY29uc3Q7Ci19OwotCi19Ci0KLSNlbmRpZiAgIC8vIExJ
QkdMRVNWMl9WRVJURVhEQVRBTUFOQUdFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAxNmQ5YzE3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvbGliR0xFU3YyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwMDIgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gbGliR0xFU3YyLmNwcDogSW1wbGVtZW50cyB0aGUg
ZXhwb3J0ZWQgT3BlbkdMIEVTIDIuMCBmdW5jdGlvbnMuCi0KLSNkZWZpbmUgR0xfQVBJQ0FMTAot
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgotCi0jaW5j
bHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPGxpbWl0cz4KLQotI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgotI2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCi0KLSNpbmNsdWRlICJsaWJHTEVT
djIvbWFpbi5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgotI2luY2x1ZGUgImxp
YkdMRVN2Mi91dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCi0jaW5j
bHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIK
LSNpbmNsdWRlICJsaWJHTEVTdjIvRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIv
UHJvZ3JhbS5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmgiCi0jaW5jbHVk
ZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9TaGFkZXIu
aCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9R
dWVyeS5oIgotCi1ib29sIHZhbGlkSW1hZ2VTaXplKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCkKLXsKLSAgICBpZiAobGV2ZWwgPCAwIHx8IHdpZHRoIDwgMCB8fCBo
ZWlnaHQgPCAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlm
IChnbDo6Z2V0Q29udGV4dCgpICYmIGdsOjpnZXRDb250ZXh0KCktPnN1cHBvcnRzTm9uUG93ZXIy
VGV4dHVyZSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYg
KGxldmVsID09IDApCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBp
ZiAoZ2w6OmlzUG93Mih3aWR0aCkgJiYgZ2w6OmlzUG93MihoZWlnaHQpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLyBWZXJp
ZnkgdGhhdCBmb3JtYXQvdHlwZSBhcmUgb25lIG9mIHRoZSBjb21iaW5hdGlvbnMgZnJvbSB0YWJs
ZSAzLjQuCi1ib29sIGNoZWNrVGV4dHVyZUZvcm1hdFR5cGUoR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUpCi17Ci0gICAgLy8gdmFsaWRhdGUgPGZvcm1hdD4gYnkgaXRzZWxmICh1c2VkIGFzIHNl
Y29uZGFyeSBrZXkgYmVsb3cpCi0gICAgc3dpdGNoIChmb3JtYXQpCi0gICAgewotICAgICAgY2Fz
ZSBHTF9SR0JBOgotICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKLSAgICAgIGNhc2UgR0xfUkdCOgot
ICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgotICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKLSAg
ICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9PRVM6Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOwotICAg
IH0KLQotICAgIC8vIGludmFsaWQgPHR5cGU+IC0+IHNldHMgSU5WQUxJRF9FTlVNCi0gICAgLy8g
aW52YWxpZCA8Zm9ybWF0Pis8dHlwZT4gY29tYmluYXRpb24gLT4gc2V0cyBJTlZBTElEX09QRVJB
VElPTgotICAgIHN3aXRjaCAodHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6Ci0gICAgICAgIHN3aXRjaCAoZm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBH
TF9SR0JBOgotICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6Ci0gICAgICAgICAgY2FzZSBHTF9S
R0I6Ci0gICAgICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5D
RToKLSAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKLSAgICAgICAgfQotCi0gICAgICBjYXNlIEdMX0ZM
T0FUOgotICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKLSAgICAgICAgc3dpdGNoIChmb3Jt
YXQpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1JHQkE6Ci0gICAgICAgICAgY2FzZSBH
TF9SR0I6Ci0gICAgICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX0xVTUlO
QU5DRToKLSAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKLSAgICAgICAgfQotCi0gICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVf
NV81XzE6Ci0gICAgICAgIHN3aXRjaCAoZm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgY2Fz
ZSBHTF9SR0JBOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFsc2UpOwot
ICAgICAgICB9Ci0KLSAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6Ci0gICAgICAg
IHN3aXRjaCAoZm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9SR0I6Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgot
ICAgICAgICBzd2l0Y2ggKGZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfREVQ
VEhfQ09NUE9ORU5UOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFsc2Up
OwotICAgICAgICB9Ci0KLSAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOgotICAg
ICAgICBzd2l0Y2ggKGZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfREVQVEhf
U1RFTkNJTF9PRVM6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7
Ci0gICAgICAgIH0KLQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfRU5VTSwgZmFsc2UpOwotICAgIH0KLX0KLQotYm9vbCB2YWxpZGF0ZVN1YkltYWdlUGFy
YW1zMkQoYm9vbCBjb21wcmVzc2VkLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpCi17Ci0gICAgaWYgKCF0ZXh0
dXJlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBm
YWxzZSk7Ci0gICAgfQotCi0gICAgaWYgKGNvbXByZXNzZWQgIT0gdGV4dHVyZS0+aXNDb21wcmVz
c2VkKGxldmVsKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgZmFsc2UpOwotICAgIH0KLQotICAgIGlmIChmb3JtYXQgIT0gR0xfTk9ORSkKLSAgICB7
Ci0gICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IGdsOjpDb252ZXJ0U2l6ZWRJbnRlcm5h
bEZvcm1hdChmb3JtYXQsIHR5cGUpOwotICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgIT0gdGV4
dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGlmIChjb21wcmVzc2VkKQotICAgIHsKLSAgICAgICAgaWYgKCh3aWR0aCAlIDQg
IT0gMCAmJiB3aWR0aCAhPSB0ZXh0dXJlLT5nZXRXaWR0aCgwKSkgfHwKLSAgICAgICAgICAgICho
ZWlnaHQgJSA0ICE9IDAgJiYgaGVpZ2h0ICE9IHRleHR1cmUtPmdldEhlaWdodCgwKSkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFs
c2UpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHhvZmZzZXQgKyB3aWR0aCA+IHRleHR1
cmUtPmdldFdpZHRoKGxldmVsKSB8fAotICAgICAgICB5b2Zmc2V0ICsgaGVpZ2h0ID4gdGV4dHVy
ZS0+Z2V0SGVpZ2h0KGxldmVsKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
dmFsaWRhdGVTdWJJbWFnZVBhcmFtc0N1YmUoYm9vbCBjb21wcmVzc2VkLCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6VGV4dHVyZUN1YmVNYXAgKnRleHR1cmUpCi17Ci0gICAgaWYgKCF0ZXh0dXJlKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7Ci0gICAg
fQotCi0gICAgaWYgKGNvbXByZXNzZWQgIT0gdGV4dHVyZS0+aXNDb21wcmVzc2VkKHRhcmdldCwg
bGV2ZWwpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCBmYWxzZSk7Ci0gICAgfQotCi0gICAgaWYgKGZvcm1hdCAhPSBHTF9OT05FKQotICAgIHsKLSAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gZ2w6OkNvbnZlcnRTaXplZEludGVybmFsRm9y
bWF0KGZvcm1hdCwgdHlwZSk7Ci0gICAgICAgIGlmIChpbnRlcm5hbGZvcm1hdCAhPSB0ZXh0dXJl
LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBpZiAoY29tcHJlc3NlZCkKLSAgICB7Ci0gICAgICAgIGlmICgod2lkdGgg
JSA0ICE9IDAgJiYgd2lkdGggIT0gdGV4dHVyZS0+Z2V0V2lkdGgodGFyZ2V0LCAwKSkgfHwKLSAg
ICAgICAgICAgIChoZWlnaHQgJSA0ICE9IDAgJiYgaGVpZ2h0ICE9IHRleHR1cmUtPmdldEhlaWdo
dCh0YXJnZXQsIDApKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoeG9m
ZnNldCArIHdpZHRoID4gdGV4dHVyZS0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkgfHwKLSAgICAg
ICAgeW9mZnNldCArIGhlaWdodCA+IHRleHR1cmUtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBmYWxzZSk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIGNoZWNrIGZvciBjb21iaW5hdGlvbnMg
b2YgZm9ybWF0IGFuZCB0eXBlIHRoYXQgYXJlIHZhbGlkIGZvciBSZWFkUGl4ZWxzCi1ib29sIHZh
bGlkUmVhZEZvcm1hdFR5cGUoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCi17Ci0gICAgc3dp
dGNoIChmb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBHTF9SR0JBOgotICAgICAgICBzd2l0Y2gg
KHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9CR1JBX0VYVDoK
LSAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZf
RVhUOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUOgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWV4dGVybiAi
QyIKLXsKLQotdm9pZCBfX3N0ZGNhbGwgZ2xBY3RpdmVUZXh0dXJlKEdMZW51bSB0ZXh0dXJlKQot
ewotICAgIEVWRU5UKCIoR0xlbnVtIHRleHR1cmUgPSAweCVYKSIsIHRleHR1cmUpOwotCi0gICAg
dHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAodGV4dHVyZSA8IEdMX1RFWFRVUkUwIHx8IHRleHR1cmUgPiBHTF9URVhUVVJFMCArIGNv
bnRleHQtPmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgLSAxKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRBY3RpdmVTYW1wbGVyKHRl
eHR1cmUgLSBHTF9URVhUVVJFMCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xBdHRhY2hTaGFkZXIoR0x1aW50IHByb2dy
YW0sIEdMdWludCBzaGFkZXIpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBH
THVpbnQgc2hhZGVyID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsKLQotICAgIHRyeQotICAgIHsK
LSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
LQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2w6OlByb2dy
YW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotICAgICAg
ICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRl
cik7Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKCFzaGFkZXJPYmplY3QpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmdldFByb2dyYW0oc2hhZGVyKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+
YXR0YWNoU2hhZGVyKHNoYWRlck9iamVjdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3Rk
Y2FsbCBnbEJlZ2luUXVlcnlFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKQotewotICAgIEVW
RU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCAlZCkiLCB0YXJnZXQsIGlkKTsKLQot
ICAgIHRyeQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgIHsKLSAgICAg
ICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQ6IAotICAgICAgICAgIGNhc2UgR0xf
QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6Ci0gICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGRlZmF1bHQ6IAotICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpZCA9PSAwKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIGlkKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbEJpbmRBdHRyaWJMb2NhdGlv
bihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBjb25zdCBHTGNoYXIqIG5hbWUpCi17Ci0g
ICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgaW5kZXggPSAlZCwgY29uc3Qg
R0xjaGFyKiBuYW1lID0gMHglMC44cCkiLCBwcm9ncmFtLCBpbmRleCwgbmFtZSk7Ci0KLSAgICB0
cnkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3Jh
bSk7Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKHN0cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+YmluZEF0dHJpYnV0ZUxvY2F0aW9uKGlu
ZGV4LCBuYW1lKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQot
fQotCi12b2lkIF9fc3RkY2FsbCBnbEJpbmRCdWZmZXIoR0xlbnVtIHRhcmdldCwgR0x1aW50IGJ1
ZmZlcikKLXsKLSAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgYnVmZmVy
ID0gJWQpIiwgdGFyZ2V0LCBidWZmZXIpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlm
IChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVI6Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+YmluZEFycmF5QnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSOgotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmJpbmRFbGVtZW50QXJyYXlCdWZmZXIoYnVmZmVyKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNh
bGwgZ2xCaW5kRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKQot
ewotICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCBmcmFtZWJ1ZmZlciA9
ICVkKSIsIHRhcmdldCwgZnJhbWVidWZmZXIpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBp
ZiAodGFyZ2V0ICE9IEdMX0ZSQU1FQlVGRkVSICYmIHRhcmdldCAhPSBHTF9EUkFXX0ZSQU1FQlVG
RkVSX0FOR0xFICYmIHRhcmdldCAhPSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0
YXJnZXQgPT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSB8fCB0YXJnZXQgPT0gR0xfRlJBTUVC
VUZGRVIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+YmluZFJlYWRG
cmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSB8fCB0YXJn
ZXQgPT0gR0xfRlJBTUVCVUZGRVIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+YmluZERyYXdGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0
ZGNhbGwgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZm
ZXIpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0x1aW50IHJlbmRlcmJ1
ZmZlciA9ICVkKSIsIHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKLQotICAgIHRyeQotICAgIHsKLSAg
ICAgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICB9Ci0KLSAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAg
ICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+YmluZFJlbmRl
cmJ1ZmZlcihyZW5kZXJidWZmZXIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsQmluZFRleHR1cmUoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IHRleHR1cmUpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0x1aW50IHRleHR1cmUgPSAlZCkiLCB0YXJnZXQsIHRleHR1cmUpOwotCi0gICAgdHJ5Ci0gICAg
ewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6VGV4
dHVyZSAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdldFRleHR1cmUodGV4dHVyZSk7Ci0KLSAg
ICAgICAgICAgIGlmICh0ZXh0dXJlT2JqZWN0ICYmIHRleHR1cmVPYmplY3QtPmdldFRhcmdldCgp
ICE9IHRhcmdldCAmJiB0ZXh0dXJlICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVy
ZTJEKHRleHR1cmUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0
dXJlQ3ViZU1hcCh0ZXh0dXJlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5V
TSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwot
ICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xCbGVuZENvbG9yKEdMY2xhbXBmIHJlZCwgR0xj
bGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKQotewotICAgIEVWRU5U
KCIoR0xjbGFtcGYgcmVkID0gJWYsIEdMY2xhbXBmIGdyZWVuID0gJWYsIEdMY2xhbXBmIGJsdWUg
PSAlZiwgR0xjbGFtcGYgYWxwaGEgPSAlZikiLAotICAgICAgICAgIHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQqIGNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+c2V0QmxlbmRDb2xvcihnbDo6Y2xhbXAwMShyZWQp
LCBnbDo6Y2xhbXAwMShncmVlbiksIGdsOjpjbGFtcDAxKGJsdWUpLCBnbDo6Y2xhbXAwMShhbHBo
YSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZv
aWQgX19zdGRjYWxsIGdsQmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSkKLXsKLSAgICBnbEJsZW5k
RXF1YXRpb25TZXBhcmF0ZShtb2RlLCBtb2RlKTsKLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xCbGVu
ZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCi17Ci0g
ICAgRVZFTlQoIihHTGVudW0gbW9kZVJHQiA9IDB4JVgsIEdMZW51bSBtb2RlQWxwaGEgPSAweCVY
KSIsIG1vZGVSR0IsIG1vZGVBbHBoYSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAobW9kZVJHQikKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfRlVOQ19BREQ6Ci0gICAg
ICAgICAgY2FzZSBHTF9GVU5DX1NVQlRSQUNUOgotICAgICAgICAgIGNhc2UgR0xfRlVOQ19SRVZF
UlNFX1NVQlRSQUNUOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3dpdGNoIChtb2RlQWxwaGEpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZV
TkNfQUREOgotICAgICAgICAgIGNhc2UgR0xfRlVOQ19TVUJUUkFDVDoKLSAgICAgICAgICBjYXNl
IEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnNldEJsZW5kRXF1YXRpb24obW9kZVJHQiwgbW9kZUFscGhhKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1
cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBn
bEJsZW5kRnVuYyhHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCi17Ci0gICAgZ2xCbGVu
ZEZ1bmNTZXBhcmF0ZShzZmFjdG9yLCBkZmFjdG9yLCBzZmFjdG9yLCBkZmFjdG9yKTsKLX0KLQot
dm9pZCBfX3N0ZGNhbGwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0g
ZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKLXsKLSAgICBFVkVOVCgi
KEdMZW51bSBzcmNSR0IgPSAweCVYLCBHTGVudW0gZHN0UkdCID0gMHglWCwgR0xlbnVtIHNyY0Fs
cGhhID0gMHglWCwgR0xlbnVtIGRzdEFscGhhID0gMHglWCkiLAotICAgICAgICAgIHNyY1JHQiwg
ZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBz
d2l0Y2ggKHNyY1JHQikKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfWkVSTzoKLSAgICAg
ICAgICBjYXNlIEdMX09ORToKLSAgICAgICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKLSAgICAgICAg
ICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9EU1RfQ09M
T1I6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0NPTE9SOgotICAgICAgICAgIGNh
c2UgR0xfU1JDX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToK
LSAgICAgICAgICBjYXNlIEdMX0RTVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5V
U19EU1RfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKLSAgICAgICAg
ICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX0NP
TlNUQU5UX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhB
OgotICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBX1NBVFVSQVRFOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX0VOVU0pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChkc3RSR0IpCi0gICAgICAg
IHsKLSAgICAgICAgICBjYXNlIEdMX1pFUk86Ci0gICAgICAgICAgY2FzZSBHTF9PTkU6Ci0gICAg
ICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JD
X0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfRFNUX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xf
T05FX01JTlVTX0RTVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKLSAgICAg
ICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9EU1Rf
QUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhBOgotICAgICAgICAg
IGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09O
U1RBTlRfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQToKLSAgICAgICAg
ICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAoc3JjQWxwaGEpCi0gICAgICAgIHsK
LSAgICAgICAgICBjYXNlIEdMX1pFUk86Ci0gICAgICAgICAgY2FzZSBHTF9PTkU6Ci0gICAgICAg
ICAgY2FzZSBHTF9TUkNfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0NP
TE9SOgotICAgICAgICAgIGNhc2UgR0xfRFNUX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfT05F
X01JTlVTX0RTVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKLSAgICAgICAg
ICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9EU1RfQUxQ
SEE6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhBOgotICAgICAgICAgIGNh
c2UgR0xfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RB
TlRfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQToKLSAgICAgICAgICBj
YXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX1NSQ19B
TFBIQV9TQVRVUkFURToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN3aXRjaCAoZHN0QWxwaGEpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1pF
Uk86Ci0gICAgICAgICAgY2FzZSBHTF9PTkU6Ci0gICAgICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6
Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SOgotICAgICAgICAgIGNhc2Ug
R0xfRFNUX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoKLSAg
ICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19T
UkNfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfRFNUX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6
Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAg
Y2FzZSBHTF9DT05TVEFOVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05T
VEFOVF9BTFBIQToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgY29uc3RhbnRDb2xvclVzZWQgPSAoc3JjUkdCID09IEdMX0NPTlNUQU5UX0NPTE9S
IHx8IHNyY1JHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IgfHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkc3RSR0IgPT0gR0xfQ09OU1RBTlRfQ09MT1IgfHwgZHN0
UkdCID09IEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUik7Ci0KLSAgICAgICAgYm9vbCBjb25z
dGFudEFscGhhVXNlZCA9IChzcmNSR0IgPT0gR0xfQ09OU1RBTlRfQUxQSEEgfHwgc3JjUkdCID09
IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBkc3RSR0IgPT0gR0xfT05F
X01JTlVTX0NPTlNUQU5UX0FMUEhBKTsKLQotICAgICAgICBpZiAoY29uc3RhbnRDb2xvclVzZWQg
JiYgY29uc3RhbnRBbHBoYVVzZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiU2ltdWx0
YW5lb3VzIHVzZSBvZiBHTF9DT05TVEFOVF9BTFBIQS9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQ
SEEgYW5kIEdMX0NPTlNUQU5UX0NPTE9SL0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiBpbnZh
bGlkIHVuZGVyIFdlYkdMIik7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+c2V0QmxlbmRGYWN0b3JzKHNyY1JHQiwgZHN0UkdCLCBz
cmNBbHBoYSwgZHN0QWxwaGEpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
LSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsQnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0LCBH
THNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSwgR0xlbnVtIHVzYWdlKQotewotICAg
IEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMc2l6ZWlwdHIgc2l6ZSA9ICVkLCBjb25z
dCBHTHZvaWQqIGRhdGEgPSAweCUwLjhwLCBHTGVudW0gdXNhZ2UgPSAlZCkiLAotICAgICAgICAg
IHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBp
ZiAoc2l6ZSA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAodXNhZ2UpCi0gICAgICAg
IHsKLSAgICAgICAgICBjYXNlIEdMX1NUUkVBTV9EUkFXOgotICAgICAgICAgIGNhc2UgR0xfU1RB
VElDX0RSQVc6Ci0gICAgICAgICAgY2FzZSBHTF9EWU5BTUlDX0RSQVc6Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfRU5VTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBnbDo6QnVmZmVyICpidWZmZXI7Ci0KLSAgICAgICAgICAgIHN3aXRj
aCAodGFyZ2V0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX0FSUkFZX0JV
RkZFUjoKLSAgICAgICAgICAgICAgICBidWZmZXIgPSBjb250ZXh0LT5nZXRBcnJheUJ1ZmZlcigp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSOgotICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldEVsZW1l
bnRBcnJheUJ1ZmZlcigpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBidWZmZXItPmJ1ZmZlckRhdGEoZGF0YSwgc2l6ZSwg
dXNhZ2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0K
LXZvaWQgX19zdGRjYWxsIGdsQnVmZmVyU3ViRGF0YShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBv
ZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKQotewotICAgIEVWRU5U
KCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50cHRyIG9mZnNldCA9ICVkLCBHTHNpemVpcHRy
IHNpemUgPSAlZCwgY29uc3QgR0x2b2lkKiBkYXRhID0gMHglMC44cCkiLAotICAgICAgICAgIHRh
cmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYg
KHNpemUgPCAwIHx8IG9mZnNldCA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkYXRhID09
IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAg
ICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1
ZmZlcjsKLQotICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVSOgotICAgICAgICAgICAgICAgIGJ1ZmZlciA9
IGNvbnRleHQtPmdldEFycmF5QnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6Ci0gICAgICAgICAgICAgICAg
YnVmZmVyID0gY29udGV4dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
ICghYnVmZmVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgo
c2l6ZV90KXNpemUgKyBvZmZzZXQgPiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGJ1ZmZlci0+YnVmZmVyU3ViRGF0YShkYXRhLCBzaXplLCBvZmZz
ZXQpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLUdM
ZW51bSBfX3N0ZGNhbGwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMZW51bSB0YXJnZXQpCi17
Ci0gICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCkiLCB0YXJnZXQpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBpZiAodGFyZ2V0ICE9IEdMX0ZSQU1FQlVGRkVSICYmIHRhcmdldCAh
PSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFICYmIHRhcmdldCAhPSBHTF9SRUFEX0ZSQU1FQlVG
RkVSX0FOR0xFKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOwotICAg
ICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0UmVhZEZy
YW1lYnVmZmVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXREcmF3RnJhbWVi
dWZmZXIoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lYnVmZmVy
LT5jb21wbGV0ZW5lc3MoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgMCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsQ2xlYXIoR0xi
aXRmaWVsZCBtYXNrKQotewotICAgIEVWRU5UKCIoR0xiaXRmaWVsZCBtYXNrID0gJVgpIiwgbWFz
ayk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmNsZWFyKG1hc2spOwotICAgICAgICB9Ci0gICAgfQotICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsQ2xlYXJDb2xvcihH
TGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBo
YSkKLXsKLSAgICBFVkVOVCgiKEdMY2xhbXBmIHJlZCA9ICVmLCBHTGNsYW1wZiBncmVlbiA9ICVm
LCBHTGNsYW1wZiBibHVlID0gJWYsIEdMY2xhbXBmIGFscGhhID0gJWYpIiwKLSAgICAgICAgICBy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYg
KGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldENsZWFyQ29sb3Io
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsQ2xlYXJEZXB0aGYoR0xjbGFtcGYg
ZGVwdGgpCi17Ci0gICAgRVZFTlQoIihHTGNsYW1wZiBkZXB0aCA9ICVmKSIsIGRlcHRoKTsKLQot
ICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+c2V0Q2xlYXJEZXB0aChkZXB0aCk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xDbGVhclN0ZW5j
aWwoR0xpbnQgcykKLXsKLSAgICBFVkVOVCgiKEdMaW50IHMgPSAlZCkiLCBzKTsKLQotICAgIHRy
eQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+c2V0Q2xlYXJTdGVuY2lsKHMpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsQ29sb3JNYXNrKEdMYm9vbGVh
biByZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSkK
LXsKLSAgICBFVkVOVCgiKEdMYm9vbGVhbiByZWQgPSAlZCwgR0xib29sZWFuIGdyZWVuID0gJWQs
IEdMYm9vbGVhbiBibHVlID0gJWQsIEdMYm9vbGVhbiBhbHBoYSA9ICVkKSIsCi0gICAgICAgICAg
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlm
IChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRDb2xvck1hc2so
cmVkID09IEdMX1RSVUUsIGdyZWVuID09IEdMX1RSVUUsIGJsdWUgPT0gR0xfVFJVRSwgYWxwaGEg
PT0gR0xfVFJVRSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0K
LX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xDb21waWxlU2hhZGVyKEdMdWludCBzaGFkZXIpCi17Ci0g
ICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKLQotICAgIHRyeQotICAg
IHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2w6OlNo
YWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7Ci0KLSAgICAg
ICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGlmIChjb250ZXh0LT5nZXRQcm9ncmFtKHNoYWRlcikpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzaGFkZXJPYmplY3Qt
PmNvbXBpbGUoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQot
fQotCi12b2lkIF9fc3RkY2FsbCBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
Ym9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKQotewotICAgIEVW
RU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCA9IDB4JVgsIEdMc2l6ZWkgd2lkdGggPSAlZCwgIiAKLSAgICAgICAgICAiR0xz
aXplaSBoZWlnaHQgPSAlZCwgR0xpbnQgYm9yZGVyID0gJWQsIEdMc2l6ZWkgaW1hZ2VTaXplID0g
JWQsIGNvbnN0IEdMdm9pZCogZGF0YSA9IDB4JTAuOHApIiwKLSAgICAgICAgICB0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRh
dGEpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoIXZhbGlkSW1hZ2VTaXplKGxldmVs
LCB3aWR0aCwgaGVpZ2h0KSB8fCBib3JkZXIgIT0gMCB8fCBpbWFnZVNpemUgPCAwKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgotICAgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9BTkdMRToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChib3JkZXIgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBp
ZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGxldmVsID4gY29udGV4dC0+
Z2V0TWF4aW11bVRleHR1cmVMZXZlbCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV8yRDoKLSAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0
TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgaGVpZ2h0ID4gKGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2
ZWwpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgotICAg
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKLSAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKLSAgICAgICAgICAgICAgICBpZiAod2lk
dGggIT0gaGVpZ2h0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGlmICh3aWR0aCA+IChjb250ZXh0LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1l
bnNpb24oKSA+PiBsZXZlbCkgfHwKLSAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gKGNvbnRl
eHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURf
RU5VTSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3Jt
YXQpIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
OgotICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgot
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBm
b3JtYXQgc3dpdGNoIGZhaWxlZAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FO
R0xFOgotICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMo
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRl
cm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0FOR0xFOgotICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQ1VGV4
dHVyZXMoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0J3MgYXMgdGhvdWdoIHRo
ZSBpbnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGltYWdlU2l6ZSAhPSBnbDo6Q29tcHV0
ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIGludGVybmFsZm9ybWF0KSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0g
Y29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2Uo
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBpbWFnZVNpemUsIGRhdGEpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVD
dWJlTWFwKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5p
c0ltbXV0YWJsZSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgotICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6Ci0gICAgICAgICAg
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKLSAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6Ci0gICAgICAgICAgICAg
ICAgICAgIHRleHR1cmUtPnNldENvbXByZXNzZWRJbWFnZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgaW1hZ2VTaXplLCBkYXRhKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgfQotICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsQ29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdl
U2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKQotewotICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9
IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNl
dCA9ICVkLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQg
PSAlZCwgR0xlbnVtIGZvcm1hdCA9IDB4JVgsICIKLSAgICAgICAgICAiR0xzaXplaSBpbWFnZVNp
emUgPSAlZCwgY29uc3QgR0x2b2lkKiBkYXRhID0gMHglMC44cCkiLAotICAgICAgICAgIHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VT
aXplLCBkYXRhKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5h
bFRleHR1cmVUYXJnZXQodGFyZ2V0KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoeG9mZnNldCA8
IDAgfHwgeW9mZnNldCA8IDAgfHwgIXZhbGlkSW1hZ2VTaXplKGxldmVsLCB3aWR0aCwgaGVpZ2h0
KSB8fCBpbWFnZVNpemUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkK
LSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VY
VDoKLSAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKLSAgICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfRU5VTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWln
aHQgPT0gMCB8fCBkYXRhID09IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChsZXZlbCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlTGV2ZWwoKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8g
aW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwgZm9ybWF0IHN3aXRjaCBm
YWlsZWQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwgZm9ybWF0IHN3
aXRjaCBmYWlsZWQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwgZm9y
bWF0IHN3aXRjaCBmYWlsZWQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmIChpbWFnZVNpemUgIT0gZ2w6OkNvbXB1dGVDb21wcmVzc2VkU2l6
ZSh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKHhvZmZzZXQgJSA0ICE9IDAgfHwgeW9mZnNldCAlIDQgIT0gMCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OyAvLyB3ZSB3YWl0IHRvIGNoZWNrIHRoZSBvZmZzZXRzIHVudGlsIHRoaXMgcG9pbnQsIGJlY2F1
c2UgdGhlIG11bHRpcGxlLW9mLWZvdXIgcmVzdHJpY3Rpb24KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb2VzIG5vdCBleGlzdCB1bmxlc3Mg
RFhUIHRleHR1cmVzIGFyZSBzdXBwb3J0ZWQuCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlU3ViSW1hZ2VQYXJhbXMyRCh0cnVlLCB3aWR0aCwg
aGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBsZXZlbCwgZm9ybWF0LCBHTF9OT05FLCB0ZXh0dXJl
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnN1Yklt
YWdlQ29tcHJlc3NlZChsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCBpbWFnZVNpemUsIGRhdGEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgaWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXh0
dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKLSAgICAgICAgICAgICAgICBpZiAo
dmFsaWRhdGVTdWJJbWFnZVBhcmFtc0N1YmUodHJ1ZSwgd2lkdGgsIGhlaWdodCwgeG9mZnNldCwg
eW9mZnNldCwgdGFyZ2V0LCBsZXZlbCwgZm9ybWF0LCBHTF9OT05FLCB0ZXh0dXJlKSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnN1YkltYWdlQ29tcHJl
c3NlZCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIGltYWdlU2l6ZSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xDb3B5VGV4SW1hZ2UyRChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyKQotewotICAgIEVW
RU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCA9IDB4JVgsICIKLSAgICAgICAgICAiR0xpbnQgeCA9ICVkLCBHTGludCB5ID0g
JWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xpbnQgYm9yZGVy
ID0gJWQpIiwKLSAgICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKCF2
YWxpZEltYWdlU2l6ZShsZXZlbCwgd2lkdGgsIGhlaWdodCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChib3JkZXIgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKGxldmVsID4gY29udGV4dC0+Z2V0TWF4aW11bVRleHR1
cmVMZXZlbCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoICh0
YXJnZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoK
LSAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVE
aW1lbnNpb24oKSA+PiBsZXZlbCkgfHwKLSAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gKGNv
bnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgotICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKLSAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWjoKLSAgICAgICAgICAgICAgICBpZiAod2lkdGggIT0gaGVpZ2h0KQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh3
aWR0aCA+IChjb250ZXh0LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZl
bCkgfHwKLSAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gKGNvbnRleHQtPmdldE1heGltdW1D
dWJlVGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250
ZXh0LT5nZXRSZWFkRnJhbWVidWZmZXIoKTsKLQotICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVy
LT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0
UmVhZEZyYW1lYnVmZmVySGFuZGxlKCkgIT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZm
ZXIoKS0+Z2V0U2FtcGxlcygpICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqc291cmNlID0gZnJhbWVidWZmZXItPmdldENvbG9y
YnVmZmVyKCk7Ci0gICAgICAgICAgICBHTGVudW0gY29sb3JidWZmZXJGb3JtYXQgPSBzb3VyY2Ut
PmdldEludGVybmFsRm9ybWF0KCk7Ci0KLSAgICAgICAgICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0
XSB0YWJsZSAzLjkKLSAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQUxQSEE6Ci0gICAgICAgICAgICAgICAgaWYg
KGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0FMUEhBOF9FWFQgJiYKLSAgICAgICAgICAgICAgICAg
ICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKLSAgICAgICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgICAgICBj
b2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0U6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdCOgotICAgICAgICAgICAg
ICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAgICAg
ICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYKLSAgICAgICAgICAgICAg
ICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKLSAgICAgICAgICAgICAgICAg
ICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgICAg
ICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKLSAg
ICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKLSAgICAg
ICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAg
ICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMpCi0gICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAg
ICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgotICAgICAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDNUZXh0dXJlcygpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURf
RU5VTSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6Ci0gICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgotICAgICAgICAgICAgICBjYXNlIEdMX0RF
UFRIX0NPTVBPTkVOVDE2OgotICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMy
X09FUzoKLSAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKLSAgICAgICAg
ICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKLSAgICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5zdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSkKLSAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X0VOVU0pOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUyRCAqdGV4dHVyZSA9IGNvbnRleHQtPmdl
dFRleHR1cmUyRCgpOwotCi0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAodGV4dHVy
ZS0+aXNJbW11dGFibGUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgdGV4dHVyZS0+Y29weUltYWdlKGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZnJhbWVidWZmZXIpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAoZ2w6OklzQ3ViZW1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleHR1cmUg
PSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOwotCi0gICAgICAgICAgICAgICAgaWYgKCF0
ZXh0dXJlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdGV4dHVyZS0+Y29weUltYWdlKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmcmFtZWJ1
ZmZlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0
ZGNhbGwgZ2xDb3B5VGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gJWQs
ICIKLSAgICAgICAgICAiR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGgg
PSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLAotICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgdHJ5Ci0gICAgewot
ICAgICAgICBpZiAoIWdsOjpJc0ludGVybmFsVGV4dHVyZVRhcmdldCh0YXJnZXQpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChsZXZlbCA8IDAgfHwgeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDAg
fHwgd2lkdGggPCAwIHx8IGhlaWdodCA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzdGQ6
Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhvZmZzZXQgPCB3aWR0aCB8fCBzdGQ6
Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHlvZmZzZXQgPCBoZWlnaHQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250ZXh0LT5nZXRNYXhpbXVt
VGV4dHVyZUxldmVsKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBnbDo6
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVyKCk7
Ci0KLSAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkgIT0gR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgpICE9
IDAgJiYgZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKCktPmdldFNhbXBsZXMoKSAhPSAwKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIg
KnNvdXJjZSA9IGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigpOwotICAgICAgICAgICAgR0xl
bnVtIGNvbG9yYnVmZmVyRm9ybWF0ID0gc291cmNlLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwotICAg
ICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBOVUxMOwotICAgICAgICAgICAgR0xlbnVt
IHRleHR1cmVGb3JtYXQgPSBHTF9SR0JBOwotCi0gICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdM
X1RFWFRVUkVfMkQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUy
RCAqdGV4MmQgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKLQotICAgICAgICAgICAgICAgIGlm
ICghdmFsaWRhdGVTdWJJbWFnZVBhcmFtczJEKGZhbHNlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0
LCB5b2Zmc2V0LCBsZXZlbCwgR0xfTk9ORSwgR0xfTk9ORSwgdGV4MmQpKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBlcnJvciBhbHJlYWR5IHJlZ2lz
dGVyZWQgYnkgdmFsaWRhdGVTdWJJbWFnZVBhcmFtcwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB0ZXh0dXJlRm9ybWF0ID0gZ2w6OkV4dHJhY3RGb3JtYXQodGV4MmQtPmdldElu
dGVybmFsRm9ybWF0KGxldmVsKSk7Ci0gICAgICAgICAgICAgICAgdGV4dHVyZSA9IHRleDJkOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoZ2w6OklzQ3ViZW1hcFRleHR1cmVU
YXJnZXQodGFyZ2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6VGV4dHVy
ZUN1YmVNYXAgKnRleGN1YmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOwotCi0gICAg
ICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZVN1YkltYWdlUGFyYW1zQ3ViZShmYWxzZSwgd2lkdGgs
IGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9ORSwgR0xfTk9O
RSwgdGV4Y3ViZSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm47IC8vIGVycm9yIGFscmVhZHkgcmVnaXN0ZXJlZCBieSB2YWxpZGF0ZVN1YkltYWdlUGFyYW1z
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleHR1cmVGb3JtYXQgPSBnbDo6
RXh0cmFjdEZvcm1hdCh0ZXhjdWJlLT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSk7
Ci0gICAgICAgICAgICAgICAgdGV4dHVyZSA9IHRleGN1YmU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAgICAgICAgICAgIC8vIFtPcGVuR0wgRVMg
Mi4wLjI0XSB0YWJsZSAzLjkKLSAgICAgICAgICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgICAgICAg
ICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQUxQSEE4X0VYVCAmJgotICAgICAgICAgICAg
ICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgotICAgICAgICAgICAgICAg
ICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCi0gICAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRToKLSAgICAgICAgICAgICAgY2FzZSBHTF9SR0I6Ci0gICAgICAg
ICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJgotICAgICAgICAg
ICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJgotICAgICAgICAg
ICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgotICAgICAgICAgICAg
ICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCi0gICAgICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICAgICAgICAgICAgY2FzZSBHTF9SR0JB
OgotICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgot
ICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCi0g
ICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKLSAgICAg
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgotICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRI
X1NURU5DSUxfT0VTOgotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgdGV4dHVyZS0+Y29weVN1YkltYWdlKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIGZyYW1lYnVmZmVyKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLUdMdWludCBfX3N0ZGNhbGwgZ2xDcmVhdGVQ
cm9ncmFtKHZvaWQpCi17Ci0gICAgRVZFTlQoIigpIik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAg
ICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LT5jcmVhdGVQcm9ncmFtKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlksIDAp
OwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi1HTHVpbnQgX19zdGRjYWxsIGdsQ3JlYXRl
U2hhZGVyKEdMZW51bSB0eXBlKQotewotICAgIEVWRU5UKCIoR0xlbnVtIHR5cGUgPSAweCVYKSIs
IHR5cGUpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgotICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRF
WF9TSEFERVI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmNyZWF0ZVNoYWRlcih0
eXBlKTsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQg
X19zdGRjYWxsIGdsQ3VsbEZhY2UoR0xlbnVtIG1vZGUpCi17Ci0gICAgRVZFTlQoIihHTGVudW0g
bW9kZSA9IDB4JVgpIiwgbW9kZSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAo
bW9kZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfRlJPTlQ6Ci0gICAgICAgICAgY2Fz
ZSBHTF9CQUNLOgotICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6Ci0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKLQotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0Q3VsbE1vZGUobW9kZSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0p
OwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQg
X19zdGRjYWxsIGdsRGVsZXRlQnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCogYnVmZmVy
cykKLXsKLSAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIGJ1ZmZlcnMg
PSAweCUwLjhwKSIsIG4sIGJ1ZmZlcnMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAo
biA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUJ1ZmZlcihidWZmZXJzW2ldKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12
b2lkIF9fc3RkY2FsbCBnbERlbGV0ZUZlbmNlc05WKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBm
ZW5jZXMpCi17Ci0gICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50KiBmZW5j
ZXMgPSAweCUwLjhwKSIsIG4sIGZlbmNlcyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlm
IChuIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlRmVuY2UoZmVuY2VzW2ldKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12
b2lkIF9fc3RkY2FsbCBnbERlbGV0ZUZyYW1lYnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCogZnJhbWVidWZmZXJzKQotewotICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdM
dWludCogZnJhbWVidWZmZXJzID0gMHglMC44cCkiLCBuLCBmcmFtZWJ1ZmZlcnMpOwotCi0gICAg
dHJ5Ci0gICAgewotICAgICAgICBpZiAobiA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYg
KGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg
aSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlcnNbaV0g
IT0gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmRl
bGV0ZUZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyc1tpXSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19
Ci0KLXZvaWQgX19zdGRjYWxsIGdsRGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKLXsKLSAg
ICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7Ci0KLSAgICB0cnkKLSAg
ICB7Ci0gICAgICAgIGlmIChwcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZihjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBjb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsRGVsZXRlUXVl
cmllc0VYVChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKQotewotICAgIEVWRU5UKCIoR0xz
aXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0gMHglMC44cCkiLCBuLCBpZHMpOwotCi0g
ICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAobiA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAg
aWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bjsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVF1
ZXJ5KGlkc1tpXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVSZW5kZXJidWZmZXJz
KEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiByZW5kZXJidWZmZXJzKQotewotICAgIEVWRU5UKCIo
R0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogcmVuZGVyYnVmZmVycyA9IDB4JTAuOHApIiwg
biwgcmVuZGVyYnVmZmVycyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmIChuIDwgMCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcnNbaV0pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19
Ci0KLXZvaWQgX19zdGRjYWxsIGdsRGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCi17Ci0gICAg
RVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKLQotICAgIHRyeQotICAgIHsK
LSAgICAgICAgaWYgKHNoYWRlciA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmKGNvbnRleHQtPmdldFByb2dyYW0oc2hhZGVyKSkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVNoYWRlcihzaGFkZXIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsRGVsZXRlVGV4dHVyZXMoR0xz
aXplaSBuLCBjb25zdCBHTHVpbnQqIHRleHR1cmVzKQotewotICAgIEVWRU5UKCIoR0xzaXplaSBu
ID0gJWQsIGNvbnN0IEdMdWludCogdGV4dHVyZXMgPSAweCUwLjhwKSIsIG4sIHRleHR1cmVzKTsK
LQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKG4gPCAwKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAg
ICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG47IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAodGV4dHVyZXNb
aV0gIT0gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRlbGV0ZVRleHR1cmUodGV4dHVyZXNbaV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12
b2lkIF9fc3RkY2FsbCBnbERlcHRoRnVuYyhHTGVudW0gZnVuYykKLXsKLSAgICBFVkVOVCgiKEdM
ZW51bSBmdW5jID0gMHglWCkiLCBmdW5jKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgc3dp
dGNoIChmdW5jKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9ORVZFUjoKLSAgICAgICAg
ICBjYXNlIEdMX0FMV0FZUzoKLSAgICAgICAgICBjYXNlIEdMX0xFU1M6Ci0gICAgICAgICAgY2Fz
ZSBHTF9MRVFVQUw6Ci0gICAgICAgICAgY2FzZSBHTF9FUVVBTDoKLSAgICAgICAgICBjYXNlIEdM
X0dSRUFURVI6Ci0gICAgICAgICAgY2FzZSBHTF9HRVFVQUw6Ci0gICAgICAgICAgY2FzZSBHTF9O
T1RFUVVBTDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAg
ICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldERlcHRo
RnVuYyhmdW5jKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQot
fQotCi12b2lkIF9fc3RkY2FsbCBnbERlcHRoTWFzayhHTGJvb2xlYW4gZmxhZykKLXsKLSAgICBF
VkVOVCgiKEdMYm9vbGVhbiBmbGFnID0gJWQpIiwgZmxhZyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0g
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0K
LSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNl
dERlcHRoTWFzayhmbGFnICE9IEdMX0ZBTFNFKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbERlcHRoUmFuZ2VmKEdMY2xh
bXBmIHpOZWFyLCBHTGNsYW1wZiB6RmFyKQotewotICAgIEVWRU5UKCIoR0xjbGFtcGYgek5lYXIg
PSAlZiwgR0xjbGFtcGYgekZhciA9ICVmKSIsIHpOZWFyLCB6RmFyKTsKLQotICAgIHRyeQotICAg
IHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+c2V0RGVwdGhSYW5nZSh6TmVhciwgekZhcik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xEZXRhY2hTaGFkZXIoR0x1
aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgcHJvZ3Jh
bSA9ICVkLCBHTHVpbnQgc2hhZGVyID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsKLQotICAgIHRy
eQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotCi0gICAgICAgICAg
ICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3Jh
bSk7Ci0gICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRT
aGFkZXIoc2hhZGVyKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2Jq
ZWN0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsOjpTaGFkZXIgKnNoYWRlckJ5
UHJvZ3JhbUhhbmRsZTsKLSAgICAgICAgICAgICAgICBzaGFkZXJCeVByb2dyYW1IYW5kbGUgPSBj
b250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJC
eVByb2dyYW1IYW5kbGUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbUJ5U2hhZGVySGFuZGxlID0g
Y29udGV4dC0+Z2V0UHJvZ3JhbShzaGFkZXIpOwotICAgICAgICAgICAgICAgIGlmICghcHJvZ3Jh
bUJ5U2hhZGVySGFuZGxlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5kZXRhY2hTaGFk
ZXIoc2hhZGVyT2JqZWN0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsRGlz
YWJsZShHTGVudW0gY2FwKQotewotICAgIEVWRU5UKCIoR0xlbnVtIGNhcCA9IDB4JVgpIiwgY2Fw
KTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewot
ICAgICAgICAgICAgc3dpdGNoIChjYXApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNh
c2UgR0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRDdWxsRmFjZShmYWxz
ZSk7ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9QT0xZR09OX09G
RlNFVF9GSUxMOiAgICAgIGNvbnRleHQtPnNldFBvbHlnb25PZmZzZXRGaWxsKGZhbHNlKTsgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRTog
Y29udGV4dC0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKGZhbHNlKTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICBjb250ZXh0LT5zZXRTYW1w
bGVDb3ZlcmFnZShmYWxzZSk7ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9T
Q0lTU09SX1RFU1Q6ICAgICAgICAgICAgIGNvbnRleHQtPnNldFNjaXNzb3JUZXN0KGZhbHNlKTsg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDogICAg
ICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbFRlc3QoZmFsc2UpOyAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfVEVTVDogICAgICAgICAgICAgICBjb250ZXh0
LT5zZXREZXB0aFRlc3QoZmFsc2UpOyAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9CTEVORDogICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEJsZW5kKGZhbHNl
KTsgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0RJVEhFUjog
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RGl0aGVyKGZhbHNlKTsgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQotewotICAgIEVWRU5UKCIoR0x1aW50IGlu
ZGV4ID0gJWQpIiwgaW5kZXgpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoaW5kZXgg
Pj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29u
dGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2V0RW5hYmxlVmVydGV4QXR0
cmliQXJyYXkoaW5kZXgsIGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbERyYXdBcnJheXMoR0xlbnVtIG1vZGUs
IEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KQotewotICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUg
PSAweCVYLCBHTGludCBmaXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQpIiwgbW9kZSwgZmly
c3QsIGNvdW50KTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKGNvdW50IDwgMCB8fCBm
aXJzdCA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50LCAwKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9f
c3RkY2FsbCBnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHTGVudW0gbW9kZSwgR0xpbnQgZmly
c3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KQotewotICAgIEVWRU5UKCIoR0xl
bnVtIG1vZGUgPSAweCVYLCBHTGludCBmaXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdM
c2l6ZWkgcHJpbWNvdW50ID0gJWQpIiwgbW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwot
Ci0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoY291bnQgPCAwIHx8IGZpcnN0IDwgMCB8fCBw
cmltY291bnQgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJpbWNvdW50ID4gMCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKLQotICAgICAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQsIHBy
aW1jb3VudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xEcmF3RWxlbWVudHMoR0xlbnVtIG1v
ZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIGluZGljZXMpCi17
Ci0gICAgRVZFTlQoIihHTGVudW0gbW9kZSA9IDB4JVgsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xl
bnVtIHR5cGUgPSAweCVYLCBjb25zdCBHTHZvaWQqIGluZGljZXMgPSAweCUwLjhwKSIsCi0gICAg
ICAgICAgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAg
ICAgICBpZiAoY291bnQgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9TSE9SVDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0
czMyYml0SW5kaWNlcygpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7ICAgIAotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUs
IGluZGljZXMsIDApOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9
Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0xlbnVt
IG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMs
IEdMc2l6ZWkgcHJpbWNvdW50KQotewotICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gMHglWCwgY29uc3QgR0x2b2lkKiBpbmRp
Y2VzID0gMHglMC44cCwgR0xzaXplaSBwcmltY291bnQgPSAlZCkiLAotICAgICAgICAgIG1vZGUs
IGNvdW50LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQpOwotCi0gICAgdHJ5Ci0gICAgewotICAg
ICAgICBpZiAoY291bnQgPCAwIHx8IHByaW1jb3VudCA8IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChwcmltY291bnQgPiAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgICAgICBpZiAoY29u
dGV4dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgot
ICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0czMyYml0SW5kaWNlcygpKQot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsgICAgCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHMo
bW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0
ZGNhbGwgZ2xFbmFibGUoR0xlbnVtIGNhcCkKLXsKLSAgICBFVkVOVCgiKEdMZW51bSBjYXAgPSAw
eCVYKSIsIGNhcCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoY2FwKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBjYXNlIEdMX0NVTExfRkFDRTogICAgICAgICAgICAgICAgY29udGV4dC0+c2V0Q3Vs
bEZhY2UodHJ1ZSk7ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9Q
T0xZR09OX09GRlNFVF9GSUxMOiAgICAgIGNvbnRleHQtPnNldFBvbHlnb25PZmZzZXRGaWxsKHRy
dWUpOyAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NP
VkVSQUdFOiBjb250ZXh0LT5zZXRTYW1wbGVBbHBoYVRvQ292ZXJhZ2UodHJ1ZSk7IGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRTogICAgICAgICAgY29udGV4dC0+
c2V0U2FtcGxlQ292ZXJhZ2UodHJ1ZSk7ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9TQ0lTU09SX1RFU1Q6ICAgICAgICAgICAgIGNvbnRleHQtPnNldFNjaXNzb3JUZXN0KHRy
dWUpOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9URVNU
OiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsVGVzdCh0cnVlKTsgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAgICAgICAgY29u
dGV4dC0+c2V0RGVwdGhUZXN0KHRydWUpOyAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgY2FzZSBHTF9CTEVORDogICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEJsZW5kKHRy
dWUpOyAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRElUSEVS
OiAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXREaXRoZXIodHJ1ZSk7ICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsRW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQotewotICAgIEVWRU5UKCIoR0x1aW50IGlu
ZGV4ID0gJWQpIiwgaW5kZXgpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoaW5kZXgg
Pj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29u
dGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2V0RW5hYmxlVmVydGV4QXR0
cmliQXJyYXkoaW5kZXgsIHRydWUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsRW5kUXVlcnlFWFQoR0xlbnVtIHRhcmdl
dCkKLXsKLSAgICBFVkVOVCgiR0xlbnVtIHRhcmdldCA9IDB4JVgpIiwgdGFyZ2V0KTsKLQotICAg
IHRyeQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgIHsKLSAgICAgICAg
ICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQ6IAotICAgICAgICAgIGNhc2UgR0xfQU5Z
X1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6Ci0gICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgIGRlZmF1bHQ6IAotICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xGaW5pc2hG
ZW5jZU5WKEdMdWludCBmZW5jZSkKLXsKLSAgICBFVkVOVCgiKEdMdWludCBmZW5jZSA9ICVkKSIs
IGZlbmNlKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZ2w6OkZlbmNlKiBmZW5jZU9iamVjdCA9IGNvbnRleHQtPmdldEZl
bmNlKGZlbmNlKTsKLQotICAgICAgICAgICAgaWYgKGZlbmNlT2JqZWN0ID09IE5VTEwpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmVuY2VPYmplY3QtPmZpbmlzaEZl
bmNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQot
dm9pZCBfX3N0ZGNhbGwgZ2xGaW5pc2godm9pZCkKLXsKLSAgICBFVkVOVCgiKCkiKTsKLQotICAg
IHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+c3luYyh0cnVlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbEZsdXNoKHZvaWQpCi17Ci0gICAgRVZF
TlQoIigpIik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN5bmMoZmFsc2UpOwotICAgICAgICB9Ci0gICAg
fQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51
bSByZW5kZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCi17Ci0gICAgRVZFTlQo
IihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIGF0dGFjaG1lbnQgPSAweCVYLCBHTGVudW0g
cmVuZGVyYnVmZmVydGFyZ2V0ID0gMHglWCwgIgotICAgICAgICAgICJHTHVpbnQgcmVuZGVyYnVm
ZmVyID0gJWQpIiwgdGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRl
cmJ1ZmZlcik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmICgodGFyZ2V0ICE9IEdMX0ZS
QU1FQlVGRkVSICYmIHRhcmdldCAhPSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFICYmIHRhcmdl
dCAhPSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQotICAgICAgICAgICAgfHwgKHJlbmRlcmJ1
ZmZlcnRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIgJiYgcmVuZGVyYnVmZmVyICE9IDApKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOwotICAgICAgICAgICAgR0x1aW50IGZy
YW1lYnVmZmVySGFuZGxlID0gMDsKLSAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfUkVBRF9G
UkFNRUJVRkZFUl9BTkdMRSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmcmFtZWJ1
ZmZlciA9IGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgICAgICAgICAgICAgIGZy
YW1lYnVmZmVySGFuZGxlID0gY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVySGFuZGxlKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICAg
ICAgICAgICAgICBmcmFtZWJ1ZmZlckhhbmRsZSA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZl
ckhhbmRsZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWZyYW1lYnVmZmVy
IHx8IChmcmFtZWJ1ZmZlckhhbmRsZSA9PSAwICYmIHJlbmRlcmJ1ZmZlciAhPSAwKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQ09MT1JfQVRUQUNITUVOVDA6Ci0g
ICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldENvbG9yYnVmZmVyKEdMX1JFTkRFUkJVRkZF
UiwgcmVuZGVyYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5z
ZXREZXB0aGJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgot
ICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5zZXRTdGVuY2lsYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgcmVuZGVyYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0g
ICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVy
ZSwgR0xpbnQgbGV2ZWwpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xl
bnVtIGF0dGFjaG1lbnQgPSAweCVYLCBHTGVudW0gdGV4dGFyZ2V0ID0gMHglWCwgIgotICAgICAg
ICAgICJHTHVpbnQgdGV4dHVyZSA9ICVkLCBHTGludCBsZXZlbCA9ICVkKSIsIHRhcmdldCwgYXR0
YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0g
ICAgICAgIGlmICh0YXJnZXQgIT0gR0xfRlJBTUVCVUZGRVIgJiYgdGFyZ2V0ICE9IEdMX0RSQVdf
RlJBTUVCVUZGRVJfQU5HTEUgJiYgdGFyZ2V0ICE9IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KQotICAgICAgICB7Ci0gICAg
ICAgICAgY2FzZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMDoKLSAgICAgICAgICBjYXNlIEdMX0RFUFRI
X0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZSA9PSAwKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHRleHRhcmdldCA9IEdMX05PTkU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2w6OlRleHR1
cmUgKnRleCA9IGNvbnRleHQtPmdldFRleHR1cmUodGV4dHVyZSk7Ci0KLSAgICAgICAgICAgICAg
ICBpZiAodGV4ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4dGFyZ2V0KQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleC0+Z2V0VGFyZ2V0KCkgIT0gR0xf
VEVYVFVSRV8yRCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUyRCAq
dGV4MmQgPSBzdGF0aWNfY2FzdDxnbDo6VGV4dHVyZTJEICo+KHRleCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGV4MmQtPmlzQ29tcHJlc3NlZCgwKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6Ci0gICAgICAgICAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKLSAgICAgICAgICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgotICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6Ci0gICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKLSAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOgotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4LT5nZXRUYXJnZXQoKSAhPSBHTF9U
RVhUVVJFX0NVQkVfTUFQKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVy
ZUN1YmVNYXAgKnRleGN1YmUgPSBzdGF0aWNfY2FzdDxnbDo6VGV4dHVyZUN1YmVNYXAgKj4odGV4
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXhjdWJlLT5pc0NvbXByZXNzZWQodGV4
dGFyZ2V0LCBsZXZlbCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChsZXZlbCAhPSAwKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZ2w6OkZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciA9IE5VTEw7Ci0gICAgICAgICAgICBHTHVpbnQgZnJhbWVidWZm
ZXJIYW5kbGUgPSAwOwotICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVG
RkVSX0FOR0xFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyID0g
Y29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgZnJhbWVidWZm
ZXJIYW5kbGUgPSBjb250ZXh0LT5nZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBm
cmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgICAgICAgICAg
ICAgIGZyYW1lYnVmZmVySGFuZGxlID0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxl
KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlckhhbmRsZSA9
PSAwIHx8ICFmcmFtZWJ1ZmZlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNh
c2UgR0xfQ09MT1JfQVRUQUNITUVOVDA6ICBmcmFtZWJ1ZmZlci0+c2V0Q29sb3JidWZmZXIodGV4
dGFyZ2V0LCB0ZXh0dXJlKTsgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9B
VFRBQ0hNRU5UOiAgIGZyYW1lYnVmZmVyLT5zZXREZXB0aGJ1ZmZlcih0ZXh0YXJnZXQsIHRleHR1
cmUpOyAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDog
ZnJhbWVidWZmZXItPnNldFN0ZW5jaWxidWZmZXIodGV4dGFyZ2V0LCB0ZXh0dXJlKTsgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAg
IH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xGcm9udEZhY2UoR0xlbnVtIG1vZGUpCi17Ci0gICAg
RVZFTlQoIihHTGVudW0gbW9kZSA9IDB4JVgpIiwgbW9kZSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0g
ICAgICAgIHN3aXRjaCAobW9kZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQ1c6Ci0g
ICAgICAgICAgY2FzZSBHTF9DQ1c6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICAg
ICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0RnJvbnRGYWNlKG1vZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbEdlbkJ1ZmZlcnMo
R0xzaXplaSBuLCBHTHVpbnQqIGJ1ZmZlcnMpCi17Ci0gICAgRVZFTlQoIihHTHNpemVpIG4gPSAl
ZCwgR0x1aW50KiBidWZmZXJzID0gMHglMC44cCkiLCBuLCBidWZmZXJzKTsKLQotICAgIHRyeQot
ICAgIHsKLSAgICAgICAgaWYgKG4gPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250
ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBidWZmZXJzW2ldID0gY29udGV4dC0+Y3Jl
YXRlQnVmZmVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xHZW5lcmF0ZU1pcG1hcChHTGVu
dW0gdGFyZ2V0KQotewotICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgpIiwgdGFyZ2V0
KTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewot
ICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGdsOjpUZXh0dXJlMkQgKnRleDJkID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHRleDJkLT5pc0NvbXByZXNzZWQoMCkpCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHRleDJkLT5pc0RlcHRoKDApKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgdGV4MmQtPmdlbmVyYXRl
TWlwbWFwcygpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXhjdWJlID0g
Y29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAo
dGV4Y3ViZS0+aXNDb21wcmVzc2VkKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCkp
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICB0ZXhjdWJlLT5nZW5lcmF0ZU1pcG1hcHMoKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0K
LQotdm9pZCBfX3N0ZGNhbGwgZ2xHZW5GZW5jZXNOVihHTHNpemVpIG4sIEdMdWludCogZmVuY2Vz
KQotewotICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogZmVuY2VzID0gMHglMC44
cCkiLCBuLCBmZW5jZXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAobiA8IDApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGZlbmNlc1tpXSA9IGNvbnRleHQtPmNyZWF0ZUZlbmNlKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0
ZGNhbGwgZ2xHZW5GcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIGZyYW1lYnVmZmVycykK
LXsKLSAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQqIGZyYW1lYnVmZmVycyA9IDB4
JTAuOHApIiwgbiwgZnJhbWVidWZmZXJzKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYg
KG4gPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBmcmFtZWJ1ZmZlcnNbaV0gPSBjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZl
cigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
LSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsR2VuUXVlcmllc0VYVChHTHNpemVpIG4sIEdM
dWludCogaWRzKQotewotICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogaWRzID0g
MHglMC44cCkiLCBuLCBpZHMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAobiA8IDAp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGlkc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0
ZGNhbGwgZ2xHZW5SZW5kZXJidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50KiByZW5kZXJidWZmZXJz
KQotewotICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogcmVuZGVyYnVmZmVycyA9
IDB4JTAuOHApIiwgbiwgcmVuZGVyYnVmZmVycyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAg
IGlmIChuIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsR2VuVGV4dHVyZXMoR0xzaXplaSBu
LCBHTHVpbnQqIHRleHR1cmVzKQotewotICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWlu
dCogdGV4dHVyZXMgPSAgMHglMC44cCkiLCBuLCB0ZXh0dXJlcyk7Ci0KLSAgICB0cnkKLSAgICB7
Ci0gICAgICAgIGlmIChuIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkK
LSAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGV4dHVyZXNbaV0gPSBjb250ZXh0LT5jcmVhdGVU
ZXh0dXJlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3RpdmVBdHRyaWIoR0x1aW50
IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgs
IEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkKLXsKLSAgICBFVkVOVCgi
KEdMdWludCBwcm9ncmFtID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBHTHNpemVpIGJ1ZnNpemUg
PSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMC44cCwgIgotICAgICAgICAgICJHTGludCAqc2l6
ZSA9IDB4JTAuOHAsIEdMZW51bSAqdHlwZSA9ICUwLjhwLCBHTGNoYXIgKm5hbWUgPSAlMC44cCki
LAotICAgICAgICAgIHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUs
IG5hbWUpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
OjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsK
LQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
aW5kZXggPj0gKEdMdWludClwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+Z2V0
QWN0aXZlQXR0cmlidXRlKGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUp
OwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQg
X19zdGRjYWxsIGdsR2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4
LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSog
dHlwZSwgR0xjaGFyKiBuYW1lKQotewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwg
R0x1aW50IGluZGV4ID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCAiCi0gICAgICAgICAgIkdM
c2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMaW50KiBzaXplID0gMHglMC44cCwgR0xlbnVtKiB0
eXBlID0gMHglMC44cCwgR0xjaGFyKiBuYW1lID0gMHglMC44cCkiLAotICAgICAgICAgIHByb2dy
YW0sIGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAg
aWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFt
T2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKLQotICAgICAgICAgICAgaWYg
KCFwcm9ncmFtT2JqZWN0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaW5kZXggPj0gKEdMdWludClw
cm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtQ291bnQoKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm0oaW5kZXgs
IGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xHZXRBdHRhY2hl
ZFNoYWRlcnMoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgbWF4Y291bnQsIEdMc2l6ZWkqIGNvdW50
LCBHTHVpbnQqIHNoYWRlcnMpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBH
THNpemVpIG1heGNvdW50ID0gJWQsIEdMc2l6ZWkqIGNvdW50ID0gMHglMC44cCwgR0x1aW50KiBz
aGFkZXJzID0gMHglMC44cCkiLAotICAgICAgICAgIHByb2dyYW0sIG1heGNvdW50LCBjb3VudCwg
c2hhZGVycyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmIChtYXhjb3VudCA8IDApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKLQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBy
ZXR1cm4gcHJvZ3JhbU9iamVjdC0+Z2V0QXR0YWNoZWRTaGFkZXJzKG1heGNvdW50LCBjb3VudCwg
c2hhZGVycyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0K
LQotaW50IF9fc3RkY2FsbCBnbEdldEF0dHJpYkxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBjb25z
dCBHTGNoYXIqIG5hbWUpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBjb25z
dCBHTGNoYXIqIG5hbWUgPSAlcykiLCBwcm9ncmFtLCBuYW1lKTsKLQotICAgIHRyeQotICAgIHsK
LSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
LQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotCi0gICAgICAgICAgICBnbDo6UHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAg
ICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAt
MSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAtMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBn
bDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IHByb2dyYW1PYmplY3QtPmdldFByb2dy
YW1CaW5hcnkoKTsKLSAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSB8
fCAhcHJvZ3JhbUJpbmFyeSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIC0xKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmdldEF0dHJpYnV0ZUxvY2F0aW9uKG5hbWUpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAtMSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIC0xOwotfQotCi12b2lkIF9fc3RkY2FsbCBnbEdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwg
R0xib29sZWFuKiBwYXJhbXMpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBH
TGJvb2xlYW4qIHBhcmFtcyA9IDB4JTAuOHApIiwgIHBuYW1lLCBwYXJhbXMpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIShjb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgcGFyYW1zKSkpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7Ci0gICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IG51bVBhcmFtcyA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAobnVtUGFyYW1zID09IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsgLy8gaXQgaXMga25vd24gdGhhdCB0aGUgcG5hbWUgaXMgdmFsaWQsIGJ1dCB0aGVyZSBhcmUg
bm8gcGFyYW1ldGVycyB0byByZXR1cm4KLQotICAgICAgICAgICAgICAgIGlmIChuYXRpdmVUeXBl
ID09IEdMX0ZMT0FUKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCAqZmxvYXRQYXJhbXMgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBmbG9hdFBhcmFt
cyA9IG5ldyBHTGZsb2F0W251bVBhcmFtc107Ci0KLSAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+Z2V0RmxvYXR2KHBuYW1lLCBmbG9hdFBhcmFtcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsb2F0UGFyYW1zW2ldID09
IDAuMGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gR0xfRkFMU0U7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zW2ldID0gR0xfVFJVRTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZSBbXSBmbG9hdFBhcmFtczsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlQpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBHTGludCAqaW50UGFyYW1zID0gTlVMTDsKLSAg
ICAgICAgICAgICAgICAgICAgaW50UGFyYW1zID0gbmV3IEdMaW50W251bVBhcmFtc107Ci0KLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIGludFBhcmFtcyk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1Q
YXJhbXM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGludFBhcmFtc1tpXSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtc1tpXSA9IEdMX0ZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IEdMX1RSVUU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBkZWxldGUgW10gaW50UGFyYW1zOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbEdldEJ1ZmZlclBhcmFtZXRl
cml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKLXsKLSAgICBF
VkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCog
cGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwotCi0gICAgdHJ5Ci0g
ICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6
QnVmZmVyICpidWZmZXI7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUjoKLSAgICAgICAgICAgICAg
ICBidWZmZXIgPSBjb250ZXh0LT5nZXRBcnJheUJ1ZmZlcigpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSOgotICAgICAg
ICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFidWZm
ZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gQSBudWxsIGJ1ZmZlciBtZWFu
cyB0aGF0ICIwIiBpcyBib3VuZCB0byB0aGUgcmVxdWVzdGVkIGJ1ZmZlciB0YXJnZXQKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBjYXNlIEdMX0JVRkZFUl9VU0FHRToKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0g
YnVmZmVyLT51c2FnZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEdMX0JVRkZFUl9TSVpFOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBidWZmZXItPnNp
emUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDogcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotR0xlbnVtIF9fc3RkY2FsbCBnbEdl
dEVycm9yKHZvaWQpCi17Ci0gICAgRVZFTlQoIigpIik7Ci0KLSAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0LT5nZXRFcnJvcigpOwotICAgIH0KLQotICAgIHJldHVybiBHTF9O
T19FUlJPUjsKLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xHZXRGZW5jZWl2TlYoR0x1aW50IGZlbmNl
LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgZmVu
Y2UgPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgKnBhcmFtcyA9IDB4JTAuOHApIiwg
ZmVuY2UsIHBuYW1lLCBwYXJhbXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgIAotICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAg
IGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6RmVuY2UgKmZlbmNlT2Jq
ZWN0ID0gY29udGV4dC0+Z2V0RmVuY2UoZmVuY2UpOwotCi0gICAgICAgICAgICBpZiAoZmVuY2VP
YmplY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBm
ZW5jZU9iamVjdC0+Z2V0RmVuY2VpdihwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbEdldEZsb2F0
dihHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBFVkVOVCgiKEdMZW51bSBw
bmFtZSA9IDB4JVgsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwgcG5hbWUsIHBhcmFtcyk7
Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghKGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgcGFyYW1zKSkpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7Ci0gICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKCFj
b250ZXh0LT5nZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFy
YW1zKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7
Ci0KLSAgICAgICAgICAgICAgICBpZiAobnVtUGFyYW1zID09IDApCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsgLy8gaXQgaXMga25vd24gdGhhdCB0aGUgcG5hbWUgaXMgdmFsaWQsIGJ1dCB0
aGF0IHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIHRvIHJldHVybi4KLQotICAgICAgICAgICAgICAg
IGlmIChuYXRpdmVUeXBlID09IEdMX0JPT0wpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSBOVUxMOwotICAgICAgICAgICAgICAg
ICAgICBib29sUGFyYW1zID0gbmV3IEdMYm9vbGVhbltudW1QYXJhbXNdOwotCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCBib29sUGFyYW1zKTsKLQotICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFtczsg
KytpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Ym9vbFBhcmFtc1tpXSA9PSBHTF9GQUxTRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbaV0gPSAwLjBmOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IDEuMGY7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICBkZWxldGUgW10gYm9vbFBhcmFtczsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlQp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBHTGludCAqaW50UGFyYW1z
ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgaW50UGFyYW1zID0gbmV3IEdMaW50W251bVBh
cmFtc107Ci0KLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUs
IGludFBhcmFtcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKEdMZmxvYXQpaW50UGFyYW1zW2ldOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGludFBhcmFt
czsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVu
dCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQotewotICAgIEVWRU5UKCIoR0xlbnVtIHRh
cmdldCA9IDB4JVgsIEdMZW51bSBhdHRhY2htZW50ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHgl
WCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwKLSAgICAgICAgICB0YXJnZXQsIGF0dGFjaG1l
bnQsIHBuYW1lLCBwYXJhbXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250
ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGFyZ2V0ICE9IEdMX0ZSQU1FQlVGRkVS
ICYmIHRhcmdldCAhPSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFICYmIHRhcmdldCAhPSBHTF9S
RUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gTlVMTDsKLSAgICAgICAgICAgIGlmICh0
YXJnZXQgPT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBpZihjb250ZXh0LT5nZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKSA9PSAwKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBm
cmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkgPT0gMCkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBj
b250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgR0xlbnVtIGF0dGFjaG1lbnRUeXBlOwotICAgICAgICAgICAgR0x1aW50IGF0dGFjaG1lbnRI
YW5kbGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfQ09MT1JfQVRUQUNITUVOVDA6ICAgIAotICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnRUeXBlID0gZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyVHlwZSgpOwot
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRIYW5kbGUgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3Ji
dWZmZXJIYW5kbGUoKTsgCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNh
c2UgR0xfREVQVEhfQVRUQUNITUVOVDogICAgIAotICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRU
eXBlID0gZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyVHlwZSgpOwotICAgICAgICAgICAgICAg
IGF0dGFjaG1lbnRIYW5kbGUgPSBmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXJIYW5kbGUoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6ICAgCi0gICAgICAgICAgICAgICAgYXR0YWNobWVudFR5cGUgPSBmcmFtZWJ1ZmZl
ci0+Z2V0U3RlbmNpbGJ1ZmZlclR5cGUoKTsKLSAgICAgICAgICAgICAgICBhdHRhY2htZW50SGFu
ZGxlID0gZnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXJIYW5kbGUoKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGVycm9yKEdMX0lOVkFM
SURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50
T2JqZWN0VHlwZTsgICAvLyBUeXBlIGNhdGVnb3J5Ci0gICAgICAgICAgICBpZiAoYXR0YWNobWVu
dFR5cGUgPT0gR0xfTk9ORSB8fCBhdHRhY2htZW50VHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXR0YWNobWVudE9iamVjdFR5cGUgPSBhdHRh
Y2htZW50VHlwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGdsOjpJc0lu
dGVybmFsVGV4dHVyZVRhcmdldChhdHRhY2htZW50VHlwZSkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgYXR0YWNobWVudE9iamVjdFR5cGUgPSBHTF9URVhUVVJFOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBj
YXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6Ci0gICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3RUeXBlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05B
TUU6Ci0gICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRPYmplY3RUeXBlID09IEdMX1JFTkRF
UkJVRkZFUiB8fCBhdHRhY2htZW50T2JqZWN0VHlwZSA9PSBHTF9URVhUVVJFKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRIYW5kbGU7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6Ci0gICAgICAgICAg
ICAgICAgaWYgKGF0dGFjaG1lbnRPYmplY3RUeXBlID09IEdMX1RFWFRVUkUpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gMDsgLy8gRnJhbWVidWZmZXJU
ZXh0dXJlMkQgd2lsbCBub3QgYWxsb3cgbGV2ZWwgdG8gYmUgc2V0IHRvIGFueXRoaW5nIGVsc2Ug
aW4gR0wgRVMgMi4wCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9N
QVBfRkFDRToKLSAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdFR5cGUgPT0gR0xf
VEVYVFVSRSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChnbDo6
SXNDdWJlbWFwVGV4dHVyZVRhcmdldChhdHRhY2htZW50VHlwZSkpCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50VHlwZTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSAwOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7Ci0gICAgfQotfQotCi1HTGVudW0gX19zdGRjYWxsIGdsR2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0VYVCh2b2lkKQotewotICAgIEVWRU5UKCIoKSIpOwotCi0gICAgdHJ5Ci0gICAg
ewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7Ci0KLSAg
ICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LT5nZXRSZXNldFN0YXR1cygpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIEdMX05PX0VS
Uk9SOwotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICBy
ZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsR2V0
SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQotewotICAgIEVWRU5UKCIoR0xl
bnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgcG5hbWUsIHBhcmFt
cyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghKGNvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCBwYXJhbXMpKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBHTGVudW0gbmF0aXZlVHlwZTsKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNvbnRleHQtPmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhwbmFtZSwgJm5hdGl2ZVR5cGUsICZu
dW1QYXJhbXMpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKLQotICAgICAgICAgICAgICAgIGlmIChudW1QYXJhbXMgPT0gMCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOyAvLyBpdCBpcyBrbm93biB0aGF0IHBuYW1lIGlzIHZhbGlkLCBidXQg
dGhlcmUgYXJlIG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJuCi0KLSAgICAgICAgICAgICAgICBpZiAo
bmF0aXZlVHlwZSA9PSBHTF9CT09MKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuICpib29sUGFyYW1zID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAg
Ym9vbFBhcmFtcyA9IG5ldyBHTGJvb2xlYW5bbnVtUGFyYW1zXTsKLQotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgYm9vbFBhcmFtcyk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvb2xQ
YXJhbXNbaV0gPT0gR0xfRkFMU0UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
W2ldID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXNbaV0gPSAxOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgZGVsZXRlIFtdIGJvb2xQYXJhbXM7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfRkxPQVQpCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpmbG9hdFBhcmFtcyA9IE5V
TEw7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0UGFyYW1zID0gbmV3IEdMZmxvYXRbbnVtUGFy
YW1zXTsKLQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIGZs
b2F0UGFyYW1zKTsKLQotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IG51bVBhcmFtczsgKytpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocG5hbWUgPT0gR0xfREVQVEhfUkFOR0UgfHwgcG5hbWUgPT0gR0xf
Q09MT1JfQ0xFQVJfVkFMVUUgfHwgcG5hbWUgPT0gR0xfREVQVEhfQ0xFQVJfVkFMVUUgfHwgcG5h
bWUgPT0gR0xfQkxFTkRfQ09MT1IpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKEdMaW50KSgoKEdMZmxvYXQpKDB4RkZG
RkZGRkYpICogZmxvYXRQYXJhbXNbaV0gLSAxLjBmKSAvIDIuMGYpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtc1tpXSA9IChHTGludCkoZmxvYXRQYXJhbXNbaV0gPiAwLjBmID8g
Zmxvb3IoZmxvYXRQYXJhbXNbaV0gKyAwLjUpIDogY2VpbChmbG9hdFBhcmFtc1tpXSAtIDAuNSkp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtd
IGZsb2F0UGFyYW1zOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1
cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBn
bEdldFByb2dyYW1pdihHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1z
KQotewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xlbnVtIHBuYW1lID0gJWQs
IEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHByb2dyYW0sIHBuYW1lLCBwYXJhbXMpOwotCi0g
ICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJv
Z3JhbSk7Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfREVMRVRFX1NUQVRVUzoKLSAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gcHJvZ3JhbU9iamVjdC0+aXNGbGFnZ2VkRm9yRGVsZXRpb24oKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgIGNhc2UgR0xfTElOS19TVEFUVVM6Ci0gICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmlzTGlua2VkKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICBjYXNlIEdMX1ZBTElEQVRFX1NUQVRVUzoKLSAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+aXNWYWxpZGF0ZWQoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSU5GT19MT0dfTEVOR1RI
OgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRJbmZvTG9nTGVu
Z3RoKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICBjYXNlIEdMX0FU
VEFDSEVEX1NIQURFUlM6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3Qt
PmdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICBjYXNlIEdMX0FDVElWRV9BVFRSSUJVVEVTOgotICAgICAgICAgICAgICAgICpw
YXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgY2FzZSBHTF9BQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEg6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdl
dEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVU5JRk9STVM6Ci0gICAgICAgICAgICAgICAgKnBh
cmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVU5JRk9STV9NQVhf
TEVOR1RIOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRBY3Rp
dmVVbmlmb3JtTWF4TGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICBjYXNlIEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSF9PRVM6Ci0gICAgICAgICAgICAgICAg
KnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldFByb2dyYW1CaW5hcnlMZW5ndGgoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwg
Z2xHZXRQcm9ncmFtSW5mb0xvZyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZzaXplLCBHTHNp
emVpKiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZykKLXsKLSAgICBFVkVOVCgiKEdMdWludCBwcm9n
cmFtID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhw
LCBHTGNoYXIqIGluZm9sb2cgPSAweCUwLjhwKSIsCi0gICAgICAgICAgcHJvZ3JhbSwgYnVmc2l6
ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKGJ1ZnNp
emUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dy
YW0ocHJvZ3JhbSk7Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdldEluZm9Mb2coYnVm
c2l6ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbEdldFF1ZXJ5aXZFWFQoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQotewotICAgIEVWRU5UKCJHTGVudW0g
dGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgKnBhcmFtcyA9IDB4JTAu
OHApIiwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAg
c3dpdGNoIChwbmFtZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9RVUVS
WV9FWFQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAg
IGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXJhbXNbMF0gPSBjb250ZXh0
LT5nZXRBY3RpdmVRdWVyeSh0YXJnZXQpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQo
R0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKQotewotICAgIEVWRU5UKCIo
R0x1aW50IGlkID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMdWludCAqcGFyYW1zID0gMHgl
MC44cCkiLCBpZCwgcG5hbWUsIHBhcmFtcyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1FVRVJZX1JFU1VMVF9F
WFQ6Ci0gICAgICAgICAgY2FzZSBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVDoKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgfQotICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6UXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+
Z2V0UXVlcnkoaWQsIGZhbHNlLCBHTF9OT05FKTsKLQotICAgICAgICAgICAgaWYgKCFxdWVyeU9i
amVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29udGV4
dC0+Z2V0QWN0aXZlUXVlcnkocXVlcnlPYmplY3QtPmdldFR5cGUoKSkgPT0gaWQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoKHBuYW1lKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICBjYXNlIEdMX1FVRVJZX1JFU1VMVF9FWFQ6Ci0gICAgICAgICAg
ICAgICAgcGFyYW1zWzBdID0gcXVlcnlPYmplY3QtPmdldFJlc3VsdCgpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVf
RVhUOgotICAgICAgICAgICAgICAgIHBhcmFtc1swXSA9IHF1ZXJ5T2JqZWN0LT5pc1Jlc3VsdEF2
YWlsYWJsZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwg
Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMaW50KiBwYXJhbXMpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xl
bnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgdGFyZ2V0LCBwbmFt
ZSwgcGFyYW1zKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRSZW5kZXJidWZm
ZXJIYW5kbGUoKSA9PSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZl
cihjb250ZXh0LT5nZXRSZW5kZXJidWZmZXJIYW5kbGUoKSk7Ci0KLSAgICAgICAgICAgIHN3aXRj
aCAocG5hbWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVG
RkVSX1dJRFRIOiAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0V2lkdGgoKTsg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0hFSUdI
VDogICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7ICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1B
VDogKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFOiAgICAgICAgKnBhcmFt
cyA9IHJlbmRlcmJ1ZmZlci0+Z2V0UmVkU2l6ZSgpOyAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRl
cmJ1ZmZlci0+Z2V0R3JlZW5TaXplKCk7ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ug
R0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRTogICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+
Z2V0Qmx1ZVNpemUoKTsgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX0FMUEhBX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0QWxwaGFT
aXplKCk7ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0RF
UFRIX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0RGVwdGhTaXplKCk7ICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0la
RTogICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUoKTsgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5HTEU6Ci0gICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSAhPSAwKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1
ZmZlci0+Z2V0U2FtcGxlcygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJpdihH
THVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCi17Ci0gICAgRVZFTlQo
IihHTHVpbnQgc2hhZGVyID0gJWQsIEdMZW51bSBwbmFtZSA9ICVkLCBHTGludCogcGFyYW1zID0g
MHglMC44cCkiLCBzaGFkZXIsIHBuYW1lLCBwYXJhbXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0g
ICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6U2hhZGVyICpz
aGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKLQotICAgICAgICAgICAg
aWYgKCFzaGFkZXJPYmplY3QpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBz
d2l0Y2ggKHBuYW1lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX1NIQURF
Ul9UWVBFOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmdldFR5cGUo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgIGNhc2UgR0xfREVMRVRF
X1NUQVRVUzoKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5pc0ZsYWdn
ZWRGb3JEZWxldGlvbigpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9DT01QSUxFX1NUQVRVUzoKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVy
T2JqZWN0LT5pc0NvbXBpbGVkKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICBjYXNlIEdMX0lORk9fTE9HX0xFTkdUSDoKLSAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5nZXRJbmZvTG9nTGVuZ3RoKCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICBjYXNlIEdMX1NIQURFUl9TT1VS
Q0VfTEVOR1RIOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmdldFNv
dXJjZUxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFOgotICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmdldFRyYW5zbGF0ZWRTb3VyY2VMZW5ndGgoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0
ZGNhbGwgZ2xHZXRTaGFkZXJJbmZvTG9nKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwg
R0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQg
c2hhZGVyID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUw
LjhwLCBHTGNoYXIqIGluZm9sb2cgPSAweCUwLjhwKSIsCi0gICAgICAgICAgc2hhZGVyLCBidWZz
aXplLCBsZW5ndGgsIGluZm9sb2cpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoYnVm
c2l6ZSA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGdsOjpTaGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRl
cihzaGFkZXIpOwotCi0gICAgICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNoYWRlck9iamVjdC0+Z2V0SW5mb0xvZyhidWZzaXpl
LCBsZW5ndGgsIGluZm9sb2cpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
LSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdM
ZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwgR0xpbnQqIHJhbmdlLCBHTGlu
dCogcHJlY2lzaW9uKQotewotICAgIEVWRU5UKCIoR0xlbnVtIHNoYWRlcnR5cGUgPSAweCVYLCBH
TGVudW0gcHJlY2lzaW9udHlwZSA9IDB4JVgsIEdMaW50KiByYW5nZSA9IDB4JTAuOHAsIEdMaW50
KiBwcmVjaXNpb24gPSAweCUwLjhwKSIsCi0gICAgICAgICAgc2hhZGVydHlwZSwgcHJlY2lzaW9u
dHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAoc2hhZGVydHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURF
UjoKLSAgICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUjoKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAocHJlY2lzaW9udHlwZSkKLSAg
ICAgICAgewotICAgICAgICAgIGNhc2UgR0xfTE9XX0ZMT0FUOgotICAgICAgICAgIGNhc2UgR0xf
TUVESVVNX0ZMT0FUOgotICAgICAgICAgIGNhc2UgR0xfSElHSF9GTE9BVDoKLSAgICAgICAgICAg
IC8vIEFzc3VtZSBJRUVFIDc1NCBwcmVjaXNpb24KLSAgICAgICAgICAgIHJhbmdlWzBdID0gMTI3
OwotICAgICAgICAgICAgcmFuZ2VbMV0gPSAxMjc7Ci0gICAgICAgICAgICAqcHJlY2lzaW9uID0g
MjM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0xPV19JTlQ6Ci0gICAg
ICAgICAgY2FzZSBHTF9NRURJVU1fSU5UOgotICAgICAgICAgIGNhc2UgR0xfSElHSF9JTlQ6Ci0g
ICAgICAgICAgICAvLyBTb21lIChtb3N0KSBoYXJkd2FyZSBvbmx5IHN1cHBvcnRzIHNpbmdsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgbnVtYmVycywKLSAgICAgICAgICAgIC8vIHdoaWNoIGNh
biBhY2N1cmF0ZWx5IHJlcHJlc2VudCBpbnRlZ2VycyB1cCB0byArLy0xNjc3NzIxNgotICAgICAg
ICAgICAgcmFuZ2VbMF0gPSAyNDsKLSAgICAgICAgICAgIHJhbmdlWzFdID0gMjQ7Ci0gICAgICAg
ICAgICAqcHJlY2lzaW9uID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1
cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBn
bEdldFNoYWRlclNvdXJjZShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkq
IGxlbmd0aCwgR0xjaGFyKiBzb3VyY2UpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0g
JWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGNo
YXIqIHNvdXJjZSA9IDB4JTAuOHApIiwKLSAgICAgICAgICBzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0
aCwgc291cmNlKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsK
LQotICAgICAgICAgICAgaWYgKCFzaGFkZXJPYmplY3QpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgc2hhZGVyT2JqZWN0LT5nZXRTb3VyY2UoYnVmc2l6ZSwgbGVuZ3Ro
LCBzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19
Ci0KLXZvaWQgX19zdGRjYWxsIGdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKEdMdWlu
dCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIHNvdXJj
ZSkKLXsKLSAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCwgR0xzaXplaSBidWZzaXplID0g
JWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMY2hhciogc291cmNlID0gMHglMC44cCki
LAotICAgICAgICAgIHNoYWRlciwgYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAg
aWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpTaGFkZXIgKnNoYWRlck9i
amVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOwotCi0gICAgICAgICAgICBpZiAoIXNo
YWRlck9iamVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzaGFk
ZXJPYmplY3QtPmdldFRyYW5zbGF0ZWRTb3VyY2UoYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLWNvbnN0IEdM
dWJ5dGUqIF9fc3RkY2FsbCBnbEdldFN0cmluZyhHTGVudW0gbmFtZSkKLXsKLSAgICBFVkVOVCgi
KEdMZW51bSBuYW1lID0gMHglWCkiLCBuYW1lKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAg
ICBzd2l0Y2ggKG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1ZFTkRPUjoKLSAg
ICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopIkdvb2dsZSBJbmMuIjsKLSAgICAgICAgICBjYXNl
IEdMX1JFTkRFUkVSOgotICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikoKGNvbnRleHQgIT0g
TlVMTCkgPyBjb250ZXh0LT5nZXRSZW5kZXJlclN0cmluZygpIDogIkFOR0xFIik7Ci0gICAgICAg
ICAgY2FzZSBHTF9WRVJTSU9OOgotICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikiT3BlbkdM
IEVTIDIuMCAoQU5HTEUgIiBWRVJTSU9OX1NUUklORyAiKSI7Ci0gICAgICAgICAgY2FzZSBHTF9T
SEFESU5HX0xBTkdVQUdFX1ZFUlNJT046Ci0gICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUqKSJP
cGVuR0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiIFZFUlNJT05fU1RSSU5HICIpIjsKLSAgICAg
ICAgICBjYXNlIEdMX0VYVEVOU0lPTlM6Ci0gICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUqKSgo
Y29udGV4dCAhPSBOVUxMKSA/IGNvbnRleHQtPmdldEV4dGVuc2lvblN0cmluZygpIDogIiIpOwot
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCAoR0x1Ynl0ZSopTlVMTCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlks
IChHTHVieXRlKilOVUxMKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsR2V0VGV4UGFy
YW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0KiBwYXJhbXMpCi17
Ci0gICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwg
R0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwotCi0g
ICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZTsKLQotICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAg
ICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKLSAg
ICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgc3dpdGNoIChwbmFtZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01BR19GSUxURVI6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZs
b2F0KXRleHR1cmUtPmdldE1hZ0ZpbHRlcigpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoKLSAgICAgICAgICAgICAgICAq
cGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0TWluRmlsdGVyKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6Ci0gICAgICAg
ICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFdyYXBTKCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6Ci0g
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFdyYXBUKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9JTU1V
VEFCTEVfRk9STUFUX0VYVDoKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpKHRl
eHR1cmUtPmlzSW1tdXRhYmxlKCkgPyBHTF9UUlVFIDogR0xfRkFMU0UpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6Ci0g
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFVzYWdlKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhf
QU5JU09UUk9QWV9FWFQ6Ci0gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c1Rl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldE1heEFuaXNv
dHJvcHkoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12
b2lkIF9fc3RkY2FsbCBnbEdldFRleFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQqIHBhcmFtcykKLXsKLSAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVY
LCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQs
IHBuYW1lLCBwYXJhbXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZTsKLQotICAgICAg
ICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV8yRDoKLSAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4
dHVyZTJEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DVUJFX01BUDoKLSAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0
VGV4dHVyZUN1YmVNYXAoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6Ci0gICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldE1hZ0ZpbHRlcigpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoKLSAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0TWluRmlsdGVyKCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6Ci0gICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFdyYXBTKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6Ci0gICAgICAg
ICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFdyYXBUKCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VY
VDoKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+aXNJbW11dGFibGUoKSA/IEdM
X1RSVUUgOiBHTF9GQUxTRTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0
ZXh0dXJlLT5nZXRVc2FnZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgotICAgICAgICAgICAgICAgIGlm
ICghY29udGV4dC0+c3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5V
TSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xpbnQp
dGV4dHVyZS0+Z2V0TWF4QW5pc290cm9weSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX0VOVU0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsR2V0blVuaWZvcm1mdkVYVChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCogcGFy
YW1zKQotewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwK
LSAgICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKTsKLQotICAgIHRy
eQotICAgIHsKLSAgICAgICAgaWYgKGJ1ZlNpemUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAg
IGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocHJvZ3JhbSA9PSAwKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1P
YmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAgICAgICBpZiAo
IXByb2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1C
aW5hcnkgPSBwcm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7Ci0gICAgICAgICAgICBp
ZiAoIXByb2dyYW1CaW5hcnkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5nZXRVbmlmb3JtZnYobG9jYXRpb24sICZidWZTaXplLCBw
YXJhbXMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtZnYo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAg
RVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0
KiBwYXJhbXMgPSAweCUwLjhwKSIsIHByb2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMpOwotCi0gICAg
dHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAocHJvZ3JhbSA9PSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Z2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0p
OwotCi0gICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlz
TGlua2VkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZ2w6OlBy
b2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFtQmlu
YXJ5KCk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5nZXRVbmlmb3JtZnYo
bG9jYXRpb24sIE5VTEwsIHBhcmFtcykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2Fs
bCBnbEdldG5Vbmlmb3JtaXZFWFQoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGJ1ZlNpemUsIEdMaW50KiBwYXJhbXMpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgcHJvZ3Jh
bSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQq
IHBhcmFtcyA9IDB4JTAuOHApIiwgCi0gICAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNp
emUsIHBhcmFtcyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmIChidWZTaXplIDwgMCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKHByb2dyYW0gPT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKLQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0IHx8ICFwcm9ncmFtT2JqZWN0LT5p
c0xpbmtlZCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGdsOjpQ
cm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJp
bmFyeSgpOwotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+Z2V0VW5pZm9ybWl2
KGxvY2F0aW9uLCAmYnVmU2l6ZSwgcGFyYW1zKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19z
dGRjYWxsIGdsR2V0VW5pZm9ybWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQqIHBhcmFtcykKLXsKLSAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxv
Y2F0aW9uID0gJWQsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHByb2dyYW0sIGxvY2F0aW9u
LCBwYXJhbXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAocHJvZ3JhbSA9PSAwKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5n
ZXRQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwg
IXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2Jq
ZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmlu
YXJ5LT5nZXRVbmlmb3JtaXYobG9jYXRpb24sIE5VTEwsIHBhcmFtcykpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQot
fQotCi1pbnQgX19zdGRjYWxsIGdsR2V0VW5pZm9ybUxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBj
b25zdCBHTGNoYXIqIG5hbWUpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBj
b25zdCBHTGNoYXIqIG5hbWUgPSAweCUwLjhwKSIsIHByb2dyYW0sIG5hbWUpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOwotCi0gICAgICAgIGlmIChzdHJzdHIobmFtZSwgImdsXyIpID09IG5hbWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChj
b250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICAgICAgICAgIGlmICghcHJv
Z3JhbU9iamVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAtMSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAtMSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAq
cHJvZ3JhbUJpbmFyeSA9IHByb2dyYW1PYmplY3QtPmdldFByb2dyYW1CaW5hcnkoKTsKLSAgICAg
ICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSB8fCAhcHJvZ3JhbUJpbmFyeSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sIC0xKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHByb2dy
YW1CaW5hcnktPmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgLTEpOwotICAgIH0KLQotICAgIHJldHVybiAtMTsKLX0KLQotdm9pZCBf
X3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCogcGFyYW1zKQotewotICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZW51
bSBwbmFtZSA9IDB4JVgsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwgaW5kZXgsIHBuYW1l
LCBwYXJhbXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYlN0YXRlID0gY29udGV4dC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgp
OwotCi0gICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoKLSAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gKEdMZmxvYXQpKGF0dHJpYlN0YXRlLm1BcnJheUVuYWJsZWQgPyBHTF9UUlVF
IDogR0xfRkFMU0UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNl
IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRToKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0g
KEdMZmxvYXQpYXR0cmliU3RhdGUubVNpemU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6Ci0gICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KWF0dHJpYlN0YXRlLm1TdHJpZGU7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9U
WVBFOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdClhdHRyaWJTdGF0ZS5tVHlw
ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhf
QVRUUklCX0FSUkFZX05PUk1BTElaRUQ6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZs
b2F0KShhdHRyaWJTdGF0ZS5tTm9ybWFsaXplZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9B
UlJBWV9CVUZGRVJfQklORElORzoKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQp
YXR0cmliU3RhdGUubUJvdW5kQnVmZmVyLmlkKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCOgotICAgICAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gYXR0cmliU3RhdGUubUN1cnJlbnRWYWx1ZVtpXTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFOgotICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSAoR0xmbG9hdClhdHRyaWJTdGF0ZS5tRGl2aXNvcjsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGVycm9yKEdMX0lOVkFM
SURfRU5VTSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihHTHVp
bnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKLXsKLSAgICBFVkVOVCgiKEdM
dWludCBpbmRleCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHgl
MC44cCkiLCBpbmRleCwgcG5hbWUsIHBhcmFtcyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAg
ICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliU3RhdGUgPSBjb250ZXh0LT5nZXRWZXJ0
ZXhBdHRyaWJTdGF0ZShpbmRleCk7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFC
TEVEOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoYXR0cmliU3RhdGUubUFycmF5RW5hYmxl
ZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFOgotICAgICAgICAgICAgICAg
ICpwYXJhbXMgPSBhdHRyaWJTdGF0ZS5tU2l6ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERToKLSAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gYXR0cmliU3RhdGUubVN0cmlkZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6Ci0g
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dHJpYlN0YXRlLm1UeXBlOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9S
TUFMSVpFRDoKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0gKGF0dHJpYlN0YXRlLm1Ob3JtYWxp
emVkID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRyaWJTdGF0ZS5tQm91bmRCdWZmZXIuaWQoKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1ZFUlRF
WF9BVFRSSUI6Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBmbG9hdCBjdXJyZW50VmFsdWUg
PSBhdHRyaWJTdGF0ZS5tQ3VycmVudFZhbHVlW2ldOwotICAgICAgICAgICAgICAgICAgICBwYXJh
bXNbaV0gPSAoR0xpbnQpKGN1cnJlbnRWYWx1ZSA+IDAuMGYgPyBmbG9vcihjdXJyZW50VmFsdWUg
KyAwLjVmKSA6IGNlaWwoY3VycmVudFZhbHVlIC0gMC41ZikpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRU
UklCX0FSUkFZX0RJVklTT1JfQU5HTEU6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGlu
dClhdHRyaWJTdGF0ZS5tRGl2aXNvcjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgZGVmYXVsdDogcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9p
ZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0x2b2lkKiogcG9pbnRlcikKLXsKLSAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9
ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHZvaWQqKiBwb2ludGVyID0gMHglMC44cCkiLCBp
bmRleCwgcG5hbWUsIHBvaW50ZXIpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChj
b250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwbmFt
ZSAhPSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICpwb2ludGVyID0gY29uc3RfY2FzdDxHTHZvaWQqPihjb250ZXh0LT5n
ZXRWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xIaW50KEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBtb2RlKQotewotICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdM
ZW51bSBtb2RlID0gMHglWCkiLCB0YXJnZXQsIG1vZGUpOwotCi0gICAgdHJ5Ci0gICAgewotICAg
ICAgICBzd2l0Y2ggKG1vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZBU1RFU1Q6
Ci0gICAgICAgICAgY2FzZSBHTF9OSUNFU1Q6Ci0gICAgICAgICAgY2FzZSBHTF9ET05UX0NBUkU6
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7IAotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLSAgICAgICAgc3dpdGNo
ICh0YXJnZXQpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0dFTkVSQVRFX01JUE1BUF9I
SU5UOgotICAgICAgICAgICAgaWYgKGNvbnRleHQpIGNvbnRleHQtPnNldEdlbmVyYXRlTWlwbWFw
SGludChtb2RlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfRlJBR01F
TlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6Ci0gICAgICAgICAgICBpZiAoY29udGV4dCkg
Y29udGV4dC0+c2V0RnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludChtb2RlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0g
ICAgfQotfQotCi1HTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNCdWZmZXIoR0x1aW50IGJ1ZmZlcikK
LXsKLSAgICBFVkVOVCgiKEdMdWludCBidWZmZXIgPSAlZCkiLCBidWZmZXIpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0ICYmIGJ1ZmZlcikKLSAgICAgICAgewotICAg
ICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyT2JqZWN0ID0gY29udGV4dC0+Z2V0QnVmZmVyKGJ1
ZmZlcik7Ci0KLSAgICAgICAgICAgIGlmIChidWZmZXJPYmplY3QpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX0ZBTFNFKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
R0xfRkFMU0U7Ci19Ci0KLUdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc0VuYWJsZWQoR0xlbnVtIGNh
cCkKLXsKLSAgICBFVkVOVCgiKEdMZW51bSBjYXAgPSAweCVYKSIsIGNhcCk7Ci0KLSAgICB0cnkK
LSAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3
aXRjaCAoY2FwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX0NVTExfRkFD
RTogICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmlzQ3VsbEZhY2VFbmFibGVkKCk7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRklMTDogICAgICByZXR1cm4gY29u
dGV4dC0+aXNQb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQoKTsKLSAgICAgICAgICAgICAgY2FzZSBH
TF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6IHJldHVybiBjb250ZXh0LT5pc1NhbXBsZUFscGhh
VG9Db3ZlcmFnZUVuYWJsZWQoKTsKLSAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJB
R0U6ICAgICAgICAgIHJldHVybiBjb250ZXh0LT5pc1NhbXBsZUNvdmVyYWdlRW5hYmxlZCgpOwot
ICAgICAgICAgICAgICBjYXNlIEdMX1NDSVNTT1JfVEVTVDogICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQtPmlzU2Npc3NvclRlc3RFbmFibGVkKCk7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfU1RF
TkNJTF9URVNUOiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+aXNTdGVuY2lsVGVzdEVuYWJs
ZWQoKTsKLSAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAgICAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LT5pc0RlcHRoVGVzdEVuYWJsZWQoKTsKLSAgICAgICAgICAgICAgY2FzZSBH
TF9CTEVORDogICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5pc0JsZW5kRW5hYmxl
ZCgpOwotICAgICAgICAgICAgICBjYXNlIEdMX0RJVEhFUjogICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQtPmlzRGl0aGVyRW5hYmxlZCgpOwotICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0sIGZhbHNlKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwot
ICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotR0xib29sZWFuIF9fc3RkY2FsbCBnbElz
RmVuY2VOVihHTHVpbnQgZmVuY2UpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCki
LCBmZW5jZSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGdsOjpGZW5jZSAqZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRG
ZW5jZShmZW5jZSk7Ci0KLSAgICAgICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgcmV0dXJuIGZlbmNlT2JqZWN0LT5pc0ZlbmNlKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX0ZBTFNFKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gR0xfRkFMU0U7Ci19Ci0KLUdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc0ZyYW1lYnVmZmVyKEdM
dWludCBmcmFtZWJ1ZmZlcikKLXsKLSAgICBFVkVOVCgiKEdMdWludCBmcmFtZWJ1ZmZlciA9ICVk
KSIsIGZyYW1lYnVmZmVyKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4
dCAmJiBmcmFtZWJ1ZmZlcikKLSAgICAgICAgewotICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlck9iamVjdCA9IGNvbnRleHQtPmdldEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVy
KTsKLQotICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IEdMX0ZBTFNFOwotfQotCi1HTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNQcm9ncmFtKEdMdWludCBw
cm9ncmFtKQotewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCkiLCBwcm9ncmFtKTsK
LQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCAmJiBwcm9ncmFtKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQt
PmdldFByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICAgICAgICAgIGlmIChwcm9ncmFtT2JqZWN0KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIEdMX0ZBTFNFOwotfQotCi1HTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNR
dWVyeUVYVChHTHVpbnQgaWQpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgaWQgPSAlZCkiLCBpZCk7
Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmIChpZCA9PSAwKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gR0xfRkFMU0U7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250
ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6UXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29u
dGV4dC0+Z2V0UXVlcnkoaWQsIGZhbHNlLCBHTF9OT05FKTsKLQotICAgICAgICAgICAgaWYgKHF1
ZXJ5T2JqZWN0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBHTF9UUlVF
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9G
QUxTRSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdMX0ZBTFNFOwotfQotCi1HTGJvb2xlYW4gX19z
dGRjYWxsIGdsSXNSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKLXsKLSAgICBFVkVO
VCgiKEdMdWludCByZW5kZXJidWZmZXIgPSAlZCkiLCByZW5kZXJidWZmZXIpOwotCi0gICAgdHJ5
Ci0gICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0ICYmIHJlbmRlcmJ1ZmZlcikKLSAgICAgICAg
ewotICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gY29u
dGV4dC0+Z2V0UmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAgICAgICAgIGlmIChy
ZW5kZXJidWZmZXJPYmplY3QpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEdMX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1P
UlksIEdMX0ZBTFNFKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR0xfRkFMU0U7Ci19Ci0KLUdMYm9v
bGVhbiBfX3N0ZGNhbGwgZ2xJc1NoYWRlcihHTHVpbnQgc2hhZGVyKQotewotICAgIEVWRU5UKCIo
R0x1aW50IHNoYWRlciA9ICVkKSIsIHNoYWRlcik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAg
ICAgaWYgKGNvbnRleHQgJiYgc2hhZGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6U2hh
ZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKLQotICAgICAg
ICAgICAgaWYgKHNoYWRlck9iamVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgR0xfRkFMU0UpOwotICAgIH0KLQotICAgIHJldHVybiBHTF9GQUxTRTsKLX0KLQot
R0xib29sZWFuIF9fc3RkY2FsbCBnbElzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKLXsKLSAgICBF
VkVOVCgiKEdMdWludCB0ZXh0dXJlID0gJWQpIiwgdGV4dHVyZSk7Ci0KLSAgICB0cnkKLSAgICB7
Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
Ci0KLSAgICAgICAgaWYgKGNvbnRleHQgJiYgdGV4dHVyZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgZ2w6OlRleHR1cmUgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUZXh0dXJlKHRleHR1
cmUpOwotCi0gICAgICAgICAgICBpZiAodGV4dHVyZU9iamVjdCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgR0xfRkFMU0UpOwotICAgIH0KLQotICAgIHJldHVybiBH
TF9GQUxTRTsKLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xMaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCkK
LXsKLSAgICBFVkVOVCgiKEdMZmxvYXQgd2lkdGggPSAlZikiLCB3aWR0aCk7Ci0KLSAgICB0cnkK
LSAgICB7Ci0gICAgICAgIGlmICh3aWR0aCA8PSAwLjBmKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAg
IGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRMaW5lV2lk
dGgod2lkdGgpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19
Ci0KLXZvaWQgX19zdGRjYWxsIGdsTGlua1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCi17Ci0gICAg
RVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOwotCi0gICAgdHJ5Ci0gICAg
ewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6UHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAg
ICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29udGV4dC0+
bGlua1Byb2dyYW0ocHJvZ3JhbSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xQaXhlbFN0b3JlaShHTGVudW0gcG5hbWUs
IEdMaW50IHBhcmFtKQotewotICAgIEVWRU5UKCIoR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQg
cGFyYW0gPSAlZCkiLCBwbmFtZSwgcGFyYW0pOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAg
IGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6Ci0gICAg
ICAgICAgICAgICAgaWYgKHBhcmFtICE9IDEgJiYgcGFyYW0gIT0gMiAmJiBwYXJhbSAhPSA0ICYm
IHBhcmFtICE9IDgpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgY29udGV4dC0+c2V0VW5wYWNrQWxpZ25tZW50KHBhcmFtKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgICBjYXNlIEdMX1BBQ0tfQUxJR05NRU5UOgotICAg
ICAgICAgICAgICAgIGlmIChwYXJhbSAhPSAxICYmIHBhcmFtICE9IDIgJiYgcGFyYW0gIT0gNCAm
JiBwYXJhbSAhPSA4KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnNldFBhY2tBbGlnbm1lbnQocGFyYW0pOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JPV19PUkRF
Ul9BTkdMRToKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRQYWNrUmV2ZXJzZVJvd09yZGVy
KHBhcmFtICE9IDApOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0K
LX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xQb2x5Z29uT2Zmc2V0KEdMZmxvYXQgZmFjdG9yLCBHTGZs
b2F0IHVuaXRzKQotewotICAgIEVWRU5UKCIoR0xmbG9hdCBmYWN0b3IgPSAlZiwgR0xmbG9hdCB1
bml0cyA9ICVmKSIsIGZhY3RvciwgdW5pdHMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAg
IGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRQb2x5Z29u
T2Zmc2V0UGFyYW1zKGZhY3RvciwgdW5pdHMpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsUmVhZG5QaXhlbHNFWFQoR0xp
bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVp
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqZGF0YSkK
LXsKLSAgICBFVkVOVCgiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRo
ID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKLSAgICAgICAgICAiR0xlbnVtIGZvcm1hdCA9
IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgR0xzaXplaSBidWZTaXplID0gMHglZCwgR0x2b2lk
ICpkYXRhID0gMHglMC44cCkiLAotICAgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmICh3
aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCB8fCBidWZTaXplIDwgMCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAg
ICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRG
b3JtYXQsIGN1cnJlbnRUeXBlOwotICAgIAotICAgICAgICAgICAgLy8gRmFpbHVyZSBpbiBnZXRD
dXJyZW50UmVhZEZvcm1hdFR5cGUgaW5kaWNhdGVzIHRoYXQgbm8gY29sb3IgYXR0YWNobWVudCBp
cyBjdXJyZW50bHkgYm91bmQsCi0gICAgICAgICAgICAvLyBhbmQgYXR0ZW1wdGluZyB0byByZWFk
IGJhY2sgaWYgdGhhdCdzIHRoZSBjYXNlIGlzIGFuIGVycm9yLiBUaGUgZXJyb3Igd2lsbCBiZSBy
ZWdpc3RlcmVkCi0gICAgICAgICAgICAvLyBieSBnZXRDdXJyZW50UmVhZEZvcm1hdC4KLSAgICAg
ICAgICAgIGlmICghY29udGV4dC0+Z2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKCZjdXJyZW50Rm9y
bWF0LCAmY3VycmVudFR5cGUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgaWYgKCEoY3VycmVudEZvcm1hdCA9PSBmb3JtYXQgJiYgY3VycmVudFR5cGUgPT0gdHlwZSkg
JiYgIXZhbGlkUmVhZEZvcm1hdFR5cGUoZm9ybWF0LCB0eXBlKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBjb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgJmJ1ZlNpemUsIGRhdGEpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsUmVhZFBpeGVs
cyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lk
KiBwaXhlbHMpCi17Ci0gICAgRVZFTlQoIihHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xz
aXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51
bSBmb3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIEdMdm9pZCogcGl4ZWxzID0gMHgl
MC44cCkiLAotICAgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgIHBp
eGVscyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0
IDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAg
ICAgICAgICAgR0xlbnVtIGN1cnJlbnRGb3JtYXQsIGN1cnJlbnRUeXBlOwotICAgIAotICAgICAg
ICAgICAgLy8gRmFpbHVyZSBpbiBnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUgaW5kaWNhdGVzIHRo
YXQgbm8gY29sb3IgYXR0YWNobWVudCBpcyBjdXJyZW50bHkgYm91bmQsCi0gICAgICAgICAgICAv
LyBhbmQgYXR0ZW1wdGluZyB0byByZWFkIGJhY2sgaWYgdGhhdCdzIHRoZSBjYXNlIGlzIGFuIGVy
cm9yLiBUaGUgZXJyb3Igd2lsbCBiZSByZWdpc3RlcmVkCi0gICAgICAgICAgICAvLyBieSBnZXRD
dXJyZW50UmVhZEZvcm1hdC4KLSAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0Q3VycmVudFJl
YWRGb3JtYXRUeXBlKCZjdXJyZW50Rm9ybWF0LCAmY3VycmVudFR5cGUpKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKCEoY3VycmVudEZvcm1hdCA9PSBmb3JtYXQg
JiYgY3VycmVudFR5cGUgPT0gdHlwZSkgJiYgIXZhbGlkUmVhZEZvcm1hdFR5cGUoZm9ybWF0LCB0
eXBlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb250ZXh0LT5y
ZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgTlVMTCwgcGl4ZWxz
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewot
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lk
IF9fc3RkY2FsbCBnbFJlbGVhc2VTaGFkZXJDb21waWxlcih2b2lkKQotewotICAgIEVWRU5UKCIo
KSIpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6U2hhZGVyOjpyZWxlYXNlQ29tcGls
ZXIoKTsKLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNh
bGwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTGVudW0gdGFyZ2V0LCBH
THNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xzaXpl
aSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsIEdMc2l6ZWkgd2lk
dGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLAotICAgICAgICAgIHRhcmdldCwgc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgdHJ5Ci0gICAgewotICAg
ICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCFnbDo6SXNDb2xvclJlbmRlcmFibGUoaW50ZXJuYWxmb3JtYXQpICYmICFnbDo6SXNEZXB0
aFJlbmRlcmFibGUoaW50ZXJuYWxmb3JtYXQpICYmICFnbDo6SXNTdGVuY2lsUmVuZGVyYWJsZShp
bnRlcm5hbGZvcm1hdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9J
TlZBTElEX0VOVU0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWln
aHQgPCAwIHx8IHNhbXBsZXMgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2lkdGggPiBjb250ZXh0LT5nZXRNYXhpbXVt
UmVuZGVyYnVmZmVyRGltZW5zaW9uKCkgfHwgCi0gICAgICAgICAgICAgICAgaGVpZ2h0ID4gY29u
dGV4dC0+Z2V0TWF4aW11bVJlbmRlcmJ1ZmZlckRpbWVuc2lvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgc2FtcGxlcyA+IGNvbnRleHQtPmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEdMdWludCBoYW5kbGUgPSBjb250ZXh0LT5nZXRS
ZW5kZXJidWZmZXJIYW5kbGUoKTsKLSAgICAgICAgICAgIGlmIChoYW5kbGUgPT0gMCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2
OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFJlbmRlcmJ1ZmZlclN0b3JhZ2UobmV3IGds
OjpEZXB0aGJ1ZmZlcih3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTQ6Ci0gICAgICAgICAgICAgIGNhc2Ug
R0xfUkdCNV9BMToKLSAgICAgICAgICAgICAgY2FzZSBHTF9SR0I1NjU6Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfUkdCOF9PRVM6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnNldFJlbmRlcmJ1ZmZlclN0b3JhZ2UobmV3IGdsOjpDb2xv
cmJ1ZmZlcih3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCwgc2FtcGxlcykpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4Ogot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFJlbmRlcmJ1ZmZlclN0b3JhZ2UobmV3IGdsOjpT
dGVuY2lsYnVmZmVyKHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5zZXRSZW5kZXJidWZmZXJTdG9yYWdlKG5ldyBnbDo6RGVwdGhT
dGVuY2lsYnVmZmVyKHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCkKLXsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKHRhcmdldCwgMCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotfQot
Ci12b2lkIF9fc3RkY2FsbCBnbFNhbXBsZUNvdmVyYWdlKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xl
YW4gaW52ZXJ0KQotewotICAgIEVWRU5UKCIoR0xjbGFtcGYgdmFsdWUgPSAlZiwgR0xib29sZWFu
IGludmVydCA9ICVkKSIsIHZhbHVlLCBpbnZlcnQpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAg
ICBnbDo6Q29udGV4dCogY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAg
ICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTYW1w
bGVDb3ZlcmFnZVBhcmFtcyhnbDo6Y2xhbXAwMSh2YWx1ZSksIGludmVydCA9PSBHTF9UUlVFKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9f
c3RkY2FsbCBnbFNldEZlbmNlTlYoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKQotewot
ICAgIEVWRU5UKCIoR0x1aW50IGZlbmNlID0gJWQsIEdMZW51bSBjb25kaXRpb24gPSAweCVYKSIs
IGZlbmNlLCBjb25kaXRpb24pOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoY29uZGl0
aW9uICE9IEdMX0FMTF9DT01QTEVURURfTlYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29u
dGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2w6OkZlbmNlICpmZW5jZU9iamVjdCA9IGNv
bnRleHQtPmdldEZlbmNlKGZlbmNlKTsKLQotICAgICAgICAgICAgaWYgKGZlbmNlT2JqZWN0ID09
IE5VTEwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmVuY2VPYmpl
Y3QtPnNldEZlbmNlKGNvbmRpdGlvbik7ICAgIAotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsU2Npc3NvcihHTGludCB4LCBH
TGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKLXsKLSAgICBFVkVOVCgiKEdM
aW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVp
Z2h0ID0gJWQpIiwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAg
ICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6
OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBp
ZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2V0U2Npc3NvclBh
cmFtcyh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFNoYWRlckJpbmFyeShHTHNpemVp
IG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFyeWZvcm1hdCwgY29uc3QgR0x2
b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKQotewotICAgIEVWRU5UKCIoR0xzaXplaSBuID0g
JWQsIGNvbnN0IEdMdWludCogc2hhZGVycyA9IDB4JTAuOHAsIEdMZW51bSBiaW5hcnlmb3JtYXQg
PSAweCVYLCAiCi0gICAgICAgICAgImNvbnN0IEdMdm9pZCogYmluYXJ5ID0gMHglMC44cCwgR0xz
aXplaSBsZW5ndGggPSAlZCkiLAotICAgICAgICAgIG4sIHNoYWRlcnMsIGJpbmFyeWZvcm1hdCwg
YmluYXJ5LCBsZW5ndGgpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICAvLyBObyBiaW5hcnkg
c2hhZGVyIGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfRU5VTSk7Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQg
X19zdGRjYWxsIGdsU2hhZGVyU291cmNlKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMY2hhcioqIHN0cmluZywgY29uc3QgR0xpbnQqIGxlbmd0aCkKLXsKLSAgICBFVkVOVCgi
KEdMdWludCBzaGFkZXIgPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGNoYXIqKiBz
dHJpbmcgPSAweCUwLjhwLCBjb25zdCBHTGludCogbGVuZ3RoID0gMHglMC44cCkiLAotICAgICAg
ICAgIHNoYWRlciwgY291bnQsIHN0cmluZywgbGVuZ3RoKTsKLQotICAgIHRyeQotICAgIHsKLSAg
ICAgICAgaWYgKGNvdW50IDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4
dC0+Z2V0U2hhZGVyKHNoYWRlcik7Ci0KLSAgICAgICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRQcm9ncmFtKHNo
YWRlcikpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBzaGFkZXJPYmplY3QtPnNldFNvdXJjZShjb3VudCwgc3RyaW5nLCBs
ZW5ndGgpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0K
LXZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbEZ1bmMoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1
aW50IG1hc2spCi17Ci0gICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKEdMX0ZST05UX0FORF9CQUNL
LCBmdW5jLCByZWYsIG1hc2spOwotfQotCi12b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxGdW5jU2Vw
YXJhdGUoR0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQot
ewotICAgIEVWRU5UKCIoR0xlbnVtIGZhY2UgPSAweCVYLCBHTGVudW0gZnVuYyA9IDB4JVgsIEdM
aW50IHJlZiA9ICVkLCBHTHVpbnQgbWFzayA9ICVkKSIsIGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7
Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoZmFjZSkKLSAgICAgICAgewotICAg
ICAgICAgIGNhc2UgR0xfRlJPTlQ6Ci0gICAgICAgICAgY2FzZSBHTF9CQUNLOgotICAgICAgICAg
IGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBzd2l0Y2ggKGZ1bmMpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNl
IEdMX05FVkVSOgotICAgICAgICAgIGNhc2UgR0xfQUxXQVlTOgotICAgICAgICAgIGNhc2UgR0xf
TEVTUzoKLSAgICAgICAgICBjYXNlIEdMX0xFUVVBTDoKLSAgICAgICAgICBjYXNlIEdMX0VRVUFM
OgotICAgICAgICAgIGNhc2UgR0xfR0VRVUFMOgotICAgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoK
LSAgICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsUGFyYW1zKGZ1
bmMsIHJlZiwgbWFzayk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChmYWNlID09
IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsQmFja1BhcmFtcyhmdW5jLCByZWYsIG1h
c2spOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
LSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbE1hc2soR0x1aW50IG1hc2spCi17
Ci0gICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05UX0FORF9CQUNLLCBtYXNrKTsKLX0K
LQotdm9pZCBfX3N0ZGNhbGwgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTHVp
bnQgbWFzaykKLXsKLSAgICBFVkVOVCgiKEdMZW51bSBmYWNlID0gMHglWCwgR0x1aW50IG1hc2sg
PSAlZCkiLCBmYWNlLCBtYXNrKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgc3dpdGNoIChm
YWNlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9GUk9OVDoKLSAgICAgICAgICBjYXNl
IEdMX0JBQ0s6Ci0gICAgICAgICAgY2FzZSBHTF9GUk9OVF9BTkRfQkFDSzoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChmYWNlID09IEdMX0ZST05UIHx8IGZhY2UgPT0gR0xfRlJP
TlRfQU5EX0JBQ0spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0
U3RlbmNpbFdyaXRlbWFzayhtYXNrKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYg
KGZhY2UgPT0gR0xfQkFDSyB8fCBmYWNlID09IEdMX0ZST05UX0FORF9CQUNLKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0ZW5jaWxCYWNrV3JpdGVtYXNrKG1h
c2spOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
LSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbE9wKEdMZW51bSBmYWlsLCBHTGVu
dW0gemZhaWwsIEdMZW51bSB6cGFzcykKLXsKLSAgICBnbFN0ZW5jaWxPcFNlcGFyYXRlKEdMX0ZS
T05UX0FORF9CQUNLLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwotfQotCi12b2lkIF9fc3RkY2FsbCBn
bFN0ZW5jaWxPcFNlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWls
LCBHTGVudW0genBhc3MpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gZmFjZSA9IDB4JVgsIEdMZW51
bSBmYWlsID0gMHglWCwgR0xlbnVtIHpmYWlsID0gMHglWCwgR0xlbnVtIHpwYXMgPSAweCVYcyki
LAotICAgICAgICAgIGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7Ci0KLSAgICB0cnkKLSAgICB7
Ci0gICAgICAgIHN3aXRjaCAoZmFjZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfRlJP
TlQ6Ci0gICAgICAgICAgY2FzZSBHTF9CQUNLOgotICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5E
X0JBQ0s6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBz
d2l0Y2ggKGZhaWwpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1pFUk86Ci0gICAgICAg
ICAgY2FzZSBHTF9LRUVQOgotICAgICAgICAgIGNhc2UgR0xfUkVQTEFDRToKLSAgICAgICAgICBj
YXNlIEdMX0lOQ1I6Ci0gICAgICAgICAgY2FzZSBHTF9ERUNSOgotICAgICAgICAgIGNhc2UgR0xf
SU5WRVJUOgotICAgICAgICAgIGNhc2UgR0xfSU5DUl9XUkFQOgotICAgICAgICAgIGNhc2UgR0xf
REVDUl9XUkFQOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3dpdGNoICh6ZmFpbCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfWkVSTzoKLSAg
ICAgICAgICBjYXNlIEdMX0tFRVA6Ci0gICAgICAgICAgY2FzZSBHTF9SRVBMQUNFOgotICAgICAg
ICAgIGNhc2UgR0xfSU5DUjoKLSAgICAgICAgICBjYXNlIEdMX0RFQ1I6Ci0gICAgICAgICAgY2Fz
ZSBHTF9JTlZFUlQ6Ci0gICAgICAgICAgY2FzZSBHTF9JTkNSX1dSQVA6Ci0gICAgICAgICAgY2Fz
ZSBHTF9ERUNSX1dSQVA6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzd2l0Y2ggKHpwYXNzKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9aRVJP
OgotICAgICAgICAgIGNhc2UgR0xfS0VFUDoKLSAgICAgICAgICBjYXNlIEdMX1JFUExBQ0U6Ci0g
ICAgICAgICAgY2FzZSBHTF9JTkNSOgotICAgICAgICAgIGNhc2UgR0xfREVDUjoKLSAgICAgICAg
ICBjYXNlIEdMX0lOVkVSVDoKLSAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKLSAgICAgICAg
ICBjYXNlIEdMX0RFQ1JfV1JBUDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChm
YWNlID09IEdMX0ZST05UIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbE9wZXJhdGlvbnMoZmFpbCwg
emZhaWwsIHpwYXNzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGZhY2UgPT0g
R0xfQkFDSyB8fCBmYWNlID09IEdMX0ZST05UX0FORF9CQUNLKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0ZW5jaWxCYWNrT3BlcmF0aW9ucyhmYWlsLCB6ZmFp
bCwgenBhc3MpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKLSAgICB9Ci19Ci0KLUdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xUZXN0RmVuY2VOVihHTHVp
bnQgZmVuY2UpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7Ci0K
LSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5v
bkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGdsOjpGZW5jZSAqZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRGZW5jZShmZW5jZSk7
Ci0KLSAgICAgICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgR0xfVFJV
RSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmZW5jZU9iamVjdC0+dGVz
dEZlbmNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQot
ICAgIHsKLSAgICAgICAgZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBHTF9UUlVFOwotfQotCi12b2lkIF9fc3RkY2FsbCBnbFRleEltYWdlMkQoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3Jk
ZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykKLXsK
LSAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZlbCA9ICVkLCBHTGlu
dCBpbnRlcm5hbGZvcm1hdCA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0
ID0gJWQsICIKLSAgICAgICAgICAiR0xpbnQgYm9yZGVyID0gJWQsIEdMZW51bSBmb3JtYXQgPSAw
eCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIGNvbnN0IEdMdm9pZCogcGl4ZWxzID0gIDB4JTAuOHAp
IiwKLSAgICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAg
ICAgIGlmICghdmFsaWRJbWFnZVNpemUobGV2ZWwsIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgIT0gR0xpbnQoZm9ybWF0KSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIHZhbGlkYXRlIDx0eXBlPiBieSBpdHNlbGYgKHVzZWQgYXMgc2Vj
b25kYXJ5IGtleSBiZWxvdykKLSAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICB7Ci0gICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlRfNV82XzU6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80Ogot
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMToKLSAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOgotICAgICAgICAgIGNhc2UgR0xf
SEFMRl9GTE9BVF9PRVM6Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVDoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHZhbGlkYXRlIDxmb3JtYXQ+ICsg
PHR5cGU+IGNvbWJpbmF0aW9ucwotICAgICAgICAvLyAtIGludmFsaWQgPGZvcm1hdD4gLT4gc2V0
cyBJTlZBTElEX0VOVU0KLSAgICAgICAgLy8gLSBpbnZhbGlkIDxmb3JtYXQ+Kzx0eXBlPiBjb21i
aW5hdGlvbiAtPiBzZXRzIElOVkFMSURfT1BFUkFUSU9OCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0
KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdM
X0xVTUlOQU5DRToKLSAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICAgICAg
ICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgotICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAgICAgICAg
ICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICBjYXNlIEdMX1JHQjoKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgotICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgot
ICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIEdMX1JHQkE6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgotICAgICAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxP
QVQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6Ci0gICAgICAgICAgICBzd2l0Y2gg
KHR5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllU
RToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOiAgLy8gZXJyb3IgY2FzZXMgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMg
YXJlIGhhbmRsZWQgYmVsb3cKLSAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUOgotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19B
TkdMRToKLSAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6
Ci0gICAgICAgICAgICBicmVhazsgCi0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6
Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
SU5UOgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5D
SUxfT0VTOgotICAgICAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX0VOVU0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJvcmRlciAhPSAwKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
bGV2ZWwgPiBjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgotICAgICAgICAgICAgICAgIGlmICh3aWR0
aCA+IChjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSB8fAot
ICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPiAoY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVE
aW1lbnNpb24oKSA+PiBsZXZlbCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1g6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9ZOgotICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WToKLSAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOgotICAgICAg
ICAgICAgICAgIGlmICh3aWR0aCAhPSBoZWlnaHQpCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gKGNvbnRleHQtPmdldE1heGlt
dW1DdWJlVGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSB8fAotICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQgPiAoY29udGV4dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgPj4g
bGV2ZWwpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dp
dGNoIChmb3JtYXQpIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RD
X0RYVDFfRVhUOgotICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhUOgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJl
cygpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
QU5HTEU6Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUM1RleHR1cmVz
KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRToKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQ1VGV4dHVyZXMo
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9PRVM6Ci0gICAgICAgICAgICAgICAgaWYgKCFjb250
ZXh0LT5zdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gT0VT
X2RlcHRoX3RleHR1cmUgc3VwcG9ydHMgbG9hZGluZyBkZXB0aCBkYXRhIGFuZCBtdWx0aXBsZSBs
ZXZlbHMsCi0gICAgICAgICAgICAgICAgLy8gYnV0IEFOR0xFX2RlcHRoX3RleHR1cmUgZG9lcyBu
b3QKLSAgICAgICAgICAgICAgICBpZiAocGl4ZWxzICE9IE5VTEwgfHwgbGV2ZWwgIT0gMCkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQzMlRleHR1cmVz
KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIGlmICh0eXBlID09IEdMX0hBTEZfRkxPQVRfT0VTKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMo
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJl
MkQoKTsKLQotICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZSkKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1t
dXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGds
OjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7
Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJs
ZSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKLSAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZS0+c2V0SW1hZ2VQb3NYKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YOgotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFnZU5lZ1go
bGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxp
Z25tZW50KCksIHBpeGVscyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6Ci0gICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlUG9zWShsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWToKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0SW1h
Z2VOZWdZKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVu
cGFja0FsaWdubWVudCgpLCBwaXhlbHMpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFnZVBvc1oobGV2ZWwsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmUt
PnNldEltYWdlTmVnWihsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0
LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmYoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQotewotICAgIEVWRU5UKCIoR0xlbnVt
IHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50IHBhcmFtID0gJWYpIiwg
dGFyZ2V0LCBwbmFtZSwgcGFyYW0pOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChj
b250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZTsKLQot
ICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+
Z2V0VGV4dHVyZTJEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKLSAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4
dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUzoKLSAgICAgICAg
ICAgICAgICBpZiAoIXRleHR1cmUtPnNldFdyYXBTKChHTGVudW0pcGFyYW0pKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5V
TSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgotICAgICAgICAgICAgICAgIGlmICghdGV4dHVy
ZS0+c2V0V3JhcFQoKEdMZW51bSlwYXJhbSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NSU5fRklMVEVSOgotICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0TWluRmlsdGVy
KChHTGVudW0pcGFyYW0pKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UjoKLSAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldE1hZ0ZpbHRlcigoR0xlbnVtKXBh
cmFtKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFOgotICAgICAg
ICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0VXNhZ2UoKEdMZW51bSlwYXJhbSkpCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJl
LT5zZXRNYXhBbmlzb3Ryb3B5KChmbG9hdClwYXJhbSwgY29udGV4dC0+Z2V0VGV4dHVyZU1heEFu
aXNvdHJvcHkoKSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsVGV4
UGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0KiBw
YXJhbXMpCi17Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIChHTGZsb2F0KSpw
YXJhbXMpOwotfQotCi12b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmkoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKLXsKLSAgICBFVkVOVCgiKEdMZW51bSB0YXJn
ZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCBwYXJhbSA9ICVkKSIsIHRhcmdl
dCwgcG5hbWUsIHBhcmFtKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4
dCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmU7Ci0KLSAgICAg
ICAgICAgIHN3aXRjaCAodGFyZ2V0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfMkQ6Ci0gICAgICAgICAgICAgICAgdGV4dHVyZSA9IGNvbnRleHQtPmdldFRl
eHR1cmUyRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVA6Ci0gICAgICAgICAgICAgICAgdGV4dHVyZSA9IGNvbnRleHQtPmdl
dFRleHR1cmVDdWJlTWFwKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6Ci0gICAgICAgICAgICAg
ICAgaWYgKCF0ZXh0dXJlLT5zZXRXcmFwUygoR0xlbnVtKXBhcmFtKSkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX1dSQVBfVDoKLSAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNl
dFdyYXBUKChHTGVudW0pcGFyYW0pKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUjoKLSAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldE1pbkZpbHRlcigoR0xl
bnVtKXBhcmFtKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6Ci0g
ICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRNYWdGaWx0ZXIoKEdMZW51bSlwYXJhbSkp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRToKLSAgICAgICAgICAg
ICAgICBpZiAoIXRleHR1cmUtPnNldFVzYWdlKChHTGVudW0pcGFyYW0pKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgotICAgICAgICAgICAgICAgIGlm
ICghY29udGV4dC0+c3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5V
TSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0
TWF4QW5pc290cm9weSgoZmxvYXQpcGFyYW0sIGNvbnRleHQtPmdldFRleHR1cmVNYXhBbmlzb3Ry
b3B5KCkpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFt
ZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQqIHBhcmFtcykK
LXsKLSAgICBnbFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgKnBhcmFtcyk7Ci19Ci0KLXZv
aWQgX19zdGRjYWxsIGdsVGV4U3RvcmFnZTJERVhUKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2
ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
KQotewotICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMc2l6ZWkgbGV2ZWxzID0g
JWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xz
aXplaSBoZWlnaHQgPSAlZCkiLAotICAgICAgICAgICB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAodGFy
Z2V0ICE9IEdMX1RFWFRVUkVfMkQgJiYgdGFyZ2V0ICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHdpZHRoIDwgMSB8fCBoZWlnaHQgPCAxIHx8IGxldmVscyA8
IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01B
UCAmJiB3aWR0aCAhPSBoZWlnaHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChsZXZlbHMgIT0g
MSAmJiBsZXZlbHMgIT0gZ2w6OmxvZzIoc3RkOjptYXgod2lkdGgsIGhlaWdodCkpICsgMSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LSAgICAgICAgfQotCi0gICAgICAgIEdMZW51bSBmb3JtYXQgPSBnbDo6RXh0cmFjdEZvcm1hdChp
bnRlcm5hbGZvcm1hdCk7Ci0gICAgICAgIEdMZW51bSB0eXBlID0gZ2w6OkV4dHJhY3RUeXBlKGlu
dGVybmFsZm9ybWF0KTsKLQotICAgICAgICBpZiAoZm9ybWF0ID09IEdMX05PTkUgfHwgdHlwZSA9
PSBHTF9OT05FKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfMkQ6Ci0gICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gY29udGV4
dC0+Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICBo
ZWlnaHQgPiBjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lvbigpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgotICAgICAgICAgICAgICAgIGlmICh3aWR0
aCA+IGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgIGhlaWdodCA+IGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVu
c2lvbigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYg
KGxldmVscyAhPSAxICYmICFjb250ZXh0LT5zdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWdsOjppc1BvdzIod2lkdGgpIHx8ICFn
bDo6aXNQb3cyKGhlaWdodCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgotICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFf
RVhUOgotICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMo
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xF
OgotICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9J
TlZBTElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgot
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQ1VGV4dHVyZXMoKSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX0VOVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9S
R0IzMkZfRVhUOgotICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKLSAgICAgICAg
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgotICAgICAgICAgICAgICBjYXNlIEdMX0xV
TUlOQU5DRV9BTFBIQTMyRl9FWFQ6Ci0gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBw
b3J0c0Zsb2F0MzJUZXh0dXJlcygpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1JHQkExNkZfRVhU
OgotICAgICAgICAgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6Ci0gICAgICAgICAgICAgIGNhc2Ug
R0xfQUxQSEExNkZfRVhUOgotICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkpCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6Ci0gICAgICAgICAgICAgIGNhc2UgR0xf
REVQVEhfQ09NUE9ORU5UMzJfT0VTOgotICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RF
TkNJTDhfT0VTOgotICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEZXB0aFRl
eHR1cmVzKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gQU5HTEVfZGVwdGhfdGV4dHVyZSBvbmx5
IHN1cHBvcnRzIDEtbGV2ZWwgdGV4dHVyZXMKLSAgICAgICAgICAgICAgICBpZiAobGV2ZWxzICE9
IDEpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFXzJE
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleHR1cmUg
PSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKLQotICAgICAgICAgICAgICAgIGlmICghdGV4dHVy
ZSB8fCB0ZXh0dXJlLT5pZCgpID09IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0ZXh0
dXJlLT5zdG9yYWdlKGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VC
RV9NQVApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFw
ICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKLQotICAgICAgICAgICAg
ICAgIGlmICghdGV4dHVyZSB8fCB0ZXh0dXJlLT5pZCgpID09IDApCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5pc0lt
bXV0YWJsZSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICB0ZXh0dXJlLT5zdG9yYWdlKGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2Fs
bCBnbFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25z
dCBHTHZvaWQqIHBpeGVscykKLXsKLSAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBH
TGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwg
IgotICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdM
ZW51bSBmb3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsICIKLSAgICAgICAgICAiY29u
c3QgR0x2b2lkKiBwaXhlbHMgPSAweCUwLjhwKSIsCi0gICAgICAgICAgIHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsK
LQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJn
ZXQodGFyZ2V0KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFM
SURfRU5VTSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobGV2ZWwgPCAwIHx8IHhvZmZzZXQg
PCAwIHx8IHlvZmZzZXQgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zm
c2V0IDwgd2lkdGggfHwgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zm
c2V0IDwgaGVpZ2h0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWNoZWNrVGV4dHVyZUZvcm1h
dFR5cGUoZm9ybWF0LCB0eXBlKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOyAvLyBl
cnJvciBpcyBzZXQgYnkgaGVscGVyIGZ1bmN0aW9uCi0gICAgICAgIH0KLQotICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlm
IChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250ZXh0LT5n
ZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBpZiAoZm9ybWF0ID09IEdMX0ZMT0FUKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMoKSkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0p
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYg
KGZvcm1hdCA9PSBHTF9IQUxGX0ZMT0FUX09FUykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlm
IChnbDo6SXNEZXB0aFRleHR1cmUoZm9ybWF0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gR0xfVEVY
VFVSRV8yRCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIC8vIE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcgZGVwdGggZGF0YSwg
YnV0IEFOR0xFX2RlcHRoX3RleHR1cmUgZG9lcyBub3QKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCB8fCBwaXhlbHMgPT0gTlVMTCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJE
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlU3ViSW1hZ2VQYXJhbXMyRChmYWxzZSwg
d2lkdGgsIGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwgbGV2ZWwsIGZvcm1hdCwgdHlwZSwgdGV4
dHVyZSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5z
dWJJbWFnZShsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChnbDo6SXNDdWJlbWFw
VGV4dHVyZVRhcmdldCh0YXJnZXQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGds
OjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlU3ViSW1hZ2VQYXJhbXNDdWJlKGZhbHNlLCB3
aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCB0YXJnZXQsIGxldmVsLCBmb3JtYXQsIHR5
cGUsIHRleHR1cmUpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZS0+c3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxz
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewot
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lk
IF9fc3RkY2FsbCBnbFVuaWZvcm0xZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KQotewotICAg
IGdsVW5pZm9ybTFmdihsb2NhdGlvbiwgMSwgJngpOwotfQotCi12b2lkIF9fc3RkY2FsbCBnbFVu
aWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYp
Ci17Ci0gICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQs
IGNvbnN0IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7Ci0KLSAg
ICB0cnkKLSAgICB7Ci0gICAgICAgIGlmIChjb3VudCA8IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChsb2NhdGlvbiA9PSAtMSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAg
Z2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJv
Z3JhbUJpbmFyeSgpOwotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5p
Zm9ybTFmdihsb2NhdGlvbiwgY291bnQsIHYpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0
ZGNhbGwgZ2xVbmlmb3JtMWkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgpCi17Ci0gICAgZ2xVbmlm
b3JtMWl2KGxvY2F0aW9uLCAxLCAmeCk7Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTFp
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCi17Ci0gICAg
RVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdM
aW50KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOwotCi0gICAgdHJ5Ci0gICAg
ewotICAgICAgICBpZiAoY291bnQgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobG9jYXRp
b24gPT0gLTEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0K
LSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpQcm9ncmFt
QmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnko
KTsKLSAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNldFVuaWZvcm0xaXYobG9j
YXRpb24sIGNvdW50LCB2KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsVW5p
Zm9ybTJmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKLXsKLSAgICBHTGZs
b2F0IHh5WzJdID0ge3gsIHl9OwotCi0gICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCAxLCAoR0xm
bG9hdCopJnh5KTsKLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMmZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQotewotICAgIEVWRU5UKCIoR0xp
bnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2ID0g
MHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAg
ICBpZiAoY291bnQgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChsb2NhdGlv
biA9PSAtMSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQot
ICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2w6OlByb2dyYW1C
aW5hcnkgKnByb2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgp
OwotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTJmdihsb2Nh
dGlvbiwgY291bnQsIHYpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlm
b3JtMmkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpCi17Ci0gICAgR0xpbnQgeHlb
NF0gPSB7eCwgeX07Ci0KLSAgICBnbFVuaWZvcm0yaXYobG9jYXRpb24sIDEsIChHTGludCopJnh5
KTsKLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCogdikKLXsKLSAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9u
ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIsIGxv
Y2F0aW9uLCBjb3VudCwgdik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmIChjb3VudCA8
IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChsb2NhdGlvbiA9PSAtMSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkg
PSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOwotICAgICAgICAgICAgaWYgKCFw
cm9ncmFtQmluYXJ5KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
ICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHYpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtM2YoR0xpbnQgbG9jYXRpb24s
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCi17Ci0gICAgR0xmbG9hdCB4eXpbM10g
PSB7eCwgeSwgen07Ci0KLSAgICBnbFVuaWZvcm0zZnYobG9jYXRpb24sIDEsIChHTGZsb2F0Kikm
eHl6KTsKLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQotewotICAgIEVWRU5UKCIoR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2ID0gMHglMC44
cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAo
Y291bnQgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNv
bnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFt
QmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKLSAgICAgICAgICAg
IGlmICghcHJvZ3JhbUJpbmFyeSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNldFVuaWZvcm0zZnYobG9jYXRpb24sIGNvdW50LCB2
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTNpKEdMaW50IGxv
Y2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQotewotICAgIEdMaW50IHh5elszXSA9
IHt4LCB5LCB6fTsKLQotICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgMSwgKEdMaW50KikmeHl6
KTsKLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCogdikKLXsKLSAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9u
ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIsIGxv
Y2F0aW9uLCBjb3VudCwgdik7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmIChjb3VudCA8
IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChsb2NhdGlvbiA9PSAtMSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkg
PSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOwotICAgICAgICAgICAgaWYgKCFw
cm9ncmFtQmluYXJ5KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
ICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTNpdihsb2NhdGlvbiwgY291bnQsIHYpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtNGYoR0xpbnQgbG9jYXRpb24s
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKLXsKLSAgICBHTGZs
b2F0IHh5endbNF0gPSB7eCwgeSwgeiwgd307Ci0KLSAgICBnbFVuaWZvcm00ZnYobG9jYXRpb24s
IDEsIChHTGZsb2F0KikmeHl6dyk7Ci19Ci0KLXZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTRmdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKLXsKLSAgICBF
VkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xm
bG9hdCogdiA9IDB4JTAuOHApIiwgbG9jYXRpb24sIGNvdW50LCB2KTsKLQotICAgIHRyeQotICAg
IHsKLSAgICAgICAgaWYgKGNvdW50IDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxvY2F0
aW9uID09IC0xKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwot
Ci0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6UHJvZ3Jh
bUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5
KCk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtNGZ2KGxv
Y2F0aW9uLCBjb3VudCwgdikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFVu
aWZvcm00aShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQg
dykKLXsKLSAgICBHTGludCB4eXp3WzRdID0ge3gsIHksIHosIHd9OwotCi0gICAgZ2xVbmlmb3Jt
NGl2KGxvY2F0aW9uLCAxLCAoR0xpbnQqKSZ4eXp3KTsKLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xV
bmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikK
LXsKLSAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwg
Y29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7Ci0KLSAgICB0
cnkKLSAgICB7Ci0gICAgICAgIGlmIChjb3VudCA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChsb2NhdGlvbiA9PSAtMSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2w6
OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3Jh
bUJpbmFyeSgpOwotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9y
bTRpdihsb2NhdGlvbiwgY291bnQsIHYpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNh
bGwgZ2xVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSkKLXsKLSAgICBFVkVOVCgiKEdM
aW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9z
ZSA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKLSAgICAgICAgICBsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAg
ICBpZiAoY291bnQgPCAwIHx8IHRyYW5zcG9zZSAhPSBHTF9GQUxTRSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJl
bnRQcm9ncmFtQmluYXJ5KCk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5z
ZXRVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0K
LX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSkK
LXsKLSAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwg
R0xib29sZWFuIHRyYW5zcG9zZSA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHAp
IiwKLSAgICAgICAgICBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwotCi0gICAg
dHJ5Ci0gICAgewotICAgICAgICBpZiAoY291bnQgPCAwIHx8IHRyYW5zcG9zZSAhPSBHTF9GQUxT
RSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9
IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7Ci0gICAgICAgICAgICBpZiAoIXBy
b2dyYW1CaW5hcnkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYg
KCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdmFs
dWUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtTWF0cml4NGZ2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHTGZsb2F0KiB2YWx1ZSkKLXsKLSAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVkLCBjb25zdCBHTGZsb2F0
KiB2YWx1ZSA9IDB4JTAuOHApIiwKLSAgICAgICAgICBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoY291bnQgPCAwIHx8IHRy
YW5zcG9zZSAhPSBHTF9GQUxTRSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxvY2F0aW9uID09
IC0xKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAg
ICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFy
eSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7Ci0g
ICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwg
Z2xVc2VQcm9ncmFtKEdMdWludCBwcm9ncmFtKQotewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dy
YW0gPSAlZCkiLCBwcm9ncmFtKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29u
dGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3Qg
PSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAgICAgICBpZiAoIXByb2dy
YW1PYmplY3QgJiYgcHJvZ3JhbSAhPSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocHJvZ3JhbSAh
PSAwICYmICFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwg
Z2xWYWxpZGF0ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCi17Ci0gICAgRVZFTlQoIihHTHVpbnQg
cHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlm
IChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9i
amVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICAgICAgICAgIGlmICgh
cHJvZ3JhbU9iamVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+dmFsaWRhdGUo
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewot
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lk
IF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjFmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4KQotewot
ICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZmxvYXQgeCA9ICVmKSIsIGluZGV4LCB4
KTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVY
X0FUVFJJQlMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgeCwgMCwgMCwgMSB9OwotICAgICAgICAg
ICAgY29udGV4dC0+c2V0VmVydGV4QXR0cmliKGluZGV4LCB2YWxzKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFZlcnRl
eEF0dHJpYjFmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKLXsKLSAgICBF
VkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUwLjhw
KSIsIGluZGV4LCB2YWx1ZXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoaW5kZXgg
Pj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29u
dGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB2YWx1ZXNb
MF0sIDAsIDAsIDEgfTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRleEF0dHJpYihpbmRl
eCwgdmFscyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0K
LQotdm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIyZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQg
eCwgR0xmbG9hdCB5KQotewotICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZmxvYXQg
eCA9ICVmLCBHTGZsb2F0IHkgPSAlZikiLCBpbmRleCwgeCwgeSk7Ci0KLSAgICB0cnkKLSAgICB7
Ci0gICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBHTGZsb2F0
IHZhbHNbNF0gPSB7IHgsIHksIDAsIDEgfTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRl
eEF0dHJpYihpbmRleCwgdmFscyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIyZnYoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgaW5kZXgg
PSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWVzID0gMHglMC44cCkiLCBpbmRleCwgdmFsdWVzKTsK
LQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FU
VFJJQlMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgdmFsdWVzWzBdLCB2YWx1ZXNbMV0sIDAsIDEg
fTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRleEF0dHJpYihpbmRleCwgdmFscyk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0
ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIzZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHopCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4
ID0gJWYsIEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0IHogPSAlZikiLCBpbmRleCwgeCwgeSwgeik7
Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOwotCi0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBHTGZsb2F0IHZhbHNbNF0gPSB7IHgsIHksIHosIDEgfTsKLSAgICAgICAgICAg
IGNvbnRleHQtPnNldFZlcnRleEF0dHJpYihpbmRleCwgdmFscyk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhB
dHRyaWIzZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpCi17Ci0gICAgRVZF
TlQoIihHTHVpbnQgaW5kZXggPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWVzID0gMHglMC44cCki
LCBpbmRleCwgdmFsdWVzKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49
IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRl
eHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgdmFsdWVzWzBd
LCB2YWx1ZXNbMV0sIHZhbHVlc1syXSwgMSB9OwotICAgICAgICAgICAgY29udGV4dC0+c2V0VmVy
dGV4QXR0cmliKGluZGV4LCB2YWxzKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjRmKEdMdWludCBp
bmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KQotewotICAg
IEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAl
ZiwgR0xmbG9hdCB6ID0gJWYsIEdMZmxvYXQgdyA9ICVmKSIsIGluZGV4LCB4LCB5LCB6LCB3KTsK
LQotICAgIHRyeQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FU
VFJJQlMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgeCwgeSwgeiwgdyB9OwotICAgICAgICAgICAg
Y29udGV4dC0+c2V0VmVydGV4QXR0cmliKGluZGV4LCB2YWxzKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0
dHJpYjRmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKLXsKLSAgICBFVkVO
VCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUwLjhwKSIs
IGluZGV4LCB2YWx1ZXMpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBpZiAoaW5kZXggPj0g
Z2w6Ok1BWF9WRVJURVhfQVRUUklCUykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4
dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2V0VmVydGV4QXR0cmliKGluZGV4
LCB2YWx1ZXMpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19
Ci0KLXZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdMdWludCBpbmRl
eCwgR0x1aW50IGRpdmlzb3IpCi17Ci0gICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0x1
aW50IGRpdmlzb3IgPSAlZCkiLCBpbmRleCwgZGl2aXNvcik7Ci0KLSAgICB0cnkKLSAgICB7Ci0g
ICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwot
Ci0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5z
ZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0
dHJpYlBvaW50ZXIoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29s
ZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQqIHB0cikKLXsKLSAg
ICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGludCBzaXplID0gJWQsIEdMZW51bSB0eXBl
ID0gMHglWCwgIgotICAgICAgICAgICJHTGJvb2xlYW4gbm9ybWFsaXplZCA9ICVkLCBHTHNpemVp
IHN0cmlkZSA9ICVkLCBjb25zdCBHTHZvaWQqIHB0ciA9IDB4JTAuOHApIiwKLSAgICAgICAgICBp
bmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBwdHIpOwotCi0gICAgdHJ5Ci0g
ICAgewotICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKHNpemUgPCAxIHx8IHNpemUgPiA0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0JZVEU6Ci0g
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6
Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKLSAgICAgICAgICBjYXNlIEdMX0ZJ
WEVEOgotICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3RyaWRlIDwgMCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAg
ICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2V0VmVy
dGV4QXR0cmliU3RhdGUoaW5kZXgsIGNvbnRleHQtPmdldEFycmF5QnVmZmVyKCksIHNpemUsIHR5
cGUsIChub3JtYWxpemVkID09IEdMX1RSVUUpLCBzdHJpZGUsIHB0cik7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xWaWV3
cG9ydChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKLXsK
LSAgICBFVkVOVCgiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0g
JWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQpIiwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICB0
cnkKLSAgICB7Ci0gICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+c2V0Vmlld3BvcnRQYXJhbXMoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQotdm9pZCBfX3N0ZGNhbGwgZ2xCbGl0
RnJhbWVidWZmZXJBTkdMRShHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBH
TGludCBzcmNZMSwgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQg
ZHN0WTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
bWFzaywgR0xlbnVtIGZpbHRlcikKLXsKLSAgICBFVkVOVCgiKEdMaW50IHNyY1gwID0gJWQsIEdM
aW50IHNyY1kwID0gJWQsIEdMaW50IHNyY1gxID0gJWQsIEdMaW50IHNyY1kxID0gJWQsICIKLSAg
ICAgICAgICAiR0xpbnQgZHN0WDAgPSAlZCwgR0xpbnQgZHN0WTAgPSAlZCwgR0xpbnQgZHN0WDEg
PSAlZCwgR0xpbnQgZHN0WTEgPSAlZCwgIgotICAgICAgICAgICJHTGJpdGZpZWxkIG1hc2sgPSAw
eCVYLCBHTGVudW0gZmlsdGVyID0gMHglWCkiLAotICAgICAgICAgIHNyY1gwLCBzcmNZMCwgc3Jj
WDEsIHNyY1gxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKLQot
ICAgIHRyeQotICAgIHsKLSAgICAgICAgc3dpdGNoIChmaWx0ZXIpCi0gICAgICAgIHsKLSAgICAg
ICAgICBjYXNlIEdMX05FQVJFU1Q6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoKG1hc2sgJiB+KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVO
Q0lMX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKSkgIT0gMCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHNyY1gxIC0gc3JjWDAgIT0gZHN0WDEgLSBkc3RYMCB8fCBzcmNZMSAtIHNy
Y1kwICE9IGRzdFkxIC0gZHN0WTApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiU2NhbGlu
ZyBhbmQgZmxpcHBpbmcgaW4gQmxpdEZyYW1lYnVmZmVyQU5HTEUgbm90IHN1cHBvcnRlZCBieSB0
aGlzIGltcGxlbWVudGF0aW9uIik7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgp
ID09IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlckhhbmRsZSgpKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIEVSUigiQmxpdHMgd2l0aCB0aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3Rp
bmF0aW9uIGZyYW1lYnVmZmVyIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRp
b24uIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29udGV4dC0+YmxpdEZyYW1lYnVmZmVy
KHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwg
bWFzayk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KLX0KLQot
dm9pZCBfX3N0ZGNhbGwgZ2xUZXhJbWFnZTNET0VTKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
THNpemVpIGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRl
ciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKQotewot
ICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVk
LCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsIEdMaW50IGJvcmRlciA9
ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4
JXgsIGNvbnN0IEdMdm9pZCogcGl4ZWxzID0gMHglMC44cCkiLAotICAgICAgICAgIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIHBpeGVscyk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIFVOSU1QTEVNRU5U
RUQoKTsgICAvLyBGSVhNRQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12
b2lkIF9fc3RkY2FsbCBnbEdldFByb2dyYW1CaW5hcnlPRVMoR0x1aW50IHByb2dyYW0sIEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5KQotewotICAgIEVW
RU5UKCIoR0xlbnVtIHByb2dyYW0gPSAweCVYLCBidWZTaXplID0gJWQsIGxlbmd0aCA9IDB4JTAu
OHAsIGJpbmFyeUZvcm1hdCA9IDB4JTAuOHAsIGJpbmFyeSA9IDB4JTAuOHApIiwKLSAgICAgICAg
ICBwcm9ncmFtLCBidWZTaXplLCBsZW5ndGgsIGJpbmFyeUZvcm1hdCwgYmluYXJ5KTsKLQotICAg
IHRyeQotICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKLQotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dy
YW0pOwotCi0gICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3Qt
PmlzTGlua2VkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZ2w6
OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFt
QmluYXJ5KCk7Ci0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNhdmUoYmlu
YXJ5LCBidWZTaXplLCBsZW5ndGgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICpiaW5hcnlGb3JtYXQgPSBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCi0gICAgewotICAgICAgICByZXR1
cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgfQotfQotCi12b2lkIF9fc3RkY2FsbCBn
bFByb2dyYW1CaW5hcnlPRVMoR0x1aW50IHByb2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGlu
dCBsZW5ndGgpCi17Ci0gICAgRVZFTlQoIihHTGVudW0gcHJvZ3JhbSA9IDB4JVgsIGJpbmFyeUZv
cm1hdCA9IDB4JXgsIGJpbmFyeSA9IDB4JTAuOHAsIGxlbmd0aCA9ICVkKSIsCi0gICAgICAgICAg
cHJvZ3JhbSwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7Ci0KLSAgICB0cnkKLSAgICB7
Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
Ci0KLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChiaW5h
cnlGb3JtYXQgIT0gR0xfUFJPR1JBTV9CSU5BUllfQU5HTEUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0
UHJvZ3JhbShwcm9ncmFtKTsKLQotICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPnNldFByb2dyYW1C
aW5hcnkocHJvZ3JhbSwgYmluYXJ5LCBsZW5ndGgpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLV9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9p
bnRlclR5cGUgX19zdGRjYWxsIGdsR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqcHJvY25hbWUp
Ci17Ci0gICAgc3RydWN0IEV4dGVuc2lvbgotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqbmFt
ZTsKLSAgICAgICAgX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBhZGRy
ZXNzOwotICAgIH07Ci0KLSAgICBzdGF0aWMgY29uc3QgRXh0ZW5zaW9uIGdsRXh0ZW5zaW9uc1td
ID0KLSAgICB7Ci0gICAgICAgIHsiZ2xUZXhJbWFnZTNET0VTIiwgKF9fZWdsTXVzdENhc3RUb1By
b3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xUZXhJbWFnZTNET0VTfSwKLSAgICAgICAgeyJnbEJs
aXRGcmFtZWJ1ZmZlckFOR0xFIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRl
clR5cGUpZ2xCbGl0RnJhbWVidWZmZXJBTkdMRX0sCi0gICAgICAgIHsiZ2xSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBv
aW50ZXJUeXBlKWdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEV9LAotICAgICAg
ICB7ImdsRGVsZXRlRmVuY2VzTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2lu
dGVyVHlwZSlnbERlbGV0ZUZlbmNlc05WfSwKLSAgICAgICAgeyJnbEdlbkZlbmNlc05WIiwgKF9f
ZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZW5GZW5jZXNOVn0sCi0g
ICAgICAgIHsiZ2xJc0ZlbmNlTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2lu
dGVyVHlwZSlnbElzRmVuY2VOVn0sCi0gICAgICAgIHsiZ2xUZXN0RmVuY2VOViIsIChfX2VnbE11
c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsVGVzdEZlbmNlTlZ9LAotICAgICAg
ICB7ImdsR2V0RmVuY2Vpdk5WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRl
clR5cGUpZ2xHZXRGZW5jZWl2TlZ9LAotICAgICAgICB7ImdsRmluaXNoRmVuY2VOViIsIChfX2Vn
bE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRmluaXNoRmVuY2VOVn0sCi0g
ICAgICAgIHsiZ2xTZXRGZW5jZU5WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9p
bnRlclR5cGUpZ2xTZXRGZW5jZU5WfSwKLSAgICAgICAgeyJnbEdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWds
R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFfSwKLSAgICAgICAgeyJnbFRleFN0b3JhZ2Uy
REVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsVGV4U3Rv
cmFnZTJERVhUfSwKLSAgICAgICAgeyJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQiLCAoX19l
Z2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldEdyYXBoaWNzUmVzZXRT
dGF0dXNFWFR9LAotICAgICAgICB7ImdsUmVhZG5QaXhlbHNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRv
UHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbFJlYWRuUGl4ZWxzRVhUfSwKLSAgICAgICAgeyJn
bEdldG5Vbmlmb3JtZnZFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVy
VHlwZSlnbEdldG5Vbmlmb3JtZnZFWFR9LAotICAgICAgICB7ImdsR2V0blVuaWZvcm1pdkVYVCIs
IChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0blVuaWZvcm1p
dkVYVH0sCi0gICAgICAgIHsiZ2xHZW5RdWVyaWVzRVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3Bl
ckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZW5RdWVyaWVzRVhUfSwKLSAgICAgICAgeyJnbERlbGV0
ZVF1ZXJpZXNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSln
bERlbGV0ZVF1ZXJpZXNFWFR9LAotICAgICAgICB7ImdsSXNRdWVyeUVYVCIsIChfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsSXNRdWVyeUVYVH0sCi0gICAgICAgIHsi
Z2xCZWdpblF1ZXJ5RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5
cGUpZ2xCZWdpblF1ZXJ5RVhUfSwKLSAgICAgICAgeyJnbEVuZFF1ZXJ5RVhUIiwgKF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xFbmRRdWVyeUVYVH0sCi0gICAgICAg
IHsiZ2xHZXRRdWVyeWl2RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRl
clR5cGUpZ2xHZXRRdWVyeWl2RVhUfSwKLSAgICAgICAgeyJnbEdldFF1ZXJ5T2JqZWN0dWl2RVhU
IiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRRdWVyeU9i
amVjdHVpdkVYVH0sCi0gICAgICAgIHsiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiLCAoX19l
Z2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbFZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRX0sCi0gICAgICAgIHsiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiLCAoX19lZ2xN
dXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbERyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRX0sCi0gICAgICAgIHsiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIsIChfX2VnbE11
c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEV9LAotICAgICAgICB7ImdsR2V0UHJvZ3JhbUJpbmFyeU9FUyIsIChfX2VnbE11c3RDYXN0
VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0UHJvZ3JhbUJpbmFyeU9FU30sCi0gICAg
ICAgIHsiZ2xQcm9ncmFtQmluYXJ5T0VTIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9u
UG9pbnRlclR5cGUpZ2xQcm9ncmFtQmluYXJ5T0VTfSwgICAgfTsKLQotICAgIGZvciAoaW50IGV4
dCA9IDA7IGV4dCA8IHNpemVvZihnbEV4dGVuc2lvbnMpIC8gc2l6ZW9mKEV4dGVuc2lvbik7IGV4
dCsrKQotICAgIHsKLSAgICAgICAgaWYgKHN0cmNtcChwcm9jbmFtZSwgZ2xFeHRlbnNpb25zW2V4
dF0ubmFtZSkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRXh0ZW5zaW9uc1tleHRdLmFkZHJlc3M7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotLy8gTm9uLXB1Ymxp
YyBmdW5jdGlvbnMgdXNlZCBieSBFR0wKLQotYm9vbCBfX3N0ZGNhbGwgZ2xCaW5kVGV4SW1hZ2Uo
ZWdsOjpTdXJmYWNlICpzdXJmYWNlKQotewotICAgIEVWRU5UKCIoZWdsOjpTdXJmYWNlKiBzdXJm
YWNlID0gMHglMC44cCkiLAotICAgICAgICAgIHN1cmZhY2UpOwotCi0gICAgdHJ5Ci0gICAgewot
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwot
Ci0gICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6VGV4dHVy
ZTJEICp0ZXh0dXJlT2JqZWN0ID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7Ci0KLSAgICAgICAg
ICAgIGlmICh0ZXh0dXJlT2JqZWN0LT5pc0ltbXV0YWJsZSgpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKHRleHR1cmVPYmplY3QpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGV4dHVy
ZU9iamVjdC0+YmluZFRleEltYWdlKHN1cmZhY2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvbGliR0xFU3YyLmRlZiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvbGliR0xFU3YyLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNWY5MzVjMy4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdM
RVN2Mi5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotTElCUkFSWSBsaWJHTEVT
djIKLUVYUE9SVFMKLSAgICBnbEFjdGl2ZVRleHR1cmUgICAgICAgICAgICAgICAgIEAxCi0gICAg
Z2xBdHRhY2hTaGFkZXIgICAgICAgICAgICAgICAgICBAMgotICAgIGdsQmluZEF0dHJpYkxvY2F0
aW9uICAgICAgICAgICAgQDMKLSAgICBnbEJpbmRCdWZmZXIgICAgICAgICAgICAgICAgICAgIEA0
Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIgICAgICAgICAgICAgICBANQotICAgIGdsQmluZFJlbmRl
cmJ1ZmZlciAgICAgICAgICAgICAgQDYKLSAgICBnbEJpbmRUZXh0dXJlICAgICAgICAgICAgICAg
ICAgIEA3Ci0gICAgZ2xCbGVuZENvbG9yICAgICAgICAgICAgICAgICAgICBAOAotICAgIGdsQmxl
bmRFcXVhdGlvbiAgICAgICAgICAgICAgICAgQDkKLSAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZSAgICAgICAgIEAxMAotICAgIGdsQmxlbmRGdW5jICAgICAgICAgICAgICAgICAgICAgQDExCi0g
ICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSAgICAgICAgICAgICBAMTIKLSAgICBnbEJ1ZmZlckRhdGEg
ICAgICAgICAgICAgICAgICAgIEAxMwotICAgIGdsQnVmZmVyU3ViRGF0YSAgICAgICAgICAgICAg
ICAgQDE0Ci0gICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzICAgICAgICBAMTUKLSAgICBnbENs
ZWFyICAgICAgICAgICAgICAgICAgICAgICAgIEAxNgotICAgIGdsQ2xlYXJDb2xvciAgICAgICAg
ICAgICAgICAgICAgQDE3Ci0gICAgZ2xDbGVhckRlcHRoZiAgICAgICAgICAgICAgICAgICBAMTgK
LSAgICBnbENsZWFyU3RlbmNpbCAgICAgICAgICAgICAgICAgIEAxOQotICAgIGdsQ29sb3JNYXNr
ICAgICAgICAgICAgICAgICAgICAgQDIwCi0gICAgZ2xDb21waWxlU2hhZGVyICAgICAgICAgICAg
ICAgICBAMjEKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEICAgICAgICAgIEAyMgotICAgIGds
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQgICAgICAgQDIzCi0gICAgZ2xDb3B5VGV4SW1hZ2UyRCAg
ICAgICAgICAgICAgICBAMjQKLSAgICBnbENvcHlUZXhTdWJJbWFnZTJEICAgICAgICAgICAgIEAy
NQotICAgIGdsQ3JlYXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgQDI2Ci0gICAgZ2xDcmVhdGVT
aGFkZXIgICAgICAgICAgICAgICAgICBAMjcKLSAgICBnbEN1bGxGYWNlICAgICAgICAgICAgICAg
ICAgICAgIEAyOAotICAgIGdsRGVsZXRlQnVmZmVycyAgICAgICAgICAgICAgICAgQDI5Ci0gICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMgICAgICAgICAgICBAMzAKLSAgICBnbERlbGV0ZVByb2dyYW0g
ICAgICAgICAgICAgICAgIEAzMgotICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycyAgICAgICAgICAg
QDMzCi0gICAgZ2xEZWxldGVTaGFkZXIgICAgICAgICAgICAgICAgICBAMzQKLSAgICBnbERlbGV0
ZVRleHR1cmVzICAgICAgICAgICAgICAgIEAzMQotICAgIGdsRGVwdGhGdW5jICAgICAgICAgICAg
ICAgICAgICAgQDM2Ci0gICAgZ2xEZXB0aE1hc2sgICAgICAgICAgICAgICAgICAgICBAMzcKLSAg
ICBnbERlcHRoUmFuZ2VmICAgICAgICAgICAgICAgICAgIEAzOAotICAgIGdsRGV0YWNoU2hhZGVy
ICAgICAgICAgICAgICAgICAgQDM1Ci0gICAgZ2xEaXNhYmxlICAgICAgICAgICAgICAgICAgICAg
ICBAMzkKLSAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAgICAgIEA0MAotICAgIGdsRHJh
d0FycmF5cyAgICAgICAgICAgICAgICAgICAgQDQxCi0gICAgZ2xEcmF3RWxlbWVudHMgICAgICAg
ICAgICAgICAgICBANDIKLSAgICBnbEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgIEA0Mwot
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkgICAgICAgQDQ0Ci0gICAgZ2xGaW5pc2ggICAg
ICAgICAgICAgICAgICAgICAgICBANDUKLSAgICBnbEZsdXNoICAgICAgICAgICAgICAgICAgICAg
ICAgIEA0NgotICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIgICAgICAgQDQ3Ci0gICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRCAgICAgICAgICBANDgKLSAgICBnbEZyb250RmFjZSAgICAgICAg
ICAgICAgICAgICAgIEA0OQotICAgIGdsR2VuQnVmZmVycyAgICAgICAgICAgICAgICAgICAgQDUw
Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMgICAgICAgICAgICAgICBANTIKLSAgICBnbEdlblJlbmRl
cmJ1ZmZlcnMgICAgICAgICAgICAgIEA1MwotICAgIGdsR2VuVGV4dHVyZXMgICAgICAgICAgICAg
ICAgICAgQDU0Ci0gICAgZ2xHZW5lcmF0ZU1pcG1hcCAgICAgICAgICAgICAgICBANTEKLSAgICBn
bEdldEFjdGl2ZUF0dHJpYiAgICAgICAgICAgICAgIEA1NQotICAgIGdsR2V0QWN0aXZlVW5pZm9y
bSAgICAgICAgICAgICAgQDU2Ci0gICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnMgICAgICAgICAgICBA
NTcKLSAgICBnbEdldEF0dHJpYkxvY2F0aW9uICAgICAgICAgICAgIEA1OAotICAgIGdsR2V0Qm9v
bGVhbnYgICAgICAgICAgICAgICAgICAgQDU5Ci0gICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiAg
ICAgICAgICBANjAKLSAgICBnbEdldEVycm9yICAgICAgICAgICAgICAgICAgICAgIEA2MQotICAg
IGdsR2V0RmxvYXR2ICAgICAgICAgICAgICAgICAgICAgQDYyCi0gICAgZ2xHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiAgIEA2MwotICAgIGdsR2V0SW50ZWdlcnYgICAgICAgICAg
ICAgICAgICAgQDY0Ci0gICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyAgICAgICAgICAgICBANjYKLSAg
ICBnbEdldFByb2dyYW1pdiAgICAgICAgICAgICAgICAgIEA2NQotICAgIGdsR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYgICAgQDY3Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9nICAgICAgICAgICAg
ICBANjkKLSAgICBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCAgICAgIEA3MAotICAgIGdsR2V0
U2hhZGVyU291cmNlICAgICAgICAgICAgICAgQDcxCi0gICAgZ2xHZXRTaGFkZXJpdiAgICAgICAg
ICAgICAgICAgICBANjgKLSAgICBnbEdldFN0cmluZyAgICAgICAgICAgICAgICAgICAgIEA3Mgot
ICAgIGdsR2V0VGV4UGFyYW1ldGVyZnYgICAgICAgICAgICAgQDczCi0gICAgZ2xHZXRUZXhQYXJh
bWV0ZXJpdiAgICAgICAgICAgICBANzQKLSAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbiAgICAgICAg
ICAgIEA3NwotICAgIGdsR2V0VW5pZm9ybWZ2ICAgICAgICAgICAgICAgICAgQDc1Ci0gICAgZ2xH
ZXRVbmlmb3JtaXYgICAgICAgICAgICAgICAgICBANzYKLSAgICBnbEdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2ICAgICAgIEA4MAotICAgIGdsR2V0VmVydGV4QXR0cmliZnYgICAgICAgICAgICAgQDc4
Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdiAgICAgICAgICAgICBANzkKLSAgICBnbEhpbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgIEA4MQotICAgIGdsSXNCdWZmZXIgICAgICAgICAgICAgICAg
ICAgICAgQDgyCi0gICAgZ2xJc0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICBAODMKLSAgICBn
bElzRnJhbWVidWZmZXIgICAgICAgICAgICAgICAgIEA4NAotICAgIGdsSXNQcm9ncmFtICAgICAg
ICAgICAgICAgICAgICAgQDg1Ci0gICAgZ2xJc1JlbmRlcmJ1ZmZlciAgICAgICAgICAgICAgICBA
ODYKLSAgICBnbElzU2hhZGVyICAgICAgICAgICAgICAgICAgICAgIEA4NwotICAgIGdsSXNUZXh0
dXJlICAgICAgICAgICAgICAgICAgICAgQDg4Ci0gICAgZ2xMaW5lV2lkdGggICAgICAgICAgICAg
ICAgICAgICBAODkKLSAgICBnbExpbmtQcm9ncmFtICAgICAgICAgICAgICAgICAgIEA5MAotICAg
IGdsUGl4ZWxTdG9yZWkgICAgICAgICAgICAgICAgICAgQDkxCi0gICAgZ2xQb2x5Z29uT2Zmc2V0
ICAgICAgICAgICAgICAgICBAOTIKLSAgICBnbFJlYWRQaXhlbHMgICAgICAgICAgICAgICAgICAg
IEA5MwotICAgIGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyICAgICAgICAgQDk0Ci0gICAgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlICAgICAgICAgICBAOTUKLSAgICBnbFNhbXBsZUNvdmVyYWdlICAgICAg
ICAgICAgICAgIEA5NgotICAgIGdsU2Npc3NvciAgICAgICAgICAgICAgICAgICAgICAgQDk3Ci0g
ICAgZ2xTaGFkZXJCaW5hcnkgICAgICAgICAgICAgICAgICBAOTgKLSAgICBnbFNoYWRlclNvdXJj
ZSAgICAgICAgICAgICAgICAgIEA5OQotICAgIGdsU3RlbmNpbEZ1bmMgICAgICAgICAgICAgICAg
ICAgQDEwMAotICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSAgICAgICAgICAgQDEwMQotICAgIGds
U3RlbmNpbE1hc2sgICAgICAgICAgICAgICAgICAgQDEwMgotICAgIGdsU3RlbmNpbE1hc2tTZXBh
cmF0ZSAgICAgICAgICAgQDEwMwotICAgIGdsU3RlbmNpbE9wICAgICAgICAgICAgICAgICAgICAg
QDEwNAotICAgIGdsU3RlbmNpbE9wU2VwYXJhdGUgICAgICAgICAgICAgQDEwNQotICAgIGdsVGV4
SW1hZ2UyRCAgICAgICAgICAgICAgICAgICAgQDEwNgotICAgIGdsVGV4UGFyYW1ldGVyZiAgICAg
ICAgICAgICAgICAgQDEwNwotICAgIGdsVGV4UGFyYW1ldGVyZnYgICAgICAgICAgICAgICAgQDEw
OAotICAgIGdsVGV4UGFyYW1ldGVyaSAgICAgICAgICAgICAgICAgQDEwOQotICAgIGdsVGV4UGFy
YW1ldGVyaXYgICAgICAgICAgICAgICAgQDExMAotICAgIGdsVGV4U3ViSW1hZ2UyRCAgICAgICAg
ICAgICAgICAgQDExMQotICAgIGdsVW5pZm9ybTFmICAgICAgICAgICAgICAgICAgICAgQDExMgot
ICAgIGdsVW5pZm9ybTFmdiAgICAgICAgICAgICAgICAgICAgQDExMwotICAgIGdsVW5pZm9ybTFp
ICAgICAgICAgICAgICAgICAgICAgQDExNAotICAgIGdsVW5pZm9ybTFpdiAgICAgICAgICAgICAg
ICAgICAgQDExNQotICAgIGdsVW5pZm9ybTJmICAgICAgICAgICAgICAgICAgICAgQDExNgotICAg
IGdsVW5pZm9ybTJmdiAgICAgICAgICAgICAgICAgICAgQDExNwotICAgIGdsVW5pZm9ybTJpICAg
ICAgICAgICAgICAgICAgICAgQDExOAotICAgIGdsVW5pZm9ybTJpdiAgICAgICAgICAgICAgICAg
ICAgQDExOQotICAgIGdsVW5pZm9ybTNmICAgICAgICAgICAgICAgICAgICAgQDEyMAotICAgIGds
VW5pZm9ybTNmdiAgICAgICAgICAgICAgICAgICAgQDEyMQotICAgIGdsVW5pZm9ybTNpICAgICAg
ICAgICAgICAgICAgICAgQDEyMgotICAgIGdsVW5pZm9ybTNpdiAgICAgICAgICAgICAgICAgICAg
QDEyMwotICAgIGdsVW5pZm9ybTRmICAgICAgICAgICAgICAgICAgICAgQDEyNAotICAgIGdsVW5p
Zm9ybTRmdiAgICAgICAgICAgICAgICAgICAgQDEyNQotICAgIGdsVW5pZm9ybTRpICAgICAgICAg
ICAgICAgICAgICAgQDEyNgotICAgIGdsVW5pZm9ybTRpdiAgICAgICAgICAgICAgICAgICAgQDEy
NwotICAgIGdsVW5pZm9ybU1hdHJpeDJmdiAgICAgICAgICAgICAgQDEyOAotICAgIGdsVW5pZm9y
bU1hdHJpeDNmdiAgICAgICAgICAgICAgQDEyOQotICAgIGdsVW5pZm9ybU1hdHJpeDRmdiAgICAg
ICAgICAgICAgQDEzMAotICAgIGdsVXNlUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgQDEzMQot
ICAgIGdsVmFsaWRhdGVQcm9ncmFtICAgICAgICAgICAgICAgQDEzMgotICAgIGdsVmVydGV4QXR0
cmliMWYgICAgICAgICAgICAgICAgQDEzMwotICAgIGdsVmVydGV4QXR0cmliMWZ2ICAgICAgICAg
ICAgICAgQDEzNAotICAgIGdsVmVydGV4QXR0cmliMmYgICAgICAgICAgICAgICAgQDEzNQotICAg
IGdsVmVydGV4QXR0cmliMmZ2ICAgICAgICAgICAgICAgQDEzNgotICAgIGdsVmVydGV4QXR0cmli
M2YgICAgICAgICAgICAgICAgQDEzNwotICAgIGdsVmVydGV4QXR0cmliM2Z2ICAgICAgICAgICAg
ICAgQDEzOAotICAgIGdsVmVydGV4QXR0cmliNGYgICAgICAgICAgICAgICAgQDEzOQotICAgIGds
VmVydGV4QXR0cmliNGZ2ICAgICAgICAgICAgICAgQDE0MAotICAgIGdsVmVydGV4QXR0cmliUG9p
bnRlciAgICAgICAgICAgQDE0MQotICAgIGdsVmlld3BvcnQgICAgICAgICAgICAgICAgICAgICAg
QDE0MgotCi0gICAgOyBFeHRlbnNpb25zCi0gICAgZ2xUZXhJbWFnZTNET0VTICAgICAgICAgICAg
ICAgICBAMTQzCi0gICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSAgICAgICAgICBAMTQ5Ci0gICAg
Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSBAMTUwCi0gICAgZ2xEZWxldGVG
ZW5jZXNOViAgICAgICAgICAgICAgICBAMTUxCi0gICAgZ2xGaW5pc2hGZW5jZU5WICAgICAgICAg
ICAgICAgICBAMTUyCi0gICAgZ2xHZW5GZW5jZXNOViAgICAgICAgICAgICAgICAgICBAMTUzCi0g
ICAgZ2xHZXRGZW5jZWl2TlYgICAgICAgICAgICAgICAgICBAMTU0Ci0gICAgZ2xJc0ZlbmNlTlYg
ICAgICAgICAgICAgICAgICAgICBAMTU1Ci0gICAgZ2xTZXRGZW5jZU5WICAgICAgICAgICAgICAg
ICAgICBAMTU2Ci0gICAgZ2xUZXN0RmVuY2VOViAgICAgICAgICAgICAgICAgICBAMTU3Ci0gICAg
Z2xHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUgQDE1OQotICAgIGdsVGV4U3RvcmFnZTJE
RVhUICAgICAgICAgICAgICAgQDE2MAotICAgIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCAg
ICAgQDE2MQotICAgIGdsUmVhZG5QaXhlbHNFWFQgICAgICAgICAgICAgICAgQDE2MgotICAgIGds
R2V0blVuaWZvcm1mdkVYVCAgICAgICAgICAgICAgQDE2MwotICAgIGdsR2V0blVuaWZvcm1pdkVY
VCAgICAgICAgICAgICAgQDE2NAotICAgIGdsR2VuUXVlcmllc0VYVCAgICAgICAgICAgICAgICAg
QDE2NQotICAgIGdsRGVsZXRlUXVlcmllc0VYVCAgICAgICAgICAgICAgQDE2NgotICAgIGdsSXNR
dWVyeUVYVCAgICAgICAgICAgICAgICAgICAgQDE2NwotICAgIGdsQmVnaW5RdWVyeUVYVCAgICAg
ICAgICAgICAgICAgQDE2OAotICAgIGdsRW5kUXVlcnlFWFQgICAgICAgICAgICAgICAgICAgQDE2
OQotICAgIGdsR2V0UXVlcnlpdkVYVCAgICAgICAgICAgICAgICAgQDE3MAotICAgIGdsR2V0UXVl
cnlPYmplY3R1aXZFWFQgICAgICAgICAgQDE3MQotICAgIGdsVmVydGV4QXR0cmliRGl2aXNvckFO
R0xFICAgICAgQDE3MgotICAgIGdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFICAgICAgQDE3Mwot
ICAgIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgICAgQDE3NAotICAgIGdsUHJvZ3JhbUJp
bmFyeU9FUyAgICAgICAgICAgICAgQDE3NQotICAgIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUyAgICAg
ICAgICAgQDE3NgotCi0gICAgOyBFR0wgZGVwZW5kZW5jaWVzCi0gICAgZ2xDcmVhdGVDb250ZXh0
ICAgICAgICAgICAgICAgICBAMTQ0IE5PTkFNRQotICAgIGdsRGVzdHJveUNvbnRleHQgICAgICAg
ICAgICAgICAgQDE0NSBOT05BTUUKLSAgICBnbE1ha2VDdXJyZW50ICAgICAgICAgICAgICAgICAg
IEAxNDYgTk9OQU1FCi0gICAgZ2xHZXRDdXJyZW50Q29udGV4dCAgICAgICAgICAgICBAMTQ3IE5P
TkFNRQotICAgIGdsR2V0UHJvY0FkZHJlc3MgICAgICAgICAgICAgICAgQDE0OCBOT05BTUUKLSAg
ICBnbEJpbmRUZXhJbWFnZSAgICAgICAgICAgICAgICAgIEAxNTggTk9OQU1FCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnJjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYWQyMWU0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnJjCisrKyAvZGV2L251bGwKQEAg
LTEsMTAyICswLDAgQEAKLS8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJj
ZSBzY3JpcHQuCi0vLwotI2luY2x1ZGUgInJlc291cmNlLmgiCi0KLSNkZWZpbmUgQVBTVFVESU9f
UkVBRE9OTFlfU1lNQk9MUwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQg
ZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KLS8vCi0jaW5jbHVkZSA8d2luZG93cy5o
PgotI2luY2x1ZGUgIi4uL2NvbW1vbi92ZXJzaW9uLmgiCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0jdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwotCi0vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCi0KLSNpZiAhZGVmaW5lZChBRlhfUkVTT1VS
Q0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOVSkKLSNpZmRlZiBfV0lOMzIKLUxBTkdVQUdF
IExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VTCi0jcHJhZ21hIGNvZGVfcGFnZSgxMjUy
KQotI2VuZGlmIC8vX1dJTjMyCi0KLSNpZmRlZiBBUFNUVURJT19JTlZPS0VECi0vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotLy8KLS8vIFRFWFRJTkNMVURFCi0vLwotCi0xIFRFWFRJTkNMVURFIAotQkVH
SU4KLSAgICAicmVzb3VyY2UuaFwwIgotRU5ECi0KLTIgVEVYVElOQ0xVREUgCi1CRUdJTgotICAg
ICIjaW5jbHVkZSAiImFmeHJlcy5oIiJcclxuIgotICAgICIjaW5jbHVkZSAiIi4uL2NvbW1vbi92
ZXJzaW9uLmgiIlwwIgotRU5ECi0KLTMgVEVYVElOQ0xVREUgCi1CRUdJTgotICAgICJcclxuIgot
ICAgICJcMCIKLUVORAotCi0jZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAotCi0KLS8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0vLwotLy8gVmVyc2lvbgotLy8KLQotVlNfVkVSU0lPTl9JTkZPIFZF
UlNJT05JTkZPCi0gRklMRVZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxE
X1ZFUlNJT04sQlVJTERfUkVWSVNJT04KLSBQUk9EVUNUVkVSU0lPTiBNQUpPUl9WRVJTSU9OLE1J
Tk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTgotIEZJTEVGTEFHU01BU0sg
MHgxN0wKLSNpZmRlZiBfREVCVUcKLSBGSUxFRkxBR1MgMHgxTAotI2Vsc2UKLSBGSUxFRkxBR1Mg
MHgwTAotI2VuZGlmCi0gRklMRU9TIDB4NEwKLSBGSUxFVFlQRSAweDJMCi0gRklMRVNVQlRZUEUg
MHgwTAotQkVHSU4KLSAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCi0gICAgQkVHSU4KLSAgICAg
ICAgQkxPQ0sgIjA0MDkwNGIwIgotICAgICAgICBCRUdJTgotICAgICAgICAgICAgVkFMVUUgIkZp
bGVEZXNjcmlwdGlvbiIsICJBTkdMRSBsaWJHTEVTdjIgRHluYW1pYyBMaW5rIExpYnJhcnkiCi0g
ICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBWRVJTSU9OX1NUUklORwotICAgICAgICAg
ICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJsaWJHTEVTdjIiCi0gICAgICAgICAgICBWQUxVRSAi
TGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIgotICAgICAg
ICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAibGliR0xFU3YyLmRsbCIKLSAgICAgICAg
ICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCBWRVJTSU9OX1NUUklORwotICAgICAgICAgICAgVkFM
VUUgIlByb2R1Y3ROYW1lIiwgIkFOR0xFIGxpYkdMRVN2MiBEeW5hbWljIExpbmsgTGlicmFyeSIK
LSAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HCi0gICAg
ICAgIEVORAotICAgIEVORAotICAgIEJMT0NLICJWYXJGaWxlSW5mbyIKLSAgICBCRUdJTgotICAg
ICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMAotICAgIEVORAotRU5ECi0KLSNl
bmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0KLQotCi0jaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0v
LwotLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuCi0vLwotCi0K
LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0jZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xF
U3YyLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdM
RVN2Mi52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxZWY4OGU2Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3Yy
LnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyOTkgKzAsMCBAQAot77u/PD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVp
bGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNv
bS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCi0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RD
b25maWd1cmF0aW9ucyI+DQotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1
Z3xXaW4zMiI+DQotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQot
ICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCi0gICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4NCi0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQot
ICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQotICAgICAgPFBsYXRm
b3JtPng2NDwvUGxhdGZvcm0+DQotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQotICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCi0gICAgICA8Q29u
ZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KLSAgICAgIDxQbGF0Zm9ybT5XaW4z
MjwvUGxhdGZvcm0+DQotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQotICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQotICAgICAgPENvbmZpZ3VyYXRp
b24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCi0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9y
bT4NCi0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCi0gIDwvSXRlbUdyb3VwPg0KLSAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KLSAgICA8UHJvamVjdEd1aWQ+e0I1ODcxQTdB
LTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH08L1Byb2plY3RHdWlkPg0KLSAgICA8Um9vdE5h
bWVzcGFjZT5saWJHTEVTdjI8L1Jvb3ROYW1lc3BhY2U+DQotICAgIDxLZXl3b3JkPldpbjMyUHJv
ajwvS2V5d29yZD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+DQotICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQotICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQotICAgIDxDaGFyYWN0ZXJTZXQ+
VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRy
dWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQotICAgIDxDb25maWd1cmF0aW9u
VHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQotICAgIDxDaGFyYWN0ZXJT
ZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCi0gICAgPENvbmZpZ3VyYXRpb25UeXBl
PkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCi0gICAgPENoYXJhY3RlclNldD5V
bmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1
ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQotICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQotICAgIDxDaGFyYWN0ZXJTZXQ+
VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPEltcG9ydCBQ
cm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQotICA8SW1w
b3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCi0gIDwvSW1wb3J0R3JvdXA+DQot
ICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCi0gICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KLSAg
PC9JbXBvcnRHcm91cD4NCi0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4N
Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBs
YXRmb3JtIiAvPg0KLSAgPC9JbXBvcnRHcm91cD4NCi0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4NCi0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVz
ZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9
IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KLSAgPC9JbXBvcnRHcm91cD4NCi0gIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCi0gIDwvSW1wb3J0R3JvdXA+
DQotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCi0gIDxQcm9wZXJ0eUdy
b3VwPg0KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0Rmls
ZVZlcnNpb24+DQotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4NCi0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCi0gICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCi0gICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZh
bHNlPC9MaW5rSW5jcmVtZW50YWw+DQotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZv
cm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQotICAgIDxJbnREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFBsYXRmb3JtKVwk
KENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlu
a0luY3JlbWVudGFsPg0KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQo
Q29uZmlndXJhdGlvbilcPC9PdXREaXI+DQotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29u
ZmlndXJhdGlvbilcPC9JbnREaXI+DQotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5r
SW5jcmVtZW50YWw+DQotICAgIDxJbmNsdWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQ
YXRoPg0KLSAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCi0g
ICAgPEluY2x1ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KLSAgICA8TGlicmFy
eVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQotICAgIDxJbmNsdWRlUGF0aCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChJ
bmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KLSAgICA8SW5jbHVkZVBhdGggQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChJbmNsdWRl
UGF0aCk8L0luY2x1ZGVQYXRoPg0KLSAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTGlicmFyeVBhdGgpPC9M
aWJyYXJ5UGF0aD4NCi0gICAgPExpYnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5
UGF0aD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCi0g
ICAgPENsQ29tcGlsZT4NCi0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRp
b24+DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8u
LjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkdMRVNWMl9FWFBP
UlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgICAgPE1pbmltYWxSZWJ1aWxk
PnRydWU8L01pbmltYWxSZWJ1aWxkPg0KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxl
RmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcj4NCi0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDxXYXJuaW5nTGV2ZWw+
TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQotICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwv
VHJlYXRXYXJuaW5nQXNFcnJvcj4NCi0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0
QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQotICAgICAgPERpc2FibGVTcGVj
aWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERp
c2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQotICAgIDwv
Q2xDb21waWxlPg0KLSAgICA8TGluaz4NCi0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5k
M2Q5LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVz
Pg0KLSAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9Nb2R1bGVEZWZp
bml0aW9uRmlsZT4NCi0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj4NCi0gICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3Rl
bT4NCi0gICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQotICAgICAgPC9EYXRhRXhlY3V0
aW9uUHJldmVudGlvbj4NCi0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRN
YWNoaW5lPg0KLSAgICA8L0xpbms+DQotICAgIDxQb3N0QnVpbGRFdmVudD4NCi0gICAgICA8Q29t
bWFuZD4lNDBlY2hvIG9uDQotbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1
cmF0aW9uKVwiDQotY29weSAiJChPdXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpciku
LlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQotY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxp
YiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQotJTQwZWNobyBv
ZmYNCi08L0NvbW1hbmQ+DQotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+DQotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCi0gICAgPENsQ29tcGlsZT4N
Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQotICAgICAgPElu
bGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lv
bj4NCi0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLy4u
OyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCi0gICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+QU5HTEVfRElTQUJMRV9UUkFDRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VT
UkRMTDtMSUJHTEVTVjJfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7
X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+DQotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVM
aWJyYXJ5Pg0KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPg0KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQotICAg
ICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCi0gICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+DQotICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5
OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3Mp
PC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxMaW5r
Pg0KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERl
cGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQotICAgICAgPElnbm9yZUFsbERl
ZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+DQotICAgICAg
PE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxl
Pg0KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPg0KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KLSAgICAg
IDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KLSAgICAgIDxF
bmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQotICAgICAgPERh
dGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KLSAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+
DQotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCi0gICAg
PC9MaW5rPg0KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+DQotICAgICAgPENvbW1hbmQ+JTQwZWNobyBv
bg0KLW1rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KLWNv
cHkgIiQoT3V0RGlyKWxpYkdMRVN2Mi5kbGwiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29u
ZmlndXJhdGlvbilcIg0KLWNvcHkgIiQoT3V0RGlyKWxpYkdMRVN2Mi5saWIiICIkKFByb2plY3RE
aXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KLSU0MGVjaG8gb2ZmDQotPC9Db21tYW5k
Pg0KLSAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCi0gICAgPE1pZGw+DQotICAgICAgPFRhcmdldEVudmlyb25t
ZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQotICAgIDwvTWlkbD4NCi0gICAgPENsQ29tcGls
ZT4NCi0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQotICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0
RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
PldJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkdMRVNWMl9FWFBPUlRTO19DUlRfU0VD
VVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmlt
YWxSZWJ1aWxkPg0KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwv
QmFzaWNSdW50aW1lQ2hlY2tzPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
RGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCi0gICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJu
aW5nTGV2ZWw+DQotICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5
OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3Mp
PC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCi0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQotICAgICAgPFRyZWF0
V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCi0gICAgPC9DbENvbXBp
bGU+DQotICAgIDxMaW5rPg0KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGli
OyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQotICAg
ICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25G
aWxlPg0KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPg0KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KLSAg
ICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCi0gICAgICA8L0RhdGFFeGVjdXRpb25QcmV2
ZW50aW9uPg0KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+
DQotICAgIDwvTGluaz4NCi0gICAgPFBvc3RCdWlsZEV2ZW50Pg0KLSAgICAgIDxDb21tYW5kPiU0
MGVjaG8gb24NCi1ta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24p
XCINCi1jb3B5ICIkKE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxp
YlwkKENvbmZpZ3VyYXRpb24pXCINCi1jb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQ
cm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCi0lNDBlY2hvIG9mZg0KLTwv
Q29tbWFuZD4NCi0gICAgPC9Qb3N0QnVpbGRFdmVudD4NCi0gIDwvSXRlbURlZmluaXRpb25Hcm91
cD4NCi0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCi0gICAgPE1pZGw+DQotICAgICAgPFRhcmdl
dEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQotICAgIDwvTWlkbD4NCi0gICAg
PENsQ29tcGlsZT4NCi0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+
DQotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5j
dGlvbkV4cGFuc2lvbj4NCi0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCi0gICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7TElC
R0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19TRUNVUkVf
U0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
Pg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4N
Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4N
Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KLSAgICAgIDxEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3
MDI7NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2Fybmlu
Z3M+DQotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0Pg0KLSAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1Ry
ZWF0V2FybmluZ0FzRXJyb3I+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8TGluaz4NCi0gICAg
ICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNp
ZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGli
cmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPg0KLSAgICAgIDxNb2R1bGVE
ZWZpbml0aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9Nb2R1bGVEZWZpbml0aW9uRmlsZT4NCi0gICAg
ICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj4NCi0gICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCi0gICAgICA8T3B0aW1p
emVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCi0gICAgICA8RW5hYmxlQ09N
REFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KLSAgICAgIDxEYXRhRXhlY3V0
aW9uUHJldmVudGlvbj4NCi0gICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KLSAgICAg
IDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+DQotICAgIDwvTGluaz4N
Ci0gICAgPFBvc3RCdWlsZEV2ZW50Pg0KLSAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24NCi1ta2Rp
ciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCi1jb3B5ICIkKE91
dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRp
b24pXCINCi1jb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQcm9qZWN0RGlyKS4uXC4u
XGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCi0lNDBlY2hvIG9mZg0KLTwvQ29tbWFuZD4NCi0gICAg
PC9Qb3N0QnVpbGRFdmVudD4NCi0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCi0gIDxJdGVtR3Jv
dXA+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQmxpdC5jcHAiIC8+DQotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iQnVmZmVyLmNwcCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJDb250
ZXh0LmNwcCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuY3Bw
IiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkQzRENvbnN0YW50VGFibGUuY3BwIiAvPg0K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZlbmNlLmNwcCIgLz4NCi0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJGbG9hdDE2VG9GbG9hdDMyLmNwcCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJGcmFtZWJ1ZmZlci5jcHAiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSGFuZGxlQWxs
b2NhdG9yLmNwcCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbmRleERhdGFNYW5hZ2Vy
LmNwcCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJsaWJHTEVTdjIuY3BwIiAvPg0KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlByb2dyYW0uY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlByb2dyYW1CaW5h
cnkuY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlF1ZXJ5LmNwcCIgLz4NCi0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuY3BwIiAvPg0KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5jcHAiIC8+DQotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmNwcCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJTaGFkZXIuY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRleHR1cmUuY3Bw
IiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRleHR1cmVTU0UyLmNwcCIgLz4NCi0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJ1dGlsaXRpZXMuY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IlZlcnRleERhdGFNYW5hZ2VyLmNwcCIgLz4NCi0gIDwvSXRlbUdyb3VwPg0KLSAgPEl0
ZW1Hcm91cD4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCaW5hcnlTdHJlYW0uaCIgLz4NCi0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCbGl0LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iQnVmZmVyLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29udGV4dC5oIiAvPg0K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkQzRENvbnN0YW50VGFibGUuaCIgLz4NCi0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJGZW5jZS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZy
YW1lYnVmZmVyLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxH
TEVTMlxnbDIuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdM
RVMyXGdsMmV4dC5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVc
R0xFUzJcZ2wycGxhdGZvcm0uaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJIYW5kbGVB
bGxvY2F0b3IuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmRleERhdGFNYW5hZ2Vy
LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWFpbi5oIiAvPg0KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Im1hdGh1dGlsLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJv
Z3JhbS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByb2dyYW1CaW5hcnkuaCIgLz4N
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJRdWVyeS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlJlbmRlcmJ1ZmZlci5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291
cmNlLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmgiIC8+
DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU2hhZGVyLmgiIC8+DQotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iVGV4dHVyZS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InV0aWxpdGll
cy5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblx2ZXJzaW9uLmgiIC8+
DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0idmVydGV4Y29udmVyc2lvbi5oIiAvPg0KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IlZlcnRleERhdGFNYW5hZ2VyLmgiIC8+DQotICA8L0l0ZW1Hcm91
cD4NCi0gIDxJdGVtR3JvdXA+DQotICAgIDxOb25lIEluY2x1ZGU9ImxpYkdMRVN2Mi5kZWYiIC8+
DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJdGVtR3JvdXA+DQotICAgIDxSZXNvdXJjZUNvbXBpbGUg
SW5jbHVkZT0ibGliR0xFU3YyLnJjIiAvPg0KLSAgPC9JdGVtR3JvdXA+DQotICA8SXRlbUdyb3Vw
Pg0KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlxjb21waWxlclx0cmFuc2xhdG9y
X2hsc2wudmN4cHJvaiI+DQotICAgICAgPFByb2plY3Q+ezU2MjBmMGU0LTZjNDMtNDliYy1hMTc4
LWI4MDRlMWEwYzNhN308L1Byb2plY3Q+DQotICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5
PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4NCi0gICAgICA8UHJpdmF0ZT50cnVlPC9Q
cml2YXRlPg0KLSAgICAgIDxDb3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPmZhbHNlPC9Db3B5
TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPg0KLSAgICAgIDxMaW5rTGlicmFyeURlcGVuZGVuY2ll
cz50cnVlPC9MaW5rTGlicmFyeURlcGVuZGVuY2llcz4NCi0gICAgICA8VXNlTGlicmFyeURlcGVu
ZGVuY3lJbnB1dHM+dHJ1ZTwvVXNlTGlicmFyeURlcGVuZGVuY3lJbnB1dHM+DQotICAgIDwvUHJv
amVjdFJlZmVyZW5jZT4NCi0gIDwvSXRlbUdyb3VwPg0KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCi0gIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQotICA8L0ltcG9ydEdyb3VwPg0KLTwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGRhZmVhM2IuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvai5maWx0
ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5z
PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0K
LSAgPEl0ZW1Hcm91cD4NCi0gICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0KLSAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEy
RkZ9PC9VbmlxdWVJZGVudGlmaWVyPg0KLSAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtk
ZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPg0KLSAgICA8L0ZpbHRlcj4N
Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KLSAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVu
dGlmaWVyPg0KLSAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0
ZW5zaW9ucz4NCi0gICAgPC9GaWx0ZXI+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJdGVtR3JvdXA+
DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQmxpdC5jcHAiPg0KLSAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkJ1ZmZlci5jcHAiPg0KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkNvbnRleHQuY3Bw
Ij4NCi0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGls
ZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuY3BwIj4NCi0gICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJEM0RDb25zdGFudFRhYmxlLmNwcCI+DQotICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iRmVuY2UuY3BwIj4NCi0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJGbG9hdDE2
VG9GbG9hdDMyLmNwcCI+DQotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0g
ICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRnJhbWVidWZmZXIuY3Bw
Ij4NCi0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGls
ZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJIYW5kbGVBbGxvY2F0b3IuY3BwIj4NCi0gICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJJbmRleERhdGFNYW5hZ2VyLmNwcCI+DQotICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0ibGliR0xFU3YyLmNwcCI+DQotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFp
bi5jcHAiPg0KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xD
b21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlByb2dyYW0uY3BwIj4NCi0gICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJQcm9ncmFtQmluYXJ5LmNwcCI+DQotICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iUXVlcnkuY3BwIj4NCi0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
LSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cUmVm
Q291bnRPYmplY3QuY3BwIj4NCi0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
LSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZW5kZXJidWZmZXIu
Y3BwIj4NCi0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29t
cGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZXNvdXJjZU1hbmFnZXIuY3BwIj4NCi0g
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXIuY3BwIj4NCi0gICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJUZXh0dXJlLmNwcCI+DQotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
Ci0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVGV4dHVyZVNTRTIu
Y3BwIj4NCi0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29t
cGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ1dGlsaXRpZXMuY3BwIj4NCi0gICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJWZXJ0ZXhEYXRhTWFuYWdlci5jcHAiPg0KLSAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlJlbmRlcmVyLmNwcCI+DQotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJdGVtR3JvdXA+
DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmluYXJ5U3RyZWFtLmgiPg0KLSAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IkJsaXQuaCI+DQotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVmZmVyLmgi
Pg0KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRl
Pg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbnRleHQuaCI+DQotICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iRDNEQ29uc3RhbnRUYWJsZS5oIj4NCi0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJG
ZW5jZS5oIj4NCi0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0Ns
SW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGcmFtZWJ1ZmZlci5oIj4NCi0gICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMi5oIj4NCi0gICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMmV4dC5oIj4NCi0gICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMnBsYXRmb3JtLmgiPg0KLSAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkhhbmRsZUFsbG9jYXRvci5oIj4NCi0gICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJJbmRleERhdGFNYW5hZ2VyLmgiPg0KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Im1haW4uaCI+DQotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9D
bEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWF0aHV0aWwuaCI+DQotICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iUHJvZ3JhbS5oIj4NCi0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQ
cm9ncmFtQmluYXJ5LmgiPg0KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQot
ICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1ZXJ5LmgiPg0KLSAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5oIj4NCi0gICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJSZW5kZXJidWZmZXIuaCI+DQotICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVzb3VyY2UuaCI+DQotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
Ci0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5h
Z2VyLmgiPg0KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJ
bmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNoYWRlci5oIj4NCi0gICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJUZXh0dXJlLmgiPg0KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InV0aWxp
dGllcy5oIj4NCi0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0Ns
SW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5oIj4N
Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4N
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ2ZXJ0ZXhjb252ZXJzaW9uLmgiPg0KLSAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IlZlcnRleERhdGFNYW5hZ2VyLmgiPg0KLSAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlJlbmRlcmVyLmgiPg0KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkVudW1UeXBlcy5o
Ij4NCi0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVk
ZT4NCi0gIDwvSXRlbUdyb3VwPg0KLSAgPEl0ZW1Hcm91cD4NCi0gICAgPE5vbmUgSW5jbHVkZT0i
bGliR0xFU3YyLmRlZiI+DQotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0g
ICAgPC9Ob25lPg0KLSAgPC9JdGVtR3JvdXA+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8UmVzb3Vy
Y2VDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2Mi5yYyIgLz4NCi0gIDwvSXRlbUdyb3VwPg0KLTwv
UHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWluLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggNmU2NzhjMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL21haW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS8vCi0KLS8vIG1haW4uY3BwOiBETEwgZW50cnkgcG9pbnQgYW5kIG1hbmFnZW1l
bnQgb2YgdGhyZWFkLWxvY2FsIGRhdGEuCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgot
I2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgotI2luY2x1ZGUgImxpYkVHTC9TdXJmYWNlLmgiCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIv
RnJhbWVidWZmZXIuaCIKLQotc3RhdGljIERXT1JEIGN1cnJlbnRUTFMgPSBUTFNfT1VUX09GX0lO
REVYRVM7Ci0KLWV4dGVybiAiQyIgQk9PTCBXSU5BUEkgRGxsTWFpbihISU5TVEFOQ0UgaW5zdGFu
Y2UsIERXT1JEIHJlYXNvbiwgTFBWT0lEIHJlc2VydmVkKQotewotICAgIHN3aXRjaCAocmVhc29u
KQotICAgIHsKLSAgICAgIGNhc2UgRExMX1BST0NFU1NfQVRUQUNIOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBjdXJyZW50VExTID0gVGxzQWxsb2MoKTsKLQotICAgICAgICAgICAgaWYgKGN1cnJl
bnRUTFMgPT0gVExTX09VVF9PRl9JTkRFWEVTKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBG
YWxsIHRocm91Z2h0IHRvIGluaXRpYWxpemUgaW5kZXgKLSAgICAgIGNhc2UgRExMX1RIUkVBRF9B
VFRBQ0g6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpDdXJyZW50ICpjdXJyZW50ID0gKGds
OjpDdXJyZW50KilMb2NhbEFsbG9jKExQVFIsIHNpemVvZihnbDo6Q3VycmVudCkpOwotCi0gICAg
ICAgICAgICBpZiAoY3VycmVudCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUbHNT
ZXRWYWx1ZShjdXJyZW50VExTLCBjdXJyZW50KTsKLQotICAgICAgICAgICAgICAgIGN1cnJlbnQt
PmNvbnRleHQgPSBOVUxMOwotICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRpc3BsYXkgPSBOVUxM
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBE
TExfVEhSRUFEX0RFVEFDSDoKLSAgICAgICAgewotICAgICAgICAgICAgdm9pZCAqY3VycmVudCA9
IFRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOwotCi0gICAgICAgICAgICBpZiAoY3VycmVudCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NhbEZyZWUoKEhMT0NBTCljdXJyZW50KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRExM
X1BST0NFU1NfREVUQUNIOgotICAgICAgICB7Ci0gICAgICAgICAgICB2b2lkICpjdXJyZW50ID0g
VGxzR2V0VmFsdWUoY3VycmVudFRMUyk7Ci0KLSAgICAgICAgICAgIGlmIChjdXJyZW50KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2FsRnJlZSgoSExPQ0FMKWN1cnJlbnQpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBUbHNGcmVlKGN1cnJlbnRUTFMpOwotICAgICAg
ICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLW5hbWVzcGFjZSBnbAotewotdm9pZCBtYWtlQ3Vy
cmVudChDb250ZXh0ICpjb250ZXh0LCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFj
ZSAqc3VyZmFjZSkKLXsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZh
bHVlKGN1cnJlbnRUTFMpOwotCi0gICAgY3VycmVudC0+Y29udGV4dCA9IGNvbnRleHQ7Ci0gICAg
Y3VycmVudC0+ZGlzcGxheSA9IGRpc3BsYXk7Ci0KLSAgICBpZiAoY29udGV4dCAmJiBkaXNwbGF5
ICYmIHN1cmZhY2UpCi0gICAgewotICAgICAgICBjb250ZXh0LT5tYWtlQ3VycmVudChkaXNwbGF5
LCBzdXJmYWNlKTsKLSAgICB9Ci19Ci0KLUNvbnRleHQgKmdldENvbnRleHQoKQotewotICAgIEN1
cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7Ci0KLSAg
ICByZXR1cm4gY3VycmVudC0+Y29udGV4dDsKLX0KLQotQ29udGV4dCAqZ2V0Tm9uTG9zdENvbnRl
eHQoKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBnZXRDb250ZXh0KCk7Ci0gICAgCi0gICAg
aWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBpZiAoY29udGV4dC0+aXNDb250ZXh0TG9zdCgp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICAg
ICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IE5VTEw7Ci19Ci0KLWVnbDo6RGlzcGxheSAqZ2V0RGlzcGxheSgpCi17Ci0gICAgQ3VycmVudCAq
Y3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKLQotICAgIHJldHVy
biBjdXJyZW50LT5kaXNwbGF5OwotfQotCi1JRGlyZWN0M0REZXZpY2U5ICpnZXREZXZpY2UoKQot
ewotICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IGdldERpc3BsYXkoKTsKLQotICAgIHJldHVy
biBkaXNwbGF5LT5nZXREZXZpY2UoKTsKLX0KLQotYm9vbCBjaGVja0RldmljZUxvc3QoSFJFU1VM
VCBlcnJvckNvZGUpCi17Ci0gICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gTlVMTDsKLQotICAg
IGlmIChpc0RldmljZUxvc3RFcnJvcihlcnJvckNvZGUpKQotICAgIHsKLSAgICAgICAgZGlzcGxh
eSA9IGdsOjpnZXREaXNwbGF5KCk7Ci0gICAgICAgIGRpc3BsYXktPm5vdGlmeURldmljZUxvc3Qo
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLX0K
LQotLy8gUmVjb3JkcyBhbiBlcnJvciBjb2RlCi12b2lkIGVycm9yKEdMZW51bSBlcnJvckNvZGUp
Ci17Ci0gICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbEdldEN1cnJlbnRDb250ZXh0KCk7Ci0K
LSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoZXJyb3JDb2RlKQotICAg
ICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9JTlZBTElEX0VOVU06Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRJbnZhbGlkRW51bSgpOwotICAgICAgICAgICAgVFJBQ0UoIlx0ISBFcnJvciBn
ZW5lcmF0ZWQ6IGludmFsaWQgZW51bVxuIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICBjYXNlIEdMX0lOVkFMSURfVkFMVUU6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZh
bGlkVmFsdWUoKTsKLSAgICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZh
bGlkIHZhbHVlXG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfSU5W
QUxJRF9PUEVSQVRJT046Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkT3BlcmF0
aW9uKCk7Ci0gICAgICAgICAgICBUUkFDRSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxpZCBv
cGVyYXRpb25cbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9PVVRf
T0ZfTUVNT1JZOgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkT3V0T2ZNZW1vcnkoKTsKLSAg
ICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBvdXQgb2YgbWVtb3J5XG4iKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfSU5WQUxJRF9GUkFNRUJVRkZF
Ul9PUEVSQVRJT046Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkRnJhbWVidWZm
ZXJPcGVyYXRpb24oKTsKLSAgICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBp
bnZhbGlkIGZyYW1lYnVmZmVyIG9wZXJhdGlvblxuIik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0gICAgfQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWluLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggNTA0ODQ4YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIG1haW4uaDogTWFuYWdlbWVudCBvZiB0aHJlYWQt
bG9jYWwgZGF0YS4KLQotI2lmbmRlZiBMSUJHTEVTVjJfTUFJTl9IXwotI2RlZmluZSBMSUJHTEVT
VjJfTUFJTl9IXwotCi0jZGVmaW5lIEdMX0FQSUNBTEwKLSNpbmNsdWRlIDxHTEVTMi9nbDIuaD4K
LSNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgot
I2luY2x1ZGUgImxpYkVHTC9EaXNwbGF5LmgiCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIvQ29udGV4
dC5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLXN0cnVjdCBDdXJyZW50Ci17Ci0gICAgQ29udGV4dCAq
Y29udGV4dDsKLSAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXk7Ci19OwotCi12b2lkIG1ha2VDdXJy
ZW50KENvbnRleHQgKmNvbnRleHQsIGVnbDo6RGlzcGxheSAqZGlzcGxheSwgZWdsOjpTdXJmYWNl
ICpzdXJmYWNlKTsKLQotQ29udGV4dCAqZ2V0Q29udGV4dCgpOwotQ29udGV4dCAqZ2V0Tm9uTG9z
dENvbnRleHQoKTsKLWVnbDo6RGlzcGxheSAqZ2V0RGlzcGxheSgpOwotCi1JRGlyZWN0M0REZXZp
Y2U5ICpnZXREZXZpY2UoKTsKLQotYm9vbCBjaGVja0RldmljZUxvc3QoSFJFU1VMVCBlcnJvckNv
ZGUpOwotfQotCi12b2lkIGVycm9yKEdMZW51bSBlcnJvckNvZGUpOwotCi10ZW1wbGF0ZTxjbGFz
cyBUPgotY29uc3QgVCAmZXJyb3IoR0xlbnVtIGVycm9yQ29kZSwgY29uc3QgVCAmcmV0dXJuVmFs
dWUpCi17Ci0gICAgZXJyb3IoZXJyb3JDb2RlKTsKLQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
LX0KLQotI2VuZGlmICAgLy8gTElCR0xFU1YyX01BSU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWF0aHV0aWwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWF0aHV0aWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggYWJlZWU5MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL21hdGh1dGlsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotLy8gbWF0aHV0aWwuaDogTWF0aCBhbmQgYml0IG1hbmlwdWxh
dGlvbiBmdW5jdGlvbnMuCi0KLSNpZm5kZWYgTElCR0xFU1YyX01BVEhVVElMX0hfCi0jZGVmaW5l
IExJQkdMRVNWMl9NQVRIVVRJTF9IXwotCi0jaW5jbHVkZSA8aW50cmluLmg+Ci0jaW5jbHVkZSA8
bWF0aC5oPgotCi0jaW5jbHVkZSAiY29tbW9uL3N5c3RlbS5oIgotCi1uYW1lc3BhY2UgZ2wKLXsK
LXN0cnVjdCBWZWN0b3I0Ci17Ci0gICAgVmVjdG9yNCgpIHt9Ci0gICAgVmVjdG9yNChmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KSA6IHgoeCksIHkoeSksIHooeiksIHcodykge30K
LQotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQgeTsKLSAgICBmbG9hdCB6OwotICAgIGZsb2F0IHc7
Ci19OwotCi1pbmxpbmUgYm9vbCBpc1BvdzIoaW50IHgpCi17Ci0gICAgcmV0dXJuICh4ICYgKHgg
LSAxKSkgPT0gMCAmJiAoeCAhPSAwKTsKLX0KLQotaW5saW5lIGludCBsb2cyKGludCB4KQotewot
ICAgIGludCByID0gMDsKLSAgICB3aGlsZSAoKHggPj4gcikgPiAxKSByKys7Ci0gICAgcmV0dXJu
IHI7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBpbnQgY2VpbFBvdzIodW5zaWduZWQgaW50IHgpCi17
Ci0gICAgaWYgKHggIT0gMCkgeC0tOwotICAgIHggfD0geCA+PiAxOwotICAgIHggfD0geCA+PiAy
OwotICAgIHggfD0geCA+PiA0OwotICAgIHggfD0geCA+PiA4OwotICAgIHggfD0geCA+PiAxNjsK
LSAgICB4Kys7Ci0KLSAgICByZXR1cm4geDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgTUlOLCB0eXBlbmFtZSBNQVg+Ci1pbmxpbmUgVCBjbGFtcChUIHgsIE1JTiBtaW4sIE1B
WCBtYXgpCi17Ci0gICAgcmV0dXJuIHggPCBtaW4gPyBtaW4gOiAoeCA+IG1heCA/IG1heCA6IHgp
OwotfQotCi1pbmxpbmUgZmxvYXQgY2xhbXAwMShmbG9hdCB4KQotewotICAgIHJldHVybiBjbGFt
cCh4LCAwLjBmLCAxLjBmKTsKLX0KLQotdGVtcGxhdGU8Y29uc3QgaW50IG4+Ci1pbmxpbmUgdW5z
aWduZWQgaW50IHVub3JtKGZsb2F0IHgpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IG1heCA9
IDB4RkZGRkZGRkYgPj4gKDMyIC0gbik7Ci0KLSAgICBpZiAoeCA+IDEpCi0gICAgewotICAgICAg
ICByZXR1cm4gbWF4OwotICAgIH0KLSAgICBlbHNlIGlmICh4IDwgMCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gKHVuc2ln
bmVkIGludCkobWF4ICogeCArIDAuNWYpOwotICAgIH0KLX0KLQotaW5saW5lIGJvb2wgc3VwcG9y
dHNTU0UyKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBjaGVja2VkID0gZmFsc2U7Ci0gICAgc3RhdGlj
IGJvb2wgc3VwcG9ydHMgPSBmYWxzZTsKLQotICAgIGlmIChjaGVja2VkKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN1cHBvcnRzOwotICAgIH0KLQotICAgIGludCBpbmZvWzRdOwotICAgIF9fY3B1
aWQoaW5mbywgMCk7Ci0gICAgCi0gICAgaWYgKGluZm9bMF0gPj0gMSkKLSAgICB7Ci0gICAgICAg
IF9fY3B1aWQoaW5mbywgMSk7Ci0KLSAgICAgICAgc3VwcG9ydHMgPSAoaW5mb1szXSA+PiAyNikg
JiAxOwotICAgIH0KLQotICAgIGNoZWNrZWQgPSB0cnVlOwotCi0gICAgcmV0dXJuIHN1cHBvcnRz
OwotfQotCi1pbmxpbmUgdW5zaWduZWQgc2hvcnQgZmxvYXQzMlRvRmxvYXQxNihmbG9hdCBmcDMy
KQotewotICAgIHVuc2lnbmVkIGludCBmcDMyaSA9ICh1bnNpZ25lZCBpbnQmKWZwMzI7Ci0gICAg
dW5zaWduZWQgaW50IHNpZ24gPSAoZnAzMmkgJiAweDgwMDAwMDAwKSA+PiAxNjsKLSAgICB1bnNp
Z25lZCBpbnQgYWJzID0gZnAzMmkgJiAweDdGRkZGRkZGOwotCi0gICAgaWYoYWJzID4gMHg0N0ZG
RUZGRikgICAvLyBJbmZpbml0eQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNpZ24gfCAweDdGRkY7
Ci0gICAgfQotICAgIGVsc2UgaWYoYWJzIDwgMHgzODgwMDAwMCkgICAvLyBEZW5vcm1hbAotICAg
IHsKLSAgICAgICAgdW5zaWduZWQgaW50IG1hbnRpc3NhID0gKGFicyAmIDB4MDA3RkZGRkYpIHwg
MHgwMDgwMDAwMDsgICAKLSAgICAgICAgaW50IGUgPSAxMTMgLSAoYWJzID4+IDIzKTsKLQotICAg
ICAgICBpZihlIDwgMjQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFicyA9IG1hbnRpc3NhID4+
IGU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBhYnMg
PSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHNpZ24gfCAoYWJzICsgMHgwMDAwMEZG
RiArICgoYWJzID4+IDEzKSAmIDEpKSA+PiAxMzsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHNpZ24gfCAoYWJzICsgMHhDODAwMDAwMCArIDB4MDAwMDBGRkYgKyAoKGFi
cyA+PiAxMykgJiAxKSkgPj4gMTM7Ci0gICAgfQotfQotCi1mbG9hdCBmbG9hdDE2VG9GbG9hdDMy
KHVuc2lnbmVkIHNob3J0IGgpOwotCi19Ci0KLSNlbmRpZiAgIC8vIExJQkdMRVNWMl9NQVRIVVRJ
TF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZXNvdXJjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZXNvdXJj
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzOWFkYWFkLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVzb3VyY2UuaAorKysgL2Rl
di9udWxsCkBAIC0xLDE0ICswLDAgQEAKLS8ve3tOT19ERVBFTkRFTkNJRVN9fQotLy8gTWljcm9z
b2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIGluY2x1ZGUgZmlsZS4KLS8vIFVzZWQgYnkgbGliR0xF
U3YyLnJjCi0KLS8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCi0vLyAKLSNp
ZmRlZiBBUFNUVURJT19JTlZPS0VECi0jaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMK
LSNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMDEKLSNkZWZpbmUgX0FQ
U19ORVhUX0NPTU1BTkRfVkFMVUUgICAgICAgICA0MDAwMQotI2RlZmluZSBfQVBTX05FWFRfQ09O
VFJPTF9WQUxVRSAgICAgICAgIDEwMDEKLSNkZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZBTFVFICAg
ICAgICAgICAxMDEKLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3NoYWRlcnMvQmxpdC5wcyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvc2hhZGVycy9CbGl0LnBzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCBkY2IzYmQwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvc2hhZGVycy9CbGl0LnBzCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLXNhbXBsZXIyRCB0ZXggOiBzMDsKLQotdW5pZm9ybSBmbG9h
dDQgbW9kZSA6IGMwOwotCi0vLyBQYXNzdGhyb3VnaCBQaXhlbCBTaGFkZXIKLS8vIE91dHB1dHMg
dGV4dHVyZSAwIHNhbXBsZWQgYXQgdGV4Y29vcmQgMC4KLWZsb2F0NCBwYXNzdGhyb3VnaHBzKGZs
b2F0NCB0ZXhjb29yZCA6IFRFWENPT1JEMCkgOiBDT0xPUgotewotCXJldHVybiB0ZXgyRCh0ZXgs
IHRleGNvb3JkLnh5KTsKLX07Ci0KLS8vIEx1bWluYW5jZSBDb252ZXJzaW9uIFBpeGVsIFNoYWRl
cgotLy8gT3V0cHV0cyBzYW1wbGUodGV4MCwgdGMwKS5ycnJhLgotLy8gRm9yIExBIG91dHB1dCAo
cGFzcyBBKSBzZXQgQzAuWCA9IDEsIEMwLlkgPSAwLgotLy8gRm9yIEwgb3V0cHV0IChBID0gMSkg
c2V0IEMwLlggPSAwLCBDMC5ZID0gMS4KLWZsb2F0NCBsdW1pbmFuY2VwcyhmbG9hdDQgdGV4Y29v
cmQgOiBURVhDT09SRDApIDogQ09MT1IKLXsKLQlmbG9hdDQgdG1wID0gdGV4MkQodGV4LCB0ZXhj
b29yZC54eSk7Ci0JdG1wLncgPSB0bXAudyAqIG1vZGUueCArIG1vZGUueTsKLQlyZXR1cm4gdG1w
Lnh4eHc7Ci19OwotCi0vLyBSR0IvQSBDb21wb25lbnQgTWFzayBQaXhlbCBTaGFkZXIKLS8vIE91
dHB1dHMgc2FtcGxlKHRleDAsIHRjMCkgd2l0aCBvcHRpb25zIHRvIGZvcmNlIFJHQiA9IDAgYW5k
L29yIEEgPSAxLgotLy8gVG8gZm9yY2UgUkdCID0gMCwgc2V0IEMwLlggPSAwLCBvdGhlcndpc2Ug
QzAuWCA9IDEuCi0vLyBUbyBmb3JjZSBBID0gMSwgc2V0IEMwLlogPSAwLCBDMC5XID0gMSwgb3Ro
ZXJ3aXNlIEMwLlogPSAxLCBDMC5XID0gMC4KLWZsb2F0NCBjb21wb25lbnRtYXNrcHMoZmxvYXQ0
IHRleGNvb3JkIDogVEVYQ09PUkQwKSA6IENPTE9SCi17Ci0JZmxvYXQ0IHRtcCA9IHRleDJEKHRl
eCwgdGV4Y29vcmQueHkpOwotCXRtcC54eXogPSB0bXAueHl6ICogbW9kZS54OwotCXRtcC53ID0g
dG1wLncgKiBtb2RlLnogKyBtb2RlLnc7Ci0JcmV0dXJuIHRtcDsKLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3NoYWRlcnMvQmxpdC52cyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvc2hhZGVycy9CbGl0LnZzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzYTM2OTgwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvc2hhZGVycy9CbGl0LnZzCisrKyAvZGV2L251
bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLXN0cnVjdCBWU19PVVRQVVQKLXsK
LSAgICBmbG9hdDQgcG9zaXRpb24gOiBQT1NJVElPTjsKLSAgICBmbG9hdDQgdGV4Y29vcmQgOiBU
RVhDT09SRDA7Ci19OwotCi11bmlmb3JtIGZsb2F0NCBoYWxmUGl4ZWxTaXplIDogYzA7Ci0KLS8v
IFN0YW5kYXJkIFZlcnRleCBTaGFkZXIKLS8vIElucHV0IDAgaXMgdGhlIGhvbW9nZW5vdXMgcG9z
aXRpb24uCi0vLyBPdXRwdXRzIHRoZSBob21vZ2Vub3VzIHBvc2l0aW9uIGFzLWlzLgotLy8gT3V0
cHV0cyBhIHRleCBjb29yZCB3aXRoICgwLDApIGluIHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0
aGUgc2NyZWVuIGFuZCAoMSwxKSBpbiB0aGUgYm90dG9tIHJpZ2h0LgotLy8gQzAuWCBtdXN0IGJl
IG5lZ2F0aXZlIGhhbGYtcGl4ZWwgd2lkdGgsIEMwLlkgbXVzdCBiZSBoYWxmLXBpeGVsIGhlaWdo
dC4gQzAuWlcgbXVzdCBiZSAwLgotVlNfT1VUUFVUIHN0YW5kYXJkdnMoaW4gZmxvYXQ0IHBvc2l0
aW9uIDogUE9TSVRJT04pCi17Ci0gICAgVlNfT1VUUFVUIE91dDsKLQotICAgIE91dC5wb3NpdGlv
biA9IHBvc2l0aW9uICsgaGFsZlBpeGVsU2l6ZTsKLSAgICBPdXQudGV4Y29vcmQgPSBwb3NpdGlv
biAqIGZsb2F0NCgwLjUsIC0wLjUsIDEuMCwgMS4wKSArIGZsb2F0NCgwLjUsIDAuNSwgMCwgMCk7
Ci0KLSAgICByZXR1cm4gT3V0OwotfTsKLQotLy8gRmxpcCBZIFZlcnRleCBTaGFkZXIKLS8vIElu
cHV0IDAgaXMgdGhlIGhvbW9nZW5vdXMgcG9zaXRpb24uCi0vLyBPdXRwdXRzIHRoZSBob21vZ2Vu
b3VzIHBvc2l0aW9uIGFzLWlzLgotLy8gT3V0cHV0cyBhIHRleCBjb29yZCB3aXRoICgwLDEpIGlu
IHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVuIGFuZCAoMSwwKSBpbiB0aGUgYm90
dG9tIHJpZ2h0LgotLy8gQzAuWFkgbXVzdCBiZSB0aGUgaGFsZi1waXhlbCB3aWR0aCBhbmQgaGVp
Z2h0LiBDMC5aVyBtdXN0IGJlIDAuCi1WU19PVVRQVVQgZmxpcHl2cyhpbiBmbG9hdDQgcG9zaXRp
b24gOiBQT1NJVElPTikKLXsKLSAgICBWU19PVVRQVVQgT3V0OwotCi0gICAgT3V0LnBvc2l0aW9u
ID0gcG9zaXRpb24gKyBoYWxmUGl4ZWxTaXplOwotICAgIE91dC50ZXhjb29yZCA9IHBvc2l0aW9u
ICogZmxvYXQ0KDAuNSwgMC41LCAxLjAsIDEuMCkgKyBmbG9hdDQoMC41LCAwLjUsIDAsIDApOwot
Ci0gICAgcmV0dXJuIE91dDsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3NoYWRlcnMvY29tcG9uZW50bWFza3BzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3NoYWRlcnMvY29tcG9uZW50bWFza3BzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQ5MDJmNzQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9zaGFkZXJzL2NvbXBvbmVudG1hc2twcy5oCisr
KyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotI2lmIDAKLS8vCi0vLyBHZW5lcmF0ZWQgYnkg
TWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExCi0vLwotLy8g
ICBmeGMgL0UgY29tcG9uZW50bWFza3BzIC9UIHBzXzJfMCAvRmggY29tcG9uZW50bWFza3BzLmgg
QmxpdC5wcwotLy8KLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8KLS8vICAgZmxvYXQ0IG1vZGU7Ci0v
LyAgIHNhbXBsZXIyRCB0ZXg7Ci0vLwotLy8KLS8vIFJlZ2lzdGVyczoKLS8vCi0vLyAgIE5hbWUg
ICAgICAgICBSZWcgICBTaXplCi0vLyAgIC0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tCi0vLyAgIG1v
ZGUgICAgICAgICBjMCAgICAgICAxCi0vLyAgIHRleCAgICAgICAgICBzMCAgICAgICAxCi0vLwot
Ci0gICAgcHNfMl8wCi0gICAgZGNsIHQwLnh5Ci0gICAgZGNsXzJkIHMwCi0gICAgdGV4bGQgcjAs
IHQwLCBzMAotICAgIG11bCByMS54eXosIHIwLCBjMC54Ci0gICAgbWFkIHIxLncsIHIwLncsIGMw
LnosIGMwLncKLSAgICBtb3Ygb0MwLCByMQotCi0vLyBhcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rp
b24gc2xvdHMgdXNlZCAoMSB0ZXh0dXJlLCAzIGFyaXRobWV0aWMpCi0jZW5kaWYKLQotY29uc3Qg
QllURSBnX3BzMjBfY29tcG9uZW50bWFza3BzW10gPQotewotICAgICAgMCwgICAyLCAyNTUsIDI1
NSwgMjU0LCAyNTUsIAotICAgICA0MywgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIAotICAgICAy
OCwgICAwLCAgIDAsICAgMCwgMTE5LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1
LCAyNTUsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgIDExMiwgICAwLCAgIDAsICAgMCwgIDY4LCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDc2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICA5MiwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICA5NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAxMDksIDExMSwgMTAwLCAxMDEsIAotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgICAxLCAg
IDAsIAotICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIAotICAgICAgMSwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAxMTYsIDEwMSwgMTIwLCAgIDAsIAot
ICAgICAgNCwgICAwLCAgMTIsICAgMCwgICAxLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTEyLCAxMTUsIAotICAgICA5
NSwgIDUwLCAgOTUsICA0OCwgICAwLCAgNzcsIAotICAgIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1
LCAxMTEsIAotICAgIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIAotICAgICAzMiwgIDcy
LCAgNzYsICA4MywgIDc2LCAgMzIsIAotICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQs
IAotICAgICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIAotICAgIDEwOCwgMTAxLCAxMTQs
ICAzMiwgIDU3LCAgNDYsIAotICAgICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCAgNTAsIAotICAg
ICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIAotICAgICAzMSwgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsIAotICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIAotICAgICAzMSwg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIAotICAgICAgMCwgMTQ0LCAgIDAsICAgOCwgIDE1LCAx
NjAsIAotICAgICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIAotICAgICAxNSwgMTI4LCAg
IDAsICAgMCwgMjI4LCAxNzYsIAotICAgICAgMCwgICA4LCAyMjgsIDE2MCwgICA1LCAgIDAsIAot
ICAgICAgMCwgICAzLCAgIDEsICAgMCwgICA3LCAxMjgsIAotICAgICAgMCwgICAwLCAyMjgsIDEy
OCwgICAwLCAgIDAsIAotICAgICAgMCwgMTYwLCAgIDQsICAgMCwgICAwLCAgIDQsIAotICAgICAg
MSwgICAwLCAgIDgsIDEyOCwgICAwLCAgIDAsIAotICAgIDI1NSwgMTI4LCAgIDAsICAgMCwgMTcw
LCAxNjAsIAotICAgICAgMCwgICAwLCAyNTUsIDE2MCwgICAxLCAgIDAsIAotICAgICAgMCwgICAy
LCAgIDAsICAgOCwgIDE1LCAxMjgsIAotICAgICAgMSwgICAwLCAyMjgsIDEyOCwgMjU1LCAyNTUs
IAotICAgICAgMCwgICAwCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9zaGFkZXJzL2ZsaXB5dnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvc2hhZGVycy9mbGlweXZzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IGI4MTA3OTIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9zaGFkZXJzL2ZsaXB5dnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAg
QEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIg
Q29tcGlsZXIgOS4yOS45NTIuMzExMQotLy8KLS8vICAgZnhjIC9FIGZsaXB5dnMgL1QgdnNfMl8w
IC9GaCBmbGlweXZzLmggQmxpdC52cwotLy8KLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8KLS8vICAg
ZmxvYXQ0IGhhbGZQaXhlbFNpemU7Ci0vLwotLy8KLS8vIFJlZ2lzdGVyczoKLS8vCi0vLyAgIE5h
bWUgICAgICAgICAgUmVnICAgU2l6ZQotLy8gICAtLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0KLS8v
ICAgaGFsZlBpeGVsU2l6ZSBjMCAgICAgICAxCi0vLwotCi0gICAgdnNfMl8wCi0gICAgZGVmIGMx
LCAwLjUsIDEsIDAsIDAKLSAgICBkY2xfcG9zaXRpb24gdjAKLSAgICBhZGQgb1BvcywgdjAsIGMw
Ci0gICAgbWFkIG9UMCwgdjAsIGMxLnh4eXksIGMxLnh4enoKLQotLy8gYXBwcm94aW1hdGVseSAy
IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfdnMyMF9mbGlw
eXZzW10gPQotewotICAgICAgMCwgICAyLCAyNTQsIDI1NSwgMjU0LCAyNTUsIAotICAgICAzNSwg
ICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDg3LCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU0LCAyNTUsIAotICAgICAgMSwgICAwLCAg
IDAsICAgMCwgIDI4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIAot
ICAgICA4MCwgICAwLCAgIDAsICAgMCwgIDQ4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDY0LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEwNCwgIDk3LCAxMDgsIDEwMiwgIDgw
LCAxMDUsIAotICAgIDEyMCwgMTAxLCAxMDgsICA4MywgMTA1LCAxMjIsIAotICAgIDEwMSwgICAw
LCAxNzEsIDE3MSwgICAxLCAgIDAsIAotICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAs
IAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAxMTgs
IDExNSwgIDk1LCAgNTAsIAotICAgICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1LCAgOTksIAotICAg
IDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIAotICAgICAzMiwgIDQwLCAgODIsICA0MSwg
IDMyLCAgNzIsIAotICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIAotICAgICA5Nywg
MTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIAotICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAx
MDEsIAotICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCAgNTcsIAotICAgICA0NiwgIDU3LCAg
NTMsICA1MCwgIDQ2LCAgNTEsIAotICAgICA0OSwgIDQ5LCAgNDksICAgMCwgIDgxLCAgIDAsIAot
ICAgICAgMCwgICA1LCAgIDEsICAgMCwgIDE1LCAxNjAsIAotICAgICAgMCwgICAwLCAgIDAsICA2
MywgICAwLCAgIDAsIAotICAgIDEyOCwgIDYzLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDMxLCAgIDAsIAotICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAw
LCAxMjgsIAotICAgICAgMCwgICAwLCAgMTUsIDE0NCwgICAyLCAgIDAsIAotICAgICAgMCwgICAz
LCAgIDAsICAgMCwgIDE1LCAxOTIsIAotICAgICAgMCwgICAwLCAyMjgsIDE0NCwgICAwLCAgIDAs
IAotICAgIDIyOCwgMTYwLCAgIDQsICAgMCwgICAwLCAgIDQsIAotICAgICAgMCwgICAwLCAgMTUs
IDIyNCwgICAwLCAgIDAsIAotICAgIDIyOCwgMTQ0LCAgIDEsICAgMCwgIDgwLCAxNjAsIAotICAg
ICAgMSwgICAwLCAxNjAsIDE2MCwgMjU1LCAyNTUsIAotICAgICAgMCwgICAwCi19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9zaGFkZXJzL2dlbmVy
YXRlX3NoYWRlcnMuYmF0IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9z
aGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCBmMzQ2ZmI2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvc2hhZGVycy9nZW5lcmF0ZV9zaGFkZXJzLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDE0
ICswLDAgQEAKLUBFQ0hPIE9GRg0KLVJFTQ0KLVJFTSBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi1SRU0gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQ0KLVJFTSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KLVJFTQ0KLQ0KLVBBVEggJVBB
VEglOyVEWFNES19ESVIlXFV0aWxpdGllc1xiaW5ceDg2DQotDQotZnhjIC9FIHN0YW5kYXJkdnMg
L1QgdnNfMl8wIC9GaCBzdGFuZGFyZHZzLmggQmxpdC52cw0KLWZ4YyAvRSBmbGlweXZzIC9UIHZz
XzJfMCAvRmggZmxpcHl2cy5oIEJsaXQudnMNCi1meGMgL0UgcGFzc3Rocm91Z2hwcyAvVCBwc18y
XzAgL0ZoIHBhc3N0aHJvdWdocHMuaCBCbGl0LnBzDQotZnhjIC9FIGx1bWluYW5jZXBzIC9UIHBz
XzJfMCAvRmggbHVtaW5hbmNlcHMuaCBCbGl0LnBzDQotZnhjIC9FIGNvbXBvbmVudG1hc2twcyAv
VCBwc18yXzAgL0ZoIGNvbXBvbmVudG1hc2twcy5oIEJsaXQucHMNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3NoYWRlcnMvbHVtaW5hbmNlcHMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvc2hhZGVycy9sdW1pbmFuY2Vw
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyZDBiYzlkLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvc2hhZGVycy9sdW1pbmFuY2Vw
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotI2lmIDAKLS8vCi0vLyBHZW5lcmF0
ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExCi0v
LwotLy8gICBmeGMgL0UgbHVtaW5hbmNlcHMgL1QgcHNfMl8wIC9GaCBsdW1pbmFuY2Vwcy5oIEJs
aXQucHMKLS8vCi0vLwotLy8gUGFyYW1ldGVyczoKLS8vCi0vLyAgIGZsb2F0NCBtb2RlOwotLy8g
ICBzYW1wbGVyMkQgdGV4OwotLy8KLS8vCi0vLyBSZWdpc3RlcnM6Ci0vLwotLy8gICBOYW1lICAg
ICAgICAgUmVnICAgU2l6ZQotLy8gICAtLS0tLS0tLS0tLS0gLS0tLS0gLS0tLQotLy8gICBtb2Rl
ICAgICAgICAgYzAgICAgICAgMQotLy8gICB0ZXggICAgICAgICAgczAgICAgICAgMQotLy8KLQot
ICAgIHBzXzJfMAotICAgIGRjbCB0MC54eQotICAgIGRjbF8yZCBzMAotICAgIHRleGxkIHIwLCB0
MCwgczAKLSAgICBtYWQgcjEudywgcjAudywgYzAueCwgYzAueQotICAgIG1vdiByMS54eXosIHIw
LngKLSAgICBtb3Ygb0MwLCByMQotCi0vLyBhcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xv
dHMgdXNlZCAoMSB0ZXh0dXJlLCAzIGFyaXRobWV0aWMpCi0jZW5kaWYKLQotY29uc3QgQllURSBn
X3BzMjBfbHVtaW5hbmNlcHNbXSA9Ci17Ci0gICAgICAwLCAgIDIsIDI1NSwgMjU1LCAyNTQsIDI1
NSwgCi0gICAgIDQzLCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgCi0gICAgIDI4LCAgIDAsICAg
MCwgICAwLCAxMTksICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTUsIDI1NSwgCi0g
ICAgICAyLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgCi0gICAgMTEyLCAgIDAsICAgMCwgICAwLCAgNjgsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNzYs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDkyLCAgIDAs
ICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDk2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDEwOSwg
MTExLCAxMDAsIDEwMSwgCi0gICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgIDEsICAgMCwgCi0gICAg
ICAzLCAgIDAsICAgMSwgICAwLCAgIDQsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDExNiwgMTAxLCAxMjAsICAgMCwgCi0gICAgICA0LCAg
IDAsICAxMiwgICAwLCAgIDEsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMTIsIDExNSwgCi0gICAgIDk1LCAgNTAsICA5
NSwgIDQ4LCAgIDAsICA3NywgCi0gICAgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgCi0g
ICAgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgCi0gICAgIDMyLCAgNzIsICA3NiwgIDgz
LCAgNzYsICAzMiwgCi0gICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgCi0gICAgIDMy
LCAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgCi0gICAgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTcs
ICA0NiwgCi0gICAgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgCi0gICAgIDQ2LCAgNTEs
ICA0OSwgIDQ5LCAgNDksICAgMCwgCi0gICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMsIDE3NiwgCi0gICAgIDMxLCAgIDAsICAgMCwg
ICAyLCAgIDAsICAgMCwgCi0gICAgICAwLCAxNDQsICAgMCwgICA4LCAgMTUsIDE2MCwgCi0gICAg
IDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgCi0gICAgIDE1LCAxMjgsICAgMCwgICAwLCAy
MjgsIDE3NiwgCi0gICAgICAwLCAgIDgsIDIyOCwgMTYwLCAgIDQsICAgMCwgCi0gICAgICAwLCAg
IDQsICAgMSwgICAwLCAgIDgsIDEyOCwgCi0gICAgICAwLCAgIDAsIDI1NSwgMTI4LCAgIDAsICAg
MCwgCi0gICAgICAwLCAxNjAsICAgMCwgICAwLCAgODUsIDE2MCwgCi0gICAgICAxLCAgIDAsICAg
MCwgICAyLCAgIDEsICAgMCwgCi0gICAgICA3LCAxMjgsICAgMCwgICAwLCAgIDAsIDEyOCwgCi0g
ICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgOCwgCi0gICAgIDE1LCAxMjgsICAgMSwgICAw
LCAyMjgsIDEyOCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAwCi19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9zaGFkZXJzL3Bhc3N0aHJvdWdocHMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvc2hhZGVycy9wYXNzdGhy
b3VnaHBzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU2Yjc1ZWYuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9zaGFkZXJzL3Bhc3N0
aHJvdWdocHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLSNpZiAwCi0vLwotLy8g
R2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIu
MzExMQotLy8KLS8vICAgZnhjIC9FIHBhc3N0aHJvdWdocHMgL1QgcHNfMl8wIC9GaCBwYXNzdGhy
b3VnaHBzLmggQmxpdC5wcwotLy8KLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8KLS8vICAgc2FtcGxl
cjJEIHRleDsKLS8vCi0vLwotLy8gUmVnaXN0ZXJzOgotLy8KLS8vICAgTmFtZSAgICAgICAgIFJl
ZyAgIFNpemUKLS8vICAgLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0KLS8vICAgdGV4ICAgICAgICAg
IHMwICAgICAgIDEKLS8vCi0KLSAgICBwc18yXzAKLSAgICBkY2wgdDAueHkKLSAgICBkY2xfMmQg
czAKLSAgICB0ZXhsZCByMCwgdDAsIHMwCi0gICAgbW92IG9DMCwgcjAKLQotLy8gYXBwcm94aW1h
dGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMSBhcml0aG1ldGljKQot
I2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19wczIwX3Bhc3N0aHJvdWdocHNbXSA9Ci17Ci0gICAgICAw
LCAgIDIsIDI1NSwgMjU1LCAyNTQsIDI1NSwgCi0gICAgIDMyLCAgIDAsICA2NywgIDg0LCAgNjUs
ICA2NiwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgNzUsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAyLCAyNTUsIDI1NSwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDY4LCAgIDAsICAgMCwg
ICAwLCAgNDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgNTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgMTE2LCAxMDEsIDEyMCwgICAwLCAgIDQsICAgMCwgCi0gICAgIDEyLCAg
IDAsICAgMSwgICAwLCAgIDEsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsIDExMiwgMTE1LCAgOTUsICA1MCwgCi0gICAgIDk1LCAgNDgsICAg
MCwgIDc3LCAxMDUsICA5OSwgCi0gICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgCi0g
ICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgCi0gICAgIDc2LCAgODMsICA3NiwgIDMy
LCAgODMsIDEwNCwgCi0gICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgCi0gICAgMTEx
LCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgCi0gICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAs
ICA1NywgCi0gICAgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsICA1MSwgCi0gICAgIDQ5LCAgNDks
ICA0OSwgICAwLCAgMzEsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDEyOCwg
Ci0gICAgICAwLCAgIDAsICAgMywgMTc2LCAgMzEsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMCwg
ICAwLCAgIDAsIDE0NCwgCi0gICAgICAwLCAgIDgsICAxNSwgMTYwLCAgNjYsICAgMCwgCi0gICAg
ICAwLCAgIDMsICAgMCwgICAwLCAgMTUsIDEyOCwgCi0gICAgICAwLCAgIDAsIDIyOCwgMTc2LCAg
IDAsICAgOCwgCi0gICAgMjI4LCAxNjAsICAgMSwgICAwLCAgIDAsICAgMiwgCi0gICAgICAwLCAg
IDgsICAxNSwgMTI4LCAgIDAsICAgMCwgCi0gICAgMjI4LCAxMjgsIDI1NSwgMjU1LCAgIDAsICAg
MAotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
c2hhZGVycy9zdGFuZGFyZHZzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3NoYWRlcnMvc3RhbmRhcmR2cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBh
NjY3ZjY0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvc2hhZGVycy9zdGFuZGFyZHZzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0j
aWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBp
bGVyIDkuMjkuOTUyLjMxMTEKLS8vCi0vLyAgIGZ4YyAvRSBzdGFuZGFyZHZzIC9UIHZzXzJfMCAv
Rmggc3RhbmRhcmR2cy5oIEJsaXQudnMKLS8vCi0vLwotLy8gUGFyYW1ldGVyczoKLS8vCi0vLyAg
IGZsb2F0NCBoYWxmUGl4ZWxTaXplOwotLy8KLS8vCi0vLyBSZWdpc3RlcnM6Ci0vLwotLy8gICBO
YW1lICAgICAgICAgIFJlZyAgIFNpemUKLS8vICAgLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tCi0v
LyAgIGhhbGZQaXhlbFNpemUgYzAgICAgICAgMQotLy8KLQotICAgIHZzXzJfMAotICAgIGRlZiBj
MSwgMC41LCAtMC41LCAxLCAwCi0gICAgZGNsX3Bvc2l0aW9uIHYwCi0gICAgYWRkIG9Qb3MsIHYw
LCBjMAotICAgIG1hZCBvVDAsIHYwLCBjMS54eXp6LCBjMS54eHd3Ci0KLS8vIGFwcHJveGltYXRl
bHkgMiBpbnN0cnVjdGlvbiBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX3ZzMjBf
c3RhbmRhcmR2c1tdID0KLXsKLSAgICAgIDAsICAgMiwgMjU0LCAyNTUsIDI1NCwgMjU1LCAKLSAg
ICAgMzUsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCAKLSAgICAgMjgsICAgMCwgICAwLCAgIDAs
ICA4NywgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1LCAKLSAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAKLSAgICAgODAsICAgMCwgICAwLCAgIDAsICA0OCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDQsICA5NywgMTA4LCAx
MDIsICA4MCwgMTA1LCAKLSAgICAxMjAsIDEwMSwgMTA4LCAgODMsIDEwNSwgMTIyLCAKLSAgICAx
MDEsICAgMCwgMTcxLCAxNzEsICAgMSwgICAwLCAKLSAgICAgIDMsICAgMCwgICAxLCAgIDAsICAg
NCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgMTE4LCAxMTUsICA5NSwgIDUwLCAKLSAgICAgOTUsICA0OCwgICAwLCAgNzcsIDEwNSwgIDk5
LCAKLSAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCAKLSAgICAgMzIsICA0MCwgIDgy
LCAgNDEsICAzMiwgIDcyLCAKLSAgICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCAKLSAg
ICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCAKLSAgICAxMTEsIDEwOSwgMTEyLCAxMDUs
IDEwOCwgMTAxLCAKLSAgICAxMTQsICAzMiwgIDU3LCAgNDYsICA1MCwgIDU3LCAKLSAgICAgNDYs
ICA1NywgIDUzLCAgNTAsICA0NiwgIDUxLCAKLSAgICAgNDksICA0OSwgIDQ5LCAgIDAsICA4MSwg
ICAwLCAKLSAgICAgIDAsICAgNSwgICAxLCAgIDAsICAxNSwgMTYwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgNjMsICAgMCwgICAwLCAKLSAgICAgIDAsIDE5MSwgICAwLCAgIDAsIDEyOCwgIDYzLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAzMSwgICAwLCAKLSAgICAgIDAsICAgMiwgICAwLCAg
IDAsICAgMCwgMTI4LCAKLSAgICAgIDAsICAgMCwgIDE1LCAxNDQsICAgMiwgICAwLCAKLSAgICAg
IDAsICAgMywgICAwLCAgIDAsICAxNSwgMTkyLCAKLSAgICAgIDAsICAgMCwgMjI4LCAxNDQsICAg
MCwgICAwLCAKLSAgICAyMjgsIDE2MCwgICA0LCAgIDAsICAgMCwgICA0LCAKLSAgICAgIDAsICAg
MCwgIDE1LCAyMjQsICAgMCwgICAwLCAKLSAgICAyMjgsIDE0NCwgICAxLCAgIDAsIDE2NCwgMTYw
LCAKLSAgICAgIDEsICAgMCwgMjQwLCAxNjAsIDI1NSwgMjU1LCAKLSAgICAgIDAsICAgMAotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVz
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggY2M1YTc3OC4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxMjE3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIHV0
aWxpdGllcy5jcHA6IENvbnZlcnNpb24gZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRp
bmVzLgotCi0jaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgotCi0jaW5jbHVkZSA8bGlt
aXRzPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLSNp
bmNsdWRlICJjb21tb24vc3lzdGVtLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL21hdGh1dGlsLmgi
Ci0jaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKLQotbmFtZXNwYWNlIGdsCi17Ci0KLS8v
IFRoaXMgaXMgaG93IG11Y2ggZGF0YSB0aGUgYXBwbGljYXRpb24gZXhwZWN0cyBmb3IgYSB1bmlm
b3JtCi1pbnQgVW5pZm9ybUV4dGVybmFsQ29tcG9uZW50Q291bnQoR0xlbnVtIHR5cGUpCi17Ci0g
ICAgc3dpdGNoICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgR0xfQk9PTDoKLSAgICAgIGNhc2Ug
R0xfRkxPQVQ6Ci0gICAgICBjYXNlIEdMX0lOVDoKLSAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDoK
LSAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFOgotICAgICAgICAgIHJldHVybiAxOwotICAgICAg
Y2FzZSBHTF9CT09MX1ZFQzI6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6Ci0gICAgICBjYXNl
IEdMX0lOVF9WRUMyOgotICAgICAgICAgIHJldHVybiAyOwotICAgICAgY2FzZSBHTF9JTlRfVkVD
MzoKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzoKLSAgICAgIGNhc2UgR0xfQk9PTF9WRUMzOgot
ICAgICAgICAgIHJldHVybiAzOwotICAgICAgY2FzZSBHTF9CT09MX1ZFQzQ6Ci0gICAgICBjYXNl
IEdMX0ZMT0FUX1ZFQzQ6Ci0gICAgICBjYXNlIEdMX0lOVF9WRUM0OgotICAgICAgY2FzZSBHTF9G
TE9BVF9NQVQyOgotICAgICAgICAgIHJldHVybiA0OwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQz
OgotICAgICAgICAgIHJldHVybiA5OwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgotICAgICAg
ICAgIHJldHVybiAxNjsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotLy8gVGhpcyBpcyBob3cgbXVjaCBkYXRhIHdl
IGFjdHVhbGx5IHN0b3JlIGZvciBhIHVuaWZvcm0KLWludCBVbmlmb3JtSW50ZXJuYWxDb21wb25l
bnRDb3VudChHTGVudW0gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpCi0gICAgewotICAgICAg
Y2FzZSBHTF9CT09MOgotICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICBjYXNlIEdMX1NBTVBMRVJf
MkQ6Ci0gICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKLSAgICAgICAgICByZXR1cm4gMTsKLSAg
ICAgIGNhc2UgR0xfQk9PTF9WRUMyOgotICAgICAgY2FzZSBHTF9JTlRfVkVDMjoKLSAgICAgICAg
ICByZXR1cm4gMjsKLSAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6Ci0gICAgICBjYXNlIEdMX0JPT0xf
VkVDMzoKLSAgICAgICAgICByZXR1cm4gMzsKLSAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICBj
YXNlIEdMX0ZMT0FUX1ZFQzI6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6Ci0gICAgICBjYXNl
IEdMX0JPT0xfVkVDNDoKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKLSAgICAgIGNhc2UgR0xf
SU5UX1ZFQzQ6Ci0gICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6
Ci0gICAgICAgICAgcmV0dXJuIDg7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6Ci0gICAgICAg
ICAgcmV0dXJuIDEyOwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgotICAgICAgICAgIHJldHVy
biAxNjsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gMDsKLX0KLQotR0xlbnVtIFVuaWZvcm1Db21wb25lbnRUeXBlKEdMZW51bSB0
eXBlKQotewotICAgIHN3aXRjaCh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgR0xfQk9PTDoKLSAg
ICAgIGNhc2UgR0xfQk9PTF9WRUMyOgotICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6Ci0gICAgICBj
YXNlIEdMX0JPT0xfVkVDNDoKLSAgICAgICAgICByZXR1cm4gR0xfQk9PTDsKLSAgICAgIGNhc2Ug
R0xfRkxPQVQ6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6Ci0gICAgICBjYXNlIEdMX0ZMT0FU
X1ZFQzM6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01B
VDI6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6
Ci0gICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOwotICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICBj
YXNlIEdMX1NBTVBMRVJfMkQ6Ci0gICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKLSAgICAgIGNh
c2UgR0xfSU5UX1ZFQzI6Ci0gICAgICBjYXNlIEdMX0lOVF9WRUMzOgotICAgICAgY2FzZSBHTF9J
TlRfVkVDNDoKLSAgICAgICAgICByZXR1cm4gR0xfSU5UOwotICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiBHTF9OT05FOwotfQotCi1z
aXplX3QgVW5pZm9ybUNvbXBvbmVudFNpemUoR0xlbnVtIHR5cGUpCi17Ci0gICAgc3dpdGNoKHR5
cGUpCi0gICAgewotICAgICAgY2FzZSBHTF9CT09MOiAgcmV0dXJuIHNpemVvZihHTGludCk7Ci0g
ICAgICBjYXNlIEdMX0ZMT0FUOiByZXR1cm4gc2l6ZW9mKEdMZmxvYXQpOwotICAgICAgY2FzZSBH
TF9JTlQ6ICAgcmV0dXJuIHNpemVvZihHTGludCk7Ci0gICAgICBkZWZhdWx0OiAgICAgICBVTlJF
QUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi1zaXplX3QgVW5pZm9ybUlu
dGVybmFsU2l6ZShHTGVudW0gdHlwZSkKLXsKLSAgICByZXR1cm4gVW5pZm9ybUNvbXBvbmVudFNp
emUoVW5pZm9ybUNvbXBvbmVudFR5cGUodHlwZSkpICogVW5pZm9ybUludGVybmFsQ29tcG9uZW50
Q291bnQodHlwZSk7Ci19Ci0KLXNpemVfdCBVbmlmb3JtRXh0ZXJuYWxTaXplKEdMZW51bSB0eXBl
KQotewotICAgIHJldHVybiBVbmlmb3JtQ29tcG9uZW50U2l6ZShVbmlmb3JtQ29tcG9uZW50VHlw
ZSh0eXBlKSkgKiBVbmlmb3JtRXh0ZXJuYWxDb21wb25lbnRDb3VudCh0eXBlKTsKLX0KLQotaW50
IFZhcmlhYmxlUm93Q291bnQoR0xlbnVtIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKQotICAg
IHsKLSAgICAgIGNhc2UgR0xfTk9ORToKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBjYXNlIEdM
X0JPT0w6Ci0gICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICBj
YXNlIEdMX0JPT0xfVkVDMjoKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKLSAgICAgIGNhc2Ug
R0xfSU5UX1ZFQzI6Ci0gICAgICBjYXNlIEdMX0lOVF9WRUMzOgotICAgICAgY2FzZSBHTF9GTE9B
VF9WRUMzOgotICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6Ci0gICAgICBjYXNlIEdMX0JPT0xfVkVD
NDoKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKLSAgICAgIGNhc2UgR0xfSU5UX1ZFQzQ6Ci0g
ICAgICAgIHJldHVybiAxOwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgotICAgICAgICByZXR1
cm4gMjsKLSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAg
ICBjYXNlIEdMX0ZMT0FUX01BVDQ6Ci0gICAgICAgIHJldHVybiA0OwotICAgICAgZGVmYXVsdDoK
LSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotaW50
IFZhcmlhYmxlQ29sdW1uQ291bnQoR0xlbnVtIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKQot
ICAgIHsKLSAgICAgIGNhc2UgR0xfTk9ORToKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBjYXNl
IEdMX0JPT0w6Ci0gICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAg
ICAgIHJldHVybiAxOwotICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6Ci0gICAgICBjYXNlIEdMX0ZM
T0FUX1ZFQzI6Ci0gICAgICBjYXNlIEdMX0lOVF9WRUMyOgotICAgICAgY2FzZSBHTF9GTE9BVF9N
QVQyOgotICAgICAgICByZXR1cm4gMjsKLSAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6Ci0gICAgICBj
YXNlIEdMX0ZMT0FUX1ZFQzM6Ci0gICAgICBjYXNlIEdMX0JPT0xfVkVDMzoKLSAgICAgIGNhc2Ug
R0xfRkxPQVRfTUFUMzoKLSAgICAgICAgcmV0dXJuIDM7Ci0gICAgICBjYXNlIEdMX0JPT0xfVkVD
NDoKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKLSAgICAgIGNhc2UgR0xfSU5UX1ZFQzQ6Ci0g
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6Ci0gICAgICAgIHJldHVybiA0OwotICAgICAgZGVmYXVs
dDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQot
aW50IEFsbG9jYXRlRmlyc3RGcmVlQml0cyh1bnNpZ25lZCBpbnQgKmJpdHMsIHVuc2lnbmVkIGlu
dCBhbGxvY2F0aW9uU2l6ZSwgdW5zaWduZWQgaW50IGJpdHNTaXplKQotewotICAgIEFTU0VSVChh
bGxvY2F0aW9uU2l6ZSA8PSBiaXRzU2l6ZSk7Ci0KLSAgICB1bnNpZ25lZCBpbnQgbWFzayA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgPj4gKHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQgaW50Pjo6ZGlnaXRzIC0gYWxsb2NhdGlvblNpemUpOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBiaXRzU2l6ZSAtIGFsbG9jYXRpb25TaXplICsgMTsg
aSsrKQotICAgIHsKLSAgICAgICAgaWYgKCgqYml0cyAmIG1hc2spID09IDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgICpiaXRzIHw9IG1hc2s7Ci0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1hc2sgPDw9IDE7Ci0gICAgfQotCi0gICAgcmV0dXJuIC0xOwotfQot
Ci1HTHNpemVpIENvbXB1dGVQaXRjaChHTHNpemVpIHdpZHRoLCBHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0xpbnQgYWxpZ25tZW50KQotewotICAgIEFTU0VSVChhbGlnbm1lbnQgPiAwICYmIGlzUG93
MihhbGlnbm1lbnQpKTsKLQotICAgIEdMc2l6ZWkgcmF3UGl0Y2ggPSBDb21wdXRlUGl4ZWxTaXpl
KGludGVybmFsZm9ybWF0KSAqIHdpZHRoOwotICAgIHJldHVybiAocmF3UGl0Y2ggKyBhbGlnbm1l
bnQgLSAxKSAmIH4oYWxpZ25tZW50IC0gMSk7Ci19Ci0KLUdMc2l6ZWkgQ29tcHV0ZUNvbXByZXNz
ZWRQaXRjaChHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQpCi17Ci0gICAgcmV0
dXJuIENvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgMSwgaW50ZXJuYWxmb3JtYXQpOwotfQot
Ci1HTHNpemVpIENvbXB1dGVDb21wcmVzc2VkU2l6ZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xlbnVtIGludGVybmFsZm9ybWF0KQotewotICAgIHN3aXRjaCAoaW50ZXJuYWxmb3Jt
YXQpCi0gICAgewotICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgot
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgcmV0
dXJuIDggKiAoKHdpZHRoICsgMykgLyA0KSAqICgoaGVpZ2h0ICsgMykgLyA0KTsKLSAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKLSAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKLSAgICAgICAgcmV0dXJuIDE2ICogKCh3aWR0
aCArIDMpIC8gNCkgKiAoKGhlaWdodCArIDMpIC8gNCk7Ci0gICAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLWJvb2wgSXNDb21wcmVzc2VkKEdMZW51bSBmb3JtYXQp
Ci17Ci0gICAgaWYoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgfHwK
LSAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgfHwKLSAg
ICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSB8fAotICAg
ICAgIGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWJvb2wgSXNEZXB0aFRleHR1cmUoR0xlbnVtIGZvcm1h
dCkKLXsKLSAgICBpZiAoZm9ybWF0ID09IEdMX0RFUFRIX0NPTVBPTkVOVCB8fAotICAgICAgICBm
b3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTF9PRVMgfHwKLSAgICAgICAgZm9ybWF0ID09IEdMX0RF
UFRIX0NPTVBPTkVOVDE2IHx8Ci0gICAgICAgIGZvcm1hdCA9PSBHTF9ERVBUSF9DT01QT05FTlQz
Ml9PRVMgfHwKLSAgICAgICAgZm9ybWF0ID09IEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1ib29sIElzU3RlbmNpbFRleHR1cmUoR0xlbnVtIGZvcm1hdCkKLXsKLSAgICBpZiAoZm9ybWF0
ID09IEdMX0RFUFRIX1NURU5DSUxfT0VTIHx8Ci0gICAgICAgIGZvcm1hdCA9PSBHTF9ERVBUSDI0
X1NURU5DSUw4X09FUykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotLy8gUmV0dXJucyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIGEg
c2luZ2xlIHRleGVsIGluIGFuIEltYWdlCi1pbnQgQ29tcHV0ZVBpeGVsU2l6ZShHTGludCBpbnRl
cm5hbGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQotICAgIHsKLSAgICAg
IGNhc2UgR0xfQUxQSEE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2Yo
dW5zaWduZWQgY2hhcik7Ci0gICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOiAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOwotICAgICAgY2FzZSBHTF9BTFBI
QTMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZihmbG9hdCk7Ci0gICAg
ICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6ICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9m
KGZsb2F0KTsKLSAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0Ux
NkZfRVhUOiAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25lZCBzaG9ydCk7Ci0g
ICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDogICAgICAgICAgICByZXR1cm4gc2l6
ZW9mKHVuc2lnbmVkIGNoYXIpICogMjsKLSAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJG
X0VYVDogICAgICAgICAgIHJldHVybiBzaXplb2YoZmxvYXQpICogMjsKLSAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFX0FMUEhBMTZGX0VYVDogICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQg
c2hvcnQpICogMjsKLSAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgY2hhcikgKiAzOwotICAgICAgY2FzZSBHTF9SR0I1
NjU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25lZCBzaG9y
dCk7Ci0gICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2l6ZW9mKGZsb2F0KSAqIDM7Ci0gICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6ICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAqIDM7Ci0gICAgICBj
YXNlIEdMX1JHQkE4X09FUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVu
c2lnbmVkIGNoYXIpICogNDsKLSAgICAgIGNhc2UgR0xfUkdCQTQ6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwotICAgICAgY2FzZSBHTF9S
R0I1X0ExOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25lZCBz
aG9ydCk7Ci0gICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2l6ZW9mKGZsb2F0KSAqIDQ7Ci0gICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOiAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAqIDQ7Ci0gICAg
ICBjYXNlIEdMX0JHUkE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9m
KHVuc2lnbmVkIGNoYXIpICogNDsKLSAgICAgIGNhc2UgR0xfQkdSQTRfQU5HTEVYOiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwotICAgICAgY2FzZSBH
TF9CR1I1X0ExX0FOR0xFWDogICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25l
ZCBzaG9ydCk7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJl
dHVybiAwOwotfQotCi1ib29sIElzQ3ViZW1hcFRleHR1cmVUYXJnZXQoR0xlbnVtIHRhcmdldCkK
LXsKLSAgICByZXR1cm4gKHRhcmdldCA+PSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gg
JiYgdGFyZ2V0IDw9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWik7Ci19Ci0KLWJvb2wg
SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQoR0xlbnVtIHRhcmdldCkKLXsKLSAgICByZXR1cm4gdGFy
Z2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgSXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpOwot
fQotCi1HTGludCBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkKLSAgICB7Ci0gICAgICBjYXNlIEdMX0FM
UEhBOgotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0JZVEU6ICAgIHJldHVybiBHTF9BTFBIQThfRVhUOwotICAgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6ICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBMzJGX0VYVDsKLSAgICAgICAgICBj
YXNlIEdMX0hBTEZfRkxPQVRfT0VTOiAgIHJldHVybiBHTF9BTFBIQTE2Rl9FWFQ7Ci0gICAgICAg
ICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0xVTUlOQU5DRToKLSAgICAgICAgc3dpdGNo
ICh0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgICBy
ZXR1cm4gR0xfTFVNSU5BTkNFOF9FWFQ7Ci0gICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICAg
ICAgICByZXR1cm4gR0xfTFVNSU5BTkNFMzJGX0VYVDsKLSAgICAgICAgICBjYXNlIEdMX0hBTEZf
RkxPQVRfT0VTOiAgIHJldHVybiBHTF9MVU1JTkFOQ0UxNkZfRVhUOwotICAgICAgICAgIGRlZmF1
bHQ6ICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgIHN3aXRjaCAo
dHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURTogICAgcmV0
dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAg
ICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOwotICAgICAgICAgIGNh
c2UgR0xfSEFMRl9GTE9BVF9PRVM6ICAgcmV0dXJuIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ7
Ci0gICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1JHQjoKLSAgICAgICAgc3dp
dGNoICh0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAg
ICAgICAgICAgIHJldHVybiBHTF9SR0I4X09FUzsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X1NIT1JUXzVfNl81OiAgICAgcmV0dXJuIEdMX1JHQjU2NTsKLSAgICAgICAgICBjYXNlIEdMX0ZM
T0FUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRl9FWFQ7Ci0gICAgICAgICAg
Y2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICAgICAgICAgIHJldHVybiBHTF9SR0IxNkZfRVhUOwot
ICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1JHQkE6Ci0gICAg
ICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
QllURTogICAgICAgICAgICByZXR1cm4gR0xfUkdCQThfT0VTOwotICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfU0hPUlRfNF80XzRfNDogICByZXR1cm4gR0xfUkdCQTQ7Ci0gICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOiAgIHJldHVybiBHTF9SR0I1X0ExOwotICAgICAg
ICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRl9F
WFQ7Ci0gICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICAgICAgICAgIHJldHVybiBH
TF9SR0JBMTZGX0VYVDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0JHUkFfRVhUOgotICAgICAgICBzd2l0Y2ggKHR5cGUp
Ci0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfQkdSQThfRVhUOwotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlRfNF80XzRfNF9SRVZfRVhUOiAgIHJldHVybiBHTF9CR1JBNF9BTkdMRVg7Ci0gICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQ6ICAgcmV0dXJuIEdMX0JH
UjVfQTFfQU5HTEVYOwotICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfQU5HTEU6Ci0gICAgICAgIHJldHVybiBmb3JtYXQ7Ci0gICAgICBjYXNlIEdMX0RFUFRI
X0NPTVBPTkVOVDoKLSAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVDogICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05F
TlQxNjsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogICAgICAgICAgICAgcmV0dXJu
IEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzsKLSAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAg
ICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKLSAgICAgICAgc3dpdGNoICh0eXBl
KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM6ICAg
IHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKLSAgICAgICAgICBkZWZhdWx0OiAgICAg
ICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0K
LQotICAgIHJldHVybiBHTF9OT05FOwotfQotCi1HTGVudW0gRXh0cmFjdEZvcm1hdChHTGVudW0g
aW50ZXJuYWxmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKLSAgICB7Ci0g
ICAgICBjYXNlIEdMX1JHQjU2NTogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9S
R0I7Ci0gICAgICBjYXNlIEdMX1JHQkE0OiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9SR0JBOwotICAgICAgY2FzZSBHTF9SR0I1X0ExOiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfUkdCQTsKLSAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX1JHQjsKLSAgICAgIGNhc2UgR0xfUkdCQThfT0VTOiAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE7Ci0gICAgICBjYXNlIEdMX0xVTUlOQU5DRThf
QUxQSEE4X0VYVDogICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEE7Ci0gICAgICBj
YXNlIEdMX0xVTUlOQU5DRThfRVhUOiAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFO
Q0U7Ci0gICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6ICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9BTFBIQTsKLSAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDog
ICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7Ci0gICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOiAgIHJldHVybiBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVDsKLSAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19BTkdMRTogcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7Ci0gICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6IHJldHVybiBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOwotICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKLSAgICAgIGNhc2UgR0xfUkdCMzJG
X0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKLSAgICAgIGNhc2UgR0xf
QUxQSEEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBOwotICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5B
TkNFOwotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOiAgICAgICAgICByZXR1
cm4gR0xfTFVNSU5BTkNFX0FMUEhBOwotICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKLSAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDog
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKLSAgICAgIGNhc2UgR0xfQUxQSEEx
NkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBOwotICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0UxNkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFOwot
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOiAgICAgICAgICByZXR1cm4gR0xf
TFVNSU5BTkNFX0FMUEhBOwotICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6ICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfQkdSQV9FWFQ7Ci0gICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVO
VDE2OiAgICAgICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05FTlQ7Ci0gICAgICBjYXNl
IEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01Q
T05FTlQ7Ci0gICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOiAgICAgICAgICAgIHJl
dHVybiBHTF9ERVBUSF9TVEVOQ0lMX09FUzsKLSAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX05PTkU7ICAgLy8gVW5zdXBwb3J0ZWQKLSAgICB9
Ci19Ci0KLUdMZW51bSBFeHRyYWN0VHlwZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpCi17Ci0gICAg
c3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1JHQjU2NTogICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTsKLSAg
ICAgIGNhc2UgR0xfUkdCQTQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1VO
U0lHTkVEX1NIT1JUXzRfNF80XzQ7Ci0gICAgICBjYXNlIEdMX1JHQjVfQTE6ICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOwotICAgICAgY2Fz
ZSBHTF9SR0I4X09FUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURf
QllURTsKLSAgICAgIGNhc2UgR0xfUkdCQThfT0VTOiAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX1VOU0lHTkVEX0JZVEU7Ci0gICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VY
VDogICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOwotICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0U4X0VYVDogICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfQllURTsKLSAg
ICAgIGNhc2UgR0xfQUxQSEE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1VO
U0lHTkVEX0JZVEU7Ci0gICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6
ICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOwotICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVDogICByZXR1cm4gR0xfVU5TSUdORURfQllURTsKLSAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRTogcmV0dXJuIEdMX1VOU0lHTkVEX0JZ
VEU7Ci0gICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6IHJldHVy
biBHTF9VTlNJR05FRF9CWVRFOwotICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7Ci0gICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6ICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKLSAgICAgIGNhc2UgR0xfQUxQSEEz
MkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOwotICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7Ci0gICAg
ICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6ICAgICAgICAgIHJldHVybiBHTF9GTE9B
VDsKLSAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX0hBTEZfRkxPQVRfT0VTOwotICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOiAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7Ci0gICAgICBjYXNlIEdMX0FMUEhB
MTZGX0VYVDogICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9IQUxGX0ZMT0FUX09FUzsKLSAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VYVDogICAgICAgICAgICAgICAgcmV0dXJuIEdMX0hB
TEZfRkxPQVRfT0VTOwotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOiAgICAg
ICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7Ci0gICAgICBjYXNlIEdMX0JHUkE4X0VYVDog
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOwotICAgICAgY2Fz
ZSBHTF9ERVBUSF9DT01QT05FTlQxNjogICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURf
U0hPUlQ7Ci0gICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgICAgICAgIHJl
dHVybiBHTF9VTlNJR05FRF9JTlQ7Ci0gICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
OiAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM7Ci0gICAgICBkZWZh
dWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9OT05FOyAgIC8v
IFVuc3VwcG9ydGVkCi0gICAgfQotfQotCi1ib29sIElzQ29sb3JSZW5kZXJhYmxlKEdMZW51bSBp
bnRlcm5hbGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQotICAgIHsKLSAg
ICAgIGNhc2UgR0xfUkdCQTQ6Ci0gICAgICBjYXNlIEdMX1JHQjVfQTE6Ci0gICAgICBjYXNlIEdM
X1JHQjU2NToKLSAgICAgIGNhc2UgR0xfUkdCOF9PRVM6Ci0gICAgICBjYXNlIEdMX1JHQkE4X09F
UzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2
OgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKLSAgICAgIGNhc2UgR0xfREVQVEgyNF9T
VEVOQ0lMOF9PRVM6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgSXNEZXB0aFJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KQotewotICAgIHN3aXRj
aCAoaW50ZXJuYWxmb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQx
NjoKLSAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKLSAgICAgIGNhc2UgR0xfUkdCQTQ6
Ci0gICAgICBjYXNlIEdMX1JHQjVfQTE6Ci0gICAgICBjYXNlIEdMX1JHQjU2NToKLSAgICAgIGNh
c2UgR0xfUkdCOF9PRVM6Ci0gICAgICBjYXNlIEdMX1JHQkE4X09FUzoKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBJc1N0ZW5jaWxSZW5kZXJhYmxlKEdMZW51
bSBpbnRlcm5hbGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQotICAgIHsK
LSAgICAgIGNhc2UgR0xfU1RFTkNJTF9JTkRFWDg6Ci0gICAgICBjYXNlIEdMX0RFUFRIMjRfU1RF
TkNJTDhfT0VTOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgR0xfUkdCQTQ6Ci0g
ICAgICBjYXNlIEdMX1JHQjVfQTE6Ci0gICAgICBjYXNlIEdMX1JHQjU2NToKLSAgICAgIGNhc2Ug
R0xfUkdCOF9PRVM6Ci0gICAgICBjYXNlIEdMX1JHQkE4X09FUzoKLSAgICAgIGNhc2UgR0xfREVQ
VEhfQ09NUE9ORU5UMTY6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWJvb2wgSXNGbG9hdDMyRm9ybWF0KEdMaW50IGludGVybmFsZm9ybWF0KQotewotICAgIHN3aXRj
aCAoaW50ZXJuYWxmb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKLSAg
ICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKLSAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgotICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQ
SEEzMkZfRVhUOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWJvb2wgSXNGbG9hdDE2Rm9ybWF0KEdMaW50IGlu
dGVybmFsZm9ybWF0KQotewotICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCi0gICAgewotICAg
ICAgY2FzZSBHTF9SR0JBMTZGX0VYVDoKLSAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKLSAgICAg
IGNhc2UgR0xfQUxQSEExNkZfRVhUOgotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgot
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLX0K
LQotbmFtZXNwYWNlIGVzMmR4Ci17Ci0KLUQzRENNUEZVTkMgQ29udmVydENvbXBhcmlzb24oR0xl
bnVtIGNvbXBhcmlzb24pCi17Ci0gICAgRDNEQ01QRlVOQyBkM2RDb21wID0gRDNEQ01QX0FMV0FZ
UzsKLSAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCi0gICAgewotICAgICAgY2FzZSBHTF9ORVZFUjog
ICAgZDNkQ29tcCA9IEQzRENNUF9ORVZFUjsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9B
TFdBWVM6ICAgZDNkQ29tcCA9IEQzRENNUF9BTFdBWVM7ICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBHTF9MRVNTOiAgICAgZDNkQ29tcCA9IEQzRENNUF9MRVNTOyAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9MRVFVQUw6ICAgZDNkQ29tcCA9IEQzRENNUF9MRVNTRVFVQUw7ICAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9FUVVBTDogICAgZDNkQ29tcCA9IEQzRENNUF9FUVVBTDsgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBHTF9HUkVBVEVSOiAgZDNkQ29tcCA9IEQzRENNUF9HUkVBVEVS
OyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9HRVFVQUw6ICAgZDNkQ29tcCA9IEQzRENNUF9H
UkVBVEVSRVFVQUw7IGJyZWFrOwotICAgICAgY2FzZSBHTF9OT1RFUVVBTDogZDNkQ29tcCA9IEQz
RENNUF9OT1RFUVVBTDsgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZDNkQ29tcDsKLX0KLQotRDNEQ09MT1IgQ29udmVydENvbG9y
KGdsOjpDb2xvciBjb2xvcikKLXsKLSAgICByZXR1cm4gRDNEQ09MT1JfUkdCQShnbDo6dW5vcm08
OD4oY29sb3IucmVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY29s
b3IuZ3JlZW4pLAotICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4Pihjb2xvci5i
bHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY29sb3IuYWxwaGEp
KTsKLX0KLQotRDNEQkxFTkQgQ29udmVydEJsZW5kRnVuYyhHTGVudW0gYmxlbmQpCi17Ci0gICAg
RDNEQkxFTkQgZDNkQmxlbmQgPSBEM0RCTEVORF9aRVJPOwotCi0gICAgc3dpdGNoIChibGVuZCkK
LSAgICB7Ci0gICAgICBjYXNlIEdMX1pFUk86ICAgICAgICAgICAgICAgICAgICAgZDNkQmxlbmQg
PSBEM0RCTEVORF9aRVJPOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORTogICAg
ICAgICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9PTkU7ICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX1NSQ19DT0xPUjogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBE
M0RCTEVORF9TUkNDT0xPUjsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORV9NSU5VU19T
UkNfQ09MT1I6ICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9JTlZTUkNDT0xPUjsgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX0RTVF9DT0xPUjogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0RC
TEVORF9ERVNUQ09MT1I7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1Rf
Q09MT1I6ICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9JTlZERVNUQ09MT1I7ICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEdMX1NSQ19BTFBIQTogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0RCTEVO
RF9TUkNBTFBIQTsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQUxQ
SEE6ICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9JTlZTUkNBTFBIQTsgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX0RTVF9BTFBIQTogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9E
RVNUQUxQSEE7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6
ICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9JTlZERVNUQUxQSEE7ICAgYnJlYWs7Ci0gICAgICBj
YXNlIEdMX0NPTlNUQU5UX0NPTE9SOiAgICAgICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9CTEVO
REZBQ1RPUjsgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xP
UjogZDNkQmxlbmQgPSBEM0RCTEVORF9JTlZCTEVOREZBQ1RPUjsgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX0NPTlNUQU5UX0FMUEhBOiAgICAgICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9CTEVOREZB
Q1RPUjsgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQTog
ZDNkQmxlbmQgPSBEM0RCTEVORF9JTlZCTEVOREZBQ1RPUjsgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1NSQ19BTFBIQV9TQVRVUkFURTogICAgICAgZDNkQmxlbmQgPSBEM0RCTEVORF9TUkNBTFBIQVNB
VDsgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAg
IHJldHVybiBkM2RCbGVuZDsKLX0KLQotRDNEQkxFTkRPUCBDb252ZXJ0QmxlbmRPcChHTGVudW0g
YmxlbmRPcCkKLXsKLSAgICBEM0RCTEVORE9QIGQzZEJsZW5kT3AgPSBEM0RCTEVORE9QX0FERDsK
LQotICAgIHN3aXRjaCAoYmxlbmRPcCkKLSAgICB7Ci0gICAgICBjYXNlIEdMX0ZVTkNfQUREOiAg
ICAgICAgICAgICAgZDNkQmxlbmRPcCA9IEQzREJMRU5ET1BfQUREOyAgICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBHTF9GVU5DX1NVQlRSQUNUOiAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0RCTEVO
RE9QX1NVQlRSQUNUOyAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRS
QUNUOiBkM2RCbGVuZE9wID0gRDNEQkxFTkRPUF9SRVZTVUJUUkFDVDsgYnJlYWs7Ci0gICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiBkM2RCbGVuZE9wOwot
fQotCi1EM0RTVEVOQ0lMT1AgQ29udmVydFN0ZW5jaWxPcChHTGVudW0gc3RlbmNpbE9wKQotewot
ICAgIEQzRFNURU5DSUxPUCBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfS0VFUDsKLQotICAg
IHN3aXRjaCAoc3RlbmNpbE9wKQotICAgIHsKLSAgICAgIGNhc2UgR0xfWkVSTzogICAgICBkM2RT
dGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfWkVSTzsgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0tF
RVA6ICAgICAgZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX0tFRVA7ICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9SRVBMQUNFOiAgIGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9SRVBMQUNF
OyBicmVhazsKLSAgICAgIGNhc2UgR0xfSU5DUjogICAgICBkM2RTdGVuY2lsT3AgPSBEM0RTVEVO
Q0lMT1BfSU5DUlNBVDsgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0RFQ1I6ICAgICAgZDNkU3RlbmNp
bE9wID0gRDNEU1RFTkNJTE9QX0RFQ1JTQVQ7IGJyZWFrOwotICAgICAgY2FzZSBHTF9JTlZFUlQ6
ICAgIGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9JTlZFUlQ7ICBicmVhazsKLSAgICAgIGNh
c2UgR0xfSU5DUl9XUkFQOiBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfSU5DUjsgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX0RFQ1JfV1JBUDogZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9Q
X0RFQ1I7ICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gZDNkU3RlbmNpbE9wOwotfQotCi1EM0RURVhUVVJFQUREUkVTUyBDb252ZXJ0
VGV4dHVyZVdyYXAoR0xlbnVtIHdyYXApCi17Ci0gICAgRDNEVEVYVFVSRUFERFJFU1MgZDNkV3Jh
cCA9IEQzRFRBRERSRVNTX1dSQVA7Ci0KLSAgICBzd2l0Y2ggKHdyYXApCi0gICAgewotICAgICAg
Y2FzZSBHTF9SRVBFQVQ6ICAgICAgICAgICAgZDNkV3JhcCA9IEQzRFRBRERSRVNTX1dSQVA7ICAg
YnJlYWs7Ci0gICAgICBjYXNlIEdMX0NMQU1QX1RPX0VER0U6ICAgICBkM2RXcmFwID0gRDNEVEFE
RFJFU1NfQ0xBTVA7ICBicmVhazsKLSAgICAgIGNhc2UgR0xfTUlSUk9SRURfUkVQRUFUOiAgIGQz
ZFdyYXAgPSBEM0RUQUREUkVTU19NSVJST1I7IGJyZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZDNkV3JhcDsKLX0KLQotRDNEQ1VMTCBDb252
ZXJ0Q3VsbE1vZGUoR0xlbnVtIGN1bGxGYWNlLCBHTGVudW0gZnJvbnRGYWNlKQotewotICAgIEQz
RENVTEwgY3VsbCA9IEQzRENVTExfQ0NXOwotICAgIHN3aXRjaCAoY3VsbEZhY2UpCi0gICAgewot
ICAgICAgY2FzZSBHTF9GUk9OVDoKLSAgICAgICAgY3VsbCA9IChmcm9udEZhY2UgPT0gR0xfQ0NX
ID8gRDNEQ1VMTF9DVyA6IEQzRENVTExfQ0NXKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX0JBQ0s6Ci0gICAgICAgIGN1bGwgPSAoZnJvbnRGYWNlID09IEdMX0NDVyA/IEQzRENVTExf
Q0NXIDogRDNEQ1VMTF9DVyk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9GUk9OVF9B
TkRfQkFDSzoKLSAgICAgICAgY3VsbCA9IEQzRENVTExfTk9ORTsgLy8gY3VsbGluZyB3aWxsIGJl
IGhhbmRsZWQgZHVyaW5nIGRyYXcKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiBjdWxsOwotfQotCi1EM0RDVUJFTUFQX0ZB
Q0VTIENvbnZlcnRDdWJlRmFjZShHTGVudW0gY3ViZUZhY2UpCi17Ci0gICAgRDNEQ1VCRU1BUF9G
QUNFUyBmYWNlID0gRDNEQ1VCRU1BUF9GQUNFX1BPU0lUSVZFX1g7Ci0KLSAgICBzd2l0Y2ggKGN1
YmVGYWNlKQotICAgIHsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
OgotICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9GQUNFX1BPU0lUSVZFX1g7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6Ci0gICAgICAg
IGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfTkVHQVRJVkVfWDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKLSAgICAgICAgZmFjZSA9IEQz
RENVQkVNQVBfRkFDRV9QT1NJVElWRV9ZOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgotICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9G
QUNFX05FR0FUSVZFX1k7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1o6Ci0gICAgICAgIGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfUE9TSVRJ
VkVfWjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWjoKLSAgICAgICAgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9ORUdBVElWRV9aOwotICAg
ICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGZhY2U7Ci19Ci0KLURXT1JEIENvbnZlcnRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wg
Z3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKLXsKLSAgICByZXR1cm4gKHJlZCAgID8gRDNE
Q09MT1JXUklURUVOQUJMRV9SRUQgICA6IDApIHwKLSAgICAgICAgICAgKGdyZWVuID8gRDNEQ09M
T1JXUklURUVOQUJMRV9HUkVFTiA6IDApIHwKLSAgICAgICAgICAgKGJsdWUgID8gRDNEQ09MT1JX
UklURUVOQUJMRV9CTFVFICA6IDApIHwKLSAgICAgICAgICAgKGFscGhhID8gRDNEQ09MT1JXUklU
RUVOQUJMRV9BTFBIQSA6IDApOwotfQotCi1EM0RURVhUVVJFRklMVEVSVFlQRSBDb252ZXJ0TWFn
RmlsdGVyKEdMZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpCi17Ci0gICAgaWYg
KG1heEFuaXNvdHJvcHkgPiAxLjBmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEQzRFRFWEZfQU5J
U09UUk9QSUM7Ci0gICAgfQotCi0gICAgRDNEVEVYVFVSRUZJTFRFUlRZUEUgZDNkTWFnRmlsdGVy
ID0gRDNEVEVYRl9QT0lOVDsKLSAgICBzd2l0Y2ggKG1hZ0ZpbHRlcikKLSAgICB7Ci0gICAgICBj
YXNlIEdMX05FQVJFU1Q6IGQzZE1hZ0ZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7ICBicmVhazsKLSAg
ICAgIGNhc2UgR0xfTElORUFSOiAgZDNkTWFnRmlsdGVyID0gRDNEVEVYRl9MSU5FQVI7IGJyZWFr
OwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZDNk
TWFnRmlsdGVyOwotfQotCi12b2lkIENvbnZlcnRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRlciwg
RDNEVEVYVFVSRUZJTFRFUlRZUEUgKmQzZE1pbkZpbHRlciwgRDNEVEVYVFVSRUZJTFRFUlRZUEUg
KmQzZE1pcEZpbHRlciwgZmxvYXQgbWF4QW5pc290cm9weSkKLXsKLSAgICBzd2l0Y2ggKG1pbkZp
bHRlcikKLSAgICB7Ci0gICAgICBjYXNlIEdMX05FQVJFU1Q6Ci0gICAgICAgICpkM2RNaW5GaWx0
ZXIgPSBEM0RURVhGX1BPSU5UOwotICAgICAgICAqZDNkTWlwRmlsdGVyID0gRDNEVEVYRl9OT05F
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTElORUFSOgotICAgICAgICAqZDNkTWlu
RmlsdGVyID0gRDNEVEVYRl9MSU5FQVI7Ci0gICAgICAgICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhG
X05PTkU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9ORUFS
RVNUOgotICAgICAgICAqZDNkTWluRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKLSAgICAgICAgKmQz
ZE1pcEZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBH
TF9MSU5FQVJfTUlQTUFQX05FQVJFU1Q6Ci0gICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhG
X0xJTkVBUjsKLSAgICAgICAgKmQzZE1pcEZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI6Ci0gICAgICAgICpk
M2RNaW5GaWx0ZXIgPSBEM0RURVhGX1BPSU5UOwotICAgICAgICAqZDNkTWlwRmlsdGVyID0gRDNE
VEVYRl9MSU5FQVI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQ
X0xJTkVBUjoKLSAgICAgICAgKmQzZE1pbkZpbHRlciA9IEQzRFRFWEZfTElORUFSOwotICAgICAg
ICAqZDNkTWlwRmlsdGVyID0gRDNEVEVYRl9MSU5FQVI7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgKmQzZE1pbkZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7Ci0gICAgICAg
ICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhGX05PTkU7Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgfQotCi0gICAgaWYgKG1heEFuaXNvdHJvcHkgPiAxLjBmKQotICAgIHsKLSAgICAgICAgKmQz
ZE1pbkZpbHRlciA9IEQzRFRFWEZfQU5JU09UUk9QSUM7Ci0gICAgfQotfQotCi1ib29sIENvbnZl
cnRQcmltaXRpdmVUeXBlKEdMZW51bSBwcmltaXRpdmVUeXBlLCBHTHNpemVpIGVsZW1lbnRDb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUFJJTUlUSVZFVFlQRSAqZDNkUHJpbWl0
aXZlVHlwZSwgaW50ICpkM2RQcmltaXRpdmVDb3VudCkKLXsKLSAgICBzd2l0Y2ggKHByaW1pdGl2
ZVR5cGUpCi0gICAgewotICAgICAgY2FzZSBHTF9QT0lOVFM6Ci0gICAgICAgICpkM2RQcmltaXRp
dmVUeXBlID0gRDNEUFRfUE9JTlRMSVNUOwotICAgICAgICAqZDNkUHJpbWl0aXZlQ291bnQgPSBl
bGVtZW50Q291bnQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9MSU5FUzoKLSAgICAg
ICAgKmQzZFByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5FTElTVDsKLSAgICAgICAgKmQzZFByaW1p
dGl2ZUNvdW50ID0gZWxlbWVudENvdW50IC8gMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX0xJTkVfTE9PUDoKLSAgICAgICAgKmQzZFByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5FU1RS
SVA7Ci0gICAgICAgICpkM2RQcmltaXRpdmVDb3VudCA9IGVsZW1lbnRDb3VudCAtIDE7ICAgLy8g
RDNEIGRvZXNuJ3Qgc3VwcG9ydCBsaW5lIGxvb3BzLCBzbyB3ZSBkcmF3IHRoZSBsYXN0IGxpbmUg
c2VwYXJhdGVseQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTElORV9TVFJJUDoKLSAg
ICAgICAgKmQzZFByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5FU1RSSVA7Ci0gICAgICAgICpkM2RQ
cmltaXRpdmVDb3VudCA9IGVsZW1lbnRDb3VudCAtIDE7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBHTF9UUklBTkdMRVM6Ci0gICAgICAgICpkM2RQcmltaXRpdmVUeXBlID0gRDNEUFRfVFJJ
QU5HTEVMSVNUOwotICAgICAgICAqZDNkUHJpbWl0aXZlQ291bnQgPSBlbGVtZW50Q291bnQgLyAz
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVFJJQU5HTEVfU1RSSVA6Ci0gICAgICAg
ICpkM2RQcmltaXRpdmVUeXBlID0gRDNEUFRfVFJJQU5HTEVTVFJJUDsKLSAgICAgICAgKmQzZFBy
aW1pdGl2ZUNvdW50ID0gZWxlbWVudENvdW50IC0gMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEdMX1RSSUFOR0xFX0ZBTjoKLSAgICAgICAgKmQzZFByaW1pdGl2ZVR5cGUgPSBEM0RQVF9U
UklBTkdMRUZBTjsKLSAgICAgICAgKmQzZFByaW1pdGl2ZUNvdW50ID0gZWxlbWVudENvdW50IC0g
MjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUQzREZPUk1BVCBDb252ZXJ0UmVuZGVy
YnVmZmVyRm9ybWF0KEdMZW51bSBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQpCi0gICAg
ewotICAgICAgY2FzZSBHTF9OT05FOiAgICAgICAgICAgICAgICAgcmV0dXJuIEQzREZNVF9OVUxM
OwotICAgICAgY2FzZSBHTF9SR0JBNDoKLSAgICAgIGNhc2UgR0xfUkdCNV9BMToKLSAgICAgIGNh
c2UgR0xfUkdCQThfT0VTOiAgICAgICAgICAgIHJldHVybiBEM0RGTVRfQThSOEc4Qjg7Ci0gICAg
ICBjYXNlIEdMX1JHQjU2NTogICAgICAgICAgICAgICByZXR1cm4gRDNERk1UX1I1RzZCNTsKLSAg
ICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAgICAgICAgIHJldHVybiBEM0RGTVRfWDhSOEc4Qjg7
Ci0gICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgotICAgICAgY2FzZSBHTF9TVEVOQ0lM
X0lOREVYODogICAgICAgCi0gICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOiByZXR1
cm4gRDNERk1UX0QyNFM4OwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICAgcmV0
dXJuIEQzREZNVF9BOFI4RzhCODsKLSAgICB9Ci19Ci0KLUQzRE1VTFRJU0FNUExFX1RZUEUgR2V0
TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMoR0xzaXplaSBzYW1wbGVzKQotewotICAgIGlmIChz
YW1wbGVzIDw9IDEpCi0gICAgICAgIHJldHVybiBEM0RNVUxUSVNBTVBMRV9OT05FOwotICAgIGVs
c2UKLSAgICAgICAgcmV0dXJuIChEM0RNVUxUSVNBTVBMRV9UWVBFKXNhbXBsZXM7Ci19Ci0KLX0K
LQotbmFtZXNwYWNlIGR4MmVzCi17Ci0KLXVuc2lnbmVkIGludCBHZXRTdGVuY2lsU2l6ZShEM0RG
T1JNQVQgc3RlbmNpbEZvcm1hdCkKLXsKLSAgICBpZiAoc3RlbmNpbEZvcm1hdCA9PSBEM0RGTVRf
SU5UWikKLSAgICB7Ci0gICAgICAgIHJldHVybiA4OwotICAgIH0KLSAgICBzd2l0Y2goc3RlbmNp
bEZvcm1hdCkKLSAgICB7Ci0gICAgICBjYXNlIEQzREZNVF9EMjRGUzg6Ci0gICAgICBjYXNlIEQz
REZNVF9EMjRTODoKLSAgICAgICAgcmV0dXJuIDg7Ci0gICAgICBjYXNlIEQzREZNVF9EMjRYNFM0
OgotICAgICAgICByZXR1cm4gNDsKLSAgICAgIGNhc2UgRDNERk1UX0QxNVMxOgotICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgIGNhc2UgRDNERk1UX0QxNl9MT0NLQUJMRToKLSAgICAgIGNhc2UgRDNE
Rk1UX0QzMjoKLSAgICAgIGNhc2UgRDNERk1UX0QyNFg4OgotICAgICAgY2FzZSBEM0RGTVRfRDMy
Rl9MT0NLQUJMRToKLSAgICAgIGNhc2UgRDNERk1UX0QxNjoKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgLy9jYXNlIEQzREZNVF9EMzJfTE9DS0FCTEU6ICByZXR1cm4gMDsgICAvLyBEaXJlY3RYIDlF
eCBvbmx5Ci0gICAgLy9jYXNlIEQzREZNVF9TOF9MT0NLQUJMRTogICByZXR1cm4gODsgICAvLyBE
aXJlY3RYIDlFeCBvbmx5Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci19Ci0KLXVuc2lnbmVkIGludCBHZXRBbHBoYVNpemUoRDNERk9STUFUIGNvbG9yRm9ybWF0KQot
ewotICAgIHN3aXRjaCAoY29sb3JGb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBEM0RGTVRfQTE2
QjE2RzE2UjE2RjoKLSAgICAgICAgcmV0dXJuIDE2OwotICAgICAgY2FzZSBEM0RGTVRfQTMyQjMy
RzMyUjMyRjoKLSAgICAgICAgcmV0dXJuIDMyOwotICAgICAgY2FzZSBEM0RGTVRfQTJSMTBHMTBC
MTA6Ci0gICAgICAgIHJldHVybiAyOwotICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6Ci0gICAg
ICAgIHJldHVybiA4OwotICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6Ci0gICAgICAgIHJldHVy
biAxOwotICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6Ci0gICAgICBjYXNlIEQzREZNVF9SNUc2
QjU6Ci0gICAgICAgIHJldHVybiAwOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotfQotCi11bnNpZ25lZCBpbnQgR2V0UmVkU2l6ZShEM0RGT1JNQVQgY29sb3JGb3Jt
YXQpCi17Ci0gICAgc3dpdGNoIChjb2xvckZvcm1hdCkKLSAgICB7Ci0gICAgICBjYXNlIEQzREZN
VF9BMTZCMTZHMTZSMTZGOgotICAgICAgICByZXR1cm4gMTY7Ci0gICAgICBjYXNlIEQzREZNVF9B
MzJCMzJHMzJSMzJGOgotICAgICAgICByZXR1cm4gMzI7Ci0gICAgICBjYXNlIEQzREZNVF9BMlIx
MEcxMEIxMDoKLSAgICAgICAgcmV0dXJuIDEwOwotICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6
Ci0gICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKLSAgICAgICAgcmV0dXJuIDg7Ci0gICAgICBj
YXNlIEQzREZNVF9BMVI1RzVCNToKLSAgICAgIGNhc2UgRDNERk1UX1I1RzZCNToKLSAgICAgICAg
cmV0dXJuIDU7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0K
LXVuc2lnbmVkIGludCBHZXRHcmVlblNpemUoRDNERk9STUFUIGNvbG9yRm9ybWF0KQotewotICAg
IHN3aXRjaCAoY29sb3JGb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBEM0RGTVRfQTE2QjE2RzE2
UjE2RjoKLSAgICAgICAgcmV0dXJuIDE2OwotICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMy
RjoKLSAgICAgICAgcmV0dXJuIDMyOwotICAgICAgY2FzZSBEM0RGTVRfQTJSMTBHMTBCMTA6Ci0g
ICAgICAgIHJldHVybiAxMDsKLSAgICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4OgotICAgICAgY2Fz
ZSBEM0RGTVRfWDhSOEc4Qjg6Ci0gICAgICAgIHJldHVybiA4OwotICAgICAgY2FzZSBEM0RGTVRf
QTFSNUc1QjU6Ci0gICAgICAgIHJldHVybiA1OwotICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1Ogot
ICAgICAgICByZXR1cm4gNjsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLX0KLQotdW5zaWduZWQgaW50IEdldEJsdWVTaXplKEQzREZPUk1BVCBjb2xvckZvcm1hdCkK
LXsKLSAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQotICAgIHsKLSAgICAgIGNhc2UgRDNERk1UX0Ex
NkIxNkcxNlIxNkY6Ci0gICAgICAgIHJldHVybiAxNjsKLSAgICAgIGNhc2UgRDNERk1UX0EzMkIz
MkczMlIzMkY6Ci0gICAgICAgIHJldHVybiAzMjsKLSAgICAgIGNhc2UgRDNERk1UX0EyUjEwRzEw
QjEwOgotICAgICAgICByZXR1cm4gMTA7Ci0gICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKLSAg
ICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgotICAgICAgICByZXR1cm4gODsKLSAgICAgIGNhc2Ug
RDNERk1UX0ExUjVHNUI1OgotICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1OgotICAgICAgICByZXR1
cm4gNTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQotdW5z
aWduZWQgaW50IEdldERlcHRoU2l6ZShEM0RGT1JNQVQgZGVwdGhGb3JtYXQpCi17Ci0gICAgaWYg
KGRlcHRoRm9ybWF0ID09IEQzREZNVF9JTlRaKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDI0Owot
ICAgIH0KLSAgICBzd2l0Y2ggKGRlcHRoRm9ybWF0KQotICAgIHsKLSAgICAgIGNhc2UgRDNERk1U
X0QxNl9MT0NLQUJMRTogIHJldHVybiAxNjsKLSAgICAgIGNhc2UgRDNERk1UX0QzMjogICAgICAg
ICAgIHJldHVybiAzMjsKLSAgICAgIGNhc2UgRDNERk1UX0QxNVMxOiAgICAgICAgIHJldHVybiAx
NTsKLSAgICAgIGNhc2UgRDNERk1UX0QyNFM4OiAgICAgICAgIHJldHVybiAyNDsKLSAgICAgIGNh
c2UgRDNERk1UX0QyNFg4OiAgICAgICAgIHJldHVybiAyNDsKLSAgICAgIGNhc2UgRDNERk1UX0Qy
NFg0UzQ6ICAgICAgIHJldHVybiAyNDsKLSAgICAgIGNhc2UgRDNERk1UX0QxNjogICAgICAgICAg
IHJldHVybiAxNjsKLSAgICAgIGNhc2UgRDNERk1UX0QzMkZfTE9DS0FCTEU6IHJldHVybiAzMjsK
LSAgICAgIGNhc2UgRDNERk1UX0QyNEZTODogICAgICAgIHJldHVybiAyNDsKLSAgICAvL2Nhc2Ug
RDNERk1UX0QzMl9MT0NLQUJMRTogIHJldHVybiAzMjsgICAvLyBEM0Q5RXggb25seQotICAgIC8v
Y2FzZSBEM0RGTVRfUzhfTE9DS0FCTEU6ICAgcmV0dXJuIDA7ICAgIC8vIEQzRDlFeCBvbmx5Ci0g
ICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLUdM
c2l6ZWkgR2V0U2FtcGxlc0Zyb21NdWx0aXNhbXBsZVR5cGUoRDNETVVMVElTQU1QTEVfVFlQRSB0
eXBlKQotewotICAgIGlmICh0eXBlID09IEQzRE1VTFRJU0FNUExFX05PTk1BU0tBQkxFKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiB0eXBlOwotfQotCi1ib29s
IElzRm9ybWF0Q2hhbm5lbEVxdWl2YWxlbnQoRDNERk9STUFUIGQzZGZvcm1hdCwgR0xlbnVtIGZv
cm1hdCkKLXsKLSAgICBzd2l0Y2ggKGQzZGZvcm1hdCkKLSAgICB7Ci0gICAgICBjYXNlIEQzREZN
VF9MODoKLSAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfTFVNSU5BTkNFKTsKLSAgICAgIGNh
c2UgRDNERk1UX0E4TDg6Ci0gICAgICAgIHJldHVybiAoZm9ybWF0ID09IEdMX0xVTUlOQU5DRV9B
TFBIQSk7Ci0gICAgICBjYXNlIEQzREZNVF9EWFQxOgotICAgICAgICByZXR1cm4gKGZvcm1hdCA9
PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCB8fCBmb3JtYXQgPT0gR0xfQ09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7Ci0gICAgICBjYXNlIEQzREZNVF9EWFQzOgotICAgICAg
ICByZXR1cm4gKGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFKTsK
LSAgICAgIGNhc2UgRDNERk1UX0RYVDU6Ci0gICAgICAgIHJldHVybiAoZm9ybWF0ID09IEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUpOwotICAgICAgY2FzZSBEM0RGTVRfQThSOEc4
Qjg6Ci0gICAgICBjYXNlIEQzREZNVF9BMTZCMTZHMTZSMTZGOgotICAgICAgY2FzZSBEM0RGTVRf
QTMyQjMyRzMyUjMyRjoKLSAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfUkdCQSB8fCBmb3Jt
YXQgPT0gR0xfQkdSQV9FWFQpOwotICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6Ci0gICAgICAg
IHJldHVybiAoZm9ybWF0ID09IEdMX1JHQik7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBpZiAo
ZDNkZm9ybWF0ID09IEQzREZNVF9JTlRaICYmIGdsOjpJc0RlcHRoVGV4dHVyZShmb3JtYXQpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19
Ci0KLWJvb2wgQ29udmVydFJlYWRCdWZmZXJGb3JtYXQoRDNERk9STUFUIGQzZGZvcm1hdCwgR0xl
bnVtICpmb3JtYXQsIEdMZW51bSAqdHlwZSkKLXsKLSAgICBzd2l0Y2ggKGQzZGZvcm1hdCkKLSAg
ICB7Ci0gICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKLSAgICAgICAgKnR5cGUgPSBHTF9VTlNJ
R05FRF9CWVRFOwotICAgICAgICAqZm9ybWF0ID0gR0xfQkdSQV9FWFQ7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6Ci0gICAgICAgICp0eXBlID0gR0xfVU5TSUdO
RURfQllURTsKLSAgICAgICAgKmZvcm1hdCA9IEdMX1JHQjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEQzREZNVF9SNUc2QjU6Ci0gICAgICAgICp0eXBlID0gR0xfVU5TSUdORURfU0hPUlRf
NV82XzU7Ci0gICAgICAgICpmb3JtYXQgPSBHTF9SR0I7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjoKLSAgICAgICAgKnR5cGUgPSBHTF9IQUxGX0ZMT0FU
X09FUzsKLSAgICAgICAgKmZvcm1hdCA9IEdMX1JHQkE7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKLSAgICAgICAgKnR5cGUgPSBHTF9GTE9BVDsKLSAg
ICAgICAgKmZvcm1hdCA9IEdMX1JHQkE7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBEM0RG
TVRfQTRSNEc0QjQ6Ci0gICAgICAgICp0eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9S
RVZfRVhUOwotICAgICAgICAqZm9ybWF0ID0gR0xfQkdSQV9FWFQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6Ci0gICAgICAgICp0eXBlID0gR0xfVU5TSUdORURf
U0hPUlRfMV81XzVfNV9SRVZfRVhUOwotICAgICAgICAqZm9ybWF0ID0gR0xfQkdSQV9FWFQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgKnR5cGUgPSBHTF9OT05FOwot
ICAgICAgICAqZm9ybWF0ID0gR0xfTk9ORTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotR0xlbnVtIENvbnZlcnRCYWNrQnVmZmVyRm9ybWF0KEQz
REZPUk1BVCBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQpCi0gICAgewotICAgICAgY2Fz
ZSBEM0RGTVRfQTRSNEc0QjQ6IHJldHVybiBHTF9SR0JBNDsKLSAgICAgIGNhc2UgRDNERk1UX0E4
UjhHOEI4OiByZXR1cm4gR0xfUkdCQThfT0VTOwotICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6
IHJldHVybiBHTF9SR0I1X0ExOwotICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1OiAgIHJldHVybiBH
TF9SR0I1NjU7Ci0gICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODogcmV0dXJuIEdMX1JHQjhfT0VT
OwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gR0xfUkdCQTQ7Ci19Ci0KLUdMZW51bSBDb252ZXJ0RGVwdGhTdGVuY2lsRm9ybWF0KEQz
REZPUk1BVCBmb3JtYXQpCi17Ci0gICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfSU5UWikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKLSAgICB9Ci0gICAgc3dp
dGNoIChmb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBEM0RGTVRfRDE2OgotICAgICAgY2FzZSBE
M0RGTVRfRDI0WDg6Ci0gICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05FTlQxNjsKLSAgICAg
IGNhc2UgRDNERk1UX0QyNFM4OgotICAgICAgICByZXR1cm4gR0xfREVQVEgyNF9TVEVOQ0lMOF9P
RVM7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAg
IHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKLX0KLQotfQotCi1uYW1lc3BhY2UgZHgK
LXsKLQotYm9vbCBJc0NvbXByZXNzZWRGb3JtYXQoRDNERk9STUFUIHN1cmZhY2VGb3JtYXQpCi17
Ci0gICAgc3dpdGNoKHN1cmZhY2VGb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBEM0RGTVRfRFhU
MToKLSAgICAgIGNhc2UgRDNERk1UX0RYVDI6Ci0gICAgICBjYXNlIEQzREZNVF9EWFQzOgotICAg
ICAgY2FzZSBEM0RGTVRfRFhUNDoKLSAgICAgIGNhc2UgRDNERk1UX0RYVDU6Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KLQotc2l6ZV90IENvbXB1dGVSb3dTaXplKEQzREZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGlu
dCB3aWR0aCkKLXsKLSAgICBpZiAoZm9ybWF0ID09IEQzREZNVF9JTlRaKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIDQgKiB3aWR0aDsKLSAgICB9Ci0gICAgc3dpdGNoIChmb3JtYXQpCi0gICAgewot
ICAgICAgY2FzZSBEM0RGTVRfTDg6Ci0gICAgICAgICAgcmV0dXJuIDEgKiB3aWR0aDsKLSAgICAg
IGNhc2UgRDNERk1UX0E4TDg6Ci0gICAgICAgICAgcmV0dXJuIDIgKiB3aWR0aDsKLSAgICAgIGNh
c2UgRDNERk1UX1g4UjhHOEI4OgotICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6Ci0gICAgICAg
IHJldHVybiA0ICogd2lkdGg7Ci0gICAgICBjYXNlIEQzREZNVF9BMTZCMTZHMTZSMTZGOgotICAg
ICAgICByZXR1cm4gOCAqIHdpZHRoOwotICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoK
LSAgICAgICAgcmV0dXJuIDE2ICogd2lkdGg7Ci0gICAgICBjYXNlIEQzREZNVF9EWFQxOgotICAg
ICAgICByZXR1cm4gOCAqICgod2lkdGggKyAzKSAvIDQpOwotICAgICAgY2FzZSBEM0RGTVRfRFhU
MzoKLSAgICAgIGNhc2UgRDNERk1UX0RYVDU6Ci0gICAgICAgIHJldHVybiAxNiAqICgod2lkdGgg
KyAzKSAvIDQpOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi19Ci0KLXN0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCkK
LXsKLSAgICBjaGFyIHBhdGhbTUFYX1BBVEhdOwotICAgIERXT1JEIHBhdGhMZW4gPSBHZXRUZW1w
UGF0aEEoc2l6ZW9mKHBhdGgpIC8gc2l6ZW9mKHBhdGhbMF0pLCBwYXRoKTsKLSAgICBpZiAocGF0
aExlbiA9PSAwKQotICAgIHsKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKCk7Ci0gICAgfQotCi0gICAgVUlOVCB1bmlxdWUgPSBHZXRUZW1wRmlsZU5h
bWVBKHBhdGgsICJzaCIsIDAsIHBhdGgpOwotICAgIGlmICh1bmlxdWUgPT0gMCkKLSAgICB7Ci0g
ICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gcGF0aDsKLX0KLQotdm9pZCB3cml0ZUZpbGUoY29uc3QgY2hh
ciogcGF0aCwgY29uc3Qgdm9pZCogY29udGVudCwgc2l6ZV90IHNpemUpCi17Ci0gICAgRklMRSog
ZmlsZSA9IGZvcGVuKHBhdGgsICJ3Iik7Ci0gICAgaWYgKCFmaWxlKQotICAgIHsKLSAgICAgICAg
VU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZ3cml0ZShjb250
ZW50LCBzaXplb2YoY2hhciksIHNpemUsIGZpbGUpOwotICAgIGZjbG9zZShmaWxlKTsKLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlYjEzM2RlLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjEgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gdXRpbGl0aWVzLmg6
IENvbnZlcnNpb24gZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzLgotCi0jaWZu
ZGVmIExJQkdMRVNWMl9VVElMSVRJRVNfSAotI2RlZmluZSBMSUJHTEVTVjJfVVRJTElUSUVTX0gK
LQotI2RlZmluZSBHTF9BUElDQUxMCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0jaW5jbHVkZSA8
R0xFUzIvZ2wyZXh0Lmg+Ci0jaW5jbHVkZSA8ZDNkOS5oPgotCi0jaW5jbHVkZSA8c3RyaW5nPgot
Ci1jb25zdCBEM0RGT1JNQVQgRDNERk1UX0lOVFogPSAoKEQzREZPUk1BVCkoTUFLRUZPVVJDQygn
SScsJ04nLCdUJywnWicpKSk7Ci1jb25zdCBEM0RGT1JNQVQgRDNERk1UX05VTEwgPSAoKEQzREZP
Uk1BVCkoTUFLRUZPVVJDQygnTicsJ1UnLCdMJywnTCcpKSk7Ci0KLW5hbWVzcGFjZSBnbAotewot
Ci1zdHJ1Y3QgQ29sb3I7Ci0KLWludCBVbmlmb3JtRXh0ZXJuYWxDb21wb25lbnRDb3VudChHTGVu
dW0gdHlwZSk7Ci1pbnQgVW5pZm9ybUludGVybmFsQ29tcG9uZW50Q291bnQoR0xlbnVtIHR5cGUp
OwotR0xlbnVtIFVuaWZvcm1Db21wb25lbnRUeXBlKEdMZW51bSB0eXBlKTsKLXNpemVfdCBVbmlm
b3JtSW50ZXJuYWxTaXplKEdMZW51bSB0eXBlKTsKLXNpemVfdCBVbmlmb3JtRXh0ZXJuYWxTaXpl
KEdMZW51bSB0eXBlKTsKLWludCBWYXJpYWJsZVJvd0NvdW50KEdMZW51bSB0eXBlKTsKLWludCBW
YXJpYWJsZUNvbHVtbkNvdW50KEdMZW51bSB0eXBlKTsKLQotaW50IEFsbG9jYXRlRmlyc3RGcmVl
Qml0cyh1bnNpZ25lZCBpbnQgKmJpdHMsIHVuc2lnbmVkIGludCBhbGxvY2F0aW9uU2l6ZSwgdW5z
aWduZWQgaW50IGJpdHNTaXplKTsKLQotaW50IENvbXB1dGVQaXhlbFNpemUoR0xpbnQgaW50ZXJu
YWxmb3JtYXQpOwotR0xzaXplaSBDb21wdXRlUGl0Y2goR0xzaXplaSB3aWR0aCwgR0xpbnQgaW50
ZXJuYWxmb3JtYXQsIEdMaW50IGFsaWdubWVudCk7Ci1HTHNpemVpIENvbXB1dGVDb21wcmVzc2Vk
UGl0Y2goR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCk7Ci1HTHNpemVpIENvbXB1dGVDb21w
cmVzc2VkU2l6ZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCk7
Ci1ib29sIElzQ29tcHJlc3NlZChHTGVudW0gZm9ybWF0KTsKLWJvb2wgSXNEZXB0aFRleHR1cmUo
R0xlbnVtIGZvcm1hdCk7Ci1ib29sIElzU3RlbmNpbFRleHR1cmUoR0xlbnVtIGZvcm1hdCk7Ci1i
b29sIElzQ3ViZW1hcFRleHR1cmVUYXJnZXQoR0xlbnVtIHRhcmdldCk7Ci1ib29sIElzSW50ZXJu
YWxUZXh0dXJlVGFyZ2V0KEdMZW51bSB0YXJnZXQpOwotR0xpbnQgQ29udmVydFNpemVkSW50ZXJu
YWxGb3JtYXQoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpOwotR0xlbnVtIEV4dHJhY3RGb3Jt
YXQoR0xlbnVtIGludGVybmFsZm9ybWF0KTsKLUdMZW51bSBFeHRyYWN0VHlwZShHTGVudW0gaW50
ZXJuYWxmb3JtYXQpOwotCi1ib29sIElzQ29sb3JSZW5kZXJhYmxlKEdMZW51bSBpbnRlcm5hbGZv
cm1hdCk7Ci1ib29sIElzRGVwdGhSZW5kZXJhYmxlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCk7Ci1i
b29sIElzU3RlbmNpbFJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KTsKLQotYm9vbCBJ
c0Zsb2F0MzJGb3JtYXQoR0xpbnQgaW50ZXJuYWxmb3JtYXQpOwotYm9vbCBJc0Zsb2F0MTZGb3Jt
YXQoR0xpbnQgaW50ZXJuYWxmb3JtYXQpOwotfQotCi1uYW1lc3BhY2UgZXMyZHgKLXsKLQotRDNE
Q01QRlVOQyBDb252ZXJ0Q29tcGFyaXNvbihHTGVudW0gY29tcGFyaXNvbik7Ci1EM0RDT0xPUiBD
b252ZXJ0Q29sb3IoZ2w6OkNvbG9yIGNvbG9yKTsKLUQzREJMRU5EIENvbnZlcnRCbGVuZEZ1bmMo
R0xlbnVtIGJsZW5kKTsKLUQzREJMRU5ET1AgQ29udmVydEJsZW5kT3AoR0xlbnVtIGJsZW5kT3Ap
OwotRDNEU1RFTkNJTE9QIENvbnZlcnRTdGVuY2lsT3AoR0xlbnVtIHN0ZW5jaWxPcCk7Ci1EM0RU
RVhUVVJFQUREUkVTUyBDb252ZXJ0VGV4dHVyZVdyYXAoR0xlbnVtIHdyYXApOwotRDNEQ1VMTCBD
b252ZXJ0Q3VsbE1vZGUoR0xlbnVtIGN1bGxGYWNlLCBHTGVudW0gZnJvbnRGYWNlKTsKLUQzRENV
QkVNQVBfRkFDRVMgQ29udmVydEN1YmVGYWNlKEdMZW51bSBjdWJlRmFjZSk7Ci1EV09SRCBDb252
ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEp
OwotRDNEVEVYVFVSRUZJTFRFUlRZUEUgQ29udmVydE1hZ0ZpbHRlcihHTGVudW0gbWFnRmlsdGVy
LCBmbG9hdCBtYXhBbmlzb3Ryb3B5KTsKLXZvaWQgQ29udmVydE1pbkZpbHRlcihHTGVudW0gbWlu
RmlsdGVyLCBEM0RURVhUVVJFRklMVEVSVFlQRSAqZDNkTWluRmlsdGVyLCBEM0RURVhUVVJFRklM
VEVSVFlQRSAqZDNkTWlwRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KTsKLWJvb2wgQ29udmVy
dFByaW1pdGl2ZVR5cGUoR0xlbnVtIHByaW1pdGl2ZVR5cGUsIEdMc2l6ZWkgZWxlbWVudENvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RQUklNSVRJVkVUWVBFICpkM2RQcmltaXRp
dmVUeXBlLCBpbnQgKmQzZFByaW1pdGl2ZUNvdW50KTsKLUQzREZPUk1BVCBDb252ZXJ0UmVuZGVy
YnVmZmVyRm9ybWF0KEdMZW51bSBmb3JtYXQpOwotRDNETVVMVElTQU1QTEVfVFlQRSBHZXRNdWx0
aXNhbXBsZVR5cGVGcm9tU2FtcGxlcyhHTHNpemVpIHNhbXBsZXMpOwotCi19Ci0KLW5hbWVzcGFj
ZSBkeDJlcwotewotCi1HTHVpbnQgR2V0QWxwaGFTaXplKEQzREZPUk1BVCBjb2xvckZvcm1hdCk7
Ci1HTHVpbnQgR2V0UmVkU2l6ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOwotR0x1aW50IEdldEdy
ZWVuU2l6ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOwotR0x1aW50IEdldEJsdWVTaXplKEQzREZP
Uk1BVCBjb2xvckZvcm1hdCk7Ci1HTHVpbnQgR2V0RGVwdGhTaXplKEQzREZPUk1BVCBkZXB0aEZv
cm1hdCk7Ci1HTHVpbnQgR2V0U3RlbmNpbFNpemUoRDNERk9STUFUIHN0ZW5jaWxGb3JtYXQpOwot
Ci1HTHNpemVpIEdldFNhbXBsZXNGcm9tTXVsdGlzYW1wbGVUeXBlKEQzRE1VTFRJU0FNUExFX1RZ
UEUgdHlwZSk7Ci0KLWJvb2wgSXNGb3JtYXRDaGFubmVsRXF1aXZhbGVudChEM0RGT1JNQVQgZDNk
Zm9ybWF0LCBHTGVudW0gZm9ybWF0KTsKLWJvb2wgQ29udmVydFJlYWRCdWZmZXJGb3JtYXQoRDNE
Rk9STUFUIGQzZGZvcm1hdCwgR0xlbnVtICpmb3JtYXQsIEdMZW51bSAqdHlwZSk7Ci1HTGVudW0g
Q29udmVydEJhY2tCdWZmZXJGb3JtYXQoRDNERk9STUFUIGZvcm1hdCk7Ci1HTGVudW0gQ29udmVy
dERlcHRoU3RlbmNpbEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KTsKLQotfQotCi1uYW1lc3BhY2Ug
ZHgKLXsKLWJvb2wgSXNDb21wcmVzc2VkRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpOwotc2l6ZV90
IENvbXB1dGVSb3dTaXplKEQzREZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCk7Ci19
Ci0KLXN0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCk7Ci12b2lkIHdyaXRlRmlsZShjb25zdCBjaGFy
KiBwYXRoLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSk7Ci0KLWlubGluZSBib29sIGlz
RGV2aWNlTG9zdEVycm9yKEhSRVNVTFQgZXJyb3JDb2RlKQotewotICAgIHN3aXRjaCAoZXJyb3JD
b2RlKQotICAgIHsKLSAgICAgIGNhc2UgRDNERVJSX0RSSVZFUklOVEVSTkFMRVJST1I6Ci0gICAg
ICBjYXNlIEQzREVSUl9ERVZJQ0VMT1NUOgotICAgICAgY2FzZSBEM0RFUlJfREVWSUNFSFVORzoK
LSAgICAgIGNhc2UgRDNERVJSX0RFVklDRVJFTU9WRUQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotI2VuZGlm
ICAvLyBMSUJHTEVTVjJfVVRJTElUSUVTX0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvdmVydGV4Y29udmVyc2lvbi5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi92ZXJ0ZXhjb252ZXJzaW9uLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDViYjhiODkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi92ZXJ0ZXhjb252ZXJzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwyMDggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gdmVydGV4Y29udmVyc2lvbi5o
OiBBIGxpYnJhcnkgb2YgdmVydGV4IGNvbnZlcnNpb24gY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGJ1aWxkCi0vLyB0aGUgRm9ybWF0Q29udmVydGVyIG9iamVjdHMgdXNlZCBieSB0aGUgYnVm
ZmVyIGNvbnZlcnNpb24gc3lzdGVtLgotCi0jaWZuZGVmIExJQkdMRVNWMl9WRVJURVhDT05WRVJT
SU9OX0hfCi0jZGVmaW5lIExJQkdMRVNWMl9WRVJURVhDT05WRVJTSU9OX0hfCi0KLSNpbmNsdWRl
IDxjc3RkZGVmPgotI2luY2x1ZGUgPGxpbWl0cz4KLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9Db250
ZXh0LmgiIC8vIERlZmluZXMgSW5kZXgKLQotbmFtZXNwYWNlIGdsCi17Ci0KLS8vIENvbnZlcnNp
b24gdHlwZXM6Ci0vLyBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eTogdHJ1ZSBpZiB0aGlzIGlz
IGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgZmFsc2Ugb3RoZXJ3aXNlCi0vLyBzdGF0aWMgVSBjb252
ZXJ0KFQpOiBjb252ZXJ0IGEgc2luZ2xlIGVsZW1lbnQgZnJvbSB0aGUgaW5wdXQgdHlwZSB0byB0
aGUgb3V0cHV0IHR5cGUKLS8vIHR5cGVkZWYgLi4uIE91dHB1dFR5cGU6IHRoZSB0eXBlIHByb2R1
Y2VkIGJ5IHRoaXMgY29udmVyc2lvbgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBJZGVu
dGl0eQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5ID0gdHJ1ZTsKLQotICAgIHR5
cGVkZWYgVCBPdXRwdXRUeXBlOwotCi0gICAgc3RhdGljIFQgY29udmVydChUIHgpCi0gICAgewot
ICAgICAgICByZXR1cm4geDsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgRnJvbVQsIGNs
YXNzIFRvVD4KLXN0cnVjdCBDYXN0Ci17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHkg
PSBmYWxzZTsKLQotICAgIHR5cGVkZWYgVG9UIE91dHB1dFR5cGU7Ci0KLSAgICBzdGF0aWMgVG9U
IGNvbnZlcnQoRnJvbVQgeCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUb1Q+
KHgpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IENhc3Q8VCwgVD4K
LXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9IHRydWU7Ci0KLSAgICB0eXBlZGVm
IFQgT3V0cHV0VHlwZTsKLQotICAgIHN0YXRpYyBUIGNvbnZlcnQoVCB4KQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHgpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFz
cyBUPgotc3RydWN0IE5vcm1hbGl6ZQotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5
ID0gZmFsc2U7Ci0KLSAgICB0eXBlZGVmIGZsb2F0IE91dHB1dFR5cGU7Ci0KLSAgICBzdGF0aWMg
ZmxvYXQgY29udmVydChUIHgpCi0gICAgewotICAgICAgICB0eXBlZGVmIHN0ZDo6bnVtZXJpY19s
aW1pdHM8VD4gTkw7Ci0gICAgICAgIGZsb2F0IGYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oeCk7Ci0K
LSAgICAgICAgaWYgKE5MOjppc19zaWduZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIGNv
bnN0IGZsb2F0ID0+IFZDMjAwOCBjb21wdXRlcyBpdCBhdCBjb21waWxlIHRpbWUKLSAgICAgICAg
ICAgIC8vIHN0YXRpYyBjb25zdCBmbG9hdCA9PiBWQzIwMDggY29tcHV0ZXMgaXQgdGhlIGZpcnN0
IHRpbWUgd2UgZ2V0IGhlcmUsIHN0b3JlcyBpdCB0byBtZW1vcnkgd2l0aCBzdGF0aWMgZ3VhcmQg
YW5kIGFsbCB0aGF0LgotICAgICAgICAgICAgY29uc3QgZmxvYXQgZGl2aXNvciA9IDEuMGYvKDIq
c3RhdGljX2Nhc3Q8ZmxvYXQ+KE5MOjptYXgoKSkrMSk7Ci0gICAgICAgICAgICByZXR1cm4gKDIq
ZisxKSpkaXZpc29yOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGYvTkw6Om1heCgpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotdGVtcGxh
dGUgPGNsYXNzIEZyb21UeXBlLCBzdGQ6OnNpemVfdCBTY2FsZUJpdHM+Ci1zdHJ1Y3QgRml4ZWRU
b0Zsb2F0Ci17Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHkgPSBmYWxzZTsKLQotICAg
IHR5cGVkZWYgZmxvYXQgT3V0cHV0VHlwZTsKLQotICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0KEZy
b21UeXBlIHgpCi0gICAgewotICAgICAgICBjb25zdCBmbG9hdCBkaXZpc29yID0gMS4wZiAvIHN0
YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDxGcm9tVHlwZT4oMSkgPDwgU2NhbGVCaXRzKTsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih4KSAqIGRpdmlzb3I7Ci0gICAgfQot
fTsKLQotLy8gV2lkZW4gdHlwZXM6Ci0vLyBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGluaXRp
YWxXaWR0aDogbnVtYmVyIG9mIGNvbXBvbmVudHMgYmVmb3JlIGNvbnZlcnNpb24KLS8vIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBpbnQgZmluYWxXaWR0aDogbnVtYmVyIG9mIGNvbXBvbmVudHMgYWZ0
ZXIgY29udmVyc2lvbgotCi0vLyBGbG9hdCBpcyBzdXBwb3J0ZWQgYXQgYW55IHNpemUuCi10ZW1w
bGF0ZSA8c3RkOjpzaXplX3QgTj4KLXN0cnVjdCBOb1dpZGVuCi17Ci0gICAgc3RhdGljIGNvbnN0
IHN0ZDo6c2l6ZV90IGluaXRpYWxXaWR0aCA9IE47Ci0gICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6
ZV90IGZpbmFsV2lkdGggPSBOOwotfTsKLQotLy8gU0hPUlQsIG5vcm0tU0hPUlQsIG5vcm0tVU5T
SUdORURfU0hPUlQgYXJlIHN1cHBvcnRlZCBidXQgb25seSB3aXRoIDIgb3IgNCBjb21wb25lbnRz
Ci10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLXN0cnVjdCBXaWRlblRvRXZlbgotewotICAgIHN0
YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBpbml0aWFsV2lkdGggPSBOOwotICAgIHN0YXRpYyBjb25z
dCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRoID0gTisoTiYxKTsKLX07Ci0KLXRlbXBsYXRlIDxzdGQ6
OnNpemVfdCBOPgotc3RydWN0IFdpZGVuVG9Gb3VyCi17Ci0gICAgc3RhdGljIGNvbnN0IHN0ZDo6
c2l6ZV90IGluaXRpYWxXaWR0aCA9IE47Ci0gICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZp
bmFsV2lkdGggPSA0OwotfTsKLQotLy8gTW9zdCB0eXBlcyBoYXZlIDAgYW5kIDEgdGhhdCBhcmUg
anVzdCB0aGF0LgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgU2ltcGxlRGVmYXVsdFZhbHVl
cwotewotICAgIHN0YXRpYyBUIHplcm8oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUPigwKTsgfQot
ICAgIHN0YXRpYyBUIG9uZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KDEpOyB9Ci19OwotCi0v
LyBCdXQgbm9ybWFsaXNlZCB0eXBlcyBvbmx5IHN0b3JlIFswLDFdIG9yIFstMSwxXSBzbyAxLjAg
aXMgcmVwcmVzZW50ZWQgYnkgdGhlIG1heCB2YWx1ZS4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3Ry
dWN0IE5vcm1hbGl6ZWREZWZhdWx0VmFsdWVzCi17Ci0gICAgc3RhdGljIFQgemVybygpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PFQ+KDApOyB9Ci0gICAgc3RhdGljIFQgb25lKCkgeyByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCk7IH0KLX07Ci0KLS8vIENvbnZlcnRlcjoKLS8vIHN0
YXRpYyBjb25zdCBib29sIGlkZW50aXR5OiB0cnVlIGlmIHRoaXMgaXMgYW4gaWRlbnRpdHkgdHJh
bnNmb3JtICh3aXRoIG5vIHdpZGVuaW5nKQotLy8gc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZp
bmFsU2l6ZTogbnVtYmVyIG9mIGJ5dGVzIHBlciBvdXRwdXQgdmVydGV4Ci0vLyBzdGF0aWMgdm9p
ZCBjb252ZXJ0QXJyYXkoY29uc3Qgdm9pZCAqaW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpz
aXplX3Qgbiwgdm9pZCAqb3V0KTogY29udmVydCBhbiBhcnJheSBvZiB2ZXJ0aWNlcy4gSW5wdXQg
bWF5IGJlIHN0cmlkZWQsIGJ1dCBvdXRwdXQgd2lsbCBiZSB1bnN0cmlkZWQuCi0KLXRlbXBsYXRl
IDxjbGFzcyBJblQsIGNsYXNzIFdpZGVuUnVsZSwgY2xhc3MgQ29udmVydGVyLCBjbGFzcyBEZWZh
dWx0VmFsdWVSdWxlID0gU2ltcGxlRGVmYXVsdFZhbHVlczxJblQ+ID4KLXN0cnVjdCBWZXJ0ZXhE
YXRhQ29udmVydGVyCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb252ZXJ0ZXI6Ok91dHB1dFR5
cGUgT3V0cHV0VHlwZTsKLSAgICB0eXBlZGVmIEluVCBJbnB1dFR5cGU7Ci0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpZGVudGl0eSA9IChXaWRlblJ1bGU6OmluaXRpYWxXaWR0aCA9PSBXaWRlblJ1
bGU6OmZpbmFsV2lkdGgpICYmIENvbnZlcnRlcjo6aWRlbnRpdHk7Ci0gICAgc3RhdGljIGNvbnN0
IHN0ZDo6c2l6ZV90IGZpbmFsU2l6ZSA9IFdpZGVuUnVsZTo6ZmluYWxXaWR0aCAqIHNpemVvZihP
dXRwdXRUeXBlKTsKLQotICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRBcnJheShjb25zdCBJbnB1dFR5
cGUgKmluLCBzdGQ6OnNpemVfdCBzdHJpZGUsIHN0ZDo6c2l6ZV90IG4sIE91dHB1dFR5cGUgKm91
dCkKLSAgICB7Ci0gICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBuOyBpKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IElucHV0VHlwZSAqZWluID0gcG9pbnRlckFkZEJ5
dGVzKGluLCBpICogc3RyaWRlKTsKLQotICAgICAgICAgICAgY29weUNvbXBvbmVudChvdXQsIGVp
biwgMCwgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4oRGVmYXVsdFZhbHVlUnVsZTo6emVybygpKSk7
Ci0gICAgICAgICAgICBjb3B5Q29tcG9uZW50KG91dCwgZWluLCAxLCBzdGF0aWNfY2FzdDxPdXRw
dXRUeXBlPihEZWZhdWx0VmFsdWVSdWxlOjp6ZXJvKCkpKTsKLSAgICAgICAgICAgIGNvcHlDb21w
b25lbnQob3V0LCBlaW4sIDIsIHN0YXRpY19jYXN0PE91dHB1dFR5cGU+KERlZmF1bHRWYWx1ZVJ1
bGU6Onplcm8oKSkpOwotICAgICAgICAgICAgY29weUNvbXBvbmVudChvdXQsIGVpbiwgMywgc3Rh
dGljX2Nhc3Q8T3V0cHV0VHlwZT4oRGVmYXVsdFZhbHVlUnVsZTo6b25lKCkpKTsKLQotICAgICAg
ICAgICAgb3V0ICs9IFdpZGVuUnVsZTo6ZmluYWxXaWR0aDsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRBcnJheShjb25zdCB2b2lkICppbiwgc3RkOjpzaXplX3Qg
c3RyaWRlLCBzdGQ6OnNpemVfdCBuLCB2b2lkICpvdXQpCi0gICAgewotICAgICAgICByZXR1cm4g
Y29udmVydEFycmF5KHN0YXRpY19jYXN0PGNvbnN0IElucHV0VHlwZSo+KGluKSwgc3RyaWRlLCBu
LCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBlKj4ob3V0KSk7Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0g
ICAgLy8gQWR2YW5jZSB0aGUgZ2l2ZW4gcG9pbnRlciBieSBhIG51bWJlciBvZiBieXRlcyAobm90
IHBvaW50ZWQtdG8gZWxlbWVudHMpLgotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0YXRp
YyBUICpwb2ludGVyQWRkQnl0ZXMoVCAqYmFzZVB0ciwgc3RkOjpzaXplX3QgbnVtQnl0ZXMpCi0g
ICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUICo+KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihiYXNlUHRyKSArIG51bUJ5dGVzKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCBjb3B5Q29tcG9uZW50KE91dHB1dFR5cGUgKm91dCwgY29uc3QgSW5wdXRUeXBlICppbiwg
c3RkOjpzaXplX3QgZWxlbWVudGluZGV4LCBPdXRwdXRUeXBlIGRlZmF1bHR2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIGlmIChXaWRlblJ1bGU6OmZpbmFsV2lkdGggPiBlbGVtZW50aW5kZXgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChXaWRlblJ1bGU6OmluaXRpYWxXaWR0aCA+IGVsZW1lbnRp
bmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRbZWxlbWVudGluZGV4XSA9
IENvbnZlcnRlcjo6Y29udmVydChpbltlbGVtZW50aW5kZXhdKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRbZWxlbWVu
dGluZGV4XSA9IGRlZmF1bHR2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LX07Ci0KLX0KLQotI2VuZGlmICAgLy8gTElCR0xFU1YyX1ZFUlRFWENPTlZFUlNJT05fSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggZmE5MzlhYi4uNzU4ZWI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTI4NjksNyArMjg2OSw2IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgIGVu
ZGlmICgpCiAKICAgICBsaXN0KEFQUEVORCBBTkdMRVN1cHBvcnRfU09VUkNFUwotICAgICAgICAk
e1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUu
Y3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdElu
RnVuY3Rpb25FbXVsYXRvci5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3Jj
L2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdM
RS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCkBAIC0yODgwLDggKzI4NzksOCBAQCBpZiAoV1RG
X1VTRV8zRF9HUkFQSElDUykKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2Nv
bXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwCiAgICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhP
dXRwdXQuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9k
ZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAKLSAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAKICAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3Bw
CisgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1
cnNpb24uY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9G
b3JMb29wVW5yb2xsLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29t
cGlsZXIvSW5mb1NpbmsuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9j
b21waWxlci9Jbml0aWFsaXplLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQyMGMyZDYuLjgwOGQ1MWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wNy0yMCAgRGVhbiBKYWNrc29uICA8ZGlu
b0BhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCBBTkdMRSBpcyBsZWFraW5nIGxpa2UgYSBz
aWV2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUm9s
bG91dCAxNTI4NjMsIHIxNTI4MjEsIHIxNTI5MjkgYW5kIHIxNTI3NTUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKwogMjAxMy0wNy0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBQYWdpbmF0aW9uOiBEbyBub3QgcGFpbnQgdGhlIGJhc2VCYWNrZ3Jv
dW5kQ29sb3IgaWYgYXNrZWQgdG8gc2tpcFJvb3RCYWNrZ3JvdW5kLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>