<?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>199759</bug_id>
          
          <creation_ts>2019-07-12 14:28:52 -0700</creation_ts>
          <short_desc>Bytecode cache should use FileSystem</short_desc>
          <delta_ts>2019-07-17 16:03:33 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>199871</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christopher Reid">chris.reid</reporter>
          <assigned_to name="Christopher Reid">chris.reid</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1552526</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-12 14:28:52 -0700</bug_when>
    <thetext>It currently uses posix file and memory mapping calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552543</commentid>
    <comment_count>1</comment_count>
      <attachid>374039</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-12 14:53:57 -0700</bug_when>
    <thetext>Created attachment 374039
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552545</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-12 14:55:29 -0700</bug_when>
    <thetext>Attachment 374039 did not pass style-queue:


ERROR: Source/JavaScriptCore/jsc.cpp:1077:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/FileSystem.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/FileSystem.h:204:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/FileSystem.h:215:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552547</commentid>
    <comment_count>3</comment_count>
      <attachid>374040</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-12 14:57:18 -0700</bug_when>
    <thetext>Created attachment 374040
Patch

style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552567</commentid>
    <comment_count>4</comment_count>
      <attachid>374040</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-07-12 15:34:55 -0700</bug_when>
    <thetext>Comment on attachment 374040
Patch

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

The cache changes look great! I&apos;ll let someone else review the glib and windows code.

&gt; Source/JavaScriptCore/jsc.cpp:1077
&gt; +        m_cachedBytecode = CachedBytecode::create(WTFMove(mappedFileData), { });

just a nit, but I don&apos;t think you need the second parameter here.

&gt; Source/WTF/wtf/win/FileSystemWin.cpp:640
&gt;      CloseHandle(mapping);

isn&apos;t this already handled by the caller now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552581</commentid>
    <comment_count>5</comment_count>
      <attachid>374040</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-12 15:56:09 -0700</bug_when>
    <thetext>Comment on attachment 374040
Patch

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

&gt;&gt; Source/JavaScriptCore/jsc.cpp:1077
&gt;&gt; +        m_cachedBytecode = CachedBytecode::create(WTFMove(mappedFileData), { });
&gt; 
&gt; just a nit, but I don&apos;t think you need the second parameter here.

Yeah it doesn&apos;t seem needed I&apos;ll remove it.

&gt;&gt; Source/WTF/wtf/win/FileSystemWin.cpp:640
&gt;&gt;      CloseHandle(mapping);
&gt; 
&gt; isn&apos;t this already handled by the caller now?

The caller now handles the close for the file handle passed in but not the handle returned from CreateFileMapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552656</commentid>
    <comment_count>6</comment_count>
      <attachid>374040</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-12 19:18:06 -0700</bug_when>
    <thetext>Comment on attachment 374040
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:314
&gt; +#if USE(GLIB)
&gt; +    auto* inputStream = g_io_stream_get_input_stream(G_IO_STREAM(handle));
&gt; +    fd = g_file_descriptor_based_get_fd(G_FILE_DESCRIPTOR_BASED(inputStream));
&gt; +#else
&gt; +    fd = handle;
&gt; +#endif

If I wanted to be a Nazi reviewer I could tell you to rewrite all of MappedFileData using GMappedFile.

I&apos;m not that horrible, fortunately! GLib changes r=me.

&gt; Source/WTF/wtf/glib/FileSystemGlib.cpp:398
&gt; +    return g_seekable_truncate(G_SEEKABLE(g_io_stream_get_output_stream(G_IO_STREAM(handle))), offset, 0, 0);

nullptr, nullptr

I&apos;ll add a TODO for me to come back and convert the rest of this file to nullptr later.

Normally I like to check for errors and print a warning when the operation fails, but I guess we shouldn&apos;t do that here because the other platform implementations don&apos;t and that would surely lead to errors that only print for the GLib impl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552677</commentid>
    <comment_count>7</comment_count>
      <attachid>374040</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-12 21:54:40 -0700</bug_when>
    <thetext>Comment on attachment 374040
Patch

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

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:314
&gt;&gt; +#endif
&gt; 
&gt; If I wanted to be a Nazi reviewer I could tell you to rewrite all of MappedFileData using GMappedFile.
&gt; 
&gt; I&apos;m not that horrible, fortunately! GLib changes r=me.

I was originally planning on doing that but GMappedFile only does MAP_PRIVATE mappings https://github.com/GNOME/glib/blob/c8692fffe0723aee2bc6710590b5e70ef841b5cc/glib/gmappedfile.c#L160.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552678</commentid>
    <comment_count>8</comment_count>
      <attachid>374077</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-12 21:58:45 -0700</bug_when>
    <thetext>Created attachment 374077
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553009</commentid>
    <comment_count>9</comment_count>
      <attachid>374077</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2019-07-15 16:01:35 -0700</bug_when>
    <thetext>Comment on attachment 374077
Updated Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:294
&gt; +    if (!isHandleValid(fd)) {

Is this really necessary any longer since mapFileHandle returns false for and closeFile should be ignoring PlatformFileHandles that aren&apos;t valid?

&gt; Source/WTF/wtf/win/FileSystemWin.cpp:479
&gt; +    eofInfo.EndOfFile = largeOffset;

Might be nicer to just set eof.EndOfFile.QuadPart = offset rather than having the temporary.

&gt; Source/WTF/wtf/win/FileSystemWin.cpp:612
&gt; +    if (file == INVALID_HANDLE_VALUE) {

Like the main FileSystem.cpp, is there a reason to not drop this explicit check and use closeFile at the end?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553027</commentid>
    <comment_count>10</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-15 16:33:43 -0700</bug_when>
    <thetext>(In reply to Stephan Szabo from comment #9)
&gt; Comment on attachment 374077 [details]
&gt; Updated Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=374077&amp;action=review
&gt;
&gt; &gt; Source/WTF/wtf/win/FileSystemWin.cpp:479
&gt; &gt; +    eofInfo.EndOfFile = largeOffset;
&gt; 
&gt; Might be nicer to just set eof.EndOfFile.QuadPart = offset rather than
&gt; having the temporary.

Right that temporary isn&apos;t needed, I&apos;ll take it out.

&gt; &gt; Source/WTF/wtf/win/FileSystemWin.cpp:612
&gt; &gt; +    if (file == INVALID_HANDLE_VALUE) {
&gt; 
&gt; Like the main FileSystem.cpp, is there a reason to not drop this explicit
&gt; check and use closeFile at the end?

They seem safe to drop, I&apos;ll take those out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553029</commentid>
    <comment_count>11</comment_count>
      <attachid>374164</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-15 16:37:29 -0700</bug_when>
    <thetext>Created attachment 374164
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553389</commentid>
    <comment_count>12</comment_count>
      <attachid>374164</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-16 16:59:06 -0700</bug_when>
    <thetext>Comment on attachment 374164
Updated Patch

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

r=me with nits.

&gt; Source/JavaScriptCore/API/JSScript.mm:164
&gt; +    FileSystem::MappedFileData mappedFile(fd, FileSystem::MappedFileMode::Private, success);

We should change this interface to something like this instead of passing boolean `success`.

Optional&lt;MappedFileData&gt; mappedFile = FileSystem::MappedFileData::open(...);

But this is not directly related to this patch. So I&apos;m OK with this. Just commented for further refactoring.

&gt; Source/JavaScriptCore/runtime/CachePayload.cpp:82
&gt;  #if !OS(WINDOWS)
&gt;          munmap(m_data, m_size);
&gt;  #else
&gt; -        RELEASE_ASSERT_NOT_REACHED();
&gt; +        UnmapViewOfFile(m_data);
&gt;  #endif
&gt;      } else

Can we extract this part in WTF::FileSystem as `FileSystem::unmapViewOfFile(buffer, size)` (and using it in MappedFileData::~MappedFileData)?

&gt; Source/WTF/wtf/FileSystem.cpp:299
&gt; +bool MappedFileData::mapFileHandle(PlatformFileHandle handle, MappedFileMode mode)

Nice cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553416</commentid>
    <comment_count>13</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-16 19:29:21 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #12)
&gt; Comment on attachment 374164 [details]
&gt; Updated Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=374164&amp;action=review
&gt; 
&gt; r=me with nits.
&gt; 
&gt; &gt; Source/JavaScriptCore/API/JSScript.mm:164
&gt; &gt; +    FileSystem::MappedFileData mappedFile(fd, FileSystem::MappedFileMode::Private, success);
&gt; 
&gt; We should change this interface to something like this instead of passing
&gt; boolean `success`.
&gt; 
&gt; Optional&lt;MappedFileData&gt; mappedFile = FileSystem::MappedFileData::open(...);
&gt; 
&gt; But this is not directly related to this patch. So I&apos;m OK with this. Just
&gt; commented for further refactoring.
&gt; 

That&apos;s a good improvement. I&apos;ll look at doing that in a followup patch.

&gt; &gt; Source/JavaScriptCore/runtime/CachePayload.cpp:82
&gt; &gt;  #if !OS(WINDOWS)
&gt; &gt;          munmap(m_data, m_size);
&gt; &gt;  #else
&gt; &gt; -        RELEASE_ASSERT_NOT_REACHED();
&gt; &gt; +        UnmapViewOfFile(m_data);
&gt; &gt;  #endif
&gt; &gt;      } else
&gt; 
&gt; Can we extract this part in WTF::FileSystem as
&gt; `FileSystem::unmapViewOfFile(buffer, size)` (and using it in
&gt; MappedFileData::~MappedFileData)?

Sounds good I&apos;ll update that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553442</commentid>
    <comment_count>14</comment_count>
      <attachid>374278</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-16 21:15:48 -0700</bug_when>
    <thetext>Created attachment 374278
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553453</commentid>
    <comment_count>15</comment_count>
      <attachid>374278</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-16 22:21:42 -0700</bug_when>
    <thetext>Comment on attachment 374278
Patch for landing

Clearing flags on attachment: 374278

Committed r247505: &lt;https://trac.webkit.org/changeset/247505&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553454</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-16 22:21:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553455</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-16 22:22:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/53188300&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553558</commentid>
    <comment_count>18</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-07-17 10:11:32 -0700</bug_when>
    <thetext>(In reply to Radar WebKit Bug Importer from comment #17)
&gt; &lt;rdar://problem/53188300&gt;

stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.bytecode-cache is failing an assertion on the debug JSC bot after this change:

ASSERTION FAILED: codeBlock
./runtime/CodeCache.h(172) : std::enable_if_t&lt;std::is_base_of&lt;UnlinkedCodeBlock, UnlinkedCodeBlockType&gt;::value &amp;&amp; !std::is_same&lt;UnlinkedCodeBlockType, UnlinkedEvalCodeBlock&gt;::value, UnlinkedCodeBlockType *&gt; JSC::CodeCacheMap::fetchFromDisk(JSC::VM &amp;, const JSC::SourceCodeKey &amp;) [UnlinkedCodeBlockType = JSC::UnlinkedProgramCodeBlock]
1   0x108929ba9 WTFCrash
2   0x10892cb8b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x109e4f4fa std::__1::enable_if&lt;(std::is_base_of&lt;JSC::UnlinkedCodeBlock, JSC::UnlinkedProgramCodeBlock&gt;::value) &amp;&amp; (!(std::is_same&lt;JSC::UnlinkedProgramCodeBlock, JSC::UnlinkedEvalCodeBlock&gt;::value)), JSC::UnlinkedProgramCodeBlock*&gt;::type JSC::CodeCacheMap::fetchFromDisk&lt;JSC::UnlinkedProgramCodeBlock&gt;(JSC::VM&amp;, JSC::SourceCodeKey const&amp;)
4   0x109e4ef38 JSC::UnlinkedProgramCodeBlock* JSC::CodeCacheMap::findCacheAndUpdateAge&lt;JSC::UnlinkedProgramCodeBlock&gt;(JSC::VM&amp;, JSC::SourceCodeKey const&amp;)
5   0x109e2b4f6 JSC::UnlinkedProgramCodeBlock* JSC::CodeCache::getUnlinkedGlobalCodeBlock&lt;JSC::UnlinkedProgramCodeBlock, JSC::ProgramExecutable&gt;(JSC::VM&amp;, JSC::ProgramExecutable*, JSC::SourceCode const&amp;, JSC::JSParserStrictMode, JSC::JSParserScriptMode, WTF::OptionSet&lt;JSC::CodeGenerationMode&gt;, JSC::ParserError&amp;, JSC::EvalContextType)
6   0x109e2b365 JSC::CodeCache::getUnlinkedProgramCodeBlock(JSC::VM&amp;, JSC::ProgramExecutable*, JSC::SourceCode const&amp;, JSC::JSParserStrictMode, WTF::OptionSet&lt;JSC::CodeGenerationMode&gt;, JSC::ParserError&amp;)
7   0x10a05d556 JSC::ProgramExecutable::initializeGlobalProperties(JSC::VM&amp;, JSC::ExecState*, JSC::JSScope*)
8   0x109b0b7ac JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;, JSC::ExecState*, JSC::JSObject*)
9   0x109e47505 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
10  0x108849f17 runWithOptions(GlobalObject*, CommandLine&amp;, bool&amp;)
11  0x10881f75a jscmain(int, char**)::$_6::operator()(JSC::VM&amp;, GlobalObject*, bool&amp;) const
12  0x1087fe804 int runJSC&lt;jscmain(int, char**)::$_6&gt;(CommandLine const&amp;, bool, jscmain(int, char**)::$_6 const&amp;)
13  0x1087fcf31 jscmain(int, char**)
14  0x1087fcd9e main
15  0x7fff54f22015 start
16  0x8

https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20JSC%20%28Tests%29/builds/3251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553573</commentid>
    <comment_count>19</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-17 10:54:27 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #18)
&gt; (In reply to Radar WebKit Bug Importer from comment #17)
&gt; &gt; &lt;rdar://problem/53188300&gt;
&gt; 
&gt; stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-
&gt; and-creates-the-activation-outside-the-loop.js.bytecode-cache is failing an
&gt; assertion on the debug JSC bot after this change:
&gt; 
&gt; ASSERTION FAILED: codeBlock
&gt; ./runtime/CodeCache.h(172) :
&gt; std::enable_if_t&lt;std::is_base_of&lt;UnlinkedCodeBlock,
&gt; UnlinkedCodeBlockType&gt;::value &amp;&amp; !std::is_same&lt;UnlinkedCodeBlockType,
&gt; UnlinkedEvalCodeBlock&gt;::value, UnlinkedCodeBlockType *&gt;
&gt; JSC::CodeCacheMap::fetchFromDisk(JSC::VM &amp;, const JSC::SourceCodeKey &amp;)
&gt; [UnlinkedCodeBlockType = JSC::UnlinkedProgramCodeBlock]
&gt; 1   0x108929ba9 WTFCrash
&gt; 2   0x10892cb8b WTFCrashWithInfo(int, char const*, char const*, int)
&gt; 3   0x109e4f4fa std::__1::enable_if&lt;(std::is_base_of&lt;JSC::UnlinkedCodeBlock,
&gt; JSC::UnlinkedProgramCodeBlock&gt;::value) &amp;&amp;
&gt; (!(std::is_same&lt;JSC::UnlinkedProgramCodeBlock,
&gt; JSC::UnlinkedEvalCodeBlock&gt;::value)), JSC::UnlinkedProgramCodeBlock*&gt;::type
&gt; JSC::CodeCacheMap::fetchFromDisk&lt;JSC::UnlinkedProgramCodeBlock&gt;(JSC::VM&amp;,
&gt; JSC::SourceCodeKey const&amp;)
&gt; 4   0x109e4ef38 JSC::UnlinkedProgramCodeBlock*
&gt; JSC::CodeCacheMap::findCacheAndUpdateAge&lt;JSC::UnlinkedProgramCodeBlock&gt;(JSC::
&gt; VM&amp;, JSC::SourceCodeKey const&amp;)
&gt; 5   0x109e2b4f6 JSC::UnlinkedProgramCodeBlock*
&gt; JSC::CodeCache::getUnlinkedGlobalCodeBlock&lt;JSC::UnlinkedProgramCodeBlock,
&gt; JSC::ProgramExecutable&gt;(JSC::VM&amp;, JSC::ProgramExecutable*, JSC::SourceCode
&gt; const&amp;, JSC::JSParserStrictMode, JSC::JSParserScriptMode,
&gt; WTF::OptionSet&lt;JSC::CodeGenerationMode&gt;, JSC::ParserError&amp;,
&gt; JSC::EvalContextType)
&gt; 6   0x109e2b365 JSC::CodeCache::getUnlinkedProgramCodeBlock(JSC::VM&amp;,
&gt; JSC::ProgramExecutable*, JSC::SourceCode const&amp;, JSC::JSParserStrictMode,
&gt; WTF::OptionSet&lt;JSC::CodeGenerationMode&gt;, JSC::ParserError&amp;)
&gt; 7   0x10a05d556 JSC::ProgramExecutable::initializeGlobalProperties(JSC::VM&amp;,
&gt; JSC::ExecState*, JSC::JSScope*)
&gt; 8   0x109b0b7ac JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;,
&gt; JSC::ExecState*, JSC::JSObject*)
&gt; 9   0x109e47505 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;,
&gt; JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
&gt; 10  0x108849f17 runWithOptions(GlobalObject*, CommandLine&amp;, bool&amp;)
&gt; 11  0x10881f75a jscmain(int, char**)::$_6::operator()(JSC::VM&amp;,
&gt; GlobalObject*, bool&amp;) const
&gt; 12  0x1087fe804 int runJSC&lt;jscmain(int, char**)::$_6&gt;(CommandLine const&amp;,
&gt; bool, jscmain(int, char**)::$_6 const&amp;)
&gt; 13  0x1087fcf31 jscmain(int, char**)
&gt; 14  0x1087fcd9e main
&gt; 15  0x7fff54f22015 start
&gt; 16  0x8
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20JSC%20%28Tests%29/builds/3251

I&apos;m not sure what&apos;s causing that ASSERT to fail. I&apos;ll rollout this patch and investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553579</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-17 11:00:05 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 199871</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553688</commentid>
    <comment_count>21</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-17 14:28:32 -0700</bug_when>
    <thetext>It looks like the failure is because switching to encodeForFileName pushes the bytecode filename slightly over the max file size limit on the bot&apos;s environment.

The bytecode file name now ends up as: `5282585-%2FVolumes%2FData%2Fslave%2Fhighsierra-debug-tests-jsc%2Fbuild%2FWebKitBuild%2FDebug%2fjsc-stress-results%2F.tests%2Fstress%2Ftricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.bytecode-cache`
which is 266 characters.

I can re-land this with a call to FileSystem::lastComponentOfPathIgnoringTrailingSlash before encodeForFileName to avoid hitting that issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553705</commentid>
    <comment_count>22</comment_count>
      <attachid>374335</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-07-17 15:08:36 -0700</bug_when>
    <thetext>Created attachment 374335
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553732</commentid>
    <comment_count>23</comment_count>
      <attachid>374335</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-17 16:03:31 -0700</bug_when>
    <thetext>Comment on attachment 374335
Patch for landing

Clearing flags on attachment: 374335

Committed r247542: &lt;https://trac.webkit.org/changeset/247542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553733</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-17 16:03:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374039</attachid>
            <date>2019-07-12 14:53:57 -0700</date>
            <delta_ts>2019-07-12 14:57:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>199759.diff</filename>
            <type>text/plain</type>
            <size>33249</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IGNlNjJhMzgwOWZiLi4zY2Mw
NDEyMWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2Fj
aGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICBTdHJpbmcgc3lzdGVtUGF0aCA9IGZpbGVQYXRoVVJMLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVtUGF0aCwgc3VjY2Vzcyk7
CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVtUGF0aCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNj
ZXNzKQogICAgICAgICByZXR1cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJGaWxlIGF0IHBhdGggJUAgY291bGQgbm90IGJlIG1hcHBlZC4iLCBzdGF0aWNfY2FzdDxO
U1N0cmluZyAqPihzeXN0ZW1QYXRoKV0sIGVycm9yKTsKIApAQCAtMTUzLDIyICsxNTMsMTkgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2FjaGVQYXRoLCBO
U0Vycm9yKiogZXJyb3IpCiAgICAgaWYgKCFtX2NhY2hlUGF0aCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW50IGZkID0gb3BlbihbbV9jYWNoZVBhdGggcGF0aF0uVVRGOFN0cmluZywgT19SRE9O
TFkgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwotICAgIGlmIChmZCA9PSAtMSkKKyAg
ICBhdXRvIGZkID0gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKFttX2NhY2hlUGF0aCBwYXRo
XS5VVEY4U3RyaW5nLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQsIHtGaWxlU3lzdGVt
OjpGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSwgRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlOjpOb25i
bG9ja2luZ30pOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmZCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Ci0gICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZk
KTsKICAgICB9KTsKIAotICAgIHN0cnVjdCBzdGF0IHNiOwotICAgIGludCByZXMgPSBmc3RhdChm
ZCwgJnNiKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6
ZSk7Ci0gICAgaWYgKHJlcyB8fCAhc2l6ZSkKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShmZCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQs
IE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0KLSAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2Fj
aGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoYnVmZmVyLCBzaXplKTsK
KyAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hl
ZEJ5dGVjb2RlOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlKSk7CiAKICAgICBKU0M6OlZNJiB2
bSA9IFttX3ZpcnR1YWxNYWNoaW5lIHZtXTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29k
ZSA9IFtzZWxmIHNvdXJjZUNvZGVdOwpAQCAtMjkxLDcgKzI4OCw3IEBAIHN0YXRpYyBib29sIHZh
bGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgoTlNVUkwqIGNhY2hlUGF0aCwgTlNFcnJvcioqIGVycm9y
KQogCiAgICAgaWYgKGNhY2hlRXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIG1fY2FjaGVkQnl0
ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoKTsKLSAgICAgICAgZnRydW5jYXRl
KGZkLCAwKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZkLCAwKTsKICAgICAg
ICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJVbmFibGUgdG8gZ2VuZXJhdGUgYnl0ZWNvZGUgZm9yIHRo
aXMgSlNTY3JpcHQgYmVjYXVzZTogIiwgY2FjaGVFcnJvci5tZXNzYWdlKCkpOwogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU0
M2JiNmJmY2ExLi5iYTJkZGEzOTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjI0LDcgKzIyNCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGlmIChXVEZfT1NfTUFD
X09TX1gpCiAgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgYmFzaCAtYyAiZGF0ZSArJyVzJyIg
T1VUUFVUX1ZBUklBQkxFIEJVSUxEX1RJTUUgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BB
Q0UpCiBlbHNlICgpCi0gICAgc2V0KEJVSUxEX1RJTUUgMCkKKyAgICBzdHJpbmcoVElNRVNUQU1Q
IEJVSUxEX1RJTUUgIiVzIikKIGVuZGlmICgpCiAKIGZpbGUoV1JJVEUgJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9CeXRlY29kZUNhY2hlVmVyc2lvbi5oICIjZGVmaW5lIEpT
Q19CWVRFQ09ERV9DQUNIRV9WRVJTSU9OICR7QlVJTERfVElNRX1cbiIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzZTAwN2JiNzY4MC4uZWJhMzAxNTkxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNl
IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5OTc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBieXRlY29kZSBjYWNoZSB0byB1c2UgcGxhdGZvcm0gZ2VuZXJpYyBGaWxlU3lz
dGVtIGNhbGxzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZVBh
eWxvYWQuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVQYXlsb2FkLmg6CisgICAgICAgICog
cnVudGltZS9DYWNoZWRCeXRlY29kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1l
L0NvZGVDYWNoZS5jcHA6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5o
OgorCiAyMDE5LTA3LTA4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW1BvaW50ZXIgRXZlbnRzXSBFbmFibGUgb25seSBvbiB0aGUgbW9zdCByZWNlbnQgdmVy
c2lvbiBvZiB0aGUgc3VwcG9ydGVkIGlPUyBmYW1pbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXgg
ZDRmYTIyMmM3MjEuLjZmNzc2NjM4Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODUsNiAr
ODUsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMTAwMyw3ICsx
MDA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRDYWNoZWRCeXRlY29kZSgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewotI2lmIE9TKERBUldJTikKICAgICAgICAgaWYgKCFjYWNoZUVuYWJs
ZWQoKSB8fCAhbV9jYWNoZWRCeXRlY29kZSB8fCAhbV9jYWNoZWRCeXRlY29kZS0+aGFzVXBkYXRl
cygpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDEyLDMyICsxMDEyLDMzIEBAIHB1Ymxp
YzoKICAgICAgICAgfSk7CiAKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gY2FjaGVQYXRoKCk7
Ci0gICAgICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19DUkVBVCB8
IE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDY2Nik7Ci0gICAg
ICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRM
b2NrRmlsZShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSwge0ZpbGVT
eXN0ZW06OkZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlLCBGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU6
Ok5vbmJsb2NraW5nfSk7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
ZCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBjbG9zZUZEID0gbWFrZVNj
b3BlRXhpdChbJl0gewotICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgRmlsZVN5
c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZkKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc3Ry
dWN0IHN0YXQgc2I7Ci0gICAgICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNiKTsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3NpemUpOwotICAgICAgICBp
ZiAocmVzIHx8IHNpemUgIT0gbV9jYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7CisgICAgICAgIGxv
bmcgbG9uZyBmaWxlU2l6ZTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShm
ZCwgZmlsZVNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpemVfdCBjYWNo
ZUZpbGVTaXplOworICAgICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU2l6ZSwgY2Fj
aGVGaWxlU2l6ZSkgfHwgY2FjaGVGaWxlU2l6ZSAhPSBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBieXRlY29kZSBjYWNoZSBoYXMgYWxyZWFkeSBiZWVuIHVw
ZGF0ZWQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmdHJ1
bmNhdGUoZmQsIG1fY2FjaGVkQnl0ZWNvZGUtPnNpemVGb3JVcGRhdGUoKSkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZkLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplRm9y
VXBkYXRlKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fY2FjaGVkQnl0ZWNv
ZGUtPmNvbW1pdFVwZGF0ZXMoWyZdIChvZmZfdCBvZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplKSB7Ci0gICAgICAgICAgICBvZmZfdCByZXN1bHQgPSBsc2VlayhmZCwgb2Zmc2V0
LCBTRUVLX1NFVCk7CisgICAgICAgICAgICBsb25nIGxvbmcgcmVzdWx0ID0gRmlsZVN5c3RlbTo6
c2Vla0ZpbGUoZmQsIG9mZnNldCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmlu
Zyk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ICE9IC0xKTsKLSAg
ICAgICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHdyaXRl
KGZkLCBkYXRhLCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGJ5
dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNpemUpOwogICAgICAgICB9KTsKLSNlbmRpZgog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTEwNDYsMTQgKzEwNDcsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4obnVsbHB0cik7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9w
dGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKLSAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gc291cmNl
T3JpZ2luKCkuc3RyaW5nKCk7Ci0gICAgICAgIGZpbGVuYW1lLnJlcGxhY2UoJy8nLCAnXycpOwot
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhjYWNoZVBhdGgsICcvJywgc291cmNlKCkudG9TdHJp
bmcoKS5oYXNoKCksICctJywgZmlsZW5hbWUsICIuYnl0ZWNvZGUtY2FjaGUiKTsKKyAgICAgICAg
U3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoc291cmNlT3Jp
Z2luKCkuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgbWFrZVN0cmluZyhzb3VyY2UoKS50b1N0cmluZygpLmhh
c2goKSwgJy0nLCBmaWxlbmFtZSwgIi5ieXRlY29kZS1jYWNoZSIpKTsKICAgICB9CiAKICAgICB2
b2lkIGxvYWRCeXRlY29kZSgpIGNvbnN0CiAgICAgewotI2lmIE9TKERBUldJTikKICAgICAgICAg
aWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTA2MSwyNSAr
MTA2MCwyMSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4KCku
ZGF0YSgpLCBPX1JET05MWSB8IE9fU0hMT0NLIHwgT19OT05CTE9DSyk7Ci0gICAgICAgIGlmIChm
ZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShm
aWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkLCB7RmlsZVN5c3RlbTo6Rmls
ZUxvY2tNb2RlOjpTaGFyZWQsIEZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmd9
KTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZkKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7
Ci0gICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tB
bmRDbG9zZUZpbGUoZmQpOwogICAgICAgICB9KTsKIAotICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsK
LSAgICAgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwotICAgICAgICBzaXplX3Qgc2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6ZSk7Ci0gICAgICAgIGlmIChyZXMgfHwgIXNp
emUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgc3VjY2VzczsKKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmQsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKIAotICAgICAgICB2b2lkKiBidWZm
ZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsK
LSAgICAgICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAgICAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBDYWNoZWRC
eXRlY29kZTo6Y3JlYXRlKGJ1ZmZlciwgc2l6ZSk7Ci0jZW5kaWYKKworICAgICAgICBtX2NhY2hl
ZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSwge30pOwogICAgIH0KIAogICAgIFNoZWxsU291cmNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBVUkwmJiB1cmwsIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNv
dXJjZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZVBheWxvYWQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2Fk
LmNwcAppbmRleCA4YzNlODViMzljMC4uY2RkYjg0ODY3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcApAQCAtMzIsMTIgKzMyLDEwIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi0jaWYgIU9TKFdJTkRPV1MpCi1DYWNoZVBheWxvYWQgQ2FjaGVQ
YXlsb2FkOjptYWtlTWFwcGVkUGF5bG9hZCh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0NhY2hl
UGF5bG9hZCBDYWNoZVBheWxvYWQ6Om1ha2VNYXBwZWRQYXlsb2FkKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZGF0YSkKIHsKLSAgICByZXR1cm4gQ2FjaGVQYXlsb2FkKHRydWUsIGRhdGEs
IHNpemUpOworICAgIHJldHVybiBDYWNoZVBheWxvYWQodHJ1ZSwgZGF0YS5sZWFrSGFuZGxlKCks
IGRhdGEuc2l6ZSgpKTsKIH0KLSNlbmRpZgogCiBDYWNoZVBheWxvYWQgQ2FjaGVQYXlsb2FkOjpt
YWtlTWFsbG9jUGF5bG9hZChNYWxsb2NQdHI8dWludDhfdD4mJiBkYXRhLCBzaXplX3Qgc2l6ZSkK
IHsKQEAgLTc5LDcgKzc3LDcgQEAgdm9pZCBDYWNoZVBheWxvYWQ6OmZyZWVEYXRhKCkKICNpZiAh
T1MoV0lORE9XUykKICAgICAgICAgbXVubWFwKG1fZGF0YSwgbV9zaXplKTsKICNlbHNlCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFVubWFwVmlld09mRmls
ZShtX2RhdGEpOwogI2VuZGlmCiAgICAgfSBlbHNlCiAgICAgICAgIGZhc3RGcmVlKG1fZGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5oCmluZGV4IGUw
NDhmMzE5MzdjLi43ZWFiNTg5N2Y2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVQYXlsb2FkLmgKQEAgLTI1LDE1ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FjaGVQYXlsb2FkIHsKIHB1YmxpYzoKLSNpZiAh
T1MoV0lORE9XUykKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FjaGVQYXlsb2FkIG1h
a2VNYXBwZWRQYXlsb2FkKHZvaWQqLCBzaXplX3QpOwotI2VuZGlmCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIENhY2hlUGF5bG9hZCBtYWtlTWFwcGVkUGF5bG9hZChGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FjaGVQYXls
b2FkIG1ha2VNYWxsb2NQYXlsb2FkKE1hbGxvY1B0cjx1aW50OF90PiYmLCBzaXplX3QpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWNoZVBheWxvYWQgbWFrZUVtcHR5UGF5bG9hZCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRl
Y29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUuaApp
bmRleCAxNWNhYjNjMDQ3MC4uZDc1NjEzOTUzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUuaApAQCAtNDYsMTIgKzQ2LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkQnl0ZWNvZGUoQ2FjaGVQYXlsb2Fk
OjptYWtlRW1wdHlQYXlsb2FkKCkpKTsKICAgICB9CiAKLSNpZiAhT1MoV0lORE9XUykKLSAgICBz
dGF0aWMgUmVmPENhY2hlZEJ5dGVjb2RlPiBjcmVhdGUodm9pZCogZGF0YSwgc2l6ZV90IHNpemUs
IExlYWZFeGVjdXRhYmxlTWFwJiYgbGVhZkV4ZWN1dGFibGVzID0geyB9KQorICAgIHN0YXRpYyBS
ZWY8Q2FjaGVkQnl0ZWNvZGU+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEsIExlYWZFeGVjdXRhYmxlTWFwJiYgbGVhZkV4ZWN1dGFibGVzID0geyB9KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkQnl0ZWNvZGUoQ2FjaGVQYXlsb2FkOjpt
YWtlTWFwcGVkUGF5bG9hZChkYXRhLCBzaXplKSwgV1RGTW92ZShsZWFmRXhlY3V0YWJsZXMpKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZEJ5dGVjb2RlKENhY2hlUGF5bG9h
ZDo6bWFrZU1hcHBlZFBheWxvYWQoV1RGTW92ZShkYXRhKSksIFdURk1vdmUobGVhZkV4ZWN1dGFi
bGVzKSkpOwogICAgIH0KLSNlbmRpZgogCiAgICAgc3RhdGljIFJlZjxDYWNoZWRCeXRlY29kZT4g
Y3JlYXRlKE1hbGxvY1B0cjx1aW50OF90PiYmIGRhdGEsIHNpemVfdCBzaXplLCBMZWFmRXhlY3V0
YWJsZU1hcCYmIGxlYWZFeGVjdXRhYmxlcykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNmU4M2EyODQ0Y2UuLjZmZTU1NTA1NDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBA
IC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcHRyZGlmZl90IG1fb2Zmc2V0OwogICAg
IH07CiAKLSAgICBFbmNvZGVyKFZNJiB2bSwgaW50IGZkID0gLTEpCisgICAgRW5jb2RlcihWTSYg
dm0sIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCA9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAgLCBtX2Zk
KGZkKQogICAgICAgICAsIG1fYmFzZU9mZnNldCgwKQpAQCAtMTUyLDEyICsxNTIsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbV9jdXJyZW50UGFnZS0+
YWxpZ25FbmQoKTsKIAotICAgICAgICBpZiAobV9mZCAhPSAtMSkgewotI2lmICFPUyhXSU5ET1dT
KQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2ZkKSkgewogICAgICAg
ICAgICAgcmV0dXJuIHJlbGVhc2VNYXBwZWQoZXJyb3IpOwotI2Vsc2UKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKICAgICAgICAgfQogCiAgICAgICAg
IHNpemVfdCBzaXplID0gbV9iYXNlT2Zmc2V0ICsgbV9jdXJyZW50UGFnZS0+c2l6ZSgpOwpAQCAt
MTcyLDE3ICsxNjgsMTYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSNpZiAhT1MoV0lO
RE9XUykKICAgICBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IHJlbGVhc2VNYXBwZWQoQnl0ZWNvZGVD
YWNoZUVycm9yJiBlcnJvcikKICAgICB7CiAgICAgICAgIHNpemVfdCBzaXplID0gbV9iYXNlT2Zm
c2V0ICsgbV9jdXJyZW50UGFnZS0+c2l6ZSgpOwotICAgICAgICBpZiAoZnRydW5jYXRlKG1fZmQs
IHNpemUpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKG1fZmQsIHNp
emUpKSB7CiAgICAgICAgICAgICBlcnJvciA9IEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRF
cnJvcihlcnJubyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFnZSA6IG1fcGFnZXMpIHsKLSAgICAgICAgICAgIHNz
aXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXpl
KCkpOworICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkpLCBwYWdlLnNp
emUoKSk7CiAgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7CiAgICAgICAgICAg
ICAgICAgZXJyb3IgPSBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3IoZXJybm8pOwog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0LDE1ICsxODksMTUgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGJ1ZmZlciA9
IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgbV9mZCwgMCk7Ci0g
ICAgICAgIGlmIChidWZmZXIgPT0gTUFQX0ZBSUxFRCkgeworICAgICAgICBib29sIHN1Y2Nlc3M7
CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKG1fZmQs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKKyAgICAgICAg
aWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICAgICBlcnJvciA9IEJ5dGVjb2RlQ2FjaGVFcnJvcjo6
U3RhbmRhcmRFcnJvcihlcnJubyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBDYWNoZWRCeXRlY29kZTo6Y3JlYXRlKGJ1ZmZlciwgc2l6
ZSwgV1RGTW92ZShtX2xlYWZFeGVjdXRhYmxlcykpOworICAgICAgICByZXR1cm4gQ2FjaGVkQnl0
ZWNvZGU6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSwgV1RGTW92ZShtX2xlYWZFeGVj
dXRhYmxlcykpOwogICAgIH0KLSNlbmRpZgogCiAgICAgY2xhc3MgUGFnZSB7CiAgICAgcHVibGlj
OgpAQCAtMjcwLDcgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgVk0mIG1fdm07Ci0g
ICAgaW50IG1fZmQ7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmQ7CiAg
ICAgcHRyZGlmZl90IG1fYmFzZU9mZnNldDsKICAgICBQYWdlKiBtX2N1cnJlbnRQYWdlOwogICAg
IFZlY3RvcjxQYWdlPiBtX3BhZ2VzOwpAQCAtMjM3Niw3ICsyMzcxLDcgQEAgdm9pZCBlbmNvZGVD
b2RlQmxvY2soRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25z
dCBVbmxpbmtlZEMKICAgICBlbnRyeS0+ZW5jb2RlKGVuY29kZXIsIHsga2V5LCBqc0Nhc3Q8Y29u
c3QgVW5saW5rZWRDb2RlQmxvY2tUeXBlKj4oY29kZUJsb2NrKSB9KTsKIH0KIAotUmVmUHRyPENh
Y2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5
JiBrZXksIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBmZCwgQnl0ZWNv
ZGVDYWNoZUVycm9yJiBlcnJvcikKK1JlZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJs
b2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVj
b2RlQ2FjaGVFcnJvciYgZXJyb3IpCiB7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8g
PSBjb2RlQmxvY2stPmNsYXNzSW5mbyh2bSk7CiAKQEAgLTIzOTQsNyArMjM4OSw3IEBAIFJlZlB0
cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZUtleSYga2V5LCBjb25zdCBVCiBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9j
ayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKICAgICBCeXRlY29kZUNhY2hlRXJyb3IgZXJyb3I7Ci0gICAgcmV0
dXJuIGVuY29kZUNvZGVCbG9jayh2bSwga2V5LCBjb2RlQmxvY2ssIC0xLCBlcnJvcik7CisgICAg
cmV0dXJuIGVuY29kZUNvZGVCbG9jayh2bSwga2V5LCBjb2RlQmxvY2ssIEZpbGVTeXN0ZW06Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUsIGVycm9yKTsKIH0KIAogUmVmUHRyPENhY2hlZEJ5dGVj
b2RlPiBlbmNvZGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCmluZGV4IDFiNjJkOGQ0NmNi
Li4wNWNiMWIxNmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIH07CiAKIEpTX0VYUE9SVF9QUklW
QVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiwgY29uc3QgU291
cmNlQ29kZUtleSYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKik7Ci1KU19FWFBPUlRfUFJJVkFU
RSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNvdXJj
ZUNvZGVLZXkmLCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayosIGludCBmZCwgQnl0ZWNvZGVDYWNo
ZUVycm9yJik7CitKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29k
ZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNvdXJjZUNvZGVLZXkmLCBjb25zdCBVbmxpbmtlZENvZGVC
bG9jayosIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVy
cm9yJik7CiAKIFVubGlua2VkQ29kZUJsb2NrKiBkZWNvZGVDb2RlQmxvY2tJbXBsKFZNJiwgY29u
c3QgU291cmNlQ29kZUtleSYsIFJlZjxDYWNoZWRCeXRlY29kZT4pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA4NDI3NjhlMzAzNC4uMjZhMjM3
YmMzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApA
QCAtMjI1LDcgKzIyNSw3IEBAIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleUZvclNlcmlhbGl6
ZWRNb2R1bGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDCiAgICAgcmV0dXJuIHNv
dXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkQnl0ZWNvZGUodm0sIHNvdXJjZUNvZGUsIFNvdXJjZUNv
ZGVUeXBlOjpNb2R1bGVUeXBlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCB7IH0pOwogfQogCi1S
ZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IHNlcmlhbGl6ZUJ5dGVjb2RlKFZNJiB2bSwgVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VDb2Rl
VHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3IsIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSkKK1JlZlB0cjxD
YWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mIHZtLCBVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUNvZGVUeXBlIGNv
ZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVD
YWNoZUVycm9yJiBlcnJvciwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVy
YXRpb25Nb2RlKQogewogICAgIHJldHVybiBlbmNvZGVDb2RlQmxvY2sodm0sCiAgICAgICAgIHNv
dXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkQnl0ZWNvZGUodm0sIHNvdXJjZSwgY29kZVR5cGUsIHN0
cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSksIGNvZGVCbG9jaywgZmQs
IGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXgg
ZTIwNzFkMzlkZDguLjdjMzdhYjA3OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaApAQCAtMzE4LDcgKzMxOCw3IEBAIHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxp
bmtlZENvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJT
CiB9CiAKIHZvaWQgd3JpdGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VDb2RlS2V5JiwgY29u
c3QgU291cmNlQ29kZVZhbHVlJik7Ci1SZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IHNlcmlhbGl6ZUJ5
dGVjb2RlKFZNJiwgVW5saW5rZWRDb2RlQmxvY2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNl
Q29kZVR5cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBpbnQgZmQs
IEJ5dGVjb2RlQ2FjaGVFcnJvciYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+KTsKK1Jl
ZlB0cjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mLCBVbmxpbmtlZENvZGVC
bG9jayosIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VDb2RlVHlwZSwgSlNQYXJzZXJTdHJpY3RN
b2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBm
ZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOwog
U291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZFByb2dyYW0oVk0mLCBjb25z
dCBTb3VyY2VDb2RlJik7CiBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVk
TW9kdWxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGRiZmYxNzhkZTZiLi4wMGExNWM5NzlmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTky
LDcgKzkyLDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVy
cm9yKQorUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJl
YWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7CkBAIC0xMTIsNyArMTEyLDcgQEAgUmVm
UHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICByZXR1cm4gc2VyaWFsaXplQnl0ZWNvZGUodm0sIHVu
bGlua2VkQ29kZUJsb2NrLCBzb3VyY2UsIFNvdXJjZUNvZGVUeXBlOjpQcm9ncmFtVHlwZSwgc3Ry
aWN0TW9kZSwgc2NyaXB0TW9kZSwgZmQsIGVycm9yLCB7IH0pOwogfQogCi1SZWZQdHI8Q2FjaGVk
Qnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvcikKK1JlZlB0cjxDYWNo
ZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNh
Y2hlRXJyb3ImIGVycm9yKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9t
U3RyaW5nVGFibGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmgKaW5kZXggOGE5N2MxNzEyMjQuLmIxZThlMjliNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJD
YWxsRGF0YS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTQzLDggKzQ0LDggQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChWTSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBj
aGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSogZXhjZXB0
aW9uID0gMCk7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogCi1KU19FWFBPUlRfUFJJ
VkFURSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7Ci1KU19FWFBP
UlRfUFJJVkFURSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUo
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImKTsKK0pT
X0VYUE9SVF9QUklWQVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0
ZWNvZGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImKTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxD
YWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJv
ciYpOwogCiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYg
cmV0dXJuZWRFeGNlcHRpb24pOwogaW5saW5lIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpT
VmFsdWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggY2E0NjY2MjcxMzAuLjNkYjQ5NGRiYWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4K
KworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNlIEZpbGVTeXN0ZW0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTc1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0u
Y3BwOgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgIC0gQWRkIHN1cHBvcnQg
Zm9yIGNyZWF0aW5nIE1hcHBlZEZpbGVEYXRhIGZyb20gYSBwcmVleGlzdGluZyBmaWxlIGhhbmRs
ZQorICAgICAgICBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIGxvY2tlZCBmaWxlcy4KKyAgICAgICAg
QWxzbyBzdXBwb3J0IGNyZWF0aW5nIE1hcHBlZEZpbGVEYXRhIHdpdGggZWl0aGVyIHByaXZhdGUg
b3Igc2hhcmVkIG1hcHBpbmdzLgorCisgICAgICAgICogd3RmL1VVSUQuY3BwOgorICAgICAgICBB
dm9pZCBBU1NFUlQgd2l0aCByZXR1cm5pbmcgYSBMYXp5TmV2ZXJEZXN0cm95ZWQgb2JqZWN0IHRo
YXQgaGFzbid0IGJlZW4gY3JlYXRlZC4KKworICAgICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcDoKKyAgICAgICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICBB
ZGQgdHJ1bmNhdGVGaWxlIGltcGxlbWVudGF0aW9ucy4KKwogMjAxOS0wNy0wOCAgQ2hyaXN0b3Bo
ZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IE1hcHBl
ZEZpbGVEYXRhIGZvciBXaW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDk3NTQyOWJhZDA5
Li5lYTgyYTI2MDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTQwLDYgKzQwLDExIEBACiAj
aW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAorI2lmIFVTRShHTElCKQorI2luY2x1ZGUgPGdp
by9naW8uaD4KKyNpbmNsdWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQuaD4KKyNlbmRpZgor
CiBuYW1lc3BhY2UgV1RGIHsKIAogbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKQEAgLTI4Myw0
NiArMjg4LDU0IEBAIE1hcHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQogICAgIG11bm1h
cChtX2ZpbGVEYXRhLCBtX2ZpbGVTaXplKTsKIH0KIAotTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZp
bGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCitNYXBwZWRGaWxl
RGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgTWFwcGVkRmlsZU1v
ZGUgbW9kZSwgYm9vbCYgc3VjY2VzcykKIHsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBpbnQgZmQgPSAhZnNSZXAuaXNOdWxsKCkg
PyBvcGVuKGZzUmVwLmRhdGEoKSwgT19SRE9OTFkpIDogLTE7Ci0gICAgaWYgKGZkIDwgMCkgewor
ICAgIGF1dG8gZmQgPSBvcGVuRmlsZShmaWxlUGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQoZmQpKSB7CiAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGZkLCBt
b2RlKTsKKyAgICBjbG9zZUZpbGUoZmQpOworfQorCitib29sIE1hcHBlZEZpbGVEYXRhOjptYXBG
aWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE1hcHBlZEZpbGVNb2RlIG1vZGUp
Cit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGludCBmZDsKKyNpZiBVU0UoR0xJQikKKyAgICBhdXRvKiBpbnB1dFN0cmVhbSA9
IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7CisgICAg
ZmQgPSBnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFT
RUQoaW5wdXRTdHJlYW0pKTsKKyNlbHNlCisgICAgZmQgPSBoYW5kbGU7CisjZW5kaWYKKwogICAg
IHN0cnVjdCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChmc3RhdChmZCwgJmZpbGVTdGF0KSkgewot
ICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgdW5zaWduZWQgc2l6ZTsK
ICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU3RhdC5zdF9zaXplLCBzaXplKSkgewot
ICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFzaXplKSB7Ci0g
ICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdm9pZCogZGF0YSA9IG1tYXAo
MCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IE1BUF9TSEFSRUQsIGZkLCAwKTsKLSAgICBj
bG9zZShmZCk7CisgICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBf
RklMRSB8IChtb2RlID09IE1hcHBlZEZpbGVNb2RlOjpTaGFyZWQgPyBNQVBfU0hBUkVEIDogTUFQ
X1BSSVZBVEUpLCBmZCwgMCk7CiAKICAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7Ci0gICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgc3VjY2VzcyA9IHRydWU7CiAgICAgbV9maWxlRGF0YSA9IGRhdGE7
CiAgICAgbV9maWxlU2l6ZSA9IHNpemU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oCmluZGV4IDMyZmU3NmRmNDAwLi4xYThjZWFjZWExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaApAQCAtOTYsNiArOTYsMTEgQEAgZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgewogICAgIE5v
bmJsb2NraW5nID0gMSA8PCAyLAogfTsKIAorZW51bSBjbGFzcyBNYXBwZWRGaWxlTW9kZSB7Cisg
ICAgU2hhcmVkLAorICAgIFByaXZhdGUsCit9OworCiBlbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3MgeyBObywgWWVzIH07CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVF
eGlzdHMoY29uc3QgU3RyaW5nJik7CkBAIC0xMzgsNyArMTQzLDcgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSkKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIFdURl9FWFBPUlRf
UFJJVkFURSBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcg
b2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7Ci1ib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNh
dGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5z
IG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lz
ZS4KIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVyIG9mIGJ5
dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpAQCAtMTk1
LDcgKzIwMCw4IEBAIGNsYXNzIE1hcHBlZEZpbGVEYXRhIHsKIHB1YmxpYzoKICAgICBNYXBwZWRG
aWxlRGF0YSgpIHsgfQogICAgIE1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBib29sJiBzdWNjZXNzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgTWFwcGVkRmlsZU1vZGUsIGJvb2wmIHN1Y2Nlc3MpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBNYXBwZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBNYXBwZWRGaWxlTW9kZSwgYm9vbCYgc3VjY2Vzcyk7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOwogICAgIE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRvcj0o
TWFwcGVkRmlsZURhdGEmJik7CiAKQEAgLTIwMywxMSArMjA5LDIwIEBAIHB1YmxpYzoKICAgICBj
b25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGF0YTsgfQogICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9CiAKKyAgICB2b2lkKiBsZWFr
SGFuZGxlKCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2ZpbGVEYXRhLCBudWxscHRyKTsgfQor
CiBwcml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1hcEZpbGVIYW5kbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgTWFwcGVkRmlsZU1vZGUpOworCiAgICAgdm9pZCogbV9m
aWxlRGF0YSB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9OwogfTsK
IAoraW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtb2RlLCBib29sJiBzdWNjZXNzKQoreworICAgIHN1
Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGhhbmRsZSwgbW9kZSk7Cit9CisKIGlubGluZSBNYXBwZWRG
aWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJiBvdGhlcikKICAgICA6IG1f
ZmlsZURhdGEoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRyKSkKICAgICAs
IG1fZmlsZVNpemUoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKaW5k
ZXggODU5NjhiZjU5MTEuLjE1Y2EwMGE3MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9V
VUlELmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcApAQCAtNjYsOCArNjYsOCBAQCBT
dHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpCiAKIFN0cmluZyBib290U2Vzc2lvblVV
SURTdHJpbmcoKQogewotICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBib290
U2Vzc2lvblVVSUQ7CiAjaWYgT1MoREFSV0lOKQorICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBib290U2Vzc2lvblVVSUQ7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10gewogICAgICAgICBzaXplX3Qg
dXVpZExlbmd0aCA9IDM3OwpAQCAtNzYsOCArNzYsMTAgQEAgU3RyaW5nIGJvb3RTZXNzaW9uVVVJ
RFN0cmluZygpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGJvb3RTZXNzaW9uVVVJRC5j
b25zdHJ1Y3Qoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHV1aWQpLCB1dWlkTGVuZ3RoIC0gMSk7
CiAgICAgfSk7Ci0jZW5kaWYKICAgICByZXR1cm4gYm9vdFNlc3Npb25VVUlEOworI2Vsc2UKKyAg
ICByZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDkyNGZkN2RmYzU1Li45OGEwY2E2
MzVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTM5Myw2ICsz
OTMsMTEgQEAgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8KICAgICByZXR1cm4gZ19zZWVrYWJsZV90
ZWxsKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTSho
YW5kbGUpKSkpOwogfQogCitib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQoreworICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRl
KEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFu
ZGxlKSkpLCBvZmZzZXQsIDAsIDApOworfQorCiBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBnc2l6
ZSBieXRlc1dyaXR0ZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggNThj
OTM0NDgwOGUuLmExMzU2ODg0YTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmls
ZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CkBAIC00NzAsNiArNDcwLDE3IEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvCiAgICAgcmV0dXJu
IGxhcmdlT2Zmc2V0LlF1YWRQYXJ0OwogfQogCitib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQoreworICAgIExBUkdFX0lOVEVHRVIg
bGFyZ2VPZmZzZXQ7CisgICAgbGFyZ2VPZmZzZXQuUXVhZFBhcnQgPSBvZmZzZXQ7CisKKyAgICBG
SUxFX0VORF9PRl9GSUxFX0lORk8gZW9mSW5mbzsKKyAgICBlb2ZJbmZvLkVuZE9mRmlsZSA9IGxh
cmdlT2Zmc2V0OworCisgICAgcmV0dXJuIFNldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRs
ZSwgRmlsZUVuZE9mRmlsZUluZm8sICZlb2ZJbmZvLCBzaXplb2YoRklMRV9FTkRfT0ZfRklMRV9J
TkZPKSk7Cit9CisKIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghaXNIYW5kbGVWYWxpZCho
YW5kbGUpKQpAQCAtNTk1LDM2ICs2MDYsNDIgQEAgTWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxl
RGF0YSgpCiAgICAgVW5tYXBWaWV3T2ZGaWxlKG1fZmlsZURhdGEpOwogfQogCi1NYXBwZWRGaWxl
RGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vz
cykKK01hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBNYXBwZWRGaWxlTW9kZSBtb2RlLCBib29sJiBzdWNjZXNzKQogewotICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKICAgICBhdXRvIGZpbGUgPSBDcmVhdGVGaWxlKGZpbGVQYXRoLndpZGVDaGFyYWN0ZXJz
KCkuZGF0YSgpLCBHRU5FUklDX1JFQUQsIDAsIG51bGxwdHIsIE9QRU5fRVhJU1RJTkcsIEZJTEVf
QVRUUklCVVRFX05PUk1BTCwgbnVsbHB0cik7Ci0gICAgaWYgKGZpbGUgPT0gSU5WQUxJRF9IQU5E
TEVfVkFMVUUpCisgICAgaWYgKGZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3VjY2Vz
cyA9IG1hcEZpbGVIYW5kbGUoZmlsZSwgbW9kZSk7CisgICAgQ2xvc2VIYW5kbGUoZmlsZSk7Cit9
CisKK2Jvb2wgTWFwcGVkRmlsZURhdGE6Om1hcEZpbGVIYW5kbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgTWFwcGVkRmlsZU1vZGUpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRs
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGxvbmcgbG9uZyBzaXplOwotICAgIGlm
ICghZ2V0RmlsZVNpemUoZmlsZSwgc2l6ZSkgfHwgc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkgfHwgc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUobV9m
aWxlU2l6ZSk+OjptYXgoKSkgewotICAgICAgICBDbG9zZUhhbmRsZShmaWxlKTsKLSAgICAgICAg
cmV0dXJuOworICAgIGlmICghZ2V0RmlsZVNpemUoaGFuZGxlLCBzaXplKSB8fCBzaXplID4gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB8fCBzaXplID4gc3RkOjpudW1lcmljX2xp
bWl0czxkZWNsdHlwZShtX2ZpbGVTaXplKT46Om1heCgpKSB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAoIXNpemUpIHsKLSAgICAgICAgQ2xvc2VIYW5kbGUoZmlsZSk7
Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGF1dG8gbWFwcGluZyA9IENyZWF0ZUZpbGVNYXBwaW5nKGZp
bGUsIG51bGxwdHIsIFBBR0VfUkVBRE9OTFksIDAsIDAsIG51bGxwdHIpOwotICAgIENsb3NlSGFu
ZGxlKGZpbGUpOworICAgIGF1dG8gbWFwcGluZyA9IENyZWF0ZUZpbGVNYXBwaW5nKGhhbmRsZSwg
bnVsbHB0ciwgUEFHRV9SRUFET05MWSwgMCwgMCwgbnVsbHB0cik7CiAgICAgaWYgKCFtYXBwaW5n
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fZmlsZURh
dGEgPSBNYXBWaWV3T2ZGaWxlKG1hcHBpbmcsIEZJTEVfTUFQX1JFQUQsIDAsIDAsIHNpemUpOwog
ICAgIENsb3NlSGFuZGxlKG1hcHBpbmcpOwogICAgIGlmICghbV9maWxlRGF0YSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9maWxlU2l6ZSA9IHNpemU7Ci0g
ICAgc3VjY2VzcyA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEZpbGVTeXN0ZW1JbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUxZTI0OTljZmIuLjA1NGJkZWE4MjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDctMTIgIENocmlzdG9waGVyIFJlaWQg
IDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEJ5dGVjb2RlIGNhY2hlIHNob3VsZCB1
c2UgRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorCiAyMDE5LTA3LTA4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVuYWJsZSB0byBwYXN0
ZSBmcm9tIE5vdGVzIGludG8gRXhjZWwgMzY1IHNwcmVhZHNoZWV0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBiZTAxNDlhNGE2ZS4uNjFmZDdjNDg3N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRCdWZmZXImIG1hcHBlZEJ1ZmZl
cikKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgYm9vbCBtYXBwaW5nU3VjY2Vz
czsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGluZ1N1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBl
ZEZpbGVEYXRhKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBt
YXBwaW5nU3VjY2Vzcyk7CiAKICAgICBpZiAoIW1hcHBpbmdTdWNjZXNzKQogICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU4M2U0NTgzNzM4
Li4wNGI0ZWQxMzRlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNl
IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5OTc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisKIDIwMTktMDct
MDggIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3Qt
d2Via2l0cHk6IEV4cGxpY2l0bHkgdXNlIFB5dGhvbiAyLjcgbGxkYiBsaWJyYXJ5CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDgzMDU1MjU1NmRl
Li5kMGU1MTUxYTk5OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgTWFwcGluZ01pc3NpbmdGaWxlKQogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19m
aWxlIiksIHN1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZp
bGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7CiAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOwogICAg
IEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9CkBAIC0xMDIsNyArMTAyLDcgQEAgVEVT
VF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlzc2luZ0ZpbGUpCiBURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBz
dWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0
ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vz
cyk7CiAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoISFtYXBwZWRG
aWxlRGF0YSk7CiAgICAgRVhQRUNUX1RSVUUobWFwcGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1h
cHBpbmdFeGlzdGluZ0VtcHR5RmlsZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgoKSwg
c3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEo
dGVtcEVtcHR5RmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwg
c3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoIW1h
cHBlZEZpbGVEYXRhKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374040</attachid>
            <date>2019-07-12 14:57:18 -0700</date>
            <delta_ts>2019-07-12 21:58:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>199759.diff</filename>
            <type>text/plain</type>
            <size>33236</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IGNlNjJhMzgwOWZiLi4zY2Mw
NDEyMWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2Fj
aGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICBTdHJpbmcgc3lzdGVtUGF0aCA9IGZpbGVQYXRoVVJMLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVtUGF0aCwgc3VjY2Vzcyk7
CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVtUGF0aCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNj
ZXNzKQogICAgICAgICByZXR1cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJGaWxlIGF0IHBhdGggJUAgY291bGQgbm90IGJlIG1hcHBlZC4iLCBzdGF0aWNfY2FzdDxO
U1N0cmluZyAqPihzeXN0ZW1QYXRoKV0sIGVycm9yKTsKIApAQCAtMTUzLDIyICsxNTMsMTkgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2FjaGVQYXRoLCBO
U0Vycm9yKiogZXJyb3IpCiAgICAgaWYgKCFtX2NhY2hlUGF0aCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW50IGZkID0gb3BlbihbbV9jYWNoZVBhdGggcGF0aF0uVVRGOFN0cmluZywgT19SRE9O
TFkgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwotICAgIGlmIChmZCA9PSAtMSkKKyAg
ICBhdXRvIGZkID0gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKFttX2NhY2hlUGF0aCBwYXRo
XS5VVEY4U3RyaW5nLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQsIHtGaWxlU3lzdGVt
OjpGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSwgRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlOjpOb25i
bG9ja2luZ30pOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmZCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Ci0gICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZk
KTsKICAgICB9KTsKIAotICAgIHN0cnVjdCBzdGF0IHNiOwotICAgIGludCByZXMgPSBmc3RhdChm
ZCwgJnNiKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6
ZSk7Ci0gICAgaWYgKHJlcyB8fCAhc2l6ZSkKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShmZCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQs
IE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0KLSAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2Fj
aGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoYnVmZmVyLCBzaXplKTsK
KyAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hl
ZEJ5dGVjb2RlOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlKSk7CiAKICAgICBKU0M6OlZNJiB2
bSA9IFttX3ZpcnR1YWxNYWNoaW5lIHZtXTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29k
ZSA9IFtzZWxmIHNvdXJjZUNvZGVdOwpAQCAtMjkxLDcgKzI4OCw3IEBAIHN0YXRpYyBib29sIHZh
bGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgoTlNVUkwqIGNhY2hlUGF0aCwgTlNFcnJvcioqIGVycm9y
KQogCiAgICAgaWYgKGNhY2hlRXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIG1fY2FjaGVkQnl0
ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoKTsKLSAgICAgICAgZnRydW5jYXRl
KGZkLCAwKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZkLCAwKTsKICAgICAg
ICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJVbmFibGUgdG8gZ2VuZXJhdGUgYnl0ZWNvZGUgZm9yIHRo
aXMgSlNTY3JpcHQgYmVjYXVzZTogIiwgY2FjaGVFcnJvci5tZXNzYWdlKCkpOwogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU0
M2JiNmJmY2ExLi5iYTJkZGEzOTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjI0LDcgKzIyNCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGlmIChXVEZfT1NfTUFD
X09TX1gpCiAgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgYmFzaCAtYyAiZGF0ZSArJyVzJyIg
T1VUUFVUX1ZBUklBQkxFIEJVSUxEX1RJTUUgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BB
Q0UpCiBlbHNlICgpCi0gICAgc2V0KEJVSUxEX1RJTUUgMCkKKyAgICBzdHJpbmcoVElNRVNUQU1Q
IEJVSUxEX1RJTUUgIiVzIikKIGVuZGlmICgpCiAKIGZpbGUoV1JJVEUgJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9CeXRlY29kZUNhY2hlVmVyc2lvbi5oICIjZGVmaW5lIEpT
Q19CWVRFQ09ERV9DQUNIRV9WRVJTSU9OICR7QlVJTERfVElNRX1cbiIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzZTAwN2JiNzY4MC4uZWJhMzAxNTkxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNl
IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5OTc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBieXRlY29kZSBjYWNoZSB0byB1c2UgcGxhdGZvcm0gZ2VuZXJpYyBGaWxlU3lz
dGVtIGNhbGxzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZVBh
eWxvYWQuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVQYXlsb2FkLmg6CisgICAgICAgICog
cnVudGltZS9DYWNoZWRCeXRlY29kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1l
L0NvZGVDYWNoZS5jcHA6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5o
OgorCiAyMDE5LTA3LTA4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW1BvaW50ZXIgRXZlbnRzXSBFbmFibGUgb25seSBvbiB0aGUgbW9zdCByZWNlbnQgdmVy
c2lvbiBvZiB0aGUgc3VwcG9ydGVkIGlPUyBmYW1pbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXgg
ZDRmYTIyMmM3MjEuLmYxMGViOGI5MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODUsNiAr
ODUsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMTAwMyw3ICsx
MDA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRDYWNoZWRCeXRlY29kZSgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewotI2lmIE9TKERBUldJTikKICAgICAgICAgaWYgKCFjYWNoZUVuYWJs
ZWQoKSB8fCAhbV9jYWNoZWRCeXRlY29kZSB8fCAhbV9jYWNoZWRCeXRlY29kZS0+aGFzVXBkYXRl
cygpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDEyLDMyICsxMDEyLDMzIEBAIHB1Ymxp
YzoKICAgICAgICAgfSk7CiAKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gY2FjaGVQYXRoKCk7
Ci0gICAgICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19DUkVBVCB8
IE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDY2Nik7Ci0gICAg
ICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRM
b2NrRmlsZShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSwge0ZpbGVT
eXN0ZW06OkZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlLCBGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU6
Ok5vbmJsb2NraW5nfSk7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
ZCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBjbG9zZUZEID0gbWFrZVNj
b3BlRXhpdChbJl0gewotICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgRmlsZVN5
c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZkKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc3Ry
dWN0IHN0YXQgc2I7Ci0gICAgICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNiKTsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3NpemUpOwotICAgICAgICBp
ZiAocmVzIHx8IHNpemUgIT0gbV9jYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7CisgICAgICAgIGxv
bmcgbG9uZyBmaWxlU2l6ZTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShm
ZCwgZmlsZVNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpemVfdCBjYWNo
ZUZpbGVTaXplOworICAgICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU2l6ZSwgY2Fj
aGVGaWxlU2l6ZSkgfHwgY2FjaGVGaWxlU2l6ZSAhPSBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBieXRlY29kZSBjYWNoZSBoYXMgYWxyZWFkeSBiZWVuIHVw
ZGF0ZWQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmdHJ1
bmNhdGUoZmQsIG1fY2FjaGVkQnl0ZWNvZGUtPnNpemVGb3JVcGRhdGUoKSkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZkLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplRm9y
VXBkYXRlKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fY2FjaGVkQnl0ZWNv
ZGUtPmNvbW1pdFVwZGF0ZXMoWyZdIChvZmZfdCBvZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplKSB7Ci0gICAgICAgICAgICBvZmZfdCByZXN1bHQgPSBsc2VlayhmZCwgb2Zmc2V0
LCBTRUVLX1NFVCk7CisgICAgICAgICAgICBsb25nIGxvbmcgcmVzdWx0ID0gRmlsZVN5c3RlbTo6
c2Vla0ZpbGUoZmQsIG9mZnNldCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmlu
Zyk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ICE9IC0xKTsKLSAg
ICAgICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHdyaXRl
KGZkLCBkYXRhLCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGJ5
dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNpemUpOwogICAgICAgICB9KTsKLSNlbmRpZgog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTEwNDYsMTQgKzEwNDcsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4obnVsbHB0cik7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9w
dGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKLSAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gc291cmNl
T3JpZ2luKCkuc3RyaW5nKCk7Ci0gICAgICAgIGZpbGVuYW1lLnJlcGxhY2UoJy8nLCAnXycpOwot
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhjYWNoZVBhdGgsICcvJywgc291cmNlKCkudG9TdHJp
bmcoKS5oYXNoKCksICctJywgZmlsZW5hbWUsICIuYnl0ZWNvZGUtY2FjaGUiKTsKKyAgICAgICAg
U3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoc291cmNlT3Jp
Z2luKCkuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgbWFrZVN0cmluZyhzb3VyY2UoKS50b1N0cmluZygpLmhh
c2goKSwgJy0nLCBmaWxlbmFtZSwgIi5ieXRlY29kZS1jYWNoZSIpKTsKICAgICB9CiAKICAgICB2
b2lkIGxvYWRCeXRlY29kZSgpIGNvbnN0CiAgICAgewotI2lmIE9TKERBUldJTikKICAgICAgICAg
aWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTA2MSwyNSAr
MTA2MCwyMSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4KCku
ZGF0YSgpLCBPX1JET05MWSB8IE9fU0hMT0NLIHwgT19OT05CTE9DSyk7Ci0gICAgICAgIGlmIChm
ZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShm
aWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkLCB7RmlsZVN5c3RlbTo6Rmls
ZUxvY2tNb2RlOjpTaGFyZWQsIEZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmd9
KTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZkKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7
Ci0gICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tB
bmRDbG9zZUZpbGUoZmQpOwogICAgICAgICB9KTsKIAotICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsK
LSAgICAgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwotICAgICAgICBzaXplX3Qgc2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6ZSk7Ci0gICAgICAgIGlmIChyZXMgfHwgIXNp
emUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgc3VjY2VzczsKKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmQsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKIAotICAgICAgICB2b2lkKiBidWZm
ZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsK
LSAgICAgICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAgICAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBDYWNoZWRC
eXRlY29kZTo6Y3JlYXRlKGJ1ZmZlciwgc2l6ZSk7Ci0jZW5kaWYKKworICAgICAgICBtX2NhY2hl
ZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSwgeyB9KTsKICAgICB9CiAKICAgICBTaGVsbFNvdXJjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYg
c291cmNlLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgVVJMJiYgdXJsLCBjb25z
dCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBz
b3VyY2VUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVQYXlsb2FkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9h
ZC5jcHAKaW5kZXggOGMzZTg1YjM5YzAuLmNkZGI4NDg2NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5jcHAKQEAgLTMyLDEyICszMiwxMCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICFPUyhXSU5ET1dTKQotQ2FjaGVQYXlsb2FkIENhY2hl
UGF5bG9hZDo6bWFrZU1hcHBlZFBheWxvYWQodm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCitDYWNo
ZVBheWxvYWQgQ2FjaGVQYXlsb2FkOjptYWtlTWFwcGVkUGF5bG9hZChGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIENhY2hlUGF5bG9hZCh0cnVlLCBkYXRh
LCBzaXplKTsKKyAgICByZXR1cm4gQ2FjaGVQYXlsb2FkKHRydWUsIGRhdGEubGVha0hhbmRsZSgp
LCBkYXRhLnNpemUoKSk7CiB9Ci0jZW5kaWYKIAogQ2FjaGVQYXlsb2FkIENhY2hlUGF5bG9hZDo6
bWFrZU1hbGxvY1BheWxvYWQoTWFsbG9jUHRyPHVpbnQ4X3Q+JiYgZGF0YSwgc2l6ZV90IHNpemUp
CiB7CkBAIC03OSw3ICs3Nyw3IEBAIHZvaWQgQ2FjaGVQYXlsb2FkOjpmcmVlRGF0YSgpCiAjaWYg
IU9TKFdJTkRPV1MpCiAgICAgICAgIG11bm1hcChtX2RhdGEsIG1fc2l6ZSk7CiAjZWxzZQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBVbm1hcFZpZXdPZkZp
bGUobV9kYXRhKTsKICNlbmRpZgogICAgIH0gZWxzZQogICAgICAgICBmYXN0RnJlZShtX2RhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2Fk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuaAppbmRleCBl
MDQ4ZjMxOTM3Yy4uN2VhYjU4OTdmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlUGF5bG9hZC5oCkBAIC0yNSwxNSArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWxsb2NQdHIuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhY2hlUGF5bG9hZCB7CiBwdWJsaWM6Ci0jaWYg
IU9TKFdJTkRPV1MpCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENhY2hlUGF5bG9hZCBt
YWtlTWFwcGVkUGF5bG9hZCh2b2lkKiwgc2l6ZV90KTsKLSNlbmRpZgorICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBDYWNoZVBheWxvYWQgbWFrZU1hcHBlZFBheWxvYWQoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENhY2hlUGF5
bG9hZCBtYWtlTWFsbG9jUGF5bG9hZChNYWxsb2NQdHI8dWludDhfdD4mJiwgc2l6ZV90KTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FjaGVQYXlsb2FkIG1ha2VFbXB0eVBheWxvYWQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkQnl0
ZWNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmgK
aW5kZXggMTVjYWIzYzA0NzAuLmQ3NTYxMzk1M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRlY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmgKQEAgLTQ2LDEyICs0NiwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZEJ5dGVjb2RlKENhY2hlUGF5bG9h
ZDo6bWFrZUVtcHR5UGF5bG9hZCgpKSk7CiAgICAgfQogCi0jaWYgIU9TKFdJTkRPV1MpCi0gICAg
c3RhdGljIFJlZjxDYWNoZWRCeXRlY29kZT4gY3JlYXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXpl
LCBMZWFmRXhlY3V0YWJsZU1hcCYmIGxlYWZFeGVjdXRhYmxlcyA9IHsgfSkKKyAgICBzdGF0aWMg
UmVmPENhY2hlZEJ5dGVjb2RlPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBk
YXRhLCBMZWFmRXhlY3V0YWJsZU1hcCYmIGxlYWZFeGVjdXRhYmxlcyA9IHsgfSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZEJ5dGVjb2RlKENhY2hlUGF5bG9hZDo6
bWFrZU1hcHBlZFBheWxvYWQoZGF0YSwgc2l6ZSksIFdURk1vdmUobGVhZkV4ZWN1dGFibGVzKSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxv
YWQ6Om1ha2VNYXBwZWRQYXlsb2FkKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKGxlYWZFeGVjdXRh
YmxlcykpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBSZWY8Q2FjaGVkQnl0ZWNvZGU+
IGNyZWF0ZShNYWxsb2NQdHI8dWludDhfdD4mJiBkYXRhLCBzaXplX3Qgc2l6ZSwgTGVhZkV4ZWN1
dGFibGVNYXAmJiBsZWFmRXhlY3V0YWJsZXMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDZlODNhMjg0NGNlLi42ZmU1NTUwNTQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApA
QCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHB0cmRpZmZfdCBtX29mZnNldDsKICAg
ICB9OwogCi0gICAgRW5jb2RlcihWTSYgdm0sIGludCBmZCA9IC0xKQorICAgIEVuY29kZXIoVk0m
IHZtLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQgPSBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICA6IG1fdm0odm0pCiAgICAgICAgICwgbV9m
ZChmZCkKICAgICAgICAgLCBtX2Jhc2VPZmZzZXQoMCkKQEAgLTE1MiwxMiArMTUyLDggQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIG1fY3VycmVudFBhZ2Ut
PmFsaWduRW5kKCk7CiAKLSAgICAgICAgaWYgKG1fZmQgIT0gLTEpIHsKLSNpZiAhT1MoV0lORE9X
UykKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9mZCkpIHsKICAgICAg
ICAgICAgIHJldHVybiByZWxlYXNlTWFwcGVkKGVycm9yKTsKLSNlbHNlCi0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAg
ICBzaXplX3Qgc2l6ZSA9IG1fYmFzZU9mZnNldCArIG1fY3VycmVudFBhZ2UtPnNpemUoKTsKQEAg
LTE3MiwxNyArMTY4LDE2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0jaWYgIU9TKFdJ
TkRPV1MpCiAgICAgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiByZWxlYXNlTWFwcGVkKEJ5dGVjb2Rl
Q2FjaGVFcnJvciYgZXJyb3IpCiAgICAgewogICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fYmFzZU9m
ZnNldCArIG1fY3VycmVudFBhZ2UtPnNpemUoKTsKLSAgICAgICAgaWYgKGZ0cnVuY2F0ZShtX2Zk
LCBzaXplKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShtX2ZkLCBz
aXplKSkgewogICAgICAgICAgICAgZXJyb3IgPSBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJk
RXJyb3IoZXJybm8pOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhZ2UgOiBtX3BhZ2VzKSB7Ci0gICAgICAgICAgICBz
c2l6ZV90IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKG1fZmQsIHBhZ2UuYnVmZmVyKCksIHBhZ2Uuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX2ZkLCByZWludGVycHJldF9jYXN0PGNoYXIqPihwYWdlLmJ1ZmZlcigpKSwgcGFnZS5z
aXplKCkpOwogICAgICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAg
ICAgICAgIGVycm9yID0gQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NCwxNSArMTg5LDE1IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBidWZmZXIg
PSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIG1fZmQsIDApOwot
ICAgICAgICBpZiAoYnVmZmVyID09IE1BUF9GQUlMRUQpIHsKKyAgICAgICAgYm9vbCBzdWNjZXNz
OworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShtX2Zk
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc3VjY2Vzcyk7CisgICAgICAg
IGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgZXJyb3IgPSBCeXRlY29kZUNhY2hlRXJyb3I6
OlN0YW5kYXJkRXJyb3IoZXJybm8pOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KIAotICAgICAgICByZXR1cm4gQ2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShidWZmZXIsIHNp
emUsIFdURk1vdmUobV9sZWFmRXhlY3V0YWJsZXMpKTsKKyAgICAgICAgcmV0dXJuIENhY2hlZEJ5
dGVjb2RlOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSksIFdURk1vdmUobV9sZWFmRXhl
Y3V0YWJsZXMpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIGNsYXNzIFBhZ2UgewogICAgIHB1Ymxp
YzoKQEAgLTI3MCw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFZNJiBtX3ZtOwot
ICAgIGludCBtX2ZkOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZkOwog
ICAgIHB0cmRpZmZfdCBtX2Jhc2VPZmZzZXQ7CiAgICAgUGFnZSogbV9jdXJyZW50UGFnZTsKICAg
ICBWZWN0b3I8UGFnZT4gbV9wYWdlczsKQEAgLTIzNzYsNyArMjM3MSw3IEBAIHZvaWQgZW5jb2Rl
Q29kZUJsb2NrKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29u
c3QgVW5saW5rZWRDCiAgICAgZW50cnktPmVuY29kZShlbmNvZGVyLCB7IGtleSwganNDYXN0PGNv
bnN0IFVubGlua2VkQ29kZUJsb2NrVHlwZSo+KGNvZGVCbG9jaykgfSk7CiB9CiAKLVJlZlB0cjxD
YWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZUtl
eSYga2V5LCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgZmQsIEJ5dGVj
b2RlQ2FjaGVFcnJvciYgZXJyb3IpCitSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVC
bG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgVW5saW5rZWRDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRl
Y29kZUNhY2hlRXJyb3ImIGVycm9yKQogewogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
ID0gY29kZUJsb2NrLT5jbGFzc0luZm8odm0pOwogCkBAIC0yMzk0LDcgKzIzODksNyBAQCBSZWZQ
dHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGVLZXkmIGtleSwgY29uc3QgVQogUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxv
Y2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiB7CiAgICAgQnl0ZWNvZGVDYWNoZUVycm9yIGVycm9yOwotICAgIHJl
dHVybiBlbmNvZGVDb2RlQmxvY2sodm0sIGtleSwgY29kZUJsb2NrLCAtMSwgZXJyb3IpOworICAg
IHJldHVybiBlbmNvZGVDb2RlQmxvY2sodm0sIGtleSwgY29kZUJsb2NrLCBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlLCBlcnJvcik7CiB9CiAKIFJlZlB0cjxDYWNoZWRCeXRl
Y29kZT4gZW5jb2RlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBjb25zdCBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAppbmRleCAxYjYyZDhkNDZj
Yi4uMDVjYjFiMTZlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiB9OwogCiBKU19FWFBPUlRfUFJJ
VkFURSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNv
dXJjZUNvZGVLZXkmLCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayopOwotSlNfRVhQT1JUX1BSSVZB
VEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3Vy
Y2VDb2RlS2V5JiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqLCBpbnQgZmQsIEJ5dGVjb2RlQ2Fj
aGVFcnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNv
ZGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VDb2RlS2V5JiwgY29uc3QgVW5saW5rZWRDb2Rl
QmxvY2sqLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2RlQ2FjaGVF
cnJvciYpOwogCiBVbmxpbmtlZENvZGVCbG9jayogZGVjb2RlQ29kZUJsb2NrSW1wbChWTSYsIGNv
bnN0IFNvdXJjZUNvZGVLZXkmLCBSZWY8Q2FjaGVkQnl0ZWNvZGU+KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggODQyNzY4ZTMwMzQuLjI2YTIz
N2JjMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAK
QEAgLTIyNSw3ICsyMjUsNyBAQCBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxp
emVkTW9kdWxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQwogICAgIHJldHVybiBz
b3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZEJ5dGVjb2RlKHZtLCBzb3VyY2VDb2RlLCBTb3VyY2VD
b2RlVHlwZTo6TW9kdWxlVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgeyB9KTsKIH0KIAot
UmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29k
ZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNj
cmlwdE1vZGUgc2NyaXB0TW9kZSwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCitSZWZQdHI8
Q2FjaGVkQnl0ZWNvZGU+IHNlcmlhbGl6ZUJ5dGVjb2RlKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VDb2RlVHlwZSBj
b2RlVHlwZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9k
ZSBzY3JpcHRNb2RlLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2Rl
Q2FjaGVFcnJvciYgZXJyb3IsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5l
cmF0aW9uTW9kZSkKIHsKICAgICByZXR1cm4gZW5jb2RlQ29kZUJsb2NrKHZtLAogICAgICAgICBz
b3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZEJ5dGVjb2RlKHZtLCBzb3VyY2UsIGNvZGVUeXBlLCBz
dHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUpLCBjb2RlQmxvY2ssIGZk
LCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4
IGUyMDcxZDM5ZGQ4Li43YzM3YWIwNzk4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmgKQEAgLTMxOCw3ICszMTgsNyBAQCByZWN1cnNpdmVseUdlbmVyYXRlVW5s
aW5rZWRDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2Vy
UwogfQogCiB2b2lkIHdyaXRlQ29kZUJsb2NrKFZNJiwgY29uc3QgU291cmNlQ29kZUtleSYsIGNv
bnN0IFNvdXJjZUNvZGVWYWx1ZSYpOwotUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBzZXJpYWxpemVC
eXRlY29kZShWTSYsIFVubGlua2VkQ29kZUJsb2NrKiwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJj
ZUNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSwgaW50IGZk
LCBCeXRlY29kZUNhY2hlRXJyb3ImLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPik7CitS
ZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IHNlcmlhbGl6ZUJ5dGVjb2RlKFZNJiwgVW5saW5rZWRDb2Rl
QmxvY2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlQ29kZVR5cGUsIEpTUGFyc2VyU3RyaWN0
TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+KTsK
IFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRQcm9ncmFtKFZNJiwgY29u
c3QgU291cmNlQ29kZSYpOwogU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXpl
ZE1vZHVsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBkYmZmMTc4ZGU2Yi4uMDBhMTVjOTc5ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC05
Miw3ICs5Miw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBl
cnJvcikKK1JlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvcikKIHsKICAgICBKU0xvY2tIb2xkZXIg
bG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhy
ZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkpOwpAQCAtMTEyLDcgKzExMiw3IEBAIFJl
ZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgcmV0dXJuIHNlcmlhbGl6ZUJ5dGVjb2RlKHZtLCB1
bmxpbmtlZENvZGVCbG9jaywgc291cmNlLCBTb3VyY2VDb2RlVHlwZTo6UHJvZ3JhbVR5cGUsIHN0
cmljdE1vZGUsIHNjcmlwdE1vZGUsIGZkLCBlcnJvciwgeyB9KTsKIH0KIAotUmVmUHRyPENhY2hl
ZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3IpCitSZWZQdHI8Q2Fj
aGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVD
YWNoZUVycm9yJiBlcnJvcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRv
bVN0cmluZ1RhYmxlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCmluZGV4IDhhOTdjMTcxMjI0Li5iMWU4ZTI5YjUwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAi
Q2FsbERhdGEuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC00Myw4ICs0NCw4IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2Vw
dGlvbiA9IDApOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVj
U3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIAotSlNfRVhQT1JUX1BS
SVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOwotSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2Rl
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7CitK
U19FWFBPUlRfUFJJVkFURSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5
dGVjb2RlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7CitKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8
Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNhY2hlRXJy
b3ImKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqLCBj
b25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRyPEV4Y2VwdGlvbj4m
IHJldHVybmVkRXhjZXB0aW9uKTsKIGlubGluZSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBK
U1ZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IGNhNDY2NjI3MTMwLi4zZGI0OTRkYmFkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxOS0wNy0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+
CisKKyAgICAgICAgQnl0ZWNvZGUgY2FjaGUgc2hvdWxkIHVzZSBGaWxlU3lzdGVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVt
LmNwcDoKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAtIEFkZCBzdXBwb3J0
IGZvciBjcmVhdGluZyBNYXBwZWRGaWxlRGF0YSBmcm9tIGEgcHJlZXhpc3RpbmcgZmlsZSBoYW5k
bGUKKyAgICAgICAgc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBsb2NrZWQgZmlsZXMuCisgICAgICAg
IEFsc28gc3VwcG9ydCBjcmVhdGluZyBNYXBwZWRGaWxlRGF0YSB3aXRoIGVpdGhlciBwcml2YXRl
IG9yIHNoYXJlZCBtYXBwaW5ncy4KKworICAgICAgICAqIHd0Zi9VVUlELmNwcDoKKyAgICAgICAg
QXZvaWQgQVNTRVJUIHdpdGggcmV0dXJuaW5nIGEgTGF6eU5ldmVyRGVzdHJveWVkIG9iamVjdCB0
aGF0IGhhc24ndCBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAg
QWRkIHRydW5jYXRlRmlsZSBpbXBsZW1lbnRhdGlvbnMuCisKIDIwMTktMDctMDggIENocmlzdG9w
aGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBNYXBw
ZWRGaWxlRGF0YSBmb3IgV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCA5NzU0MjliYWQw
OS4uZmY2NmI2NjI3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC00MCw2ICs0MCwxMSBAQAog
I2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoR0xJQikKKyNpbmNsdWRlIDxn
aW8vZ2ZpbGVkZXNjcmlwdG9yYmFzZWQuaD4KKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdURiB7CiAKIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbCB7CkBAIC0yODMs
NDYgKzI4OCw1NCBAQCBNYXBwZWRGaWxlRGF0YTo6fk1hcHBlZEZpbGVEYXRhKCkKICAgICBtdW5t
YXAobV9maWxlRGF0YSwgbV9maWxlU2l6ZSk7CiB9CiAKLU1hcHBlZEZpbGVEYXRhOjpNYXBwZWRG
aWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKQorTWFwcGVkRmls
ZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIE1hcHBlZEZpbGVN
b2RlIG1vZGUsIGJvb2wmIHN1Y2Nlc3MpCiB7Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAgaW50IGZkID0gIWZzUmVwLmlzTnVsbCgp
ID8gb3Blbihmc1JlcC5kYXRhKCksIE9fUkRPTkxZKSA6IC0xOwotICAgIGlmIChmZCA8IDApIHsK
KyAgICBhdXRvIGZkID0gb3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7Cisg
ICAgaWYgKCFpc0hhbmRsZVZhbGlkKGZkKSkgewogICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBzdWNjZXNzID0gbWFwRmlsZUhhbmRsZShmZCwg
bW9kZSk7CisgICAgY2xvc2VGaWxlKGZkKTsKK30KKworYm9vbCBNYXBwZWRGaWxlRGF0YTo6bWFw
RmlsZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtb2Rl
KQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpbnQgZmQ7CisjaWYgVVNFKEdMSUIpCisgICAgYXV0byogaW5wdXRTdHJlYW0g
PSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOworICAg
IGZkID0gZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JB
U0VEKGlucHV0U3RyZWFtKSk7CisjZWxzZQorICAgIGZkID0gaGFuZGxlOworI2VuZGlmCisKICAg
ICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKICAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3RhdCkpIHsK
LSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHVuc2lnbmVkIHNpemU7
CiAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0YXQuc3Rfc2l6ZSwgc2l6ZSkpIHsK
LSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkgewot
ICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZvaWQqIGRhdGEgPSBtbWFw
KDAsIHNpemUsIFBST1RfUkVBRCwgTUFQX0ZJTEUgfCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0gICAg
Y2xvc2UoZmQpOworICAgIHZvaWQqIGRhdGEgPSBtbWFwKDAsIHNpemUsIFBST1RfUkVBRCwgTUFQ
X0ZJTEUgfCAobW9kZSA9PSBNYXBwZWRGaWxlTW9kZTo6U2hhcmVkID8gTUFQX1NIQVJFRCA6IE1B
UF9QUklWQVRFKSwgZmQsIDApOwogCiAgICAgaWYgKGRhdGEgPT0gTUFQX0ZBSUxFRCkgewotICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIG1fZmlsZURhdGEgPSBkYXRh
OwogICAgIG1fZmlsZVNpemUgPSBzaXplOworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaAppbmRleCAzMmZlNzZkZjQwMC4uNmY0NTUwMzE4MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmgKQEAgLTk2LDYgKzk2LDExIEBAIGVudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsKICAgICBO
b25ibG9ja2luZyA9IDEgPDwgMiwKIH07CiAKK2VudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUgewor
ICAgIFNoYXJlZCwKKyAgICBQcml2YXRlLAorfTsKKwogZW51bSBjbGFzcyBTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxl
RXhpc3RzKGNvbnN0IFN0cmluZyYpOwpAQCAtMTM4LDcgKzE0Myw3IEBAIFdURl9FWFBPUlRfUFJJ
VkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
T3Blbk1vZGUpCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlJik7CiAvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCiBXVEZfRVhQT1JU
X1BSSVZBVEUgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25n
IG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOwotYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHRydW5j
YXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwogLy8gUmV0dXJu
cyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndp
c2UuCiBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBi
eXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KQEAgLTE5
NSw3ICsyMDAsOCBAQCBjbGFzcyBNYXBwZWRGaWxlRGF0YSB7CiBwdWJsaWM6CiAgICAgTWFwcGVk
RmlsZURhdGEoKSB7IH0KICAgICBNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgYm9vbCYgc3VjY2Vzcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRh
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIE1hcHBlZEZpbGVNb2RlLCBib29sJiBzdWNjZXNzKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEoUGxhdGZvcm1GaWxlSGFuZGxl
LCBNYXBwZWRGaWxlTW9kZSwgYm9vbCYgc3VjY2Vzcyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IH5NYXBwZWRGaWxlRGF0YSgpOwogICAgIE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFwcGVk
RmlsZURhdGEmJik7CiAKQEAgLTIwMywxMSArMjA5LDIwIEBAIHB1YmxpYzoKICAgICBjb25zdCB2
b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGF0YTsgfQogICAgIHVuc2lnbmVkIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9CiAKKyAgICB2b2lkKiBsZWFrSGFuZGxl
KCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2ZpbGVEYXRhLCBudWxscHRyKTsgfQorCiBwcml2
YXRlOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1hcEZpbGVIYW5kbGUoUGxhdGZvcm1G
aWxlSGFuZGxlLCBNYXBwZWRGaWxlTW9kZSk7CisKICAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVs
bHB0ciB9OwogICAgIHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07CiB9OwogCitpbmxpbmUgTWFw
cGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE1h
cHBlZEZpbGVNb2RlIG1vZGUsIGJvb2wmIHN1Y2Nlc3MpCit7CisgICAgc3VjY2VzcyA9IG1hcEZp
bGVIYW5kbGUoaGFuZGxlLCBtb2RlKTsKK30KKwogaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBw
ZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQogICAgIDogbV9maWxlRGF0YShzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpKQogICAgICwgbV9maWxlU2l6ZShz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVVVJRC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAppbmRleCA4NTk2OGJmNTkx
MS4uMTVjYTAwYTcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCkBAIC02Niw4ICs2Niw4IEBAIFN0cmluZyBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCkKIAogU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpCiB7
Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJvb3RTZXNzaW9uVVVJRDsK
ICNpZiBPUyhEQVJXSU4pCisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJv
b3RTZXNzaW9uVVVJRDsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbXSB7CiAgICAgICAgIHNpemVfdCB1dWlkTGVuZ3RoID0g
Mzc7CkBAIC03Niw4ICs3NiwxMCBAQCBTdHJpbmcgYm9vdFNlc3Npb25VVUlEU3RyaW5nKCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgYm9vdFNlc3Npb25VVUlELmNvbnN0cnVjdChzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4odXVpZCksIHV1aWRMZW5ndGggLSAxKTsKICAgICB9KTsKLSNl
bmRpZgogICAgIHJldHVybiBib290U2Vzc2lvblVVSUQ7CisjZWxzZQorICAgIHJldHVybiBTdHJp
bmcoKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggOTI0ZmQ3ZGZjNTUuLjk4YTBjYTYzNWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzkzLDYgKzM5MywxMSBAQCBsb25n
IGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNl
dCwgRmlsZVNlZWtPcmlnaW4gbwogICAgIHJldHVybiBnX3NlZWthYmxlX3RlbGwoR19TRUVLQUJM
RShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSk7CiB9
CiAKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9u
ZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIGdfc2Vla2FibGVfdHJ1bmNhdGUoR19TRUVLQUJMRShn
X2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSksIG9mZnNl
dCwgMCwgMCk7Cit9CisKIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGdzaXplIGJ5dGVzV3JpdHRl
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA1OGM5MzQ0ODA4ZS4uYTEz
NTY4ODRhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQ3MCw2ICs0
NzAsMTcgQEAgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8KICAgICByZXR1cm4gbGFyZ2VPZmZzZXQu
UXVhZFBhcnQ7CiB9CiAKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgTEFSR0VfSU5URUdFUiBsYXJnZU9mZnNldDsK
KyAgICBsYXJnZU9mZnNldC5RdWFkUGFydCA9IG9mZnNldDsKKworICAgIEZJTEVfRU5EX09GX0ZJ
TEVfSU5GTyBlb2ZJbmZvOworICAgIGVvZkluZm8uRW5kT2ZGaWxlID0gbGFyZ2VPZmZzZXQ7CisK
KyAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZG
aWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihGSUxFX0VORF9PRl9GSUxFX0lORk8pKTsKK30KKwog
aW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCkBAIC01
OTUsMzYgKzYwNiw0MiBAQCBNYXBwZWRGaWxlRGF0YTo6fk1hcHBlZEZpbGVEYXRhKCkKICAgICBV
bm1hcFZpZXdPZkZpbGUobV9maWxlRGF0YSk7CiB9CiAKLU1hcHBlZEZpbGVEYXRhOjpNYXBwZWRG
aWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNzKQorTWFwcGVkRmls
ZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIE1hcHBlZEZpbGVN
b2RlIG1vZGUsIGJvb2wmIHN1Y2Nlc3MpCiB7Ci0gICAgc3VjY2VzcyA9IGZhbHNlOwogICAgIGF1
dG8gZmlsZSA9IENyZWF0ZUZpbGUoZmlsZVBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIEdF
TkVSSUNfUkVBRCwgMCwgbnVsbHB0ciwgT1BFTl9FWElTVElORywgRklMRV9BVFRSSUJVVEVfTk9S
TUFMLCBudWxscHRyKTsKLSAgICBpZiAoZmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAg
ICBpZiAoZmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdWNjZXNzID0gbWFwRmlsZUhh
bmRsZShmaWxlLCBtb2RlKTsKKyAgICBDbG9zZUhhbmRsZShmaWxlKTsKK30KKworYm9vbCBNYXBw
ZWRGaWxlRGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBw
ZWRGaWxlTW9kZSkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgbG9uZyBsb25nIHNpemU7Ci0gICAgaWYgKCFnZXRGaWxlU2l6
ZShmaWxlLCBzaXplKSB8fCBzaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSB8fCBzaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxkZWNsdHlwZShtX2ZpbGVTaXplKT46Om1h
eCgpKSB7Ci0gICAgICAgIENsb3NlSGFuZGxlKGZpbGUpOwotICAgICAgICByZXR1cm47CisgICAg
aWYgKCFnZXRGaWxlU2l6ZShoYW5kbGUsIHNpemUpIHx8IHNpemUgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpIHx8IHNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBl
KG1fZmlsZVNpemUpPjo6bWF4KCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGlmICghc2l6ZSkgewotICAgICAgICBDbG9zZUhhbmRsZShmaWxlKTsKLSAgICAgICAgc3Vj
Y2VzcyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgYXV0byBtYXBwaW5nID0gQ3JlYXRlRmlsZU1hcHBpbmcoZmlsZSwgbnVsbHB0ciwg
UEFHRV9SRUFET05MWSwgMCwgMCwgbnVsbHB0cik7Ci0gICAgQ2xvc2VIYW5kbGUoZmlsZSk7Cisg
ICAgYXV0byBtYXBwaW5nID0gQ3JlYXRlRmlsZU1hcHBpbmcoaGFuZGxlLCBudWxscHRyLCBQQUdF
X1JFQURPTkxZLCAwLCAwLCBudWxscHRyKTsKICAgICBpZiAoIW1hcHBpbmcpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9maWxlRGF0YSA9IE1hcFZpZXdP
ZkZpbGUobWFwcGluZywgRklMRV9NQVBfUkVBRCwgMCwgMCwgc2l6ZSk7CiAgICAgQ2xvc2VIYW5k
bGUobWFwcGluZyk7CiAgICAgaWYgKCFtX2ZpbGVEYXRhKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBtX2ZpbGVTaXplID0gc2l6ZTsKLSAgICBzdWNjZXNzID0g
dHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUlt
cGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA0ZTFlMjQ5OWNmYi4uMDU0YmRlYTgyMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxOS0wNy0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRA
c29ueS5jb20+CisKKyAgICAgICAgQnl0ZWNvZGUgY2FjaGUgc2hvdWxkIHVzZSBGaWxlU3lzdGVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisKIDIwMTktMDctMDggIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5hYmxlIHRvIHBhc3RlIGZyb20gTm90ZXMg
aW50byBFeGNlbCAzNjUgc3ByZWFkc2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCmluZGV4IGJlMDE0OWE0YTZlLi42MWZkN2M0ODc3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwaW5nU3Vj
Y2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIG1hcHBpbmdTdWNjZXNz
KTsKIAogICAgIGlmICghbWFwcGluZ1N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTgzZTQ1ODM3MzguLjA0YjRlZDEzNGU3
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTktMDctMTIgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNv
bnkuY29tPgorCisgICAgICAgIEJ5dGVjb2RlIGNhY2hlIHNob3VsZCB1c2UgRmlsZVN5c3RlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKwogMjAxOS0wNy0wOCAgSm9uYXRoYW4g
QmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdC13ZWJraXRweTogRXhw
bGljaXRseSB1c2UgUHl0aG9uIDIuNyBsbGRiIGxpYnJhcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggODMwNTUyNTU2ZGUuLmQwZTUxNTFhOTk5
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAt
OTQsNyArOTQsNyBAQCBwcml2YXRlOgogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlz
c2luZ0ZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vz
cyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5n
KCJub3RfZXhpc3RpbmdfZmlsZSIpLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVk
LCBzdWNjZXNzKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUo
IW1hcHBlZEZpbGVEYXRhKTsKIH0KQEAgLTEwMiw3ICsxMDIsNyBAQCBURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGlu
Z0V4aXN0aW5nRmlsZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgp
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBzdWNjZXNzKTsKICAgICBFWFBF
Q1RfVFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRhKTsKICAg
ICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1U
ZXN0RGF0YSkpOwpAQCAtMTEyLDcgKzExMiw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFw
cGluZ0V4aXN0aW5nRmlsZSkKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5n
RW1wdHlGaWxlKQogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAg
ICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxl
UGF0aCgpLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBzdWNjZXNzKTsKICAg
ICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEp
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374077</attachid>
            <date>2019-07-12 21:58:45 -0700</date>
            <delta_ts>2019-07-15 16:37:29 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>199759.diff</filename>
            <type>text/plain</type>
            <size>33232</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IGNlNjJhMzgwOWZiLi4zY2Mw
NDEyMWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2Fj
aGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICBTdHJpbmcgc3lzdGVtUGF0aCA9IGZpbGVQYXRoVVJMLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVtUGF0aCwgc3VjY2Vzcyk7
CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVtUGF0aCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNj
ZXNzKQogICAgICAgICByZXR1cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJGaWxlIGF0IHBhdGggJUAgY291bGQgbm90IGJlIG1hcHBlZC4iLCBzdGF0aWNfY2FzdDxO
U1N0cmluZyAqPihzeXN0ZW1QYXRoKV0sIGVycm9yKTsKIApAQCAtMTUzLDIyICsxNTMsMTkgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2FjaGVQYXRoLCBO
U0Vycm9yKiogZXJyb3IpCiAgICAgaWYgKCFtX2NhY2hlUGF0aCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW50IGZkID0gb3BlbihbbV9jYWNoZVBhdGggcGF0aF0uVVRGOFN0cmluZywgT19SRE9O
TFkgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwotICAgIGlmIChmZCA9PSAtMSkKKyAg
ICBhdXRvIGZkID0gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKFttX2NhY2hlUGF0aCBwYXRo
XS5VVEY4U3RyaW5nLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQsIHtGaWxlU3lzdGVt
OjpGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSwgRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlOjpOb25i
bG9ja2luZ30pOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmZCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Ci0gICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZk
KTsKICAgICB9KTsKIAotICAgIHN0cnVjdCBzdGF0IHNiOwotICAgIGludCByZXMgPSBmc3RhdChm
ZCwgJnNiKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6
ZSk7Ci0gICAgaWYgKHJlcyB8fCAhc2l6ZSkKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShmZCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQs
IE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0KLSAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2Fj
aGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoYnVmZmVyLCBzaXplKTsK
KyAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hl
ZEJ5dGVjb2RlOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlKSk7CiAKICAgICBKU0M6OlZNJiB2
bSA9IFttX3ZpcnR1YWxNYWNoaW5lIHZtXTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29k
ZSA9IFtzZWxmIHNvdXJjZUNvZGVdOwpAQCAtMjkxLDcgKzI4OCw3IEBAIHN0YXRpYyBib29sIHZh
bGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgoTlNVUkwqIGNhY2hlUGF0aCwgTlNFcnJvcioqIGVycm9y
KQogCiAgICAgaWYgKGNhY2hlRXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIG1fY2FjaGVkQnl0
ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoKTsKLSAgICAgICAgZnRydW5jYXRl
KGZkLCAwKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZkLCAwKTsKICAgICAg
ICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJVbmFibGUgdG8gZ2VuZXJhdGUgYnl0ZWNvZGUgZm9yIHRo
aXMgSlNTY3JpcHQgYmVjYXVzZTogIiwgY2FjaGVFcnJvci5tZXNzYWdlKCkpOwogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU0
M2JiNmJmY2ExLi5iYTJkZGEzOTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjI0LDcgKzIyNCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGlmIChXVEZfT1NfTUFD
X09TX1gpCiAgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgYmFzaCAtYyAiZGF0ZSArJyVzJyIg
T1VUUFVUX1ZBUklBQkxFIEJVSUxEX1RJTUUgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BB
Q0UpCiBlbHNlICgpCi0gICAgc2V0KEJVSUxEX1RJTUUgMCkKKyAgICBzdHJpbmcoVElNRVNUQU1Q
IEJVSUxEX1RJTUUgIiVzIikKIGVuZGlmICgpCiAKIGZpbGUoV1JJVEUgJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9CeXRlY29kZUNhY2hlVmVyc2lvbi5oICIjZGVmaW5lIEpT
Q19CWVRFQ09ERV9DQUNIRV9WRVJTSU9OICR7QlVJTERfVElNRX1cbiIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzZTAwN2JiNzY4MC4uZWJhMzAxNTkxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNl
IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5OTc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBieXRlY29kZSBjYWNoZSB0byB1c2UgcGxhdGZvcm0gZ2VuZXJpYyBGaWxlU3lz
dGVtIGNhbGxzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZVBh
eWxvYWQuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVQYXlsb2FkLmg6CisgICAgICAgICog
cnVudGltZS9DYWNoZWRCeXRlY29kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1l
L0NvZGVDYWNoZS5jcHA6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5o
OgorCiAyMDE5LTA3LTA4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW1BvaW50ZXIgRXZlbnRzXSBFbmFibGUgb25seSBvbiB0aGUgbW9zdCByZWNlbnQgdmVy
c2lvbiBvZiB0aGUgc3VwcG9ydGVkIGlPUyBmYW1pbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXgg
ZDRmYTIyMmM3MjEuLjc0NjUyYTIwY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODUsNiAr
ODUsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMTAwMyw3ICsx
MDA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRDYWNoZWRCeXRlY29kZSgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewotI2lmIE9TKERBUldJTikKICAgICAgICAgaWYgKCFjYWNoZUVuYWJs
ZWQoKSB8fCAhbV9jYWNoZWRCeXRlY29kZSB8fCAhbV9jYWNoZWRCeXRlY29kZS0+aGFzVXBkYXRl
cygpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDEyLDMyICsxMDEyLDMzIEBAIHB1Ymxp
YzoKICAgICAgICAgfSk7CiAKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gY2FjaGVQYXRoKCk7
Ci0gICAgICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19DUkVBVCB8
IE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDY2Nik7Ci0gICAg
ICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRM
b2NrRmlsZShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSwge0ZpbGVT
eXN0ZW06OkZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlLCBGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU6
Ok5vbmJsb2NraW5nfSk7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
ZCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBjbG9zZUZEID0gbWFrZVNj
b3BlRXhpdChbJl0gewotICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgRmlsZVN5
c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZkKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc3Ry
dWN0IHN0YXQgc2I7Ci0gICAgICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNiKTsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3NpemUpOwotICAgICAgICBp
ZiAocmVzIHx8IHNpemUgIT0gbV9jYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7CisgICAgICAgIGxv
bmcgbG9uZyBmaWxlU2l6ZTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShm
ZCwgZmlsZVNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpemVfdCBjYWNo
ZUZpbGVTaXplOworICAgICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU2l6ZSwgY2Fj
aGVGaWxlU2l6ZSkgfHwgY2FjaGVGaWxlU2l6ZSAhPSBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBieXRlY29kZSBjYWNoZSBoYXMgYWxyZWFkeSBiZWVuIHVw
ZGF0ZWQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmdHJ1
bmNhdGUoZmQsIG1fY2FjaGVkQnl0ZWNvZGUtPnNpemVGb3JVcGRhdGUoKSkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZkLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplRm9y
VXBkYXRlKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fY2FjaGVkQnl0ZWNv
ZGUtPmNvbW1pdFVwZGF0ZXMoWyZdIChvZmZfdCBvZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplKSB7Ci0gICAgICAgICAgICBvZmZfdCByZXN1bHQgPSBsc2VlayhmZCwgb2Zmc2V0
LCBTRUVLX1NFVCk7CisgICAgICAgICAgICBsb25nIGxvbmcgcmVzdWx0ID0gRmlsZVN5c3RlbTo6
c2Vla0ZpbGUoZmQsIG9mZnNldCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmlu
Zyk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ICE9IC0xKTsKLSAg
ICAgICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHdyaXRl
KGZkLCBkYXRhLCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGJ5
dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNpemUpOwogICAgICAgICB9KTsKLSNlbmRpZgog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTEwNDYsMTQgKzEwNDcsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4obnVsbHB0cik7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9w
dGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKLSAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gc291cmNl
T3JpZ2luKCkuc3RyaW5nKCk7Ci0gICAgICAgIGZpbGVuYW1lLnJlcGxhY2UoJy8nLCAnXycpOwot
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhjYWNoZVBhdGgsICcvJywgc291cmNlKCkudG9TdHJp
bmcoKS5oYXNoKCksICctJywgZmlsZW5hbWUsICIuYnl0ZWNvZGUtY2FjaGUiKTsKKyAgICAgICAg
U3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoc291cmNlT3Jp
Z2luKCkuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgbWFrZVN0cmluZyhzb3VyY2UoKS50b1N0cmluZygpLmhh
c2goKSwgJy0nLCBmaWxlbmFtZSwgIi5ieXRlY29kZS1jYWNoZSIpKTsKICAgICB9CiAKICAgICB2
b2lkIGxvYWRCeXRlY29kZSgpIGNvbnN0CiAgICAgewotI2lmIE9TKERBUldJTikKICAgICAgICAg
aWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTA2MSwyNSAr
MTA2MCwyMSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4KCku
ZGF0YSgpLCBPX1JET05MWSB8IE9fU0hMT0NLIHwgT19OT05CTE9DSyk7Ci0gICAgICAgIGlmIChm
ZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShm
aWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkLCB7RmlsZVN5c3RlbTo6Rmls
ZUxvY2tNb2RlOjpTaGFyZWQsIEZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmd9
KTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZkKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7
Ci0gICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tB
bmRDbG9zZUZpbGUoZmQpOwogICAgICAgICB9KTsKIAotICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsK
LSAgICAgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwotICAgICAgICBzaXplX3Qgc2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6ZSk7Ci0gICAgICAgIGlmIChyZXMgfHwgIXNp
emUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgc3VjY2VzczsKKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmQsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKIAotICAgICAgICB2b2lkKiBidWZm
ZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsK
LSAgICAgICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAgICAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBDYWNoZWRC
eXRlY29kZTo6Y3JlYXRlKGJ1ZmZlciwgc2l6ZSk7Ci0jZW5kaWYKKworICAgICAgICBtX2NhY2hl
ZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSk7CiAgICAgfQogCiAgICAgU2hlbGxTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFVSTCYmIHVybCwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNl
VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5
bG9hZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3Bw
CmluZGV4IDhjM2U4NWIzOWMwLi5jZGRiODQ4Njc3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwCkBAIC0zMiwxMiArMzIsMTAgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLSNpZiAhT1MoV0lORE9XUykKLUNhY2hlUGF5bG9hZCBDYWNoZVBheWxv
YWQ6Om1ha2VNYXBwZWRQYXlsb2FkKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQorQ2FjaGVQYXls
b2FkIENhY2hlUGF5bG9hZDo6bWFrZU1hcHBlZFBheWxvYWQoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBkYXRhKQogewotICAgIHJldHVybiBDYWNoZVBheWxvYWQodHJ1ZSwgZGF0YSwgc2l6
ZSk7CisgICAgcmV0dXJuIENhY2hlUGF5bG9hZCh0cnVlLCBkYXRhLmxlYWtIYW5kbGUoKSwgZGF0
YS5zaXplKCkpOwogfQotI2VuZGlmCiAKIENhY2hlUGF5bG9hZCBDYWNoZVBheWxvYWQ6Om1ha2VN
YWxsb2NQYXlsb2FkKE1hbGxvY1B0cjx1aW50OF90PiYmIGRhdGEsIHNpemVfdCBzaXplKQogewpA
QCAtNzksNyArNzcsNyBAQCB2b2lkIENhY2hlUGF5bG9hZDo6ZnJlZURhdGEoKQogI2lmICFPUyhX
SU5ET1dTKQogICAgICAgICBtdW5tYXAobV9kYXRhLCBtX3NpemUpOwogI2Vsc2UKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgVW5tYXBWaWV3T2ZGaWxlKG1f
ZGF0YSk7CiAjZW5kaWYKICAgICB9IGVsc2UKICAgICAgICAgZmFzdEZyZWUobV9kYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmgKaW5kZXggZTA0OGYz
MTkzN2MuLjdlYWI1ODk3ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZVBheWxvYWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZVBheWxvYWQuaApAQCAtMjUsMTUgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFsbG9jUHRyLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWNoZVBheWxvYWQgewogcHVibGljOgotI2lmICFPUyhX
SU5ET1dTKQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWNoZVBheWxvYWQgbWFrZU1h
cHBlZFBheWxvYWQodm9pZCosIHNpemVfdCk7Ci0jZW5kaWYKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ2FjaGVQYXlsb2FkIG1ha2VNYXBwZWRQYXlsb2FkKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWNoZVBheWxvYWQg
bWFrZU1hbGxvY1BheWxvYWQoTWFsbG9jUHRyPHVpbnQ4X3Q+JiYsIHNpemVfdCk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIENhY2hlUGF5bG9hZCBtYWtlRW1wdHlQYXlsb2FkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRlY29kZS5oCmluZGV4
IDE1Y2FiM2MwNDcwLi5kNzU2MTM5NTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRCeXRlY29kZS5oCkBAIC00NiwxMiArNDYsMTAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1h
a2VFbXB0eVBheWxvYWQoKSkpOwogICAgIH0KIAotI2lmICFPUyhXSU5ET1dTKQotICAgIHN0YXRp
YyBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgTGVh
ZkV4ZWN1dGFibGVNYXAmJiBsZWFmRXhlY3V0YWJsZXMgPSB7IH0pCisgICAgc3RhdGljIFJlZjxD
YWNoZWRCeXRlY29kZT4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSwg
TGVhZkV4ZWN1dGFibGVNYXAmJiBsZWFmRXhlY3V0YWJsZXMgPSB7IH0pCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1ha2VN
YXBwZWRQYXlsb2FkKGRhdGEsIHNpemUpLCBXVEZNb3ZlKGxlYWZFeGVjdXRhYmxlcykpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkQnl0ZWNvZGUoQ2FjaGVQYXlsb2FkOjpt
YWtlTWFwcGVkUGF5bG9hZChXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZShsZWFmRXhlY3V0YWJsZXMp
KSk7CiAgICAgfQotI2VuZGlmCiAKICAgICBzdGF0aWMgUmVmPENhY2hlZEJ5dGVjb2RlPiBjcmVh
dGUoTWFsbG9jUHRyPHVpbnQ4X3Q+JiYgZGF0YSwgc2l6ZV90IHNpemUsIExlYWZFeGVjdXRhYmxl
TWFwJiYgbGVhZkV4ZWN1dGFibGVzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA2ZTgzYTI4NDRjZS4uNmZlNTU1MDU0MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTg4
LDcgKzg4LDcgQEAgcHVibGljOgogICAgICAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7CiAgICAgfTsK
IAotICAgIEVuY29kZXIoVk0mIHZtLCBpbnQgZmQgPSAtMSkKKyAgICBFbmNvZGVyKFZNJiB2bSwg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkID0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgOiBtX3ZtKHZtKQogICAgICAgICAsIG1fZmQoZmQp
CiAgICAgICAgICwgbV9iYXNlT2Zmc2V0KDApCkBAIC0xNTIsMTIgKzE1Miw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBtX2N1cnJlbnRQYWdlLT5hbGln
bkVuZCgpOwogCi0gICAgICAgIGlmIChtX2ZkICE9IC0xKSB7Ci0jaWYgIU9TKFdJTkRPV1MpCisg
ICAgICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fZmQpKSB7CiAgICAgICAgICAg
ICByZXR1cm4gcmVsZWFzZU1hcHBlZChlcnJvcik7Ci0jZWxzZQotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgc2l6
ZV90IHNpemUgPSBtX2Jhc2VPZmZzZXQgKyBtX2N1cnJlbnRQYWdlLT5zaXplKCk7CkBAIC0xNzIs
MTcgKzE2OCwxNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotI2lmICFPUyhXSU5ET1dT
KQogICAgIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gcmVsZWFzZU1hcHBlZChCeXRlY29kZUNhY2hl
RXJyb3ImIGVycm9yKQogICAgIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSBtX2Jhc2VPZmZzZXQg
KyBtX2N1cnJlbnRQYWdlLT5zaXplKCk7Ci0gICAgICAgIGlmIChmdHJ1bmNhdGUobV9mZCwgc2l6
ZSkpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUobV9mZCwgc2l6ZSkp
IHsKICAgICAgICAgICAgIGVycm9yID0gQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9y
KGVycm5vKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogbV9wYWdlcykgewotICAgICAgICAgICAgc3NpemVf
dCBieXRlc1dyaXR0ZW4gPSB3cml0ZShtX2ZkLCBwYWdlLmJ1ZmZlcigpLCBwYWdlLnNpemUoKSk7
CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
bV9mZCwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGFnZS5idWZmZXIoKSksIHBhZ2Uuc2l6ZSgp
KTsKICAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEpIHsKICAgICAgICAgICAgICAg
ICBlcnJvciA9IEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcihlcnJubyk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQsMTUgKzE4OSwxNSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCogYnVmZmVyID0gbW1h
cChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBtX2ZkLCAwKTsKLSAgICAg
ICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgIGJvb2wgc3VjY2VzczsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEobV9mZCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgICAgICBpZiAo
IXN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGVycm9yID0gQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFu
ZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIENhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoYnVmZmVyLCBzaXplLCBX
VEZNb3ZlKG1fbGVhZkV4ZWN1dGFibGVzKSk7CisgICAgICAgIHJldHVybiBDYWNoZWRCeXRlY29k
ZTo6Y3JlYXRlKFdURk1vdmUobWFwcGVkRmlsZURhdGEpLCBXVEZNb3ZlKG1fbGVhZkV4ZWN1dGFi
bGVzKSk7CiAgICAgfQotI2VuZGlmCiAKICAgICBjbGFzcyBQYWdlIHsKICAgICBwdWJsaWM6CkBA
IC0yNzAsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBWTSYgbV92bTsKLSAgICBp
bnQgbV9mZDsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9mZDsKICAgICBw
dHJkaWZmX3QgbV9iYXNlT2Zmc2V0OwogICAgIFBhZ2UqIG1fY3VycmVudFBhZ2U7CiAgICAgVmVj
dG9yPFBhZ2U+IG1fcGFnZXM7CkBAIC0yMzc2LDcgKzIzNzEsNyBAQCB2b2lkIGVuY29kZUNvZGVC
bG9jayhFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVu
bGlua2VkQwogICAgIGVudHJ5LT5lbmNvZGUoZW5jb2RlciwgeyBrZXksIGpzQ2FzdDxjb25zdCBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqPihjb2RlQmxvY2spIH0pOwogfQogCi1SZWZQdHI8Q2FjaGVk
Qnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtl
eSwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGZkLCBCeXRlY29kZUNh
Y2hlRXJyb3ImIGVycm9yKQorUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2so
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVD
YWNoZUVycm9yJiBlcnJvcikKIHsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGNv
ZGVCbG9jay0+Y2xhc3NJbmZvKHZtKTsKIApAQCAtMjM5NCw3ICsyMzg5LDcgQEAgUmVmUHRyPENh
Y2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5
JiBrZXksIGNvbnN0IFUKIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrKQogewogICAgIEJ5dGVjb2RlQ2FjaGVFcnJvciBlcnJvcjsKLSAgICByZXR1cm4g
ZW5jb2RlQ29kZUJsb2NrKHZtLCBrZXksIGNvZGVCbG9jaywgLTEsIGVycm9yKTsKKyAgICByZXR1
cm4gZW5jb2RlQ29kZUJsb2NrKHZtLCBrZXksIGNvZGVCbG9jaywgRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSwgZXJyb3IpOwogfQogCiBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+
IGVuY29kZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgKaW5kZXggMWI2MmQ4ZDQ2Y2IuLjA1
Y2IxYjE2ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogfTsKIAogSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VD
b2RlS2V5JiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqKTsKLUpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiwgY29uc3QgU291cmNlQ29k
ZUtleSYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKiwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJy
b3ImKTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29k
ZUJsb2NrKFZNJiwgY29uc3QgU291cmNlQ29kZUtleSYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2Nr
KiwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNhY2hlRXJyb3Im
KTsKIAogVW5saW5rZWRDb2RlQmxvY2sqIGRlY29kZUNvZGVCbG9ja0ltcGwoVk0mLCBjb25zdCBT
b3VyY2VDb2RlS2V5JiwgUmVmPENhY2hlZEJ5dGVjb2RlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDg0Mjc2OGUzMDM0Li4yNmEyMzdiYzM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0y
MjUsNyArMjI1LDcgQEAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZE1v
ZHVsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUMKICAgICByZXR1cm4gc291cmNl
Q29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNlQ29kZSwgU291cmNlQ29kZVR5
cGU6Ok1vZHVsZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHsgfSk7CiB9CiAKLVJlZlB0
cjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mIHZtLCBVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUNvZGVUeXBl
IGNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRN
b2RlIHNjcmlwdE1vZGUsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvciwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQorUmVmUHRyPENhY2hl
ZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29kZVR5cGUgY29kZVR5
cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNhY2hl
RXJyb3ImIGVycm9yLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUpCiB7CiAgICAgcmV0dXJuIGVuY29kZUNvZGVCbG9jayh2bSwKICAgICAgICAgc291cmNl
Q29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNlLCBjb2RlVHlwZSwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlKSwgY29kZUJsb2NrLCBmZCwgZXJy
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCBlMjA3
MWQzOWRkOC4uN2MzN2FiMDc5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5oCkBAIC0zMTgsNyArMzE4LDcgQEAgcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2Vk
Q29kZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclMKIH0K
IAogdm9pZCB3cml0ZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNvdXJjZUNvZGVLZXkmLCBjb25zdCBT
b3VyY2VDb2RlVmFsdWUmKTsKLVJlZlB0cjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNv
ZGUoVk0mLCBVbmxpbmtlZENvZGVCbG9jayosIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VDb2Rl
VHlwZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIGludCBmZCwgQnl0
ZWNvZGVDYWNoZUVycm9yJiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOworUmVmUHRy
PENhY2hlZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYsIFVubGlua2VkQ29kZUJsb2Nr
KiwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUs
IEpTUGFyc2VyU2NyaXB0TW9kZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBC
eXRlY29kZUNhY2hlRXJyb3ImLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPik7CiBTb3Vy
Y2VDb2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkUHJvZ3JhbShWTSYsIGNvbnN0IFNv
dXJjZUNvZGUmKTsKIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRNb2R1
bGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggZGJmZjE3OGRlNmIuLjAwYTE1Yzk3OWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtOTIsNyAr
OTIsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgIHJldHVybiB0cnVlOwogfQogCi1S
ZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3Ip
CitSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6
Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBSZWZQdHI8
Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLAogICAgIHJldHVybiBzZXJpYWxpemVCeXRlY29kZSh2bSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNvdXJjZSwgU291cmNlQ29kZVR5cGU6OlByb2dyYW1UeXBlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBmZCwgZXJyb3IsIHsgfSk7CiB9CiAKLVJlZlB0cjxDYWNoZWRCeXRl
Y29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yKQorUmVmUHRyPENhY2hlZEJ5
dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2RlQ2FjaGVF
cnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJp
bmdUYWJsZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApp
bmRleCA4YTk3YzE3MTIyNC4uYjFlOGUyOWI1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNhbGxE
YXRhLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDMs
OCArNDQsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29uc3Qg
U291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNr
U3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24g
PSAwKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRl
KiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiAKLUpTX0VYUE9SVF9QUklWQVRF
IFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImKTsKLUpTX0VYUE9SVF9Q
UklWQVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOworSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29k
ZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPENhY2hl
ZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7
CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbik7CiBpbmxpbmUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1
ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBjYTQ2NjYyNzEzMC4uOTdiOGM3NWFhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTktMDctMTIgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisg
ICAgICAgIEJ5dGVjb2RlIGNhY2hlIHNob3VsZCB1c2UgRmlsZVN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzU5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNy
ZWF0aW5nIE1hcHBlZEZpbGVEYXRhIGZyb20gYSBwcmVleGlzdGluZyBmaWxlIGhhbmRsZQorICAg
ICAgICBmb3IgdXNlIHdpdGggbG9ja2VkIGZpbGVzLiBBbHNvIHN1cHBvcnQgY3JlYXRpbmcgTWFw
cGVkRmlsZURhdGEgCisgICAgICAgIHdpdGggZWl0aGVyIHByaXZhdGUgb3Igc2hhcmVkIG1hcHBp
bmdzLgorCisgICAgICAgICogd3RmL1VVSUQuY3BwOgorICAgICAgICBBdm9pZCBBU1NFUlQgd2l0
aCByZXR1cm5pbmcgYSBMYXp5TmV2ZXJEZXN0cm95ZWQgb2JqZWN0IHRoYXQgaGFzbid0IGJlZW4g
Y3JlYXRlZC4KKworICAgICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAg
ICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICBBZGQgdHJ1bmNhdGVGaWxl
IGltcGxlbWVudGF0aW9ucy4KKwogMjAxOS0wNy0wOCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlz
LnJlaWRAc29ueS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IE1hcHBlZEZpbGVEYXRhIGZvciBX
aW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDk3NTQyOWJhZDA5Li5mZjY2YjY2Mjc4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTQwLDYgKzQwLDExIEBACiAjaW5jbHVkZSA8dW5pc3Rk
Lmg+CiAjZW5kaWYKIAorI2lmIFVTRShHTElCKQorI2luY2x1ZGUgPGdpby9nZmlsZWRlc2NyaXB0
b3JiYXNlZC5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RG
IHsKIAogbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKQEAgLTI4Myw0NiArMjg4LDU0IEBAIE1h
cHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQogICAgIG11bm1hcChtX2ZpbGVEYXRhLCBt
X2ZpbGVTaXplKTsKIH0KIAotTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCitNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmls
ZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgTWFwcGVkRmlsZU1vZGUgbW9kZSwgYm9vbCYg
c3VjY2VzcykKIHsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGZpbGVQYXRoKTsKLSAgICBpbnQgZmQgPSAhZnNSZXAuaXNOdWxsKCkgPyBvcGVuKGZzUmVwLmRh
dGEoKSwgT19SRE9OTFkpIDogLTE7Ci0gICAgaWYgKGZkIDwgMCkgeworICAgIGF1dG8gZmQgPSBv
cGVuRmlsZShmaWxlUGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBpZiAoIWlzSGFuZGxl
VmFsaWQoZmQpKSB7CiAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGZkLCBtb2RlKTsKKyAgICBjbG9z
ZUZpbGUoZmQpOworfQorCitib29sIE1hcHBlZEZpbGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIE1hcHBlZEZpbGVNb2RlIG1vZGUpCit7CisgICAgaWYgKCFp
c0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBm
ZDsKKyNpZiBVU0UoR0xJQikKKyAgICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSk7CisgICAgZmQgPSBnX2ZpbGVfZGVz
Y3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0p
KTsKKyNlbHNlCisgICAgZmQgPSBoYW5kbGU7CisjZW5kaWYKKwogICAgIHN0cnVjdCBzdGF0IGZp
bGVTdGF0OwogICAgIGlmIChmc3RhdChmZCwgJmZpbGVTdGF0KSkgewotICAgICAgICBjbG9zZShm
ZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgdW5zaWduZWQgc2l6ZTsKICAgICBpZiAoIVdURjo6
Y29udmVydFNhZmVseShmaWxlU3RhdC5zdF9zaXplLCBzaXplKSkgewotICAgICAgICBjbG9zZShm
ZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFzaXplKSB7Ci0gICAgICAgIGNsb3NlKGZk
KTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9S
RUFELCBNQVBfRklMRSB8IE1BUF9TSEFSRUQsIGZkLCAwKTsKLSAgICBjbG9zZShmZCk7CisgICAg
dm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IChtb2RlID09
IE1hcHBlZEZpbGVNb2RlOjpTaGFyZWQgPyBNQVBfU0hBUkVEIDogTUFQX1BSSVZBVEUpLCBmZCwg
MCk7CiAKICAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgc3VjY2VzcyA9IHRydWU7CiAgICAgbV9maWxlRGF0YSA9IGRhdGE7CiAgICAgbV9maWxlU2l6
ZSA9IHNpemU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmlu
ZGV4IDMyZmU3NmRmNDAwLi42ZjQ1NTAzMTgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtOTYsNiAr
OTYsMTEgQEAgZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgewogICAgIE5vbmJsb2NraW5nID0gMSA8
PCAyLAogfTsKIAorZW51bSBjbGFzcyBNYXBwZWRGaWxlTW9kZSB7CisgICAgU2hhcmVkLAorICAg
IFByaXZhdGUsCit9OworCiBlbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgeyBO
bywgWWVzIH07CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVFeGlzdHMoY29uc3QgU3Ry
aW5nJik7CkBAIC0xMzgsNyArMTQzLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmls
ZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSkKIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIC8vIFJl
dHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxl
IGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIFdURl9FWFBPUlRfUFJJVkFURSBsb25nIGxv
bmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vl
a09yaWdpbik7Ci1ib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9u
ZyBvZmZzZXQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRl
cyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIFdURl9FWFBPUlRf
UFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdy
aXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpAQCAtMTk1LDcgKzIwMCw4IEBAIGNs
YXNzIE1hcHBlZEZpbGVEYXRhIHsKIHB1YmxpYzoKICAgICBNYXBwZWRGaWxlRGF0YSgpIHsgfQog
ICAgIE1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNz
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgTWFwcGVkRmlsZU1vZGUsIGJvb2wmIHN1Y2Nlc3MpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNYXBwZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVIYW5kbGUsIE1hcHBlZEZpbGVNb2Rl
LCBib29sJiBzdWNjZXNzKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk1hcHBlZEZpbGVEYXRh
KCk7CiAgICAgTWFwcGVkRmlsZURhdGEmIG9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmKTsKIApA
QCAtMjAzLDExICsyMDksMjAgQEAgcHVibGljOgogICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsZVNpemU7IH0KIAorICAgIHZvaWQqIGxlYWtIYW5kbGUoKSB7IHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fZmlsZURhdGEsIG51bGxwdHIpOyB9CisKIHByaXZhdGU6CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgbWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE1hcHBl
ZEZpbGVNb2RlKTsKKwogICAgIHZvaWQqIG1fZmlsZURhdGEgeyBudWxscHRyIH07CiAgICAgdW5z
aWduZWQgbV9maWxlU2l6ZSB7IDAgfTsKIH07CiAKK2lubGluZSBNYXBwZWRGaWxlRGF0YTo6TWFw
cGVkRmlsZURhdGEoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgTWFwcGVkRmlsZU1vZGUgbW9k
ZSwgYm9vbCYgc3VjY2VzcykKK3sKKyAgICBzdWNjZXNzID0gbWFwRmlsZUhhbmRsZShoYW5kbGUs
IG1vZGUpOworfQorCiBpbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKE1hcHBl
ZEZpbGVEYXRhJiYgb3RoZXIpCiAgICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIu
bV9maWxlRGF0YSwgbnVsbHB0cikpCiAgICAgLCBtX2ZpbGVTaXplKHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV9maWxlU2l6ZSwgMCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcCBi
L1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCmluZGV4IDg1OTY4YmY1OTExLi4xNWNhMDBhNzEwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VVVJRC5jcHAKQEAgLTY2LDggKzY2LDggQEAgU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKQogCiBTdHJpbmcgYm9vdFNlc3Npb25VVUlEU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFN0cmluZz4gYm9vdFNlc3Npb25VVUlEOwogI2lmIE9TKERBUldJTikK
KyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFN0cmluZz4gYm9vdFNlc3Npb25VVUlEOwog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFtdIHsKICAgICAgICAgc2l6ZV90IHV1aWRMZW5ndGggPSAzNzsKQEAgLTc2LDggKzc2
LDEwIEBAIFN0cmluZyBib290U2Vzc2lvblVVSURTdHJpbmcoKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBib290U2Vzc2lvblVVSUQuY29uc3RydWN0KHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPih1dWlkKSwgdXVpZExlbmd0aCAtIDEpOwogICAgIH0pOwotI2VuZGlmCiAgICAgcmV0dXJu
IGJvb3RTZXNzaW9uVVVJRDsKKyNlbHNlCisgICAgcmV0dXJuIFN0cmluZygpOworI2VuZGlmCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNw
cAppbmRleCA5MjRmZDdkZmM1NS4uYzRjMmMwNmYxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCkBAIC0zOTMsNiArMzkzLDExIEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdp
biBvCiAgICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKIH0KIAorYm9vbCB0cnVuY2F0
ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKK3sKKyAg
ICByZXR1cm4gZ19zZWVrYWJsZV90cnVuY2F0ZShHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9v
dXRwdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSwgb2Zmc2V0LCBudWxscHRyLCBudWxs
cHRyKTsKK30KKwogaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgZ3NpemUgYnl0ZXNXcml0dGVuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDU4YzkzNDQ4MDhlLi5hMTM1Njg4
NGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtNDcwLDYgKzQ3MCwx
NyBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBs
b25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogICAgIHJldHVybiBsYXJnZU9mZnNldC5RdWFk
UGFydDsKIH0KIAorYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
bG9uZyBsb25nIG9mZnNldCkKK3sKKyAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0OworICAg
IGxhcmdlT2Zmc2V0LlF1YWRQYXJ0ID0gb2Zmc2V0OworCisgICAgRklMRV9FTkRfT0ZfRklMRV9J
TkZPIGVvZkluZm87CisgICAgZW9mSW5mby5FbmRPZkZpbGUgPSBsYXJnZU9mZnNldDsKKworICAg
IHJldHVybiBTZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoYW5kbGUsIEZpbGVFbmRPZkZpbGVJ
bmZvLCAmZW9mSW5mbywgc2l6ZW9mKEZJTEVfRU5EX09GX0ZJTEVfSU5GTykpOworfQorCiBpbnQg
d3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKQEAgLTU5NSwz
NiArNjA2LDQyIEBAIE1hcHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQogICAgIFVubWFw
Vmlld09mRmlsZShtX2ZpbGVEYXRhKTsKIH0KIAotTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVE
YXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCitNYXBwZWRGaWxlRGF0
YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgTWFwcGVkRmlsZU1vZGUg
bW9kZSwgYm9vbCYgc3VjY2VzcykKIHsKLSAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgYXV0byBm
aWxlID0gQ3JlYXRlRmlsZShmaWxlUGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgR0VORVJJ
Q19SRUFELCAwLCBudWxscHRyLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUws
IG51bGxwdHIpOwotICAgIGlmIChmaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgIGlm
IChmaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxl
KGZpbGUsIG1vZGUpOworICAgIENsb3NlSGFuZGxlKGZpbGUpOworfQorCitib29sIE1hcHBlZEZp
bGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE1hcHBlZEZp
bGVNb2RlKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBsb25nIGxvbmcgc2l6ZTsKLSAgICBpZiAoIWdldEZpbGVTaXplKGZp
bGUsIHNpemUpIHx8IHNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIHx8
IHNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKG1fZmlsZVNpemUpPjo6bWF4KCkp
IHsKLSAgICAgICAgQ2xvc2VIYW5kbGUoZmlsZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
IWdldEZpbGVTaXplKGhhbmRsZSwgc2l6ZSkgfHwgc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkgfHwgc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUobV9m
aWxlU2l6ZSk+OjptYXgoKSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
aWYgKCFzaXplKSB7Ci0gICAgICAgIENsb3NlSGFuZGxlKGZpbGUpOwotICAgICAgICBzdWNjZXNz
ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBhdXRvIG1hcHBpbmcgPSBDcmVhdGVGaWxlTWFwcGluZyhmaWxlLCBudWxscHRyLCBQQUdF
X1JFQURPTkxZLCAwLCAwLCBudWxscHRyKTsKLSAgICBDbG9zZUhhbmRsZShmaWxlKTsKKyAgICBh
dXRvIG1hcHBpbmcgPSBDcmVhdGVGaWxlTWFwcGluZyhoYW5kbGUsIG51bGxwdHIsIFBBR0VfUkVB
RE9OTFksIDAsIDAsIG51bGxwdHIpOwogICAgIGlmICghbWFwcGluZykKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2ZpbGVEYXRhID0gTWFwVmlld09mRmls
ZShtYXBwaW5nLCBGSUxFX01BUF9SRUFELCAwLCAwLCBzaXplKTsKICAgICBDbG9zZUhhbmRsZSht
YXBwaW5nKTsKICAgICBpZiAoIW1fZmlsZURhdGEpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIG1fZmlsZVNpemUgPSBzaXplOwotICAgIHN1Y2Nlc3MgPSB0cnVl
OworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDRlMWUyNDk5Y2ZiLi4wNTRiZGVhODIxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255
LmNvbT4KKworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNlIEZpbGVTeXN0ZW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTc1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcDoKKwogMjAxOS0wNy0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmFibGUgdG8gcGFzdGUgZnJvbSBOb3RlcyBpbnRv
IEV4Y2VsIDM2NSBzcHJlYWRzaGVldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKaW5kZXggYmUwMTQ5YTRhNmUuLjYxZmQ3YzQ4NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoR3N0TWFwcGVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogewogICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNz
KTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgbWFwcGluZ1N1Y2Nlc3MpOwog
CiAgICAgaWYgKCFtYXBwaW5nU3VjY2VzcykKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ODNlNDU4MzczOC4uMDRiNGVkMTM0ZTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxOS0wNy0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5j
b20+CisKKyAgICAgICAgQnl0ZWNvZGUgY2FjaGUgc2hvdWxkIHVzZSBGaWxlU3lzdGVtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorCiAyMDE5LTA3LTA4ICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LXdlYmtpdHB5OiBFeHBsaWNp
dGx5IHVzZSBQeXRob24gMi43IGxsZGIgbGlicmFyeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4MzA1NTI1NTZkZS4uZDBlNTE1MWE5OTkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC05NCw3
ICs5NCw3IEBAIHByaXZhdGU6CiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5n
RmlsZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsK
KyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5v
dF9leGlzdGluZ19maWxlIiksIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1
Y2Nlc3MpOwogICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghbWFw
cGVkRmlsZURhdGEpOwogfQpAQCAtMTAyLDcgKzEwMiw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgTWFwcGluZ01pc3NpbmdGaWxlKQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhp
c3RpbmdGaWxlKQogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9U
UlVFKHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKCEhbWFwcGVkRmlsZURhdGEpOwogICAgIEVY
UEVDVF9UUlVFKG1hcHBlZEZpbGVEYXRhLnNpemUoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3RE
YXRhKSk7CkBAIC0xMTIsNyArMTEyLDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5n
RXhpc3RpbmdGaWxlKQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdFbXB0
eUZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRo
KCksIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOwogICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374164</attachid>
            <date>2019-07-15 16:37:29 -0700</date>
            <delta_ts>2019-07-16 21:15:44 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>199759.diff</filename>
            <type>text/plain</type>
            <size>33058</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IGNlNjJhMzgwOWZiLi4zY2Mw
NDEyMWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2Fj
aGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICBTdHJpbmcgc3lzdGVtUGF0aCA9IGZpbGVQYXRoVVJMLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVtUGF0aCwgc3VjY2Vzcyk7
CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVtUGF0aCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNj
ZXNzKQogICAgICAgICByZXR1cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJGaWxlIGF0IHBhdGggJUAgY291bGQgbm90IGJlIG1hcHBlZC4iLCBzdGF0aWNfY2FzdDxO
U1N0cmluZyAqPihzeXN0ZW1QYXRoKV0sIGVycm9yKTsKIApAQCAtMTUzLDIyICsxNTMsMTkgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2FjaGVQYXRoLCBO
U0Vycm9yKiogZXJyb3IpCiAgICAgaWYgKCFtX2NhY2hlUGF0aCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW50IGZkID0gb3BlbihbbV9jYWNoZVBhdGggcGF0aF0uVVRGOFN0cmluZywgT19SRE9O
TFkgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwotICAgIGlmIChmZCA9PSAtMSkKKyAg
ICBhdXRvIGZkID0gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKFttX2NhY2hlUGF0aCBwYXRo
XS5VVEY4U3RyaW5nLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQsIHtGaWxlU3lzdGVt
OjpGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSwgRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlOjpOb25i
bG9ja2luZ30pOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmZCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Ci0gICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZk
KTsKICAgICB9KTsKIAotICAgIHN0cnVjdCBzdGF0IHNiOwotICAgIGludCByZXMgPSBmc3RhdChm
ZCwgJnNiKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6
ZSk7Ci0gICAgaWYgKHJlcyB8fCAhc2l6ZSkKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShmZCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQs
IE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0KLSAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2Fj
aGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoYnVmZmVyLCBzaXplKTsK
KyAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hl
ZEJ5dGVjb2RlOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlKSk7CiAKICAgICBKU0M6OlZNJiB2
bSA9IFttX3ZpcnR1YWxNYWNoaW5lIHZtXTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29k
ZSA9IFtzZWxmIHNvdXJjZUNvZGVdOwpAQCAtMjkxLDcgKzI4OCw3IEBAIHN0YXRpYyBib29sIHZh
bGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgoTlNVUkwqIGNhY2hlUGF0aCwgTlNFcnJvcioqIGVycm9y
KQogCiAgICAgaWYgKGNhY2hlRXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIG1fY2FjaGVkQnl0
ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoKTsKLSAgICAgICAgZnRydW5jYXRl
KGZkLCAwKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZkLCAwKTsKICAgICAg
ICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJVbmFibGUgdG8gZ2VuZXJhdGUgYnl0ZWNvZGUgZm9yIHRo
aXMgSlNTY3JpcHQgYmVjYXVzZTogIiwgY2FjaGVFcnJvci5tZXNzYWdlKCkpOwogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU0
M2JiNmJmY2ExLi5iYTJkZGEzOTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjI0LDcgKzIyNCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGlmIChXVEZfT1NfTUFD
X09TX1gpCiAgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgYmFzaCAtYyAiZGF0ZSArJyVzJyIg
T1VUUFVUX1ZBUklBQkxFIEJVSUxEX1RJTUUgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BB
Q0UpCiBlbHNlICgpCi0gICAgc2V0KEJVSUxEX1RJTUUgMCkKKyAgICBzdHJpbmcoVElNRVNUQU1Q
IEJVSUxEX1RJTUUgIiVzIikKIGVuZGlmICgpCiAKIGZpbGUoV1JJVEUgJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9CeXRlY29kZUNhY2hlVmVyc2lvbi5oICIjZGVmaW5lIEpT
Q19CWVRFQ09ERV9DQUNIRV9WRVJTSU9OICR7QlVJTERfVElNRX1cbiIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzZTAwN2JiNzY4MC4uZWJhMzAxNTkxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNl
IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5OTc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBieXRlY29kZSBjYWNoZSB0byB1c2UgcGxhdGZvcm0gZ2VuZXJpYyBGaWxlU3lz
dGVtIGNhbGxzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZVBh
eWxvYWQuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVQYXlsb2FkLmg6CisgICAgICAgICog
cnVudGltZS9DYWNoZWRCeXRlY29kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1l
L0NvZGVDYWNoZS5jcHA6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5o
OgorCiAyMDE5LTA3LTA4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW1BvaW50ZXIgRXZlbnRzXSBFbmFibGUgb25seSBvbiB0aGUgbW9zdCByZWNlbnQgdmVy
c2lvbiBvZiB0aGUgc3VwcG9ydGVkIGlPUyBmYW1pbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXgg
ZDRmYTIyMmM3MjEuLjc0NjUyYTIwY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODUsNiAr
ODUsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMTAwMyw3ICsx
MDA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRDYWNoZWRCeXRlY29kZSgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewotI2lmIE9TKERBUldJTikKICAgICAgICAgaWYgKCFjYWNoZUVuYWJs
ZWQoKSB8fCAhbV9jYWNoZWRCeXRlY29kZSB8fCAhbV9jYWNoZWRCeXRlY29kZS0+aGFzVXBkYXRl
cygpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDEyLDMyICsxMDEyLDMzIEBAIHB1Ymxp
YzoKICAgICAgICAgfSk7CiAKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gY2FjaGVQYXRoKCk7
Ci0gICAgICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19DUkVBVCB8
IE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDY2Nik7Ci0gICAg
ICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRM
b2NrRmlsZShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSwge0ZpbGVT
eXN0ZW06OkZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlLCBGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU6
Ok5vbmJsb2NraW5nfSk7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
ZCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBjbG9zZUZEID0gbWFrZVNj
b3BlRXhpdChbJl0gewotICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgRmlsZVN5
c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZkKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgc3Ry
dWN0IHN0YXQgc2I7Ci0gICAgICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNiKTsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3NpemUpOwotICAgICAgICBp
ZiAocmVzIHx8IHNpemUgIT0gbV9jYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7CisgICAgICAgIGxv
bmcgbG9uZyBmaWxlU2l6ZTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShm
ZCwgZmlsZVNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpemVfdCBjYWNo
ZUZpbGVTaXplOworICAgICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU2l6ZSwgY2Fj
aGVGaWxlU2l6ZSkgfHwgY2FjaGVGaWxlU2l6ZSAhPSBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBieXRlY29kZSBjYWNoZSBoYXMgYWxyZWFkeSBiZWVuIHVw
ZGF0ZWQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmdHJ1
bmNhdGUoZmQsIG1fY2FjaGVkQnl0ZWNvZGUtPnNpemVGb3JVcGRhdGUoKSkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZkLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplRm9y
VXBkYXRlKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fY2FjaGVkQnl0ZWNv
ZGUtPmNvbW1pdFVwZGF0ZXMoWyZdIChvZmZfdCBvZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplKSB7Ci0gICAgICAgICAgICBvZmZfdCByZXN1bHQgPSBsc2VlayhmZCwgb2Zmc2V0
LCBTRUVLX1NFVCk7CisgICAgICAgICAgICBsb25nIGxvbmcgcmVzdWx0ID0gRmlsZVN5c3RlbTo6
c2Vla0ZpbGUoZmQsIG9mZnNldCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmlu
Zyk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ICE9IC0xKTsKLSAg
ICAgICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHdyaXRl
KGZkLCBkYXRhLCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGJ5
dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNpemUpOwogICAgICAgICB9KTsKLSNlbmRpZgog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTEwNDYsMTQgKzEwNDcsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4obnVsbHB0cik7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9w
dGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKLSAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gc291cmNl
T3JpZ2luKCkuc3RyaW5nKCk7Ci0gICAgICAgIGZpbGVuYW1lLnJlcGxhY2UoJy8nLCAnXycpOwot
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhjYWNoZVBhdGgsICcvJywgc291cmNlKCkudG9TdHJp
bmcoKS5oYXNoKCksICctJywgZmlsZW5hbWUsICIuYnl0ZWNvZGUtY2FjaGUiKTsKKyAgICAgICAg
U3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoc291cmNlT3Jp
Z2luKCkuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgbWFrZVN0cmluZyhzb3VyY2UoKS50b1N0cmluZygpLmhh
c2goKSwgJy0nLCBmaWxlbmFtZSwgIi5ieXRlY29kZS1jYWNoZSIpKTsKICAgICB9CiAKICAgICB2
b2lkIGxvYWRCeXRlY29kZSgpIGNvbnN0CiAgICAgewotI2lmIE9TKERBUldJTikKICAgICAgICAg
aWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTA2MSwyNSAr
MTA2MCwyMSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4KCku
ZGF0YSgpLCBPX1JET05MWSB8IE9fU0hMT0NLIHwgT19OT05CTE9DSyk7Ci0gICAgICAgIGlmIChm
ZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShm
aWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkLCB7RmlsZVN5c3RlbTo6Rmls
ZUxvY2tNb2RlOjpTaGFyZWQsIEZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmd9
KTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZkKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7
Ci0gICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tB
bmRDbG9zZUZpbGUoZmQpOwogICAgICAgICB9KTsKIAotICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsK
LSAgICAgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwotICAgICAgICBzaXplX3Qgc2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6ZSk7Ci0gICAgICAgIGlmIChyZXMgfHwgIXNp
emUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgc3VjY2VzczsKKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmQsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKIAotICAgICAgICB2b2lkKiBidWZm
ZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsK
LSAgICAgICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAgICAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBDYWNoZWRC
eXRlY29kZTo6Y3JlYXRlKGJ1ZmZlciwgc2l6ZSk7Ci0jZW5kaWYKKworICAgICAgICBtX2NhY2hl
ZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSk7CiAgICAgfQogCiAgICAgU2hlbGxTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFVSTCYmIHVybCwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNl
VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5
bG9hZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3Bw
CmluZGV4IDhjM2U4NWIzOWMwLi5jZGRiODQ4Njc3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwCkBAIC0zMiwxMiArMzIsMTAgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLSNpZiAhT1MoV0lORE9XUykKLUNhY2hlUGF5bG9hZCBDYWNoZVBheWxv
YWQ6Om1ha2VNYXBwZWRQYXlsb2FkKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQorQ2FjaGVQYXls
b2FkIENhY2hlUGF5bG9hZDo6bWFrZU1hcHBlZFBheWxvYWQoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBkYXRhKQogewotICAgIHJldHVybiBDYWNoZVBheWxvYWQodHJ1ZSwgZGF0YSwgc2l6
ZSk7CisgICAgcmV0dXJuIENhY2hlUGF5bG9hZCh0cnVlLCBkYXRhLmxlYWtIYW5kbGUoKSwgZGF0
YS5zaXplKCkpOwogfQotI2VuZGlmCiAKIENhY2hlUGF5bG9hZCBDYWNoZVBheWxvYWQ6Om1ha2VN
YWxsb2NQYXlsb2FkKE1hbGxvY1B0cjx1aW50OF90PiYmIGRhdGEsIHNpemVfdCBzaXplKQogewpA
QCAtNzksNyArNzcsNyBAQCB2b2lkIENhY2hlUGF5bG9hZDo6ZnJlZURhdGEoKQogI2lmICFPUyhX
SU5ET1dTKQogICAgICAgICBtdW5tYXAobV9kYXRhLCBtX3NpemUpOwogI2Vsc2UKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgVW5tYXBWaWV3T2ZGaWxlKG1f
ZGF0YSk7CiAjZW5kaWYKICAgICB9IGVsc2UKICAgICAgICAgZmFzdEZyZWUobV9kYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmgKaW5kZXggZTA0OGYz
MTkzN2MuLjdlYWI1ODk3ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZVBheWxvYWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZVBheWxvYWQuaApAQCAtMjUsMTUgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFsbG9jUHRyLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWNoZVBheWxvYWQgewogcHVibGljOgotI2lmICFPUyhX
SU5ET1dTKQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWNoZVBheWxvYWQgbWFrZU1h
cHBlZFBheWxvYWQodm9pZCosIHNpemVfdCk7Ci0jZW5kaWYKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ2FjaGVQYXlsb2FkIG1ha2VNYXBwZWRQYXlsb2FkKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWNoZVBheWxvYWQg
bWFrZU1hbGxvY1BheWxvYWQoTWFsbG9jUHRyPHVpbnQ4X3Q+JiYsIHNpemVfdCk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIENhY2hlUGF5bG9hZCBtYWtlRW1wdHlQYXlsb2FkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRlY29kZS5oCmluZGV4
IDE1Y2FiM2MwNDcwLi5kNzU2MTM5NTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRCeXRlY29kZS5oCkBAIC00NiwxMiArNDYsMTAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1h
a2VFbXB0eVBheWxvYWQoKSkpOwogICAgIH0KIAotI2lmICFPUyhXSU5ET1dTKQotICAgIHN0YXRp
YyBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgTGVh
ZkV4ZWN1dGFibGVNYXAmJiBsZWFmRXhlY3V0YWJsZXMgPSB7IH0pCisgICAgc3RhdGljIFJlZjxD
YWNoZWRCeXRlY29kZT4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSwg
TGVhZkV4ZWN1dGFibGVNYXAmJiBsZWFmRXhlY3V0YWJsZXMgPSB7IH0pCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1ha2VN
YXBwZWRQYXlsb2FkKGRhdGEsIHNpemUpLCBXVEZNb3ZlKGxlYWZFeGVjdXRhYmxlcykpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkQnl0ZWNvZGUoQ2FjaGVQYXlsb2FkOjpt
YWtlTWFwcGVkUGF5bG9hZChXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZShsZWFmRXhlY3V0YWJsZXMp
KSk7CiAgICAgfQotI2VuZGlmCiAKICAgICBzdGF0aWMgUmVmPENhY2hlZEJ5dGVjb2RlPiBjcmVh
dGUoTWFsbG9jUHRyPHVpbnQ4X3Q+JiYgZGF0YSwgc2l6ZV90IHNpemUsIExlYWZFeGVjdXRhYmxl
TWFwJiYgbGVhZkV4ZWN1dGFibGVzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA2ZTgzYTI4NDRjZS4uNmZlNTU1MDU0MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTg4
LDcgKzg4LDcgQEAgcHVibGljOgogICAgICAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7CiAgICAgfTsK
IAotICAgIEVuY29kZXIoVk0mIHZtLCBpbnQgZmQgPSAtMSkKKyAgICBFbmNvZGVyKFZNJiB2bSwg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkID0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgOiBtX3ZtKHZtKQogICAgICAgICAsIG1fZmQoZmQp
CiAgICAgICAgICwgbV9iYXNlT2Zmc2V0KDApCkBAIC0xNTIsMTIgKzE1Miw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBtX2N1cnJlbnRQYWdlLT5hbGln
bkVuZCgpOwogCi0gICAgICAgIGlmIChtX2ZkICE9IC0xKSB7Ci0jaWYgIU9TKFdJTkRPV1MpCisg
ICAgICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fZmQpKSB7CiAgICAgICAgICAg
ICByZXR1cm4gcmVsZWFzZU1hcHBlZChlcnJvcik7Ci0jZWxzZQotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgc2l6
ZV90IHNpemUgPSBtX2Jhc2VPZmZzZXQgKyBtX2N1cnJlbnRQYWdlLT5zaXplKCk7CkBAIC0xNzIs
MTcgKzE2OCwxNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotI2lmICFPUyhXSU5ET1dT
KQogICAgIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gcmVsZWFzZU1hcHBlZChCeXRlY29kZUNhY2hl
RXJyb3ImIGVycm9yKQogICAgIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSBtX2Jhc2VPZmZzZXQg
KyBtX2N1cnJlbnRQYWdlLT5zaXplKCk7Ci0gICAgICAgIGlmIChmdHJ1bmNhdGUobV9mZCwgc2l6
ZSkpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUobV9mZCwgc2l6ZSkp
IHsKICAgICAgICAgICAgIGVycm9yID0gQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9y
KGVycm5vKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogbV9wYWdlcykgewotICAgICAgICAgICAgc3NpemVf
dCBieXRlc1dyaXR0ZW4gPSB3cml0ZShtX2ZkLCBwYWdlLmJ1ZmZlcigpLCBwYWdlLnNpemUoKSk7
CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
bV9mZCwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGFnZS5idWZmZXIoKSksIHBhZ2Uuc2l6ZSgp
KTsKICAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEpIHsKICAgICAgICAgICAgICAg
ICBlcnJvciA9IEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcihlcnJubyk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQsMTUgKzE4OSwxNSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCogYnVmZmVyID0gbW1h
cChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBtX2ZkLCAwKTsKLSAgICAg
ICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgIGJvb2wgc3VjY2VzczsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEobV9mZCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgICAgICBpZiAo
IXN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGVycm9yID0gQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFu
ZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIENhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoYnVmZmVyLCBzaXplLCBX
VEZNb3ZlKG1fbGVhZkV4ZWN1dGFibGVzKSk7CisgICAgICAgIHJldHVybiBDYWNoZWRCeXRlY29k
ZTo6Y3JlYXRlKFdURk1vdmUobWFwcGVkRmlsZURhdGEpLCBXVEZNb3ZlKG1fbGVhZkV4ZWN1dGFi
bGVzKSk7CiAgICAgfQotI2VuZGlmCiAKICAgICBjbGFzcyBQYWdlIHsKICAgICBwdWJsaWM6CkBA
IC0yNzAsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBWTSYgbV92bTsKLSAgICBp
bnQgbV9mZDsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9mZDsKICAgICBw
dHJkaWZmX3QgbV9iYXNlT2Zmc2V0OwogICAgIFBhZ2UqIG1fY3VycmVudFBhZ2U7CiAgICAgVmVj
dG9yPFBhZ2U+IG1fcGFnZXM7CkBAIC0yMzc2LDcgKzIzNzEsNyBAQCB2b2lkIGVuY29kZUNvZGVC
bG9jayhFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVu
bGlua2VkQwogICAgIGVudHJ5LT5lbmNvZGUoZW5jb2RlciwgeyBrZXksIGpzQ2FzdDxjb25zdCBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqPihjb2RlQmxvY2spIH0pOwogfQogCi1SZWZQdHI8Q2FjaGVk
Qnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtl
eSwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGZkLCBCeXRlY29kZUNh
Y2hlRXJyb3ImIGVycm9yKQorUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2so
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVD
YWNoZUVycm9yJiBlcnJvcikKIHsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGNv
ZGVCbG9jay0+Y2xhc3NJbmZvKHZtKTsKIApAQCAtMjM5NCw3ICsyMzg5LDcgQEAgUmVmUHRyPENh
Y2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5
JiBrZXksIGNvbnN0IFUKIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrKQogewogICAgIEJ5dGVjb2RlQ2FjaGVFcnJvciBlcnJvcjsKLSAgICByZXR1cm4g
ZW5jb2RlQ29kZUJsb2NrKHZtLCBrZXksIGNvZGVCbG9jaywgLTEsIGVycm9yKTsKKyAgICByZXR1
cm4gZW5jb2RlQ29kZUJsb2NrKHZtLCBrZXksIGNvZGVCbG9jaywgRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSwgZXJyb3IpOwogfQogCiBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+
IGVuY29kZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgKaW5kZXggMWI2MmQ4ZDQ2Y2IuLjA1
Y2IxYjE2ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogfTsKIAogSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VD
b2RlS2V5JiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqKTsKLUpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiwgY29uc3QgU291cmNlQ29k
ZUtleSYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKiwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJy
b3ImKTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29k
ZUJsb2NrKFZNJiwgY29uc3QgU291cmNlQ29kZUtleSYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2Nr
KiwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNhY2hlRXJyb3Im
KTsKIAogVW5saW5rZWRDb2RlQmxvY2sqIGRlY29kZUNvZGVCbG9ja0ltcGwoVk0mLCBjb25zdCBT
b3VyY2VDb2RlS2V5JiwgUmVmPENhY2hlZEJ5dGVjb2RlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDg0Mjc2OGUzMDM0Li4yNmEyMzdiYzM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0y
MjUsNyArMjI1LDcgQEAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZE1v
ZHVsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUMKICAgICByZXR1cm4gc291cmNl
Q29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNlQ29kZSwgU291cmNlQ29kZVR5
cGU6Ok1vZHVsZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHsgfSk7CiB9CiAKLVJlZlB0
cjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mIHZtLCBVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUNvZGVUeXBl
IGNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRN
b2RlIHNjcmlwdE1vZGUsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvciwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQorUmVmUHRyPENhY2hl
ZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29kZVR5cGUgY29kZVR5
cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNhY2hl
RXJyb3ImIGVycm9yLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUpCiB7CiAgICAgcmV0dXJuIGVuY29kZUNvZGVCbG9jayh2bSwKICAgICAgICAgc291cmNl
Q29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNlLCBjb2RlVHlwZSwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlKSwgY29kZUJsb2NrLCBmZCwgZXJy
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCBlMjA3
MWQzOWRkOC4uN2MzN2FiMDc5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5oCkBAIC0zMTgsNyArMzE4LDcgQEAgcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2Vk
Q29kZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclMKIH0K
IAogdm9pZCB3cml0ZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNvdXJjZUNvZGVLZXkmLCBjb25zdCBT
b3VyY2VDb2RlVmFsdWUmKTsKLVJlZlB0cjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNv
ZGUoVk0mLCBVbmxpbmtlZENvZGVCbG9jayosIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VDb2Rl
VHlwZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIGludCBmZCwgQnl0
ZWNvZGVDYWNoZUVycm9yJiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOworUmVmUHRy
PENhY2hlZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYsIFVubGlua2VkQ29kZUJsb2Nr
KiwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUs
IEpTUGFyc2VyU2NyaXB0TW9kZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBC
eXRlY29kZUNhY2hlRXJyb3ImLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPik7CiBTb3Vy
Y2VDb2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkUHJvZ3JhbShWTSYsIGNvbnN0IFNv
dXJjZUNvZGUmKTsKIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRNb2R1
bGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggZGJmZjE3OGRlNmIuLjAwYTE1Yzk3OWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtOTIsNyAr
OTIsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgIHJldHVybiB0cnVlOwogfQogCi1S
ZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3Ip
CitSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6
Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBSZWZQdHI8
Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLAogICAgIHJldHVybiBzZXJpYWxpemVCeXRlY29kZSh2bSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNvdXJjZSwgU291cmNlQ29kZVR5cGU6OlByb2dyYW1UeXBlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBmZCwgZXJyb3IsIHsgfSk7CiB9CiAKLVJlZlB0cjxDYWNoZWRCeXRl
Y29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yKQorUmVmUHRyPENhY2hlZEJ5
dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2RlQ2FjaGVF
cnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJp
bmdUYWJsZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApp
bmRleCA4YTk3YzE3MTIyNC4uYjFlOGUyOWI1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNhbGxE
YXRhLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDMs
OCArNDQsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29uc3Qg
U291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNr
U3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24g
PSAwKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRl
KiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiAKLUpTX0VYUE9SVF9QUklWQVRF
IFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImKTsKLUpTX0VYUE9SVF9Q
UklWQVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOworSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29k
ZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPENhY2hl
ZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7
CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbik7CiBpbmxpbmUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1
ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBjYTQ2NjYyNzEzMC4uNWUxYmIwNWFhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTktMDctMTIgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisg
ICAgICAgIEJ5dGVjb2RlIGNhY2hlIHNob3VsZCB1c2UgRmlsZVN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzU5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNy
ZWF0aW5nIE1hcHBlZEZpbGVEYXRhIGZyb20gYSBwcmVleGlzdGluZyBmaWxlIGhhbmRsZQorICAg
ICAgICBmb3IgdXNlIHdpdGggbG9ja2VkIGZpbGVzLiBBbHNvIHN1cHBvcnQgY3JlYXRpbmcgTWFw
cGVkRmlsZURhdGEKKyAgICAgICAgd2l0aCBlaXRoZXIgcHJpdmF0ZSBvciBzaGFyZWQgbWFwcGlu
Z3MuCisKKyAgICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIEF2b2lkIEFTU0VSVCB3aXRo
IHJldHVybmluZyBhIExhenlOZXZlckRlc3Ryb3llZCBvYmplY3QgdGhhdCBoYXNuJ3QgYmVlbiBj
cmVhdGVkLgorCisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgorICAgICAg
ICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIEFkZCB0cnVuY2F0ZUZpbGUg
aW1wbGVtZW50YXRpb25zLgorCiAyMDE5LTA3LTA4ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMu
cmVpZEBzb255LmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgTWFwcGVkRmlsZURhdGEgZm9yIFdp
bmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTc1NDI5YmFkMDkuLjg2YTY1ODczYzVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNDAsNiArNDAsMTEgQEAKICNpbmNsdWRlIDx1bmlzdGQu
aD4KICNlbmRpZgogCisjaWYgVVNFKEdMSUIpCisjaW5jbHVkZSA8Z2lvL2dmaWxlZGVzY3JpcHRv
cmJhc2VkLmg+CisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYg
ewogCiBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwgewpAQCAtMjgzLDQ2ICsyODgsNTAgQEAgTWFw
cGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCiAgICAgbXVubWFwKG1fZmlsZURhdGEsIG1f
ZmlsZVNpemUpOwogfQogCi1NYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKK01hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxl
RGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBNYXBwZWRGaWxlTW9kZSBtb2RlLCBib29sJiBz
dWNjZXNzKQogewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZVBhdGgpOwotICAgIGludCBmZCA9ICFmc1JlcC5pc051bGwoKSA/IG9wZW4oZnNSZXAuZGF0
YSgpLCBPX1JET05MWSkgOiAtMTsKLSAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIGZkID0gb3BlbkZpbGUo
ZmlsZVBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisKKyAgICBzdWNjZXNzID0gbWFwRmlsZUhh
bmRsZShmZCwgbW9kZSk7CisgICAgY2xvc2VGaWxlKGZkKTsKK30KKworYm9vbCBNYXBwZWRGaWxl
RGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxl
TW9kZSBtb2RlKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgZmQ7CisjaWYgVVNFKEdMSUIpCisgICAgYXV0byogaW5w
dXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRs
ZSkpOworICAgIGZkID0gZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVND
UklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSk7CisjZWxzZQorICAgIGZkID0gaGFuZGxlOworI2Vu
ZGlmCiAKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKICAgICBpZiAoZnN0YXQoZmQsICZmaWxl
U3RhdCkpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHVuc2ln
bmVkIHNpemU7CiAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0YXQuc3Rfc2l6ZSwg
c2l6ZSkpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICgh
c2l6ZSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZvaWQqIGRh
dGEgPSBtbWFwKDAsIHNpemUsIFBST1RfUkVBRCwgTUFQX0ZJTEUgfCBNQVBfU0hBUkVELCBmZCwg
MCk7Ci0gICAgY2xvc2UoZmQpOworICAgIHZvaWQqIGRhdGEgPSBtbWFwKDAsIHNpemUsIFBST1Rf
UkVBRCwgTUFQX0ZJTEUgfCAobW9kZSA9PSBNYXBwZWRGaWxlTW9kZTo6U2hhcmVkID8gTUFQX1NI
QVJFRCA6IE1BUF9QUklWQVRFKSwgZmQsIDApOwogCiAgICAgaWYgKGRhdGEgPT0gTUFQX0ZBSUxF
RCkgewotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIG1fZmlsZURh
dGEgPSBkYXRhOwogICAgIG1fZmlsZVNpemUgPSBzaXplOworICAgIHJldHVybiB0cnVlOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCAzMmZlNzZkZjQwMC4uNmY0NTUwMzE4MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmgKQEAgLTk2LDYgKzk2LDExIEBAIGVudW0gY2xhc3MgRmlsZUxvY2tNb2Rl
IHsKICAgICBOb25ibG9ja2luZyA9IDEgPDwgMiwKIH07CiAKK2VudW0gY2xhc3MgTWFwcGVkRmls
ZU1vZGUgeworICAgIFNoYXJlZCwKKyAgICBQcml2YXRlLAorfTsKKwogZW51bSBjbGFzcyBTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwpAQCAtMTM4LDcgKzE0Myw3IEBAIFdURl9F
WFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBGaWxlT3Blbk1vZGUpCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlJik7CiAvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20g
dGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCiBX
VEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwg
bG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOwotYm9vbCB0cnVuY2F0ZUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwog
Ly8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAt
MSBvdGhlcndpc2UuCiBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAvLyBSZXR1cm5zIG51
bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lz
ZS4KQEAgLTE5NSw3ICsyMDAsOCBAQCBjbGFzcyBNYXBwZWRGaWxlRGF0YSB7CiBwdWJsaWM6CiAg
ICAgTWFwcGVkRmlsZURhdGEoKSB7IH0KICAgICBNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0
YSYmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vzcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBl
ZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIE1hcHBlZEZpbGVNb2RlLCBib29sJiBz
dWNjZXNzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEoUGxhdGZvcm1G
aWxlSGFuZGxlLCBNYXBwZWRGaWxlTW9kZSwgYm9vbCYgc3VjY2Vzcyk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOwogICAgIE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRv
cj0oTWFwcGVkRmlsZURhdGEmJik7CiAKQEAgLTIwMywxMSArMjA5LDIwIEBAIHB1YmxpYzoKICAg
ICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9maWxlRGF0YTsgfQogICAgIHVu
c2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTaXplOyB9CiAKKyAgICB2b2lkKiBs
ZWFrSGFuZGxlKCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2ZpbGVEYXRhLCBudWxscHRyKTsg
fQorCiBwcml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1hcEZpbGVIYW5kbGUo
UGxhdGZvcm1GaWxlSGFuZGxlLCBNYXBwZWRGaWxlTW9kZSk7CisKICAgICB2b2lkKiBtX2ZpbGVE
YXRhIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07CiB9OwogCitp
bmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIE1hcHBlZEZpbGVNb2RlIG1vZGUsIGJvb2wmIHN1Y2Nlc3MpCit7CisgICAgc3VjY2Vz
cyA9IG1hcEZpbGVIYW5kbGUoaGFuZGxlLCBtb2RlKTsKK30KKwogaW5saW5lIE1hcHBlZEZpbGVE
YXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQogICAgIDogbV9maWxl
RGF0YShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURhdGEsIG51bGxwdHIpKQogICAgICwgbV9m
aWxlU2l6ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZVNpemUsIDApKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVVVJRC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAppbmRleCA4
NTk2OGJmNTkxMS4uMTVjYTAwYTcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCkBAIC02Niw4ICs2Niw4IEBAIFN0cmlu
ZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKIAogU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0
cmluZygpCiB7Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJvb3RTZXNz
aW9uVVVJRDsKICNpZiBPUyhEQVJXSU4pCisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGJvb3RTZXNzaW9uVVVJRDsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbXSB7CiAgICAgICAgIHNpemVfdCB1dWlk
TGVuZ3RoID0gMzc7CkBAIC03Niw4ICs3NiwxMCBAQCBTdHJpbmcgYm9vdFNlc3Npb25VVUlEU3Ry
aW5nKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYm9vdFNlc3Npb25VVUlELmNvbnN0
cnVjdChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odXVpZCksIHV1aWRMZW5ndGggLSAxKTsKICAg
ICB9KTsKLSNlbmRpZgogICAgIHJldHVybiBib290U2Vzc2lvblVVSUQ7CisjZWxzZQorICAgIHJl
dHVybiBTdHJpbmcoKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93
dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggOTI0ZmQ3ZGZjNTUuLmM0YzJjMDZmMWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzkzLDYgKzM5Mywx
MSBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBs
b25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogICAgIHJldHVybiBnX3NlZWthYmxlX3RlbGwo
R19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRs
ZSkpKSk7CiB9CiAKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIGdfc2Vla2FibGVfdHJ1bmNhdGUoR19T
RUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUp
KSksIG9mZnNldCwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKIGludCB3cml0ZVRvRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewog
ICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApp
bmRleCA1OGM5MzQ0ODA4ZS4uMTBjMmNhNDNlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKQEAgLTQ3MCw2ICs0NzAsMTQgQEAgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8KICAg
ICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBhcnQ7CiB9CiAKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgRklMRV9F
TkRfT0ZfRklMRV9JTkZPIGVvZkluZm87CisgICAgZW9mSW5mby5FbmRPZkZpbGUuUXVhZFBhcnQg
PSBvZmZzZXQ7CisKKyAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxl
LCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihGSUxFX0VORF9PRl9GSUxFX0lO
Rk8pKTsKK30KKwogaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpCkBAIC01OTUsMzYgKzYwMywzOCBAQCBNYXBwZWRGaWxlRGF0YTo6fk1hcHBlZEZpbGVE
YXRhKCkKICAgICBVbm1hcFZpZXdPZkZpbGUobV9maWxlRGF0YSk7CiB9CiAKLU1hcHBlZEZpbGVE
YXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sJiBzdWNjZXNz
KQorTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IE1hcHBlZEZpbGVNb2RlIG1vZGUsIGJvb2wmIHN1Y2Nlc3MpCiB7Ci0gICAgc3VjY2VzcyA9IGZh
bHNlOwogICAgIGF1dG8gZmlsZSA9IENyZWF0ZUZpbGUoZmlsZVBhdGgud2lkZUNoYXJhY3RlcnMo
KS5kYXRhKCksIEdFTkVSSUNfUkVBRCwgMCwgbnVsbHB0ciwgT1BFTl9FWElTVElORywgRklMRV9B
VFRSSUJVVEVfTk9STUFMLCBudWxscHRyKTsKLSAgICBpZiAoZmlsZSA9PSBJTlZBTElEX0hBTkRM
RV9WQUxVRSkKLSAgICAgICAgcmV0dXJuOworCisgICAgc3VjY2VzcyA9IG1hcEZpbGVIYW5kbGUo
ZmlsZSwgbW9kZSk7CisgICAgY2xvc2VGaWxlKGZpbGUpOworfQorCitib29sIE1hcHBlZEZpbGVE
YXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE1hcHBlZEZpbGVN
b2RlKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBsb25nIGxvbmcgc2l6ZTsKLSAgICBpZiAoIWdldEZpbGVTaXplKGZpbGUs
IHNpemUpIHx8IHNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIHx8IHNp
emUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKG1fZmlsZVNpemUpPjo6bWF4KCkpIHsK
LSAgICAgICAgQ2xvc2VIYW5kbGUoZmlsZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWdl
dEZpbGVTaXplKGhhbmRsZSwgc2l6ZSkgfHwgc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkgfHwgc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUobV9maWxl
U2l6ZSk+OjptYXgoKSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYg
KCFzaXplKSB7Ci0gICAgICAgIENsb3NlSGFuZGxlKGZpbGUpOwotICAgICAgICBzdWNjZXNzID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBhdXRvIG1hcHBpbmcgPSBDcmVhdGVGaWxlTWFwcGluZyhmaWxlLCBudWxscHRyLCBQQUdFX1JF
QURPTkxZLCAwLCAwLCBudWxscHRyKTsKLSAgICBDbG9zZUhhbmRsZShmaWxlKTsKKyAgICBhdXRv
IG1hcHBpbmcgPSBDcmVhdGVGaWxlTWFwcGluZyhoYW5kbGUsIG51bGxwdHIsIFBBR0VfUkVBRE9O
TFksIDAsIDAsIG51bGxwdHIpOwogICAgIGlmICghbWFwcGluZykKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2ZpbGVEYXRhID0gTWFwVmlld09mRmlsZSht
YXBwaW5nLCBGSUxFX01BUF9SRUFELCAwLCAwLCBzaXplKTsKICAgICBDbG9zZUhhbmRsZShtYXBw
aW5nKTsKICAgICBpZiAoIW1fZmlsZURhdGEpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIG1fZmlsZVNpemUgPSBzaXplOwotICAgIHN1Y2Nlc3MgPSB0cnVlOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDRlMWUyNDk5Y2ZiLi4wNTRiZGVhODIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNv
bT4KKworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNlIEZpbGVTeXN0ZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTc1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcDoKKwogMjAxOS0wNy0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbmFibGUgdG8gcGFzdGUgZnJvbSBOb3RlcyBpbnRvIEV4
Y2VsIDM2NSBzcHJlYWRzaGVldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKaW5kZXggYmUwMTQ5YTRhNmUuLjYxZmQ3YzQ4NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQogewogICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNzKTsK
KyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgbWFwcGluZ1N1Y2Nlc3MpOwogCiAg
ICAgaWYgKCFtYXBwaW5nU3VjY2VzcykKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ODNlNDU4MzczOC4uMDRiNGVkMTM0ZTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxOS0wNy0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+
CisKKyAgICAgICAgQnl0ZWNvZGUgY2FjaGUgc2hvdWxkIHVzZSBGaWxlU3lzdGVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorCiAyMDE5LTA3LTA4ICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LXdlYmtpdHB5OiBFeHBsaWNpdGx5
IHVzZSBQeXRob24gMi43IGxsZGIgbGlicmFyeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4MzA1NTI1NTZkZS4uZDBlNTE1MWE5OTkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC05NCw3ICs5
NCw3IEBAIHByaXZhdGU6CiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmls
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEg
bWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsKKyAg
ICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9l
eGlzdGluZ19maWxlIiksIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1Y2Nl
c3MpOwogICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghbWFwcGVk
RmlsZURhdGEpOwogfQpAQCAtMTAyLDcgKzEwMiw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
TWFwcGluZ01pc3NpbmdGaWxlKQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3Rp
bmdGaWxlKQogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVF
KHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKCEhbWFwcGVkRmlsZURhdGEpOwogICAgIEVYUEVD
VF9UUlVFKG1hcHBlZEZpbGVEYXRhLnNpemUoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRh
KSk7CkBAIC0xMTIsNyArMTEyLDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhp
c3RpbmdGaWxlKQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdFbXB0eUZp
bGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCks
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOwogICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374278</attachid>
            <date>2019-07-16 21:15:48 -0700</date>
            <delta_ts>2019-07-17 15:04:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199759-20190716211547.patch</filename>
            <type>text/plain</type>
            <size>35260</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU2NyaXB0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Njcmlw
dC5tbQppbmRleCBjZTYyYTM4MDlmYmFjN2EwZmUzMWFjZDRiNjkxMTcxOGQ2NGIyNDRhLi4zY2Mw
NDEyMWE0YTljMzJiOWEzMWEwYjFmZDJlNTJjZjczN2M0YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNTY3JpcHQubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0
ZUJ5dGVjb2RlQ2FjaGVQYXRoKE5TVVJMKiBjYWNoZVBhdGgsIE5TRXJyb3IqKiBlcnJvcikKIAog
ICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIFN0cmluZyBzeXN0ZW1QYXRoID0gZmlsZVBh
dGhVUkwuZmlsZVN5c3RlbVBhdGgoKTsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBm
aWxlRGF0YShzeXN0ZW1QYXRoLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSBmaWxlRGF0YShzeXN0ZW1QYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hh
cmVkLCBzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBjcmVhdGVF
cnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkZpbGUgYXQgcGF0aCAlQCBjb3VsZCBu
b3QgYmUgbWFwcGVkLiIsIHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KHN5c3RlbVBhdGgpXSwgZXJy
b3IpOwogCkBAIC0xNTMsMjIgKzE1MywxOSBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ5dGVjb2Rl
Q2FjaGVQYXRoKE5TVVJMKiBjYWNoZVBhdGgsIE5TRXJyb3IqKiBlcnJvcikKICAgICBpZiAoIW1f
Y2FjaGVQYXRoKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgZmQgPSBvcGVuKFttX2NhY2hl
UGF0aCBwYXRoXS5VVEY4U3RyaW5nLCBPX1JET05MWSB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywg
MDY2Nik7Ci0gICAgaWYgKGZkID09IC0xKQorICAgIGF1dG8gZmQgPSBGaWxlU3lzdGVtOjpvcGVu
QW5kTG9ja0ZpbGUoW21fY2FjaGVQYXRoIHBhdGhdLlVURjhTdHJpbmcsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6UmVhZCwge0ZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlLCBG
aWxlU3lzdGVtOjpGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nfSk7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjppc0hhbmRsZVZhbGlkKGZkKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gY2xvc2VG
RCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKLSAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBGaWxl
U3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoZmQpOwogICAgIH0pOwogCi0gICAgc3RydWN0IHN0
YXQgc2I7Ci0gICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwotICAgIHNpemVfdCBzaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKLSAgICBpZiAocmVzIHx8ICFzaXplKQor
ICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRG
aWxlKGZkLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc3VjY2Vzcyk7Cisg
ICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICB2b2lkKiBidWZmZXIgPSBt
bWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKLQotICAg
IFJlZjxKU0M6OkNhY2hlZEJ5dGVjb2RlPiBjYWNoZWRCeXRlY29kZSA9IEpTQzo6Q2FjaGVkQnl0
ZWNvZGU6OmNyZWF0ZShidWZmZXIsIHNpemUpOworICAgIFJlZjxKU0M6OkNhY2hlZEJ5dGVjb2Rl
PiBjYWNoZWRCeXRlY29kZSA9IEpTQzo6Q2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShXVEZNb3ZlKG1h
cHBlZEZpbGUpKTsKIAogICAgIEpTQzo6Vk0mIHZtID0gW21fdmlydHVhbE1hY2hpbmUgdm1dOwog
ICAgIEpTQzo6U291cmNlQ29kZSBzb3VyY2VDb2RlID0gW3NlbGYgc291cmNlQ29kZV07CkBAIC0y
OTEsNyArMjg4LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VS
TCogY2FjaGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAKICAgICBpZiAoY2FjaGVFcnJvci5pc1Zh
bGlkKCkpIHsKICAgICAgICAgbV9jYWNoZWRCeXRlY29kZSA9IEpTQzo6Q2FjaGVkQnl0ZWNvZGU6
OmNyZWF0ZSgpOwotICAgICAgICBmdHJ1bmNhdGUoZmQsIDApOworICAgICAgICBGaWxlU3lzdGVt
Ojp0cnVuY2F0ZUZpbGUoZmQsIDApOwogICAgICAgICBlcnJvciA9IG1ha2VTdHJpbmcoIlVuYWJs
ZSB0byBnZW5lcmF0ZSBieXRlY29kZSBmb3IgdGhpcyBKU1NjcmlwdCBiZWNhdXNlOiAiLCBjYWNo
ZUVycm9yLm1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTQzYmI2YmZjYTFjNTgyNTk4MTM1ZjdmZDE0YmVk
ODNmYWE1N2Y0My4uYmEyZGRhMzk1NTJiYzJkOTI4OTY0YjQwOTJiNTU3Yzk4MDNmNzQ5YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjI0LDcgKzIyNCw3IEBAIGFkZF9j
dXN0b21fY29tbWFuZCgKIGlmIChXVEZfT1NfTUFDX09TX1gpCiAgICAgZXhlY3V0ZV9wcm9jZXNz
KENPTU1BTkQgYmFzaCAtYyAiZGF0ZSArJyVzJyIgT1VUUFVUX1ZBUklBQkxFIEJVSUxEX1RJTUUg
T1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BBQ0UpCiBlbHNlICgpCi0gICAgc2V0KEJVSUxE
X1RJTUUgMCkKKyAgICBzdHJpbmcoVElNRVNUQU1QIEJVSUxEX1RJTUUgIiVzIikKIGVuZGlmICgp
CiAKIGZpbGUoV1JJVEUgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9CeXRl
Y29kZUNhY2hlVmVyc2lvbi5oICIjZGVmaW5lIEpTQ19CWVRFQ09ERV9DQUNIRV9WRVJTSU9OICR7
QlVJTERfVElNRX1cbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzZTAwN2JiNzY4MGFl
YmFlYWIzZDRjYzQ3MDg3ODVhMDY5MDUzMDBkLi45YjRjODNjYmNkMjQwZjEzMDE2ZmRkYmZlOGIz
YzdkZTFiMWRmMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAxOS0wNy0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAg
ICAgICAgQnl0ZWNvZGUgY2FjaGUgc2hvdWxkIHVzZSBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFVwZGF0ZSBieXRlY29kZSBjYWNoZSB0
byB1c2UgcGxhdGZvcm0gZ2VuZXJpYyBGaWxlU3lzdGVtIGNhbGxzLgorCisgICAgICAgICogQVBJ
L0pTU2NyaXB0Lm1tOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9DYWNoZVBheWxvYWQuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvQ2FjaGVQYXlsb2FkLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRCeXRlY29kZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2Fj
aGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgICog
cnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorCiAyMDE5LTA3LTA4ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1BvaW50ZXIgRXZlbnRzXSBFbmFi
bGUgb25seSBvbiB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGUgc3VwcG9ydGVkIGlPUyBm
YW1pbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZDRmYTIyMmM3MjFjZjRhN2U3MWFkNDc4NmY5
ODQxMTEyNDFlMTg1Mi4uNzQ2NTJhMjBjZWNmZmI0MzU4OTAxY2UzMTFlZTc3OGM0NWQxMmQ4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KICNpbmNsdWRlIDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L01vbm90b25pY1RpbWUuaD4KQEAgLTEwMDMsNyArMTAwNCw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY29tbWl0Q2FjaGVkQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSNpZiBPUyhE
QVJXSU4pCiAgICAgICAgIGlmICghY2FjaGVFbmFibGVkKCkgfHwgIW1fY2FjaGVkQnl0ZWNvZGUg
fHwgIW1fY2FjaGVkQnl0ZWNvZGUtPmhhc1VwZGF0ZXMoKSkKICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMTAxMiwzMiArMTAxMiwzMyBAQCBwdWJsaWM6CiAgICAgICAgIH0pOwogCiAgICAgICAg
IFN0cmluZyBmaWxlbmFtZSA9IGNhY2hlUGF0aCgpOwotICAgICAgICBpbnQgZmQgPSBvcGVuKGZp
bGVuYW1lLnV0ZjgoKS5kYXRhKCksIE9fQ1JFQVQgfCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0VY
TE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwotICAgICAgICBpZiAoZmQgPT0gLTEpCisgICAgICAg
IGF1dG8gZmQgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUoZmlsZW5hbWUsIEZpbGVTeXN0
ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUsIHtGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU6OkV4Y2x1
c2l2ZSwgRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZ30pOworICAgICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmQpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGF1dG8gY2xvc2VGRCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKLSAgICAgICAgICAg
IGNsb3NlKGZkKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShm
ZCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHN0cnVjdCBzdGF0IHNiOwotICAgICAgICBpbnQg
cmVzID0gZnN0YXQoZmQsICZzYik7Ci0gICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzYi5zdF9zaXplKTsKLSAgICAgICAgaWYgKHJlcyB8fCBzaXplICE9IG1fY2FjaGVk
Qnl0ZWNvZGUtPnNpemUoKSkgeworICAgICAgICBsb25nIGxvbmcgZmlsZVNpemU7CisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmQsIGZpbGVTaXplKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBzaXplX3QgY2FjaGVGaWxlU2l6ZTsKKyAgICAgICAgaWYgKCFX
VEY6OmNvbnZlcnRTYWZlbHkoZmlsZVNpemUsIGNhY2hlRmlsZVNpemUpIHx8IGNhY2hlRmlsZVNp
emUgIT0gbV9jYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYnl0
ZWNvZGUgY2FjaGUgaGFzIGFscmVhZHkgYmVlbiB1cGRhdGVkCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZnRydW5jYXRlKGZkLCBtX2NhY2hlZEJ5dGVjb2Rl
LT5zaXplRm9yVXBkYXRlKCkpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OnRydW5jYXRlRmls
ZShmZCwgbV9jYWNoZWRCeXRlY29kZS0+c2l6ZUZvclVwZGF0ZSgpKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2Zm
X3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICAgICAg
b2ZmX3QgcmVzdWx0ID0gbHNlZWsoZmQsIG9mZnNldCwgU0VFS19TRVQpOworICAgICAgICAgICAg
bG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVT
eXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0
dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih3cml0ZShmZCwgZGF0YSwgc2l6ZSkpOworICAgICAg
ICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IHN0YXRpY19jYXN0PHNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmQsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSkp
OwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9
PSBzaXplKTsKICAgICAgICAgfSk7Ci0jZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMDQ2
LDE0ICsxMDQ3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghY2FjaGVFbmFibGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIpOwogICAg
ICAgICBjb25zdCBjaGFyKiBjYWNoZVBhdGggPSBPcHRpb25zOjpkaXNrQ2FjaGVQYXRoKCk7Ci0g
ICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHNvdXJjZU9yaWdpbigpLnN0cmluZygpOwotICAgICAg
ICBmaWxlbmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
Y2FjaGVQYXRoLCAnLycsIHNvdXJjZSgpLnRvU3RyaW5nKCkuaGFzaCgpLCAnLScsIGZpbGVuYW1l
LCAiLmJ5dGVjb2RlLWNhY2hlIik7CisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0
ZW06OmVuY29kZUZvckZpbGVOYW1lKHNvdXJjZU9yaWdpbigpLnN0cmluZygpKTsKKyAgICAgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIG1h
a2VTdHJpbmcoc291cmNlKCkudG9TdHJpbmcoKS5oYXNoKCksICctJywgZmlsZW5hbWUsICIuYnl0
ZWNvZGUtY2FjaGUiKSk7CiAgICAgfQogCiAgICAgdm9pZCBsb2FkQnl0ZWNvZGUoKSBjb25zdAog
ICAgIHsKLSNpZiBPUyhEQVJXSU4pCiAgICAgICAgIGlmICghY2FjaGVFbmFibGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTEwNjEsMjUgKzEwNjAsMjEgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKGZpbGVuYW1lLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19SRE9OTFkgfCBPX1NITE9D
SyB8IE9fTk9OQkxPQ0spOwotICAgICAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgIGF1dG8gZmQg
PSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OkZpbGVP
cGVuTW9kZTo6UmVhZCwge0ZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZTo6U2hhcmVkLCBGaWxlU3lz
dGVtOjpGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nfSk7CisgICAgICAgIGlmICghRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChmZCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0
byBjbG9zZUZEID0gbWFrZVNjb3BlRXhpdChbJl0gewotICAgICAgICAgICAgY2xvc2UoZmQpOwor
ICAgICAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZkKTsKICAgICAgICAg
fSk7CiAKLSAgICAgICAgc3RydWN0IHN0YXQgc2I7Ci0gICAgICAgIGludCByZXMgPSBmc3RhdChm
ZCwgJnNiKTsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0
X3NpemUpOwotICAgICAgICBpZiAocmVzIHx8ICFzaXplKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBib29sIHN1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKGZkLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwg
c3VjY2Vzcyk7CiAKLSAgICAgICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQ
Uk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0gICAgICAgIGlmIChidWZmZXIgPT0gTUFQ
X0ZBSUxFRCkKKyAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShidWZmZXIsIHNp
emUpOwotI2VuZGlmCisKKyAgICAgICAgbV9jYWNoZWRCeXRlY29kZSA9IENhY2hlZEJ5dGVjb2Rl
OjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpOwogICAgIH0KIAogICAgIFNoZWxsU291
cmNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291
cmNlT3JpZ2luLCBVUkwmJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwg
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcAppbmRleCA4YzNlODViMzljMGZlODJlMzlh
YThjMjFmMTIyM2FiNzI2YTI0ODg4Li5mNGFiOWJjODQ4ODc0NTEzYThlNGMyMWUxNjJiOWQzNTBl
ZGRlMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBh
eWxvYWQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9h
ZC5jcHAKQEAgLTMyLDEyICszMiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICFPUyhX
SU5ET1dTKQotQ2FjaGVQYXlsb2FkIENhY2hlUGF5bG9hZDo6bWFrZU1hcHBlZFBheWxvYWQodm9p
ZCogZGF0YSwgc2l6ZV90IHNpemUpCitDYWNoZVBheWxvYWQgQ2FjaGVQYXlsb2FkOjptYWtlTWFw
cGVkUGF5bG9hZChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCiB7Ci0gICAgcmV0
dXJuIENhY2hlUGF5bG9hZCh0cnVlLCBkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gQ2FjaGVQYXls
b2FkKHRydWUsIGRhdGEubGVha0hhbmRsZSgpLCBkYXRhLnNpemUoKSk7CiB9Ci0jZW5kaWYKIAog
Q2FjaGVQYXlsb2FkIENhY2hlUGF5bG9hZDo6bWFrZU1hbGxvY1BheWxvYWQoTWFsbG9jUHRyPHVp
bnQ4X3Q+JiYgZGF0YSwgc2l6ZV90IHNpemUpCiB7CkBAIC03NiwxMSArNzQsNyBAQCB2b2lkIENh
Y2hlUGF5bG9hZDo6ZnJlZURhdGEoKQogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKG1fbWFwcGVkKSB7Ci0jaWYgIU9TKFdJTkRPV1MpCi0gICAgICAgIG11bm1hcCht
X2RhdGEsIG1fc2l6ZSk7Ci0jZWxzZQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotI2VuZGlmCisgICAgICAgIEZpbGVTeXN0ZW06OnVubWFwVmlld09mRmlsZShtX2RhdGEs
IG1fc2l6ZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZhc3RGcmVlKG1fZGF0YSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5oCmluZGV4IGUwNDhmMzE5
MzdjOGMwNzc0NTEwYTg2YzY3MWY5YWM1YTI3YTYyMzEuLjdlYWI1ODk3ZjZhOThiMjNhMzgwM2Y4
MzlhMTg0MDcxZTJkNTRmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlUGF5bG9hZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlUGF5bG9hZC5oCkBAIC0yNSwxNSArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWxsb2NQdHIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhY2hlUGF5bG9hZCB7CiBwdWJsaWM6Ci0jaWYgIU9TKFdJ
TkRPV1MpCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENhY2hlUGF5bG9hZCBtYWtlTWFw
cGVkUGF5bG9hZCh2b2lkKiwgc2l6ZV90KTsKLSNlbmRpZgorICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBDYWNoZVBheWxvYWQgbWFrZU1hcHBlZFBheWxvYWQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENhY2hlUGF5bG9hZCBt
YWtlTWFsbG9jUGF5bG9hZChNYWxsb2NQdHI8dWludDhfdD4mJiwgc2l6ZV90KTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FjaGVQYXlsb2FkIG1ha2VFbXB0eVBheWxvYWQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmgKaW5kZXgg
MTVjYWIzYzA0NzBiYTBjYTA2MmQ1NTVlNDdjM2ZmZGRjOGZlZDc5Mi4uZDc1NjEzOTUzYmM1MWU1
ODBiZDQ4OTQyMTc5ZGMxOTcwMTIzYjQwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRCeXRlY29kZS5oCkBAIC00NiwxMiArNDYsMTAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1h
a2VFbXB0eVBheWxvYWQoKSkpOwogICAgIH0KIAotI2lmICFPUyhXSU5ET1dTKQotICAgIHN0YXRp
YyBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgTGVh
ZkV4ZWN1dGFibGVNYXAmJiBsZWFmRXhlY3V0YWJsZXMgPSB7IH0pCisgICAgc3RhdGljIFJlZjxD
YWNoZWRCeXRlY29kZT4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSwg
TGVhZkV4ZWN1dGFibGVNYXAmJiBsZWFmRXhlY3V0YWJsZXMgPSB7IH0pCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1ha2VN
YXBwZWRQYXlsb2FkKGRhdGEsIHNpemUpLCBXVEZNb3ZlKGxlYWZFeGVjdXRhYmxlcykpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkQnl0ZWNvZGUoQ2FjaGVQYXlsb2FkOjpt
YWtlTWFwcGVkUGF5bG9hZChXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZShsZWFmRXhlY3V0YWJsZXMp
KSk7CiAgICAgfQotI2VuZGlmCiAKICAgICBzdGF0aWMgUmVmPENhY2hlZEJ5dGVjb2RlPiBjcmVh
dGUoTWFsbG9jUHRyPHVpbnQ4X3Q+JiYgZGF0YSwgc2l6ZV90IHNpemUsIExlYWZFeGVjdXRhYmxl
TWFwJiYgbGVhZkV4ZWN1dGFibGVzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA2ZTgzYTI4NDRjZTM2MTVhYmQ5MzVmODVkNWJl
NjcyNzkzNjA2MzRlLi42ZmU1NTUwNTQwNjBhMTc5ZDA3ODA5ZDlmMDBkYThiNThiZGUwNjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04
OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcHRyZGlmZl90IG1fb2Zmc2V0OwogICAgIH07
CiAKLSAgICBFbmNvZGVyKFZNJiB2bSwgaW50IGZkID0gLTEpCisgICAgRW5jb2RlcihWTSYgdm0s
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCA9IEZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAgLCBtX2ZkKGZk
KQogICAgICAgICAsIG1fYmFzZU9mZnNldCgwKQpAQCAtMTUyLDEyICsxNTIsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbV9jdXJyZW50UGFnZS0+YWxp
Z25FbmQoKTsKIAotICAgICAgICBpZiAobV9mZCAhPSAtMSkgewotI2lmICFPUyhXSU5ET1dTKQor
ICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2ZkKSkgewogICAgICAgICAg
ICAgcmV0dXJuIHJlbGVhc2VNYXBwZWQoZXJyb3IpOwotI2Vsc2UKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIHNp
emVfdCBzaXplID0gbV9iYXNlT2Zmc2V0ICsgbV9jdXJyZW50UGFnZS0+c2l6ZSgpOwpAQCAtMTcy
LDE3ICsxNjgsMTYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSNpZiAhT1MoV0lORE9X
UykKICAgICBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IHJlbGVhc2VNYXBwZWQoQnl0ZWNvZGVDYWNo
ZUVycm9yJiBlcnJvcikKICAgICB7CiAgICAgICAgIHNpemVfdCBzaXplID0gbV9iYXNlT2Zmc2V0
ICsgbV9jdXJyZW50UGFnZS0+c2l6ZSgpOwotICAgICAgICBpZiAoZnRydW5jYXRlKG1fZmQsIHNp
emUpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKG1fZmQsIHNpemUp
KSB7CiAgICAgICAgICAgICBlcnJvciA9IEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJv
cihlcnJubyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcGFnZSA6IG1fcGFnZXMpIHsKLSAgICAgICAgICAgIHNzaXpl
X3QgYnl0ZXNXcml0dGVuID0gd3JpdGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkp
OworICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkpLCBwYWdlLnNpemUo
KSk7CiAgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7CiAgICAgICAgICAgICAg
ICAgZXJyb3IgPSBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3IoZXJybm8pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0LDE1ICsxODksMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGJ1ZmZlciA9IG1t
YXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgbV9mZCwgMCk7Ci0gICAg
ICAgIGlmIChidWZmZXIgPT0gTUFQX0ZBSUxFRCkgeworICAgICAgICBib29sIHN1Y2Nlc3M7Cisg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKG1fZmQsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKKyAgICAgICAgaWYg
KCFzdWNjZXNzKSB7CiAgICAgICAgICAgICBlcnJvciA9IEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3Rh
bmRhcmRFcnJvcihlcnJubyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQogCi0gICAgICAgIHJldHVybiBDYWNoZWRCeXRlY29kZTo6Y3JlYXRlKGJ1ZmZlciwgc2l6ZSwg
V1RGTW92ZShtX2xlYWZFeGVjdXRhYmxlcykpOworICAgICAgICByZXR1cm4gQ2FjaGVkQnl0ZWNv
ZGU6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSwgV1RGTW92ZShtX2xlYWZFeGVjdXRh
YmxlcykpOwogICAgIH0KLSNlbmRpZgogCiAgICAgY2xhc3MgUGFnZSB7CiAgICAgcHVibGljOgpA
QCAtMjcwLDcgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgVk0mIG1fdm07Ci0gICAg
aW50IG1fZmQ7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmQ7CiAgICAg
cHRyZGlmZl90IG1fYmFzZU9mZnNldDsKICAgICBQYWdlKiBtX2N1cnJlbnRQYWdlOwogICAgIFZl
Y3RvcjxQYWdlPiBtX3BhZ2VzOwpAQCAtMjM3Niw3ICsyMzcxLDcgQEAgdm9pZCBlbmNvZGVDb2Rl
QmxvY2soRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBV
bmxpbmtlZEMKICAgICBlbnRyeS0+ZW5jb2RlKGVuY29kZXIsIHsga2V5LCBqc0Nhc3Q8Y29uc3Qg
VW5saW5rZWRDb2RlQmxvY2tUeXBlKj4oY29kZUJsb2NrKSB9KTsKIH0KIAotUmVmUHRyPENhY2hl
ZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBr
ZXksIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBmZCwgQnl0ZWNvZGVD
YWNoZUVycm9yJiBlcnJvcikKK1JlZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2Nr
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2Rl
Q2FjaGVFcnJvciYgZXJyb3IpCiB7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8gPSBj
b2RlQmxvY2stPmNsYXNzSW5mbyh2bSk7CiAKQEAgLTIzOTQsNyArMjM4OSw3IEBAIFJlZlB0cjxD
YWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZUtl
eSYga2V5LCBjb25zdCBVCiBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jaykKIHsKICAgICBCeXRlY29kZUNhY2hlRXJyb3IgZXJyb3I7Ci0gICAgcmV0dXJu
IGVuY29kZUNvZGVCbG9jayh2bSwga2V5LCBjb2RlQmxvY2ssIC0xLCBlcnJvcik7CisgICAgcmV0
dXJuIGVuY29kZUNvZGVCbG9jayh2bSwga2V5LCBjb2RlQmxvY2ssIEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUsIGVycm9yKTsKIH0KIAogUmVmUHRyPENhY2hlZEJ5dGVjb2Rl
PiBlbmNvZGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCmluZGV4IDFiNjJkOGQ0NmNiOGQ4
ZGU5NzA5YWQyNjdkMmE1NWM4OGZkZjI1OTUuLjA1Y2IxYjE2ZWY0ZDllODNmNWQ2MjE1MDE3NTc1
YTJlZjk4NDg0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiB9OwogCiBKU19FWFBPUlRfUFJJVkFU
RSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNvdXJj
ZUNvZGVLZXkmLCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayopOwotSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VD
b2RlS2V5JiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVF
cnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVD
b2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VDb2RlS2V5JiwgY29uc3QgVW5saW5rZWRDb2RlQmxv
Y2sqLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJv
ciYpOwogCiBVbmxpbmtlZENvZGVCbG9jayogZGVjb2RlQ29kZUJsb2NrSW1wbChWTSYsIGNvbnN0
IFNvdXJjZUNvZGVLZXkmLCBSZWY8Q2FjaGVkQnl0ZWNvZGU+KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggODQyNzY4ZTMwMzRmMDQ4NDc4NDJk
NTU3NzA0Njc4ZTMwYWE2MjYxOC4uMjZhMjM3YmMzNmZlM2QxYThmNjUzZWU1M2IwNGVhMDU4ZjBi
N2RlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBA
IC0yMjUsNyArMjI1LDcgQEAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXpl
ZE1vZHVsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUMKICAgICByZXR1cm4gc291
cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNlQ29kZSwgU291cmNlQ29k
ZVR5cGU6Ok1vZHVsZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHsgfSk7CiB9CiAKLVJl
ZlB0cjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mIHZtLCBVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUNvZGVU
eXBlIGNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvciwgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQorUmVmUHRyPENh
Y2hlZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29kZVR5cGUgY29k
ZVR5cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUg
c2NyaXB0TW9kZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNh
Y2hlRXJyb3ImIGVycm9yLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUpCiB7CiAgICAgcmV0dXJuIGVuY29kZUNvZGVCbG9jayh2bSwKICAgICAgICAgc291
cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNlLCBjb2RlVHlwZSwgc3Ry
aWN0TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlKSwgY29kZUJsb2NrLCBmZCwg
ZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCBl
MjA3MWQzOWRkODZjYzllMzdlNWJmYjdiN2Y5NTM3ZGI4ZTEwN2M0Li43YzM3YWIwNzk4NDlkNTEz
MTViNjVlMDk1MzY4YjgwYWQ4ZWM3YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaApAQCAtMzE4LDcgKzMxOCw3IEBAIHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxp
bmtlZENvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJT
CiB9CiAKIHZvaWQgd3JpdGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VDb2RlS2V5JiwgY29u
c3QgU291cmNlQ29kZVZhbHVlJik7Ci1SZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IHNlcmlhbGl6ZUJ5
dGVjb2RlKFZNJiwgVW5saW5rZWRDb2RlQmxvY2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNl
Q29kZVR5cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBpbnQgZmQs
IEJ5dGVjb2RlQ2FjaGVFcnJvciYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+KTsKK1Jl
ZlB0cjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mLCBVbmxpbmtlZENvZGVC
bG9jayosIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VDb2RlVHlwZSwgSlNQYXJzZXJTdHJpY3RN
b2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBm
ZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOwog
U291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZFByb2dyYW0oVk0mLCBjb25z
dCBTb3VyY2VDb2RlJik7CiBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVk
TW9kdWxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGRiZmYxNzhkZTZiM2U4ZTA1NWU2NTk4ZDBj
MjU1YTgyOWUzNTM0N2IuLjAwYTE1Yzk3OWY2YzU2OWVmYTMwNmM2NDU0ZWQ0MDQwNTEzYjdkZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC05
Miw3ICs5Miw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBl
cnJvcikKK1JlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvcikKIHsKICAgICBKU0xvY2tIb2xkZXIg
bG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhy
ZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkpOwpAQCAtMTEyLDcgKzExMiw3IEBAIFJl
ZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgcmV0dXJuIHNlcmlhbGl6ZUJ5dGVjb2RlKHZtLCB1
bmxpbmtlZENvZGVCbG9jaywgc291cmNlLCBTb3VyY2VDb2RlVHlwZTo6UHJvZ3JhbVR5cGUsIHN0
cmljdE1vZGUsIHNjcmlwdE1vZGUsIGZkLCBlcnJvciwgeyB9KTsKIH0KIAotUmVmUHRyPENhY2hl
ZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3IpCitSZWZQdHI8Q2Fj
aGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVD
YWNoZUVycm9yJiBlcnJvcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRv
bVN0cmluZ1RhYmxlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCmluZGV4IDhhOTdjMTcxMjI0MDYzMzRlZTJjZGEyZmIzYjQ5NWIyNDQzYWFlZTguLmIxZThl
MjliNTAyYzc3MzBiMTNiNjMwYmMzOTdiZjkxMTYzZWIzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUg
IkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDMsOCArNDQsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29s
IGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNl
cHRpb24gPSAwKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhl
Y1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiAKLUpTX0VYUE9SVF9Q
UklWQVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0m
LCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImKTsKLUpTX0VY
UE9SVF9QUklWQVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29k
ZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOwor
SlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1C
eXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRy
PENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiwgY29uc3QgU291cmNl
Q29kZSYsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVy
cm9yJik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwg
Y29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBpbmxpbmUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEpTVmFsdWUgdGhpc1ZhbHVlID0g
SlNWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBjYTQ2NjYyNzEzMDNiNmZjYWNhNTg1MjFlZGRkNGQwN2ZlNDg4MWJm
Li5mNzY0YThkYzJjM2YzNGExYzkzOWU2NDcxYzQ0MTM5YjE1OGZhOTNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDE5LTA3LTEyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNv
bT4KKworICAgICAgICBCeXRlY29kZSBjYWNoZSBzaG91bGQgdXNlIEZpbGVTeXN0ZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTc1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3Rl
bS5jcHA6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGNyZWF0aW5nIE1hcHBlZEZpbGVEYXRhIGZyb20gYSBwcmVleGlzdGluZyBmaWxlIGhhbmRs
ZQorICAgICAgICBmb3IgdXNlIHdpdGggbG9ja2VkIGZpbGVzLiBBbHNvIHN1cHBvcnQgY3JlYXRp
bmcgTWFwcGVkRmlsZURhdGEKKyAgICAgICAgd2l0aCBlaXRoZXIgcHJpdmF0ZSBvciBzaGFyZWQg
bWFwcGluZ3MuCisKKyAgICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIEF2b2lkIEFTU0VS
VCB3aXRoIHJldHVybmluZyBhIExhenlOZXZlckRlc3Ryb3llZCBvYmplY3QgdGhhdCBoYXNuJ3Qg
YmVlbiBjcmVhdGVkLgorCisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIEFkZCB0cnVuY2F0
ZUZpbGUgaW1wbGVtZW50YXRpb25zLgorCiAyMDE5LTA3LTA4ICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgTWFwcGVkRmlsZURhdGEg
Zm9yIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTc1NDI5YmFkMDlmMTcxNTg3YzYz
ZjkzM2ExZTdjYTJkOTY1N2U5ZC4uNDMzMTI0NTQzNmU0MzQzZWQ4MDc2ZDkzN2E0YzE5NWI1MDA5
NzZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTQwLDYgKzQwLDExIEBACiAjaW5jbHVkZSA8
dW5pc3RkLmg+CiAjZW5kaWYKIAorI2lmIFVTRShHTElCKQorI2luY2x1ZGUgPGdpby9nZmlsZWRl
c2NyaXB0b3JiYXNlZC5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV1RGIHsKIAogbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKQEAgLTI3NCw1NSArMjc5LDY0
IEBAIGJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJikKIAogI2VuZGlmCiAKLSNp
ZiBIQVZFKE1NQVApCi0KIE1hcHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQogewogICAg
IGlmICghbV9maWxlRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIG11bm1hcChtX2ZpbGVEYXRh
LCBtX2ZpbGVTaXplKTsKKyAgICB1bm1hcFZpZXdPZkZpbGUobV9maWxlRGF0YSwgbV9maWxlU2l6
ZSk7CiB9CiAKLU1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBib29sJiBzdWNjZXNzKQorI2lmIEhBVkUoTU1BUCkKKworTWFwcGVkRmlsZURhdGE6
Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIE1hcHBlZEZpbGVNb2RlIG1v
ZGUsIGJvb2wmIHN1Y2Nlc3MpCiB7Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAgaW50IGZkID0gIWZzUmVwLmlzTnVsbCgpID8gb3Bl
bihmc1JlcC5kYXRhKCksIE9fUkRPTkxZKSA6IC0xOwotICAgIGlmIChmZCA8IDApIHsKLSAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8gZmQg
PSBvcGVuRmlsZShmaWxlUGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKworICAgIHN1Y2Nlc3Mg
PSBtYXBGaWxlSGFuZGxlKGZkLCBtb2RlKTsKKyAgICBjbG9zZUZpbGUoZmQpOworfQorCitib29s
IE1hcHBlZEZpbGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IE1hcHBlZEZpbGVNb2RlIG1vZGUpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBmZDsKKyNpZiBVU0UoR0xJQikKKyAg
ICBhdXRvKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19T
VFJFQU0oaGFuZGxlKSk7CisgICAgZmQgPSBnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQo
R19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKTsKKyNlbHNlCisgICAgZmQgPSBo
YW5kbGU7CisjZW5kaWYKIAogICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChmc3Rh
dChmZCwgJmZpbGVTdGF0KSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgdW5zaWduZWQgc2l6ZTsKICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU3Rh
dC5zdF9zaXplLCBzaXplKSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKCFzaXplKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgc3VjY2VzcyA9
IHRydWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IE1BUF9T
SEFSRUQsIGZkLCAwKTsKLSAgICBjbG9zZShmZCk7CisgICAgdm9pZCogZGF0YSA9IG1tYXAoMCwg
c2l6ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IChtb2RlID09IE1hcHBlZEZpbGVNb2RlOjpTaGFy
ZWQgPyBNQVBfU0hBUkVEIDogTUFQX1BSSVZBVEUpLCBmZCwgMCk7CiAKICAgICBpZiAoZGF0YSA9
PSBNQVBfRkFJTEVEKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3VjY2VzcyA9IHRydWU7CiAg
ICAgbV9maWxlRGF0YSA9IGRhdGE7CiAgICAgbV9maWxlU2l6ZSA9IHNpemU7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgdW5tYXBWaWV3T2ZGaWxlKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IHNp
emUpCit7CisgICAgcmV0dXJuICFtdW5tYXAoYnVmZmVyLCBzaXplKTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmgKaW5kZXggMzJmZTc2ZGY0MDAwNzJjZmI3NDk5YjdmZDQ4YTNhM2IxNDhiMmE0
YS4uNmFlMzg2MmVhMzNkMjBlOGZlNzM1Yzc2MmYxNjVmZmMzZTUzYmY2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaApAQCAtOTYsNiArOTYsMTEgQEAgZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgewogICAgIE5v
bmJsb2NraW5nID0gMSA8PCAyLAogfTsKIAorZW51bSBjbGFzcyBNYXBwZWRGaWxlTW9kZSB7Cisg
ICAgU2hhcmVkLAorICAgIFByaXZhdGUsCit9OworCiBlbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3MgeyBObywgWWVzIH07CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVF
eGlzdHMoY29uc3QgU3RyaW5nJik7CkBAIC0xMzgsNyArMTQzLDcgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSkKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIFdURl9FWFBPUlRf
UFJJVkFURSBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcg
b2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7Ci1ib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNh
dGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5z
IG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lz
ZS4KIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVyIG9mIGJ5
dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpAQCAtMTkx
LDExICsxOTYsMTQgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFsUGF0aChjb25zdCBT
dHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzU2FmZVRvVXNlTWVtb3J5TWFwRm9y
UGF0aChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIG1ha2VTYWZlVG9V
c2VNZW1vcnlNYXBGb3JQYXRoKGNvbnN0IFN0cmluZyYpOwogCitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCB1bm1hcFZpZXdPZkZpbGUodm9pZCogYnVmZmVyLCBzaXplX3QpOworCiBjbGFzcyBNYXBw
ZWRGaWxlRGF0YSB7CiBwdWJsaWM6CiAgICAgTWFwcGVkRmlsZURhdGEoKSB7IH0KICAgICBNYXBw
ZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFw
cGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2Vzcyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IE1hcHBlZEZpbGVNb2RlLCBib29sJiBzdWNjZXNzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
TWFwcGVkRmlsZURhdGEoUGxhdGZvcm1GaWxlSGFuZGxlLCBNYXBwZWRGaWxlTW9kZSwgYm9vbCYg
c3VjY2Vzcyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOwogICAg
IE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJik7CiAKQEAgLTIwMywx
MSArMjExLDIwIEBAIHB1YmxpYzoKICAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9maWxlRGF0YTsgfQogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Zp
bGVTaXplOyB9CiAKKyAgICB2b2lkKiBsZWFrSGFuZGxlKCkgeyByZXR1cm4gc3RkOjpleGNoYW5n
ZShtX2ZpbGVEYXRhLCBudWxscHRyKTsgfQorCiBwcml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIG1hcEZpbGVIYW5kbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBNYXBwZWRGaWxlTW9k
ZSk7CisKICAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIG1f
ZmlsZVNpemUgeyAwIH07CiB9OwogCitpbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVE
YXRhKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE1hcHBlZEZpbGVNb2RlIG1vZGUsIGJvb2wm
IHN1Y2Nlc3MpCit7CisgICAgc3VjY2VzcyA9IG1hcEZpbGVIYW5kbGUoaGFuZGxlLCBtb2RlKTsK
K30KKwogaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0
YSYmIG90aGVyKQogICAgIDogbV9maWxlRGF0YShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZURh
dGEsIG51bGxwdHIpKQogICAgICwgbV9maWxlU2l6ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmls
ZVNpemUsIDApKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9VVUlELmNwcAppbmRleCA4NTk2OGJmNTkxMTZkMTNjYWQ5MjM5NmYzMzlmMjA0ZmUx
ZGMyMTUxLi4xNWNhMDBhNzEwYjk3YzY5MDI1ZWI1MDE1ZDAwMTcxZTg5YTNhNDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNw
cApAQCAtNjYsOCArNjYsOCBAQCBTdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpCiAK
IFN0cmluZyBib290U2Vzc2lvblVVSURTdHJpbmcoKQogewotICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBib290U2Vzc2lvblVVSUQ7CiAjaWYgT1MoREFSV0lOKQorICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBib290U2Vzc2lvblVVSUQ7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
W10gewogICAgICAgICBzaXplX3QgdXVpZExlbmd0aCA9IDM3OwpAQCAtNzYsOCArNzYsMTAgQEAg
U3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGJvb3RTZXNzaW9uVVVJRC5jb25zdHJ1Y3Qoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHV1
aWQpLCB1dWlkTGVuZ3RoIC0gMSk7CiAgICAgfSk7Ci0jZW5kaWYKICAgICByZXR1cm4gYm9vdFNl
c3Npb25VVUlEOworI2Vsc2UKKyAgICByZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4
IDkyNGZkN2RmYzU1NTYzNjNkMzkyNjVlMDUwNjFjNmE3ODNiZWFjNDguLmM0YzJjMDZmMWVhZDFj
NjJhNTNkNTdjNTU1MzIzZGY4MDdkNmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCkBAIC0zOTMsNiArMzkzLDExIEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvCiAg
ICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9pbnB1
dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKIH0KIAorYm9vbCB0cnVuY2F0ZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKK3sKKyAgICByZXR1
cm4gZ19zZWVrYWJsZV90cnVuY2F0ZShHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9vdXRwdXRf
c3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSwgb2Zmc2V0LCBudWxscHRyLCBudWxscHRyKTsK
K30KKwogaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgZ3NpemUgYnl0ZXNXcml0dGVuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93
dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDU4YzkzNDQ4MDhlNjcxMDUzZTMxNjBlMDc5
NmI0MDIyOTc3MjU4ZTQuLjU4NTQwZGI3OGM4ZmI2OTUxMzc0YWE4ZDU0NWFlZDc5OTg1NTQ1MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQ3MCw2ICs0NzAsMTQgQEAg
bG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8KICAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBhcnQ7
CiB9CiAKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcg
bG9uZyBvZmZzZXQpCit7CisgICAgRklMRV9FTkRfT0ZfRklMRV9JTkZPIGVvZkluZm87CisgICAg
ZW9mSW5mby5FbmRPZkZpbGUuUXVhZFBhcnQgPSBvZmZzZXQ7CisKKyAgICByZXR1cm4gU2V0Rmls
ZUluZm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8s
IHNpemVvZihGSUxFX0VORF9PRl9GSUxFX0lORk8pKTsKK30KKwogaW50IHdyaXRlVG9GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7
CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCkBAIC01ODgsNDMgKzU5Niw0MyBAQCBi
b29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkK
ICAgICByZXR1cm4gIVNIRmlsZU9wZXJhdGlvbigmZGVsZXRlT3BlcmF0aW9uKTsKIH0KIAotTWFw
cGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCitib29sIHVubWFwVmlld09mRmlsZSh2b2lk
KiBidWZmZXIsIHNpemVfdCkKIHsKLSAgICBpZiAoIW1fZmlsZURhdGEpCi0gICAgICAgIHJldHVy
bjsKLSAgICBVbm1hcFZpZXdPZkZpbGUobV9maWxlRGF0YSk7CisgICAgcmV0dXJuIFVubWFwVmll
d09mRmlsZShidWZmZXIpOwogfQogCi1NYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKK01hcHBlZEZpbGVEYXRhOjpNYXBw
ZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBNYXBwZWRGaWxlTW9kZSBtb2RlLCBi
b29sJiBzdWNjZXNzKQogewotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBhdXRvIGZpbGUgPSBD
cmVhdGVGaWxlKGZpbGVQYXRoLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBHRU5FUklDX1JFQUQs
IDAsIG51bGxwdHIsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgbnVsbHB0
cik7Ci0gICAgaWYgKGZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVy
bjsKKworICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGZpbGUsIG1vZGUpOworICAgIGNsb3Nl
RmlsZShmaWxlKTsKK30KKworYm9vbCBNYXBwZWRGaWxlRGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSkKK3sKKyAgICBpZiAoIWlzSGFu
ZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbG9uZyBsb25n
IHNpemU7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShmaWxlLCBzaXplKSB8fCBzaXplID4gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB8fCBzaXplID4gc3RkOjpudW1lcmljX2xpbWl0
czxkZWNsdHlwZShtX2ZpbGVTaXplKT46Om1heCgpKSB7Ci0gICAgICAgIENsb3NlSGFuZGxlKGZp
bGUpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKCFnZXRGaWxlU2l6ZShoYW5kbGUsIHNpemUp
IHx8IHNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIHx8IHNpemUgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKG1fZmlsZVNpemUpPjo6bWF4KCkpIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkgewotICAgICAgICBDbG9z
ZUhhbmRsZShmaWxlKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYXV0byBtYXBwaW5nID0gQ3JlYXRl
RmlsZU1hcHBpbmcoZmlsZSwgbnVsbHB0ciwgUEFHRV9SRUFET05MWSwgMCwgMCwgbnVsbHB0cik7
Ci0gICAgQ2xvc2VIYW5kbGUoZmlsZSk7CisgICAgYXV0byBtYXBwaW5nID0gQ3JlYXRlRmlsZU1h
cHBpbmcoaGFuZGxlLCBudWxscHRyLCBQQUdFX1JFQURPTkxZLCAwLCAwLCBudWxscHRyKTsKICAg
ICBpZiAoIW1hcHBpbmcpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgbV9maWxlRGF0YSA9IE1hcFZpZXdPZkZpbGUobWFwcGluZywgRklMRV9NQVBfUkVBRCwg
MCwgMCwgc2l6ZSk7CiAgICAgQ2xvc2VIYW5kbGUobWFwcGluZyk7CiAgICAgaWYgKCFtX2ZpbGVE
YXRhKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX2ZpbGVT
aXplID0gc2l6ZTsKLSAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZTFlMjQ5OWNmYjli
YWMzZTFkNzY0YjM3NDM4YzM4OWI4NGRjZGUyLi4wM2YxMDhhYWFmYjYxOWY1YWM4M2Y0ZDUxMWZh
NDUzZWIzYTEyN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDctMTIgIENo
cmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEJ5dGVjb2Rl
IGNhY2hlIHNob3VsZCB1c2UgRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisKIDIwMTkt
MDctMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5hYmxlIHRvIHBhc3RlIGZyb20gTm90ZXMgaW50byBFeGNlbCAzNjUgc3ByZWFkc2hlZXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGJlMDE0OWE0YTZlNTM5
NjE2OTQyZWQ1MjUzZTgyNzExMTE4NDI5MDguLjYxZmQ3YzQ4NzdhMmJhYTU2Y2IyMmQ0MDQ4NjU5
NTNlMDM1OTQwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRCdWZm
ZXImIG1hcHBlZEJ1ZmZlcikKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgYm9v
bCBtYXBwaW5nU3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRG
aWxlRGF0YShmaWxlUGF0aCwgbWFwcGluZ1N1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6U2hhcmVkLCBtYXBwaW5nU3VjY2Vzcyk7CiAKICAgICBpZiAoIW1hcHBpbmdTdWNjZXNz
KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmls
ZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDU4M2U0NTgzNzM4N2RkZWE2ZDFjYzBhMzlhNWE5Y2YzMWYzYTJlYjAuLmIxY2ZiN2IzNTFj
NzZmZWYxM2MyZGQ2NzQwZTQ4NGY4Y2QyNWM0OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wNy0xMiAgQ2hy
aXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgQnl0ZWNvZGUg
Y2FjaGUgc2hvdWxkIHVzZSBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2Ug
U3V6dWtpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHA6CisKIDIwMTktMDctMDggIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIHRlc3Qtd2Via2l0cHk6IEV4cGxpY2l0bHkgdXNlIFB5dGhvbiAyLjcgbGxkYiBs
aWJyYXJ5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IDgzMDU1MjU1NmRlMTdmZjY3N2E5MjQwNTc1ZGE3MDcxNmYxMWU2ZTMuLmQwZTUxNTFhOTk5
MjlhODM3MjczNDkzNzUzYTU4MGViZjMyZDM4ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKIHsKICAgICBib29sIHN1Y2Nl
c3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5n
KCJub3RfZXhpc3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9GQUxT
RShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwogfQpAQCAtMTAy
LDcgKzEwMiw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQog
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQogewogICAgIGJvb2wg
c3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0
ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEg
bWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
OjpTaGFyZWQsIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwogICAgIEVYUEVD
VF9UUlVFKCEhbWFwcGVkRmlsZURhdGEpOwogICAgIEVYUEVDVF9UUlVFKG1hcHBlZEZpbGVEYXRh
LnNpemUoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CkBAIC0xMTIsNyArMTEyLDcg
QEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQogVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdFbXB0eUZpbGUpCiB7CiAgICAgYm9vbCBzdWNj
ZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBF
bXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwogICAg
IEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374335</attachid>
            <date>2019-07-17 15:08:36 -0700</date>
            <delta_ts>2019-07-17 16:03:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199759-20190717150835.patch</filename>
            <type>text/plain</type>
            <size>35436</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDQxMjZkNTY1MDc1M2M4MmVkZjMzNzQ4MDBlNjI2NjM3YTU0NmRkLi4xMGVjMjg3ODBhZGNkZTcw
YmJjMTE4Zjk5ZDE0ZjQ1YjE2MTllZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0wNy0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQnl0ZWNvZGUgY2FjaGUgc2hvdWxkIHVzZSBGaWxlU3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFVwZGF0ZSBieXRl
Y29kZSBjYWNoZSB0byB1c2UgcGxhdGZvcm0gZ2VuZXJpYyBGaWxlU3lzdGVtIGNhbGxzLgorCisg
ICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgICogcnVudGltZS9DYWNoZVBheWxvYWQuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ2FjaGVQYXlsb2FkLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRC
eXRlY29kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FjaGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6
CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBs
ZXRpb24uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorCiAyMDE5LTA3LTE3
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlIHNob3VsZCBpbnNlcnQgS2lsbFN0YWNrIG5vZGVzIGJlZm9yZSBQdXRTdGFj
ayBub2RlcyB0aGF0IGl0IGFkZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGExZmZkODM5OGI2ZDlkYzVkOGU0ZTVkZDkxYWE3
M2Q5NDcxZjg4OTIuLjFhNDczMWQyNjk3ZGEzZWI4ZWIxNzUyNjgyYWY5MTkzZjEzOGMyYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTktMDctMTIgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5y
ZWlkQHNvbnkuY29tPgorCisgICAgICAgIEJ5dGVjb2RlIGNhY2hlIHNob3VsZCB1c2UgRmlsZVN5
c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5
NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgTWFwcGVkRmlsZURhdGEgZnJvbSBhIHByZWV4aXN0aW5n
IGZpbGUgaGFuZGxlCisgICAgICAgIGZvciB1c2Ugd2l0aCBsb2NrZWQgZmlsZXMuIEFsc28gc3Vw
cG9ydCBjcmVhdGluZyBNYXBwZWRGaWxlRGF0YQorICAgICAgICB3aXRoIGVpdGhlciBwcml2YXRl
IG9yIHNoYXJlZCBtYXBwaW5ncy4KKworICAgICAgICAqIHd0Zi9VVUlELmNwcDoKKyAgICAgICAg
QXZvaWQgQVNTRVJUIHdpdGggcmV0dXJuaW5nIGEgTGF6eU5ldmVyRGVzdHJveWVkIG9iamVjdCB0
aGF0IGhhc24ndCBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAg
QWRkIHRydW5jYXRlRmlsZSBpbXBsZW1lbnRhdGlvbnMuCisKIDIwMTktMDctMTcgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyIG1lbWJl
ciBmdW5jdGlvbiB3aGljaCBhbGxvd3MgbWFrZVN0cmluZygpIHN0eWxlIHZhcmlhZGljIGFyZ3Vt
ZW50IGNvbnN0cnVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRmYTQ0YWJmNzhkODFiY2Q5YWUyNTQzOTFl
NjkxYWMxOGVjY2VhNTIuLmFkYWViNzhjNTYwYzE1YzgyY2Y0MTY4NTdlMGYyNWZjOTg1NmZjNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wNy0xMiAgQ2hyaXN0b3BoZXIgUmVp
ZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgQnl0ZWNvZGUgY2FjaGUgc2hvdWxk
IHVzZSBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKwogMjAxOS0wNy0xNyAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IGNv
cHkgb2YgbW9uaXRvcnMgdW5kZXIgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxh
eVdhc1VwZGF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Nj
cmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KaW5kZXggY2U2
MmEzODA5ZmJhYzdhMGZlMzFhY2Q0YjY5MTE3MThkNjRiMjQ0YS4uM2NjMDQxMjFhNGE5YzMyYjlh
MzFhMGIxZmQyZTUyY2Y3MzdjNGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0
Lm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hl
UGF0aChOU1VSTCogY2FjaGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAKICAgICBib29sIHN1Y2Nl
c3MgPSBmYWxzZTsKICAgICBTdHJpbmcgc3lzdGVtUGF0aCA9IGZpbGVQYXRoVVJMLmZpbGVTeXN0
ZW1QYXRoKCk7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEoc3lzdGVt
UGF0aCwgc3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZURhdGEo
c3lzdGVtUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7
CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJGaWxlIGF0IHBhdGggJUAgY291bGQgbm90IGJlIG1hcHBlZC4i
LCBzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihzeXN0ZW1QYXRoKV0sIGVycm9yKTsKIApAQCAtMTUz
LDIyICsxNTMsMTkgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VS
TCogY2FjaGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAgICAgaWYgKCFtX2NhY2hlUGF0aCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW50IGZkID0gb3BlbihbbV9jYWNoZVBhdGggcGF0aF0uVVRG
OFN0cmluZywgT19SRE9OTFkgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwotICAgIGlm
IChmZCA9PSAtMSkKKyAgICBhdXRvIGZkID0gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKFtt
X2NhY2hlUGF0aCBwYXRoXS5VVEY4U3RyaW5nLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJl
YWQsIHtGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSwgRmlsZVN5c3RlbTo6Rmls
ZUxvY2tNb2RlOjpOb25ibG9ja2luZ30pOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChmZCkpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVF
eGl0KFsmXSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2Nr
QW5kQ2xvc2VGaWxlKGZkKTsKICAgICB9KTsKIAotICAgIHN0cnVjdCBzdGF0IHNiOwotICAgIGlu
dCByZXMgPSBmc3RhdChmZCwgJnNiKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNp
emVfdD4oc2Iuc3Rfc2l6ZSk7Ci0gICAgaWYgKHJlcyB8fCAhc2l6ZSkKKyAgICBib29sIHN1Y2Nl
c3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShmZCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2Vz
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBz
aXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0KLSAgICBSZWY8SlNDOjpDYWNo
ZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUo
YnVmZmVyLCBzaXplKTsKKyAgICBSZWY8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNv
ZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlKSk7CiAK
ICAgICBKU0M6OlZNJiB2bSA9IFttX3ZpcnR1YWxNYWNoaW5lIHZtXTsKICAgICBKU0M6OlNvdXJj
ZUNvZGUgc291cmNlQ29kZSA9IFtzZWxmIHNvdXJjZUNvZGVdOwpAQCAtMjkxLDcgKzI4OCw3IEBA
IHN0YXRpYyBib29sIHZhbGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgoTlNVUkwqIGNhY2hlUGF0aCwg
TlNFcnJvcioqIGVycm9yKQogCiAgICAgaWYgKGNhY2hlRXJyb3IuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoKTsKLSAg
ICAgICAgZnRydW5jYXRlKGZkLCAwKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxl
KGZkLCAwKTsKICAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJVbmFibGUgdG8gZ2VuZXJhdGUg
Ynl0ZWNvZGUgZm9yIHRoaXMgSlNTY3JpcHQgYmVjYXVzZTogIiwgY2FjaGVFcnJvci5tZXNzYWdl
KCkpOwogICAgICAgICByZXR1cm4gTk87CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDZhMDRkMzg0YjlmODhhYWUyZjJlOTk4MDZmZTA2MDZiNzkxNGI3ZWMuLjgz
YjgyMTRhNGEzZDk2MDBiMWYwNGI2NDgwYTliMDYxMjk5ZGMyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMyw3ICsyMjMsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQo
CiBpZiAoV1RGX09TX01BQ19PU19YKQogICAgIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EIGJhc2gg
LWMgImRhdGUgKyclcyciIE9VVFBVVF9WQVJJQUJMRSBCVUlMRF9USU1FIE9VVFBVVF9TVFJJUF9U
UkFJTElOR19XSElURVNQQUNFKQogZWxzZSAoKQotICAgIHNldChCVUlMRF9USU1FIDApCisgICAg
c3RyaW5nKFRJTUVTVEFNUCBCVUlMRF9USU1FICIlcyIpCiBlbmRpZiAoKQogCiBmaWxlKFdSSVRF
ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQnl0ZWNvZGVDYWNoZVZlcnNp
b24uaCAiI2RlZmluZSBKU0NfQllURUNPREVfQ0FDSEVfVkVSU0lPTiAke0JVSUxEX1RJTUV9XG4i
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBkNGZhMjIyYzcyMWNmNGE3ZTcxYWQ0Nzg2Zjk4NDEx
MTI0MWUxODUyLi5lYWQwMWUyMGI3YWY5NWU3MzYyMjNjMTU1NGEyMGYzMzM2YWRmNjZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgpAQCAtMTAwMyw3ICsxMDA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
b21taXRDYWNoZWRCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotI2lmIE9TKERBUldJ
TikKICAgICAgICAgaWYgKCFjYWNoZUVuYWJsZWQoKSB8fCAhbV9jYWNoZWRCeXRlY29kZSB8fCAh
bV9jYWNoZWRCeXRlY29kZS0+aGFzVXBkYXRlcygpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0xMDEyLDMyICsxMDEyLDMzIEBAIHB1YmxpYzoKICAgICAgICAgfSk7CiAKICAgICAgICAgU3Ry
aW5nIGZpbGVuYW1lID0gY2FjaGVQYXRoKCk7Ci0gICAgICAgIGludCBmZCA9IG9wZW4oZmlsZW5h
bWUudXRmOCgpLmRhdGEoKSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fRVhMT0NL
IHwgT19OT05CTE9DSywgMDY2Nik7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgYXV0
byBmZCA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpXcml0ZSwge0ZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZTo6RXhjbHVzaXZl
LCBGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nfSk7CisgICAgICAgIGlmICgh
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmZCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgYXV0byBjbG9zZUZEID0gbWFrZVNjb3BlRXhpdChbJl0gewotICAgICAgICAgICAgY2xv
c2UoZmQpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGZkKTsK
ICAgICAgICAgfSk7CiAKLSAgICAgICAgc3RydWN0IHN0YXQgc2I7Ci0gICAgICAgIGludCByZXMg
PSBmc3RhdChmZCwgJnNiKTsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNiLnN0X3NpemUpOwotICAgICAgICBpZiAocmVzIHx8IHNpemUgIT0gbV9jYWNoZWRCeXRl
Y29kZS0+c2l6ZSgpKSB7CisgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKKyAgICAgICAgaWYg
KCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmZCwgZmlsZVNpemUpKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHNpemVfdCBjYWNoZUZpbGVTaXplOworICAgICAgICBpZiAoIVdURjo6
Y29udmVydFNhZmVseShmaWxlU2l6ZSwgY2FjaGVGaWxlU2l6ZSkgfHwgY2FjaGVGaWxlU2l6ZSAh
PSBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBieXRlY29k
ZSBjYWNoZSBoYXMgYWxyZWFkeSBiZWVuIHVwZGF0ZWQKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChmdHJ1bmNhdGUoZmQsIG1fY2FjaGVkQnl0ZWNvZGUtPnNp
emVGb3JVcGRhdGUoKSkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZk
LCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplRm9yVXBkYXRlKCkpKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUtPmNvbW1pdFVwZGF0ZXMoWyZdIChvZmZfdCBv
ZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBvZmZf
dCByZXN1bHQgPSBsc2VlayhmZCwgb2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgICAgICAgICBsb25n
IGxvbmcgcmVzdWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUoZmQsIG9mZnNldCwgRmlsZVN5c3Rl
bTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZyk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0ICE9IC0xKTsKLSAgICAgICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4g
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHdyaXRlKGZkLCBkYXRhLCBzaXplKSk7CisgICAgICAgICAg
ICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNp
emUpOwogICAgICAgICB9KTsKLSNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEwNDYsMTQg
KzEwNDcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obnVsbHB0cik7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKLSAgICAg
ICAgU3RyaW5nIGZpbGVuYW1lID0gc291cmNlT3JpZ2luKCkuc3RyaW5nKCk7Ci0gICAgICAgIGZp
bGVuYW1lLnJlcGxhY2UoJy8nLCAnXycpOwotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhjYWNo
ZVBhdGgsICcvJywgc291cmNlKCkudG9TdHJpbmcoKS5oYXNoKCksICctJywgZmlsZW5hbWUsICIu
Ynl0ZWNvZGUtY2FjaGUiKTsKKyAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6
ZW5jb2RlRm9yRmlsZU5hbWUoRmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5n
VHJhaWxpbmdTbGFzaChzb3VyY2VPcmlnaW4oKS5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgbWFrZVN0cmlu
Zyhzb3VyY2UoKS50b1N0cmluZygpLmhhc2goKSwgJy0nLCBmaWxlbmFtZSwgIi5ieXRlY29kZS1j
YWNoZSIpKTsKICAgICB9CiAKICAgICB2b2lkIGxvYWRCeXRlY29kZSgpIGNvbnN0CiAgICAgewot
I2lmIE9TKERBUldJTikKICAgICAgICAgaWYgKCFjYWNoZUVuYWJsZWQoKSkKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMTA2MSwyNSArMTA2MCwyMSBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
ZmlsZW5hbWUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaW50IGZk
ID0gb3BlbihmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSB8IE9fU0hMT0NLIHwgT19O
T05CTE9DSyk7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgYXV0byBmZCA9IEZpbGVT
eXN0ZW06Om9wZW5BbmRMb2NrRmlsZShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpSZWFkLCB7RmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlOjpTaGFyZWQsIEZpbGVTeXN0ZW06OkZp
bGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmd9KTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGZkKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGNsb3Nl
RkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Ci0gICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAg
ICAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoZmQpOwogICAgICAgICB9KTsKIAot
ICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsKLSAgICAgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2Ip
OwotICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6ZSk7
Ci0gICAgICAgIGlmIChyZXMgfHwgIXNpemUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGJvb2wgc3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVk
RmlsZURhdGEoZmQsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNz
KTsKIAotICAgICAgICB2b2lkKiBidWZmZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVB
RCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKLSAgICAgICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVE
KQorICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1f
Y2FjaGVkQnl0ZWNvZGUgPSBDYWNoZWRCeXRlY29kZTo6Y3JlYXRlKGJ1ZmZlciwgc2l6ZSk7Ci0j
ZW5kaWYKKworICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGU6OmNyZWF0
ZShXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSk7CiAgICAgfQogCiAgICAgU2hlbGxTb3VyY2VQcm92
aWRlcihjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmln
aW4sIFVSTCYmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQ
cm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZVBheWxvYWQuY3BwCmluZGV4IDhjM2U4NWIzOWMwZmU4MmUzOWFhOGMyMWYx
MjIzYWI3MjZhMjQ4ODguLmY0YWI5YmM4NDg4NzQ1MTNhOGU0YzIxZTE2MmI5ZDM1MGVkZGUxNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcApA
QCAtMzIsMTIgKzMyLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgIU9TKFdJTkRPV1Mp
Ci1DYWNoZVBheWxvYWQgQ2FjaGVQYXlsb2FkOjptYWtlTWFwcGVkUGF5bG9hZCh2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK0NhY2hlUGF5bG9hZCBDYWNoZVBheWxvYWQ6Om1ha2VNYXBwZWRQYXls
b2FkKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKIHsKLSAgICByZXR1cm4gQ2Fj
aGVQYXlsb2FkKHRydWUsIGRhdGEsIHNpemUpOworICAgIHJldHVybiBDYWNoZVBheWxvYWQodHJ1
ZSwgZGF0YS5sZWFrSGFuZGxlKCksIGRhdGEuc2l6ZSgpKTsKIH0KLSNlbmRpZgogCiBDYWNoZVBh
eWxvYWQgQ2FjaGVQYXlsb2FkOjptYWtlTWFsbG9jUGF5bG9hZChNYWxsb2NQdHI8dWludDhfdD4m
JiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKQEAgLTc2LDExICs3NCw3IEBAIHZvaWQgQ2FjaGVQYXls
b2FkOjpmcmVlRGF0YSgpCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAobV9tYXBwZWQpIHsKLSNpZiAhT1MoV0lORE9XUykKLSAgICAgICAgbXVubWFwKG1fZGF0YSwg
bV9zaXplKTsKLSNlbHNlCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0j
ZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5tYXBWaWV3T2ZGaWxlKG1fZGF0YSwgbV9zaXpl
KTsKICAgICB9IGVsc2UKICAgICAgICAgZmFzdEZyZWUobV9kYXRhKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmgKaW5kZXggZTA0OGYzMTkzN2M4YzA3
NzQ1MTBhODZjNjcxZjlhYzVhMjdhNjIzMS4uN2VhYjU4OTdmNmE5OGIyM2EzODAzZjgzOWExODQw
NzFlMmQ1NGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVQYXlsb2FkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXls
b2FkLmgKQEAgLTI1LDE1ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgQ2FjaGVQYXlsb2FkIHsKIHB1YmxpYzoKLSNpZiAhT1MoV0lORE9XUykK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FjaGVQYXlsb2FkIG1ha2VNYXBwZWRQYXls
b2FkKHZvaWQqLCBzaXplX3QpOwotI2VuZGlmCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IENhY2hlUGF5bG9hZCBtYWtlTWFwcGVkUGF5bG9hZChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FjaGVQYXlsb2FkIG1ha2VNYWxs
b2NQYXlsb2FkKE1hbGxvY1B0cjx1aW50OF90PiYmLCBzaXplX3QpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBDYWNoZVBheWxvYWQgbWFrZUVtcHR5UGF5bG9hZCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRlY29kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUuaAppbmRleCAxNWNhYjNj
MDQ3MGJhMGNhMDYyZDU1NWU0N2MzZmZkZGM4ZmVkNzkyLi5kNzU2MTM5NTNiYzUxZTU4MGJkNDg5
NDIxNzlkYzE5NzAxMjNiNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRCeXRlY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZEJ5dGVjb2RlLmgKQEAgLTQ2LDEyICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENhY2hlZEJ5dGVjb2RlKENhY2hlUGF5bG9hZDo6bWFrZUVtcHR5
UGF5bG9hZCgpKSk7CiAgICAgfQogCi0jaWYgIU9TKFdJTkRPV1MpCi0gICAgc3RhdGljIFJlZjxD
YWNoZWRCeXRlY29kZT4gY3JlYXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBMZWFmRXhlY3V0
YWJsZU1hcCYmIGxlYWZFeGVjdXRhYmxlcyA9IHsgfSkKKyAgICBzdGF0aWMgUmVmPENhY2hlZEJ5
dGVjb2RlPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhLCBMZWFmRXhl
Y3V0YWJsZU1hcCYmIGxlYWZFeGVjdXRhYmxlcyA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENhY2hlZEJ5dGVjb2RlKENhY2hlUGF5bG9hZDo6bWFrZU1hcHBlZFBh
eWxvYWQoZGF0YSwgc2l6ZSksIFdURk1vdmUobGVhZkV4ZWN1dGFibGVzKSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1ha2VNYXBw
ZWRQYXlsb2FkKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKGxlYWZFeGVjdXRhYmxlcykpKTsKICAg
ICB9Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGNyZWF0ZShNYWxs
b2NQdHI8dWludDhfdD4mJiBkYXRhLCBzaXplX3Qgc2l6ZSwgTGVhZkV4ZWN1dGFibGVNYXAmJiBs
ZWFmRXhlY3V0YWJsZXMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IDZlODNhMjg0NGNlMzYxNWFiZDkzNWY4NWQ1YmU2NzI3OTM2
MDYzNGUuLjZmZTU1NTA1NDA2MGExNzlkMDc4MDlkOWYwMGRhOGI1OGJkZTA2MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTg4LDcgKzg4
LDcgQEAgcHVibGljOgogICAgICAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7CiAgICAgfTsKIAotICAg
IEVuY29kZXIoVk0mIHZtLCBpbnQgZmQgPSAtMSkKKyAgICBFbmNvZGVyKFZNJiB2bSwgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkKICAgICAgICAgOiBtX3ZtKHZtKQogICAgICAgICAsIG1fZmQoZmQpCiAgICAg
ICAgICwgbV9iYXNlT2Zmc2V0KDApCkBAIC0xNTIsMTIgKzE1Miw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBtX2N1cnJlbnRQYWdlLT5hbGlnbkVuZCgp
OwogCi0gICAgICAgIGlmIChtX2ZkICE9IC0xKSB7Ci0jaWYgIU9TKFdJTkRPV1MpCisgICAgICAg
IGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fZmQpKSB7CiAgICAgICAgICAgICByZXR1
cm4gcmVsZWFzZU1hcHBlZChlcnJvcik7Ci0jZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgc2l6ZV90IHNp
emUgPSBtX2Jhc2VPZmZzZXQgKyBtX2N1cnJlbnRQYWdlLT5zaXplKCk7CkBAIC0xNzIsMTcgKzE2
OCwxNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotI2lmICFPUyhXSU5ET1dTKQogICAg
IFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gcmVsZWFzZU1hcHBlZChCeXRlY29kZUNhY2hlRXJyb3Im
IGVycm9yKQogICAgIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSBtX2Jhc2VPZmZzZXQgKyBtX2N1
cnJlbnRQYWdlLT5zaXplKCk7Ci0gICAgICAgIGlmIChmdHJ1bmNhdGUobV9mZCwgc2l6ZSkpIHsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUobV9mZCwgc2l6ZSkpIHsKICAg
ICAgICAgICAgIGVycm9yID0gQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5v
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBwYWdlIDogbV9wYWdlcykgewotICAgICAgICAgICAgc3NpemVfdCBieXRl
c1dyaXR0ZW4gPSB3cml0ZShtX2ZkLCBwYWdlLmJ1ZmZlcigpLCBwYWdlLnNpemUoKSk7CisgICAg
ICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9mZCwg
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGFnZS5idWZmZXIoKSksIHBhZ2Uuc2l6ZSgpKTsKICAg
ICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEpIHsKICAgICAgICAgICAgICAgICBlcnJv
ciA9IEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcihlcnJubyk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQsMTUgKzE4OSwxNSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxs
cHRyLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBtX2ZkLCAwKTsKLSAgICAgICAgaWYg
KGJ1ZmZlciA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgIGJvb2wgc3VjY2VzczsKKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEobV9mZCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgICAgICBpZiAoIXN1Y2Nl
c3MpIHsKICAgICAgICAgICAgIGVycm9yID0gQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVy
cm9yKGVycm5vKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIENhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoYnVmZmVyLCBzaXplLCBXVEZNb3Zl
KG1fbGVhZkV4ZWN1dGFibGVzKSk7CisgICAgICAgIHJldHVybiBDYWNoZWRCeXRlY29kZTo6Y3Jl
YXRlKFdURk1vdmUobWFwcGVkRmlsZURhdGEpLCBXVEZNb3ZlKG1fbGVhZkV4ZWN1dGFibGVzKSk7
CiAgICAgfQotI2VuZGlmCiAKICAgICBjbGFzcyBQYWdlIHsKICAgICBwdWJsaWM6CkBAIC0yNzAs
NyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBWTSYgbV92bTsKLSAgICBpbnQgbV9m
ZDsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9mZDsKICAgICBwdHJkaWZm
X3QgbV9iYXNlT2Zmc2V0OwogICAgIFBhZ2UqIG1fY3VycmVudFBhZ2U7CiAgICAgVmVjdG9yPFBh
Z2U+IG1fcGFnZXM7CkBAIC0yMzc2LDcgKzIzNzEsNyBAQCB2b2lkIGVuY29kZUNvZGVCbG9jayhF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVubGlua2Vk
QwogICAgIGVudHJ5LT5lbmNvZGUoZW5jb2RlciwgeyBrZXksIGpzQ2FzdDxjb25zdCBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUqPihjb2RlQmxvY2spIH0pOwogfQogCi1SZWZQdHI8Q2FjaGVkQnl0ZWNv
ZGU+IGVuY29kZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29u
c3QgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJy
b3ImIGVycm9yKQorUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVy
cm9yJiBlcnJvcikKIHsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGNvZGVCbG9j
ay0+Y2xhc3NJbmZvKHZtKTsKIApAQCAtMjM5NCw3ICsyMzg5LDcgQEAgUmVmUHRyPENhY2hlZEJ5
dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXks
IGNvbnN0IFUKIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayogY29kZUJs
b2NrKQogewogICAgIEJ5dGVjb2RlQ2FjaGVFcnJvciBlcnJvcjsKLSAgICByZXR1cm4gZW5jb2Rl
Q29kZUJsb2NrKHZtLCBrZXksIGNvZGVCbG9jaywgLTEsIGVycm9yKTsKKyAgICByZXR1cm4gZW5j
b2RlQ29kZUJsb2NrKHZtLCBrZXksIGNvZGVCbG9jaywgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSwgZXJyb3IpOwogfQogCiBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29k
ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgKaW5kZXggMWI2MmQ4ZDQ2Y2I4ZDhkZTk3MDlh
ZDI2N2QyYTU1Yzg4ZmRmMjU5NS4uMDVjYjFiMTZlZjRkOWU4M2Y1ZDYyMTUwMTc1NzVhMmVmOTg0
ODQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCkBA
IC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0
cjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiwgY29uc3QgU291cmNlQ29kZUtl
eSYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKik7Ci1KU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8
Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNvdXJjZUNvZGVLZXkm
LCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayosIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7
CitKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9j
ayhWTSYsIGNvbnN0IFNvdXJjZUNvZGVLZXkmLCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayosIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7CiAK
IFVubGlua2VkQ29kZUJsb2NrKiBkZWNvZGVDb2RlQmxvY2tJbXBsKFZNJiwgY29uc3QgU291cmNl
Q29kZUtleSYsIFJlZjxDYWNoZWRCeXRlY29kZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA4NDI3NjhlMzAzNGYwNDg0Nzg0MmQ1NTc3MDQ2
NzhlMzBhYTYyNjE4Li4yNmEyMzdiYzM2ZmUzZDFhOGY2NTNlZTUzYjA0ZWEwNThmMGI3ZGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTIyNSw3
ICsyMjUsNyBAQCBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkTW9kdWxl
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQwogICAgIHJldHVybiBzb3VyY2VDb2Rl
S2V5Rm9yU2VyaWFsaXplZEJ5dGVjb2RlKHZtLCBzb3VyY2VDb2RlLCBTb3VyY2VDb2RlVHlwZTo6
TW9kdWxlVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgeyB9KTsKIH0KIAotUmVmUHRyPENh
Y2hlZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29kZVR5cGUgY29k
ZVR5cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUg
c2NyaXB0TW9kZSwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCitSZWZQdHI8Q2FjaGVkQnl0
ZWNvZGU+IHNlcmlhbGl6ZUJ5dGVjb2RlKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VDb2RlVHlwZSBjb2RlVHlwZSwg
SlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJv
ciYgZXJyb3IsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSkKIHsKICAgICByZXR1cm4gZW5jb2RlQ29kZUJsb2NrKHZtLAogICAgICAgICBzb3VyY2VDb2Rl
S2V5Rm9yU2VyaWFsaXplZEJ5dGVjb2RlKHZtLCBzb3VyY2UsIGNvZGVUeXBlLCBzdHJpY3RNb2Rl
LCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUpLCBjb2RlQmxvY2ssIGZkLCBlcnJvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IGUyMDcxZDM5
ZGQ4NmNjOWUzN2U1YmZiN2I3Zjk1MzdkYjhlMTA3YzQuLjdjMzdhYjA3OTg0OWQ1MTMxNWI2NWUw
OTUzNjhiODBhZDhlYzdiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5oCkBAIC0zMTgsNyArMzE4LDcgQEAgcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2VkQ29k
ZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclMKIH0KIAog
dm9pZCB3cml0ZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNvdXJjZUNvZGVLZXkmLCBjb25zdCBTb3Vy
Y2VDb2RlVmFsdWUmKTsKLVJlZlB0cjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUo
Vk0mLCBVbmxpbmtlZENvZGVCbG9jayosIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VDb2RlVHlw
ZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIGludCBmZCwgQnl0ZWNv
ZGVDYWNoZUVycm9yJiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOworUmVmUHRyPENh
Y2hlZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYsIFVubGlua2VkQ29kZUJsb2NrKiwg
Y29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpT
UGFyc2VyU2NyaXB0TW9kZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRl
Y29kZUNhY2hlRXJyb3ImLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPik7CiBTb3VyY2VD
b2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkUHJvZ3JhbShWTSYsIGNvbnN0IFNvdXJj
ZUNvZGUmKTsKIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRNb2R1bGUo
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5jcHAKaW5kZXggZGJmZjE3OGRlNmIzZThlMDU1ZTY1OThkMGMyNTVhODI5
ZTM1MzQ3Yi4uMDBhMTVjOTc5ZjZjNTY5ZWZhMzA2YzY0NTRlZDQwNDA1MTNiN2RmMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVm
UHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgaW50IGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yKQor
UmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZk
LCBCeXRlY29kZUNhY2hlRXJyb3ImIGVycm9yKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1
cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7CkBAIC0xMTIsNyArMTEyLDcgQEAgUmVmUHRyPENh
Y2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwKICAgICByZXR1cm4gc2VyaWFsaXplQnl0ZWNvZGUodm0sIHVubGlua2Vk
Q29kZUJsb2NrLCBzb3VyY2UsIFNvdXJjZUNvZGVUeXBlOjpQcm9ncmFtVHlwZSwgc3RyaWN0TW9k
ZSwgc2NyaXB0TW9kZSwgZmQsIGVycm9yLCB7IH0pOwogfQogCi1SZWZQdHI8Q2FjaGVkQnl0ZWNv
ZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBlcnJvcikKK1JlZlB0cjxDYWNoZWRCeXRl
Y29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNhY2hlRXJy
b3ImIGVycm9yKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBSRUxFQVNFX0FT
U0VSVCh2bS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5n
VGFibGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKaW5k
ZXggOGE5N2MxNzEyMjQwNjMzNGVlMmNkYTJmYjNiNDk1YjI0NDNhYWVlOC4uYjFlOGUyOWI1MDJj
NzczMGIxM2I2MzBiYzM5N2JmOTExNjNlYjM4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbERh
dGEuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Myw4
ICs0NCw4IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoVk0mLCBjb25zdCBT
b3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tT
eW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9
IDApOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIAotSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOwotSlNfRVhQT1JUX1BS
SVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7CitKU19FWFBP
UlRfUFJJVkFURSBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2Rl
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBm
ZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7CitKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8Q2FjaGVk
Qnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkLCBCeXRlY29kZUNhY2hlRXJyb3ImKTsK
IAogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVy
bmVkRXhjZXB0aW9uKTsKIGlubGluZSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVl
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDk3NTQyOWJhZDA5ZjE3MTU4N2M2M2Y5MzNhMWU3
Y2EyZDk2NTdlOWQuLjQzMzEyNDU0MzZlNDM0M2VkODA3NmQ5MzdhNGMxOTViNTAwOTc2ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC00MCw2ICs0MCwxMSBAQAogI2luY2x1ZGUgPHVuaXN0ZC5o
PgogI2VuZGlmCiAKKyNpZiBVU0UoR0xJQikKKyNpbmNsdWRlIDxnaW8vZ2ZpbGVkZXNjcmlwdG9y
YmFzZWQuaD4KKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7
CiAKIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbCB7CkBAIC0yNzQsNTUgKzI3OSw2NCBAQCBib29s
IGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpCiAKICNlbmRpZgogCi0jaWYgSEFWRShN
TUFQKQotCiBNYXBwZWRGaWxlRGF0YTo6fk1hcHBlZEZpbGVEYXRhKCkKIHsKICAgICBpZiAoIW1f
ZmlsZURhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBtdW5tYXAobV9maWxlRGF0YSwgbV9maWxl
U2l6ZSk7CisgICAgdW5tYXBWaWV3T2ZGaWxlKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOwogfQog
Ci1NYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
Ym9vbCYgc3VjY2VzcykKKyNpZiBIQVZFKE1NQVApCisKK01hcHBlZEZpbGVEYXRhOjpNYXBwZWRG
aWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBNYXBwZWRGaWxlTW9kZSBtb2RlLCBib29s
JiBzdWNjZXNzKQogewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZmlsZVBhdGgpOwotICAgIGludCBmZCA9ICFmc1JlcC5pc051bGwoKSA/IG9wZW4oZnNSZXAu
ZGF0YSgpLCBPX1JET05MWSkgOiAtMTsKLSAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgIHN1Y2Nl
c3MgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIGZkID0gb3BlbkZp
bGUoZmlsZVBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisKKyAgICBzdWNjZXNzID0gbWFwRmls
ZUhhbmRsZShmZCwgbW9kZSk7CisgICAgY2xvc2VGaWxlKGZkKTsKK30KKworYm9vbCBNYXBwZWRG
aWxlRGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRG
aWxlTW9kZSBtb2RlKQoreworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgZmQ7CisjaWYgVVNFKEdMSUIpCisgICAgYXV0byog
aW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhh
bmRsZSkpOworICAgIGZkID0gZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9E
RVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSk7CisjZWxzZQorICAgIGZkID0gaGFuZGxlOwor
I2VuZGlmCiAKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKICAgICBpZiAoZnN0YXQoZmQsICZm
aWxlU3RhdCkpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHVu
c2lnbmVkIHNpemU7CiAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0YXQuc3Rfc2l6
ZSwgc2l6ZSkpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm
ICghc2l6ZSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZvaWQq
IGRhdGEgPSBtbWFwKDAsIHNpemUsIFBST1RfUkVBRCwgTUFQX0ZJTEUgfCBNQVBfU0hBUkVELCBm
ZCwgMCk7Ci0gICAgY2xvc2UoZmQpOworICAgIHZvaWQqIGRhdGEgPSBtbWFwKDAsIHNpemUsIFBS
T1RfUkVBRCwgTUFQX0ZJTEUgfCAobW9kZSA9PSBNYXBwZWRGaWxlTW9kZTo6U2hhcmVkID8gTUFQ
X1NIQVJFRCA6IE1BUF9QUklWQVRFKSwgZmQsIDApOwogCiAgICAgaWYgKGRhdGEgPT0gTUFQX0ZB
SUxFRCkgewotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIG1fZmls
ZURhdGEgPSBkYXRhOwogICAgIG1fZmlsZVNpemUgPSBzaXplOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIHVubWFwVmlld09mRmlsZSh2b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKQorewor
ICAgIHJldHVybiAhbXVubWFwKGJ1ZmZlciwgc2l6ZSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5oCmluZGV4IDMyZmU3NmRmNDAwMDcyY2ZiNzQ5OWI3ZmQ0OGEzYTNiMTQ4YjJhNGEuLjZhZTM4
NjJlYTMzZDIwZThmZTczNWM3NjJmMTY1ZmZjM2U1M2JmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAg
LTk2LDYgKzk2LDExIEBAIGVudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsKICAgICBOb25ibG9ja2lu
ZyA9IDEgPDwgMiwKIH07CiAKK2VudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUgeworICAgIFNoYXJl
ZCwKKyAgICBQcml2YXRlLAorfTsKKwogZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzIHsgTm8sIFllcyB9OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNv
bnN0IFN0cmluZyYpOwpAQCAtMTM4LDcgKzE0Myw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUp
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7
CiAvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0
aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCiBXVEZfRVhQT1JUX1BSSVZBVEUg
bG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwg
RmlsZVNlZWtPcmlnaW4pOwotYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHRydW5jYXRlRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwogLy8gUmV0dXJucyBudW1iZXIg
b2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCiBXVEZf
RVhQT1JUX1BSSVZBVEUgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1
YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KQEAgLTE5MSwxMSArMTk2
LDE0IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJik7
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29u
c3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBtYWtlU2FmZVRvVXNlTWVtb3J5
TWFwRm9yUGF0aChjb25zdCBTdHJpbmcmKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdW5t
YXBWaWV3T2ZGaWxlKHZvaWQqIGJ1ZmZlciwgc2l6ZV90KTsKKwogY2xhc3MgTWFwcGVkRmlsZURh
dGEgewogcHVibGljOgogICAgIE1hcHBlZEZpbGVEYXRhKCkgeyB9CiAgICAgTWFwcGVkRmlsZURh
dGEoTWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVE
YXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBNYXBwZWRG
aWxlTW9kZSwgYm9vbCYgc3VjY2Vzcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZp
bGVEYXRhKFBsYXRmb3JtRmlsZUhhbmRsZSwgTWFwcGVkRmlsZU1vZGUsIGJvb2wmIHN1Y2Nlc3Mp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TWFwcGVkRmlsZURhdGEoKTsKICAgICBNYXBwZWRG
aWxlRGF0YSYgb3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYpOwogCkBAIC0yMDMsMTEgKzIxMSwy
MCBAQCBwdWJsaWM6CiAgICAgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZmls
ZURhdGE7IH0KICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU2l6ZTsg
fQogCisgICAgdm9pZCogbGVha0hhbmRsZSgpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9maWxl
RGF0YSwgbnVsbHB0cik7IH0KKwogcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBtYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgTWFwcGVkRmlsZU1vZGUpOworCiAg
ICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2ZpbGVTaXpl
IHsgMCB9OwogfTsKIAoraW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtb2RlLCBib29sJiBzdWNjZXNz
KQoreworICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGhhbmRsZSwgbW9kZSk7Cit9CisKIGlu
bGluZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJiBvdGhl
cikKICAgICA6IG1fZmlsZURhdGEoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxs
cHRyKSkKICAgICAsIG1fZmlsZVNpemUoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAw
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYv
VVVJRC5jcHAKaW5kZXggODU5NjhiZjU5MTE2ZDEzY2FkOTIzOTZmMzM5ZjIwNGZlMWRjMjE1MS4u
MTVjYTAwYTcxMGI5N2M2OTAyNWViNTAxNWQwMDE3MWU4OWEzYTQ1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTY2
LDggKzY2LDggQEAgU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQogCiBTdHJpbmcg
Ym9vdFNlc3Npb25VVUlEU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PFN0cmluZz4gYm9vdFNlc3Npb25VVUlEOwogI2lmIE9TKERBUldJTikKKyAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFN0cmluZz4gYm9vdFNlc3Npb25VVUlEOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKICAg
ICAgICAgc2l6ZV90IHV1aWRMZW5ndGggPSAzNzsKQEAgLTc2LDggKzc2LDEwIEBAIFN0cmluZyBi
b290U2Vzc2lvblVVSURTdHJpbmcoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBib290
U2Vzc2lvblVVSUQuY29uc3RydWN0KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih1dWlkKSwgdXVp
ZExlbmd0aCAtIDEpOwogICAgIH0pOwotI2VuZGlmCiAgICAgcmV0dXJuIGJvb3RTZXNzaW9uVVVJ
RDsKKyNlbHNlCisgICAgcmV0dXJuIFN0cmluZygpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCBhNWUwYmE2
MjlkMjk5MGI5ZGU2NzM5ZjI5NGY2ZjA2MzkzMDMzODA5Li44NmMwNGY5ZDVlMTM0MGQ5YjRmOTdm
MGQ3Zjc5MDBlMjhiMzMxN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNw
cApAQCAtMzkwLDYgKzM5MCwxMSBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogICAgIHJldHVy
biBnX3NlZWthYmxlX3RlbGwoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFt
KEdfSU9fU1RSRUFNKGhhbmRsZSkpKSk7CiB9CiAKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIGdfc2Vl
a2FibGVfdHJ1bmNhdGUoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShH
X0lPX1NUUkVBTShoYW5kbGUpKSksIG9mZnNldCwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKIGlu
dCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQogewogICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcAppbmRleCA1OGM5MzQ0ODA4ZTY3MTA1M2UzMTYwZTA3OTZiNDAyMjk3
NzI1OGU0Li41ODU0MGRiNzhjOGZiNjk1MTM3NGFhOGQ1NDVhZWQ3OTk4NTU0NTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC00NzAsNiArNDcwLDE0IEBAIGxvbmcgbG9u
ZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBG
aWxlU2Vla09yaWdpbiBvCiAgICAgcmV0dXJuIGxhcmdlT2Zmc2V0LlF1YWRQYXJ0OwogfQogCiti
b29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zm
c2V0KQoreworICAgIEZJTEVfRU5EX09GX0ZJTEVfSU5GTyBlb2ZJbmZvOworICAgIGVvZkluZm8u
RW5kT2ZGaWxlLlF1YWRQYXJ0ID0gb2Zmc2V0OworCisgICAgcmV0dXJuIFNldEZpbGVJbmZvcm1h
dGlvbkJ5SGFuZGxlKGhhbmRsZSwgRmlsZUVuZE9mRmlsZUluZm8sICZlb2ZJbmZvLCBzaXplb2Yo
RklMRV9FTkRfT0ZfRklMRV9JTkZPKSk7Cit9CisKIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGlm
ICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQpAQCAtNTg4LDQzICs1OTYsNDMgQEAgYm9vbCBkZWxl
dGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgcmV0
dXJuICFTSEZpbGVPcGVyYXRpb24oJmRlbGV0ZU9wZXJhdGlvbik7CiB9CiAKLU1hcHBlZEZpbGVE
YXRhOjp+TWFwcGVkRmlsZURhdGEoKQorYm9vbCB1bm1hcFZpZXdPZkZpbGUodm9pZCogYnVmZmVy
LCBzaXplX3QpCiB7Ci0gICAgaWYgKCFtX2ZpbGVEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAg
VW5tYXBWaWV3T2ZGaWxlKG1fZmlsZURhdGEpOworICAgIHJldHVybiBVbm1hcFZpZXdPZkZpbGUo
YnVmZmVyKTsKIH0KIAotTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIGJvb2wmIHN1Y2Nlc3MpCitNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURh
dGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgTWFwcGVkRmlsZU1vZGUgbW9kZSwgYm9vbCYgc3Vj
Y2VzcykKIHsKLSAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgYXV0byBmaWxlID0gQ3JlYXRlRmls
ZShmaWxlUGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgR0VORVJJQ19SRUFELCAwLCBudWxs
cHRyLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIG51bGxwdHIpOwotICAg
IGlmIChmaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm47CisKKyAg
ICBzdWNjZXNzID0gbWFwRmlsZUhhbmRsZShmaWxlLCBtb2RlKTsKKyAgICBjbG9zZUZpbGUoZmls
ZSk7Cit9CisKK2Jvb2wgTWFwcGVkRmlsZURhdGE6Om1hcEZpbGVIYW5kbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSwgTWFwcGVkRmlsZU1vZGUpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGxvbmcgbG9uZyBzaXplOwot
ICAgIGlmICghZ2V0RmlsZVNpemUoZmlsZSwgc2l6ZSkgfHwgc2l6ZSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkgfHwgc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5
cGUobV9maWxlU2l6ZSk+OjptYXgoKSkgewotICAgICAgICBDbG9zZUhhbmRsZShmaWxlKTsKLSAg
ICAgICAgcmV0dXJuOworICAgIGlmICghZ2V0RmlsZVNpemUoaGFuZGxlLCBzaXplKSB8fCBzaXpl
ID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB8fCBzaXplID4gc3RkOjpudW1l
cmljX2xpbWl0czxkZWNsdHlwZShtX2ZpbGVTaXplKT46Om1heCgpKSB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXNpemUpIHsKLSAgICAgICAgQ2xvc2VIYW5kbGUo
ZmlsZSk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1dG8gbWFwcGluZyA9IENyZWF0ZUZpbGVNYXBw
aW5nKGZpbGUsIG51bGxwdHIsIFBBR0VfUkVBRE9OTFksIDAsIDAsIG51bGxwdHIpOwotICAgIENs
b3NlSGFuZGxlKGZpbGUpOworICAgIGF1dG8gbWFwcGluZyA9IENyZWF0ZUZpbGVNYXBwaW5nKGhh
bmRsZSwgbnVsbHB0ciwgUEFHRV9SRUFET05MWSwgMCwgMCwgbnVsbHB0cik7CiAgICAgaWYgKCFt
YXBwaW5nKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1f
ZmlsZURhdGEgPSBNYXBWaWV3T2ZGaWxlKG1hcHBpbmcsIEZJTEVfTUFQX1JFQUQsIDAsIDAsIHNp
emUpOwogICAgIENsb3NlSGFuZGxlKG1hcHBpbmcpOwogICAgIGlmICghbV9maWxlRGF0YSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9maWxlU2l6ZSA9IHNp
emU7Ci0gICAgc3VjY2VzcyA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCBiZTAxNDlhNGE2ZTUzOTYxNjk0MmVkNTI1M2U4MjcxMTExODQyOTA4Li42MWZk
N2M0ODc3YTJiYWE1NmNiMjJkNDA0ODY1OTUzZTAzNTk0MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoR3N0TWFwcGVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogewogICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNz
KTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgbWFwcGluZ1N1Y2Nlc3MpOwog
CiAgICAgaWYgKCFtYXBwaW5nU3VjY2VzcykKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMGI5ZTk3NmU0MTExZGEwOTA2MDYyMGU0MDRh
NzBlZWMyMGE3MjRhLi5mZmMxNGE4NDdmNmUwODI2MDc1MWMzNjRiYWYxYzM0NTBkNTgwYjNiIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTktMDctMTIgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnku
Y29tPgorCisgICAgICAgIEJ5dGVjb2RlIGNhY2hlIHNob3VsZCB1c2UgRmlsZVN5c3RlbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzU5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorCiAyMDE5LTA3LTE3ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU3RyaW5nQnVpbGRlciBtZW1iZXIgZnVu
Y3Rpb24gd2hpY2ggYWxsb3dzIG1ha2VTdHJpbmcoKSBzdHlsZSB2YXJpYWRpYyBhcmd1bWVudCBj
b25zdHJ1Y3Rpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHAKaW5kZXggODMwNTUyNTU2ZGUxN2ZmNjc3YTkyNDA1NzVkYTcwNzE2ZjExZTZlMy4uZDBlNTE1
MWE5OTkyOWE4MzcyNzM0OTM3NTNhNTgwZWJmMzJkMzhmNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToK
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQogewogICAgIGJvb2wg
c3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShT
dHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7CiAgICAgRVhQRUNU
X0ZBTFNFKHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9CkBA
IC0xMDIsNyArMTAyLDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlzc2luZ0Zp
bGUpCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCiB7CiAgICAg
Ym9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVE
YXRhKHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CiAgICAg
RVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7CiAgICAgRVhQRUNUX1RSVUUobWFwcGVkRmls
ZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKQEAgLTExMiw3ICsx
MTIsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCiBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0VtcHR5RmlsZSkKIHsKICAgICBib29s
IHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEo
dGVtcEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7
CiAgICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>