<?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>151929</bug_id>
          
          <creation_ts>2015-12-06 17:08:22 -0800</creation_ts>
          <short_desc>REGRESSION(r193584): Causes heap use-after-free crashes in Web Inspector tests with AddressSanitizer (Requested by ddkilzer on #webkit).</short_desc>
          <delta_ts>2015-12-06 17:55:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149338</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1146723</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-06 17:08:22 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/193584 broke the build:
&quot;Causes heap use-after-free crashes in Web Inspector tests with AddressSanitizer&quot; (Requested by ddkilzer on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146725</commentid>
    <comment_count>1</comment_count>
      <attachid>266746</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-06 17:09:11 -0800</bug_when>
    <thetext>Created attachment 266746
ROLLOUT of r193584

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146728</commentid>
    <comment_count>2</comment_count>
      <attachid>266746</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-06 17:12:08 -0800</bug_when>
    <thetext>Comment on attachment 266746
ROLLOUT of r193584

Rejecting attachment 266746 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 266746, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
l-expected.txt&apos;
patching file LayoutTests/js/arrowfunction-supercall.html
rm &apos;LayoutTests/js/arrowfunction-supercall.html&apos;
patching file LayoutTests/js/arrowfunction-tdz-expected.txt
patching file LayoutTests/js/script-tests/arrowfunction-supercall.js
rm &apos;LayoutTests/js/script-tests/arrowfunction-supercall.js&apos;
patching file LayoutTests/js/script-tests/arrowfunction-tdz.js

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/525904</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146729</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-06 17:13:47 -0800</bug_when>
    <thetext>Here&apos;s the crash log:

Process:               DumpRenderTree [66460]
Path:                  /Volumes/VOLUME/*/DumpRenderTree
Identifier:            DumpRenderTree
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        Python [66459]
Responsible:           bash [243]
User ID:               501

Date/Time:             2015-12-06 14:22:10.237 -0800
OS Version:            Mac OS X 10.10.5 (14F27)
Report Version:        11
Anonymous UUID:        E89566B6-171C-0D5F-266C-BBB64251FD15


Time Awake Since Boot: 2900000 seconds

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Application Specific Information:
CRASHING TEST: http/tests/inspector/console/cross-domain-inspected-node-access.html
================================================================
==66460==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130003fd448 at pc 0x00010a936fd6 bp 0x7fff566ce5e0 sp 0x7fff566ce5d8
READ of size 4 at 0x6130003fd448 thread T0
    #0 0x10a936fd5 in 2015-12-06 14:22:09.192 atos[66756:15474146] Metadata.framework [Error]: couldn&apos;t get the client port
 (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x462fd5)
    #1 0x10a5354af in JSC::RegisterID::deref() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x614af)
    #2 0x10b50249a in JSC::BytecodeGenerator::~BytecodeGenerator() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x102e49a)
    #3 0x10b501fd6 in JSC::generateUnlinkedFunctionCodeBlock(JSC::VM&amp;, JSC::UnlinkedFunctionExecutable*, JSC::SourceCode const&amp;, JSC::CodeSpecializationKind, JSC::DebuggerMode, JSC::ProfilerMode, JSC::UnlinkedFunctionKind, JSC::ParserError&amp;, JSC::SourceParseMode) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x102dfd6)
    #4 0x10adea5a1 in JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor(JSC::VM&amp;, JSC::SourceCode const&amp;, JSC::CodeSpecializationKind, JSC::DebuggerMode, JSC::ProfilerMode, JSC::ParserError&amp;, JSC::SourceParseMode) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x9165a1)
    #5 0x10adeae0f in JSC::ScriptExecutable::newCodeBlockFor(JSC::CodeSpecializationKind, JSC::JSFunction*, JSC::JSScope*, JSC::JSObject*&amp;) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x916e0f)
    #6 0x10a5374c9 in JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, JSC::JSFunction*, JSC::JSScope*, JSC::CodeSpecializationKind) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x634c9)
    #7 0x10b2a603c in JSC::LLInt::setUpCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0xdd203c)
    #8 0x10b2a027a in llint_entry (JavaScriptCore.framework/Versions/A/JavaScriptCore+0xdcc27a)
    #9 0x10b04d09d in vmEntryToJavaScript (JavaScriptCore.framework/Versions/A/JavaScriptCore+0xb7909d)
    #10 0x10a53bb54 in JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x67b54)
    #11 0x10a53b7b1 in JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x677b1)
    #12 0x10b11d167 in JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0xc49167)
    #13 0x10ec4251d in JSC::JSJobMicrotask::run(JSC::ExecState*) (WebCore.framework/Versions/A/WebCore+0x13ea51d)
    #14 0x10ecf1c15 in WebCore::JSMainThreadExecState::runTask(JSC::ExecState*, JSC::Microtask&amp;) (WebCore.framework/Versions/A/WebCore+0x1499c15)
    #15 0x10e25e518 in WebCore::JSDOMWindowMicrotaskCallback::call() (WebCore.framework/Versions/A/WebCore+0xa06518)
    #16 0x10f49b0d5 in WebCore::ActiveDOMCallbackMicrotask::run() (WebCore.framework/Versions/A/WebCore+0x1c430d5)
    #17 0x10eb59652 in WebCore::MicrotaskQueue::performMicrotaskCheckpoint() (WebCore.framework/Versions/A/WebCore+0x1301652)
    #18 0x10eb59437 in WebCore::JSMainThreadExecState::~JSMainThreadExecState() (WebCore.framework/Versions/A/WebCore+0x1301437)
    #19 0x10f9bfc2b in WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (WebCore.framework/Versions/A/WebCore+0x2167c2b)
    #20 0x10f9bf692 in WebCore::ScheduledAction::executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValue, WebCore::ScriptExecutionContext&amp;) (WebCore.framework/Versions/A/WebCore+0x2167692)
    #21 0x10da5d6a6 in WebCore::ScheduledAction::execute(WebCore::Document&amp;) (WebCore.framework/Versions/A/WebCore+0x2056a6)
    #22 0x10d878b24 in WebCore::DOMTimer::fired() (WebCore.framework/Versions/A/WebCore+0x20b24)
    #23 0x10d87893f in WebCore::ThreadTimers::sharedTimerFiredInternal() (WebCore.framework/Versions/A/WebCore+0x2093f)
    #24 0x7fff9763f2e3 in WebCore::timerFired(__CFRunLoopTimer*, void*) (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0xb72e3)
    #25 0x7fff9763ef72 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0xb6f72)
    #26 0x7fff976b253c in __CFRunLoopDoTimer (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x12a53c)
    #27 0x7fff975fa607 in __CFRunLoopDoTimers (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x72607)
    #28 0x7fff975f9bd7 in __CFRunLoopRun (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x71bd7)
    #29 0x10954f2cd in CFRunLoopRunSpecific (DumpRenderTree+0x1000222cd)
    #30 0x10954e849 in 0x000000010954f2cd (DumpRenderTree+0x100021849)
    #31 0x10954db77 in 0x000000010954e849 (DumpRenderTree+0x100020b77)
    #32 0x10954fbd1 in 0x000000010954db77 (DumpRenderTree+0x100022bd1)
    #33 0x7fff94e6e5c8 in 0x000000010954fbd1 (/usr/lib/system/libdyld.dylib+0x35c8)
    #34 0x1  (&lt;unknown module&gt;)
 
0x6130003fd448 is located 72 bytes inside of 384-byte region [0x6130003fd400,0x6130003fd580)
freed by thread T0 here:
    #0 0x109675679 in start (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/7.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x42679)
    #1 0x10b5dbdf0 in wrap_free (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x1107df0)
    #2 0x10a954551 in bmalloc::Deallocator::deallocateSlowCase(void*) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x480551)
    #3 0x10a9544ad in WTF::SegmentedVector&lt;JSC::RegisterID, 32ul&gt;::deleteAllSegments() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x4804ad)
    #4 0x10a535456 in WTF::SegmentedVector&lt;JSC::RegisterID, 32ul&gt;::~SegmentedVector() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x61456)
    #5 0x10b50249a in JSC::BytecodeGenerator::~BytecodeGenerator() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x102e49a)
    #6 0x10b501fd6 in JSC::generateUnlinkedFunctionCodeBlock(JSC::VM&amp;, JSC::UnlinkedFunctionExecutable*, JSC::SourceCode const&amp;, JSC::CodeSpecializationKind, JSC::DebuggerMode, JSC::ProfilerMode, JSC::UnlinkedFunctionKind, JSC::ParserError&amp;, JSC::SourceParseMode) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x102dfd6)
    #7 0x10adea5a1 in JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor(JSC::VM&amp;, JSC::SourceCode const&amp;, JSC::CodeSpecializationKind, JSC::DebuggerMode, JSC::ProfilerMode, JSC::ParserError&amp;, JSC::SourceParseMode) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x9165a1)
    #8 0x10adeae0f in JSC::ScriptExecutable::newCodeBlockFor(JSC::CodeSpecializationKind, JSC::JSFunction*, JSC::JSScope*, JSC::JSObject*&amp;) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x916e0f)
    #9 0x10a5374c9 in JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, JSC::JSFunction*, JSC::JSScope*, JSC::CodeSpecializationKind) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x634c9)
    #10 0x10b2a603c in JSC::LLInt::setUpCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0xdd203c)
    #11 0x10b2a027a in llint_entry (JavaScriptCore.framework/Versions/A/JavaScriptCore+0xdcc27a)
    #12 0x10b04d09d in vmEntryToJavaScript (JavaScriptCore.framework/Versions/A/JavaScriptCore+0xb7909d)
    #13 0x10a53bb54 in JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x67b54)
    #14 0x10a53b7b1 in JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x677b1)
    #15 0x10b11d167 in JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0xc49167)
    #16 0x10ec4251d in JSC::JSJobMicrotask::run(JSC::ExecState*) (WebCore.framework/Versions/A/WebCore+0x13ea51d)
    #17 0x10ecf1c15 in WebCore::JSMainThreadExecState::runTask(JSC::ExecState*, JSC::Microtask&amp;) (WebCore.framework/Versions/A/WebCore+0x1499c15)
    #18 0x10e25e518 in WebCore::JSDOMWindowMicrotaskCallback::call() (WebCore.framework/Versions/A/WebCore+0xa06518)
    #19 0x10f49b0d5 in WebCore::ActiveDOMCallbackMicrotask::run() (WebCore.framework/Versions/A/WebCore+0x1c430d5)
    #20 0x10eb59652 in WebCore::MicrotaskQueue::performMicrotaskCheckpoint() (WebCore.framework/Versions/A/WebCore+0x1301652)
    #21 0x10eb59437 in WebCore::JSMainThreadExecState::~JSMainThreadExecState() (WebCore.framework/Versions/A/WebCore+0x1301437)
    #22 0x10f9bfc2b in WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (WebCore.framework/Versions/A/WebCore+0x2167c2b)
    #23 0x10f9bf692 in WebCore::ScheduledAction::executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValue, WebCore::ScriptExecutionContext&amp;) (WebCore.framework/Versions/A/WebCore+0x2167692)
    #24 0x10da5d6a6 in WebCore::ScheduledAction::execute(WebCore::Document&amp;) (WebCore.framework/Versions/A/WebCore+0x2056a6)
    #25 0x10d878b24 in WebCore::DOMTimer::fired() (WebCore.framework/Versions/A/WebCore+0x20b24)
    #26 0x10d87893f in WebCore::ThreadTimers::sharedTimerFiredInternal() (WebCore.framework/Versions/A/WebCore+0x2093f)
    #27 0x7fff9763f2e3 in WebCore::timerFired(__CFRunLoopTimer*, void*) (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0xb72e3)
    #28 0x7fff9763ef72 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0xb6f72)
    #29 0x7fff976b253c in __CFRunLoopDoTimer (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x12a53c)
 
previously allocated by thread T0 here:
    #0 0x1096754b0 in __CFRunLoopDoTimers (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/7.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x424b0)
    #1 0x10b5d2520 in wrap_malloc (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x10fe520)
    #2 0x10b596e65 in bmalloc::Allocator::allocateSlowCase(unsigned long) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x10c2e65)
    #3 0x10a959b2b in bmalloc::Allocator::allocate(unsigned long) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x485b2b)
    #4 0x10a935206 in WTF::SegmentedVector&lt;JSC::RegisterID, 32ul&gt;::allocateSegment() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x461206)
    #5 0x10a9152bd in void WTF::SegmentedVector&lt;JSC::RegisterID, 32ul&gt;::append&lt;JSC::VirtualRegister&gt;(JSC::VirtualRegister&amp;&amp;) (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x4412bd)
    #6 0x10a9332e9 in JSC::BytecodeGenerator::newRegister() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x45f2e9)
    #7 0x10a9069b8 in JSC::BytecodeGenerator::addVar() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x4329b8)
    #8 0x10a908688 in JSC::BytecodeGenerator::allocateCalleeSaveSpace() (JavaScriptCore.framework/Versions/A/JavaScriptCore+0x434688)
    #9 0x10b50351a in JSC::BytecodeGenerator::BytecodeGenerator(JSC::VM&amp;, JSC::FunctionNode*, JSC::UnlinkedFunctionCodeBlock*, JSC::DebuggerMode, JSC::ProfilerMode, JSC::VariableEnvironment const*) (JavaScriptCore.framework/Versions/A/
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff91a41286 __pthread_kill + 10
1   libsystem_c.dylib             	0x00007fff97b189b3 abort + 129
2   libclang_rt.asan_osx_dynamic.dylib	0x000000010968ad76 __sanitizer::Abort() + 6
3   libclang_rt.asan_osx_dynamic.dylib	0x000000010967eab1 __asan::AsanDie() + 209
4   libclang_rt.asan_osx_dynamic.dylib	0x000000010968224d __sanitizer::Die() + 29
5   libclang_rt.asan_osx_dynamic.dylib	0x000000010967d801 __asan::ScopedInErrorReport::~ScopedInErrorReport() + 305
6   libclang_rt.asan_osx_dynamic.dylib	0x000000010967d5b6 __asan::ScopedInErrorReport::~ScopedInErrorReport() + 6
7   libclang_rt.asan_osx_dynamic.dylib	0x000000010967d134 __asan_report_error + 3924
8   libclang_rt.asan_osx_dynamic.dylib	0x000000010967da47 __asan_report_load4 + 39
9   com.apple.JavaScriptCore      	0x000000010a936fd6 JSC::RegisterID::deref() + 54
10  com.apple.JavaScriptCore      	0x000000010a5354b0 JSC::BytecodeGenerator::~BytecodeGenerator() + 464
11  com.apple.JavaScriptCore      	0x000000010b50249b JSC::generateUnlinkedFunctionCodeBlock(JSC::VM&amp;, JSC::UnlinkedFunctionExecutable*, JSC::SourceCode const&amp;, JSC::CodeSpecializationKind, JSC::DebuggerMode, JSC::ProfilerMode, JSC::UnlinkedFunctionKind, JSC::ParserError&amp;, JSC::SourceParseMode) + 1147
12  com.apple.JavaScriptCore      	0x000000010b501fd7 JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor(JSC::VM&amp;, JSC::SourceCode const&amp;, JSC::CodeSpecializationKind, JSC::DebuggerMode, JSC::ProfilerMode, JSC::ParserError&amp;, JSC::SourceParseMode) + 119
13  com.apple.JavaScriptCore      	0x000000010adea5a2 JSC::ScriptExecutable::newCodeBlockFor(JSC::CodeSpecializationKind, JSC::JSFunction*, JSC::JSScope*, JSC::JSObject*&amp;) + 514
14  com.apple.JavaScriptCore      	0x000000010adeae10 JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, JSC::JSFunction*, JSC::JSScope*, JSC::CodeSpecializationKind) + 496
15  com.apple.JavaScriptCore      	0x000000010a5374ca JSC::LLInt::setUpCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*) + 522
16  com.apple.JavaScriptCore      	0x000000010b2a603d llint_entry + 23519
17  com.apple.JavaScriptCore      	0x000000010b2a027b vmEntryToJavaScript + 299
18  com.apple.JavaScriptCore      	0x000000010b04d09e JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 350
19  com.apple.JavaScriptCore      	0x000000010a53bb55 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 901
20  com.apple.JavaScriptCore      	0x000000010a53b7b2 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 82
21  com.apple.JavaScriptCore      	0x000000010b11d168 JSC::JSJobMicrotask::run(JSC::ExecState*) + 408
22  com.apple.WebCore             	0x000000010ec4251e WebCore::JSMainThreadExecState::runTask(JSC::ExecState*, JSC::Microtask&amp;) + 222
23  com.apple.WebCore             	0x000000010ecf1c16 WebCore::JSDOMWindowMicrotaskCallback::call() + 262
24  com.apple.WebCore             	0x000000010e25e519 WebCore::ActiveDOMCallbackMicrotask::run() + 41
25  com.apple.WebCore             	0x000000010f49b0d6 WebCore::MicrotaskQueue::performMicrotaskCheckpoint() + 358
26  com.apple.WebCore             	0x000000010eb59653 WebCore::JSMainThreadExecState::~JSMainThreadExecState() + 83
27  com.apple.WebCore             	0x000000010eb59438 WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 248
28  com.apple.WebCore             	0x000000010f9bfc2c WebCore::ScheduledAction::executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValue, WebCore::ScriptExecutionContext&amp;) + 588
29  com.apple.WebCore             	0x000000010f9bf693 WebCore::ScheduledAction::execute(WebCore::Document&amp;) + 467
30  com.apple.WebCore             	0x000000010da5d6a7 WebCore::DOMTimer::fired() + 775
31  com.apple.WebCore             	0x000000010d878b25 WebCore::ThreadTimers::sharedTimerFiredInternal() + 389
32  com.apple.WebCore             	0x000000010d878940 WebCore::timerFired(__CFRunLoopTimer*, void*) + 176
33  com.apple.CoreFoundation      	0x00007fff9763f2e4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
34  com.apple.CoreFoundation      	0x00007fff9763ef73 __CFRunLoopDoTimer + 1059
35  com.apple.CoreFoundation      	0x00007fff976b253d __CFRunLoopDoTimers + 301
36  com.apple.CoreFoundation      	0x00007fff975fa608 __CFRunLoopRun + 2024
37  com.apple.CoreFoundation      	0x00007fff975f9bd8 CFRunLoopRunSpecific + 296
38  DumpRenderTree                	0x000000010954f2ce 0x10952d000 + 139982
39  DumpRenderTree                	0x000000010954e84a 0x10952d000 + 137290
40  DumpRenderTree                	0x000000010954db78 0x10952d000 + 134008
41  DumpRenderTree                	0x000000010954fbd2 0x10952d000 + 142290
42  libdyld.dylib                 	0x00007fff94e6e5c9 start + 1

Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib        	0x00007fff91a42232 kevent64 + 10
1   libdispatch.dylib             	0x00007fff94956a6a _dispatch_mgr_thread + 52

Thread 2:: com.apple.NSURLConnectionLoader
0   libsystem_kernel.dylib        	0x00007fff91a3c4de mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff91a3b64f mach_msg + 55
2   com.apple.CoreFoundation      	0x00007fff975faeb4 __CFRunLoopServiceMachPort + 212
3   com.apple.CoreFoundation      	0x00007fff975fa37b __CFRunLoopRun + 1371
4   com.apple.CoreFoundation      	0x00007fff975f9bd8 CFRunLoopRunSpecific + 296
5   com.apple.CFNetwork           	0x00007fff8c03b420 +[NSURLConnection(Loader) _resourceLoadLoop:] + 434
6   com.apple.Foundation          	0x00007fff97d63e92 __NSThread__main__ + 1345
7   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
8   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
9   libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 3:: WTF Parallel Helper Thread
0   libsystem_kernel.dylib        	0x00007fff91a41136 __psynch_cvwait + 10
1   libc++.1.dylib                	0x00007fff8a7cfc95 std::__1::condition_variable::wait(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;) + 47
2   com.apple.JavaScriptCore      	0x000000010b5a23f3 WTF::ParkingLot::parkConditionally(void const*, std::__1::function&lt;bool ()&gt;, std::__1::function&lt;void ()&gt;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 739
3   com.apple.JavaScriptCore      	0x000000010adce541 bool WTF::ConditionBase::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 273
4   com.apple.JavaScriptCore      	0x000000010b5ad848 WTF::ParallelHelperPool::waitForClientWithTask(WTF::Locker&lt;WTF::LockBase&gt; const&amp;) + 88
5   com.apple.JavaScriptCore      	0x000000010b5ad5b5 WTF::ParallelHelperPool::helperThreadBody() + 341
6   com.apple.JavaScriptCore      	0x000000010a4d88fe WTF::threadEntryPoint(void*) + 286
7   com.apple.JavaScriptCore      	0x000000010a4d87ae WTF::wtfThreadEntryPoint(void*) + 62
8   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
9   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
10  libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 4:: WTF Parallel Helper Thread
0   libsystem_kernel.dylib        	0x00007fff91a41136 __psynch_cvwait + 10
1   libc++.1.dylib                	0x00007fff8a7cfc95 std::__1::condition_variable::wait(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;) + 47
2   com.apple.JavaScriptCore      	0x000000010b5a23f3 WTF::ParkingLot::parkConditionally(void const*, std::__1::function&lt;bool ()&gt;, std::__1::function&lt;void ()&gt;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 739
3   com.apple.JavaScriptCore      	0x000000010adce541 bool WTF::ConditionBase::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 273
4   com.apple.JavaScriptCore      	0x000000010b5ad848 WTF::ParallelHelperPool::waitForClientWithTask(WTF::Locker&lt;WTF::LockBase&gt; const&amp;) + 88
5   com.apple.JavaScriptCore      	0x000000010b5ad5b5 WTF::ParallelHelperPool::helperThreadBody() + 341
6   com.apple.JavaScriptCore      	0x000000010a4d88fe WTF::threadEntryPoint(void*) + 286
7   com.apple.JavaScriptCore      	0x000000010a4d87ae WTF::wtfThreadEntryPoint(void*) + 62
8   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
9   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
10  libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 5:: WTF Parallel Helper Thread
0   libsystem_kernel.dylib        	0x00007fff91a41136 __psynch_cvwait + 10
1   libc++.1.dylib                	0x00007fff8a7cfc95 std::__1::condition_variable::wait(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;) + 47
2   com.apple.JavaScriptCore      	0x000000010b5a23f3 WTF::ParkingLot::parkConditionally(void const*, std::__1::function&lt;bool ()&gt;, std::__1::function&lt;void ()&gt;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 739
3   com.apple.JavaScriptCore      	0x000000010adce541 bool WTF::ConditionBase::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 273
4   com.apple.JavaScriptCore      	0x000000010b5ad848 WTF::ParallelHelperPool::waitForClientWithTask(WTF::Locker&lt;WTF::LockBase&gt; const&amp;) + 88
5   com.apple.JavaScriptCore      	0x000000010b5ad5b5 WTF::ParallelHelperPool::helperThreadBody() + 341
6   com.apple.JavaScriptCore      	0x000000010a4d88fe WTF::threadEntryPoint(void*) + 286
7   com.apple.JavaScriptCore      	0x000000010a4d87ae WTF::wtfThreadEntryPoint(void*) + 62
8   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
9   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
10  libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 6:: WTF Parallel Helper Thread
0   libsystem_kernel.dylib        	0x00007fff91a41136 __psynch_cvwait + 10
1   libc++.1.dylib                	0x00007fff8a7cfc95 std::__1::condition_variable::wait(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;) + 47
2   com.apple.JavaScriptCore      	0x000000010b5a23f3 WTF::ParkingLot::parkConditionally(void const*, std::__1::function&lt;bool ()&gt;, std::__1::function&lt;void ()&gt;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 739
3   com.apple.JavaScriptCore      	0x000000010adce541 bool WTF::ConditionBase::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 273
4   com.apple.JavaScriptCore      	0x000000010b5ad848 WTF::ParallelHelperPool::waitForClientWithTask(WTF::Locker&lt;WTF::LockBase&gt; const&amp;) + 88
5   com.apple.JavaScriptCore      	0x000000010b5ad5b5 WTF::ParallelHelperPool::helperThreadBody() + 341
6   com.apple.JavaScriptCore      	0x000000010a4d88fe WTF::threadEntryPoint(void*) + 286
7   com.apple.JavaScriptCore      	0x000000010a4d87ae WTF::wtfThreadEntryPoint(void*) + 62
8   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
9   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
10  libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 7:: WTF Parallel Helper Thread
0   libsystem_kernel.dylib        	0x00007fff91a41136 __psynch_cvwait + 10
1   libc++.1.dylib                	0x00007fff8a7cfc95 std::__1::condition_variable::wait(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;) + 47
2   com.apple.JavaScriptCore      	0x000000010b5a23f3 WTF::ParkingLot::parkConditionally(void const*, std::__1::function&lt;bool ()&gt;, std::__1::function&lt;void ()&gt;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 739
3   com.apple.JavaScriptCore      	0x000000010adce541 bool WTF::ConditionBase::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 273
4   com.apple.JavaScriptCore      	0x000000010b5ad848 WTF::ParallelHelperPool::waitForClientWithTask(WTF::Locker&lt;WTF::LockBase&gt; const&amp;) + 88
5   com.apple.JavaScriptCore      	0x000000010b5ad5b5 WTF::ParallelHelperPool::helperThreadBody() + 341
6   com.apple.JavaScriptCore      	0x000000010a4d88fe WTF::threadEntryPoint(void*) + 286
7   com.apple.JavaScriptCore      	0x000000010a4d87ae WTF::wtfThreadEntryPoint(void*) + 62
8   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
9   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
10  libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 8:: WTF Parallel Helper Thread
0   libsystem_kernel.dylib        	0x00007fff91a41136 __psynch_cvwait + 10
1   libc++.1.dylib                	0x00007fff8a7cfc95 std::__1::condition_variable::wait(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;) + 47
2   com.apple.JavaScriptCore      	0x000000010b5a23f3 WTF::ParkingLot::parkConditionally(void const*, std::__1::function&lt;bool ()&gt;, std::__1::function&lt;void ()&gt;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 739
3   com.apple.JavaScriptCore      	0x000000010adce541 bool WTF::ConditionBase::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 273
4   com.apple.JavaScriptCore      	0x000000010b5ad848 WTF::ParallelHelperPool::waitForClientWithTask(WTF::Locker&lt;WTF::LockBase&gt; const&amp;) + 88
5   com.apple.JavaScriptCore      	0x000000010b5ad5b5 WTF::ParallelHelperPool::helperThreadBody() + 341
6   com.apple.JavaScriptCore      	0x000000010a4d88fe WTF::threadEntryPoint(void*) + 286
7   com.apple.JavaScriptCore      	0x000000010a4d87ae WTF::wtfThreadEntryPoint(void*) + 62
8   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
9   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
10  libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 9:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 10:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 11:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 12:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 13:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 14:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 15:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 16:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 17:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 18:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 19:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 20:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 21:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 22:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 23:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 24:: com.apple.CFSocket.private
0   libsystem_kernel.dylib        	0x00007fff91a413fa __select + 10
1   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
2   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
3   libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 25:: com.apple.coremedia.asyncio
0   libsystem_kernel.dylib        	0x00007fff91a41136 __psynch_cvwait + 10
1   com.apple.CoreMedia           	0x00007fff8cfda471 WaitOnCondition + 11
2   com.apple.CoreMedia           	0x00007fff8cfda27e FigSemaphoreWaitRelative + 156
3   com.apple.MediaToolbox        	0x00007fff956cfe6b 0x7fff9569f000 + 200299
4   com.apple.CoreMedia           	0x00007fff8cfdaef5 figThreadMain + 417
5   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
6   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
7   libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 26:: com.apple.coreaudio.AQClient
0   libsystem_kernel.dylib        	0x00007fff91a3c4de mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff91a3b64f mach_msg + 55
2   com.apple.CoreFoundation      	0x00007fff975faeb4 __CFRunLoopServiceMachPort + 212
3   com.apple.CoreFoundation      	0x00007fff975fa37b __CFRunLoopRun + 1371
4   com.apple.CoreFoundation      	0x00007fff975f9bd8 CFRunLoopRunSpecific + 296
5   com.apple.audio.toolbox.AudioToolbox	0x00007fff92da0d2a GenericRunLoopThread::Entry(void*) + 194
6   com.apple.audio.toolbox.AudioToolbox	0x00007fff92da0bb7 CAPThread::Entry(CAPThread*) + 109
7   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
8   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
9   libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 27:: DFG Worklist Worker Thread
0   libsystem_kernel.dylib        	0x00007fff91a41136 __psynch_cvwait + 10
1   libc++.1.dylib                	0x00007fff8a7cfc95 std::__1::condition_variable::wait(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;) + 47
2   com.apple.JavaScriptCore      	0x000000010b5a23f3 WTF::ParkingLot::parkConditionally(void const*, std::__1::function&lt;bool ()&gt;, std::__1::function&lt;void ()&gt;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 739
3   com.apple.JavaScriptCore      	0x000000010adce541 bool WTF::ConditionBase::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 273
4   com.apple.JavaScriptCore      	0x000000010adc7d6b JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*) + 795
5   com.apple.JavaScriptCore      	0x000000010a4d88fe WTF::threadEntryPoint(void*) + 286
6   com.apple.JavaScriptCore      	0x000000010a4d87ae WTF::wtfThreadEntryPoint(void*) + 62
7   libsystem_pthread.dylib       	0x00007fff8dfac05a _pthread_body + 131
8   libsystem_pthread.dylib       	0x00007fff8dfabfd7 _pthread_start + 176
9   libsystem_pthread.dylib       	0x00007fff8dfa93ed thread_start + 13

Thread 28:
0   libsystem_kernel.dylib        	0x00007fff91a4194a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8dfa93dd start_wqthread + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000000000006  rcx: 0x00007fff566cdb68  rdx: 0x0000000000000000
  rdi: 0x0000000000000d0f  rsi: 0x0000000000000006  rbp: 0x00007fff566cdb90  rsp: 0x00007fff566cdb68
   r8: 0xb5002d7272e3ee26   r9: 0x0000000000000001  r10: 0x0000000008000000  r11: 0x0000000000000206
  r12: 0x00007fff566ce580  r13: 0x00000001096974f3  r14: 0x00007fff7a9ab300  r15: 0x000000010969314c
  rip: 0x00007fff91a41286  rfl: 0x0000000000000206  cr2: 0x00007fff7be3d070
  
Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146730</commentid>
    <comment_count>4</comment_count>
      <attachid>266747</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-06 17:26:27 -0800</bug_when>
    <thetext>Created attachment 266747
Manual rollout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146732</commentid>
    <comment_count>5</comment_count>
      <attachid>266747</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-06 17:28:40 -0800</bug_when>
    <thetext>Comment on attachment 266747
Manual rollout

Rejecting attachment 266747 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 266747, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/525984</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146733</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-06 17:29:27 -0800</bug_when>
    <thetext>Attachment 266747 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Executable.cpp:498:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/Executable.cpp:498:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/Executable.h:396:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Executable.h:396:  The parameter name &quot;vm&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Executable.h:396:  The parameter name &quot;source&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 in 57 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>1146734</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-06 17:55:24 -0800</bug_when>
    <thetext>Committed r193606: &lt;http://trac.webkit.org/changeset/193606&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266746</attachid>
            <date>2015-12-06 17:09:11 -0800</date>
            <delta_ts>2015-12-06 17:25:16 -0800</delta_ts>
            <desc>ROLLOUT of r193584</desc>
            <filename>bug-151929-20151206170843.patch</filename>
            <type>text/plain</type>
            <size>138214</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NTA4MjcyOTU2YjBmMWNhNmM1NTNjMTc5MWJhZDZlODEyNTJiMmY2Li40NzIyODFiM2QxZjM4ZDQz
NzVjN2IxYTkyNGE5NzRjOTdiM2ZmMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0xMi0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5MzU4NC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTkyOQorCisgICAg
ICAgICJDYXVzZXMgaGVhcCB1c2UtYWZ0ZXItZnJlZSBjcmFzaGVzIGluIFdlYiBJbnNwZWN0b3Ig
dGVzdHMKKyAgICAgICAgd2l0aCBBZGRyZXNzU2FuaXRpemVyIiAoUmVxdWVzdGVkIGJ5IGRka2ls
emVyIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAg
ICAiW0VTNl0gInN1cGVyIiBhbmQgInRoaXMiIHNob3VsZCBiZSBsZXhpY2FsbHkgYm91bmQgaW5z
aWRlIGFuCisgICAgICAgIGFycm93IGZ1bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBhIEpTTGV4
aWNhbEVudmlyb25tZW50IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ5MzM4CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzE5MzU4NAorCiAyMDE1LTEyLTA1IEFsZWtzYW5kciBTa2FjaGtvdiAgIDxnc2thY2hrb3ZAZ21h
aWwuY29tPgogCiAgICAgICAgIFtFUzZdICJzdXBlciIgYW5kICJ0aGlzIiBzaG91bGQgYmUgbGV4
aWNhbGx5IGJvdW5kIGluc2lkZSBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgc2hvdWxkIGxpdmUgaW4g
YSBKU0xleGljYWxFbnZpcm9ubWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCBiODAwZjUxM2U5ZmFhYTU0YTI0
MmQ1ZTEyNDM3ZjUwYzdmOWQ1NmQ4Li5hOWU2OWJlYTZlZWFlNTc4YjkyZDk4OWUxZTg5MTkxYTMz
NDg5OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzCiAgICAgfQogICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHks
IEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIGZhbHNlLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRv
clRoaXNNb2RlOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VP
dmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVlKHZtLCBqc1N0
cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCmluZGV4IDE1ZDQwZjk1NzcxNzE0NDQ4MjFjMDc5ODFiMDU2NmFhNjVjMjJlZDUuLjQzZDcw
MTI0MTk2ZGQzNjJjYzY0NGY5M2EyMWY5ZjgxZTg3YmIzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTkyLDcgKzkyLDcgQEAK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0
aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJy
b3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19hcnJvd19mdW5jX2V4cCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfY2FsbCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfdGFpbF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9jYWxsX2V2YWwiLCAibGVuZ3RoIiA6IDkgfSwKQEAgLTEyOSw2ICsxMjksNyBAQAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUiLCAibGVuZ3Ro
IiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VudW1lcmF0b3JfZ2VuZXJpY19w
bmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5k
ZXhfc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9s
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMzMyMDQ3ZWFlN2NjNmIy
Yzc0OTQ4MzM4MTkzNGU2MDdiYWJmMTIwYS4uZmUwMjZmYWFmOWVjYjkyMjRhZTNkYWEwY2E2MjU1
YTVmOWFmYWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgKQEAgLTU3LDYgKzU3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBv
cF9nZXRfc2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9wcm9m
aWxlX3dpbGxfY2FsbDoKQEAgLTM5Miw2ICszOTMsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
YwogICAgIGNhc2Ugb3BfdG9fdGhpczoKICAgICBjYXNlIG9wX2NoZWNrX3RkejoKICAgICBjYXNl
IG9wX2dldF9zY29wZToKKyAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAg
IGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2Nv
cGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGFl
ZWJkYzk1Y2Y2YjZkN2ZlZmI0ODQ0NDY3N2UxMTIyNWI4MzVjYzQuLjRlZDc5NWYxN2I0ZjdlZmQ5
NjhjMmY1MzBiYzI0YTIyMGQ5ZTFkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC03NjksNiArNzY5LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJh
bmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfc2NvcGUiLCByMCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90
aGlzOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImxvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgcjApOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjcmVhdGVfZGlyZWN0X2Fy
Z3VtZW50cyIpOwpAQCAtMTMyMiw4ICsxMzI3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSgKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
b3BfbmV3X2Fycm93X2Z1bmNfZXhwIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
IGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwg
ZjApOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0ZXJOYW1l
KHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9uZXdfZnVuY19leHA6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXZhbENvZGVDYWNoZS5oCmluZGV4IDg2OTEzMTY5MmE5MzRhNzVhNjQzY2U1NWY5ZTBkOTc3YTg1
YWMxMGEuLjgzNzAzY2ZhOTIyY2M2MjcxMjg1ZjU5MzhlMmE4MjBmOGJlZGIwNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtNTUsMTIg
KzU1LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Nj
b3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhp
c1REWk1vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVy
VERaOwogICAgICAgICAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3Bl
LCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4
ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgdGhpc1REWk1vZGUsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgJnZhcmlhYmxlc1VuZGVyVERaKTsKLQorICAgICAgICAgICAg
RXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShl
eGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFibGVz
VW5kZXJURFopOwogICAgICAgICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCBhYWMzOTA0ZmYwMzRjOWU2MDcxNGZlOTkzNjU0OWZl
OTVkNGExMWU1Li4yNjAyYmU3YzRmYmVjZTlkZWE1MDIxOGZlMTRiNTY1MWZiNDdiOGJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFy
c2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3Jn
YW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0
Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRz
QWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25z
dHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIGJvb2wgaXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAgRXhl
Y3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNT
dHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRv
clRoaXNNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAg
ICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlz
U3RyaWN0TW9kZSkKQEAgLTQ0LDggKzQ0LDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAg
ICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0
b3JLaW5kKSkKICAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3VwZXJCaW5kaW5nKSkKICAgICAgICAgLCBtX3BhcnNlTW9kZShwYXJzZU1vZGUpCi0gICAgICAg
ICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoaXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dChpc0Fycm93RnVuY3Rpb25D
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICAgICAgQVNTRVJUKG1fc3Vw
ZXJCaW5kaW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKQEAgLTYx
LDggKzU5LDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JL
aW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGlu
Zyk7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJzZU1vZGU7IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9Ci0gICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250
ZXh0OyB9CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0FjdGl2YXRpb24gOiAxOwpA
QCAtNzQsOCArNzAsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5k
IDogMjsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAgU291cmNlUGFyc2VN
b2RlIG1fcGFyc2VNb2RlOwotICAgIHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0IDogMTsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAxOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA4YTdkMDI2NzkzZDQ2YjgyNWZiZjNl
Zjc2NTJhNTQzODM5NjUwNDYzLi44N2U4MjMzZjFmZTNhOGJlYzQwMjMwZDI5OGIwOWU2ZGZmOWEz
ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKQEAgLTY3LDggKzY3LDYgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUK
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0
cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpc01vZGUoKSkpCiAgICAgLCBtX3N1cGVyQmluZGluZyhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5zdXBlckJpbmRpbmcoKSkpCi0gICAgLCBtX2lzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dChpbmZvLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgp
KQotICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KGluZm8uaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCgpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAg
LCBtX2VuZENvbHVtbihVSU5UX01BWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYmVjNmUwODYxMWRjNWYwOTRmNzlhYjg1
YzEzMzVhOTExYjlmOTExYi4uYmNhMmMwNGFjYTQzODI5MjE3NTY5NThiYWE2OGRiMzBlOGYxMzVj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTExOSw5ICsxMTksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsgfQotICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0
aW9uQ29udGV4dDsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTM5Niw4ICszOTMsNiBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBt
X2dlbmVyYXRvclRoaXNNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7
Ci0gICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOwotICAgIHVu
c2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2Zp
cnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCmluZGV4IDBjN2Y0NTI3MWEyNzYyMjA2Mjk4NTJiMDYwZjVlN2ZiMDZiNmMwNGIuLjNmNDk0
ODg1YWY0OWMyOGUyNmY0OTdkNjc1ZjY0YTE2YzliOWFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcApAQCAtNjcsOCArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJl
Y29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0g
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAg
ICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9u
LT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRh
YmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhpc01vZGUoKSwg
ZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgIGV4ZWN1dGFibGUtPmlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSkpOwotCisgICAgICAgIEV4ZWN1dGFibGVJ
bmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1
bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlv
bktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9y
S2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBl
ckJpbmRpbmcoKSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxl
cygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9y
LmlzVmFsaWQoKSkKQEAgLTc2LDcgKzc1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RB
YmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNN
b2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9vbCBp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNl
T3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNN
b2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcykKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9k
ZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQpA
QCAtMTAyLDcgKzEwMSw2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgLCBtX2Z1bmN0
aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKICAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSkKICAgICAsIG1fc3VwZXJC
aW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5zdXBlckJpbmRpbmcoKSkpCi0gICAg
LCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CmluZGV4IGZhMjFlMzg3MDA3MWJjMWEwMGZjYTU1ZjI5OTRjNWE3YzlkYWViMGUuLmM4YmJhMGFj
MzJiZTQzN2ZmYjVkZjNlM2Y5ZTA1YjA0NzhhNTM2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JU
aGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBSZWZQdHI8
U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1l
bnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRG
dW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAg
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRl
KSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRv
clRoaXNNb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5m
aW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAt
MTI4LDEzICsxMjgsOSBAQCBwdWJsaWM6CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9j
b25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAg
Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9Ci0gICAgYm9vbCBpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7cmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0OyB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKLSAgICAKKyAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVy
YXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgV3JpdGVCYXJyaWVyPFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwogICAg
IFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNjYsNyArMTYyLDYgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQogICAgIHVuc2lnbmVkIG1f
Z2VuZXJhdG9yVGhpc01vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsK
LSAgICB1bnNpZ25lZCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA6IDE7CiAKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggYTZiMWNhYjlmMDVlZjJkYjgwY2Q0ZWNhNzgyOWFiMTg2ZTIzYTY3NC4uNDQ1ZDNkNWNkNGMw
NjQ2NTdlNjEyMjg4MzA4NjVmOWZjZjJhZTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE1Nyw4
ICsxNTcsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQ
cm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgICwgbV90aGlzUmVnaXN0ZXIo
Q2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFs
Q29kZSkKICAgICAsIG1fdm0oJnZtKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoZmFsc2UpCi0gICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9n
cmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKQEAgLTE4OSwxMSArMTg3LDYgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1O
b2RlLCBVbmxpbmtlZFAKICAgICAvLyBvcGVyYXRpb25zIHdlIGVtaXQgd2Ugd2lsbCBoYXZlIFJl
c29sdmVUeXBlcyB0aGF0IGltcGxpY3RseSBkbyBURFogY2hlY2tzLiBUaGVyZWZvcmUsIHdlIGRv
bid0IG5lZWQKICAgICAvLyBhZGRpdGlvbmFsIFREWiBjaGVja3Mgb24gdG9wIG9mIHRob3NlLiBU
aGlzIGlzIHdoeSB3ZSBjYW4gb21pdCBwdXNoaW5nIHByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFi
bGVzKCkKICAgICAvLyB0byB0aGUgVERaIHN0YWNrLgotICAgIAotICAgIGlmIChuZWVkc1RvVXBk
YXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSkgewotICAgICAgICBpbml0aWFsaXplQXJyb3dGdW5j
dGlvbkNvbnRleHRTY29wZUlmTmVlZGVkKCk7Ci0gICAgICAgIGVtaXRQdXRUaGlzVG9BcnJvd0Z1
bmN0aW9uQ29udGV4dFNjb3BlKCk7Ci0gICAgfQogfQogCiBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcykKQEAgLTIxMSw4ICsyMDQsNiBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9k
ZSwgVW5saW5rZQogICAgIC8vIGNvbXBhdGlibGUgd2l0aCB0YWlsIGNhbGxzICh3ZSBoYXZlIG5v
IHdheSBvZiBlbWl0dGluZyBvcF9kaWRfY2FsbCkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRp
b25zOjp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAmJiAhbV9zaG91
bGRFbWl0UHJvZmlsZUhvb2tzKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQo
Y29kZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKLSAgICAsIG1fbmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rp
b24oKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNFdmFsKCkpCiB7CiAgICAgZm9yIChhdXRvJiBjb25z
dGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBjb25z
dGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTIzOSwxMCArMjMwLDcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2UKICAgICB9CiAKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29k
ZUJsb2NrLT5wYXJzZU1vZGUoKTsKLQotICAgIGJvb2wgY29udGFpbnNBcnJvd09yRXZhbEJ1dE5v
dEluQXJyb3dCbG9jayA9IG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmICFt
X2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7Ci0gICAgYm9vbCBzaG91bGRDYXB0dXJlU29t
ZU9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVl
ZHNGdWxsU2NvcGVDaGFpbigpIHx8IGNvbnRhaW5zQXJyb3dPckV2YWxCdXROb3RJbkFycm93Qmxv
Y2s7Ci0KKyAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CiAgICAg
Ym9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
IHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gZnVu
Y3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogCkBA
IC01MjIsOCArNTEwLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBtX25ld1Rhcmdl
dFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKLSAgICAgICAgaWYgKGZ1bmN0
aW9uTm9kZS0+dXNlc1RoaXMoKSkKLSAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1
bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CisgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVz
ZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAgICAgICAgZW1pdExvYWRB
cnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTU3NCwxMyArNTYyLDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBtX1RE
WlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGZh
bHNlKSk7CiAgICAgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0
aW9uU2NvcGVTdGFjayhwYXJhbWV0ZXJzLCBmdW5jdGlvbk5vZGUsIGZ1bmN0aW9uU3ltYm9sVGFi
bGUsIHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY2FwdHVyZXMpOwogCi0gICAgaWYgKG5lZWRz
VG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5j
dGlvbigpKSB7Ci0gICAgICAgIGluaXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlSWZO
ZWVkZWQoZnVuY3Rpb25TeW1ib2xUYWJsZSk7Ci0gICAgICAgIGVtaXRQdXRUaGlzVG9BcnJvd0Z1
bmN0aW9uQ29udGV4dFNjb3BlKCk7Ci0gICAgICAgIGVtaXRQdXROZXdUYXJnZXRUb0Fycm93RnVu
Y3Rpb25Db250ZXh0U2NvcGUoKTsKLSAgICAgICAgZW1pdFB1dERlcml2ZWRDb25zdHJ1Y3RvclRv
QXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwotICAgIH0KLQogICAgIHB1c2hMZXhpY2FsU2Nv
cGUobV9zY29wZU5vZGUsIHRydWUpOwogfQogCkBAIC01OTMsOCArNTc0LDYgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBV
bmxpbmtlZEV2YWxDb2QKICAgICAsIG1fY29kZVR5cGUoRXZhbENvZGUpCiAgICAgLCBtX3ZtKCZ2
bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoY29kZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKLSAgICAsIG1f
bmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5j
dGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQogewogICAgIGZvciAoYXV0byYgY29uc3Rh
bnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3Rh
bnRSZWdpc3RlciA9IG51bGxwdHI7CkBAIC02MjQsMTQgKzYwMyw2IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5r
ZWRFdmFsQ29kCiAKICAgICBtX1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIGZhbHNlKSk7CiAKLSAgICBpZiAoY29kZUJsb2NrLT5pc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgJiYgZXZhbE5vZGUtPnVzZXNUaGlzKCkpCi0gICAgICAgIGVtaXRM
b2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7Ci0KLSAgICBpZiAo
bmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgIWNvZGVCbG9jay0+aXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCgpKSB7Ci0gICAgICAgIGluaXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29u
dGV4dFNjb3BlSWZOZWVkZWQoKTsKLSAgICAgICAgZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25D
b250ZXh0U2NvcGUoKTsKLSAgICB9Ci0gICAgCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3Bl
Tm9kZSwgdHJ1ZSk7CiB9CiAKQEAgLTY0NCw4ICs2MTUsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3Jh
bU5vZAogICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQogICAgICwgbV92bSgmdm0pCiAgICAg
LCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQoZmFsc2UpCi0gICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4
dChtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBtb2R1bGVQcm9ncmFt
Tm9kZS0+dXNlc0V2YWwoKSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKQEAgLTg4MSw1OSAr
ODUwLDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0
ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGEKICAgICB9CiB9CiAKLXZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmluaXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQo
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQotewotICAgIGlmIChtX2Fycm93RnVuY3Rpb25Db250
ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgIT0gbnVsbHB0cikKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIGlmIChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9IG51bGxwdHIp
IHsKLSAgICAgICAgbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lz
dGVyID0gbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcjsKLSAgICAgICAgCi0gICAgICAgIGlm
ICghbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBTY29wZU9m
ZnNldCBvZmZzZXQ7Ci0KLSAgICAgICAgICAgIG9mZnNldCA9IHN5bWJvbFRhYmxlLT50YWtlTmV4
dFNjb3BlT2Zmc2V0KCk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS0+c2V0KHByb3BlcnR5TmFt
ZXMoKS50aGlzSWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9m
ZnNldCkpKTsKLQotICAgICAgICAgICAgaWYgKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlKSB7
Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZz
ZXQoKTsKLSAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+c2V0KHByb3BlcnR5TmFtZXMoKS5u
ZXdUYXJnZXRMb2NhbFByaXZhdGVOYW1lLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZz
ZXQob2Zmc2V0KSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCkgewotICAgICAgICAgICAgICAgIG9mZnNldCA9IHN5bWJvbFRhYmxlLT50YWtl
TmV4dFNjb3BlT2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPnNldChwcm9w
ZXJ0eU5hbWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUuaW1wbCgpLCBTeW1ib2xU
YWJsZUVudHJ5KFZhck9mZnNldChvZmZzZXQpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbnZp
cm9ubWVudDsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IGVudmlyb25tZW50LmFkZChwcm9wZXJ0eU5h
bWVzKCkudGhpc0lkZW50aWZpZXIpOwotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0
SXNDYXB0dXJlZCgpOwotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0SXNDb25zdCgp
OwotICAgIAotICAgIGlmIChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSkgIHsKLSAgICAgICAg
YXV0byBhZGRUYXJnZXQgPSBlbnZpcm9ubWVudC5hZGQocHJvcGVydHlOYW1lcygpLm5ld1Rhcmdl
dExvY2FsUHJpdmF0ZU5hbWUpOwotICAgICAgICBhZGRUYXJnZXQuaXRlcmF0b3ItPnZhbHVlLnNl
dElzQ2FwdHVyZWQoKTsKLSAgICAgICAgYWRkVGFyZ2V0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0xl
dCgpOwotICAgIH0KLQotICAgIGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKSB7Ci0gICAgICAgIGF1dG8gZGVyaXZlZENv
bnN0cnVjdG9yID0gZW52aXJvbm1lbnQuYWRkKHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3Ry
dWN0b3JQcml2YXRlTmFtZSk7Ci0gICAgICAgIGRlcml2ZWRDb25zdHJ1Y3Rvci5pdGVyYXRvci0+
dmFsdWUuc2V0SXNDYXB0dXJlZCgpOwotICAgICAgICBkZXJpdmVkQ29uc3RydWN0b3IuaXRlcmF0
b3ItPnZhbHVlLnNldElzTGV0KCk7Ci0gICAgfQotCi0gICAgc2l6ZV90IHNpemUgPSBtX3N5bWJv
bFRhYmxlU3RhY2suc2l6ZSgpOwotICAgIHB1c2hMZXhpY2FsU2NvcGVJbnRlcm5hbChlbnZpcm9u
bWVudCwgdHJ1ZSwgbnVsbHB0ciwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaLCBTY29wZVR5cGU6
OkxldENvbnN0U2NvcGUsIFNjb3BlUmVnaXN0ZXJUeXBlOjpCbG9jayk7Ci0KLSAgICBBU1NFUlRf
VU5VU0VEKHNpemUsIG1fc3ltYm9sVGFibGVTdGFjay5zaXplKCkgPT0gc2l6ZSArIDEpOwotCi0g
ICAgbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gbV9z
eW1ib2xUYWJsZVN0YWNrLmxhc3QoKS5tX3Njb3BlOwotfQotCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKQogewogICAgIFZpcnR1YWxSZWdp
c3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChtX2NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKTsKQEAgLTE5NzYsOSArMTg5Miw5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbihWYXJpYWJsZUVudmly
CiAgICAgfQogfQogCi1WYXJpYWJsZSBCeXRlY29kZUdlbmVyYXRvcjo6dmFyaWFibGUoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHksIFRoaXNSZXNvbHV0aW9uVHlwZSB0aGlzUmVzb2x1dGlvblR5
cGUpCitWYXJpYWJsZSBCeXRlY29kZUdlbmVyYXRvcjo6dmFyaWFibGUoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHkpCiB7Ci0gICAgaWYgKHByb3BlcnR5ID09IHByb3BlcnR5TmFtZXMoKS50aGlz
SWRlbnRpZmllciAmJiB0aGlzUmVzb2x1dGlvblR5cGUgPT0gVGhpc1Jlc29sdXRpb25UeXBlOjpM
b2NhbCkgeworICAgIGlmIChwcm9wZXJ0eSA9PSBwcm9wZXJ0eU5hbWVzKCkudGhpc0lkZW50aWZp
ZXIpIHsKICAgICAgICAgcmV0dXJuIFZhcmlhYmxlKHByb3BlcnR5LCBWYXJPZmZzZXQodGhpc1Jl
Z2lzdGVyKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgdGhpc1JlZ2lzdGVyKCksCiAgICAgICAgICAg
ICBSZWFkT25seSwgVmFyaWFibGU6OlNwZWNpYWxWYXJpYWJsZSwgMCwgZmFsc2UpOwogICAgIH0K
QEAgLTI2NzMsNiArMjU4OSw5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5j
dGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGlu
ZGV4KTsKKyAgICAKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwKQor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1JlZ2lzdGVyKCktPmluZGV4KCkpOwog
fQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYykKQEAgLTI2ODMsNyArMjYw
MiwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhw
cmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwg
QXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0gICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCkt
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOyAgICAK
KyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBt
X2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZTsKKyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yIHx8IGdlbmVyYXRv
clRoaXNNb2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5KQorICAgICAgICBlbWl0VERa
Q2hlY2sodGhpc1JlZ2lzdGVyKCkpOworICAgIAogICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Np
b25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQpAQCAtMzI5Miw2ICszMjE1
LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9jYXRlQW5kRW1pdFNjb3BlKCkKICAg
ICBtX3RvcE1vc3RTY29wZSA9IGFkZFZhcigpOwogICAgIGVtaXRNb3ZlKG1fdG9wTW9zdFNjb3Bl
LCBzY29wZVJlZ2lzdGVyKCkpOwogfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcyhSZWdpc3RlcklEKiBhcnJvd0Z1bmN0aW9uVGhpcykK
K3sKKyAgICBlbWl0T3Bjb2RlKG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYXJyb3dGdW5jdGlvblRoaXMtPmluZGV4KCkpOworICAgIHJldHVy
biBhcnJvd0Z1bmN0aW9uVGhpczsKK30KICAgICAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDb21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQqIHNjb3BlLCBDb250cm9sRmxvd0NvbnRleHQq
IHRvcFNjb3BlLCBDb250cm9sRmxvd0NvbnRleHQqIGJvdHRvbVNjb3BlKQogewpAQCAtMzk3OCw2
NCArMzkwOCw2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcEluZGV4ZWRGb3JJblNjb3Bl
KFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIpCiAgICAgbV9mb3JJbkNvbnRleHRTdGFjay5yZW1v
dmVMYXN0KCk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEFy
cm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKQotewotICAgIEFTU0VSVChtX2NvZGVCbG9j
ay0+aXNBcnJvd0Z1bmN0aW9uKCkgfHwgbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSB8fCBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpOwot
ICAgIAotICAgIG1fcmVzb2x2ZWRBcnJvd0Z1bmN0aW9uU2NvcGVDb250ZXh0UmVnaXN0ZXIgPSBl
bWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS50aGlzSWRl
bnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBlOjpTY29wZWQpKTsKLSAgICByZXR1cm4gbV9yZXNv
bHZlZEFycm93RnVuY3Rpb25TY29wZUNvbnRleHRSZWdpc3Rlci5nZXQoKTsKLX0KLQotdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52
aXJvbm1lbnQoKQotewotICAgIGVtaXRHZXRGcm9tU2NvcGUodGhpc1JlZ2lzdGVyKCksIGVtaXRM
b2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpLCB2YXJpYWJsZShwcm9wZXJ0eU5h
bWVzKCkudGhpc0lkZW50aWZpZXIsIFRoaXNSZXNvbHV0aW9uVHlwZTo6U2NvcGVkKSwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQpOwotfQotICAgIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKQot
ewotICAgIG1faXNOZXdUYXJnZXRMb2FkZWRJbkFycm93RnVuY3Rpb24gPSB0cnVlOwotCi0gICAg
VmFyaWFibGUgbmV3VGFyZ2V0VmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLm5ld1Rhcmdl
dExvY2FsUHJpdmF0ZU5hbWUpOwotICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGVt
aXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIGVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGlj
YWxFbnZpcm9ubWVudCgpLCBuZXdUYXJnZXRWYXIsIFRocm93SWZOb3RGb3VuZCkpOwotICAgIAot
ICAgIHJldHVybiBtX25ld1RhcmdldFJlZ2lzdGVyOwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdExvYWREZXJpdmVkQ29uc3RydWN0b3JGcm9tQXJyb3dGdW5jdGlvbkxl
eGljYWxFbnZpcm9ubWVudCgpCi17Ci0gICAgVmFyaWFibGUgcHJvdG9TY29wZVZhciA9IHZhcmlh
YmxlKHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7Ci0gICAg
cmV0dXJuIGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIGVtaXRMb2FkQXJyb3dGdW5j
dGlvbkxleGljYWxFbnZpcm9ubWVudCgpLCBwcm90b1Njb3BlVmFyLCBUaHJvd0lmTm90Rm91bmQp
OwotfQotICAgIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dE5ld1RhcmdldFRvQXJy
b3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCi17Ci0gICAgQVNTRVJUKG1fYXJyb3dGdW5jdGlvbkNv
bnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciAhPSBudWxscHRyKTsKLSAgICAgICAgCi0g
ICAgVmFyaWFibGUgbmV3VGFyZ2V0VmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLm5ld1Rh
cmdldExvY2FsUHJpdmF0ZU5hbWUpOwotICAgIGVtaXRQdXRUb1Njb3BlKG1fYXJyb3dGdW5jdGlv
bkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgbmV3VGFyZ2V0VmFyLCBuZXdUYXJn
ZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uKTsKLX0KLSAgICAKLXZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVkQ29uc3RydWN0b3JUb0Fycm93RnVu
Y3Rpb25Db250ZXh0U2NvcGUoKQotewotICAgIGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKSB7Ci0gICAgICAgIEFTU0VS
VChtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgIT0gbnVs
bHB0cik7Ci0gICAgICAgICAgICAKLSAgICAgICAgVmFyaWFibGUgcHJvdG9TY29wZSA9IHZhcmlh
YmxlKHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7Ci0gICAg
ICAgIGVtaXRQdXRUb1Njb3BlKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1l
bnRSZWdpc3RlciwgcHJvdG9TY29wZSwgJm1fY2FsbGVlUmVnaXN0ZXIsIERvTm90VGhyb3dJZk5v
dEZvdW5kLCBJbml0aWFsaXphdGlvbik7Ci0gICAgfQotfQotICAgIAotdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQotewotICAg
IEFTU0VSVChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSB8fCBtX2Fycm93RnVuY3Rpb25D
b250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgIT0gbnVsbHB0cik7Ci0gICAgICAgIAot
ICAgIGlmIChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKLSAgICAgICAgZW1pdExvYWRB
cnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7Ci0KLSAgICBWYXJpYWJsZSB0aGlzVmFy
ID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyLCBUaGlzUmVzb2x1dGlv
blR5cGU6OlNjb3BlZCk7Ci0gICAgZW1pdFB1dFRvU2NvcGUoaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkgPyBtX3Jlc29sdmVkQXJyb3dGdW5jdGlvblNjb3BlQ29udGV4dFJlZ2lzdGVyLmdl
dCgpIDogbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCB0
aGlzVmFyLCB0aGlzUmVnaXN0ZXIoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIE5vdEluaXRpYWxp
emF0aW9uKTsKLX0KLQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFN0cnVjdHVyZUZvcklu
U2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJl
Z2lzdGVyKQogewogICAgIGlmICghbG9jYWxSZWdpc3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1YzEw
NTc0YWRmOGYxNWMwNTgwNTQwZWY0NmYxMTIwMGI0N2VkNDgxLi4wZWE0OWE0MmM2YTg4MzlkNTMz
MDE1MjI4MmZlNmJiM2YyMmZkNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC02Niw4ICs2Niw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBFeHBlY3RBcnJheUNvbnN0cnVjdG9yCiAgICAgfTsKIAot
ICAgIGVudW0gY2xhc3MgVGhpc1Jlc29sdXRpb25UeXBlIHsgTG9jYWwsIFNjb3BlZCB9OwotICAg
IAogICAgIGNsYXNzIENhbGxBcmd1bWVudHMgewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FsbEFy
Z3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBhZGRp
dGlvbmFsQXJndW1lbnRzID0gMCk7CkBAIC0yODIsMTEgKzI4MCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBjb25zdCBDb21tb25JZGVudGlmaWVycyYgcHJvcGVydHlOYW1lcygpIGNvbnN0
IHsgcmV0dXJuICptX3ZtLT5wcm9wZXJ0eU5hbWVzOyB9CiAKICAgICAgICAgYm9vbCBpc0NvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQot
ICAgICAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKTsgfQotICAgICAgICBi
b29sIHVzZXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNB
cnJvd0Z1bmN0aW9uKCk7IH0KLSAgICAgICAgYm9vbCBuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29u
dGV4dDsgfQotICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5v
ZGUtPnVzZXNFdmFsKCk7IH0KLSAgICAgICAgYm9vbCB1c2VzVGhpcygpIGNvbnN0IHsgcmV0dXJu
IG1fc2NvcGVOb2RlLT51c2VzVGhpcygpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JLaW5k
KCk7IH0KICAgICAgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jay0+Z2VuZXJhdG9yVGhpc01vZGUoKTsgfQogICAgICAgICBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1
cGVyQmluZGluZygpOyB9CkBAIC0yOTUsNyArMjg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgYm9vbCBpc0FyZ3VtZW50TnVtYmVyKGNvbnN0IElkZW50aWZpZXImLCBpbnQpOwogCi0g
ICAgICAgIFZhcmlhYmxlIHZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXImLCBUaGlzUmVzb2x1dGlv
blR5cGUgPSBUaGlzUmVzb2x1dGlvblR5cGU6OkxvY2FsKTsKKyAgICAgICAgVmFyaWFibGUgdmFy
aWFibGUoY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICAgICAgZW51bSBFeGlzdGlu
Z1ZhcmlhYmxlTW9kZSB7IFZlcmlmeUV4aXN0aW5nLCBJZ25vcmVFeGlzdGluZyB9OwogICAgICAg
ICB2b2lkIGNyZWF0ZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXImLCBWYXJLaW5kLCBTeW1ib2xU
YWJsZSosIEV4aXN0aW5nVmFyaWFibGVNb2RlID0gVmVyaWZ5RXhpc3RpbmcpOyAvLyBDcmVhdGVz
IHRoZSB2YXJpYWJsZSwgb3IgYXNzZXJ0cyB0aGF0IHRoZSBhbHJlYWR5LWNyZWF0ZWQgdmFyaWFi
bGUgaXMgc3VmZmljaWVudGx5IGNvbXBhdGlibGUuCkBAIC0zMDMsMTEgKzI5Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAvLyBSZXR1cm5zIHRoZSByZWdpc3RlciBzdG9yaW5nICJ0aGlz
IgogICAgICAgICBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIoKSB7IHJldHVybiAmbV90aGlzUmVn
aXN0ZXI7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogYXJndW1lbnRzUmVnaXN0ZXIoKSB7IHJldHVy
biBtX2FyZ3VtZW50c1JlZ2lzdGVyOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIG5ld1RhcmdldCgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5j
dGlvbigpIHx8IG1faXNOZXdUYXJnZXRMb2FkZWRJbkFycm93RnVuY3Rpb24KLSAgICAgICAgICAg
ICAgICA/IG1fbmV3VGFyZ2V0UmVnaXN0ZXIgOiBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1
bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7Ci0gICAgICAgIH0KKyAgICAgICAgUmVnaXN0ZXJJ
RCogbmV3VGFyZ2V0KCkgeyByZXR1cm4gbV9uZXdUYXJnZXRSZWdpc3RlcjsgfQogCiAgICAgICAg
IFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0ZXIoKSB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0K
IApAQCAtNDk1LDEwICs0ODQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
UHJvZmlsZVR5cGUoUmVnaXN0ZXJJRCogcmVnaXN0ZXJUb1Byb2ZpbGUsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBzdGFydERpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kRGl2b3QpOwogCiAg
ICAgICAgIHZvaWQgZW1pdFByb2ZpbGVDb250cm9sRmxvdyhpbnQpOwotICAgICAgICAKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7
Ci0gICAgICAgIHZvaWQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJv
bm1lbnQoKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dG
dW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRM
b2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2Fk
KFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYpOwpAQCAtNjQzLDEwICs2MjgsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0R2V0U2NvcGUoKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpOwog
ICAgICAgICB2b2lkIGVtaXRQb3BXaXRoU2NvcGUoKTsKLSAgICAgICAgdm9pZCBlbWl0UHV0VGhp
c1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwotICAgICAgICB2b2lkIGVtaXRQdXROZXdU
YXJnZXRUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKLSAgICAgICAgdm9pZCBlbWl0UHV0
RGVyaXZlZENvbnN0cnVjdG9yVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKTsKIAogICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdI
b29rSUQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNoYXJPZmZzZXQsIHVuc2lnbmVkIGxpbmVT
dGFydCk7CiAKQEAgLTczOSw2ICs3MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
b2lkIGFsbG9jYXRlQ2FsbGVlU2F2ZVNwYWNlKCk7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVBbmRF
bWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhp
cyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0
ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4dCog
Ym90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+
IE51bWJlck1hcDsKQEAgLTc5MCw4ICs3NzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBtYWtlRnVuY3Rpb24oRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKQogICAgICAgICB7Ci0gICAgICAgICAgICBib29sIG5l
d2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAobV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgJiYg
bWV0YWRhdGEtPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUpOwotCiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERa
OwogICAgICAgICAgICAgZ2V0VmFyaWFibGVzVW5kZXJURFoodmFyaWFibGVzVW5kZXJURFopOwog
CkBAIC04MTAsNyArNzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgJiYgaXNDb25zdHJ1
Y3RvcigpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvclRoaXNNb2RlID0gR2VuZXJhdG9yVGhp
c01vZGU6OkVtcHR5OwogCi0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1
aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1h
bEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzTW9kZSwgdmFyaWFibGVz
VW5kZXJURFosIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgICAgICAgICBy
ZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9k
ZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBn
ZW5lcmF0b3JUaGlzTW9kZSwgdmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC04
MjEsNyArODAxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBh
cmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZh
ckxleGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKICAgICAg
ICAgdm9pZCBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25T
Y29wZVN0YWNrKEZ1bmN0aW9uUGFyYW1ldGVycyYsIEZ1bmN0aW9uTm9kZSosIFN5bWJvbFRhYmxl
KiwgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
IChVbmlxdWVkU3RyaW5nSW1wbCopPiYgY2FwdHVyZXMpOwotICAgICAgICB2b2lkIGluaXRpYWxp
emVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQoU3ltYm9sVGFibGUqID0gbnVsbHB0
cik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChj
b25zdCBJZGVudGlmaWVyJik7CkBAIC04NjQsOCArODQzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAg
ICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tMaW5rVGltZUNvbnN0
YW50Q291bnRdOwotICAgICAgICBSZWdpc3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4
aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07Ci0gICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBtX3Jlc29sdmVkQXJyb3dGdW5jdGlvblNjb3BlQ29udGV4dFJlZ2lzdGVyOwogCiAg
ICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklEKiwgMTY+IG1fbG9jYWxSZWdpc3RlcnNG
b3JDYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgMzI+IG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzOwpAQCAtOTIxLDkgKzg5OCw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24geyBmYWxzZSB9Owog
ICAgICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWwgeyBmYWxzZSB9OwogICAgICAgICBib29s
IG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9OwotICAgICAgICBib29sIG1faXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0IHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVB
cnJvd0Z1bmN0aW9uQ29udGV4dDsKLSAgICAgICAgYm9vbCBtX2lzTmV3VGFyZ2V0TG9hZGVkSW5B
cnJvd0Z1bmN0aW9uIHsgZmFsc2UgfTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYWRkOTc5YzU0
NzgwMmI0MDIwZGViYjY4MjI0ZTMyYzIyMDE1MmY3My4uOTk1NjFiYzdlZDU4OGI2ZjgwZDBlOWMx
YzY2NjU0M2QxNjNhNmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTQ2LDEwICsxNDYsNyBAQCBSZWdpc3RlcklE
KiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZ2Vu
ZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBn
ZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkpCi0gICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgp
OwotCi0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmdl
bmVyYXRvclRoaXNNb2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5IHx8IGdlbmVyYXRv
ci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICBpZiAobV9zaG91bGRBbHdheXNF
bWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0
b3JUaGlzTW9kZTo6RW1wdHkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJh
dG9yLnRoaXNSZWdpc3RlcigpKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkKQEAgLTE2OCw5ICsxNjUsNiBAQCBSZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAg
IGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQotICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCksIGdlbmVyYXRvci5lbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvckZyb21BcnJvd0Z1
bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5k
ZXJzY29yZVByb3RvKTsKLQogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJ
bmRleChKU1N0YWNrOjpDYWxsZWUpOwogCkBAIC03MDIsMjEgKzY5Niw2IEBAIENhbGxBcmd1bWVu
dHM6OkNhbGxBcmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgQXJndW1lbnRz
Tm9kZSogYXJndW1lCiAKIFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewot
ICAgIC8vIFdlIG5lZWQgdHJ5IHRvIGxvYWQgJ3RoaXMnIGJlZm9yZSBjYWxsIGV2YWwgaW4gY29u
c3RydWN0b3IsIGJlY2F1c2UgJ3RoaXMnIGNhbiBjcmVhdGVkIGJ5ICdzdXBlcicgaW4gc29tZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24KLSAgICAvLyB2YXIgQSA9IGNsYXNzIEEgewotICAgIC8vICAg
Y29uc3RydWN0b3IgKCkgeyB0aGlzLmlkID0gJ0EnOyB9Ci0gICAgLy8gfQotICAgIC8vCi0gICAg
Ly8gdmFyIEIgPSBjbGFzcyBCIGV4dGVuZCBBIHsKLSAgICAvLyAgICBjb25zdHJ1Y3RvciAoKSB7
Ci0gICAgLy8gICAgICAgdmFyIGFycm93ID0gKCkgPT4gc3VwZXIoKTsKLSAgICAvLyAgICAgICBh
cnJvdygpOwotICAgIC8vICAgICAgIGV2YWwoInRoaXMuaWQgPSAnQiciKTsKLSAgICAvLyAgICB9
Ci0gICAgLy8gfQotICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3Ry
dWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0
aW9uTGV4aWNhbEVudmlyb25tZW50KCk7Ci0KICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKICAgICBpZiAoUmVnaXN0
ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZnVuYyA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGxvY2FsKTsKQEAgLTc0NCwxNiArNzIzLDExIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0LCBmdW5jLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGlmIChtX2V4cHItPmlzU3VwZXJOb2RlKCkpIHsKLSAg
ICAgICAgQVNTRVJUKGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKTsKLSAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5jb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmlz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKTsKKyAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5p
c0NvbnN0cnVjdG9yKCkpOworICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3VGFyZ2V0KCkp
OwogICAgICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChyZXR1
cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCByZXQpOwotICAgICAgICAKLSAg
ICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yS2luZERlcml2ZWQgPSBnZW5lcmF0b3IuY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkOwotICAgICAgICBpZiAoZ2VuZXJh
dG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIHx8IChpc0NvbnN0cnVjdG9yS2luZERl
cml2ZWQgJiYgZ2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKSkK
LSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRT
Y29wZSgpOwotICAgICAgICAKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkp
OwpAQCAtMzA3OCw5ICszMDUyLDYgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogICAgICAgICAvLyBJ
ZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAg
ICAgICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5jb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgZ2VuZXJhdG9yLm5l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKQotICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOyAv
LyBBcnJvdyBmdW5jdGlvbiBjYW4gaW52b2tlICdzdXBlcicgaW4gY29uc3RydWN0b3IgYW5kIGJl
Zm9yZSBsZWF2ZSBjb25zdHJ1Y3RvciB3ZSBuZWVkIGxvYWQgJ3RoaXMnIGZyb20gbGV4aWNhbCBh
cnJvdyBmdW5jdGlvbiBlbnZpcm9ubWVudAotICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWdp
c3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVu
Y3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9y
IHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUu
CiAgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmNwcAppbmRleCBkNTQwNTUwZjVlMTRkNjAyYTk5Mjg4MGViYTBlNmQxOWJlNjgzNzA0Li5k
MzgzYzNmZmQwODIwZjhhMmI3MWU4N2M0NTUyZGY3N2QwNjU0ZjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTE5
Niw3ICsxOTYsNyBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBT
dHJpbmcmIHNjcmlwdCwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgZQogICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1Vu
ZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgRXZh
bEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFr
ZVNvdXJjZShzY3JpcHQpLCBjb2RlQmxvY2suaXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBj
b2RlQmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KCksIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgJnZh
cmlhYmxlc1VuZGVyVERaKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIGNvZGVCbG9jay5pc1N0
cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgaWYgKHZt
LmV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IHZtLmV4Y2VwdGlvbigpOwogICAg
ICAgICB2bS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDgyNDY1NWYz
MDdkNzNhYzVjYTE3MzY5YmRkMTk1OGRmZjNlMGFjMzMuLjM2MTMxNzg3OWNjNzJiZjU0OThiZWIz
OThiZGMwODVjNTY2NWMwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE4MTAsNiArMTgxMCwx
NSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUobV9ncmFwaCwgU3BlY09iamVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNl
IExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKKyAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKKyAgICAgICAgICAgIEpTQXJyb3dGdW5jdGlv
biogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGJhc2UpOworICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5ib3Vu
ZFRoaXMoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNGaW5hbE9iamVjdCk7CisgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCiAgICAgY2FzZSBTa2lwU2NvcGU6IHsKICAgICAgICAgSlNWYWx1ZSBj
aGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGls
ZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCBiYWE2ZTRiZjBkYmU5NDJkMDI1OTUyMzRiNWJmMzQ5ZDNiYTdlMWZkLi45OTk1MmI3
MTdkYTg1NTIwZTgzZWEyMTJmMDUwNTA1MTI5MzVmMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDUwNyw2ICs0NTA3LDE3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LCByZXN1bHQpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3Njb3BlKTsKICAgICAg
ICAgfQorCisgICAgICAgIGNhc2Ugb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6IHsKKyAgICAg
ICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVl
KSk7CisgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAgICAgICBpZiAoSlNBcnJvd0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Fycm93RnVu
Y3Rpb24qPigpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzQ29uc3RhbnQoZnVuY3Rpb24t
PmJvdW5kVGhpcygpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBhZGRUb0dyYXBoKExvYWRBcnJvd0Z1bmN0aW9uVGhpcywgY2FsbGVlKTsKKyAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIHJl
c3VsdCk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhp
cyk7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NyZWF0ZV9kaXJl
Y3RfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKQEAgLTQ1
NTYsMjAgKzQ1NjcsMjQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jKTsKICAgICAgICAg
fQogCi0gICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgotICAgICAgICBjYXNlIG9wX25ld19h
cnJvd19mdW5jX2V4cDogeworICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmco
ZXhwcik7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTmV3RnVuY3Rpb24s
IE9wSW5mbyhmcm96ZW4pLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7Cisg
ICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4cHIgPSBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKTsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0
cm9uZyhleHByKTsKKworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE5ld0Fy
cm93RnVuY3Rpb24sIE9wSW5mbyhmcm96ZW4pLAorICAgICAgICAgICAgICAgICAgICBnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSwKKyAgICAgICAg
ICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kKSkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG9wY29kZUlEID09IG9w
X25ld19mdW5jX2V4cCkgewotICAgICAgICAgICAgICAgIC8vIEN1cmx5IGJyYWNlcyBhcmUgbmVj
ZXNzYXJ5Ci0gICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gQ3VybHkgYnJhY2VzIGFyZSBu
ZWNlc3NhcnkKLSAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfYXJyb3dfZnVuY19l
eHApOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Fycm93
X2Z1bmNfZXhwKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfdHlwZW9mOiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNjE2NDk3
MjZkMDBiODA4ZTdkNzViMDQwZDVhNGUwMjIyZjEwNjM1Zi4uN2E1ZWMzZjJhODk2ZWViMDM3ODkz
N2E0MjZiMDQxMmMxNWNmZTIxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcApAQCAtMjAyLDYgKzIwMiw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBh
YmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0
cnVjCiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBjYXNlIG9wX2luOgogICAgIGNhc2Ug
b3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ugb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAg
Y2FzZSBvcF9nZXRfZnJvbV9zY29wZToKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0
aDoKICAgICBjYXNlIG9wX2hhc19nZW5lcmljX3Byb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBhNWZhYjgzYzI3MzgxNmM5ZDk2MDM0ZDBhMWU5
MmQ4ZjIwZmM3ZDQwLi40MTdkMDZmNzAzOWI0YmJmZDI4ZWE5ZmZjOGYxNThjOGU0N2U2MTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTM5LDYgKzEz
OSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBBcml0aENvczoKICAgICBj
YXNlIEFyaXRoTG9nOgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5j
dGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0
OgogICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDE2Zjk3M2QwOTYzMTYxMjZiNGEyYWJmZjY2ZTViYzZiN2U0NGI5
ZmQuLmIyNmUwYTVmMzgzYTAwYTAyZWJmMjhlMTg1NTc5MjM5NDlhYmY3NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0ZXJmbHlSZWFk
T25seToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNl
IExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNlIEdl
dENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMzFiMDQ2YTcyODUwYzQzMGY4MjdmOTVh
Mjk0YjRkOGNkZDkxNmRmMi4uYjIxOTQ1MmE5MzM4NTdhZDFiOGRlMjFlMzYyZTA5MjZkYzMwZjM1
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0x
MDI2LDYgKzEwMjYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6IHsKKyAgICAgICAgICAgIGZp
eEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNj
b3BlOgogICAgICAgICBjYXNlIEdldEdldHRlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAppbmRleCAwMDhkOGM3MzI4MzJhMzNiODFlMmQ2Mzg3ZDNhMWQyYWQ0YzYzNDM1
Li4yZWQzY2U0ZGFhNGU3ODBmMDY5ZWNiOWI5YWFjNTg2ZjM4OWMxYWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDcsNiArMjA3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMy
KSBcCiAgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE5vZGVSZXN1bHRJbnQzMikg
XAorICAgIG1hY3JvKExvYWRBcnJvd0Z1bmN0aW9uVGhpcywgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNraXBTY29wZSwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0Q2xvc3VyZVZhciwgTm9kZVJlc3VsdEpTKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCAxMmFiMTYzNzMzZmExODQxY2I4YmM0MjkyMTk1
YWQ0MzVhNTIyOTZjLi5kYjhkZDZmYjQ5MjJlZTM5YzMzODY3MjEzZjViM2Y5YjdiZmJmYzI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTgzOCwxNCArODM4LDE3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOiB7CisgICAgICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG5vZGUtPm9wKCkgPT0g
TmV3QXJyb3dGdW5jdGlvbjsKICAgICAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFuZDxGdW5j
dGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkg
ewogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIEFsbG9jYXRpb246
OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHRhcmdldCA9ICZtX2hlYXAubmV3QWxsb2Nh
dGlvbihub2RlLCBpc0Fycm93RnVuY3Rpb24gPyBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1
bmN0aW9uIDogQWxsb2NhdGlvbjo6S2luZDo6RnVuY3Rpb24pOwogICAgICAgICAgICAgd3JpdGVz
LmFkZChGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLCBMYXp5Tm9kZShub2RlLT5jZWxsT3BlcmFuZCgp
KSk7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MsIExhenlO
b2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOworICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5j
dGlvbikKKyAgICAgICAgICAgICAgICB3cml0ZXMuYWRkKEFycm93RnVuY3Rpb25Cb3VuZFRoaXNQ
TG9jLCBMYXp5Tm9kZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTEwMTUsNiArMTAxOCwxNCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAg
ICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25B
bGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJv
dW5kVGhpc1BMb2M7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVz
Y2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IAogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9u
bHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlm
ICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0aW9uQWxsb2NhdGlvbigpKQpAQCAtMjAzNCw4ICsy
MDQ1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAg
ICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjogeworICAgICAgICAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24gPSBub2RlLT5vcCgpID09IE5ld0Fycm93RnVuY3Rpb247CiAgICAgICAgICAgICBW
ZWN0b3I8UHJvbW90ZWRIZWFwTG9jYXRpb24+IGxvY2F0aW9ucyA9IG1fbG9jYXRpb25zRm9yQWxs
b2NhdGlvbi5nZXQoZXNjYXBlZSk7Ci0gICAgICAgICAgICBBU1NFUlQobG9jYXRpb25zLnNpemUo
KSA9PSAyKTsKKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09IChpc0Fycm93
RnVuY3Rpb24gPyAzIDogMikpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgUHJvbW90
ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLCBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4ZWN1dGFibGUs
IGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7CkBAIC0yMDQ0LDYgKzIwNTYsMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYWN0aXZhdGlv
bikpOwogCiAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVkZ2UocmVzb2x2ZShibG9jaywg
YWN0aXZhdGlvbiksIEtub3duQ2VsbFVzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
IChpc0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBQcm9tb3RlZEhlYXBMb2NhdGlv
biBib3VuZFRoaXMoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIGFsbG9jYXRpb24uaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25zLmNvbnRhaW5zKGJvdW5k
VGhpcykpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMigpID0gRWRnZShyZXNvbHZlKGJs
b2NrLCBib3VuZFRoaXMpLCBDZWxsVXNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRl
eCBjODBlODMwN2QwZDIzZWU3ZmI4NWUwYjA1ZmVhNTYwNTBiZmNkZjlkLi40MGNlYzc2MDMyNDUx
MTAxMjk2NTg5OTJlN2E5YjJjNGM5ZTk1MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
NjE2LDYgKzYxNiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVk
aWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBj
YXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJl
ZGljdGlvbihTcGVjRmluYWxPYmplY3QpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAg
Y2FzZSBJbjoKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjQm9vbGVh
bik7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKaW5kZXggMjRmNjk3NzBlZGI4ZDI0YTk3
MjQ3MGQ0MGY5MGU5NmU1NzhhOTk3Mi4uOGZlMTU5MTczY2VhYjM5ZDljNzE3ZWU0NzA1NTUzZjg0
NzNlNjQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHAKQEAgLTEwMiw2ICsxMDIsMTAgQEAgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIFByb21vdGVkTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2Fz
ZSBDbG9zdXJlVmFyUExvYzoKICAgICAgICAgb3V0LnByaW50KCJDbG9zdXJlVmFyUExvYyIpOwog
ICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEFycm93RnVuY3Rpb25Cb3VuZFRoaXNQTG9jOgor
ICAgICAgICBvdXQucHJpbnQoIkFycm93RnVuY3Rpb25Cb3VuZFRoaXNQTG9jIik7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9j
YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uaAppbmRleCBiNGUzYzJiZjU5ZjYxOWQ2OGQyZjc5YmJlMjc1YWM5OTQ3ZjllZmI4Li45NzI5
M2YzYTAxODUyZDE5MWU3OTVmMjM4OGI2MWYxMzFlOWNhNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCkBAIC00Niw3ICs0
Niw4IEBAIGVudW0gUHJvbW90ZWRMb2NhdGlvbktpbmQgewogICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZVBMb2MsCiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAgICBBY3RpdmF0aW9uU2NvcGVQ
TG9jLAotICAgIENsb3N1cmVWYXJQTG9jCisgICAgQ2xvc3VyZVZhclBMb2MsCisgICAgQXJyb3dG
dW5jdGlvbkJvdW5kVGhpc1BMb2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5k
ZXggNjE2YzNiMDgyMjIxOWNiMWQwYTJlZDMwNTJkZjQ1YzAxOWJlOGE0Ni4uZjVjNjhkYjgyNGUx
NWZhN2Q2Njc4YTJmM2RkNjZiMzA0YWFkMjM5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIwMiw2ICsyMDIsNyBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAg
Y2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAgICBjYXNl
IFNraXBTY29wZToKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJl
VmFyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCBjOTRhZDZiNzM3MzhkOGFmMzAxMmVhMWExYTkzODdjYWJiOTA5N2NmLi4yNzI3MzRk
MmZiNjg2NWQ4NzAxMTQwYzcxNmVhNGE1OGY4MmEyYmM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNDg0Miw2ICs0ODQyLDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRTY29wZShOb2RlKiBub2RlKQogICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rp
b246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgcmVzdWx0LmdwcigpKTsKICAgICBjZWxsUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CisKKyAgICAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVMb2FkQXJyb3dGdW5jdGlvblRoaXMoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgZnVuY3Rpb24pOworICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb24uZ3ByKCksIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0
T2ZUaGlzVmFsdWUoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOworfQogICAgIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNraXBTY29w
ZShOb2RlKiBub2RlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCmluZGV4IGM0MmJhMzFjZjYxY2EzMGQ2YmRiNzUyMzA1YzAzYTJlNzJjZjI0YmYu
Ljg2NjBiMDRmMDhjMGVhZmM1NTU0NjVlODM0ZDMwOGUxZDQzYjNlMWEgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTIyMDAsNiArMjIwMCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1lbnRzKE5v
ZGUqKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRTY29wZShOb2RlKik7CisgICAgdm9pZCBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTa2lw
U2NvcGUoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggNmUwZjE0NjZiMDI4YzdjNzljZGVlZGM0ZjQ4MjdhZmEyNTU1ZWYyZi4uYjBj
NGU5NDdjNmM0MDQ5NWU3YzgxYWIyMTJhOGM1YmZlMTQ4ZGIwYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNzk5
LDYgKzM3OTksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNvbXBpbGVHZXRTY29wZShub2RlKTsKICAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKKyAgICAgICAgY29t
cGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhub2RlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAgY29tcGlsZVNraXBTY29wZShub2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IGYxMTgyMmQ3MTdlN2JmODg0MWZlOTQyYmJkNjZlMWYwZTM1MzUxNjYuLjU3MDMz
MmNkMDA1MzRmMDk3ZWYyYjFlYTQ2NzUyOGJkZjE1ODExZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzgzNyw2ICszODM3
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
Y29tcGlsZUdldFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAg
IGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVu
Y3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2Ug
U2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCA4NzI4ZDllNTE5ZWUzMGYxNjFiMWU5MjhhMzFiYzc3ZjI5MzM0NGYxLi42NGE0ODIyNzA5Mjg2
YzI3Yjg4NmE3ZmM2Mzg2MzlkMTRhMTJmMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNTIsNiArMTUyLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlv
bjoKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNl
IExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdl
dEFyZ3VtZW50Q291bnQ6CiAgICAgY2FzZSBUb1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggMmJlNmIwNDg5ZTRkZDAxY2Y4
NTU3Y2JhYjI0NDkxZTc5MmU2ZDYzMy4uMWVlMDIxODQ3NGUzNWU3ZmI5MTUzMjM5MmUwZmRhNmM1
NmJlMmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAKQEAgLTgxMiw2ICs4MTIsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFNj
b3BlOgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21waWxl
TG9hZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTQ1NTcsNiArNDU2MCwxMSBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Z1
bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUxvYWRBcnJvd0Z1
bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25fdGhpcykpOwor
ICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQogICAgIHsKICAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVh
cHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmNwcAppbmRleCAzNzAxNWI2NWFmN2UwODY1ZTA5NzNkNWJiNjMxNTRlMTJiYzEwZmE5Li5j
MzY3MmU4NTE3MTc2ODk1NDY0OWE5MTEwNTg5NTJmMWM4ZTZmODY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE2NCwxNyArMTY0LDI1IEBAIGV4
dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0
SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJsZSBhbmQgYWN0
aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbnVs
bHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIEpT
VmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5z
aXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9w
ZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAgICAgICAgaWYg
KHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoRnVuY3Rp
b25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGpzQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CiAgICAgICAg
ICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
cihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAgICBhY3RpdmF0aW9uID0g
anNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAgICAg
ICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihB
cnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAgICAgICBpc0Fycm93RnVu
Y3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9IEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKICAgICAgICAgCi0gICAgICAgIEpT
RnVuY3Rpb24qIHJlc3VsdCA9IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOworICAgICAgICBK
U0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAgICAgICAgID8gSlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZt
LCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAgICAgICAgICA6IEpTRnVu
Y3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4
ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggZDYxZDJkYTNkNmMyZDM3YmRiMDAwYzIwNjUyYmJiZDk1MmYxYmM1YS4uNzVlZDhjZjdi
YzRjZWQ2MTk4NzZmZDc2ZGYwZjBiYWU1OWVjMDZiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xODAsOCArMTgwLDcgQEAg
SlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICAvLyBJZiB0aGUgbGl0
ZXJhbCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlvbnMu
CiAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKIAotICAgICAg
ICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJh
bWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhp
c1REWk1vZGUsIGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0KCksIGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KS0+aXNBcnJvd0Z1bmN0aW9uKCksIHNvdXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwotCisg
ICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNh
bGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
LCB0aGlzVERaTW9kZSwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAgICAgICAgIGlm
ICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBiOTQyNGVlZjA2NzYzMWExZGNmOTdmZWIwMDY4MTk1
OTZkYzc5MzU0Li5hYjA1ZTgwN2Y2MTk3Mjc0MjFiMTA4ZTM5N2Y1YTgzM2UxZmI0NzA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMjMsNiArMjIzLDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZW5kKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZW50ZXIpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGUpCisg
ICAgICAgIERFRklORV9PUChvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcykKICAgICAgICAgREVG
SU5FX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfT1Aob3BfZXFfbnVsbCkKICAgICAgICAgY2Fz
ZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMTczNzUz
NDBmNzMzMzFiYWUxZDQxYTJiMDIyY2Y1ZWVkYzZiY2Q4Yy4uZDRiODJlNzQ1ZTg0Y2FmNTg1YWEz
ZDNjMzI0Y2Q3Yzg4YzEyZDNiZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDIsNiAr
NTAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9lcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVs
bChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0
aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA2NDY2
M2MxN2M1YTI0ZmE5ZGM0MjA5ZjUxNjA1NDA1ZGY4ZTVhN2ExLi5hMWJjMTZjMDFiOWVhZDNjYTQz
MGNjMmY3MDE0ZDcyOTg3MjgxMDJiIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTY2Nyw2ICs2NjcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3Bl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QwKTsKICAgICBlbWl0
U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQorICAgIAordm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9h
cnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSks
IHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOworfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05
NjEsMTQgKzk2OSwyMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhw
ckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogeworICAgIE9wY29kZUlE
IG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVj
dGlvbi0+dS5vcGNvZGUpOworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gb3Bjb2RlSUQgPT0g
b3BfbmV3X2Fycm93X2Z1bmNfZXhwOworICAgIAogICAgIEp1bXAgbm90VW5kZWZpbmVkU2NvcGU7
CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQs
IHJlZ1QxKTsKICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDY0KE5vdEVxdWFsLCByZWdU
MCwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOwogICAgIHN0
b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIEFkZHJl
c3MoY2FsbEZyYW1lUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBkc3QpKTsKICNlbHNlCiAg
ICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1Qw
KTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKSB7CisgICAgICAgIGludCB2YWx1ZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CisgICAgICAgIGVtaXRMb2FkKHZhbHVlLCByZWdU
MywgcmVnVDIpOworICAgIH0KICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCB0YWdGb3IoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5l
ZCgpKTsKICNlbmRpZgpAQCAtOTc2LDE1ICs5OTMsMjAgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5j
RXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG5vdFVuZGVm
aW5lZFNjb3BlLmxpbmsodGhpcyk7CiAgICAgICAgIAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotCi0gICAgaWYgKG9w
Y29kZUlEID09IG9wX25ld19mdW5jX2V4cCB8fCBvcGNvZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVu
Y19leHApCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwg
cmVnVDAsIGZ1bmN0aW9uKTsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwg
ZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyNlbHNlIAorICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdU
MywgcmVnVDIpOworI2VuZGlmCiAgICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChvcGNvZGVJRCA9
PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAg
ICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJh
dG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgfQogICAgIH0KLQog
ICAgIGRvbmUubGluayh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDg5NDU1ZWRjZTA0NTZiYWRmODg4ZmFhMDMwOWRjYWIw
ZGUwNzhmYzguLjRlMDQzNjVmZDZjMjgzNjg5OWJlYmY3ZTA1MzMwZDFkM2RhMDA5MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTkzOCw2
ICs5MzgsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxs
ZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6
b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVn
VDApOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggODExNDdhN2UzZGU3NzI2MzUyN2I1YjYxZjE1ZmRhNTliM2JjOTA5Zi4u
MzUxYTRjOGQ0NDJmMmQ2YzY4YzRhOTJjMzJmMTZlYzYwMmRhODI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDc5LDEyICsxMDc5
LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkK
IHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIAorCisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBM
TElOVF9PUF9DKDQpLmpzVmFsdWUoKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1sy
XS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CiAg
ICAgCi0gICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4oSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4
ZWN1dGFibGUsIHNjb3BlLCB0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIFNsb3dQYXRoUmV0dXJu
VHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBw
YywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCBkNzE2MzlhZTQ0NzE2ZjQ1NDRjODcwOTZiZDdmODg5YWFmOGM3YzgxLi41NjdjYjU4YzEyNTY5
N2JjZGU2MTdlY2VjMGM4YjA3ODY5NWU5Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNDcyLDcgKzE0NzIsNyBA
QCBfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKIF9sbGludF9vcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKLSAgICBkaXNwYXRjaCg0KQorICAgIGRpc3Bh
dGNoKDUpCiAKIF9sbGludF9vcF9jYWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KaW5kZXggYzVhODdlM2IxZDM4YmUzMzY0MGVlNjJiZmJhNmI1OGMxZGVlNmI1Zi4uZTFk
MTIyY2QwMzA2NTJjNTI4NWIwYzQwNTJhMzhlMDA0MmRiYTc1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
QEAgLTI0MjIsNiArMjQyMiwxNiBAQCBfbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAg
ICAgZGlzcGF0Y2goMikKIAogCitfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgdDAKKyAgICBsb2FkaSBKU0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKKyAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDIpCisKKwogX2xsaW50X29wX2dldF9yZXN0X2xlbmd0aDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRb
Y2ZyXSwgdDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZTE4ZDgxYzIyMTMwMmJmMjZkYjUxZWMyOGU2YTcxY2Vk
YzM2ZWYxNy4uNDlmM2NkN2E3NDYzODRlMGU3MTkyZDAxYTg2OWE3NDAwNDFkNzk1OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KQEAgLTIyODQsMTQgKzIyODQsMjIgQEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIC5v
cFByb2ZpbGVUeXBlRG9uZToKICAgICBkaXNwYXRjaCg2KQogCi0KLQogX2xsaW50X29wX3Byb2Zp
bGVfY29udHJvbF9mbG93OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcEZyb21JbnN0
cnVjdGlvbigxLCB0MCkKICAgICBhZGRxIDEsIEJhc2ljQmxvY2tMb2NhdGlvbjo6bV9leGVjdXRp
b25Db3VudFt0MF0KICAgICBkaXNwYXRjaCgyKQogCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVu
Y3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0s
IHQwCisgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhd
CisgICAgZGlzcGF0Y2goMikKKworCiBfbGxpbnRfb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtj
ZnJdLCB0MApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA0
MzMxOTQyNzgwOTVlNThhZGEwMzdlODIwZjllNWU1ZWNjNzNkODEzLi5hOTBkYzFjMWNjMjc5NmRk
MTA0YmY3MWUzZTk3MDkzY2U5MjcyZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaApAQCAtMzc2LDcgKzM3Niw3IEBAIHB1YmxpYzoKIAogICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5m
bykKICAgICB7Ci0gICAgICAgIHVzZXNBcnJvd0Z1bmN0aW9uKCk7CisgICAgICAgIHVzZXNUaGlz
KCk7CiAgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNz
aW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmJvZHktPmlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKCkgPyBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0IC0gMSA6IGZ1
bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5m
by5ib2R5U3RhcnRDb2x1bW4pOwogICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZSogcmVzdWx0ID0g
bmV3IChtX3BhcnNlckFyZW5hKSBBcnJvd0Z1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9u
SW5mby5uYW1lLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgZnVuY3Rpb25J
bmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5k
TGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CkBA
IC05MTcsNyArOTE3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5jQ29uc3RhbnRzKCkgeyBt
X3Njb3BlLm1fbnVtQ29uc3RhbnRzKys7IH0KICAgICB2b2lkIHVzZXNUaGlzKCkgeyBtX3Njb3Bl
Lm1fZmVhdHVyZXMgfD0gVGhpc0ZlYXR1cmU7IH0KLSAgICB2b2lkIHVzZXNBcnJvd0Z1bmN0aW9u
KCkgeyBtX3Njb3BlLm1fZmVhdHVyZXMgfD0gQXJyb3dGdW5jdGlvbkZlYXR1cmU7IH0KICAgICB2
b2lkIHVzZXNBcmd1bWVudHMoKSB7IG1fc2NvcGUubV9mZWF0dXJlcyB8PSBBcmd1bWVudHNGZWF0
dXJlOyB9CiAgICAgdm9pZCB1c2VzV2l0aCgpIHsgbV9zY29wZS5tX2ZlYXR1cmVzIHw9IFdpdGhG
ZWF0dXJlOyB9CiAgICAgdm9pZCB1c2VzRXZhbCgpIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCmluZGV4IDlhOTM0NWE1MDFmODdjMWUyYWJiODFiZjc1OTRkZGZjMmMxNDMwNjMuLjhl
OWEyNTJlYWQxZmVlOTE1OWZhZmUxNTNiN2M3OTYxZDg3YTJjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKQEAgLTE1NTksNyArMTU1OSw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZh
bEZlYXR1cmU7IH0KICAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
KG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlKSAmJiAhKG1fZmVhdHVyZXMgJiBTaGFkb3dz
QXJndW1lbnRzRmVhdHVyZSk7IH0KLSAgICAgICAgYm9vbCB1c2VzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBBcnJvd0Z1bmN0aW9uRmVhdHVyZTsgfQogICAgICAg
ICBib29sIG1vZGlmaWVzUGFyYW1ldGVyKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIE1v
ZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsgfQogICAgICAgICBib29sIG1vZGlmaWVzQXJndW1lbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IE1vZGlmaWVkQXJn
dW1lbnRzRmVhdHVyZSk7IH0KICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0OTgyNWE2NGI5YjhmYTVjYTg3NmY1NjhmNTMzMDRm
YmJmZjY0Y2JjLi5jM2JlODJjNmU5M2Y2YjlmNjdiNWEyY2RjZDc5NzY2ZWE5YmZiYTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTc4LDExICsxOTc4LDEx
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIs
IGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5h
bWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5m
by5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUiKTsKICAgICB9Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPmhhc0RpcmVjdFN1cGVyKCkg
JiYgZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrKSB7CisgICAg
aWYgKGZ1bmN0aW9uU2NvcGUtPmhhc0RpcmVjdFN1cGVyKCkpIHsKICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKCFpc0NsYXNzQ29uc3RydWN0b3IsICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNp
ZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3RvciIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
Y29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCwgIkNhbm5vdCBjYWxs
IHN1cGVyKCkgaW4gYSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yIik7CiAgICAgfQotICAgIGlmIChm
dW5jdGlvblNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygpICYmIGZ1bmN0aW9uQm9keVR5cGUgPT0g
U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jaykKKyAgICBpZiAoZnVuY3Rpb25TY29wZS0+bmVlZHNT
dXBlckJpbmRpbmcoKSkKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVkU3VwZXJC
aW5kaW5nID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNl
ZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbiA9IEpTVG9rZW5Mb2NhdGlvbihtX3Rva2VuLm1fbG9jYXRpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDg2OTRmNzdiMTdmNDU0
OTM4ZjZlZjg1ZDFkOTBlM2NkNDk5YzI5YzkuLjQ4NmQ4ZmMwZGFjYzI1YzFkM2IxMTViNDAwMDI3
NTE4NjI2OThjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVz
LmgKQEAgLTE0NywxOSArMTQ3LDE3IEBAIGlubGluZSBib29sIGZ1bmN0aW9uTmFtZVNjb3BlSXNE
eW5hbWljKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlKQogCiB0eXBlZGVmIHVuc2ln
bmVkIENvZGVGZWF0dXJlczsKIAotY29uc3QgQ29kZUZlYXR1cmVzIE5vRmVhdHVyZXMgPSAgICAg
ICAgICAgICAgICAgICAgICAgMDsKLWNvbnN0IENvZGVGZWF0dXJlcyBFdmFsRmVhdHVyZSA9ICAg
ICAgICAgICAgICAgICAxIDw8IDA7Ci1jb25zdCBDb2RlRmVhdHVyZXMgQXJndW1lbnRzRmVhdHVy
ZSA9ICAgICAgICAgICAgMSA8PCAxOwotY29uc3QgQ29kZUZlYXR1cmVzIFdpdGhGZWF0dXJlID0g
ICAgICAgICAgICAgICAgIDEgPDwgMjsKLWNvbnN0IENvZGVGZWF0dXJlcyBUaGlzRmVhdHVyZSA9
ICAgICAgICAgICAgICAgICAxIDw8IDM7Ci1jb25zdCBDb2RlRmVhdHVyZXMgU3RyaWN0TW9kZUZl
YXR1cmUgPSAgICAgICAgICAgMSA8PCA0OwotY29uc3QgQ29kZUZlYXR1cmVzIFNoYWRvd3NBcmd1
bWVudHNGZWF0dXJlID0gICAgIDEgPDwgNTsKLWNvbnN0IENvZGVGZWF0dXJlcyBNb2RpZmllZFBh
cmFtZXRlckZlYXR1cmUgPSAgICAxIDw8IDY7Ci1jb25zdCBDb2RlRmVhdHVyZXMgTW9kaWZpZWRB
cmd1bWVudHNGZWF0dXJlID0gICAgMSA8PCA3OwotY29uc3QgQ29kZUZlYXR1cmVzIEFycm93RnVu
Y3Rpb25GZWF0dXJlID0gICAgICAgIDEgPDwgODsKLWNvbnN0IENvZGVGZWF0dXJlcyBBcnJvd0Z1
bmN0aW9uQ29udGV4dEZlYXR1cmUgPSAxIDw8IDk7Ci0KLWNvbnN0IENvZGVGZWF0dXJlcyBBbGxG
ZWF0dXJlcyA9IEV2YWxGZWF0dXJlIHwgQXJndW1lbnRzRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwg
VGhpc0ZlYXR1cmUgfCBTdHJpY3RNb2RlRmVhdHVyZSB8IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJl
IHwgTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkZlYXR1cmUgfCBBcnJv
d0Z1bmN0aW9uQ29udGV4dEZlYXR1cmU7Citjb25zdCBDb2RlRmVhdHVyZXMgTm9GZWF0dXJlcyA9
ICAgICAgICAgICAgICAgICAgICAwOworY29uc3QgQ29kZUZlYXR1cmVzIEV2YWxGZWF0dXJlID0g
ICAgICAgICAgICAgIDEgPDwgMDsKK2NvbnN0IENvZGVGZWF0dXJlcyBBcmd1bWVudHNGZWF0dXJl
ID0gICAgICAgICAxIDw8IDE7Citjb25zdCBDb2RlRmVhdHVyZXMgV2l0aEZlYXR1cmUgPSAgICAg
ICAgICAgICAgMSA8PCAyOworY29uc3QgQ29kZUZlYXR1cmVzIFRoaXNGZWF0dXJlID0gICAgICAg
ICAgICAgIDEgPDwgMzsKK2NvbnN0IENvZGVGZWF0dXJlcyBTdHJpY3RNb2RlRmVhdHVyZSA9ICAg
ICAgICAxIDw8IDQ7Citjb25zdCBDb2RlRmVhdHVyZXMgU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmUg
PSAgMSA8PCA1OworY29uc3QgQ29kZUZlYXR1cmVzIE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZSA9
IDEgPDwgNjsKK2NvbnN0IENvZGVGZWF0dXJlcyBNb2RpZmllZEFyZ3VtZW50c0ZlYXR1cmUgPSAx
IDw8IDc7CisKK2NvbnN0IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0dXJlIHwg
QXJndW1lbnRzRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgVGhpc0ZlYXR1cmUgfCBTdHJpY3RNb2Rl
RmVhdHVyZSB8IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlIHwgTW9kaWZpZWRQYXJhbWV0ZXJGZWF0
dXJlOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYjEwYjExNGVmZjU2NDZjMzdiZTUyOTU1MzZjODk3YWEx
MzRmMGM2ZC4uNDk0NTIwZGJkZjQyOGM4NjQwZGI1ZTIyM2YwMGUyMWYyZmVjZmZlOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC04Myw3ICs4Myw4
IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaz4gewogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwg
Y2xhc3MgRXhlY3V0YWJsZVR5cGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwg
SlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBi
b29sLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2Rl
LCBQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxl
c1VuZGVyVERaKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENv
ZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCisgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJv
ciYgZXJyb3IsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQog
ewogICAgIFNvdXJjZUNvZGVLZXkga2V5ID0gU291cmNlQ29kZUtleShzb3VyY2UsIFN0cmluZygp
LCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OmNvZGVUeXBlLCBidWlsdGluTW9k
ZSwgc3RyaWN0TW9kZSwgdGhpc1REWk1vZGUpOwogICAgIFNvdXJjZUNvZGVWYWx1ZSogY2FjaGUg
PSBtX3NvdXJjZUNvZGUuZmluZENhY2hlQW5kVXBkYXRlQWdlKGtleSk7CkBAIC0xMTEsOCArMTEy
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9j
ayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGUKICAgICBib29sIGVuZENvbHVtbklzT25TdGFy
dExpbmUgPSAhbGluZUNvdW50OwogICAgIHVuc2lnbmVkIHVubGlua2VkRW5kQ29sdW1uID0gcm9v
dE5vZGUtPmVuZENvbHVtbigpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHVubGlua2VkRW5k
Q29sdW1uICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBzdGFydENvbHVtbiA6IDEpOwotICAg
IHVuc2lnbmVkIGFycm93Q29udGV4dEZlYXR1cmUgPSBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rp
b25Db250ZXh0KCkgPyBBcnJvd0Z1bmN0aW9uQ29udGV4dEZlYXR1cmUgOiAwOwotICAgIGV4ZWN1
dGFibGUtPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpIHwgYXJyb3dDb250ZXh0RmVh
dHVyZSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5maXJzdExp
bmUoKSwgcm9vdE5vZGUtPmxhc3RMaW5lKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pOworICAg
IGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgcm9vdE5vZGUtPmZpcnN0TGluZSgpLCByb290Tm9kZS0+
bGFzdExpbmUoKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7CiAKICAgICBVbmxpbmtlZENvZGVC
bG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVh
dGUoJnZtLCBleGVjdXRhYmxlLT5leGVjdXRhYmxlSW5mbygpKTsKICAgICB1bmxpbmtlZENvZGVC
bG9jay0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+Zmlyc3RMaW5lKCkgLSBzb3VyY2UuZmlyc3RMaW5l
KCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4pOwpAQCAtMTMyLDE4ICsxMzIsMTggQEAg
VW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayhWTSYg
dm0sIEV4ZWN1dGFibGVUeXBlKiBleGUKIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogQ29kZUNh
Y2hlOjpnZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWls
dGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1
Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikK
IHsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVtcHR5UGFyZW50VERaVmFyaWFibGVzOwotICAg
IHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPih2bSwg
ZXhlY3V0YWJsZSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgVGhpc1REWk1vZGU6
OkNoZWNrSWZOZWVkZWQsIGZhbHNlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3Is
ICZlbXB0eVBhcmVudFREWlZhcmlhYmxlcyk7CisgICAgcmV0dXJuIGdldEdsb2JhbENvZGVCbG9j
azxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0
aW5Nb2RlLCBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZGVidWdnZXJN
b2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAmZW1wdHlQYXJlbnRURFpWYXJpYWJsZXMpOwogfQog
Ci1VbmxpbmtlZEV2YWxDb2RlQmxvY2sqIENvZGVDYWNoZTo6Z2V0RXZhbENvZGVCbG9jayhWTSYg
dm0sIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJp
Y3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2Rl
LCBQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxl
c1VuZGVyVERaKQorVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2Rl
QmxvY2soVk0mIHZtLCBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmlj
dE1vZGUgc3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSBk
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJv
ciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCiB7Ci0gICAg
cmV0dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVj
dXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCB0aGlzVERaTW9kZSwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCB2
YXJpYWJsZXNVbmRlclREWik7CisgICAgcmV0dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtl
ZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJp
Y3RNb2RlLCB0aGlzVERaTW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCB2
YXJpYWJsZXNVbmRlclREWik7CiB9CiAKIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
Q29kZUNhY2hlOjpnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQgZW1wdHlQYXJlbnRURFpWYXJpYWJsZXM7Ci0gICAgcmV0dXJuIGdldEds
b2JhbENvZGVCbG9jazxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLCBleGVjdXRh
YmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgVGhp
c1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGZhbHNlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgZXJyb3IsICZlbXB0eVBhcmVudFREWlZhcmlhYmxlcyk7CisgICAgcmV0dXJuIGdldEdsb2Jh
bENvZGVCbG9jazxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLCBleGVjdXRhYmxl
LCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgVGhpc1RE
Wk1vZGU6OkNoZWNrSWZOZWVkZWQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwg
JmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKIH0KIAogLy8gRklYTUU6IFRoZXJlJ3Mgbm8gbmVl
ZCB0byBhZGQgdGhlIGZ1bmN0aW9uJ3MgbmFtZSB0byB0aGUga2V5IGhlcmUuIEl0J3MgYWxyZWFk
eSBpbiB0aGUgc291cmNlIGNvZGUuCkBAIC0xODgsNyArMTg4LDcgQEAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENv
ZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2Vz
cyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFou
CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2VuZXJhdG9yVGhpc01v
ZGU6Ok5vbkVtcHR5LCBlbXB0eVREWlZhcmlhYmxlcywgZmFsc2UpOworICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzTW9kZTo6
Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1f
bmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUu
c3RyaW5nKCkpKTsKIAogICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXksIFNvdXJjZUNvZGVW
YWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggMjEzMmYwYzE5NDZjMDQ0
NDAzMjliZWM2MjIyMzBlMjBjMWI4MzM0Yy4uOWI4YzE1MGRlMjBiODUzM2IxZmRhM2RhYTg5NWQw
NmNkYzg5NTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgK
QEAgLTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgfkNvZGVDYWNoZSgpOwogCiAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBnZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiwgUHJvZ3JhbUV4
ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJz
ZXJTdHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsK
LSAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdldEV2YWxDb2RlQmxvY2soVk0mLCBFdmFsRXhl
Y3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNl
clN0cmljdE1vZGUsIFRoaXNURFpNb2RlLCBib29sLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiBnZXRFdmFsQ29kZUJsb2NrKFZNJiwgRXZhbEV4ZWN1dGFibGUqLCBj
b25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2Rl
LCBUaGlzVERaTW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogZ2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYsIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIERlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIApAQCAtMjA1
LDcgKzIwNSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4gCi0gICAgVW5saW5rZWRD
b2RlQmxvY2tUeXBlKiBnZXRHbG9iYWxDb2RlQmxvY2soVk0mLCBFeGVjdXRhYmxlVHlwZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUs
IFRoaXNURFpNb2RlLCBib29sLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJy
b3ImLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgVW5saW5rZWRDb2RlQmxvY2tU
eXBlKiBnZXRHbG9iYWxDb2RlQmxvY2soVk0mLCBFeGVjdXRhYmxlVHlwZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFRoaXNURFpN
b2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50Kik7CiAKICAgICBDb2RlQ2FjaGVNYXAgbV9zb3VyY2VDb2RlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CmluZGV4IDY4MzVhOGE2ZDdmMjc1M2RmODEyYTczMzFmNzUzMzU4NDI2MmE5YWUuLjM3YzU0ZDJm
ZWQ1NjJkODBiZmIwNWYyZmY4OTUyOTA4ODY4YmU2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzQxLDggKzM0MSw2IEBA
CiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhEYXRlVGltZUZvcm1hdCkgXAogICAg
IG1hY3JvKE51bWJlckZvcm1hdCkgXAotICAgIG1hY3JvKG5ld1RhcmdldExvY2FsKSBcCi0gICAg
bWFjcm8oZGVyaXZlZENvbnN0cnVjdG9yKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBk
YzJhZGQ2YTc2MGUwMTUxYWNiYzBlMTQzY2ExMTAyOWJhMDljOGU5Li5hZjBhODQ4NmQxMjA5ZWE2
ODQ4YmQyNTA3YTdjMzdlNWJkMGM5ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTIyNCwxMSArMjI0LDYgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKQogICAgIEJFR0lOKCk7CiAgICAgSlNGdW5j
dGlvbiogY29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KE9QKDIpLmpzVmFsdWUoKS5h
c0NlbGwoKSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOwotICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29u
c3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpT
IHx8IGNvbnN0cnVjdG9yLT5qc0V4ZWN1dGFibGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwotI2Vu
ZGlmCi0KICAgICBhdXRvJiBjYWNoZVdyaXRlQmFycmllciA9IHBjWzRdLnUuanNDZWxsOwogICAg
IGlmICghY2FjaGVXcml0ZUJhcnJpZXIpCiAgICAgICAgIGNhY2hlV3JpdGVCYXJyaWVyLnNldChl
eGVjLT52bSgpLCBleGVjLT5jb2RlQmxvY2soKSwgY29uc3RydWN0b3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCBmNWRmNzdkOTg3YzAzY2Jl
NjA0M2E0N2RjZWIzYTkxMzExYmRmMjMwLi40MjA2MDA2NzIyOWFhNDBhYjQ3ZTliNDA1Mjk2MjFm
ZTgyZWRiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcApAQCAtMTMxLDE1ICsxMzEsMTMgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6Omlu
dHJpbnNpYygpIGNvbnN0CiAKIGNvbnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2lu
Zm8gPSB7ICJTY3JpcHRFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoU2NyaXB0RXhlY3V0YWJsZSkgfTsKIAotU2NyaXB0RXhlY3V0YWJs
ZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIGJvb2wgaXNJbkRlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQorU2Ny
aXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpCiAg
ICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09N
UElMRUQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJp
Y3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAgICwgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyhmYWxzZSkKICAgICAsIG1fbmV2ZXJJbmxpbmUoZmFsc2UpCiAgICAgLCBtX2RpZFRy
eVRvRW50ZXJJbkxvb3AoZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dChpc0luRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9u
Q29udGV4dChpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgLCBtX292ZXJyaWRlTGluZU51
bWJlcigtMSkKICAgICAsIG1fZmlyc3RMaW5lKC0xKQogICAgICwgbV9sYXN0TGluZSgtMSkKQEAg
LTQxNCw3ICs0MTIsNyBAQCBKU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4
ZWN1dGlvbkltcGwoCiAKIGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiRXZhbEV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJsZSogRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGJvb2wg
aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQorRXZhbEV4ZWN1
dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNU
RFpNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKIHsK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKSB7CkBAIC00MjIs
MTAgKzQyMCwxMCBAQCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZQogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFi
bGUoZXhlYywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhl
Yy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4
dCk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CiAKLSAgICBV
bmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkRXZhbENvZGUgPSBnbG9iYWxPYmplY3QtPmNy
ZWF0ZUV2YWxDb2RlQmxvY2soZXhlYywgZXhlY3V0YWJsZSwgdGhpc1REWk1vZGUsIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2sqIHVubGlua2VkRXZhbENvZGUgPSBnbG9iYWxPYmplY3QtPmNyZWF0ZUV2YWxDb2RlQmxv
Y2soZXhlYywgZXhlY3V0YWJsZSwgdGhpc1REWk1vZGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAg
ICBpZiAoIXVubGlua2VkRXZhbENvZGUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC00MzQsOCAr
NDMyLDggQEAgRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UKICAgICByZXR1cm4gZXhlY3V0YWJsZTsK
IH0KIAotRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgYm9vbCBpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKLSAgICA6
IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQo
KSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKK0V2YWxFeGVjdXRhYmxlOjpFdmFs
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpblN0cmljdENvbnRleHQpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZh
bEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RD
b250ZXh0KQogewogfQogCkBAIC00NDcsNyArNDQ1LDcgQEAgdm9pZCBFdmFsRXhlY3V0YWJsZTo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIlByb2dyYW1FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQcm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogUHJvZ3Jh
bUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dy
YW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UpCiB7CiAg
ICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGluZ0Vu
ZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00NjMsNyArNDYxLDcgQEAgdm9pZCBQ
cm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBjb25zdCBDbGFzc0luZm8g
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLm1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UpCiB7
CiAgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGlu
Z0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00OTQsOCArNDkyLDEwIEBAIHZv
aWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiBjb25z
dCBDbGFzc0luZm8gRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1
dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEZ1bmN0aW9uRXhlY3V0YWJsZSkgfTsKIAotRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4
ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5z
aWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4p
Ci0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5n
ZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgp
LCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxz
ZSkKK0Z1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCAKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5s
aW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIAorICAgIHVuc2lnbmVkIGxhc3RM
aW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uKQorICAgIDogU2Ny
aXB0RXhlY3V0YWJsZSh2bS5mdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBz
b3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAsIG1f
dW5saW5rZWRFeGVjdXRhYmxlKHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIXNvdXJjZS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggNzBiNWY4MTIxMDM4ODZmNjA2OTlhMDdhMWM3MGE4
MjVjZTBjOThkMi4uNzViMzA5MWNmODFjNzI5NmZlMmZhZmU5YTk2NzY1MzYyOTk3ODJmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMzQ0LDkgKzM0
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0
dXJlcyAmIEV2YWxGZWF0dXJlOyB9CiAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAgICBib29sIG5lZWRzQWN0
aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgfHwgbV9mZWF0
dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsg
fQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0
cmljdE1vZGVGZWF0dXJlOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsgfQogICAgIEVD
TUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RN
b2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgICAgICAKICAgICB2b2lkIHNldE5ldmVySW5saW5l
KGJvb2wgdmFsdWUpIHsgbV9uZXZlcklubGluZSA9IHZhbHVlOyB9CkBAIC0zOTUsNyArMzkzLDcg
QEAgcHJpdmF0ZToKICAgICBKU09iamVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoRXhlY1N0
YXRlKiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKIAog
cHJvdGVjdGVkOgotICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25zdCBT
b3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgYm9vbCBpc0luRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dCwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpOworICAgIFNjcmlw
dEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KTsKIAogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTQxNCw4ICs0MTIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBtX25ldmVySW5saW5lOwogICAgIGJvb2wgbV9uZXZlck9wdGltaXplIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fZGlkVHJ5VG9FbnRlckluTG9vcDsKLSAgICBib29sIG1faXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0OwotICAgIGJvb2wgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OwogICAg
IGludCBtX292ZXJyaWRlTGluZU51bWJlcjsKICAgICBpbnQgbV9maXJzdExpbmU7CiAgICAgaW50
IG1fbGFzdExpbmU7CkBAIC00MzgsNyArNDM0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9ldmFsQ29kZUJsb2NrLmdldCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJs
ZSogY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCBUaGlzVERaTW9kZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwor
ICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCopOwogCiAgICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRD
b2RlKCkKICAgICB7CkBAIC00NTIsOCArNDQ4LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBE
RUNMQVJFX0lORk87CiAKLQotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2Vu
ZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1W
YXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVz
KCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTQ2MSw3
ICs0NTYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKLSAgICBFdmFsRXhlY3V0
YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQs
IGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQpOworICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBib29sKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIApAQCAtNTA2LDcgKzUwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVD
TEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNT
dHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0
b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2Up
OyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9k
ZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlBy
b2dyYW1Nb2RlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFz
ZTsKQEAgLTU0Nyw4ICs1NDIsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25F
bXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZh
bHVhdGVNb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpOyB9Ci0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25F
bXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZh
bHVhdGVNb2RlKTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2suZ2V0KCk7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVu
dFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdl
dCgpOyB9CkBAIC02NTYsMTUgKzY1MCwxMyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1
bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUo
KTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KLSAgICAvLyBUT0RPOlRoaW5rIGFib3V0IGF2b2lkIHVz
aW5nIGlzQXJyb3dGdW5jdGlvbiB2ZXJpYWJsCi0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0K
ICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5n
KiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZh
bHVlKCk7IH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAvLyBFeGNsdWRpbmcgJ3RoaXMn
IQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGU7IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGVjYzgy
YmE2MjhiZjE2ZjIxMTc5YTJjNDhkYmE3M2FmN2VlNzJhODEuLjdkOTk2ODAxMTI0ZTVhNTRhMjkw
OTE1ZTE3ZDRkMDY1MDM5NjhkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTk3MiwxNCArOTcyLDE0IEBAIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2Fs
bEZyYW1lKiBjYWxsCiAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogfQogCi1Vbmxpbmtl
ZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpT
R2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBF
dmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQogewogICAgIFBhcnNlckVy
cm9yIGVycm9yOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJs
ZS0+aXNTdHJpY3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBo
YXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUgPSBoYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2Zm
OwogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNv
ZGVDYWNoZSgpLT5nZXRFdmFsQ29kZUJsb2NrKAotICAgICAgICB2bSgpLCBleGVjdXRhYmxlLCBl
eGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3Ry
aWN0TW9kZSwgdGhpc1REWk1vZGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGRlYnVnZ2VyTW9k
ZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICB2bSgp
LCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgdGhpc1REWk1vZGUsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCBlcnJvciwgdmFyaWFibGVzVW5kZXJURFopOwogCiAgICAgaWYgKGhhc0RlYnVnZ2Vy
KCkpCiAgICAgICAgIGRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IDYyZDE0OTVlMTllOTZkMTVkNTMyNjc0NzFiNGQzNjg0NGUzYzkyYTIuLjAzMjUzMjQ5ODVhMDM4
ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjY5LDcgKzY2OSw3IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCB3ZWFrUmFuZG9tSW50ZWdlcigpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5nZXRV
aW50MzIoKTsgfQogCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVQcm9ncmFt
Q29kZUJsb2NrKENhbGxGcmFtZSosIFByb2dyYW1FeGVjdXRhYmxlKiwgSlNPYmplY3QqKiBleGNl
cHRpb24pOwotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhD
YWxsRnJhbWUqLCBFdmFsRXhlY3V0YWJsZSosIFRoaXNURFpNb2RlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sqIGNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiwgRXZhbEV4ZWN1dGFi
bGUqLCBUaGlzVERaTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhD
YWxsRnJhbWUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSopOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAKaW5kZXggY2UxZTNiYjc4ZjBkNTM5YTI2NWU4MmViZmQ3NTAxNTAxMThlNzBj
My4uMmJmMTNiYjkwNWQ1Y2E1NDA3ZjM0Y2UwMTBmMzk0MGI5ZGRmOTVkNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGNh
bGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBW
YXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOyAvLyBJbmRpcmVjdCBldmFsIGRv
ZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsZXhpY2FsIHNjb3BlLgotICAgIEV2YWxFeGVjdXRh
YmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMpLCBm
YWxzZSwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGZhbHNlLCBmYWxzZSwgJmVtcHR5VERa
VmFyaWFibGVzKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UsIFRoaXNURFpNb2RlOjpDaGVja0lmTmVl
ZGVkLCAmZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sCmluZGV4IDdlNjNhYmQ4MmVmNGNiYjU5NGMyNTBlM2U5ZDhlN2EwODEzYTcyZmIu
LmM5NTJkMzI1MzAxM2JjNDIyODAzNTRhNzQ5ZjBmNWQ3MWU3MTE4OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTc0NSw3ICs3NDUsNyBAQAogLSBwYXRoOiBlczYvYXJy
b3dfZnVuY3Rpb25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanMKICAgY21kOiBydW5FUzYg
OmZhaWwKIC0gcGF0aDogZXM2L2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX25ldy50YXJnZXRfYmlu
ZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBh
dGg6IGVzNi9hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5kaW5nLmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9hcnJvd19mdW5jdGlvbnNfbm9fcHJvdG90eXBlX3By
b3BlcnR5LmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4
aXQuanMKaW5kZXggNzNlYzZlMjcyNjcxM2FhMWIzMTQxMTcyMjJmMmNiNWE1ZTE3NjRmNy4uMmU0
MzdhZjdiMmMyYWQzNDVlMjZjMjAzNzc4OTBkZjVmMzFmYWYwNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2lu
ay1vc3JleGl0LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMSw0ICsxLDQgQEAKLXZh
ciBuID0gMTAwMDAwOwordmFyIG4gPSAxMDAwMDAwOwogCiBmdW5jdGlvbiBiYXIoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWFjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKaW5kZXggNjlkOTc1MjE1MDM4MDg0
MWEwYTAwNTBmNDhlOTViYzdmY2YzODc1OC4uNzZhNzllYzllYWE2NWM1NDE5MzBiOTA0ODI2ZTdh
MjNhMTNmYjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpzCkBAIC0x
LDQgKzEsNCBAQAotdmFyIG4gPSAxMDAwMDAwOwordmFyIG4gPSAxMDAwMDAwMDsKIAogZnVuY3Rp
b24gYmFyKGYpIHsgZigxMCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1uZXd0YXJnZXQuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLW5ld3RhcmdldC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E4ZDI3YzFj
OWEzYzA5ZWI1YWFkMjZlMjYwYTE1OGQ0OTM0YjJjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLW5ld3RhcmdldC5qcworKysgL2Rldi9udWxsCkBA
IC0xLDc4ICswLDAgQEAKLXZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVk
LCBtZXNzYWdlKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKLSAgICAgICAgdGhy
b3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiAr
IGFjdHVhbCArICInIjsKLSAgICB9Ci19OwotCi1mdW5jdGlvbiBnZXRUYXJnZXQobmFtZSkgewot
ICAgIHJldHVybiB4ID0+IG5ldy50YXJnZXQ7Ci19Ci0KLW5vSW5saW5lKGdldFRhcmdldCkKLQot
Zm9yICh2YXIgaT0wOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgdmFyIHVuZGVmaW5lZFRhcmdldCA9
IGdldFRhcmdldCgpKCk7Ci0gICAgdGVzdENhc2UodW5kZWZpbmVkVGFyZ2V0LCB1bmRlZmluZWQs
ICJFcnJvcjogbmV3LnRhcmdldCBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICMxIik7Ci19Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7Ci0gICAgdmFyIG5ld1RhcmdldCA9IG5ldyBnZXRUYXJnZXQoKSgpOwotICAgIHRlc3RDYXNl
KG5ld1RhcmdldCwgZ2V0VGFyZ2V0LCAiRXJyb3I6IG5ldy50YXJnZXQgaXMgbm90IGxleGljYWxs
eSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOwotfQotCi12YXIgcGFz
c2VkID0gZmFsc2U7Ci12YXIgQSA9IGNsYXNzIEEgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAg
ICAgICB0aGlzLmlkVmFsdWUgPSAxMjM7Ci0gICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBuZXcu
dGFyZ2V0ID09PSBCOwotICAgIH0KLX07Ci0KLXZhciBCICA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsK
LSAgICBjb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgdmFyIGYgPSAoKSA9PiB7Ci0gICAgICAgICAg
ICBwYXNzZWQgPSBuZXcudGFyZ2V0ID09PSBCOwotICAgICAgICAgICAgc3VwZXIoKTsKLSAgICAg
ICAgfTsKLSAgICAgICAgZigpOwotICAgIH0KLX07Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDsgaSsrKSB7Ci0gICAgcGFzc2VkID0gZmFsc2U7Ci0gICAgdmFyIGIgPSBuZXcgQigpOwotCi0g
ICAgdGVzdENhc2UocGFzc2VkLCB0cnVlLCAiRXJyb3I6IG5ldy50YXJnZXQgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiBpbiBjb25zdHJ1Y3RvciAj
MyIpOwotfQotCi12YXIgQyA9IGNsYXNzIEMgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3Rvcih0
cnlUb0FjY2Vzc1RvVmFySW5BcnJvdykgewotICAgICAgICB2YXIgZiA9ICgpID0+IHsKLSAgICAg
ICAgICAgIHN1cGVyKCk7Ci0gICAgICAgICAgICBpZiAodHJ5VG9BY2Nlc3NUb1ZhckluQXJyb3cp
Ci0gICAgICAgICAgICAgICAgdGhpcy5pZDIgPSBuZXdUYXJnZXRMb2NhbDsKLSAgICAgICAgfTsK
LQotICAgICAgICBmKCk7Ci0KLSAgICAgICAgaWYgKCF0cnlUb0FjY2Vzc1RvVmFySW5BcnJvdykK
LSAgICAgICAgICAgIHRoaXMuaWQgPSBuZXdUYXJnZXRMb2NhbDsKLSAgICB9Ci19OwotCi12YXIg
dHJ5VG9DcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICh2YWwpIHsKLSAgICB2YXIgcmVzdWx0ID0gZmFs
c2U7Ci0gICAgdHJ5IHsKLSAgICAgICAgbmV3IEModmFsKTsKLSAgICB9Ci0gICAgY2F0Y2ggKGUp
IHsKLSAgICAgICAgcmVzdWx0ID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOyAKLSAgICB9
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfTsKLQotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBp
KyspIHsKLSAgICB0ZXN0Q2FzZSh0cnlUb0NyZWF0ZUNsYXNzKHRydWUpLCB0cnVlLCAiRXJyb3I6
IG5ld1RhcmdldExvY2FsIHNob3VsZCBiZSBoaWRlZCB2YXJpYWJsZSIpOwotICAgIHRlc3RDYXNl
KHRyeVRvQ3JlYXRlQ2xhc3MoZmFsc2UpLCB0cnVlLCAiRXJyb3I6IG5ld1RhcmdldExvY2FsIHNo
b3VsZCBiZSBoaWRlZCB2YXJpYWJsZSIpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwt
MS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGMyNDcxNDdkZmRhN2Q0ZWU5ODFlMzg3MGEyYTE3ODg0MGQ2OTg4MGUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtMS5qcworKysg
L2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLXZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1
YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsK
LSAgICAgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywg
YnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKLSAgICB9Ci19OwotCi12YXIgdGVzdFZhbHVlICA9
ICd0ZXN0LXZhbHVlJzsKLQotdmFyIEEgPSBjbGFzcyBBIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsK
LSAgICAgICAgdGhpcy5pZFZhbHVlID0gdGVzdFZhbHVlOwotICAgIH0KLX07Ci0KLXZhciBCID0g
Y2xhc3MgQiBleHRlbmRzIEEgewotICAgIGNvbnN0cnVjdG9yIChpbkFycm93RnVjdGlvbiwgaW5D
b25zdHJ1Y3RvcikgewotICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoaW5BcnJvd0Z1Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICBzdXBlcigpOwotICAgICAgICAg
ICAgICAgIHRlc3RDYXNlKHRoaXMuaWRWYWx1ZSwgdGVzdFZhbHVlLCAiRXJyb3I6IHN1cGVyKCkg
c2hvdWxkIGNyZWF0ZSB0aGlzIGFuZCBwdXQgdmFsdWUgaW50byBpZFZhbHVlIHByb3BlcnR5Iik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaW5BcnJvd0Z1Y3Rpb24p
Ci0gICAgICAgICAgICBhcnJvdygpOwotCi0gICAgICAgIGlmIChpbkNvbnN0cnVjdG9yKQotICAg
ICAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICB0ZXN0Q2FzZSh0aGlzLmlkVmFsdWUsIHRlc3RW
YWx1ZSwgIkVycm9yOiBhcnJvdyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoaXMgdG8gY29uc3Ry
dWN0b3IiKTsKLSAgICB9Ci19OwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykgewot
ICAgIG5ldyBCKHRydWUsIGZhbHNlKTsKLSAgICBuZXcgQihmYWxzZSwgdHJ1ZSk7Ci19Ci0KLXZh
ciB0ZXN0RXhjZXB0aW9uID0gZnVuY3Rpb24gKHZhbHVlMSwgdmFsdWUyLCBpbmRleCkgewotICAg
IHZhciBleGNlcHRpb247Ci0gICAgdHJ5IHsKLSAgICAgICAgbmV3IEIodmFsdWUxLCB2YWx1ZTIp
OwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZXhjZXB0aW9uID0gZTsKLSAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKLSAgICAgICAgICAgIHRocm93ICJFeGNl
cHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOwotICAgIH0KLQotICAgIGlm
ICghZXhjZXB0aW9uKQotICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJvd24gZm9yIGFu
IHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uICIgKyBpbmRleDsKLX0KLQotZm9yICh2YXIg
aT0wOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgdGVzdEV4Y2VwdGlvbihmYWxzZSwgZmFsc2UsIGkp
OwotfQotCi12YXIgQyA9IGNsYXNzIEMgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsK
LSAgICAgICAgZXZhbCgidmFyIHggPSAyMCIpOwotICAgICAgICBzdXBlcigpOwotICAgICAgICBs
ZXQgZiA9ICgpID0+IHRoaXM7Ci0gICAgICAgIGxldCB4ZiA9IGYoKTsKLSAgICAgICAgeGYuaWQg
PSAndGVzdC1pZCc7Ci0gICAgfQotfTsKLQotdmFyIGMgPSBuZXcgQygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC1zdXBlcmNhbGwtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTIuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDgzYzhlMzc3Nzc2MmZmNTRhZWNiNmQ3NzI0ZjRlY2I0ZjczNGVhYmUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBl
cmNhbGwtMi5qcworKysgL2Rldi9udWxsCkBAIC0xLDE3NiArMCwwIEBACi12YXIgdGVzdENhc2Ug
PSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKSB7Ci0gICAgICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiAr
IGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7Ci0gICAgfQotfTsKLQot
dmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7Ci0KLXZhciBBID0gY2xhc3MgQSB7Ci0gICAg
Y29uc3RydWN0b3IoKSB7Ci0gICAgICAgIHRoaXMuaWRWYWx1ZSA9IHRlc3RWYWx1ZTsKLSAgICB9
Ci19OwotCi12YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3RvciAoaW5B
cnJvd0Z1Y3Rpb24sIGluQ29uc3RydWN0b3IsIHNldFByb3RvVG9OdWxsKSB7Ci0gICAgICAgIHZh
ciBhcnJvdyA9ICgpID0+ICgpID0+ICgpID0+IHsKLSAgICAgICAgICAgIGlmIChpbkFycm93RnVj
dGlvbikgewotICAgICAgICAgICAgICBzdXBlcigpOwotICAgICAgICAgICAgICB0ZXN0Q2FzZSh0
aGlzLmlkVmFsdWUsIHRlc3RWYWx1ZSwgIkVycm9yOiBzdXBlcigpIHNob3VsZCBjcmVhdGUgdGhp
cyBhbmQgcHV0IHZhbHVlIGludG8gaWRWYWx1ZSBwcm9wZXJ0eSIpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9OwotCi0gICAgICAgIGlmIChpbkFycm93RnVjdGlvbikKLSAgICAgICAgICAgIGFy
cm93KCkoKSgpOwotCi0gICAgICAgIGlmIChpbkNvbnN0cnVjdG9yKQotICAgICAgICAgICAgc3Vw
ZXIoKTsKLQotICAgICAgICB0ZXN0Q2FzZSh0aGlzLmlkVmFsdWUsIHRlc3RWYWx1ZSwgIkVycm9y
OiBhcnJvdyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoaXMgdG8gY29uc3RydWN0b3IiKTsKLSAg
ICB9Ci19OwotCi1mb3IgKHZhciBpPTA7IGkgPCAxMDAwOyBpKyspIHsKLSAgICBuZXcgQih0cnVl
LCBmYWxzZSk7Ci0gICAgbmV3IEIoZmFsc2UsIHRydWUpOwotfQotCi12YXIgdGVzdEV4Y2VwdGlv
biA9IGZ1bmN0aW9uIChpbmRleCkgewotICAgIHZhciBleGNlcHRpb247Ci0gICAgdHJ5IHsKLSAg
ICAgICAgbmV3IEIoZmFsc2UsIGZhbHNlKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGV4
Y2VwdGlvbiA9IGU7Ci0gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikp
Ci0gICAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgY29ycmVjdCBl
cnJvci4gRXhwZWN0ZWQgUmVmZXJlbmNlRXJyb3IgYnV0IHdhcyAiICsgZS5uYW1lOwotICAgIH0K
LQotICAgIGlmICghZXhjZXB0aW9uKQotICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJv
d24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uICMiICsgaW5kZXg7Ci19Ci0K
LWZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0gIHRlc3RFeGNlcHRpb24oaSwgUmVm
ZXJlbmNlRXJyb3IpOwotfQotCi12YXIgQyA9IGNsYXNzIEMgZXh0ZW5kcyBBIHsKLSAgICBjb25z
dHJ1Y3RvciAoKSB7Ci0gICAgICB2YXIgYXJyb3cgPSAoKSA9PiB7Ci0gICAgICAgICAgbGV0IF9f
cHJvdG9fXyA9ICdzb21lLXRleHQnOwotICAgICAgICAgIHZhciBhcnIgPSAoKSA9PiB7Ci0gICAg
ICAgICAgICAgIHRlc3RDYXNlKHR5cGVvZiAgX19wcm90b19fLCAnc3RyaW5nJywgIkVyb3JyOiBf
X3Byb3RvX18gdmFyaWFibGUgaGFzIHdyb25nIHR5cGUiKTsKLSAgICAgICAgICAgICAgc3VwZXIo
KTsKLSAgICAgICAgICAgICAgdGVzdENhc2UodGhpcy5pZFZhbHVlLCB0ZXN0VmFsdWUsICJFcnJv
cjogc3VwZXIoKSBzaG91bGQgY3JlYXRlIHRoaXMgYW5kIHB1dCB2YWx1ZSBpbnRvIGlkVmFsdWUg
cHJvcGVydHkiKTsKLSAgICAgICAgICAgfTsKLSAgICAgICAgICAgYXJyKCk7Ci0gICAgICAgfTsK
LQotICAgICAgYXJyb3coKTsKLQotICAgICAgdGVzdENhc2UodGhpcy5pZFZhbHVlLCB0ZXN0VmFs
dWUsICJFcnJvcjogYXJyb3cgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGlzIHRvIGNvbnN0cnVj
dG9yIik7Ci0gICAgfQotfTsKLQotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAg
ICBuZXcgQygpOwotfQotCi1jbGFzcyBEIGV4dGVuZHMgQSB7Ci0gICAgY29uc3RydWN0b3IoZG9S
ZXBsYWNlUHJvdG8pIHsKLSAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gc3VwZXIoKTsKLSAgICAg
ICAgaWYgKGRvUmVwbGFjZVByb3RvKQotICAgICAgICAgICAgRC5fX3Byb3RvX18gPSBmdW5jdGlv
biAoKSB7fTsKLSAgICAgICAgYXJyb3coKTsKLSAgICB9Ci19Ci0KLXRlc3RDYXNlKChuZXcgRChm
YWxzZSkpLmlkVmFsdWUsIHRlc3RWYWx1ZSwgIkVycm9yOiBhcnJvdyBmdW5jdGlvbiBib3VuZCB3
cm9uZyBzdXBlciIpOwotdGVzdENhc2UodHlwZW9mIChuZXcgRCh0cnVlKSkuaWRWYWx1ZSwgInVu
ZGVmaW5lZCIgLCAiRXJyb3I6IGFycm93IGZ1bmN0aW9uIGJvdW5kIHdyb25nIHN1cGVyIik7Ci0K
LWNsYXNzIEUgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3Rvcihkb1JlcGxhY2VQcm90bykgewot
ICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiB7Ci0gICAgICAgICAgICBpZiAoZG9SZXBsYWNlUHJv
dG8pCi0gICAgICAgICAgICAgICAgRS5fX3Byb3RvX18gPSBmdW5jdGlvbiAoKSB7fTsKLSAgICAg
ICAgICAgIHN1cGVyKCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXJyb3coKTsKLSAgICB9Ci19
Ci0KLXRlc3RDYXNlKChuZXcgRShmYWxzZSkpLmlkVmFsdWUsIHRlc3RWYWx1ZSwgIkVycm9yOiBh
cnJvdyBmdW5jdGlvbiBib3VuZCB3cm9uZyBzdXBlciAjMSIpOwotdGVzdENhc2UodHlwZW9mIChu
ZXcgRSh0cnVlKSkuaWRWYWx1ZSwgInVuZGVmaW5lZCIgLCAiRXJyb3I6IGFycm93IGZ1bmN0aW9u
IGJvdW5kIHdyb25nIHN1cGVyICMxIik7Ci0KLQotY2xhc3MgRiBleHRlbmRzIEEgewotICAgIGNv
bnN0cnVjdG9yKGRvUmVwbGFjZVByb3RvKSB7Ci0gICAgICAgIHZhciBhcnJvdyA9ICgpID0+IHsK
LSAgICAgICAgICAgIEYuX19wcm90b19fID0gbnVsbDsKLSAgICAgICAgICAgIHN1cGVyKCk7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgYXJyb3coKTsKLSAgICB9Ci19Ci0KLXZhciB0ZXN0VHlwZUVy
cm9yRXhjZXB0aW9uID0gZnVuY3Rpb24gKGluZGV4KSB7Ci0gICAgdmFyIGV4Y2VwdGlvbjsKLSAg
ICB0cnkgewotICAgICAgICBuZXcgRigpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZXhj
ZXB0aW9uID0gZTsKLSAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpCi0gICAg
ICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgY29ycmVjdCBlcnJvci4g
RXhwZWN0ZWQgVHlwZUVycm9yIGJ1dCB3YXMgIiArIGUubmFtZTsKLSAgICB9Ci0KLSAgICBpZiAo
IWV4Y2VwdGlvbikKLSAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1
bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiAjIiArIGluZGV4OwotfQotCi1mb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgewotICB0ZXN0VHlwZUVycm9yRXhjZXB0aW9uKGkpOwotfQot
Ci12YXIgZXJyb3JTdGFjazsKLQotdmFyIFBhcmVudENsYXNzID0gY2xhc3MgUGFyZW50Q2xhc3Mg
ewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgdGhpcy5p
ZFZhbHVlID0gdGVzdFZhbHVlOwotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcicp
OwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBlcnJvclN0YWNrICA9IGUuc3Rh
Y2s7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi12YXIgQ2hpbGRDbGFzcyA9IGNsYXNzIENoaWxk
Q2xhc3MgZXh0ZW5kcyBQYXJlbnRDbGFzcyB7Ci0gICAgY29uc3RydWN0b3IgKCkgewotICAgICAg
ICB2YXIgYXJyb3dJbkNoaWxkQ29uc3RydWN0b3IgPSAoKSA9PiB7Ci0gICAgICAgICAgICB2YXIg
bmVzdGVkQXJyb3cgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgc3VwZXIoKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgbmVzdGVkQXJyb3coKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICBhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvcigpOwotICAgIH0KLX07Ci0KLWZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgZXJyb3JTdGFjayA9ICcnOwotICAgIGxldCBjID0gbmV3
IENoaWxkQ2xhc3MoKTsKLQotICAgIGxldCBwYXJlbnRDbGFzc0luZGV4T2YgPSBlcnJvclN0YWNr
LmluZGV4T2YoJ1BhcmVudENsYXNzJyk7Ci0gICAgbGV0IG5lc3RlZEFycm93SW5kZXhPZiA9IGVy
cm9yU3RhY2suaW5kZXhPZignbmVzdGVkQXJyb3cnKTsKLSAgICBsZXQgYXJyb3dJbkNoaWxkQ29u
c3RydWN0b3JJbmRleE9mID0gZXJyb3JTdGFjay5pbmRleE9mKCdhcnJvd0luQ2hpbGRDb25zdHJ1
Y3RvcicpOwotICAgIGxldCBjaGlsZENsYXNzSW5kZXhPZiA9IGVycm9yU3RhY2suaW5kZXhPZign
Q2hpbGRDbGFzcycpOwotCi0gICAgdGVzdENhc2UocGFyZW50Q2xhc3NJbmRleE9mID4gLTEgJiYg
ZXJyb3JTdGFjay5pbmRleE9mKCdQYXJlbnRDbGFzcycsIHBhcmVudENsYXNzSW5kZXhPZiArIDEp
ID09PSAtMSwgdHJ1ZSwgIkVycm9yOiBzdGFjayBvZiBlcnJvciBzaG91bGQgY29udGFpbiBQYXJl
bnRDbGFzcyB0ZXh0Iik7Ci0gICAgdGVzdENhc2UobmVzdGVkQXJyb3dJbmRleE9mID4gLTEgJiYg
ZXJyb3JTdGFjay5pbmRleE9mKCduZXN0ZWRBcnJvdycsIG5lc3RlZEFycm93SW5kZXhPZiArIDEp
ID09PSAtMSwgdHJ1ZSwgIkVycm9yOiBzdGFjayBvZiBlcnJvciBzaG91bGQgY29udGFpbiBuZXN0
ZWRBcnJvdyB0ZXh0Iik7Ci0gICAgdGVzdENhc2UoYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJbmRl
eE9mID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCdhcnJvd0luQ2hpbGRDb25zdHJ1Y3Rvcics
IGFycm93SW5DaGlsZENvbnN0cnVjdG9ySW5kZXhPZiArIDEpID09PSAtMSwgdHJ1ZSwgIkVycm9y
OiBzdGFjayBvZiBlcnJvciBzaG91bGQgY29udGFpbiBhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvciB0
ZXh0Iik7Ci0gICAgdGVzdENhc2UoY2hpbGRDbGFzc0luZGV4T2YgPiAtMSAmJiBlcnJvclN0YWNr
LmluZGV4T2YoJ0NoaWxkQ2xhc3MnLCBjaGlsZENsYXNzSW5kZXhPZiArIDEpID09PSAtMSwgdHJ1
ZSwgIkVycm9yOiBzdGFjayBvZiBlcnJvciBzaG91bGQgY29udGFpbnMgQ2hpbGRDbGFzcyB0ZXh0
Iik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVyY2FsbC0zLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwt
My5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiYjZkNWFjYjc0YmRlNjhkNWRk
NjkzN2MxMWRhNmMzMTA2YzZmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXN1cGVyY2FsbC0zLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAs
MCBAQAotdmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewotICAgICAgICB0aHJvdyBtZXNzYWdl
ICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsg
IiciOwotICAgIH0KLX07Ci0KLXZhciB0ZXN0VmFsdWUgID0gJ3Rlc3QtdmFsdWUnOwotCi12YXIg
QSA9IGNsYXNzIEEgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0aGlzLmlkVmFsdWUg
PSB0ZXN0VmFsdWU7Ci0gICAgfQotfTsKLQotdmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7Ci0g
ICAgY29uc3RydWN0b3IgKGJlZm9yZVN1cGVyKSB7Ci0gICAgICAgIHZhciBhcnJvdyA9ICgpID0+
IGV2YWwoJygoKSA9PiB0aGlzLmlkVmFsdWUpKCknKTsKLQotICAgICAgICBpZiAoYmVmb3JlU3Vw
ZXIpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBhcnJvdygpOwotICAgICAgICAgICAgc3Vw
ZXIoKTsKLSAgICAgICAgICAgIHRlc3RDYXNlKHJlc3VsdCwgdGVzdFZhbHVlLCAiRXJyb3I6IGhh
cyB0byBiZSBURFogZXJyb3IiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN1cGVy
KCk7Ci0gICAgICAgICAgICBsZXQgcmVzdWx0PSBhcnJvdygpOwotICAgICAgICAgICAgdGVzdENh
c2UocmVzdWx0LCB0ZXN0VmFsdWUsICJFcnJvcjogc3VwZXIoKSBzaG91bGQgY3JlYXRlIHRoaXMg
YW5kIHB1dCB2YWx1ZSBpbnRvIGlkVmFsdWUgcHJvcGVydHkiKTsKLSAgICAgICAgfQotICAgIH0K
LX07Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgdmFyIGIgPSBuZXcg
QihmYWxzZSk7Ci19Ci0KLXZhciB0ZXN0RXhjZXB0aW9uID0gZnVuY3Rpb24gKHZhbHVlLCBpbmRl
eCkgewotICB2YXIgZXhjZXB0aW9uOwotICB0cnkgewotICAgICAgIG5ldyBCKHZhbHVlKTsKLSAg
fSBjYXRjaCAoZSkgewotICAgICAgZXhjZXB0aW9uID0gZTsKLSAgICAgIGlmICghKGUgaW5zdGFu
Y2VvZiBSZWZlcmVuY2VFcnJvcikpCi0gICAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiB0aHJvd24g
d2FzIG5vdCBhIHJlZmVyZW5jZSBlcnJvciI7Ci0gIH0KLQotICBpZiAoIWV4Y2VwdGlvbikKLSAg
ICAgIHRocm93ICJFeGNlcHRpb24gbm90IHRocm93biBmb3IgYW4gdW5pdGlhbGl6ZWQgdGhpcyBh
dCBpdGVyYXRpb24gIyIgKyBpbmRleDsKLX0KLQotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7
IGkrKykgewotICAgIHRlc3RFeGNlcHRpb24odHJ1ZSwgaSk7Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXN1cGVyY2FsbC00LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMThhNmY3MDQwZDk1NDQ2ZjcyYmJiYTc1Mjg4OTc0ZTNlZWM1OGZkYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVyY2Fs
bC00LmpzCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotdmFyIHRlc3RDYXNlID0gZnVu
Y3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkgewotICAgICAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBl
Y3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOwotICAgIH0KLX07Ci0KLXZhciB0
ZXN0VmFsdWUgID0gJ3Rlc3QtdmFsdWUnOwotCi12YXIgQSA9IGNsYXNzIEEgewotICAgIGNvbnN0
cnVjdG9yKCkgewotICAgICAgICB0aGlzLmlkVmFsdWUgPSB0ZXN0VmFsdWU7Ci0gICAgfQotfTsK
LQotdmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7Ci0gIGNvbnN0cnVjdG9yIChiZWZvcmVTdXBl
cikgewotCi0gICAgICB2YXIgYXJyb3cgPSAoKSA9PiBldmFsKCcoKCkgPT4gc3VwZXIoKSkoKScp
OwotCi0gICAgICBpZiAoYmVmb3JlU3VwZXIpIHsKLSAgICAgICAgICBhcnJvdygpOwotICAgICAg
ICAgIHRlc3RDYXNlKHRoaXMuaWRWYWx1ZSwgdGVzdFZhbHVlLCAiRXJyb3I6IHN1cGVyKCkgc2hv
dWxkIGNyZWF0ZSB0aGlzIGFuZCBwdXQgdmFsdWUgaW50byBpZFZhbHVlIHByb3BlcnR5Iik7Ci0g
ICAgICB9IGVsc2UgewotICAgICAgICAgIHRlc3RDYXNlKHRoaXMuaWRWYWx1ZSwgdGVzdFZhbHVl
LCAiRXJyb3I6IGhhcyB0byBiZSBURFogZXJyb3IiKTsKLSAgICAgICAgICBhcnJvdygpOwotICAg
ICAgfQotICB9Ci19OwotCi12YXIgQyA9IGNsYXNzIEMgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1
Y3RvciAoKSB7Ci0gICAgICAgIHZhciBhcnJvdyA9ICgpID0+IGV2YWwoJygoKSA9PiBzdXBlcigp
KSgpJyk7Ci0gICAgICAgIGFycm93KCk7Ci0gICAgICAgIHJldHVybiB7fTsKLSAgICB9Ci19Owot
Ci12YXIgRCA9IGNsYXNzIEQgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3RvciAoKSB7Ci0gICAg
ICAgIHZhciBhcnJvdyA9ICgpID0+IGV2YWwoJygoKSA9PiBzdXBlcigpKSgpJyk7Ci0gICAgICAg
IGFycm93KCk7Ci0gICAgICAgIGV2YWwoJ3RoaXMuaWQ9Im5ldy12YWx1ZSInKTsKLSAgICB9Ci19
OwotCi12YXIgRSA9IGNsYXNzIEUgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3RvciAoKSB7Ci0g
ICAgICAgIHZhciBhcnJvdyA9ICgpID0+IGV2YWwoImV2YWwoJygoKSA9PiBzdXBlcigpKSgpJyki
KTsKLSAgICAgICAgYXJyb3coKTsKLSAgICAgICAgZXZhbCgnZXZhbCgidGhpcy5pZD1cJ25ldy12
YWx1ZVwnIiknKTsKLSAgICB9Ci19OwotCi1mb3IgKHZhciBpPTA7IGkgPCAxMDAwOyBpKyspIHsK
LSAgICBuZXcgQih0cnVlKTsKLSAgICB2YXIgYyA9IG5ldyBDKCk7Ci0gICAgdGVzdENhc2UodHlw
ZW9mIGMuaWQsICd1bmRlZmluZWQnLCAnRXJyb3IgZHVyaW5nIHNldCB2YWx1ZSBpbiBldmFsICMx
Jyk7Ci0gICAgdmFyIGQgPSBuZXcgRCgpOwotICAgIHRlc3RDYXNlKGQuaWQsICduZXctdmFsdWUn
LCAnRXJyb3IgZHVyaW5nIHNldCB2YWx1ZSBpbiBldmFsICMyJyk7Ci0gICAgdmFyIGUgPSBuZXcg
RSgpOwotICAgIHRlc3RDYXNlKGUuaWQsICduZXctdmFsdWUnLCAnRXJyb3IgZHVyaW5nIHNldCB2
YWx1ZSBpbiBldmFsICMzJyk7Ci19Ci0KLXZhciB0ZXN0RXhjZXB0aW9uID0gZnVuY3Rpb24gKHZh
bHVlLCBpbmRleCkgewotICAgIHZhciBleGNlcHRpb247Ci0gICAgdHJ5IHsKLSAgICAgICAgbmV3
IEIodmFsdWUpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZXhjZXB0aW9uID0gZTsKLSAg
ICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKLSAgICAgICAgICAgIHRo
cm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOwotICAgIH0K
LQotICAgIGlmICghZXhjZXB0aW9uKQotICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJv
d24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uICMiICsgaW5kZXg7Ci19Ci0K
LWZvciAodmFyIGk9MDsgaSA8IDEwMDA7IGkrKykgewotICAgIHRlc3RFeGNlcHRpb24oZmFsc2Us
IGkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwppbmRl
eCA2OWNiOGNkOGVlYjhiY2Y5ODQ0Mjc5MDgyNjk4OTFjZGRmNjI2YzhlLi40Y2ZhYjI0YzkxYmM1
N2M5NTg3NjMyZGZlYzlhNGM5Mzc5OGUyMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtMS5qcwpAQCAtOCw3ICs4LDYgQEAgZnVuY3Rpb24gRG9nKG5hbWUpIHsK
ICAgdGhpcy5uYW1lID0gbmFtZTsKICAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5u
YW1lIik7CiAgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1l
KSgpIik7Ci0gIHRoaXMuZ2V0TmFtZVJlYWxseUhhcmQgPSAoKSA9PiBldmFsKCJldmFsKCcoKCkg
PT4gdGhpcy5uYW1lKSgpJykiKTsKIH0KIAogbm9JbmxpbmUoRG9nKQpAQCAtMTcsNSArMTYsNCBA
QCBmb3IgKHZhciBpPTA7aTwxMDAwMDsgaSsrKSB7CiAgIHZhciBkID0gbmV3IERvZygiTWF4Iik7
CiAgIHRlc3RDYXNlKGQuZ2V0TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4
aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CiAgIHRlc3RD
YXNlKGQuZ2V0TmFtZUhhcmQoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxs
eSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOwotICB0ZXN0Q2FzZShk
LmdldE5hbWVSZWFsbHlIYXJkKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy03LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJmNzZjOWRkNmRmNzgyN2VhNGM0MDk2ODI1NWUyZWFkMWE5N2RhNDcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTcuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi12YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAo
YWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KSB7Ci0gICAgICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsg
IicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7Ci0gICAgfQotfTsKLQotdmFyIGRlZXBTY29w
ZSA9IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgdmFyIF94ID0geCwgX3kgPSB5OwotICAgIHJldHVy
biAoKT0+IF94ICsgX3kgKyB0aGlzLnZhbDsKLX07Ci0KLXZhciBhID0gZGVlcFNjb3BlLmNhbGwo
e3ZhbDonQSd9LCAnRCcsICdFJyk7Ci12YXIgYiA9IGRlZXBTY29wZS5jYWxsKHt2YWw6J0InfSwg
J0QnLCAnRicpOwotdmFyIGMgPSBkZWVwU2NvcGUuY2FsbCh7dmFsOidDJ30sICdEJywgJ0cnKTsK
LQotdmFyIGFub3RoZXJTY29wZSA9IGZ1bmN0aW9uIChfYWYpIHsKLSAgICByZXR1cm4gX2FmKCk7
Ci19OwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgIHRlc3RDYXNlKGMo
KSwgYW5vdGhlclNjb3BlLmNhbGwoe3ZhbDonSSd9LCBjKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKLSAgICB0
ZXN0Q2FzZShiKCksIGFub3RoZXJTY29wZS5jYWxsKHt2YWw6J0onfSwgYiksICJFcnJvcjogdGhp
cyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMy
Iik7Ci0gICAgdGVzdENhc2UoYSgpLCBhbm90aGVyU2NvcGUuY2FsbCh7dmFsOidLJ30sIGEpLCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjMyIpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei0xLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4ZDRkOWQ0MzliMGViNDQxMTg2ZjJhZTZlODdjNjQ5M2ZhYTMwMGYwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHotMS5qcworKysgL2Rldi9udWxsCkBA
IC0xLDMxICswLDAgQEAKLXZhciBBID0gY2xhc3MgQSB7IH07Ci12YXIgQiA9IGNsYXNzIEIgZXh0
ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3RvcihiZWZvcmVTdXBlciwgcmV0dXJuVGhpcykgewotICAg
ICAgICB2YXIgZiA9ICgpID0+IHJldHVyblRoaXMgPyB0aGlzIDoge307Ci0gICAgICAgIGlmIChi
ZWZvcmVTdXBlcikgewotICAgICAgICAgICAgbGV0IHZhbCA9IGYoKTsKLSAgICAgICAgICAgIHN1
cGVyKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdXBlcigpOwotICAgICAgICAg
ICAgbGV0IHZhbCA9IGYoKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXZhciBleGNlcHRpb24g
PSBudWxsOwotZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykgewotICAgIHRyeSB7Ci0gICAg
ICAgIG5ldyBCKHRydWUsIHRydWUpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZXhjZXB0
aW9uID0gZTsKLSAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKLSAg
ICAgICAgICAgIHRocm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJy
b3IiOwotICAgIH0KLQotICAgIGlmICghZXhjZXB0aW9uKQotICAgICAgICB0aHJvdyAiRXhjZXB0
aW9uIG5vdCB0aHJvd24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKLQot
ICAgIHZhciBhID0gbmV3IEIoZmFsc2UsIHRydWUpOwotICAgIHZhciBiID0gbmV3IEIoZmFsc2Us
IGZhbHNlKTsKLSAgICB2YXIgYyA9IG5ldyBCKHRydWUsIGZhbHNlKTsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHotMi5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHot
Mi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FmY2NhZmNiNmE5ZmQzYWM2MjZi
ZTI0ZTRjMDdiMWVmZTAzNjU4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tdGR6LTIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi12YXIgQSA9IGNsYXNz
IEEgeyB9OwotdmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7Ci0gICAgY29uc3RydWN0b3IoYmVm
b3JlU3VwZXIsIHJldHVyblRoaXMpIHsKLSAgICAgICAgdmFyIGYgPSAoKSA9PiByZXR1cm5UaGlz
ID8gKCgpID0+IHRoaXMgKSA6ICgoKT0+e30pOwotICAgICAgICBsZXQgYWYgPSBmKCk7Ci0gICAg
ICAgIGlmIChiZWZvcmVTdXBlcikgewotICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGFmKCk7Ci0g
ICAgICAgICAgICBzdXBlcigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3VwZXIo
KTsKLSAgICAgICAgICAgIGxldCByZXN1bHQgPSBhZigpOwotICAgICAgICB9Ci0gICAgfQotfTsK
LQotdmFyIGV4Y2VwdGlvbiA9IG51bGw7Ci1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKLSAgICB0cnkgewotICAgICAgICBuZXcgQih0cnVlLCB0cnVlKTsKLSAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBS
ZWZlcmVuY2VFcnJvcikpCi0gICAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMg
bm90IGEgcmVmZXJlbmNlIGVycm9yIjsKLSAgICB9Ci0KLSAgICBpZiAoIWV4Y2VwdGlvbikKLSAg
ICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFsaXplZCB0aGlz
IGF0IGl0ZXJhdGlvbiI7Ci0KLSAgICB2YXIgYSA9IG5ldyBCKGZhbHNlLCB0cnVlKTsKLSAgICB2
YXIgYiA9IG5ldyBCKGZhbHNlLCBmYWxzZSk7Ci0gICAgdmFyIGMgPSBuZXcgQih0cnVlLCBmYWxz
ZSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tdGR6LTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tdGR6LTMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFi
OTgzMDlmMWU1YmZiMmNmMDAyODBjNWEzOGQwMDJmOWI2YTY3NTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei0zLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICsw
LDAgQEAKLXZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7Ci0gIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7Ci0gICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
LSAgfQotfTsKLQotdmFyIEEgPSBjbGFzcyBBIHsKLSAgIGNvbnN0cnVjdG9yKCkgewotICAgICAg
dGhpcy5pZCA9ICdBJwotICAgfQotfTsKLQotdmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7Ci0g
IGNvbnN0cnVjdG9yKGJlZm9yZVN1cGVyKSB7Ci0gICAgdmFyIGYgPSAoKSA9PiB7Ci0gICAgICBp
ZiAodGhpcy5pZCA9PT0gJ0EnKSB7Ci0gICAgICAgIHJldHVybiAnb2snOwotICAgICAgfQotICAg
ICAgcmV0dXJuICdvayc7Ci0gICAgfTsKLSAgICBsZXQgdmFsOwotICAgIGlmIChiZWZvcmVTdXBl
cikgewotICAgICAgdmFsID0gZigpOwotICAgICAgc3VwZXIoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgc3VwZXIoKTsKLSAgICAgIHZhbCA9IGYoKTsKLSAgICB9Ci0gICAgdGhpcy5yZXMgPSB2YWw7
Ci0gIH0KLX07Ci0KLXZhciBDID0gY2xhc3MgQyBleHRlbmRzIEEgewotICBjb25zdHJ1Y3Rvcihi
ZWZvcmVTdXBlcikgewotICAgIHZhciBmID0gKCkgPT4gewotICAgICAgaWYgKHRoaXMgPiA1KSB7
Ci0gICAgICAgIHJldHVybiAnb2snOwotICAgICAgfQotICAgICAgcmV0dXJuICdvayc7Ci0gICAg
fTsKLSAgICBsZXQgdmFsOwotICAgIGlmIChiZWZvcmVTdXBlcikgewotICAgICAgdmFsID0gZigp
OwotICAgICAgc3VwZXIoKTsKLSAgICB9IGVsc2UgewotICAgICAgc3VwZXIoKTsKLSAgICAgIHZh
bCA9IGYoKTsKLSAgICB9Ci0gICAgdGhpcy5yZXMgPSB2YWw7Ci0gIH0KLX07Ci0KLXZhciBEID0g
Y2xhc3MgRCBleHRlbmRzIEEgewotICBjb25zdHJ1Y3RvcihiZWZvcmVTdXBlcikgewotICAgIHZh
ciBmID0gKCkgPT4gewotICAgICAgaWYgKHRoaXMgPCA1KSB7Ci0gICAgICAgIHJldHVybiAnb2sn
OwotICAgICAgfQotICAgICAgcmV0dXJuICdvayc7Ci0gICAgfTsKLSAgICBsZXQgdmFsOwotICAg
IGlmIChiZWZvcmVTdXBlcikgewotICAgICAgdmFsID0gZigpOwotICAgICAgc3VwZXIoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgc3VwZXIoKTsKLSAgICAgIHZhbCA9IGYoKTsKLSAgICB9Ci0gICAg
dGhpcy5yZXMgPSB2YWw7Ci0gIH0KLX07Ci0KLXZhciBFID0gY2xhc3MgRSBleHRlbmRzIEEgewot
ICBjb25zdHJ1Y3RvcihiZWZvcmVTdXBlcikgewotICAgIHZhciBmID0gKCkgPT4gewotICAgICAg
aWYgKHRoaXMgIT09IDUpIHsKLSAgICAgICAgcmV0dXJuICdvayc7Ci0gICAgICB9Ci0gICAgICBy
ZXR1cm4gJ29rJzsKLSAgICB9OwotICAgIGxldCB2YWw7Ci0gICAgaWYgKGJlZm9yZVN1cGVyKSB7
Ci0gICAgICB2YWwgPSBmKCk7Ci0gICAgICBzdXBlcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICBz
dXBlcigpOwotICAgICAgIHZhbCA9IGYoKTsKLSAgICB9Ci0gICAgdGhpcy5yZXMgPSB2YWw7Ci0g
IH0KLX07Ci0KLXZhciBGID0gY2xhc3MgRiBleHRlbmRzIEEgewotICBjb25zdHJ1Y3RvcihiZWZv
cmVTdXBlcikgewotICAgIHZhciBmID0gKCkgPT4gewotICAgICAgaWYgKHRoaXMgPD0gNSkgewot
ICAgICAgICByZXR1cm4gJ29rJzsKLSAgICAgIH0KLSAgICAgIHJldHVybiAnb2snOwotICAgIH07
Ci0gICAgbGV0IHZhbDsKLSAgICBpZiAoYmVmb3JlU3VwZXIpIHsKLSAgICAgIHZhbCA9IGYoKTsK
LSAgICAgIHN1cGVyKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHN1cGVyKCk7Ci0gICAgICB2YWwg
PSBmKCk7Ci0gICAgfQotICAgIHRoaXMucmVzID0gdmFsOwotICB9Ci19OwotCi12YXIgRyA9IGNs
YXNzIEcgZXh0ZW5kcyBBIHsKLSAgY29uc3RydWN0b3IoYmVmb3JlU3VwZXIpIHsKLSAgICB2YXIg
ZiA9ICgpID0+IHsKLSAgICAgIGlmICh0aGlzID49IDUpIHsKLSAgICAgICAgcmV0dXJuICdvayc7
Ci0gICAgICB9Ci0gICAgICByZXR1cm4gJ29rJzsKLSAgICB9OwotICAgIGxldCB2YWw7Ci0gICAg
aWYgKGJlZm9yZVN1cGVyKSB7Ci0gICAgICB2YWwgPSBmKCk7Ci0gICAgICBzdXBlcigpOwotICAg
IH0gZWxzZSB7Ci0gICAgICBzdXBlcigpOwotICAgICAgdmFsID0gZigpOwotICAgIH0KLSAgICB0
aGlzLnJlcyA9IHZhbDsKLSAgfQotfTsKLQotdmFyIEcgPSBjbGFzcyBHIGV4dGVuZHMgQSB7Ci0g
IGNvbnN0cnVjdG9yKGJlZm9yZVN1cGVyKSB7Ci0gICAgdmFyIGYgPSAoKSA9PiB7Ci0gICAgICBp
ZiAodGhpcyA9PT0gNSkgewotICAgICAgICByZXR1cm4gJ29rJzsKLSAgICAgIH0KLSAgICAgIHJl
dHVybiAnb2snOwotICAgIH07Ci0gICAgbGV0IHZhbDsKLSAgICBpZiAoYmVmb3JlU3VwZXIpIHsK
LSAgICAgIHZhbCA9IGYoKTsKLSAgICAgIHN1cGVyKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHN1
cGVyKCk7Ci0gICAgICB2YWwgPSBmKCk7Ci0gICAgfQotICAgIHRoaXMucmVzID0gdmFsOwotICB9
Ci19OwotCi12YXIgdHJ5VG9DcmVhdGUgPSBmdW5jdGlvbiAoY2xhc3NGb3JDcmVhdGUpIHsKLSAg
dmFyIHJlc3VsdCA9IGZhbHNlOwotICB0cnkgewotICAgICAgIG5ldyBjbGFzc0ZvckNyZWF0ZSh0
cnVlKTsKLSAgfSBjYXRjaCAoZSkgewotICAgICAgcmVzdWx0ID0gZSBpbnN0YW5jZW9mIFJlZmVy
ZW5jZUVycm9yOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdmFyIGNoZWNrID0gZnVu
Y3Rpb24gKGNsYXNzRm9yQ2hlY2spIHsKLSAgdGVzdENhc2UodHJ5VG9DcmVhdGUoY2xhc3NGb3JD
aGVjayksIHRydWUsICdFeGNlcHRpb24gd2FzblwndCB0aHJvd24gb3Igd2FzIG5vdCBhIHJlZmVy
ZW5jZSBlcnJvcicpOwotICB2YXIgcmVzdWx0ID0gbmV3IGNsYXNzRm9yQ2hlY2soZmFsc2UpOwot
ICB0ZXN0Q2FzZShyZXN1bHQucmVzLCAnb2snLCAnRXJyb3IgaW4gc2V0dGluZyBpZCAnKTsKLX0K
LQotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gIGNoZWNrKEIpOwotICBjaGVj
ayhDKTsKLSAgY2hlY2soRCk7Ci0gIGNoZWNrKEUpOwotICBjaGVjayhGKTsKLSAgY2hlY2soRyk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tdGR6LTQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tdGR6LTQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YzI5
MjdhMWYxZTU1MjMwOTVlNzVhMWM0ZmQ5NWUwYWZjYzJmMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei00LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBA
QAotdmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsK
LSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewotICAgICAgICB0aHJvdyBtZXNzYWdlICsg
Ii4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIici
OwotICAgIH0KLX07Ci0KLXZhciB0ZXN0VmFsdWUgID0gJ3Rlc3QtdmFsdWUnOwotCi12YXIgQSA9
IGNsYXNzIEEgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0aGlzLmlkVmFsdWUgPSB0
ZXN0VmFsdWU7Ci0gICAgfQotfTsKLQotdmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7Ci0gIGNv
bnN0cnVjdG9yIChkb1J1blN1cGVyKSB7Ci0gICAgICB2YXIgYXJyb3cgPSAoKSA9PiB7Ci0gICAg
ICAgICAgaWYgKGRvUnVuU3VwZXIpIHsKLSAgICAgICAgICAgICAgc3VwZXIoKTsKLSAgICAgICAg
ICAgICAgdGVzdENhc2UodGhpcy5pZFZhbHVlLCB0ZXN0VmFsdWUsICJFcnJvcjogc3VwZXIoKSBz
aG91bGQgY3JlYXRlIHRoaXMgYW5kIHB1dCB2YWx1ZSBpbnRvIGlkVmFsdWUgcHJvcGVydHkiKTsK
LSAgICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChkb1J1blN1cGVyKSB7Ci0gICAgICAg
ICAgYXJyb3coKTsKLSAgICAgICAgICB0ZXN0Q2FzZSh0aGlzLmlkVmFsdWUsIHRlc3RWYWx1ZSwg
IkVycm9yOiBhcnJvdyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoaXMgdG8gY29uc3RydWN0b3Ii
KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5pZFZhbHVlOy8v
Zm9yY2UgVERaIGVycm9yCi0gICAgICAgICAgZGVidWcodmFsdWUpOwotICAgICAgfQotICB9Ci19
OwotCi1mb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgdmFyIGV4Y2VwdGlvbjsK
LSAgICB0cnkgewotICAgICAgICBuZXcgQihmYWxzZSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICBleGNlcHRpb24gPSBlOwotICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNl
RXJyb3IpKQotICAgICAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiB0aHJvd24gd2FzIG5vdCBhIHJl
ZmVyZW5jZSBlcnJvciI7Ci0gICAgfQotCi0gICAgaWYgKCFleGNlcHRpb24pCi0gICAgICAgIHRo
cm93ICJFeGNlcHRpb24gbm90IHRocm93biBmb3IgYW4gdW5pdGlhbGl6ZWQgdGhpcyBhdCBpdGVy
YXRpb24gIyIgKyBpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NDkyMzk3MTk4M2Rj
ZGEzNGMyNjkzOTIxMTdiMTc0OGU2N2I0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAgLTAsMCArMSwy
NyBAQAordmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgewor
ICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBpZiAoYWNjZXNzVGhp
c0JlZm9yZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7CisgICAgICBzdXBlcigp
OworICAgIH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQorfTsKKwordmFyIGV4
Y2VwdGlvbiA9IG51bGw7Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0cnkgewor
ICAgICAgIG5ldyBCKHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgICBleGNlcHRpb24gPSBl
OworICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKKyAgICAgICAgICB0
aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVycm9yIjsKKyAgfQor
CisgIGlmICghZXhjZXB0aW9uKQorICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZv
ciBhbiB1bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7CisKKyAgdmFyIGUgPSBuZXcgQihm
YWxzZSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMzIxNjdkNzRjMzQwNGIzMjcwY2RjN2Y0YWM3YWFkZGE0N2IzZmM0
Mi4uODA2MjlhNTRhMDY5ZjFhODYwMDZlMDBhMTQ3MDMzZmQxY2Y0NDJmZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDE1LTEyLTA2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTkzNTg0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxOTI5CisKKyAgICAg
ICAgIkNhdXNlcyBoZWFwIHVzZS1hZnRlci1mcmVlIGNyYXNoZXMgaW4gV2ViIEluc3BlY3RvciB0
ZXN0cworICAgICAgICB3aXRoIEFkZHJlc3NTYW5pdGl6ZXIiIChSZXF1ZXN0ZWQgYnkgZGRraWx6
ZXIgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAg
ICJbRVM2XSAic3VwZXIiIGFuZCAidGhpcyIgc2hvdWxkIGJlIGxleGljYWxseSBib3VuZCBpbnNp
ZGUgYW4KKyAgICAgICAgYXJyb3cgZnVuY3Rpb24gYW5kIHNob3VsZCBsaXZlIGluIGEgSlNMZXhp
Y2FsRW52aXJvbm1lbnQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDkzMzgKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MTkzNTg0CisKIDIwMTUtMTItMDYgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFp
bC5jb20+CiAKICAgICAgICAgW0VTNl0gInN1cGVyIiBhbmQgInRoaXMiIHNob3VsZCBiZSBsZXhp
Y2FsbHkgYm91bmQgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBh
IEpTTGV4aWNhbEVudmlyb25tZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLXN1cGVyY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLXN1cGVyY2FsbC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhhMzljMzdhMmZiNjZmNDZkZWVhMDU2NTUzODA5YWY4N2QyOWZmOTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1zdXBlcmNhbGwtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBA
QAotVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgY2FsbGluZyBvZiB0aGUgc3VwZXIgaW4g
YXJyb3cgZnVuY3Rpb24KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgaXNS
ZWZlcmVuY2VFcnJvciBpcyB0cnVlCi1QQVNTIGIuaWQgaXMgdmFsdWUKLVBBU1MgaXNSZWZlcmVu
Y2VFcnJvciBpcyB0cnVlCi1QQVNTIGQxLmlkIGlzICJiIgotUEFTUyBkMi5pZCBpcyB2YWx1ZQot
UEFTUyAobmV3IEQoKSkuaWQgaXMgdmFsdWUKLVBBU1MgKG5ldyBFKGZhbHNlKSkuaWQgaXMgdmFs
dWUKLVBBU1MgdHlwZW9mIChuZXcgRSh0cnVlKSkuaWQgaXMgJ3VuZGVmaW5lZCcKLVBBU1MgKG5l
dyBGKGZhbHNlKSkuaWQgaXMgdmFsdWUKLVBBU1MgdHlwZW9mIChuZXcgRih0cnVlKSkuaWQgaXMg
J3VuZGVmaW5lZCcKLVBBU1MgaW5kZXhPZlBhcmVudENsYXNzSW5TdGFja0Vycm9yIDwgaW5kZXhP
Zm5lc3RlZEFycm93SW5TdGFja0Vycm9yIGlzIHRydWUKLVBBU1MgaW5kZXhPZm5lc3RlZEFycm93
SW5TdGFja0Vycm9yIDwgaW5kZXhPZmFycm93SW5DaGlsZENvbnN0cnVjdG9ySW5TdGFja0Vycm9y
IGlzIHRydWUKLVBBU1MgaW5kZXhPZmFycm93SW5DaGlsZENvbnN0cnVjdG9ySW5TdGFja0Vycm9y
IDwgaW5kZXhPZkNoaWxkQ2xhc3NJblN0YWNrRXJyb3IgaXMgdHJ1ZQotUEFTUyBpbmRleE9mQ2hp
bGRDbGFzc0luU3RhY2tFcnJvciA+IDAgaXMgdHJ1ZQotUEFTUyBpbmRleE9mUGFyZW50Q2xhc3NJ
blN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmluZGV4T2YoJ1BhcmVudENsYXNzJywgaW5k
ZXhPZlBhcmVudENsYXNzSW5TdGFja0Vycm9yICsgMSkgPT09IC0xIGlzIHRydWUKLVBBU1MgaW5k
ZXhPZm5lc3RlZEFycm93SW5TdGFja0Vycm9yID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCdu
ZXN0ZWRBcnJvdycsIGluZGV4T2ZuZXN0ZWRBcnJvd0luU3RhY2tFcnJvciArIDEpID09PSAtMSBp
cyB0cnVlCi1QQVNTIGluZGV4T2ZhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluU3RhY2tFcnJvciA+
IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignYXJyb3dJbkNoaWxkQ29uc3RydWN0b3InLCBpbmRl
eE9mYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgKyAxKSA9PT0gLTEgaXMgdHJ1
ZQotUEFTUyBpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciA+IC0xICYmIGVycm9yU3RhY2su
aW5kZXhPZignQ2hpbGRDbGFzcycsIGluZGV4T2ZDaGlsZENsYXNzSW5TdGFja0Vycm9yICsgMSkg
PT09IC0xIGlzIHRydWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVy
Y2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ5OGU4MWI4Y2Y2OGM5ZDM4NGNjYjA1Njdk
M2E1MWU2MWU1ODA1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVyY2FsbC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6LWV4cGVjdGVkLnR4
dAppbmRleCBmY2I2YTQ0MzcxMTg1ZjNmY2I2YTZjOTM3YTcxMzExNzI3MGRiNzI3Li4xN2FmNmNk
ODYwMGU4ODQxMjc3YzQ5NGE5ODkwMjI0NTJlYTZhYjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0CkBAIC00LDE0ICs0LDYgQEAgT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQotUEFTUyBp
c1JlZmVyZW5jZUVycm9yIGlzIHRydWUKLVBBU1MgZC5pZCBpcyAnYScKLVBBU1MgZS5pZCBpcyAn
YScKLVBBU1MgZi5pZCBpcyAnYScKLVBBU1MgaXNSZWZlcmVuY2VFcnJvciBpcyB0cnVlCi1QQVNT
IGcuaWQgaXMgJ2EnCi1QQVNTIGguaWQgaXMgJ2EnCi1QQVNTIGkuaWQgaXMgJ2EnCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVyY2FsbC5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVyY2FsbC5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNlZjYwOTdhNGVlYzU1NjcyMTM3OGNkZTMyZDJm
NjY1MjA1YzIwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBF
UzYgYXJyb3cgZnVuY3Rpb24sIGNhbGxpbmcgb2YgdGhlIHN1cGVyIGluIGFycm93IGZ1bmN0aW9u
Jyk7Ci0KLXZhciB2YWx1ZSA9ICdhYmNkLTEyMzQnOwotCi12YXIgQSA9IGNsYXNzIEEgewotICBj
b25zdHJ1Y3RvcigpIHsKLSAgICB0aGlzLmlkID0gdmFsdWU7Ci0gIH0KLX07Ci0KLXZhciBCID0g
Y2xhc3MgQiBleHRlbmRzIEEgewotICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIp
IHsKLSAgICB2YXIgZiA9ICgpID0+ICB7IHN1cGVyKCk7IH07Ci0gICAgaWYgKGFjY2Vzc1RoaXNC
ZWZvcmVTdXBlcikgewotICAgICAgaWYgKHRoaXMuaWQgIT09IHZhbHVlKSB0aHJvdyBuZXcgRXJy
b3IoJ1Nob3VsZCBiZSByZWZlcmVuY2UgZXJyb3IgYmVjYXVzZSBvZiBURFonKTsKLSAgICAgIGYo
KTsKLSAgICB9IGVsc2UgewotICAgICAgZigpOwotICAgICAgaWYgKHRoaXMuaWQgIT09IHZhbHVl
KSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHZhbHVlJyk7Ci0gICAgfQotICB9Ci19OwotCi12YXIg
aXNSZWZlcmVuY2VFcnJvciA9IGZhbHNlOwotdHJ5IHsKLSAgICBuZXcgQih0cnVlKTsKLX0gY2F0
Y2ggKGUpIHsKLSAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVy
cm9yOwotfQotCi1zaG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7Ci0KLXZhciBi
ID0gbmV3IEIoZmFsc2UpOwotc2hvdWxkQmUoJ2IuaWQnLCAndmFsdWUnKTsKLQotdmFyIEMgPSBj
bGFzcyBDIGV4dGVuZHMgQSB7Ci0gIGNvbnN0cnVjdG9yKHJ1blN1cGVySW5Db25zdHJ1Y3Rvciwg
Zm9yY2VURFopIHsKLSAgICB2YXIgZjEgPSAoKSA9PiAgeyBpZiAoIWZvcmNlVERaKSBzdXBlcigp
OyAgdGhpcy5pZCA9ICdiJzsgfTsKLSAgICB2YXIgZjIgPSAoKSA9PiAgeyBpZiAodGhpcy5pZCAh
PT0gJ2InKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIGJvdW5kIG9mIHRoZSB0aGlzJyk7IH07Ci0g
ICAgdmFyIGYzID0gKCkgPT4gIHsgaWYgKHRoaXMuaWQgIT09IHZhbHVlKSB0aHJvdyBuZXcgRXJy
b3IoJ3dyb25nIGJvdW5kIG9mIHRoZSB0aGlzJyk7IH07Ci0KLSAgICBpZiAocnVuU3VwZXJJbkNv
bnN0cnVjdG9yKSB7Ci0gICAgICBzdXBlcigpOwotICAgICAgZjMoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgZjEoKTsKLSAgICAgIGYyKCk7Ci0gICAgfQotICB9Ci19OwotCi1pc1JlZmVyZW5jZUVy
cm9yID0gZmFsc2U7Ci10cnkgewotICAgIG5ldyBDKGZhbHNlLCB0cnVlKTsKLX0gY2F0Y2ggKGUp
IHsKLSAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOwot
fQotc2hvdWxkQmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOwotdmFyIGQxID0gbmV3IEMo
ZmFsc2UsIGZhbHNlKTsKLXNob3VsZEJlKCdkMS5pZCcsICciYiInKTsKLQotdmFyIGQyID0gbmV3
IEModHJ1ZSwgZmFsc2UpOwotc2hvdWxkQmUoJ2QyLmlkJywgJ3ZhbHVlJyk7Ci0KLXZhciBEID0g
Y2xhc3MgRCBleHRlbmRzIEEgewotICBjb25zdHJ1Y3RvciAoKSB7Ci0gICAgdmFyIGFycm93ID0g
KCkgPT4gewotICAgICAgbGV0IF9fcHJvdG9fXyA9ICdzb21lLXRleHQnOwotICAgICAgdmFyIGFy
ciA9ICgpID0+IHsKLSAgICAgICAgICBsZXQgdmFsdWUgPSBfX3Byb3RvX18gKyAndGV4dCc7Ci0g
ICAgICAgICAgc3VwZXIoKTsKLSAgICAgIH07Ci0KLSAgICAgIGFycigpOwotICAgIH07Ci0KLSAg
ICBhcnJvdygpOwotICB9Ci19Owotc2hvdWxkQmUoJyhuZXcgRCgpKS5pZCcsICd2YWx1ZScpOwot
Ci1jbGFzcyBFIGV4dGVuZHMgQSB7Ci0gIGNvbnN0cnVjdG9yKGRvUmVwbGFjZVByb3RvKSB7Ci0g
ICAgdmFyIGFycm93ID0gKCkgPT4gewotICAgICAgaWYgKGRvUmVwbGFjZVByb3RvKQotICAgICAg
ICBFLl9fcHJvdG9fXyA9IGZ1bmN0aW9uICgpIHt9OwotICAgICAgc3VwZXIoKTsKLSAgICB9Owot
Ci0gICAgYXJyb3coKTsKLSAgfQotfTsKLXNob3VsZEJlKCcobmV3IEUoZmFsc2UpKS5pZCcsICJ2
YWx1ZSIpOwotc2hvdWxkQmUoJ3R5cGVvZiAobmV3IEUodHJ1ZSkpLmlkJywgIid1bmRlZmluZWQn
Iik7Ci0KLWNsYXNzIEYgZXh0ZW5kcyBBIHsKLSAgY29uc3RydWN0b3IoZG9SZXBsYWNlUHJvdG8p
IHsKLSAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlcigpOwotICAgIGlmIChkb1JlcGxhY2VQcm90
bykKLSAgICAgIEYuX19wcm90b19fID0gZnVuY3Rpb24gKCkge307Ci0gICAgYXJyb3coKTsKLSAg
fQotfTsKLXNob3VsZEJlKCcobmV3IEYoZmFsc2UpKS5pZCcsICJ2YWx1ZSIpOwotc2hvdWxkQmUo
J3R5cGVvZiAobmV3IEYodHJ1ZSkpLmlkJywgICIndW5kZWZpbmVkJyIpOwotCi12YXIgZXJyb3JT
dGFjazsKLQotdmFyIFBhcmVudENsYXNzID0gY2xhc3MgUGFyZW50Q2xhc3MgewotICBjb25zdHJ1
Y3RvcigpIHsKLSAgICB0cnkgewotICAgICAgdGhpcy5pZFZhbHVlID0gdGVzdFZhbHVlOwotICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcicpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgIGVy
cm9yU3RhY2sgID0gZS5zdGFjazsKLSAgICB9Ci0gIH0KLX07Ci0KLXZhciBDaGlsZENsYXNzID0g
Y2xhc3MgQ2hpbGRDbGFzcyBleHRlbmRzIFBhcmVudENsYXNzIHsKLSAgY29uc3RydWN0b3IgKCkg
ewotICAgIHZhciBhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvciA9ICgpID0+IHsKLSAgICAgIHZhciBu
ZXN0ZWRBcnJvdyA9ICgpID0+IHsKLSAgICAgICAgc3VwZXIoKTsKLSAgICAgIH0KLQotICAgICAg
bmVzdGVkQXJyb3coKTsKLSAgICB9OwotCi0gICAgYXJyb3dJbkNoaWxkQ29uc3RydWN0b3IoKTsK
LSAgfQotfTsKLQotdmFyIGMgPSBuZXcgQ2hpbGRDbGFzcygpOwotCi12YXIgaW5kZXhPZlBhcmVu
dENsYXNzSW5TdGFja0Vycm9yID0gZXJyb3JTdGFjay5pbmRleE9mKCdQYXJlbnRDbGFzcycpOwot
dmFyIGluZGV4T2ZuZXN0ZWRBcnJvd0luU3RhY2tFcnJvciA9IGVycm9yU3RhY2suaW5kZXhPZign
bmVzdGVkQXJyb3cnKTsKLXZhciBpbmRleE9mYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNr
RXJyb3IgPSBlcnJvclN0YWNrLmluZGV4T2YoJ2Fycm93SW5DaGlsZENvbnN0cnVjdG9yJyk7Ci12
YXIgaW5kZXhPZkNoaWxkQ2xhc3NJblN0YWNrRXJyb3IgPSBlcnJvclN0YWNrLmluZGV4T2YoJ0No
aWxkQ2xhc3MnKTsKLQotc2hvdWxkQmVUcnVlKCJpbmRleE9mUGFyZW50Q2xhc3NJblN0YWNrRXJy
b3IgPCBpbmRleE9mbmVzdGVkQXJyb3dJblN0YWNrRXJyb3IiKTsKLXNob3VsZEJlVHJ1ZSgiaW5k
ZXhPZm5lc3RlZEFycm93SW5TdGFja0Vycm9yIDwgaW5kZXhPZmFycm93SW5DaGlsZENvbnN0cnVj
dG9ySW5TdGFja0Vycm9yIik7Ci1zaG91bGRCZVRydWUoImluZGV4T2ZhcnJvd0luQ2hpbGRDb25z
dHJ1Y3RvckluU3RhY2tFcnJvciA8IGluZGV4T2ZDaGlsZENsYXNzSW5TdGFja0Vycm9yIik7Ci1z
aG91bGRCZVRydWUoImluZGV4T2ZDaGlsZENsYXNzSW5TdGFja0Vycm9yID4gMCIpOwotCi1zaG91
bGRCZVRydWUoImluZGV4T2ZQYXJlbnRDbGFzc0luU3RhY2tFcnJvciA+IC0xICYmIGVycm9yU3Rh
Y2suaW5kZXhPZignUGFyZW50Q2xhc3MnLCBpbmRleE9mUGFyZW50Q2xhc3NJblN0YWNrRXJyb3Ig
KyAxKSA9PT0gLTEiKTsKLXNob3VsZEJlVHJ1ZSgiaW5kZXhPZm5lc3RlZEFycm93SW5TdGFja0Vy
cm9yID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCduZXN0ZWRBcnJvdycsIGluZGV4T2ZuZXN0
ZWRBcnJvd0luU3RhY2tFcnJvciArIDEpID09PSAtMSIpOwotc2hvdWxkQmVUcnVlKCJpbmRleE9m
YXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmlu
ZGV4T2YoJ2Fycm93SW5DaGlsZENvbnN0cnVjdG9yJywgaW5kZXhPZmFycm93SW5DaGlsZENvbnN0
cnVjdG9ySW5TdGFja0Vycm9yICsgMSkgPT09IC0xIik7Ci1zaG91bGRCZVRydWUoImluZGV4T2ZD
aGlsZENsYXNzSW5TdGFja0Vycm9yID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCdDaGlsZENs
YXNzJywgaW5kZXhPZkNoaWxkQ2xhc3NJblN0YWNrRXJyb3IgKyAxKSA9PT0gLTEiKTsKLQotdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMKaW5kZXggYjQxYWE2NzBmNDQ0YzY4MGNkOTJkNDky
Y2JhYWQ1ZGI4OTA2Njk1Ni4uYWFmNThmYzY1MTNlZGFiZGUxZGQ2NTA3NDk2YWU4NjRiNjExZmZm
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
dGR6LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRk
ei5qcwpAQCAtMSwyMCArMSwxMyBAQAogZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cg
ZnVuY3Rpb24gdGVzdCB0ZHonKTsKIAotdmFyIEEgPSBjbGFzcyBBIHsKLSAgY29uc3RydWN0b3Io
KSB7Ci0gICAgdGhpcy5pZCA9ICdhJzsKLSAgfQotfTsKLQordmFyIEEgPSBjbGFzcyBBIHsgfTsK
IHZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgewogICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVm
b3JlU3VwZXIpIHsKLSAgICB2YXIgZiA9ICgpID0+IHRoaXM7CiAgICAgaWYgKGFjY2Vzc1RoaXNC
ZWZvcmVTdXBlcikgewotICAgICAgZigpOworICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOwogICAg
ICAgc3VwZXIoKTsKICAgICB9IGVsc2UgewogICAgICAgc3VwZXIoKTsKLSAgICAgIGYoKTsKICAg
ICB9CiAgIH0KIH07CkBAIC0yOCw2NSArMjEsNiBAQCB0cnkgewogCiBzaG91bGRCZSgnaXNSZWZl
cmVuY2VFcnJvcicsICd0cnVlJyk7CiAKLXZhciBhID0gbmV3IEIoZmFsc2UpOwotCi12YXIgRCA9
IGNsYXNzIEQgZXh0ZW5kcyBBIHsKLSAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVy
LCByZXR1cm5UaGlzKSB7Ci0gICAgdmFyIGYgPSAoKSA9PiByZXR1cm5UaGlzID8gdGhpcyA6IHt9
OwotICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKLSAgICAgIGxldCB2YWwgPSBmKCk7
Ci0gICAgICBzdXBlcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICBzdXBlcigpOwotICAgICAgbGV0
IHZhbCA9IGYoKTsKLSAgICB9Ci0gIH0KLX07Ci0KLWlzUmVmZXJlbmNlRXJyb3IgPSBmYWxzZTsK
LXRyeSB7Ci0gICAgICBuZXcgRCh0cnVlLCB0cnVlKTsKLX0gY2F0Y2ggKGUpIHsKLSAgICAgIGlz
UmVmZXJlbmNlRXJyb3IgPSBlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3I7Ci19Ci0KLXNob3Vs
ZEJlKCdpc1JlZmVyZW5jZUVycm9yJywgJ3RydWUnKTsKLQotdmFyIGQgPSBuZXcgRChmYWxzZSwg
dHJ1ZSk7Ci1zaG91bGRCZSgnZC5pZCcsICInYSciKTsKLXZhciBlID0gbmV3IEQoZmFsc2UsIGZh
bHNlKTsKLXNob3VsZEJlKCdlLmlkJywgIidhJyIpOwotdmFyIGYgPSBuZXcgRCh0cnVlLCBmYWxz
ZSk7Ci1zaG91bGRCZSgnZi5pZCcsICInYSciKTsKLQotdmFyIEcgPSBjbGFzcyBHIGV4dGVuZHMg
QSB7Ci0gIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlciwgcmV0dXJuVGhpcykgewot
ICAgIHZhciBmID0gKCkgPT4gcmV0dXJuVGhpcyA/ICgoKSA9PiB0aGlzICkgOiAoKCk9Pnt9KTsK
LSAgICBsZXQgYWYgPSBmKCk7Ci0gICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgewotICAg
ICAgbGV0IHJlc3VsdCA9IGFmKCk7Ci0gICAgICBzdXBlcigpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICBzdXBlcigpOwotICAgICAgbGV0IHJlc3VsdCA9IGFmKCk7Ci0gICAgfQotICB9Ci19OwotCi10
cnkgewotICAgICAgbmV3IEcodHJ1ZSwgdHJ1ZSk7Ci19IGNhdGNoIChlKSB7Ci0gICAgZXhjZXB0
aW9uID0gZTsKLSAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVy
cm9yOwotfQotCi1zaG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7Ci0KLXZhciBn
ID0gbmV3IEcoZmFsc2UsIHRydWUpOwotc2hvdWxkQmUoJ2cuaWQnLCAiJ2EnIik7Ci12YXIgaCA9
IG5ldyBHKGZhbHNlLCBmYWxzZSk7Ci1zaG91bGRCZSgnaC5pZCcsICInYSciKTsKLXZhciBpID0g
bmV3IEcodHJ1ZSwgZmFsc2UpOwotc2hvdWxkQmUoJ2kuaWQnLCAiJ2EnIik7Cit2YXIgZSA9IG5l
dyBCKGZhbHNlKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266747</attachid>
            <date>2015-12-06 17:26:27 -0800</date>
            <delta_ts>2015-12-06 17:28:40 -0800</delta_ts>
            <desc>Manual rollout</desc>
            <filename>bug-151929-20151206172559.patch</filename>
            <type>text/plain</type>
            <size>137228</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTgxY2NjODlkNGM0YjBiZDYyYjA1MDllZjZiNDEwZDE0YjA0OTg5Li4yYWU0MTcxNDgzZWE0OGQ4
ZWViZDYwZDFiMDlkMWE1OWJhYjY5NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0xMi0wNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFJFR1JFU1NJT04ocjE5MzU4NCk6IENhdXNlcyBoZWFwIHVzZS1hZnRlci1m
cmVlIGNyYXNoZXMgaW4gV2ViIEluc3BlY3RvciB0ZXN0cyB3aXRoIEFkZHJlc3NTYW5pdGl6ZXIg
KFJlcXVlc3RlZCBieSBkZGtpbHplciBvbiAjd2Via2l0KS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTkyOQorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldDoKKworICAgICAgICAiW0VTNl0gInN1cGVyIiBhbmQgInRoaXMiIHNob3VsZCBiZSBs
ZXhpY2FsbHkgYm91bmQgaW5zaWRlIGFuCisgICAgICAgIGFycm93IGZ1bmN0aW9uIGFuZCBzaG91
bGQgbGl2ZSBpbiBhIEpTTGV4aWNhbEVudmlyb25tZW50IgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MzM4CisgICAgICAgIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzE5MzU4NAorCiAyMDE1LTEyLTA2ICBTa2FjaGtvdiBPbGVrc2Fu
ZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtlczZdIEFycm93IGZ1bmN0aW9u
IHN5bnRheC4gRml4IHRlc3RzIGFmdGVyIDE0OTMzOCBsYW5kaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGI4
MDBmNTEzZTlmYWFhNTRhMjQyZDVlMTI0MzdmNTBjN2Y5ZDU2ZDguLmE5ZTY5YmVhNmVlYWU1Nzhi
OTJkOTg5ZTFlODkxOTFhMzM0ODk5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFt
ZShuYW1lKTsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwg
Y29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZh
cmlhYmxlcywgZmFsc2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0
QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywg
V1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRO
YW1lVmFsdWUodm0sIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBm
dW5jdGlvbkV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMTVkNDBmOTU3NzE3MTQ0NDgyMWMwNzk4MWIwNTY2
YWE2NWMyMmVkNS4uNDNkNzAxMjQxOTZkZDM2MmNjNjQ0ZjkzYTIxZjlmODFlODdiYjM1YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpA
QCAtOTIsNyArOTIsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhw
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25l
d19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX25ld19hcnJvd19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X2Fycm93X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA1IH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LApAQCAtMTI5LDYg
KzEyOSw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lbnVtZXJhdG9yX3N0cnVjdHVy
ZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW51
bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3RoIjogMyB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRl
eCAzMzIwNDdlYWU3Y2M2YjJjNzQ5NDgzMzgxOTM0ZTYwN2JhYmYxMjBhLi5mZTAyNmZhYWY5ZWNi
OTIyNGFlM2RhYTBjYTYyNTVhNWY5YWZhZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNTcsNiArNTcsNyBAQCB2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fz
c2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKKyAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5j
dGlvbl90aGlzOgogICAgIGNhc2Ugb3BfdG9fdGhpczoKICAgICBjYXNlIG9wX2NoZWNrX3RkejoK
ICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgpAQCAtMzkyLDYgKzM5Myw3IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNhc2Ugb3BfY2hl
Y2tfdGR6OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ugb3BfbG9hZF9hcnJvd2Z1
bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9v
Zl9iYW5kX2FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggYWVlYmRjOTVjZjZiNmQ3ZmVmYjQ4NDQ0Njc3ZTExMjI1YjgzNWNjNC4u
NGVkNzk1ZjE3YjRmN2VmZDk2OGMyZjUzMGJjMjRhMjIwZDllMWRlZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTc2OSw2ICs3NjksMTEgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIHByaW50TG9jYXRpb25P
cEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdldF9zY29wZSIs
IHIwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbG9h
ZF9hcnJvd2Z1bmN0aW9uX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCByMCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV9kaXJl
Y3RfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzIik7CkBAIC0xMzIyLDggKzEzMjcsOSBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJvcF9uZXdfYXJyb3dfZnVuY19leHAiKTsKLSAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYl
ZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IGYwLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggODY5MTMxNjkyYTkzNGE3NWE2
NDNjZTU1ZjllMGQ5NzdhODVhYzEwYS4uODM3MDNjZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4
YmVkYjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVD
YWNoZS5oCkBAIC01NSwxMiArNTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFi
bGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0
Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUm
IGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0
U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwg
SlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1l
bnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFi
bGVzVW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxF
eGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywg
ZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAmdmFyaWFibGVzVW5kZXJURFop
OwotCisgICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgdGhpc1RE
Wk1vZGUsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgICAgICBpZiAoIWV2YWxFeGVjdXRh
YmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGFhYzM5MDRmZjAzNGM5
ZTYwNzE0ZmU5OTM2NTQ5ZmU5NWQ0YTExZTUuLjI2MDJiZTdjNGZiZWNlOWRlYTUwMjE4ZmUxNGI1
NjUxZmI0N2I4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gRklYTUU6
IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2Nr
cyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFi
bGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0
TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlz
TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1
aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9y
VGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVl
ZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwg
bV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQpAQCAtNDQsOCArNDQsNiBAQCBzdHJ1Y3QgRXhl
Y3V0YWJsZUluZm8gewogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKHBh
cnNlTW9kZSkKLSAgICAgICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0
KGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1
Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAg
ICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVy
QmluZGluZykpOwpAQCAtNjEsOCArNTksNiBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogICAgIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRp
bmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQotICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7
IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lz
QXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRz
QWN0aXZhdGlvbiA6IDE7CkBAIC03NCw4ICs3MCw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsK
ICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7Ci0gICAgdW5zaWduZWQgbV9pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCA6IDE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDhhN2Qw
MjY3OTNkNDZiODI1ZmJmM2VmNzY1MmE1NDM4Mzk2NTA0NjMuLjg3ZTgyMzNmMWZlM2E4YmVjNDAy
MzBkMjk4YjA5ZTZkZmY5YTM4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjcsOCArNjcsNiBAQCBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9nZW5lcmF0b3JUaGlzTW9k
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0b3JUaGlzTW9kZSgpKSkKICAgICAs
IG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1cGVyQmluZGluZygp
KSkKLSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGluZm8uaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaW5mby5p
c0Fycm93RnVuY3Rpb25Db250ZXh0KCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9s
aW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBiZWM2ZTA4
NjExZGM1ZjA5NGY3OWFiODVjMTMzNWE5MTFiOWY5MTFiLi5iY2EyYzA0YWNhNDM4MjkyMTc1Njk1
OGJhYTY4ZGIzMGU4ZjEzNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTE5LDkgKzExOSw2IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KLSAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KLSAgICBib29sIGlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0OyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMzk2
LDggKzM5Myw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
OwogICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1f
c3VwZXJCaW5kaW5nIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0IDogMTsKIAog
ICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMGM3ZjQ1MjcxYTI3NjIyMDYyOTg1MmIwNjBmNWU3
ZmIwNmI2YzA0Yi4uM2Y0OTQ4ODVhZjQ5YzI4ZTI2ZjQ5N2Q2NzVmNjRhMTZjOWI5YWY5NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC02Nyw4ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAg
ICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9u
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBG
dW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2
YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwg
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5l
cmF0b3JUaGlzTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCAg
ZXhlY3V0YWJsZS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGZhbHNlKSk7Ci0KKyAg
ICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlv
bi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0
YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRvclRoaXNNb2RlKCks
IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVy
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0
KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUo
KTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtNzYsNyArNzUsNyBAQCBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VP
dmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5k
IGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01v
ZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKK1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVu
bGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1l
bnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkK
ICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+
aW5mZXJyZWROYW1lKCkpCkBAIC0xMDIsNyArMTAxLDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3QKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQogICAgICwgbV9n
ZW5lcmF0b3JUaGlzTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUp
KQogICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVy
QmluZGluZygpKSkKLSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7CiAgICAgbV9w
YXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZmEyMWUzODcwMDcxYmMxYTAwZmNhNTVmMjk5NGM1YTdj
OWRhZWIwZS4uYzhiYmEwYWMzMmJlNDM3ZmZiNWRmM2UzZjllMDViMDQ3OGE1MzYxYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgKQEAgLTY2LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rp
b25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmly
b25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxw
dHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwg
VmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUp
LCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9y
VGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1v
dmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0
QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKICAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKICAgICB9CkBAIC0xMjgsMTMgKzEyOCw5IEBAIHB1YmxpYzoKICAgICBDb25zdHJ1Y3RB
YmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25z
dHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29u
c3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENv
bnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBh
cmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpW
YXJpYWJsZXM7IH0KLSAgICAKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0K
LSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHtyZXR1cm4gbV9p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KIAogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNN
b2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQpOwotICAgIAorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJl
KiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVy
cmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKICAg
ICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVC
bG9ja0ZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+
IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE2Niw3ICsxNjIsNiBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2Rl
CiAgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9z
dXBlckJpbmRpbmcgOiAxOwotICAgIHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0IDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCBhNmIxY2FiOWYwNWVmMmRiODBjZDRlY2E3ODI5YWIxODZlMjNh
Njc0Li40NDVkM2Q1Y2Q0YzA2NDY1N2U2MTIyODgzMDg2NWY5ZmNmMmFlMDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMTU3LDggKzE1Nyw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAg
LCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwg
bV9jb2RlVHlwZShHbG9iYWxDb2RlKQogICAgICwgbV92bSgmdm0pCi0gICAgLCBtX2lzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkKLSAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVu
Y3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1O
b2RlLT51c2VzRXZhbCgpKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApAQCAtMTg5LDExICsx
ODcsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9n
cmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIC8vIG9wZXJhdGlvbnMgd2UgZW1p
dCB3ZSB3aWxsIGhhdmUgUmVzb2x2ZVR5cGVzIHRoYXQgaW1wbGljdGx5IGRvIFREWiBjaGVja3Mu
IFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZAogICAgIC8vIGFkZGl0aW9uYWwgVERaIGNoZWNrcyBv
biB0b3Agb2YgdGhvc2UuIFRoaXMgaXMgd2h5IHdlIGNhbiBvbWl0IHB1c2hpbmcgcHJvZ3JhbU5v
ZGUtPmxleGljYWxWYXJpYWJsZXMoKQogICAgIC8vIHRvIHRoZSBURFogc3RhY2suCi0gICAgCi0g
ICAgaWYgKG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKSB7Ci0gICAgICAgIGlu
aXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQoKTsKLSAgICAgICAgZW1p
dFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKLSAgICB9CiB9CiAKIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2Vy
TW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQpAQCAtMjExLDggKzIwNCw2
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9u
Tm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLy8gY29tcGF0aWJsZSB3aXRoIHRhaWwg
Y2FsbHMgKHdlIGhhdmUgbm8gd2F5IG9mIGVtaXR0aW5nIG9wX2RpZF9jYWxsKS4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5CiAgICAgLCBtX2lu
VGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkg
JiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0
TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpCi0gICAgLCBtX2lzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dChjb2RlQmxvY2stPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgp
KQotICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2Rl
LT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKIHsKICAg
ICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3Rl
cnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwpAQCAtMjM5LDEwICsyMzAs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOwotCi0gICAgYm9vbCBjb250YWlu
c0Fycm93T3JFdmFsQnV0Tm90SW5BcnJvd0Jsb2NrID0gbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KCkgJiYgIW1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsKLSAgICBib29s
IHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8
IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgY29udGFpbnNBcnJvd09yRXZh
bEJ1dE5vdEluQXJyb3dCbG9jazsKLQorICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRo
aW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKTsKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hv
dWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVl
ZHNBcmd1bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2st
PnVzZXNFdmFsKCk7CiAKQEAgLTUyMiw4ICs1MTAsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICBzd2l0Y2ggKHBhcnNl
TW9kZSkgewogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogewot
ICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpKQotICAgICAgICAgICAgZW1pdExv
YWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKKyAgICAgICAgaWYg
KGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAg
ICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTc0LDEzICs1NjIsNiBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgIG1fVERaU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCpwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgZmFsc2UpKTsKICAgICBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZh
bHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKHBhcmFtZXRlcnMsIGZ1bmN0aW9uTm9kZSwg
ZnVuY3Rpb25TeW1ib2xUYWJsZSwgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBjYXB0dXJlcyk7
CiAKLSAgICBpZiAobmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgIWNvZGVC
bG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgaW5pdGlhbGl6ZUFycm93RnVuY3Rp
b25Db250ZXh0U2NvcGVJZk5lZWRlZChmdW5jdGlvblN5bWJvbFRhYmxlKTsKLSAgICAgICAgZW1p
dFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKLSAgICAgICAgZW1pdFB1dE5l
d1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwotICAgICAgICBlbWl0UHV0RGVy
aXZlZENvbnN0cnVjdG9yVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7Ci0gICAgfQotCiAg
ICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgdHJ1ZSk7CiB9CiAKQEAgLTU5Myw4ICs1
NzQsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFs
Tm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgICwgbV9jb2RlVHlwZShFdmFsQ29k
ZSkKICAgICAsIG1fdm0oJnZtKQogICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2st
PnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgLCBtX2lzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dChjb2RlQmxvY2stPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpKQotICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZXZhbE5v
ZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUtPnVzZXNFdmFsKCkpCiB7CiAgICAg
Zm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJz
KQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTYyNCwxNCArNjAzLDYg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUq
IGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKIAogICAgIG1fVERaU3RhY2suYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2UpKTsKIAotICAgIGlmIChj
b2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBldmFsTm9kZS0+dXNlc1RoaXMo
KSkKLSAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1l
bnQoKTsKLQotICAgIGlmIChuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiAh
Y29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpIHsKLSAgICAgICAgaW5pdGlhbGl6
ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZCgpOwotICAgICAgICBlbWl0UHV0VGhp
c1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwotICAgIH0KLSAgICAKICAgICBwdXNoTGV4
aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCB0cnVlKTsKIH0KIApAQCAtNjQ0LDggKzYxNSw2IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1O
b2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAg
LCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCi0gICAgLCBtX2lz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkKLSAgICAsIG1fbmVlZHNUb1VwZGF0ZUFy
cm93RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigp
IHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgp
KTsKIApAQCAtODgxLDU5ICs4NTAsNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFs
aXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YQogICAgIH0K
IH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZUFycm93RnVuY3Rpb25Db250
ZXh0U2NvcGVJZk5lZWRlZChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCi17Ci0gICAgaWYgKG1f
YXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciAhPSBudWxscHRy
KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKG1fbGV4aWNhbEVudmlyb25tZW50UmVn
aXN0ZXIgIT0gbnVsbHB0cikgewotICAgICAgICBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNh
bEVudmlyb25tZW50UmVnaXN0ZXIgPSBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyOwotICAg
ICAgICAKLSAgICAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsKLSAg
ICAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNldDsKLQotICAgICAgICAgICAgb2Zmc2V0ID0gc3lt
Ym9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQoKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxl
LT5zZXQocHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVF
bnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwotCi0gICAgICAgICAgICBpZiAobV9jb2RlVHlwZSA9
PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBzeW1ib2xUYWJsZS0+
dGFrZU5leHRTY29wZU9mZnNldCgpOwotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5zZXQo
cHJvcGVydHlOYW1lcygpLm5ld1RhcmdldExvY2FsUHJpdmF0ZU5hbWUuaW1wbCgpLCBTeW1ib2xU
YWJsZUVudHJ5KFZhck9mZnNldChvZmZzZXQpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkg
PT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKSB7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0g
c3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQoKTsKLSAgICAgICAgICAgICAgICBzeW1i
b2xUYWJsZS0+c2V0KHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFt
ZS5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWYXJpYWJs
ZUVudmlyb25tZW50IGVudmlyb25tZW50OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gZW52aXJvbm1l
bnQuYWRkKHByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllcik7Ci0gICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7Ci0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5zZXRJc0NvbnN0KCk7Ci0gICAgCi0gICAgaWYgKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25D
b2RlKSAgewotICAgICAgICBhdXRvIGFkZFRhcmdldCA9IGVudmlyb25tZW50LmFkZChwcm9wZXJ0
eU5hbWVzKCkubmV3VGFyZ2V0TG9jYWxQcml2YXRlTmFtZSk7Ci0gICAgICAgIGFkZFRhcmdldC5p
dGVyYXRvci0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOwotICAgICAgICBhZGRUYXJnZXQuaXRlcmF0
b3ItPnZhbHVlLnNldElzTGV0KCk7Ci0gICAgfQotCi0gICAgaWYgKGlzQ29uc3RydWN0b3IoKSAm
JiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgYXV0byBkZXJpdmVkQ29uc3RydWN0b3IgPSBlbnZpcm9ubWVudC5hZGQocHJvcGVydHlOYW1l
cygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1lKTsKLSAgICAgICAgZGVyaXZlZENvbnN0
cnVjdG9yLml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7Ci0gICAgICAgIGRlcml2ZWRD
b25zdHJ1Y3Rvci5pdGVyYXRvci0+dmFsdWUuc2V0SXNMZXQoKTsKLSAgICB9Ci0KLSAgICBzaXpl
X3Qgc2l6ZSA9IG1fc3ltYm9sVGFibGVTdGFjay5zaXplKCk7Ci0gICAgcHVzaExleGljYWxTY29w
ZUludGVybmFsKGVudmlyb25tZW50LCB0cnVlLCBudWxscHRyLCBURFpSZXF1aXJlbWVudDo6VW5k
ZXJURFosIFNjb3BlVHlwZTo6TGV0Q29uc3RTY29wZSwgU2NvcGVSZWdpc3RlclR5cGU6OkJsb2Nr
KTsKLQotICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgbV9zeW1ib2xUYWJsZVN0YWNrLnNpemUoKSA9
PSBzaXplICsgMSk7Ci0KLSAgICBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25t
ZW50UmVnaXN0ZXIgPSBtX3N5bWJvbFRhYmxlU3RhY2subGFzdCgpLm1fc2NvcGU7Ci19Ci0KIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplTmV4dFBhcmFtZXRlcigpCiB7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KG1f
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwpAQCAtMTk3Niw5ICsxODkyLDkgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6cHJlcGFyZUxleGljYWxTY29wZUZvck5leHRGb3JMb29wSXRlcmF0
aW9uKFZhcmlhYmxlRW52aXIKICAgICB9CiB9CiAKLVZhcmlhYmxlIEJ5dGVjb2RlR2VuZXJhdG9y
Ojp2YXJpYWJsZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgVGhpc1Jlc29sdXRpb25UeXBl
IHRoaXNSZXNvbHV0aW9uVHlwZSkKK1ZhcmlhYmxlIEJ5dGVjb2RlR2VuZXJhdG9yOjp2YXJpYWJs
ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBpZiAocHJvcGVydHkgPT0gcHJv
cGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyICYmIHRoaXNSZXNvbHV0aW9uVHlwZSA9PSBUaGlz
UmVzb2x1dGlvblR5cGU6OkxvY2FsKSB7CisgICAgaWYgKHByb3BlcnR5ID09IHByb3BlcnR5TmFt
ZXMoKS50aGlzSWRlbnRpZmllcikgewogICAgICAgICByZXR1cm4gVmFyaWFibGUocHJvcGVydHks
IFZhck9mZnNldCh0aGlzUmVnaXN0ZXIoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCB0aGlzUmVnaXN0
ZXIoKSwKICAgICAgICAgICAgIFJlYWRPbmx5LCBWYXJpYWJsZTo6U3BlY2lhbFZhcmlhYmxlLCAw
LCBmYWxzZSk7CiAgICAgfQpAQCAtMjY3Myw2ICsyNTg5LDkgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJh
c2VGdW4KICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoaW5kZXgpOworICAgIAorICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdf
YXJyb3dfZnVuY19leHApCisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5j
KQpAQCAtMjY4Myw3ICsyNjAyLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4CiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24o
UmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBBU1NFUlQo
ZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZSk7ICAgIAorICAgIEFTU0VSVChmdW5jLT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUo
KSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKKyAgICBib29sIGlzQ2xh
c3NDb25zdHJ1Y3RvciA9IG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0
b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOworICAgIGlmIChpc0NsYXNzQ29uc3Ry
dWN0b3IgfHwgZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkp
CisgICAgICAgIGVtaXRURFpDaGVjayh0aGlzUmVnaXN0ZXIoKSk7CisgICAgCiAgICAgZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7CiB9
CkBAIC0zMjkyLDYgKzMyMTUsMTMgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YWxsb2NhdGVB
bmRFbWl0U2NvcGUoKQogICAgIG1fdG9wTW9zdFNjb3BlID0gYWRkVmFyKCk7CiAgICAgZW1pdE1v
dmUobV90b3BNb3N0U2NvcGUsIHNjb3BlUmVnaXN0ZXIoKSk7CiB9CisKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKFJlZ2lzdGVySUQqIGFy
cm93RnVuY3Rpb25UaGlzKQoreworICAgIGVtaXRPcGNvZGUob3BfbG9hZF9hcnJvd2Z1bmN0aW9u
X3RoaXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJvd0Z1bmN0aW9uVGhpcy0+aW5k
ZXgoKSk7CisgICAgcmV0dXJuIGFycm93RnVuY3Rpb25UaGlzOworfQogICAgIAogdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENv
bnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4dCogYm90dG9tU2Nv
cGUpCiB7CkBAIC0zOTc4LDY0ICszOTA4LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cG9w
SW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlcikKICAgICBtX2Zvcklu
Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpCi17Ci0gICAg
QVNTRVJUKG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSB8fCBtX2NvZGVCbG9jay0+aXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpIHx8IGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCk7Ci0gICAgCi0gICAgbV9yZXNvbHZlZEFycm93RnVuY3Rpb25TY29wZUNv
bnRleHRSZWdpc3RlciA9IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyaWFibGUocHJvcGVy
dHlOYW1lcygpLnRoaXNJZGVudGlmaWVyLCBUaGlzUmVzb2x1dGlvblR5cGU6OlNjb3BlZCkpOwot
ICAgIHJldHVybiBtX3Jlc29sdmVkQXJyb3dGdW5jdGlvblNjb3BlQ29udGV4dFJlZ2lzdGVyLmdl
dCgpOwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZFRoaXNGcm9tQXJyb3dG
dW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpCi17Ci0gICAgZW1pdEdldEZyb21TY29wZSh0aGlz
UmVnaXN0ZXIoKSwgZW1pdExvYWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCksIHZh
cmlhYmxlKHByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBl
OjpTY29wZWQpLCBEb05vdFRocm93SWZOb3RGb3VuZCk7Ci19Ci0gICAgCi1SZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGlj
YWxFbnZpcm9ubWVudCgpCi17Ci0gICAgbV9pc05ld1RhcmdldExvYWRlZEluQXJyb3dGdW5jdGlv
biA9IHRydWU7Ci0KLSAgICBWYXJpYWJsZSBuZXdUYXJnZXRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0
eU5hbWVzKCkubmV3VGFyZ2V0TG9jYWxQcml2YXRlTmFtZSk7Ci0gICAgZW1pdE1vdmUobV9uZXdU
YXJnZXRSZWdpc3RlciwgZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgZW1pdExvYWRB
cnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCksIG5ld1RhcmdldFZhciwgVGhyb3dJZk5v
dEZvdW5kKSk7Ci0gICAgCi0gICAgcmV0dXJuIG1fbmV3VGFyZ2V0UmVnaXN0ZXI7Ci19Ci0KLVJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvckZy
b21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCkKLXsKLSAgICBWYXJpYWJsZSBwcm90
b1Njb3BlVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclBy
aXZhdGVOYW1lKTsKLSAgICByZXR1cm4gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwg
ZW1pdExvYWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCksIHByb3RvU2NvcGVWYXIs
IFRocm93SWZOb3RGb3VuZCk7Ci19Ci0gICAgCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0TmV3VGFyZ2V0VG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKLXsKLSAgICBBU1NFUlQo
bV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9IG51bGxw
dHIpOwotICAgICAgICAKLSAgICBWYXJpYWJsZSBuZXdUYXJnZXRWYXIgPSB2YXJpYWJsZShwcm9w
ZXJ0eU5hbWVzKCkubmV3VGFyZ2V0TG9jYWxQcml2YXRlTmFtZSk7Ci0gICAgZW1pdFB1dFRvU2Nv
cGUobV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBuZXdU
YXJnZXRWYXIsIG5ld1RhcmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRp
b24pOwotfQotICAgIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dERlcml2ZWRDb25z
dHJ1Y3RvclRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCi17Ci0gICAgaWYgKGlzQ29uc3Ry
dWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQp
IHsKLSAgICAgICAgQVNTRVJUKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1l
bnRSZWdpc3RlciAhPSBudWxscHRyKTsKLSAgICAgICAgICAgIAotICAgICAgICBWYXJpYWJsZSBw
cm90b1Njb3BlID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclBy
aXZhdGVOYW1lKTsKLSAgICAgICAgZW1pdFB1dFRvU2NvcGUobV9hcnJvd0Z1bmN0aW9uQ29udGV4
dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBwcm90b1Njb3BlLCAmbV9jYWxsZWVSZWdpc3Rl
ciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uKTsKLSAgICB9Ci19Ci0gICAg
Ci12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRl
eHRTY29wZSgpCi17Ci0gICAgQVNTRVJUKGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIHx8
IG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciAhPSBudWxs
cHRyKTsKLSAgICAgICAgCi0gICAgaWYgKGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQot
ICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKLQotICAg
IFZhcmlhYmxlIHRoaXNWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkudGhpc0lkZW50aWZp
ZXIsIFRoaXNSZXNvbHV0aW9uVHlwZTo6U2NvcGVkKTsKLSAgICBlbWl0UHV0VG9TY29wZShpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSA/IG1fcmVzb2x2ZWRBcnJvd0Z1bmN0aW9uU2NvcGVD
b250ZXh0UmVnaXN0ZXIuZ2V0KCkgOiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIsIHRoaXNWYXIsIHRoaXNSZWdpc3RlcigpLCBEb05vdFRocm93SWZOb3RG
b3VuZCwgTm90SW5pdGlhbGl6YXRpb24pOwotfQotCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpw
dXNoU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIpCiB7CiAgICAgaWYgKCFsb2NhbFJlZ2lzdGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IDVjMTA1NzRhZGY4ZjE1YzA1ODA1NDBlZjQ2ZjExMjAwYjQ3ZWQ0ODEuLjBl
YTQ5YTQyYzZhODgzOWQ1MzMwMTUyMjgyZmU2YmIzZjIyZmQ3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTY2LDggKzY2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cGVjdEFycmF5Q29uc3Ry
dWN0b3IKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBUaGlzUmVzb2x1dGlvblR5cGUgeyBMb2Nh
bCwgU2NvcGVkIH07Ci0gICAgCiAgICAgY2xhc3MgQ2FsbEFyZ3VtZW50cyB7CiAgICAgcHVibGlj
OgogICAgICAgICBDYWxsQXJndW1lbnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiwgQXJndW1lbnRzTm9k
ZSosIHVuc2lnbmVkIGFkZGl0aW9uYWxBcmd1bWVudHMgPSAwKTsKQEAgLTI4MiwxMSArMjgwLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENvbW1vbklkZW50aWZpZXJzJiBwcm9w
ZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gKm1fdm0tPnByb3BlcnR5TmFtZXM7IH0KIAogICAg
ICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXND
b25zdHJ1Y3RvcigpOyB9Ci0gICAgICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpOyB9Ci0gICAgICAgIGJvb2wgdXNlc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3Njb3BlTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKTsgfQotICAgICAgICBib29sIG5lZWRzVG9V
cGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0
ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9Ci0gICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7
IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwoKTsgfQotICAgICAgICBib29sIHVzZXNUaGlz
KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNUaGlzKCk7IH0KICAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5jb25zdHJ1Y3RvcktpbmQoKTsgfQogICAgICAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0
b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzTW9k
ZSgpOyB9CiAgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KQEAgLTI5NSw3ICsyODgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzQXJndW1lbnROdW1iZXIoY29uc3QgSWRlbnRp
ZmllciYsIGludCk7CiAKLSAgICAgICAgVmFyaWFibGUgdmFyaWFibGUoY29uc3QgSWRlbnRpZmll
ciYsIFRoaXNSZXNvbHV0aW9uVHlwZSA9IFRoaXNSZXNvbHV0aW9uVHlwZTo6TG9jYWwpOworICAg
ICAgICBWYXJpYWJsZSB2YXJpYWJsZShjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIAogICAg
ICAgICBlbnVtIEV4aXN0aW5nVmFyaWFibGVNb2RlIHsgVmVyaWZ5RXhpc3RpbmcsIElnbm9yZUV4
aXN0aW5nIH07CiAgICAgICAgIHZvaWQgY3JlYXRlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciYs
IFZhcktpbmQsIFN5bWJvbFRhYmxlKiwgRXhpc3RpbmdWYXJpYWJsZU1vZGUgPSBWZXJpZnlFeGlz
dGluZyk7IC8vIENyZWF0ZXMgdGhlIHZhcmlhYmxlLCBvciBhc3NlcnRzIHRoYXQgdGhlIGFscmVh
ZHktY3JlYXRlZCB2YXJpYWJsZSBpcyBzdWZmaWNpZW50bHkgY29tcGF0aWJsZS4KQEAgLTMwMywx
MSArMjk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFJldHVybnMgdGhlIHJlZ2lz
dGVyIHN0b3JpbmcgInRoaXMiCiAgICAgICAgIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3RoaXNSZWdpc3RlcjsgfQogICAgICAgICBSZWdpc3RlcklEKiBhcmd1bWVudHNS
ZWdpc3RlcigpIHsgcmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXI7IH0KLSAgICAgICAgUmVnaXN0
ZXJJRCogbmV3VGFyZ2V0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFtX2NvZGVC
bG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgfHwgbV9pc05ld1RhcmdldExvYWRlZEluQXJyb3dGdW5j
dGlvbgotICAgICAgICAgICAgICAgID8gbV9uZXdUYXJnZXRSZWdpc3RlciA6IGVtaXRMb2FkTmV3
VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKLSAgICAgICAgfQor
ICAgICAgICBSZWdpc3RlcklEKiBuZXdUYXJnZXQoKSB7IHJldHVybiBtX25ld1RhcmdldFJlZ2lz
dGVyOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogc2NvcGVSZWdpc3RlcigpIHsgcmV0dXJuIG1f
c2NvcGVSZWdpc3RlcjsgfQogCkBAIC00OTUsMTAgKzQ4NCw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGVtaXRQcm9maWxlVHlwZShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmls
ZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0RGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlbmREaXZvdCk7CiAKICAgICAgICAgdm9pZCBlbWl0UHJvZmlsZUNvbnRyb2xGbG93KGludCk7
Ci0gICAgICAgIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhp
Y2FsRW52aXJvbm1lbnQoKTsKLSAgICAgICAgdm9pZCBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5j
dGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZE5l
d1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJik7CkBA
IC02NDMsMTAgKzYyOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRHZXRT
Y29wZSgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFdpdGhTY29wZShSZWdpc3RlcklE
KiBvYmplY3RTY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBvcFdpdGhTY29wZSgpOwotICAgICAg
ICB2b2lkIGVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7Ci0gICAgICAg
IHZvaWQgZW1pdFB1dE5ld1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwotICAg
ICAgICB2b2lkIGVtaXRQdXREZXJpdmVkQ29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0
U2NvcGUoKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWREZXJpdmVkQ29uc3RydWN0b3JG
cm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCiAgICAgICAgIHZvaWQgZW1p
dERlYnVnSG9vayhEZWJ1Z0hvb2tJRCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY2hhck9mZnNl
dCwgdW5zaWduZWQgbGluZVN0YXJ0KTsKIApAQCAtNzM5LDYgKzcyMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKTsKICAgICAgICAg
dm9pZCBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9h
ZEFycm93RnVuY3Rpb25UaGlzKFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9pZCBlbWl0Q29tcGxl
eFBvcFNjb3BlcyhSZWdpc3RlcklEKiwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwgQ29u
dHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSk7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PGRvdWJsZSwgSlNWYWx1ZT4gTnVtYmVyTWFwOwpAQCAtNzkwLDggKzc3Miw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1h
a2VGdW5jdGlvbihGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGJvb2wgbmV3aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ID0gY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IChtX2lzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dCAmJiBtZXRhZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSk7Ci0KICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
dmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBnZXRWYXJpYWJsZXNVbmRlclREWih2YXJp
YWJsZXNVbmRlclREWik7CiAKQEAgLTgxMCw3ICs3OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSAmJiBpc0NvbnN0cnVjdG9yKCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVGhpc01v
ZGUgPSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHk7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2Uo
KSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRo
aXNNb2RlLCB2YXJpYWJsZXNVbmRlclREWiwgbmV3aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCB2YXJpYWJsZXNVbmRlclREWik7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxlRW52
aXJvbm1lbnQmKTsKQEAgLTgyMSw3ICs4MDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBpbml0aWFsaXplUGFyYW1ldGVycyhGdW5jdGlvblBhcmFtZXRlcnMmKTsKICAgICAgICAg
dm9pZCBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0
YW50SW5kZXgpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVz
QW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soRnVuY3Rpb25QYXJhbWV0ZXJzJiwgRnVuY3Rpb25O
b2RlKiwgU3ltYm9sVGFibGUqLCBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBjb25zdCBz
dGQ6OmZ1bmN0aW9uPGJvb2wgKFVuaXF1ZWRTdHJpbmdJbXBsKik+JiBjYXB0dXJlcyk7Ci0gICAg
ICAgIHZvaWQgaW5pdGlhbGl6ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZChTeW1i
b2xUYWJsZSogPSBudWxscHRyKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgSlNTdHJpbmcqIGFk
ZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImKTsKQEAgLTg2NCw4ICs4NDMsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9nbG9iYWxPYmplY3RSZWdpc3Rl
ciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdpc3RlciB7
IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0
ZXJzW0xpbmtUaW1lQ29uc3RhbnRDb3VudF07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fYXJyb3dG
dW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51bGxwdHIgfTsKLSAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1fcmVzb2x2ZWRBcnJvd0Z1bmN0aW9uU2NvcGVDb250
ZXh0UmVnaXN0ZXI7CiAKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQqLCAxNj4g
bV9sb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRl
ZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3RlcnM7CkBAIC05MjEs
OSArODk4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5j
dGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV91c2VzTm9uU3RyaWN0RXZhbCB7IGZhbHNl
IH07CiAgICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNlIH07Ci0gICAgICAgIGJv
b2wgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgeyBmYWxzZSB9OwotICAgICAgICBib29s
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwotICAgICAgICBib29sIG1faXNO
ZXdUYXJnZXRMb2FkZWRJbkFycm93RnVuY3Rpb24geyBmYWxzZSB9OwogICAgIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCBhZGQ5NzljNTQ3ODAyYjQwMjBkZWJiNjgyMjRlMzJjMjIwMTUyZjczLi45OTU2MWJj
N2VkNTg4YjZmODBkMGU5YzFjNjY2NTQzZDE2M2E2ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNDYsMTAgKzE0
Niw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4
aWNhbEVudmlyb25tZW50KCk7Ci0KLSAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sg
fHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6
RW1wdHkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQorICAgIGlm
IChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5nZW5lcmF0b3JUaGlz
TW9kZSgpID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTY4LDkgKzE2NSw2IEBAIFJlZ2lzdGVySUQq
IFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KCkpCi0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0
cnVjdG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwotCiAgICAgUmVnaXN0ZXJJRCBjYWxsZWU7
CiAgICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CiAKQEAgLTcwMiwyMSArNjk2
LDYgQEAgQ2FsbEFyZ3VtZW50czo6Q2FsbEFyZ3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBBcmd1bWVudHNOb2RlKiBhcmd1bWUKIAogUmVnaXN0ZXJJRCogRXZhbEZ1bmN0aW9u
Q2FsbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiB7Ci0gICAgLy8gV2UgbmVlZCB0cnkgdG8gbG9hZCAndGhpcycgYmVmb3Jl
IGNhbGwgZXZhbCBpbiBjb25zdHJ1Y3RvciwgYmVjYXVzZSAndGhpcycgY2FuIGNyZWF0ZWQgYnkg
J3N1cGVyJyBpbiBzb21lIG9mIHRoZSBhcnJvdyBmdW5jdGlvbgotICAgIC8vIHZhciBBID0gY2xh
c3MgQSB7Ci0gICAgLy8gICBjb25zdHJ1Y3RvciAoKSB7IHRoaXMuaWQgPSAnQSc7IH0KLSAgICAv
LyB9Ci0gICAgLy8KLSAgICAvLyB2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kIEEgewotICAgIC8vICAg
IGNvbnN0cnVjdG9yICgpIHsKLSAgICAvLyAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlcigp
OwotICAgIC8vICAgICAgIGFycm93KCk7Ci0gICAgLy8gICAgICAgZXZhbCgidGhpcy5pZCA9ICdC
JyIpOwotICAgIC8vICAgIH0KLSAgICAvLyB9Ci0gICAgaWYgKGdlbmVyYXRvci5jb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgZ2VuZXJhdG9yLm5lZWRzVG9V
cGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWRU
aGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKLQogICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmV2YWwp
OwogICAgIGlmIChSZWdpc3RlcklEKiBsb2NhbCA9IHZhci5sb2NhbCgpKSB7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgbG9jYWwpOwpAQCAtNzQ0LDE2ICs3MjMsMTEgQEAgUmVnaXN0ZXJJ
RCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmUKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwogICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgaWYgKG1fZXhwci0+aXNT
dXBlck5vZGUoKSkgewotICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8
fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpOwotICAgICAgICBBU1NF
UlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpOworICAgICAgICBB
U1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSk7CisgICAgICAgIEFTU0VSVChnZW5lcmF0
b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVy
YXRvci5uZXdUYXJnZXQoKSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5l
bWl0Q29uc3RydWN0KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHJl
dCk7Ci0gICAgICAgIAotICAgICAgICBib29sIGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCA9IGdl
bmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQ7Ci0g
ICAgICAgIGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgfHwgKGlz
Q29uc3RydWN0b3JLaW5kRGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVu
Y3Rpb25Db250ZXh0KCkpKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUaGlzVG9BcnJv
d0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7Ci0gICAgICAgIAogICAgICAgICByZXR1cm4gcmV0Owog
ICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7CkBAIC0zMDc4LDkgKzMwNTIsNiBAQCB2b2lkIEZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2Fs
bHkgaW5zZXJ0IG9uZS4KICAgICAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0gICAgICAgICAgICBp
ZiAoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkpCi0gICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCk7IC8vIEFycm93IGZ1bmN0aW9uIGNhbiBpbnZva2UgJ3N1cGVyJyBpbiBj
b25zdHJ1Y3RvciBhbmQgYmVmb3JlIGxlYXZlIGNvbnN0cnVjdG9yIHdlIG5lZWQgbG9hZCAndGhp
cycgZnJvbSBsZXhpY2FsIGFycm93IGZ1bmN0aW9uIGVudmlyb25tZW50Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/
IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2Zp
bGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4
cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVz
ZXIncyBzb3VyY2UgY29kZS4KICAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxp
bmVTdGFydE9mZnNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGQ1NDA1NTBmNWUxNGQ2MDJhOTkyODgwZWJh
MGU2ZDE5YmU2ODM3MDQuLmQzODNjM2ZmZDA4MjBmOGEyYjcxZTg3YzQ1NTJkZjc3ZDA2NTRmN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6
OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBOYWtlZFB0cjxFeGNlcHRpb24+JiBlCiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICBKU1Njb3BlOjpj
b2xsZWN0VmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29wZSgpLCB2YXJpYWJsZXNVbmRl
clREWik7CiAKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIGNvZGVCbG9jay5pc1N0cmljdE1vZGUo
KSwgdGhpc1REWk1vZGUsIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQoKSwgY29kZUJsb2NrLnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJy
b3dGdW5jdGlvbigpLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgIEV2YWxFeGVjdXRhYmxlKiBl
dmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0
KSwgY29kZUJsb2NrLmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVy
VERaKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0u
ZXhjZXB0aW9uKCk7CiAgICAgICAgIHZtLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKaW5kZXggODI0NjU1ZjMwN2Q3M2FjNWNhMTczNjliZGQxOTU4ZGZmM2UwYWMzMy4uMzYxMzE3
ODc5Y2M3MmJmNTQ5OGJlYjM5OGJkYzA4NWM1NjY1YzA2NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApA
QCAtMTgxMCw2ICsxODEwLDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICBi
cmVhazsKIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBpZiAoSlNW
YWx1ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAg
ICAgSlNBcnJvd0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJvd0Z1bmN0
aW9uKj4oYmFzZSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVl
emUoZnVuY3Rpb24tPmJvdW5kVGhpcygpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY0ZpbmFsT2JqZWN0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICBjYXNlIFNraXBTY29wZTogewog
ICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsK
ICAgICAgICAgaWYgKGNoaWxkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGJhYTZlNGJmMGRiZTk0MmQwMjU5NTIzNGI1YmYzNDlk
M2JhN2UxZmQuLjk5OTUyYjcxN2RhODU1MjBlODNlYTIxMmYwNTA1MDUxMjkzNWYzN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00
NTA3LDYgKzQ1MDcsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9n
ZXRfc2NvcGUpOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpczogeworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihKU1N0YWNrOjpDYWxsZWUpKTsKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdDsKKyAgICAgICAg
ICAgIGlmIChKU0Fycm93RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENv
bnN0YW50PEpTQXJyb3dGdW5jdGlvbio+KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0ganND
b25zdGFudChmdW5jdGlvbi0+Ym91bmRUaGlzKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTG9hZEFycm93RnVuY3Rpb25UaGlzLCBjYWxs
ZWUpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgcmVzdWx0KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2xvYWRf
YXJyb3dmdW5jdGlvbl90aGlzKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAgICAgIG5vdGljZUFyZ3Vt
ZW50c1VzZSgpOwpAQCAtNDU1NiwyMCArNDU2NywyNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3
X2Z1bmMpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6Ci0gICAg
ICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAgIGNhc2Ugb3BfbmV3X2Z1
bmNfZXhwOiB7CiAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4cHIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhleHByKTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCiAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChOZXdGdW5jdGlvbiwgT3BJbmZvKGZyb3plbiksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKSk7CisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfZnVuY19leHApOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfYXJy
b3dfZnVuY19leHA6IHsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhwciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9
IG1fZ3JhcGguZnJlZXplU3Ryb25nKGV4cHIpOworCisgICAgICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoTmV3QXJyb3dGdW5jdGlvbiwgT3BJbmZvKGZyb3plbiksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpLAorICAgICAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ3Vy
bHkgYnJhY2VzIGFyZSBuZWNlc3NhcnkKLSAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9u
ZXdfZnVuY19leHApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBD
dXJseSBicmFjZXMgYXJlIG5lY2Vzc2FyeQotICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X25ld19hcnJvd19mdW5jX2V4cCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9uZXdfYXJyb3dfZnVuY19leHApOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBv
cF90eXBlb2Y6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAppbmRleCA2MTY0OTcyNmQwMGI4MDhlN2Q3NWIwNDBkNWE0ZTAyMjJmMTA2MzVmLi43YTVl
YzNmMmE4OTZlZWIwMzc4OTM3YTQyNmIwNDEyYzE1Y2ZlMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMDIsNiArMjAyLDcgQEAgQ2Fw
YWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ug
b3BfaW46CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVu
Y3Rpb25fdGhpczoKICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0
X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGE1ZmFiODNjMjcz
ODE2YzlkOTYwMzRkMGExZTkyZDhmMjBmYzdkNDAuLjQxN2QwNmY3MDM5YjRiYmZkMjhlYTlmZmM4
ZjE1OGM4ZTQ3ZTYxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC0xMzksNiArMTM5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNl
IEFyaXRoQ29zOgogICAgIGNhc2UgQXJpdGhMb2c6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBj
YXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNl
IFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMTZmOTczZDA5NjMxNjEyNmI0YTJh
YmZmNjZlNWJjNmI3ZTQ0YjlmZC4uYjI2ZTBhNWYzODNhMDBhMDJlYmYyOGUxODU1NzkyMzk0OWFi
Zjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTA3LDYg
KzEwNyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IEdldEJ1dHRlcmZseVJlYWRPbmx5OgogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzMWIwNDZh
NzI4NTBjNDMwZjgyN2Y5NWEyOTRiNGQ4Y2RkOTE2ZGYyLi5iMjE5NDUyYTkzMzg1N2FkMWI4ZGUy
MWUzNjJlMDkyNmRjMzBmMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTEwMjYsNiArMTAyNiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczog
eworICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAg
ICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDAwOGQ4YzczMjgzMmEzM2I4MWUyZDYz
ODdkM2ExZDJhZDRjNjM0MzUuLjJlZDNjZTRkYWE0ZTc4MGYwNjllY2I5YjlhYWM1ODZmMzg5YzFh
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIwNyw2ICsy
MDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTXVsdGlQ
dXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFycmF5TGVuZ3Ro
LCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwg
Tm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25UaGlzLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFj
cm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9zdXJlVmFyLCBO
b2RlUmVzdWx0SlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDEyYWIxNjM3MzNm
YTE4NDFjYjhiYzQyOTIxOTVhZDQzNWE1MjI5NmMuLmRiOGRkNmZiNDkyMmVlMzljMzM4NjcyMTNm
NWIzZjliN2JmYmZjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtODM4LDE0ICs4
MzgsMTcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAgICAgICAgaWYgKG5vZGUt
PmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmdsZXRvbkZ1bmN0aW9uKCkt
PmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5j
aGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24o
bm9kZSwgQWxsb2NhdGlvbjo6S2luZDo6RnVuY3Rpb24pOworICAgICAgICAgICAgdGFyZ2V0ID0g
Jm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlvbiA/IEFsbG9jYXRpb246
OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5kOjpGdW5jdGlvbik7CiAg
ICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsIExhenlOb2RlKG5v
ZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5hZGQoRnVuY3Rpb25BY3Rp
dmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CisgICAgICAgICAg
ICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdyaXRlcy5hZGQoQXJyb3dG
dW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTAxNSw2ICsxMDE4LDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlv
blRoaXM6CisgICAgICAgICAgICB0YXJnZXQgPSBtX2hlYXAub25seUxvY2FsQWxsb2NhdGlvbihu
b2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQt
PmlzQXJyb3dGdW5jdGlvbkFsbG9jYXRpb24oKSkKKyAgICAgICAgICAgICAgICBleGFjdFJlYWQg
PSBBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBtX2hlYXAuZXNjYXBlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgICAgICB0
YXJnZXQgPSBtX2hlYXAub25seUxvY2FsQWxsb2NhdGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OwogICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQtPmlzRnVuY3Rpb25BbGxvY2F0aW9u
KCkpCkBAIC0yMDM0LDggKzIwNDUsOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgY2Fz
ZSBOZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOiB7CisgICAgICAg
ICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG5vZGUtPm9wKCkgPT0gTmV3QXJyb3dGdW5jdGlv
bjsKICAgICAgICAgICAgIFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4gbG9jYXRpb25zID0g
bV9sb2NhdGlvbnNGb3JBbGxvY2F0aW9uLmdldChlc2NhcGVlKTsKLSAgICAgICAgICAgIEFTU0VS
VChsb2NhdGlvbnMuc2l6ZSgpID09IDIpOworICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5z
aXplKCkgPT0gKGlzQXJyb3dGdW5jdGlvbiA/IDMgOiAyKSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBQcm9tb3RlZEhlYXBMb2NhdGlvbiBleGVjdXRhYmxlKEZ1bmN0aW9uRXhlY3V0
YWJsZVBMb2MsIGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQoZXhlY3V0YWJsZSwgbG9jYXRpb25zLmNvbnRhaW5zKGV4ZWN1dGFibGUpKTsKQEAgLTIw
NDQsNiArMjA1NiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5j
b250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpID0gRWRn
ZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxsVXNlKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgeworICAgICAgICAgICAgICAgIFBy
b21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYywg
YWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlv
bnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQyKCkg
PSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxVc2UpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCmluZGV4IGM4MGU4MzA3ZDBkMjNlZTdmYjg1ZTBiMDVmZWE1NjA1MGJmY2Rm
OWQuLjQwY2VjNzYwMzI0NTExMDEyOTY1ODk5MmU3YTliMmM0YzllOTUwZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCkBAIC02MTYsNiArNjE2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAg
Y2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICBjYXNlIEluOgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVk
aWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAy
NGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkwZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlk
OWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktp
bmQga2luZCkKICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNs
b3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlv
bkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhp
c1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4IGI0ZTNjMmJmNTlmNjE5ZDY4ZDJmNzliYmUyNzVh
Yzk5NDdmOWVmYjguLjk3MjkzZjNhMDE4NTJkMTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgKQEAgLTQ2LDcgKzQ2LDggQEAgZW51bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlUExvYywKICAgICBGdW5jdGlvbkFjdGl2YXRpb25QTG9jLAogICAg
IEFjdGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MKKyAgICBDbG9zdXJlVmFy
UExvYywKKyAgICBBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYwogfTsKIAogY2xhc3MgUHJvbW90
ZWRMb2NhdGlvbkRlc2NyaXB0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAppbmRleCA2MTZjM2IwODIyMjE5Y2IxZDBhMmVkMzA1MmRmNDVjMDE5YmU4
YTQ2Li5mNWM2OGRiODI0ZTE1ZmE3ZDY2NzhhMmYzZGQ2NmIzMDRhYWQyMzk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjAyLDYgKzIwMiw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlU
b1N0cnVjdHVyZToKICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rp
b25UaGlzOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGM5NGFkNmI3MzczOGQ4YWYzMDEyZWExYTFhOTM4N2Nh
YmI5MDk3Y2YuLjI3MjczNGQyZmI2ODY1ZDg3MDExNDBjNzE2ZWE0YTU4ZjgyYTJiYzUgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC00
ODQyLDYgKzQ4NDIsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5v
ZGUqIG5vZGUpCiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlv
bi5ncHIoKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZXN1bHQuZ3ByKCkp
OwogICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KKworICAgIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKiBub2RlKQor
eworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7CisgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbi5ncHIoKSwgSlNBcnJv
d0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICBjZWxs
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7Cit9CiAgICAgCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU2tpcFNjb3BlKE5vZGUqIG5vZGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYzQyYmEzMWNmNjFjYTMwZDZiZGI3NTIz
MDVjMDNhMmU3MmNmMjRiZi4uODY2MGIwNGYwOGMwZWFmYzU1NTQ2NWU4MzRkMzA4ZTFkNDNiM2Ux
YSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtMjIwMCw2ICsyMjAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25T
Y29wZWRBcmd1bWVudHMoTm9kZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKE5v
ZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVMb2FkQXJyb3dGdW5jdGlvblRoaXMoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVNraXBTY29wZShOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJh
eUxlbmd0aChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2ZTBmMTQ2NmIwMjhjN2M3OWNkZWVkYzRmNDgy
N2FmYTI1NTVlZjJmLi5iMGM0ZTk0N2M2YzQwNDk1ZTdjODFhYjIxMmE4YzViZmUxNDhkYjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTM3OTksNiArMzc5OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRTY29wZToKICAgICAgICAgY29tcGlsZUdldFNj
b3BlKG5vZGUpOwogICAgICAgICBicmVhazsKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25U
aGlzOgorICAgICAgICBjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21w
aWxlU2tpcFNjb3BlKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZjExODIyZDcxN2U3YmY4ODQxZmU5NDJiYmQ2NmUx
ZjBlMzUzNTE2Ni4uNTcwMzMyY2QwMDUzNGYwOTdlZjJiMWVhNDY3NTI4YmRmMTU4MTFkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0zODM3LDYgKzM4MzcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGNv
bXBpbGVMb2FkQXJyb3dGdW5jdGlvblRoaXMobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgIGNvbXBpbGVTa2lwU2NvcGUobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCmluZGV4IDg3MjhkOWU1MTllZTMwZjE2MWIxZTkyOGEzMWJjNzdmMjkzMzQ0
ZjEuLjY0YTQ4MjI3MDkyODZjMjdiODg2YTdmYzYzODYzOWQxNGExMmYyYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE1Miw2ICsxNTIs
NyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgR2V0Q2Fs
bGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudDoKICAgICBjYXNlIFRvU3RyaW5nOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRleCAy
YmU2YjA0ODllNGRkMDFjZjg1NTdjYmFiMjQ0OTFlNzkyZTZkNjMzLi4xZWUwMjE4NDc0ZTM1ZTdm
YjkxNTMyMzkyZTBmZGE2YzU2YmUyYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtODEyLDYgKzgxMiw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgICAgICBjb21waWxlR2V0U2NvcGUoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKKyAg
ICAgICAgICAgIGNvbXBpbGVMb2FkQXJyb3dGdW5jdGlvblRoaXMoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVTa2lwU2Nv
cGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDU1Nyw2ICs0NTYwLDExIEBAIHByaXZhdGU6
CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCBtX2hlYXBzLkpTRnVuY3Rpb25fc2NvcGUpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBj
b21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKCkKKyAgICB7CisgICAgICAgIHNldEpTVmFsdWUo
bV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQXJyb3dG
dW5jdGlvbl90aGlzKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgY29tcGlsZVNraXBTY29wZSgp
CiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwgbV9oZWFwcy5KU1Njb3BlX25leHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmluZGV4IDM3MDE1YjY1YWY3ZTA4NjVlMDk3M2Q1YmI2
MzE1NGUxMmJjMTBmYTkuLmMzNjcyZTg1MTcxNzY4OTU0NjQ5YTkxMTA1ODk1MmYxYzhlNmY4Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtMTY0
LDE3ICsxNjQsMjUgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRoZSBl
eGVjdXRhYmxlIGFuZCBhY3RpdmF0aW9uIGFyZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICBKU1Njb3BlKiBhY3RpdmF0aW9uID0gbnVs
bHB0cjsKKyAgICAgICAgSlNWYWx1ZSBib3VuZFRoaXM7CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uID0gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1hdGVyaWFsaXphdGlv
bi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgY29uc3QgRXhpdFBy
b3BlcnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07
CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkV4ZWN1dGFibGVQTG9jKSkKICAgICAgICAgICAgICAgICBleGVj
dXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1
ZXNbaV0pKTsKICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpID09IFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yKEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MpKQogICAgICAgICAgICAg
ICAgIGFjdGl2YXRpb24gPSBqc0Nhc3Q8SlNTY29wZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNb
aV0pKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpID09IFByb21vdGVkTG9j
YXRpb25EZXNjcmlwdG9yKEFycm93RnVuY3Rpb25Cb3VuZFRoaXNQTG9jKSkgeworICAgICAgICAg
ICAgICAgIGlzQXJyb3dGdW5jdGlvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgYm91bmRUaGlz
ID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhlY3V0YWJsZSAmJiBhY3RpdmF0aW9uKTsKIAogICAg
ICAgICAKLSAgICAgICAgSlNGdW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZh
dGlvbik7CisgICAgICAgIEpTRnVuY3Rpb24qIHJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24sIGJvdW5kVGhpcykKKyAg
ICAgICAgICAgIDogSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9u
V2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CiAKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcAppbmRleCBkNjFkMmRhM2Q2YzJkMzdiZGIwMDBjMjA2NTJiYmJkOTUy
ZjFiYzVhLi43NWVkOGNmN2JjNGNlZDYxOTg3NmZkNzZkZjBmMGJhZTU5ZWMwNmI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAg
LTE4MCw4ICsxODAsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAg
ICAgIC8vIElmIHRoZSBsaXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3VsZCBub3QgaGF2ZSB0
aHJvd24gZXhjZXB0aW9ucy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCkuZXhjZXB0
aW9uKCkpOwogCi0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUo
KS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgY2FsbGVyQ29kZUJsb2NrLT51
bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgc291cmNlQ29kZSwgY2FsbGVy
U2NvcGVDaGFpbik7Ci0KKyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVD
YWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNo
YWluKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGI5NDI0ZWVmMDY3NjMx
YTFkY2Y5N2ZlYjAwNjgxOTU5NmRjNzkzNTQuLmFiMDVlODA3ZjYxOTcyNzQyMWIxMDhlMzk3ZjVh
ODMzZTFmYjQ3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIyMyw2ICsyMjMs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9lbmQpCiAgICAgICAgIERFRklORV9PUChvcF9lbnRlcikKICAgICAgICAgREVGSU5FX09Q
KG9wX2dldF9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90
aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9u
dWxsKQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCAxNzM3NTM0MGY3MzMzMWJhZTFkNDFhMmIwMjJjZjVlZWRjNmJjZDhjLi5kNGI4
MmU3NDVlODRjYWY1ODVhYTNkM2MzMjRjZDdjODhjMTJkM2JlIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTUwMiw2ICs1MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0X29wX2VuZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCmluZGV4IDY0NjYzYzE3YzVhMjRmYTlkYzQyMDlmNTE2MDU0MDVkZjhlNWE3YTEuLmEx
YmMxNmMwMWI5ZWFkM2NhNDMwY2MyZjcwMTRkNzI5ODcyODEwMmIgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNjY3LDYgKzY2NywxNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwg
cmVnVDApOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CisgICAgCit2b2lkIEpJ
VDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwg
cmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZz
ZXRPZlRoaXNWYWx1ZSgpKSwgcmVnVDApOworICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7
Cit9CiAKIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKQEAgLTk2MSwxNCArOTY5LDIzIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19n
ZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJ
VDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24gPSBvcGNvZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgCiAgICAgSnVtcCBu
b3RVbmRlZmluZWRTY29wZTsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93
RnVuY3Rpb24pCisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJhbmNo
NjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpKSk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAq
IGRzdCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAg
aW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKKyAgICAgICAgZW1p
dExvYWQodmFsdWUsIHJlZ1QzLCByZWdUMik7CisgICAgfQogICAgIG5vdFVuZGVmaW5lZFNjb3Bl
ID0gYnJhbmNoMzIoTm90RXF1YWwsIHRhZ0ZvcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOwogICAgIGVtaXRTdG9y
ZShkc3QsIGpzVW5kZWZpbmVkKCkpOwogI2VuZGlmCkBAIC05NzYsMTUgKzk5MywyMCBAQCB2b2lk
IEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgbm90VW5kZWZpbmVkU2NvcGUubGluayh0aGlzKTsKICAgICAgICAgCiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBt
X3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29k
ZSk7Ci0KLSAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlEID09
IG9wX25ld19hcnJvd19mdW5jX2V4cCkKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgIGlmIChpc0Fycm93RnVuY3Rp
b24pCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdBcnJvd0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDEpOworI2Vsc2UgCisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdU
MCwgZnVuY3Rpb24sIHJlZ1QzLCByZWdUMik7CisjZW5kaWYKICAgICBlbHNlIHsKLSAgICAgICAg
QVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBm
dW5jdGlvbik7CisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBm
dW5jdGlvbik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09
IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAg
ICAgICB9CiAgICAgfQotCiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggODk0NTVlZGNlMDQ1NmJh
ZGY4ODhmYWEwMzA5ZGNhYjBkZTA3OGZjOC4uNGUwNDM2NWZkNmMyODM2ODk5YmViZjdlMDUzMzBk
MWQzZGEwMDkwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcApAQCAtOTM4LDYgKzkzOCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwg
cmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSwgcmVnVDApOworICAgIGVtaXRT
dG9yZUNlbGwoZHN0LCByZWdUMCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGNhbGxlZSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA4MTE0N2E3ZTNkZTc3MjYzNTI3YjViNjFm
MTVmZGE1OWIzYmM5MDlmLi4zNTFhNGM4ZDQ0MmYyZDZjNjhjNGE5MmMzMmYxNmVjNjAyZGE4Mjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
QEAgLTEwNzksMTIgKzEwNzksMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25l
d19nZW5lcmF0b3JfZnVuY19leHApCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3
X2Fycm93X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgCisKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoNCkuanNWYWx1ZSgpOwogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSlNTY29wZSogc2NvcGUgPSBleGVj
LT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNb
M10udS5vcGVyYW5kKTsKICAgICAKLSAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihKU0Fycm93RnVuY3Rp
b246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0
aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IGQ3MTYzOWFlNDQ3MTZmNDU0NGM4NzA5NmJkN2Y4ODlhYWY4Yzdj
ODEuLjU2N2NiNThjMTI1Njk3YmNkZTYxN2VjZWMwYzhiMDc4Njk1ZTk3NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTE0NzIsNyArMTQ3Miw3IEBAIF9sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogX2xs
aW50X29wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQotICAgIGRpc3Bh
dGNoKDQpCisgICAgZGlzcGF0Y2goNSkKIAogX2xsaW50X29wX2NhbGw6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBjNWE4N2UzYjFkMzhiZTMzNjQwZWU2MmJmYmE2
YjU4YzFkZWU2YjVmLi5lMWQxMjJjZDAzMDY1MmM1Mjg1YjBjNDA1MmEzOGUwMDQyZGJhNzVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtMjQyMiw2ICsyNDIyLDE2IEBAIF9sbGludF9vcF9wcm9maWxl
X2NvbnRyb2xfZmxvdzoKICAgICBkaXNwYXRjaCgyKQogCiAKK19sbGludF9vcF9sb2FkX2Fycm93
ZnVuY3Rpb25fdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgQ2FsbGVlICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIEpTQXJyb3dGdW5jdGlvbjo6bV9ib3Vu
ZFRoaXNbdDBdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9y
ZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworCiBfbGxpbnRfb3BfZ2V0X3Jl
c3RfbGVuZ3RoOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBlMThkODFjMjIxMzAyYmYy
NmRiNTFlYzI4ZTZhNzFjZWRjMzZlZjE3Li40OWYzY2Q3YTc0NjM4NGUwZTcxOTJkMDFhODY5YTc0
MDA0MWQ3OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjI4NCwxNCArMjI4NCwyMiBAQCBfbGxpbnRfb3Bf
cHJvZmlsZV90eXBlOgogLm9wUHJvZmlsZVR5cGVEb25lOgogICAgIGRpc3BhdGNoKDYpCiAKLQot
CiBfbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGFkZHEgMSwgQmFzaWNCbG9ja0xv
Y2F0aW9uOjptX2V4ZWN1dGlvbkNvdW50W3QwXQogICAgIGRpc3BhdGNoKDIpCiAKKworX2xsaW50
X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBKU0Fycm93RnVuY3Rpb246Om1fYm91bmRU
aGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVx
IHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKIF9sbGludF9vcF9nZXRfcmVz
dF9sZW5ndGg6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQg
KyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCmluZGV4IDQzMzE5NDI3ODA5NWU1OGFkYTAzN2U4MjBmOWU1ZTVlY2M3M2Q4MTMu
LmE5MGRjMWMxY2MyNzk2ZGQxMDRiZjcxZTNlOTcwOTNjZTkyNzJmZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNzYsNyArMzc2LDcgQEAgcHVibGlj
OgogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWls
ZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAgICAgICAgdXNlc0Fycm93RnVuY3Rpb24oKTsK
KyAgICAgICAgdXNlc1RoaXMoKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJj
ZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbklu
Zm8uYm9keS0+aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oKSA/IGZ1bmN0aW9uSW5mby5l
bmRPZmZzZXQgLSAxIDogZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0
TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbik7CiAgICAgICAgIEFycm93RnVuY0V4
cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxv
Y2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwog
ICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUs
IGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0KTsKQEAgLTkxNyw3ICs5MTcsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBp
bmNDb25zdGFudHMoKSB7IG1fc2NvcGUubV9udW1Db25zdGFudHMrKzsgfQogICAgIHZvaWQgdXNl
c1RoaXMoKSB7IG1fc2NvcGUubV9mZWF0dXJlcyB8PSBUaGlzRmVhdHVyZTsgfQotICAgIHZvaWQg
dXNlc0Fycm93RnVuY3Rpb24oKSB7IG1fc2NvcGUubV9mZWF0dXJlcyB8PSBBcnJvd0Z1bmN0aW9u
RmVhdHVyZTsgfQogICAgIHZvaWQgdXNlc0FyZ3VtZW50cygpIHsgbV9zY29wZS5tX2ZlYXR1cmVz
IHw9IEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAgICB2b2lkIHVzZXNXaXRoKCkgeyBtX3Njb3BlLm1f
ZmVhdHVyZXMgfD0gV2l0aEZlYXR1cmU7IH0KICAgICB2b2lkIHVzZXNFdmFsKCkgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggOWE5MzQ1YTUwMWY4N2MxZTJhYmI4MWJmNzU5
NGRkZmMyYzE0MzA2My4uOGU5YTI1MmVhZDFmZWU5MTU5ZmFmZTE1M2I3Yzc5NjFkODdhMmMxZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTU1OSw3ICsxNTU5LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZXMgJiBFdmFsRmVhdHVyZTsgfQogICAgICAgICBib29sIHVzZXNBcmd1bWVudHMo
KSBjb25zdCB7IHJldHVybiAobV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmUpICYmICEobV9m
ZWF0dXJlcyAmIFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlKTsgfQotICAgICAgICBib29sIHVzZXNB
cnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEFycm93RnVuY3Rpb25G
ZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgbW9kaWZpZXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2ZlYXR1cmVzICYgTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wg
bW9kaWZpZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgKEV2YWxGZWF0
dXJlIHwgTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlKTsgfQogICAgICAgICBib29sIGlzU3RyaWN0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RNb2RlRmVhdHVyZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDQ5ODI1YTY0YjliOGZh
NWNhODc2ZjU2OGY1MzMwNGZiYmZmNjRjYmMuLmMzYmU4MmM2ZTkzZjZiOWY2N2I1YTJjZGNkNzk3
NjZlYTliZmJhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTE5NzgsMTEgKzE5NzgsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgc2Vt
YW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rp
b25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEg
dmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUs
ICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rp
b24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KLSAgICBpZiAoZnVuY3Rpb25TY29wZS0+
aGFzRGlyZWN0U3VwZXIoKSAmJiBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2spIHsKKyAgICBpZiAoZnVuY3Rpb25TY29wZS0+aGFzRGlyZWN0U3VwZXIoKSkgewog
ICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoIWlzQ2xhc3NDb25zdHJ1Y3RvciwgIkNhbm5vdCBj
YWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yIik7CiAgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpEZXJp
dmVkLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBpbiBhIGJhc2UgY2xhc3MgY29uc3RydWN0b3IiKTsK
ICAgICB9Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkgJiYgZnVu
Y3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrKQorICAgIGlmIChmdW5j
dGlvblNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygpKQogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUoZXhwZWN0ZWRTdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBl
ciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOwogCiAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gSlNUb2tlbkxvY2F0aW9uKG1fdG9rZW4ubV9s
b2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5k
ZXggODY5NGY3N2IxN2Y0NTQ5MzhmNmVmODVkMWQ5MGUzY2Q0OTljMjljOS4uNDg2ZDhmYzBkYWNj
MjVjMWQzYjExNWI0MDAwMjc1MTg2MjY5OGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMTQ3LDE5ICsxNDcsMTcgQEAgaW5saW5lIGJvb2wgZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUp
CiAKIHR5cGVkZWYgdW5zaWduZWQgQ29kZUZlYXR1cmVzOwogCi1jb25zdCBDb2RlRmVhdHVyZXMg
Tm9GZWF0dXJlcyA9ICAgICAgICAgICAgICAgICAgICAgICAwOwotY29uc3QgQ29kZUZlYXR1cmVz
IEV2YWxGZWF0dXJlID0gICAgICAgICAgICAgICAgIDEgPDwgMDsKLWNvbnN0IENvZGVGZWF0dXJl
cyBBcmd1bWVudHNGZWF0dXJlID0gICAgICAgICAgICAxIDw8IDE7Ci1jb25zdCBDb2RlRmVhdHVy
ZXMgV2l0aEZlYXR1cmUgPSAgICAgICAgICAgICAgICAgMSA8PCAyOwotY29uc3QgQ29kZUZlYXR1
cmVzIFRoaXNGZWF0dXJlID0gICAgICAgICAgICAgICAgIDEgPDwgMzsKLWNvbnN0IENvZGVGZWF0
dXJlcyBTdHJpY3RNb2RlRmVhdHVyZSA9ICAgICAgICAgICAxIDw8IDQ7Ci1jb25zdCBDb2RlRmVh
dHVyZXMgU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmUgPSAgICAgMSA8PCA1OwotY29uc3QgQ29kZUZl
YXR1cmVzIE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZSA9ICAgIDEgPDwgNjsKLWNvbnN0IENvZGVG
ZWF0dXJlcyBNb2RpZmllZEFyZ3VtZW50c0ZlYXR1cmUgPSAgICAxIDw8IDc7Ci1jb25zdCBDb2Rl
RmVhdHVyZXMgQXJyb3dGdW5jdGlvbkZlYXR1cmUgPSAgICAgICAgMSA8PCA4OwotY29uc3QgQ29k
ZUZlYXR1cmVzIEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZSA9IDEgPDwgOTsKLQotY29uc3Qg
Q29kZUZlYXR1cmVzIEFsbEZlYXR1cmVzID0gRXZhbEZlYXR1cmUgfCBBcmd1bWVudHNGZWF0dXJl
IHwgV2l0aEZlYXR1cmUgfCBUaGlzRmVhdHVyZSB8IFN0cmljdE1vZGVGZWF0dXJlIHwgU2hhZG93
c0FyZ3VtZW50c0ZlYXR1cmUgfCBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmUgfCBBcnJvd0Z1bmN0
aW9uRmVhdHVyZSB8IEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZTsKK2NvbnN0IENvZGVGZWF0
dXJlcyBOb0ZlYXR1cmVzID0gICAgICAgICAgICAgICAgICAgIDA7Citjb25zdCBDb2RlRmVhdHVy
ZXMgRXZhbEZlYXR1cmUgPSAgICAgICAgICAgICAgMSA8PCAwOworY29uc3QgQ29kZUZlYXR1cmVz
IEFyZ3VtZW50c0ZlYXR1cmUgPSAgICAgICAgIDEgPDwgMTsKK2NvbnN0IENvZGVGZWF0dXJlcyBX
aXRoRmVhdHVyZSA9ICAgICAgICAgICAgICAxIDw8IDI7Citjb25zdCBDb2RlRmVhdHVyZXMgVGhp
c0ZlYXR1cmUgPSAgICAgICAgICAgICAgMSA8PCAzOworY29uc3QgQ29kZUZlYXR1cmVzIFN0cmlj
dE1vZGVGZWF0dXJlID0gICAgICAgIDEgPDwgNDsKK2NvbnN0IENvZGVGZWF0dXJlcyBTaGFkb3dz
QXJndW1lbnRzRmVhdHVyZSA9ICAxIDw8IDU7Citjb25zdCBDb2RlRmVhdHVyZXMgTW9kaWZpZWRQ
YXJhbWV0ZXJGZWF0dXJlID0gMSA8PCA2OworY29uc3QgQ29kZUZlYXR1cmVzIE1vZGlmaWVkQXJn
dW1lbnRzRmVhdHVyZSA9IDEgPDwgNzsKKworY29uc3QgQ29kZUZlYXR1cmVzIEFsbEZlYXR1cmVz
ID0gRXZhbEZlYXR1cmUgfCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBUaGlzRmVh
dHVyZSB8IFN0cmljdE1vZGVGZWF0dXJlIHwgU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmUgfCBNb2Rp
ZmllZFBhcmFtZXRlckZlYXR1cmU7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBiMTBiMTE0ZWZmNTY0NmMz
N2JlNTI5NTUzNmM4OTdhYTEzNGYwYzZkLi40OTQ1MjBkYmRmNDI4Yzg2NDBkYjVlMjIzZjAwZTIx
ZjJmZWNmZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKQEAgLTgzLDcgKzgzLDggQEAgdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiB7CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4KLVVubGlua2VkQ29kZUJsb2Nr
VHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlw
ZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5N
b2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgVGhpc1REWk1v
ZGUgdGhpc1REWk1vZGUsIGJvb2wsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVD
YWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFi
bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGlu
TW9kZSwKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhp
c1REWk1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFy
aWFibGVzVW5kZXJURFopCiB7CiAgICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5
KHNvdXJjZSwgU3RyaW5nKCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29k
ZVR5cGUsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCB0aGlzVERaTW9kZSk7CiAgICAgU291cmNl
Q29kZVZhbHVlKiBjYWNoZSA9IG1fc291cmNlQ29kZS5maW5kQ2FjaGVBbmRVcGRhdGVBZ2Uoa2V5
KTsKQEAgLTExMSw4ICsxMTIsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgIGJvb2wg
ZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CiAgICAgdW5zaWduZWQgdW5saW5r
ZWRFbmRDb2x1bW4gPSByb290Tm9kZS0+ZW5kQ29sdW1uKCk7CiAgICAgdW5zaWduZWQgZW5kQ29s
dW1uID0gdW5saW5rZWRFbmRDb2x1bW4gKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IHN0YXJ0
Q29sdW1uIDogMSk7Ci0gICAgdW5zaWduZWQgYXJyb3dDb250ZXh0RmVhdHVyZSA9IGV4ZWN1dGFi
bGUtPmlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSA/IEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVy
ZSA6IDA7Ci0gICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCkg
fCBhcnJvd0NvbnRleHRGZWF0dXJlLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwg
cm9vdE5vZGUtPmZpcnN0TGluZSgpLCByb290Tm9kZS0+bGFzdExpbmUoKSwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbik7CisgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1
cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+Zmlyc3RM
aW5lKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTsKIAog
ICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENv
ZGVCbG9ja1R5cGU6OmNyZWF0ZSgmdm0sIGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJbmZvKCkpOwog
ICAgIHVubGlua2VkQ29kZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwg
cm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5maXJzdExpbmUoKSAt
IHNvdXJjZS5maXJzdExpbmUoKSwgbGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0x
MzIsMTggKzEzMiwxOCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xv
YmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldFByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBQcm9ncmFt
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yKQogewogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlQYXJlbnRU
RFpWYXJpYWJsZXM7Ci0gICAgcmV0dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZmFsc2UsIGRlYnVnZ2VyTW9kZSwgcHJv
ZmlsZXJNb2RlLCBlcnJvciwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKKyAgICByZXR1cm4g
Z2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4odm0sIGV4ZWN1dGFi
bGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlOjpDaGVja0lm
TmVlZGVkLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsICZlbXB0eVBhcmVudFRE
WlZhcmlhYmxlcyk7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRF
dmFsQ29kZUJsb2NrKFZNJiB2bSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJz
ZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIENvZGVD
YWNoZTo6Z2V0RXZhbENvZGVCbG9jayhWTSYgdm0sIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1v
ZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9k
ZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwg
UGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNV
bmRlclREWikKIHsKLSAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkRXZhbENv
ZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IHRoaXNURFpNb2RlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBkZWJ1Z2dlck1vZGUsIHByb2Zp
bGVyTW9kZSwgZXJyb3IsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICByZXR1cm4gZ2V0R2xvYmFs
Q29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHRoaXNURFpNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2Zp
bGVyTW9kZSwgZXJyb3IsIHZhcmlhYmxlc1VuZGVyVERaKTsKIH0KIAogVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0m
IHZtLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJy
b3IpCiB7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVBhcmVudFREWlZhcmlhYmxlczsK
LSAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0
TW9kZTo6U3RyaWN0LCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZmFsc2UsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKKyAg
ICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
az4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6U3RyaWN0LCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZGVidWdnZXJNb2RlLCBwcm9m
aWxlck1vZGUsIGVycm9yLCAmZW1wdHlQYXJlbnRURFpWYXJpYWJsZXMpOwogfQogCiAvLyBGSVhN
RTogVGhlcmUncyBubyBuZWVkIHRvIGFkZCB0aGUgZnVuY3Rpb24ncyBuYW1lIHRvIHRoZSBrZXkg
aGVyZS4gSXQncyBhbHJlYWR5IGluIHRoZSBzb3VyY2UgY29kZS4KQEAgLTE4OCw3ICsxODgsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1
dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0
b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3
aWxsIGJlIHVuZGVyIFREWi4KICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFi
bGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0
YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0
LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzLCBmYWxzZSk7
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIEdl
bmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGZ1bmN0
aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpz
U3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hl
KGtleSwgU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29k
ZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRl
eCAyMTMyZjBjMTk0NmMwNDQ0MDMyOWJlYzYyMjIzMGUyMGMxYjgzMzRjLi45YjhjMTUwZGUyMGI4
NTMzYjFmZGEzZGFhODk1ZDA2Y2RjODk1NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuaApAQCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICB+Q29kZUNh
Y2hlKCk7CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dyYW1Db2RlQmxv
Y2soVk0mLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
LCBQYXJzZXJFcnJvciYpOwotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVC
bG9jayhWTSYsIEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVp
bHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgVGhpc1REWk1vZGUsIGJvb2wsIERlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqKTsKKyAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdldEV2YWxDb2RlQmxvY2soVk0mLCBF
dmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBK
U1BhcnNlclN0cmljdE1vZGUsIFRoaXNURFpNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAgICAgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiwg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWls
dGluTW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9i
YWxDb2RlKFZNJiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJF
cnJvciYpOwogCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHRl
bXBsYXRlIDxjbGFzcyBVbmxpbmtlZENvZGVCbG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBl
PiAKLSAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdldEdsb2JhbENvZGVCbG9jayhWTSYsIEV4
ZWN1dGFibGVUeXBlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpT
UGFyc2VyU3RyaWN0TW9kZSwgVGhpc1REWk1vZGUsIGJvb2wsIERlYnVnZ2VyTW9kZSwgUHJvZmls
ZXJNb2RlLCBQYXJzZXJFcnJvciYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqIGdldEdsb2JhbENvZGVCbG9jayhWTSYsIEV4ZWN1dGFibGVU
eXBlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3Ry
aWN0TW9kZSwgVGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJF
cnJvciYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKIAogICAgIENvZGVDYWNoZU1hcCBt
X3NvdXJjZUNvZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKaW5kZXggNjgzNWE4YTZkN2YyNzUzZGY4MTJhNzMzMWY3NTMzNTg0
MjYyYTlhZS4uMzdjNTRkMmZlZDU2MmQ4MGJmYjA1ZjJmZjg5NTI5MDg4NjhiZTYwMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBA
IC0zNDEsOCArMzQxLDYgQEAKICAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKERhdGVU
aW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oTnVtYmVyRm9ybWF0KSBcCi0gICAgbWFjcm8obmV3VGFy
Z2V0TG9jYWwpIFwKLSAgICBtYWNybyhkZXJpdmVkQ29uc3RydWN0b3IpIFwKIAogCiBuYW1lc3Bh
Y2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
aW5kZXggZjVkZjc3ZDk4N2MwM2NiZTYwNDNhNDdkY2ViM2E5MTMxMWJkZjIzMC4uNDIwNjAwNjcy
MjlhYTQwYWI0N2U5YjQwNTI5NjIxZmU4MmVkYjM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTEzMSwxNSArMTMxLDEzIEBAIEludHJpbnNp
YyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSBjb25zdAogCiBjb25zdCBDbGFzc0luZm8g
U2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvID0geyAiU2NyaXB0RXhlY3V0YWJsZSIsICZFeGVjdXRh
YmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNjcmlwdEV4ZWN1dGFibGUp
IH07CiAKLVNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCBib29sIGlzSW5EZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzSW5BcnJv
d0Z1bmN0aW9uQ29udGV4dCkKK1NjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29s
IGlzSW5TdHJpY3RDb250ZXh0KQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHN0cnVjdHVyZSwg
TlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAg
ICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkK
ICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX25ldmVySW5saW5l
KGZhbHNlKQogICAgICwgbV9kaWRUcnlUb0VudGVySW5Mb29wKGZhbHNlKQotICAgICwgbV9pc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoaXNJbkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpCi0g
ICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQog
ICAgICwgbV9vdmVycmlkZUxpbmVOdW1iZXIoLTEpCiAgICAgLCBtX2ZpcnN0TGluZSgtMSkKICAg
ICAsIG1fbGFzdExpbmUoLTEpCkBAIC00MTQsNyArNDEyLDcgQEAgSlNPYmplY3QqIFNjcmlwdEV4
ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogCiBjb25zdCBDbGFzc0luZm8gRXZh
bEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFi
bGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFsRXhlY3V0YWJsZSkgfTsKIAot
RXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJs
ZXNVbmRlclREWikKK0V2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
dmFyaWFibGVzVW5kZXJURFopCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZh
bEVuYWJsZWQoKSkgewpAQCAtNDIyLDEwICs0MjAsMTAgQEAgRXZhbEV4ZWN1dGFibGUqIEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMt
PmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQs
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7Cisg
ICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNv
dXJjZSwgaXNJblN0cmljdENvbnRleHQpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KGV4ZWMtPnZtKCkpOwogCi0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxD
b2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUs
IHRoaXNURFpNb2RlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCB2YXJpYWJsZXNVbmRlclREWik7
CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2Jq
ZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUsIHRoaXNURFpNb2RlLCB2
YXJpYWJsZXNVbmRlclREWik7CiAgICAgaWYgKCF1bmxpbmtlZEV2YWxDb2RlKQogICAgICAgICBy
ZXR1cm4gMDsKIApAQCAtNDM0LDggKzQzMiw4IEBAIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlCiAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmlj
dENvbnRleHQsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZhbEV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250
ZXh0LCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQp
CitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIDogU2NyaXB0RXhl
Y3V0YWJsZShleGVjLT52bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52
bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIApAQCAtNDQ3LDcgKzQ0NSw3IEBA
IHZvaWQgRXZhbEV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29uc3QgQ2xhc3NJ
bmZvIFByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJQcm9ncmFtRXhlY3V0YWJsZSIsICZT
Y3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUHJvZ3JhbUV4
ZWN1dGFibGUpIH07CiAKIFByb2dyYW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1
dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+
dm0oKSwgc291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJs
ZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgp
LCBzb3VyY2UsIGZhbHNlKQogewogICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gMDsK
ICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2UubGVuZ3RoKCkgLSAxOwpAQCAt
NDYzLDcgKzQ2MSw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQogY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7
ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CiAKIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhl
Yy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0o
KSwgc291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShl
eGVjLT52bSgpLm1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52
bSgpLCBzb3VyY2UsIGZhbHNlKQogewogICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0g
MDsKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2UubGVuZ3RoKCkgLSAxOwpA
QCAtNDk0LDggKzQ5MiwxMCBAQCB2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19p
bmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKLUZ1bmN0aW9u
RXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1
bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2bS5mdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJs
ZS0+aXNJblN0cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpCitGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCisgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5l
LCAKKyAgICB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVk
IGVuZENvbHVtbikKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzSW5TdHJp
Y3RDb250ZXh0KCkpCiAgICAgLCBtX3VubGlua2VkRXhlY3V0YWJsZSh2bSwgdGhpcywgdW5saW5r
ZWRFeGVjdXRhYmxlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFzb3VyY2UuaXNOdWxsKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDcwYjVmODEy
MTAzODg2ZjYwNjk5YTA3YTFjNzBhODI1Y2UwYzk4ZDIuLjc1YjMwOTFjZjgxYzcyOTZmZTJmYWZl
OWE5Njc2NTM2Mjk5NzgyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKQEAgLTM0NCw5ICszNDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBFdmFsRmVhdHVyZTsgfQogICAgIGJvb2wgdXNl
c0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJl
OyB9CiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1
cmVkVmFyaWFibGVzIHx8IG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSk7
IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lz
QXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RNb2RlRmVhdHVyZTsgfQotICAgIGJvb2wgaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQ7IH0KICAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlz
U3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7IH0KICAgICAgICAgCiAg
ICAgdm9pZCBzZXROZXZlcklubGluZShib29sIHZhbHVlKSB7IG1fbmV2ZXJJbmxpbmUgPSB2YWx1
ZTsgfQpAQCAtMzk1LDcgKzM5Myw3IEBAIHByaXZhdGU6CiAgICAgSlNPYmplY3QqIHByZXBhcmVG
b3JFeGVjdXRpb25JbXBsKEV4ZWNTdGF0ZSosIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCk7CiAKIHByb3RlY3RlZDoKLSAgICBTY3JpcHRFeGVjdXRhYmxlKFN0
cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IGJvb2wgaXNJbkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNJbkFycm93RnVuY3Rp
b25Db250ZXh0KTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCk7
CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBAIC00MTQsOCArNDEy
LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9uZXZlcklubGluZTsKICAgICBib29sIG1fbmV2
ZXJPcHRpbWl6ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZFRyeVRvRW50ZXJJbkxvb3A7Ci0g
ICAgYm9vbCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKLSAgICBib29sIG1faXNBcnJv
d0Z1bmN0aW9uQ29udGV4dDsKICAgICBpbnQgbV9vdmVycmlkZUxpbmVOdW1iZXI7CiAgICAgaW50
IG1fZmlyc3RMaW5lOwogICAgIGludCBtX2xhc3RMaW5lOwpAQCAtNDM4LDcgKzQzNCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZXZhbENvZGVCbG9jay5nZXQoKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUsIGJvb2wgaXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShF
eGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhp
c1REWk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKIAogICAgIFBhc3NSZWZQdHI8
SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAgewpAQCAtNDUyLDggKzQ0OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0KLSAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0
aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpOyB9CisgICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHks
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsg
fQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxD
b2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpOyB9CkBAIC00NjEsNyArNDU2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1
dGFibGU7Ci0gICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYs
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKKyAgICBFdmFsRXhlY3V0YWJsZShFeGVjU3Rh
dGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKQEAgLTUwNiw3ICs1MDEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDcsOCArNTQyLDcgQEAgcHVibGljOgogCiAg
ICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBH
ZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3Vy
Y2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KCksIGZhbHNlKTsgfQotCisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBH
ZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3Vy
Y2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJu
IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKICAgICBTeW1ib2xU
YWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQpAQCAtNjU2LDE1ICs2NTAsMTMgQEAgcHVibGlj
OgogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7
IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAgLy8gVE9E
TzpUaGluayBhYm91dCBhdm9pZCB1c2luZyBpc0Fycm93RnVuY3Rpb24gdmVyaWFibAotICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAgIGJvb2wgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29u
c3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWRO
YW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7
IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBlY2M4MmJhNjI4YmYxNmYyMTE3OWEyYzQ4ZGJhNzNhZjdlZTcyYTgx
Li43ZDk5NjgwMTEyNGU1YTU0YTI5MDkxNWUxN2Q0ZDA2NTAzOTY4ZDkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC05NzIsMTQg
Kzk3MiwxNCBAQCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVh
dGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbAogICAgIHJldHVybiB1bmxpbmtlZENv
ZGVCbG9jazsKIH0KIAotVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXZhbEV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQorVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRl
clREWikKIHsKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RN
b2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlID0gaGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dl
ck9mZjsKICAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gaGFzUHJvZmlsZXIoKSA/IFBy
b2ZpbGVyT24gOiBQcm9maWxlck9mZjsKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0RXZhbENvZGVCbG9jaygKLSAgICAg
ICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHRoaXNURFpNb2RlLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIHZhcmlhYmxlc1Vu
ZGVyVERaKTsKKyAgICAgICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCks
IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHRoaXNURFpNb2Rl
LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIHZhcmlhYmxlc1VuZGVyVERaKTsK
IAogICAgIGlmIChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJz
ZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5l
KCksIGVycm9yLm1lc3NhZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCA2MmQxNDk1ZTE5ZTk2ZDE1ZDUzMjY3NDcxYjRkMzY4NDRl
M2M5MmEyLi4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY2OSw3
ICs2NjksNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgd2Vha1JhbmRvbUludGVnZXIoKSB7IHJl
dHVybiBtX3dlYWtSYW5kb20uZ2V0VWludDMyKCk7IH0KIAogICAgIFVubGlua2VkUHJvZ3JhbUNv
ZGVCbG9jayogY3JlYXRlUHJvZ3JhbUNvZGVCbG9jayhDYWxsRnJhbWUqLCBQcm9ncmFtRXhlY3V0
YWJsZSosIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKLSAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IGNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiwgRXZhbEV4ZWN1dGFibGUqLCBUaGlzVERa
TW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50Kik7CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENh
bGxGcmFtZSosIEV2YWxFeGVjdXRhYmxlKiwgVGhpc1REWk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqKTsKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZU1v
ZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
KTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGNlMWUzYmI3OGYwZDUzOWEy
NjVlODJlYmZkNzUwMTUwMTE4ZTcwYzMuLjJiZjEzYmI5MDVkNWNhNTQwN2YzNGNlMDEwZjM5NDBi
OWRkZjk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBjYWxsZWVHbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlhYmxl
czsgLy8gSW5kaXJlY3QgZXZhbCBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgbGV4aWNhbCBz
Y29wZS4KLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UsIFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkLCBm
YWxzZSwgZmFsc2UsICZlbXB0eVREWlZhcmlhYmxlcyk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2
YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNlLCBU
aGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgJmVtcHR5VERaVmFyaWFibGVzKTsKICAgICBpZiAo
IWV2YWwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAppbmRleCA3ZTYzYWJkODJlZjRjYmI1OTRj
MjUwZTNlOWQ4ZTdhMDgxM2E3MmZiLi5jOTUyZDMyNTMwMTNiYzQyMjgwMzU0YTc0OWYwZjVkNzFl
NzExODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBAIC03NDUsNyArNzQ1
LDcgQEAKIC0gcGF0aDogZXM2L2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX2FyZ3VtZW50c19iaW5k
aW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9hcnJvd19mdW5jdGlvbnNf
bGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOm5vcm1hbAorICBj
bWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfc3Vw
ZXJfYmluZGluZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvYXJyb3dfZnVu
Y3Rpb25zX25vX3Byb3RvdHlwZV9wcm9wZXJ0eS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3Jl
eGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzCmluZGV4IDczZWM2ZTI3MjY3MTNhYTFiMzE0MTE3
MjIyZjJjYjVhNWUxNzY0ZjcuLjJlNDM3YWY3YjJjMmFkMzQ1ZTI2YzIwMzc3ODkwZGY1ZjMxZmFm
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQu
anMKQEAgLTEsNCArMSw0IEBACi12YXIgbiA9IDEwMDAwMDsKK3ZhciBuID0gMTAwMDAwMDsKIAog
ZnVuY3Rpb24gYmFyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLmpz
CmluZGV4IDY5ZDk3NTIxNTAzODA4NDFhMGEwMDUwZjQ4ZTk1YmM3ZmNmMzg3NTguLjc2YTc5ZWM5
ZWFhNjVjNTQxOTMwYjkwNDgyNmU3YTIzYTEzZmIyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFj
dGl2YXRpb24tc2luay5qcwpAQCAtMSw0ICsxLDQgQEAKLXZhciBuID0gMTAwMDAwMDsKK3ZhciBu
ID0gMTAwMDAwMDA7CiAKIGZ1bmN0aW9uIGJhcihmKSB7IGYoMTApOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtbmV3dGFyZ2V0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1uZXd0YXJnZXQuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdhOGQyN2MxYzlhM2MwOWViNWFhZDI2ZTI2MGExNThkNDkzNGIyYzkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1uZXd0YXJn
ZXQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi12YXIgdGVzdENhc2UgPSBmdW5j
dGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKSB7Ci0gICAgICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVj
dGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7Ci0gICAgfQotfTsKLQotZnVuY3Rp
b24gZ2V0VGFyZ2V0KG5hbWUpIHsKLSAgICByZXR1cm4geCA9PiBuZXcudGFyZ2V0OwotfQotCi1u
b0lubGluZShnZXRUYXJnZXQpCi0KLWZvciAodmFyIGk9MDsgaSA8IDEwMDA7IGkrKykgewotICAg
IHZhciB1bmRlZmluZWRUYXJnZXQgPSBnZXRUYXJnZXQoKSgpOwotICAgIHRlc3RDYXNlKHVuZGVm
aW5lZFRhcmdldCwgdW5kZWZpbmVkLCAiRXJyb3I6IG5ldy50YXJnZXQgaXMgbm90IGxleGljYWxs
eSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOwotfQotCi1mb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgIHZhciBuZXdUYXJnZXQgPSBuZXcgZ2V0VGFy
Z2V0KCkoKTsKLSAgICB0ZXN0Q2FzZShuZXdUYXJnZXQsIGdldFRhcmdldCwgIkVycm9yOiBuZXcu
dGFyZ2V0IGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzIiKTsKLX0KLQotdmFyIHBhc3NlZCA9IGZhbHNlOwotdmFyIEEgPSBjbGFzcyBBIHsKLSAg
ICBjb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgdGhpcy5pZFZhbHVlID0gMTIzOwotICAgICAgICBw
YXNzZWQgPSBwYXNzZWQgJiYgbmV3LnRhcmdldCA9PT0gQjsKLSAgICB9Ci19OwotCi12YXIgQiAg
PSBjbGFzcyBCIGV4dGVuZHMgQSB7Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAgIHZhciBm
ID0gKCkgPT4gewotICAgICAgICAgICAgcGFzc2VkID0gbmV3LnRhcmdldCA9PT0gQjsKLSAgICAg
ICAgICAgIHN1cGVyKCk7Ci0gICAgICAgIH07Ci0gICAgICAgIGYoKTsKLSAgICB9Ci19OwotCi1m
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgIHBhc3NlZCA9IGZhbHNlOwotICAg
IHZhciBiID0gbmV3IEIoKTsKLQotICAgIHRlc3RDYXNlKHBhc3NlZCwgdHJ1ZSwgIkVycm9yOiBu
ZXcudGFyZ2V0IGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gaW4gY29uc3RydWN0b3IgIzMiKTsKLX0KLQotdmFyIEMgPSBjbGFzcyBDIGV4dGVuZHMg
QSB7Ci0gICAgY29uc3RydWN0b3IodHJ5VG9BY2Nlc3NUb1ZhckluQXJyb3cpIHsKLSAgICAgICAg
dmFyIGYgPSAoKSA9PiB7Ci0gICAgICAgICAgICBzdXBlcigpOwotICAgICAgICAgICAgaWYgKHRy
eVRvQWNjZXNzVG9WYXJJbkFycm93KQotICAgICAgICAgICAgICAgIHRoaXMuaWQyID0gbmV3VGFy
Z2V0TG9jYWw7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZigpOwotCi0gICAgICAgIGlmICghdHJ5
VG9BY2Nlc3NUb1ZhckluQXJyb3cpCi0gICAgICAgICAgICB0aGlzLmlkID0gbmV3VGFyZ2V0TG9j
YWw7Ci0gICAgfQotfTsKLQotdmFyIHRyeVRvQ3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAodmFsKSB7
Ci0gICAgdmFyIHJlc3VsdCA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIG5ldyBDKHZhbCk7
Ci0gICAgfQotICAgIGNhdGNoIChlKSB7Ci0gICAgICAgIHJlc3VsdCA9IGUgaW5zdGFuY2VvZiBS
ZWZlcmVuY2VFcnJvcjsgCi0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX07Ci0KLWZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgdGVzdENhc2UodHJ5VG9DcmVhdGVDbGFz
cyh0cnVlKSwgdHJ1ZSwgIkVycm9yOiBuZXdUYXJnZXRMb2NhbCBzaG91bGQgYmUgaGlkZWQgdmFy
aWFibGUiKTsKLSAgICB0ZXN0Q2FzZSh0cnlUb0NyZWF0ZUNsYXNzKGZhbHNlKSwgdHJ1ZSwgIkVy
cm9yOiBuZXdUYXJnZXRMb2NhbCBzaG91bGQgYmUgaGlkZWQgdmFyaWFibGUiKTsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVyY2FsbC0xLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjQ3MTQ3ZGZkYTdkNGVlOTgxZTM4NzBhMmExNzg4NDBk
Njk4ODBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtc3VwZXJjYWxsLTEuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi12YXIgdGVz
dENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7Ci0gICAgICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3Rl
ZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7Ci0gICAgfQot
fTsKLQotdmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7Ci0KLXZhciBBID0gY2xhc3MgQSB7
Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAgIHRoaXMuaWRWYWx1ZSA9IHRlc3RWYWx1ZTsK
LSAgICB9Ci19OwotCi12YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3Rv
ciAoaW5BcnJvd0Z1Y3Rpb24sIGluQ29uc3RydWN0b3IpIHsKLSAgICAgICAgdmFyIGFycm93ID0g
KCkgPT4gewotICAgICAgICAgICAgaWYgKGluQXJyb3dGdWN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgc3VwZXIoKTsKLSAgICAgICAgICAgICAgICB0ZXN0Q2FzZSh0aGlzLmlkVmFsdWUsIHRlc3RW
YWx1ZSwgIkVycm9yOiBzdXBlcigpIHNob3VsZCBjcmVhdGUgdGhpcyBhbmQgcHV0IHZhbHVlIGlu
dG8gaWRWYWx1ZSBwcm9wZXJ0eSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGluQXJyb3dGdWN0aW9uKQotICAgICAgICAgICAgYXJyb3coKTsKLQotICAgICAgICBp
ZiAoaW5Db25zdHJ1Y3RvcikKLSAgICAgICAgICAgIHN1cGVyKCk7Ci0KLSAgICAgICAgdGVzdENh
c2UodGhpcy5pZFZhbHVlLCB0ZXN0VmFsdWUsICJFcnJvcjogYXJyb3cgZnVuY3Rpb24gc2hvdWxk
IHJldHVybiB0aGlzIHRvIGNvbnN0cnVjdG9yIik7Ci0gICAgfQotfTsKLQotZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAgICBuZXcgQih0cnVlLCBmYWxzZSk7Ci0gICAgbmV3IEIo
ZmFsc2UsIHRydWUpOwotfQotCi12YXIgdGVzdEV4Y2VwdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZTEs
IHZhbHVlMiwgaW5kZXgpIHsKLSAgICB2YXIgZXhjZXB0aW9uOwotICAgIHRyeSB7Ci0gICAgICAg
IG5ldyBCKHZhbHVlMSwgdmFsdWUyKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGV4Y2Vw
dGlvbiA9IGU7Ci0gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikpCi0g
ICAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVy
cm9yIjsKLSAgICB9Ci0KLSAgICBpZiAoIWV4Y2VwdGlvbikKLSAgICAgICAgdGhyb3cgIkV4Y2Vw
dGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiAiICsg
aW5kZXg7Ci19Ci0KLWZvciAodmFyIGk9MDsgaSA8IDEwMDA7IGkrKykgewotICAgIHRlc3RFeGNl
cHRpb24oZmFsc2UsIGZhbHNlLCBpKTsKLX0KLQotdmFyIEMgPSBjbGFzcyBDIGV4dGVuZHMgQSB7
Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAgIGV2YWwoInZhciB4ID0gMjAiKTsKLSAgICAg
ICAgc3VwZXIoKTsKLSAgICAgICAgbGV0IGYgPSAoKSA9PiB0aGlzOwotICAgICAgICBsZXQgeGYg
PSBmKCk7Ci0gICAgICAgIHhmLmlkID0gJ3Rlc3QtaWQnOwotICAgIH0KLX07Ci0KLXZhciBjID0g
bmV3IEMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTIuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVyY2Fs
bC0yLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2M4ZTM3Nzc3NjJmZjU0YWVj
YjZkNzcyNGY0ZWNiNGY3MzRlYWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzYg
KzAsMCBAQAotdmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpIHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewotICAgICAgICB0aHJvdyBtZXNz
YWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFs
ICsgIiciOwotICAgIH0KLX07Ci0KLXZhciB0ZXN0VmFsdWUgID0gJ3Rlc3QtdmFsdWUnOwotCi12
YXIgQSA9IGNsYXNzIEEgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0aGlzLmlkVmFs
dWUgPSB0ZXN0VmFsdWU7Ci0gICAgfQotfTsKLQotdmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7
Ci0gICAgY29uc3RydWN0b3IgKGluQXJyb3dGdWN0aW9uLCBpbkNvbnN0cnVjdG9yLCBzZXRQcm90
b1RvTnVsbCkgewotICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiAoKSA9PiAoKSA9PiB7Ci0gICAg
ICAgICAgICBpZiAoaW5BcnJvd0Z1Y3Rpb24pIHsKLSAgICAgICAgICAgICAgc3VwZXIoKTsKLSAg
ICAgICAgICAgICAgdGVzdENhc2UodGhpcy5pZFZhbHVlLCB0ZXN0VmFsdWUsICJFcnJvcjogc3Vw
ZXIoKSBzaG91bGQgY3JlYXRlIHRoaXMgYW5kIHB1dCB2YWx1ZSBpbnRvIGlkVmFsdWUgcHJvcGVy
dHkiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoaW5BcnJvd0Z1
Y3Rpb24pCi0gICAgICAgICAgICBhcnJvdygpKCkoKTsKLQotICAgICAgICBpZiAoaW5Db25zdHJ1
Y3RvcikKLSAgICAgICAgICAgIHN1cGVyKCk7Ci0KLSAgICAgICAgdGVzdENhc2UodGhpcy5pZFZh
bHVlLCB0ZXN0VmFsdWUsICJFcnJvcjogYXJyb3cgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGlz
IHRvIGNvbnN0cnVjdG9yIik7Ci0gICAgfQotfTsKLQotZm9yICh2YXIgaT0wOyBpIDwgMTAwMDsg
aSsrKSB7Ci0gICAgbmV3IEIodHJ1ZSwgZmFsc2UpOwotICAgIG5ldyBCKGZhbHNlLCB0cnVlKTsK
LX0KLQotdmFyIHRlc3RFeGNlcHRpb24gPSBmdW5jdGlvbiAoaW5kZXgpIHsKLSAgICB2YXIgZXhj
ZXB0aW9uOwotICAgIHRyeSB7Ci0gICAgICAgIG5ldyBCKGZhbHNlLCBmYWxzZSk7Ci0gICAgfSBj
YXRjaCAoZSkgewotICAgICAgICBleGNlcHRpb24gPSBlOwotICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgUmVmZXJlbmNlRXJyb3IpKQotICAgICAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiB0aHJv
d24gd2FzIG5vdCBhIGNvcnJlY3QgZXJyb3IuIEV4cGVjdGVkIFJlZmVyZW5jZUVycm9yIGJ1dCB3
YXMgIiArIGUubmFtZTsKLSAgICB9Ci0KLSAgICBpZiAoIWV4Y2VwdGlvbikKLSAgICAgICAgdGhy
b3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJh
dGlvbiAjIiArIGluZGV4OwotfQotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykgewot
ICB0ZXN0RXhjZXB0aW9uKGksIFJlZmVyZW5jZUVycm9yKTsKLX0KLQotdmFyIEMgPSBjbGFzcyBD
IGV4dGVuZHMgQSB7Ci0gICAgY29uc3RydWN0b3IgKCkgewotICAgICAgdmFyIGFycm93ID0gKCkg
PT4gewotICAgICAgICAgIGxldCBfX3Byb3RvX18gPSAnc29tZS10ZXh0JzsKLSAgICAgICAgICB2
YXIgYXJyID0gKCkgPT4gewotICAgICAgICAgICAgICB0ZXN0Q2FzZSh0eXBlb2YgIF9fcHJvdG9f
XywgJ3N0cmluZycsICJFcm9ycjogX19wcm90b19fIHZhcmlhYmxlIGhhcyB3cm9uZyB0eXBlIik7
Ci0gICAgICAgICAgICAgIHN1cGVyKCk7Ci0gICAgICAgICAgICAgIHRlc3RDYXNlKHRoaXMuaWRW
YWx1ZSwgdGVzdFZhbHVlLCAiRXJyb3I6IHN1cGVyKCkgc2hvdWxkIGNyZWF0ZSB0aGlzIGFuZCBw
dXQgdmFsdWUgaW50byBpZFZhbHVlIHByb3BlcnR5Iik7Ci0gICAgICAgICAgIH07Ci0gICAgICAg
ICAgIGFycigpOwotICAgICAgIH07Ci0KLSAgICAgIGFycm93KCk7Ci0KLSAgICAgIHRlc3RDYXNl
KHRoaXMuaWRWYWx1ZSwgdGVzdFZhbHVlLCAiRXJyb3I6IGFycm93IGZ1bmN0aW9uIHNob3VsZCBy
ZXR1cm4gdGhpcyB0byBjb25zdHJ1Y3RvciIpOwotICAgIH0KLX07Ci0KLWZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgbmV3IEMoKTsKLX0KLQotY2xhc3MgRCBleHRlbmRzIEEg
ewotICAgIGNvbnN0cnVjdG9yKGRvUmVwbGFjZVByb3RvKSB7Ci0gICAgICAgIHZhciBhcnJvdyA9
ICgpID0+IHN1cGVyKCk7Ci0gICAgICAgIGlmIChkb1JlcGxhY2VQcm90bykKLSAgICAgICAgICAg
IEQuX19wcm90b19fID0gZnVuY3Rpb24gKCkge307Ci0gICAgICAgIGFycm93KCk7Ci0gICAgfQot
fQotCi10ZXN0Q2FzZSgobmV3IEQoZmFsc2UpKS5pZFZhbHVlLCB0ZXN0VmFsdWUsICJFcnJvcjog
YXJyb3cgZnVuY3Rpb24gYm91bmQgd3Jvbmcgc3VwZXIiKTsKLXRlc3RDYXNlKHR5cGVvZiAobmV3
IEQodHJ1ZSkpLmlkVmFsdWUsICJ1bmRlZmluZWQiICwgIkVycm9yOiBhcnJvdyBmdW5jdGlvbiBi
b3VuZCB3cm9uZyBzdXBlciIpOwotCi1jbGFzcyBFIGV4dGVuZHMgQSB7Ci0gICAgY29uc3RydWN0
b3IoZG9SZXBsYWNlUHJvdG8pIHsKLSAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gewotICAgICAg
ICAgICAgaWYgKGRvUmVwbGFjZVByb3RvKQotICAgICAgICAgICAgICAgIEUuX19wcm90b19fID0g
ZnVuY3Rpb24gKCkge307Ci0gICAgICAgICAgICBzdXBlcigpOwotICAgICAgICB9OwotCi0gICAg
ICAgIGFycm93KCk7Ci0gICAgfQotfQotCi10ZXN0Q2FzZSgobmV3IEUoZmFsc2UpKS5pZFZhbHVl
LCB0ZXN0VmFsdWUsICJFcnJvcjogYXJyb3cgZnVuY3Rpb24gYm91bmQgd3Jvbmcgc3VwZXIgIzEi
KTsKLXRlc3RDYXNlKHR5cGVvZiAobmV3IEUodHJ1ZSkpLmlkVmFsdWUsICJ1bmRlZmluZWQiICwg
IkVycm9yOiBhcnJvdyBmdW5jdGlvbiBib3VuZCB3cm9uZyBzdXBlciAjMSIpOwotCi0KLWNsYXNz
IEYgZXh0ZW5kcyBBIHsKLSAgICBjb25zdHJ1Y3Rvcihkb1JlcGxhY2VQcm90bykgewotICAgICAg
ICB2YXIgYXJyb3cgPSAoKSA9PiB7Ci0gICAgICAgICAgICBGLl9fcHJvdG9fXyA9IG51bGw7Ci0g
ICAgICAgICAgICBzdXBlcigpOwotICAgICAgICB9OwotCi0gICAgICAgIGFycm93KCk7Ci0gICAg
fQotfQotCi12YXIgdGVzdFR5cGVFcnJvckV4Y2VwdGlvbiA9IGZ1bmN0aW9uIChpbmRleCkgewot
ICAgIHZhciBleGNlcHRpb247Ci0gICAgdHJ5IHsKLSAgICAgICAgbmV3IEYoKTsKLSAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgICAgIGlmICghKGUgaW5zdGFu
Y2VvZiBUeXBlRXJyb3IpKQotICAgICAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiB0aHJvd24gd2Fz
IG5vdCBhIGNvcnJlY3QgZXJyb3IuIEV4cGVjdGVkIFR5cGVFcnJvciBidXQgd2FzICIgKyBlLm5h
bWU7Ci0gICAgfQotCi0gICAgaWYgKCFleGNlcHRpb24pCi0gICAgICAgIHRocm93ICJFeGNlcHRp
b24gbm90IHRocm93biBmb3IgYW4gdW5pdGlhbGl6ZWQgdGhpcyBhdCBpdGVyYXRpb24gIyIgKyBp
bmRleDsKLX0KLQotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAgdGVzdFR5cGVF
cnJvckV4Y2VwdGlvbihpKTsKLX0KLQotdmFyIGVycm9yU3RhY2s7Ci0KLXZhciBQYXJlbnRDbGFz
cyA9IGNsYXNzIFBhcmVudENsYXNzIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIHRoaXMuaWRWYWx1ZSA9IHRlc3RWYWx1ZTsKLSAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignRXJyb3InKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAg
ICAgZXJyb3JTdGFjayAgPSBlLnN0YWNrOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotdmFyIENo
aWxkQ2xhc3MgPSBjbGFzcyBDaGlsZENsYXNzIGV4dGVuZHMgUGFyZW50Q2xhc3MgewotICAgIGNv
bnN0cnVjdG9yICgpIHsKLSAgICAgICAgdmFyIGFycm93SW5DaGlsZENvbnN0cnVjdG9yID0gKCkg
PT4gewotICAgICAgICAgICAgdmFyIG5lc3RlZEFycm93ID0gKCkgPT4gewotICAgICAgICAgICAg
ICAgIHN1cGVyKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5lc3RlZEFycm93KCk7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXJyb3dJbkNoaWxkQ29uc3RydWN0b3IoKTsKLSAgICB9
Ci19OwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgIGVycm9yU3RhY2sg
PSAnJzsKLSAgICBsZXQgYyA9IG5ldyBDaGlsZENsYXNzKCk7Ci0KLSAgICBsZXQgcGFyZW50Q2xh
c3NJbmRleE9mID0gZXJyb3JTdGFjay5pbmRleE9mKCdQYXJlbnRDbGFzcycpOwotICAgIGxldCBu
ZXN0ZWRBcnJvd0luZGV4T2YgPSBlcnJvclN0YWNrLmluZGV4T2YoJ25lc3RlZEFycm93Jyk7Ci0g
ICAgbGV0IGFycm93SW5DaGlsZENvbnN0cnVjdG9ySW5kZXhPZiA9IGVycm9yU3RhY2suaW5kZXhP
ZignYXJyb3dJbkNoaWxkQ29uc3RydWN0b3InKTsKLSAgICBsZXQgY2hpbGRDbGFzc0luZGV4T2Yg
PSBlcnJvclN0YWNrLmluZGV4T2YoJ0NoaWxkQ2xhc3MnKTsKLQotICAgIHRlc3RDYXNlKHBhcmVu
dENsYXNzSW5kZXhPZiA+IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignUGFyZW50Q2xhc3MnLCBw
YXJlbnRDbGFzc0luZGV4T2YgKyAxKSA9PT0gLTEsIHRydWUsICJFcnJvcjogc3RhY2sgb2YgZXJy
b3Igc2hvdWxkIGNvbnRhaW4gUGFyZW50Q2xhc3MgdGV4dCIpOwotICAgIHRlc3RDYXNlKG5lc3Rl
ZEFycm93SW5kZXhPZiA+IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignbmVzdGVkQXJyb3cnLCBu
ZXN0ZWRBcnJvd0luZGV4T2YgKyAxKSA9PT0gLTEsIHRydWUsICJFcnJvcjogc3RhY2sgb2YgZXJy
b3Igc2hvdWxkIGNvbnRhaW4gbmVzdGVkQXJyb3cgdGV4dCIpOwotICAgIHRlc3RDYXNlKGFycm93
SW5DaGlsZENvbnN0cnVjdG9ySW5kZXhPZiA+IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignYXJy
b3dJbkNoaWxkQ29uc3RydWN0b3InLCBhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluZGV4T2YgKyAx
KSA9PT0gLTEsIHRydWUsICJFcnJvcjogc3RhY2sgb2YgZXJyb3Igc2hvdWxkIGNvbnRhaW4gYXJy
b3dJbkNoaWxkQ29uc3RydWN0b3IgdGV4dCIpOwotICAgIHRlc3RDYXNlKGNoaWxkQ2xhc3NJbmRl
eE9mID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCdDaGlsZENsYXNzJywgY2hpbGRDbGFzc0lu
ZGV4T2YgKyAxKSA9PT0gLTEsIHRydWUsICJFcnJvcjogc3RhY2sgb2YgZXJyb3Igc2hvdWxkIGNv
bnRhaW5zIENoaWxkQ2xhc3MgdGV4dCIpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwt
My5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZmYmI2ZDVhY2I3NGJkZTY4ZDVkZDY5MzdjMTFkYTZjMzEwNmM2ZjUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtMy5qcworKysg
L2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLXZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1
YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsK
LSAgICAgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywg
YnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKLSAgICB9Ci19OwotCi12YXIgdGVzdFZhbHVlICA9
ICd0ZXN0LXZhbHVlJzsKLQotdmFyIEEgPSBjbGFzcyBBIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsK
LSAgICAgICAgdGhpcy5pZFZhbHVlID0gdGVzdFZhbHVlOwotICAgIH0KLX07Ci0KLXZhciBCID0g
Y2xhc3MgQiBleHRlbmRzIEEgewotICAgIGNvbnN0cnVjdG9yIChiZWZvcmVTdXBlcikgewotICAg
ICAgICB2YXIgYXJyb3cgPSAoKSA9PiBldmFsKCcoKCkgPT4gdGhpcy5pZFZhbHVlKSgpJyk7Ci0K
LSAgICAgICAgaWYgKGJlZm9yZVN1cGVyKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXJy
b3coKTsKLSAgICAgICAgICAgIHN1cGVyKCk7Ci0gICAgICAgICAgICB0ZXN0Q2FzZShyZXN1bHQs
IHRlc3RWYWx1ZSwgIkVycm9yOiBoYXMgdG8gYmUgVERaIGVycm9yIik7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBzdXBlcigpOwotICAgICAgICAgICAgbGV0IHJlc3VsdD0gYXJyb3co
KTsKLSAgICAgICAgICAgIHRlc3RDYXNlKHJlc3VsdCwgdGVzdFZhbHVlLCAiRXJyb3I6IHN1cGVy
KCkgc2hvdWxkIGNyZWF0ZSB0aGlzIGFuZCBwdXQgdmFsdWUgaW50byBpZFZhbHVlIHByb3BlcnR5
Iik7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkr
KykgewotICAgIHZhciBiID0gbmV3IEIoZmFsc2UpOwotfQotCi12YXIgdGVzdEV4Y2VwdGlvbiA9
IGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHsKLSAgdmFyIGV4Y2VwdGlvbjsKLSAgdHJ5IHsKLSAg
ICAgICBuZXcgQih2YWx1ZSk7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgICAgIGV4Y2VwdGlvbiA9IGU7
Ci0gICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQotICAgICAgICAgIHRo
cm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOwotICB9Ci0K
LSAgaWYgKCFleGNlcHRpb24pCi0gICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJvd24gZm9y
IGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uICMiICsgaW5kZXg7Ci19Ci0KLQotZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLSAgICB0ZXN0RXhjZXB0aW9uKHRydWUsIGkp
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTQu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YTZmNzA0MGQ5NTQ0NmY3MmJiYmE3
NTI4ODk3NGUzZWVjNThmZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qcworKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAg
QEAKLXZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKLSAgICAgICAgdGhyb3cgbWVzc2FnZSAr
ICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICIn
IjsKLSAgICB9Ci19OwotCi12YXIgdGVzdFZhbHVlICA9ICd0ZXN0LXZhbHVlJzsKLQotdmFyIEEg
PSBjbGFzcyBBIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgdGhpcy5pZFZhbHVlID0g
dGVzdFZhbHVlOwotICAgIH0KLX07Ci0KLXZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgewotICBj
b25zdHJ1Y3RvciAoYmVmb3JlU3VwZXIpIHsKLQotICAgICAgdmFyIGFycm93ID0gKCkgPT4gZXZh
bCgnKCgpID0+IHN1cGVyKCkpKCknKTsKLQotICAgICAgaWYgKGJlZm9yZVN1cGVyKSB7Ci0gICAg
ICAgICAgYXJyb3coKTsKLSAgICAgICAgICB0ZXN0Q2FzZSh0aGlzLmlkVmFsdWUsIHRlc3RWYWx1
ZSwgIkVycm9yOiBzdXBlcigpIHNob3VsZCBjcmVhdGUgdGhpcyBhbmQgcHV0IHZhbHVlIGludG8g
aWRWYWx1ZSBwcm9wZXJ0eSIpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0ZXN0Q2FzZSh0
aGlzLmlkVmFsdWUsIHRlc3RWYWx1ZSwgIkVycm9yOiBoYXMgdG8gYmUgVERaIGVycm9yIik7Ci0g
ICAgICAgICAgYXJyb3coKTsKLSAgICAgIH0KLSAgfQotfTsKLQotdmFyIEMgPSBjbGFzcyBDIGV4
dGVuZHMgQSB7Ci0gICAgY29uc3RydWN0b3IgKCkgewotICAgICAgICB2YXIgYXJyb3cgPSAoKSA9
PiBldmFsKCcoKCkgPT4gc3VwZXIoKSkoKScpOwotICAgICAgICBhcnJvdygpOwotICAgICAgICBy
ZXR1cm4ge307Ci0gICAgfQotfTsKLQotdmFyIEQgPSBjbGFzcyBEIGV4dGVuZHMgQSB7Ci0gICAg
Y29uc3RydWN0b3IgKCkgewotICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBldmFsKCcoKCkgPT4g
c3VwZXIoKSkoKScpOwotICAgICAgICBhcnJvdygpOwotICAgICAgICBldmFsKCd0aGlzLmlkPSJu
ZXctdmFsdWUiJyk7Ci0gICAgfQotfTsKLQotdmFyIEUgPSBjbGFzcyBFIGV4dGVuZHMgQSB7Ci0g
ICAgY29uc3RydWN0b3IgKCkgewotICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBldmFsKCJldmFs
KCcoKCkgPT4gc3VwZXIoKSkoKScpIik7Ci0gICAgICAgIGFycm93KCk7Ci0gICAgICAgIGV2YWwo
J2V2YWwoInRoaXMuaWQ9XCduZXctdmFsdWVcJyIpJyk7Ci0gICAgfQotfTsKLQotZm9yICh2YXIg
aT0wOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgbmV3IEIodHJ1ZSk7Ci0gICAgdmFyIGMgPSBuZXcg
QygpOwotICAgIHRlc3RDYXNlKHR5cGVvZiBjLmlkLCAndW5kZWZpbmVkJywgJ0Vycm9yIGR1cmlu
ZyBzZXQgdmFsdWUgaW4gZXZhbCAjMScpOwotICAgIHZhciBkID0gbmV3IEQoKTsKLSAgICB0ZXN0
Q2FzZShkLmlkLCAnbmV3LXZhbHVlJywgJ0Vycm9yIGR1cmluZyBzZXQgdmFsdWUgaW4gZXZhbCAj
MicpOwotICAgIHZhciBlID0gbmV3IEUoKTsKLSAgICB0ZXN0Q2FzZShlLmlkLCAnbmV3LXZhbHVl
JywgJ0Vycm9yIGR1cmluZyBzZXQgdmFsdWUgaW4gZXZhbCAjMycpOwotfQotCi12YXIgdGVzdEV4
Y2VwdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHsKLSAgICB2YXIgZXhjZXB0aW9uOwot
ICAgIHRyeSB7Ci0gICAgICAgIG5ldyBCKHZhbHVlKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VF
cnJvcikpCi0gICAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVm
ZXJlbmNlIGVycm9yIjsKLSAgICB9Ci0KLSAgICBpZiAoIWV4Y2VwdGlvbikKLSAgICAgICAgdGhy
b3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJh
dGlvbiAjIiArIGluZGV4OwotfQotCi1mb3IgKHZhciBpPTA7IGkgPCAxMDAwOyBpKyspIHsKLSAg
ICB0ZXN0RXhjZXB0aW9uKGZhbHNlLCBpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC10aGlzLTEuanMKaW5kZXggNjljYjhjZDhlZWI4YmNmOTg0NDI3OTA4MjY5ODkxY2Rk
ZjYyNmM4ZS4uNGNmYWIyNGM5MWJjNTdjOTU4NzYzMmRmZWM5YTRjOTM3OThlMjE1YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTEuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMKQEAgLTgsNyArOCw2IEBA
IGZ1bmN0aW9uIERvZyhuYW1lKSB7CiAgIHRoaXMubmFtZSA9IG5hbWU7CiAgIHRoaXMuZ2V0TmFt
ZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOwogICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4g
ZXZhbCgiKCgpID0+IHRoaXMubmFtZSkoKSIpOwotICB0aGlzLmdldE5hbWVSZWFsbHlIYXJkID0g
KCkgPT4gZXZhbCgiZXZhbCgnKCgpID0+IHRoaXMubmFtZSkoKScpIik7CiB9CiAKIG5vSW5saW5l
KERvZykKQEAgLTE3LDUgKzE2LDQgQEAgZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkrKykgewogICB2
YXIgZCA9IG5ldyBEb2coIk1heCIpOwogICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1lLCAi
RXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBm
dW5jdGlvbiAjMSIpOwogICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFtZSwgIkVycm9y
OiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzIiKTsKLSAgdGVzdENhc2UoZC5nZXROYW1lUmVhbGx5SGFyZCgpLCBkLm5hbWUsICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICMzIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy03Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjc2YzlkZDZkZjc4MjdlYTRjNDA5Njgy
NTVlMmVhZDFhOTdkYTQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy03LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotdmFy
IHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKLSAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewotICAgICAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhw
ZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOwotICAg
IH0KLX07Ci0KLXZhciBkZWVwU2NvcGUgPSBmdW5jdGlvbiAoeCwgeSkgewotICAgIHZhciBfeCA9
IHgsIF95ID0geTsKLSAgICByZXR1cm4gKCk9PiBfeCArIF95ICsgdGhpcy52YWw7Ci19OwotCi12
YXIgYSA9IGRlZXBTY29wZS5jYWxsKHt2YWw6J0EnfSwgJ0QnLCAnRScpOwotdmFyIGIgPSBkZWVw
U2NvcGUuY2FsbCh7dmFsOidCJ30sICdEJywgJ0YnKTsKLXZhciBjID0gZGVlcFNjb3BlLmNhbGwo
e3ZhbDonQyd9LCAnRCcsICdHJyk7Ci0KLXZhciBhbm90aGVyU2NvcGUgPSBmdW5jdGlvbiAoX2Fm
KSB7Ci0gICAgcmV0dXJuIF9hZigpOwotfTsKLQotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBp
KyspIHsKLSAgICB0ZXN0Q2FzZShjKCksIGFub3RoZXJTY29wZS5jYWxsKHt2YWw6J0knfSwgYyks
ICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93
IGZ1bmN0aW9uICMxIik7Ci0gICAgdGVzdENhc2UoYigpLCBhbm90aGVyU2NvcGUuY2FsbCh7dmFs
OidKJ30sIGIpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9m
IHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOwotICAgIHRlc3RDYXNlKGEoKSwgYW5vdGhlclNjb3Bl
LmNhbGwoe3ZhbDonSyd9LCBhKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHotMS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHotMS5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ0ZDlkNDM5YjBlYjQ0MTE4NmYyYWU2ZTg3
YzY0OTNmYWEzMDBmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6
LTEuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi12YXIgQSA9IGNsYXNzIEEgeyB9
OwotdmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7Ci0gICAgY29uc3RydWN0b3IoYmVmb3JlU3Vw
ZXIsIHJldHVyblRoaXMpIHsKLSAgICAgICAgdmFyIGYgPSAoKSA9PiByZXR1cm5UaGlzID8gdGhp
cyA6IHt9OwotICAgICAgICBpZiAoYmVmb3JlU3VwZXIpIHsKLSAgICAgICAgICAgIGxldCB2YWwg
PSBmKCk7Ci0gICAgICAgICAgICBzdXBlcigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgc3VwZXIoKTsKLSAgICAgICAgICAgIGxldCB2YWwgPSBmKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19OwotCi12YXIgZXhjZXB0aW9uID0gbnVsbDsKLWZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBp
KyspIHsKLSAgICB0cnkgewotICAgICAgICBuZXcgQih0cnVlLCB0cnVlKTsKLSAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgICAgIGlmICghKGUgaW5zdGFuY2Vv
ZiBSZWZlcmVuY2VFcnJvcikpCi0gICAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3
YXMgbm90IGEgcmVmZXJlbmNlIGVycm9yIjsKLSAgICB9Ci0KLSAgICBpZiAoIWV4Y2VwdGlvbikK
LSAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFsaXplZCB0
aGlzIGF0IGl0ZXJhdGlvbiI7Ci0KLSAgICB2YXIgYSA9IG5ldyBCKGZhbHNlLCB0cnVlKTsKLSAg
ICB2YXIgYiA9IG5ldyBCKGZhbHNlLCBmYWxzZSk7Ci0gICAgdmFyIGMgPSBuZXcgQih0cnVlLCBm
YWxzZSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tdGR6LTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tdGR6LTIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDdhZmNjYWZjYjZhOWZkM2FjNjI2YmUyNGU0YzA3YjFlZmUwMzY1ODguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei0yLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzIg
KzAsMCBAQAotdmFyIEEgPSBjbGFzcyBBIHsgfTsKLXZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEg
ewotICAgIGNvbnN0cnVjdG9yKGJlZm9yZVN1cGVyLCByZXR1cm5UaGlzKSB7Ci0gICAgICAgIHZh
ciBmID0gKCkgPT4gcmV0dXJuVGhpcyA/ICgoKSA9PiB0aGlzICkgOiAoKCk9Pnt9KTsKLSAgICAg
ICAgbGV0IGFmID0gZigpOwotICAgICAgICBpZiAoYmVmb3JlU3VwZXIpIHsKLSAgICAgICAgICAg
IGxldCByZXN1bHQgPSBhZigpOwotICAgICAgICAgICAgc3VwZXIoKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHN1cGVyKCk7Ci0gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYWYoKTsK
LSAgICAgICAgfQotICAgIH0KLX07Ci0KLXZhciBleGNlcHRpb24gPSBudWxsOwotZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgbmV3IEIodHJ1ZSwg
dHJ1ZSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBleGNlcHRpb24gPSBlOwotICAgICAg
ICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQotICAgICAgICAgICAgdGhyb3cg
IkV4Y2VwdGlvbiB0aHJvd24gd2FzIG5vdCBhIHJlZmVyZW5jZSBlcnJvciI7Ci0gICAgfQotCi0g
ICAgaWYgKCFleGNlcHRpb24pCi0gICAgICAgIHRocm93ICJFeGNlcHRpb24gbm90IHRocm93biBm
b3IgYW4gdW5pdGlhbGl6ZWQgdGhpcyBhdCBpdGVyYXRpb24iOwotCi0gICAgdmFyIGEgPSBuZXcg
QihmYWxzZSwgdHJ1ZSk7Ci0gICAgdmFyIGIgPSBuZXcgQihmYWxzZSwgZmFsc2UpOwotICAgIHZh
ciBjID0gbmV3IEIodHJ1ZSwgZmFsc2UpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei0zLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei0zLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhYjk4MzA5ZjFlNWJmYjJjZjAwMjgwYzVhMzhkMDAyZjliNmE2
NzU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHotMy5qcworKysg
L2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi12YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0
dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewotICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgewot
ICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3
YXMgJyIgKyBhY3R1YWwgKyAiJyI7Ci0gIH0KLX07Ci0KLXZhciBBID0gY2xhc3MgQSB7Ci0gICBj
b25zdHJ1Y3RvcigpIHsKLSAgICAgIHRoaXMuaWQgPSAnQScKLSAgIH0KLX07Ci0KLXZhciBCID0g
Y2xhc3MgQiBleHRlbmRzIEEgewotICBjb25zdHJ1Y3RvcihiZWZvcmVTdXBlcikgewotICAgIHZh
ciBmID0gKCkgPT4gewotICAgICAgaWYgKHRoaXMuaWQgPT09ICdBJykgewotICAgICAgICByZXR1
cm4gJ29rJzsKLSAgICAgIH0KLSAgICAgIHJldHVybiAnb2snOwotICAgIH07Ci0gICAgbGV0IHZh
bDsKLSAgICBpZiAoYmVmb3JlU3VwZXIpIHsKLSAgICAgIHZhbCA9IGYoKTsKLSAgICAgIHN1cGVy
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHN1cGVyKCk7Ci0gICAgICB2YWwgPSBmKCk7Ci0gICAg
fQotICAgIHRoaXMucmVzID0gdmFsOwotICB9Ci19OwotCi12YXIgQyA9IGNsYXNzIEMgZXh0ZW5k
cyBBIHsKLSAgY29uc3RydWN0b3IoYmVmb3JlU3VwZXIpIHsKLSAgICB2YXIgZiA9ICgpID0+IHsK
LSAgICAgIGlmICh0aGlzID4gNSkgewotICAgICAgICByZXR1cm4gJ29rJzsKLSAgICAgIH0KLSAg
ICAgIHJldHVybiAnb2snOwotICAgIH07Ci0gICAgbGV0IHZhbDsKLSAgICBpZiAoYmVmb3JlU3Vw
ZXIpIHsKLSAgICAgIHZhbCA9IGYoKTsKLSAgICAgIHN1cGVyKCk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIHN1cGVyKCk7Ci0gICAgICB2YWwgPSBmKCk7Ci0gICAgfQotICAgIHRoaXMucmVzID0gdmFs
OwotICB9Ci19OwotCi12YXIgRCA9IGNsYXNzIEQgZXh0ZW5kcyBBIHsKLSAgY29uc3RydWN0b3Io
YmVmb3JlU3VwZXIpIHsKLSAgICB2YXIgZiA9ICgpID0+IHsKLSAgICAgIGlmICh0aGlzIDwgNSkg
ewotICAgICAgICByZXR1cm4gJ29rJzsKLSAgICAgIH0KLSAgICAgIHJldHVybiAnb2snOwotICAg
IH07Ci0gICAgbGV0IHZhbDsKLSAgICBpZiAoYmVmb3JlU3VwZXIpIHsKLSAgICAgIHZhbCA9IGYo
KTsKLSAgICAgIHN1cGVyKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHN1cGVyKCk7Ci0gICAgICB2
YWwgPSBmKCk7Ci0gICAgfQotICAgIHRoaXMucmVzID0gdmFsOwotICB9Ci19OwotCi12YXIgRSA9
IGNsYXNzIEUgZXh0ZW5kcyBBIHsKLSAgY29uc3RydWN0b3IoYmVmb3JlU3VwZXIpIHsKLSAgICB2
YXIgZiA9ICgpID0+IHsKLSAgICAgIGlmICh0aGlzICE9PSA1KSB7Ci0gICAgICAgIHJldHVybiAn
b2snOwotICAgICAgfQotICAgICAgcmV0dXJuICdvayc7Ci0gICAgfTsKLSAgICBsZXQgdmFsOwot
ICAgIGlmIChiZWZvcmVTdXBlcikgewotICAgICAgdmFsID0gZigpOwotICAgICAgc3VwZXIoKTsK
LSAgICB9IGVsc2UgewotICAgICAgc3VwZXIoKTsKLSAgICAgICB2YWwgPSBmKCk7Ci0gICAgfQot
ICAgIHRoaXMucmVzID0gdmFsOwotICB9Ci19OwotCi12YXIgRiA9IGNsYXNzIEYgZXh0ZW5kcyBB
IHsKLSAgY29uc3RydWN0b3IoYmVmb3JlU3VwZXIpIHsKLSAgICB2YXIgZiA9ICgpID0+IHsKLSAg
ICAgIGlmICh0aGlzIDw9IDUpIHsKLSAgICAgICAgcmV0dXJuICdvayc7Ci0gICAgICB9Ci0gICAg
ICByZXR1cm4gJ29rJzsKLSAgICB9OwotICAgIGxldCB2YWw7Ci0gICAgaWYgKGJlZm9yZVN1cGVy
KSB7Ci0gICAgICB2YWwgPSBmKCk7Ci0gICAgICBzdXBlcigpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICBzdXBlcigpOwotICAgICAgdmFsID0gZigpOwotICAgIH0KLSAgICB0aGlzLnJlcyA9IHZhbDsK
LSAgfQotfTsKLQotdmFyIEcgPSBjbGFzcyBHIGV4dGVuZHMgQSB7Ci0gIGNvbnN0cnVjdG9yKGJl
Zm9yZVN1cGVyKSB7Ci0gICAgdmFyIGYgPSAoKSA9PiB7Ci0gICAgICBpZiAodGhpcyA+PSA1KSB7
Ci0gICAgICAgIHJldHVybiAnb2snOwotICAgICAgfQotICAgICAgcmV0dXJuICdvayc7Ci0gICAg
fTsKLSAgICBsZXQgdmFsOwotICAgIGlmIChiZWZvcmVTdXBlcikgewotICAgICAgdmFsID0gZigp
OwotICAgICAgc3VwZXIoKTsKLSAgICB9IGVsc2UgewotICAgICAgc3VwZXIoKTsKLSAgICAgIHZh
bCA9IGYoKTsKLSAgICB9Ci0gICAgdGhpcy5yZXMgPSB2YWw7Ci0gIH0KLX07Ci0KLXZhciBHID0g
Y2xhc3MgRyBleHRlbmRzIEEgewotICBjb25zdHJ1Y3RvcihiZWZvcmVTdXBlcikgewotICAgIHZh
ciBmID0gKCkgPT4gewotICAgICAgaWYgKHRoaXMgPT09IDUpIHsKLSAgICAgICAgcmV0dXJuICdv
ayc7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gJ29rJzsKLSAgICB9OwotICAgIGxldCB2YWw7Ci0g
ICAgaWYgKGJlZm9yZVN1cGVyKSB7Ci0gICAgICB2YWwgPSBmKCk7Ci0gICAgICBzdXBlcigpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICBzdXBlcigpOwotICAgICAgdmFsID0gZigpOwotICAgIH0KLSAg
ICB0aGlzLnJlcyA9IHZhbDsKLSAgfQotfTsKLQotdmFyIHRyeVRvQ3JlYXRlID0gZnVuY3Rpb24g
KGNsYXNzRm9yQ3JlYXRlKSB7Ci0gIHZhciByZXN1bHQgPSBmYWxzZTsKLSAgdHJ5IHsKLSAgICAg
ICBuZXcgY2xhc3NGb3JDcmVhdGUodHJ1ZSk7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgICAgIHJlc3Vs
dCA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKLSAgfQotCi0gIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXZhciBjaGVjayA9IGZ1bmN0aW9uIChjbGFzc0ZvckNoZWNrKSB7Ci0gIHRlc3RDYXNl
KHRyeVRvQ3JlYXRlKGNsYXNzRm9yQ2hlY2spLCB0cnVlLCAnRXhjZXB0aW9uIHdhc25cJ3QgdGhy
b3duIG9yIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3InKTsKLSAgdmFyIHJlc3VsdCA9IG5ldyBj
bGFzc0ZvckNoZWNrKGZhbHNlKTsKLSAgdGVzdENhc2UocmVzdWx0LnJlcywgJ29rJywgJ0Vycm9y
IGluIHNldHRpbmcgaWQgJyk7Ci19Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykg
ewotICBjaGVjayhCKTsKLSAgY2hlY2soQyk7Ci0gIGNoZWNrKEQpOwotICBjaGVjayhFKTsKLSAg
Y2hlY2soRik7Ci0gIGNoZWNrKEcpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei00LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei00LmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4N2MyOTI3YTFmMWU1NTIzMDk1ZTc1YTFjNGZkOTVlMGFmY2MyZjBi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHotNC5qcworKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLXZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWws
IGV4cGVjdGVkLCBtZXNzYWdlKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKLSAg
ICAgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKLSAgICB9Ci19OwotCi12YXIgdGVzdFZhbHVlICA9ICd0
ZXN0LXZhbHVlJzsKLQotdmFyIEEgPSBjbGFzcyBBIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsKLSAg
ICAgICAgdGhpcy5pZFZhbHVlID0gdGVzdFZhbHVlOwotICAgIH0KLX07Ci0KLXZhciBCID0gY2xh
c3MgQiBleHRlbmRzIEEgewotICBjb25zdHJ1Y3RvciAoZG9SdW5TdXBlcikgewotICAgICAgdmFy
IGFycm93ID0gKCkgPT4gewotICAgICAgICAgIGlmIChkb1J1blN1cGVyKSB7Ci0gICAgICAgICAg
ICAgIHN1cGVyKCk7Ci0gICAgICAgICAgICAgIHRlc3RDYXNlKHRoaXMuaWRWYWx1ZSwgdGVzdFZh
bHVlLCAiRXJyb3I6IHN1cGVyKCkgc2hvdWxkIGNyZWF0ZSB0aGlzIGFuZCBwdXQgdmFsdWUgaW50
byBpZFZhbHVlIHByb3BlcnR5Iik7Ci0gICAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAo
ZG9SdW5TdXBlcikgewotICAgICAgICAgIGFycm93KCk7Ci0gICAgICAgICAgdGVzdENhc2UodGhp
cy5pZFZhbHVlLCB0ZXN0VmFsdWUsICJFcnJvcjogYXJyb3cgZnVuY3Rpb24gc2hvdWxkIHJldHVy
biB0aGlzIHRvIGNvbnN0cnVjdG9yIik7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHZhciB2
YWx1ZSA9IHRoaXMuaWRWYWx1ZTsvL2ZvcmNlIFREWiBlcnJvcgotICAgICAgICAgIGRlYnVnKHZh
bHVlKTsKLSAgICAgIH0KLSAgfQotfTsKLQotZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykg
ewotICAgIHZhciBleGNlcHRpb247Ci0gICAgdHJ5IHsKLSAgICAgICAgbmV3IEIoZmFsc2UpOwot
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZXhjZXB0aW9uID0gZTsKLSAgICAgICAgaWYgKCEo
ZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkKLSAgICAgICAgICAgIHRocm93ICJFeGNlcHRp
b24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOwotICAgIH0KLQotICAgIGlmICgh
ZXhjZXB0aW9uKQotICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJvd24gZm9yIGFuIHVu
aXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uICMiICsgaTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY4NzQ5MjM5NzE5ODNkY2RhMzRjMjY5MzkyMTE3YjE3NDhlNjdiNGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tdGR6LmpzCkBAIC0wLDAgKzEsMjcgQEAKK3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9
IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVy
KSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgICAgdmFyIGYgPSAoKSA9
PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAg
ICB9CisgIH0KK307CisKK3ZhciBleGNlcHRpb24gPSBudWxsOworZm9yICh2YXIgaT0wOyBpPDEw
MDAwOyBpKyspIHsKKyAgdHJ5IHsKKyAgICAgICBuZXcgQih0cnVlKTsKKyAgfSBjYXRjaCAoZSkg
eworICAgICAgZXhjZXB0aW9uID0gZTsKKyAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVu
Y2VFcnJvcikpCisgICAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiB0aHJvd24gd2FzIG5vdCBhIHJl
ZmVyZW5jZSBlcnJvciI7CisgIH0KKworICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgIHRocm93ICJF
eGNlcHRpb24gbm90IHRocm93biBmb3IgYW4gdW5pdGlhbGl6ZWQgdGhpcyBhdCBpdGVyYXRpb24i
OworCisgIHZhciBlID0gbmV3IEIoZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMTY3ZDc0YzM0MDRiMzI3
MGNkYzdmNGFjN2FhZGRhNDdiM2ZjNDIuLmRmNDBmMjFhMjc3OTczMjk0Zjk2NjQ5Zjk4NjAyOTJm
NjAxZGY5N2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0xMi0wNiAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjE5MzU4NCk6IENh
dXNlcyBoZWFwIHVzZS1hZnRlci1mcmVlIGNyYXNoZXMgaW4gV2ViIEluc3BlY3RvciB0ZXN0cyB3
aXRoIEFkZHJlc3NTYW5pdGl6ZXIgKFJlcXVlc3RlZCBieSBkZGtpbHplciBvbiAjd2Via2l0KS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTkyOQor
CisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW0VTNl0gInN1cGVyIiBh
bmQgInRoaXMiIHNob3VsZCBiZSBsZXhpY2FsbHkgYm91bmQgaW5zaWRlIGFuCisgICAgICAgIGFy
cm93IGZ1bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBhIEpTTGV4aWNhbEVudmlyb25tZW50Igor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MzM4Cisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5MzU4NAorCiAyMDE1LTEy
LTA2ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAg
IFtFUzZdICJzdXBlciIgYW5kICJ0aGlzIiBzaG91bGQgYmUgbGV4aWNhbGx5IGJvdW5kIGluc2lk
ZSBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgc2hvdWxkIGxpdmUgaW4gYSBKU0xleGljYWxFbnZpcm9u
bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTM5YzM3YTJmYjY2ZjQ2
ZGVlYTA1NjU1MzgwOWFmODdkMjlmZjk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVRlc3RzIGZvciBFUzYg
YXJyb3cgZnVuY3Rpb24sIGNhbGxpbmcgb2YgdGhlIHN1cGVyIGluIGFycm93IGZ1bmN0aW9uCi0K
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMg
dHJ1ZQotUEFTUyBiLmlkIGlzIHZhbHVlCi1QQVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQot
UEFTUyBkMS5pZCBpcyAiYiIKLVBBU1MgZDIuaWQgaXMgdmFsdWUKLVBBU1MgKG5ldyBEKCkpLmlk
IGlzIHZhbHVlCi1QQVNTIChuZXcgRShmYWxzZSkpLmlkIGlzIHZhbHVlCi1QQVNTIHR5cGVvZiAo
bmV3IEUodHJ1ZSkpLmlkIGlzICd1bmRlZmluZWQnCi1QQVNTIChuZXcgRihmYWxzZSkpLmlkIGlz
IHZhbHVlCi1QQVNTIHR5cGVvZiAobmV3IEYodHJ1ZSkpLmlkIGlzICd1bmRlZmluZWQnCi1QQVNT
IGluZGV4T2ZQYXJlbnRDbGFzc0luU3RhY2tFcnJvciA8IGluZGV4T2ZuZXN0ZWRBcnJvd0luU3Rh
Y2tFcnJvciBpcyB0cnVlCi1QQVNTIGluZGV4T2ZuZXN0ZWRBcnJvd0luU3RhY2tFcnJvciA8IGlu
ZGV4T2ZhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluU3RhY2tFcnJvciBpcyB0cnVlCi1QQVNTIGlu
ZGV4T2ZhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluU3RhY2tFcnJvciA8IGluZGV4T2ZDaGlsZENs
YXNzSW5TdGFja0Vycm9yIGlzIHRydWUKLVBBU1MgaW5kZXhPZkNoaWxkQ2xhc3NJblN0YWNrRXJy
b3IgPiAwIGlzIHRydWUKLVBBU1MgaW5kZXhPZlBhcmVudENsYXNzSW5TdGFja0Vycm9yID4gLTEg
JiYgZXJyb3JTdGFjay5pbmRleE9mKCdQYXJlbnRDbGFzcycsIGluZGV4T2ZQYXJlbnRDbGFzc0lu
U3RhY2tFcnJvciArIDEpID09PSAtMSBpcyB0cnVlCi1QQVNTIGluZGV4T2ZuZXN0ZWRBcnJvd0lu
U3RhY2tFcnJvciA+IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignbmVzdGVkQXJyb3cnLCBpbmRl
eE9mbmVzdGVkQXJyb3dJblN0YWNrRXJyb3IgKyAxKSA9PT0gLTEgaXMgdHJ1ZQotUEFTUyBpbmRl
eE9mYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNr
LmluZGV4T2YoJ2Fycm93SW5DaGlsZENvbnN0cnVjdG9yJywgaW5kZXhPZmFycm93SW5DaGlsZENv
bnN0cnVjdG9ySW5TdGFja0Vycm9yICsgMSkgPT09IC0xIGlzIHRydWUKLVBBU1MgaW5kZXhPZkNo
aWxkQ2xhc3NJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmluZGV4T2YoJ0NoaWxkQ2xh
c3MnLCBpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciArIDEpID09PSAtMSBpcyB0cnVlCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuaHRtbCBiL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZkOThlODFiOGNmNjhjOWQzODRjY2IwNTY3ZDNhNTFlNjFlNTgwNTguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICsw
LDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXN1cGVyY2FsbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQKaW5kZXggZmNiNmE0NDM3
MTE4NWYzZmNiNmE2YzkzN2E3MTMxMTcyNzBkYjcyNy4uMTdhZjZjZDg2MDBlODg0MTI3N2M0OTRh
OTg5MDIyNDUyZWE2YWI1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi10ZHotZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdGR6
LWV4cGVjdGVkLnR4dApAQCAtNCwxNCArNCw2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAK
IAogUEFTUyBpc1JlZmVyZW5jZUVycm9yIGlzIHRydWUKLVBBU1MgaXNSZWZlcmVuY2VFcnJvciBp
cyB0cnVlCi1QQVNTIGQuaWQgaXMgJ2EnCi1QQVNTIGUuaWQgaXMgJ2EnCi1QQVNTIGYuaWQgaXMg
J2EnCi1QQVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQotUEFTUyBnLmlkIGlzICdhJwotUEFT
UyBoLmlkIGlzICdhJwotUEFTUyBpLmlkIGlzICdhJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJjZWY2MDk3YTRlZWM1NTY3MjEzNzhjZGUzMmQyZjY2NTIwNWMyMDEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMTUxICswLDAgQEAKLWRlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
LCBjYWxsaW5nIG9mIHRoZSBzdXBlciBpbiBhcnJvdyBmdW5jdGlvbicpOwotCi12YXIgdmFsdWUg
PSAnYWJjZC0xMjM0JzsKLQotdmFyIEEgPSBjbGFzcyBBIHsKLSAgY29uc3RydWN0b3IoKSB7Ci0g
ICAgdGhpcy5pZCA9IHZhbHVlOwotICB9Ci19OwotCi12YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBB
IHsKLSAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7Ci0gICAgdmFyIGYgPSAo
KSA9PiAgeyBzdXBlcigpOyB9OwotICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKLSAg
ICAgIGlmICh0aGlzLmlkICE9PSB2YWx1ZSkgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgYmUgcmVm
ZXJlbmNlIGVycm9yIGJlY2F1c2Ugb2YgVERaJyk7Ci0gICAgICBmKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgIGYoKTsKLSAgICAgIGlmICh0aGlzLmlkICE9PSB2YWx1ZSkgdGhyb3cgbmV3IEVycm9y
KCd3cm9uZyB2YWx1ZScpOwotICAgIH0KLSAgfQotfTsKLQotdmFyIGlzUmVmZXJlbmNlRXJyb3Ig
PSBmYWxzZTsKLXRyeSB7Ci0gICAgbmV3IEIodHJ1ZSk7Ci19IGNhdGNoIChlKSB7Ci0gICAgaXNS
ZWZlcmVuY2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKLX0KLQotc2hvdWxk
QmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOwotCi12YXIgYiA9IG5ldyBCKGZhbHNlKTsK
LXNob3VsZEJlKCdiLmlkJywgJ3ZhbHVlJyk7Ci0KLXZhciBDID0gY2xhc3MgQyBleHRlbmRzIEEg
ewotICBjb25zdHJ1Y3RvcihydW5TdXBlckluQ29uc3RydWN0b3IsIGZvcmNlVERaKSB7Ci0gICAg
dmFyIGYxID0gKCkgPT4gIHsgaWYgKCFmb3JjZVREWikgc3VwZXIoKTsgIHRoaXMuaWQgPSAnYic7
IH07Ci0gICAgdmFyIGYyID0gKCkgPT4gIHsgaWYgKHRoaXMuaWQgIT09ICdiJykgdGhyb3cgbmV3
IEVycm9yKCd3cm9uZyBib3VuZCBvZiB0aGUgdGhpcycpOyB9OwotICAgIHZhciBmMyA9ICgpID0+
ICB7IGlmICh0aGlzLmlkICE9PSB2YWx1ZSkgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBib3VuZCBv
ZiB0aGUgdGhpcycpOyB9OwotCi0gICAgaWYgKHJ1blN1cGVySW5Db25zdHJ1Y3RvcikgewotICAg
ICAgc3VwZXIoKTsKLSAgICAgIGYzKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGYxKCk7Ci0gICAg
ICBmMigpOwotICAgIH0KLSAgfQotfTsKLQotaXNSZWZlcmVuY2VFcnJvciA9IGZhbHNlOwotdHJ5
IHsKLSAgICBuZXcgQyhmYWxzZSwgdHJ1ZSk7Ci19IGNhdGNoIChlKSB7Ci0gICAgaXNSZWZlcmVu
Y2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKLX0KLXNob3VsZEJlKCdpc1Jl
ZmVyZW5jZUVycm9yJywgJ3RydWUnKTsKLXZhciBkMSA9IG5ldyBDKGZhbHNlLCBmYWxzZSk7Ci1z
aG91bGRCZSgnZDEuaWQnLCAnImIiJyk7Ci0KLXZhciBkMiA9IG5ldyBDKHRydWUsIGZhbHNlKTsK
LXNob3VsZEJlKCdkMi5pZCcsICd2YWx1ZScpOwotCi12YXIgRCA9IGNsYXNzIEQgZXh0ZW5kcyBB
IHsKLSAgY29uc3RydWN0b3IgKCkgewotICAgIHZhciBhcnJvdyA9ICgpID0+IHsKLSAgICAgIGxl
dCBfX3Byb3RvX18gPSAnc29tZS10ZXh0JzsKLSAgICAgIHZhciBhcnIgPSAoKSA9PiB7Ci0gICAg
ICAgICAgbGV0IHZhbHVlID0gX19wcm90b19fICsgJ3RleHQnOwotICAgICAgICAgIHN1cGVyKCk7
Ci0gICAgICB9OwotCi0gICAgICBhcnIoKTsKLSAgICB9OwotCi0gICAgYXJyb3coKTsKLSAgfQot
fTsKLXNob3VsZEJlKCcobmV3IEQoKSkuaWQnLCAndmFsdWUnKTsKLQotY2xhc3MgRSBleHRlbmRz
IEEgewotICBjb25zdHJ1Y3Rvcihkb1JlcGxhY2VQcm90bykgewotICAgIHZhciBhcnJvdyA9ICgp
ID0+IHsKLSAgICAgIGlmIChkb1JlcGxhY2VQcm90bykKLSAgICAgICAgRS5fX3Byb3RvX18gPSBm
dW5jdGlvbiAoKSB7fTsKLSAgICAgIHN1cGVyKCk7Ci0gICAgfTsKLQotICAgIGFycm93KCk7Ci0g
IH0KLX07Ci1zaG91bGRCZSgnKG5ldyBFKGZhbHNlKSkuaWQnLCAidmFsdWUiKTsKLXNob3VsZEJl
KCd0eXBlb2YgKG5ldyBFKHRydWUpKS5pZCcsICIndW5kZWZpbmVkJyIpOwotCi1jbGFzcyBGIGV4
dGVuZHMgQSB7Ci0gIGNvbnN0cnVjdG9yKGRvUmVwbGFjZVByb3RvKSB7Ci0gICAgdmFyIGFycm93
ID0gKCkgPT4gc3VwZXIoKTsKLSAgICBpZiAoZG9SZXBsYWNlUHJvdG8pCi0gICAgICBGLl9fcHJv
dG9fXyA9IGZ1bmN0aW9uICgpIHt9OwotICAgIGFycm93KCk7Ci0gIH0KLX07Ci1zaG91bGRCZSgn
KG5ldyBGKGZhbHNlKSkuaWQnLCAidmFsdWUiKTsKLXNob3VsZEJlKCd0eXBlb2YgKG5ldyBGKHRy
dWUpKS5pZCcsICAiJ3VuZGVmaW5lZCciKTsKLQotdmFyIGVycm9yU3RhY2s7Ci0KLXZhciBQYXJl
bnRDbGFzcyA9IGNsYXNzIFBhcmVudENsYXNzIHsKLSAgY29uc3RydWN0b3IoKSB7Ci0gICAgdHJ5
IHsKLSAgICAgIHRoaXMuaWRWYWx1ZSA9IHRlc3RWYWx1ZTsKLSAgICAgIHRocm93IG5ldyBFcnJv
cignRXJyb3InKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICBlcnJvclN0YWNrICA9IGUuc3Rh
Y2s7Ci0gICAgfQotICB9Ci19OwotCi12YXIgQ2hpbGRDbGFzcyA9IGNsYXNzIENoaWxkQ2xhc3Mg
ZXh0ZW5kcyBQYXJlbnRDbGFzcyB7Ci0gIGNvbnN0cnVjdG9yICgpIHsKLSAgICB2YXIgYXJyb3dJ
bkNoaWxkQ29uc3RydWN0b3IgPSAoKSA9PiB7Ci0gICAgICB2YXIgbmVzdGVkQXJyb3cgPSAoKSA9
PiB7Ci0gICAgICAgIHN1cGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIG5lc3RlZEFycm93KCk7Ci0g
ICAgfTsKLQotICAgIGFycm93SW5DaGlsZENvbnN0cnVjdG9yKCk7Ci0gIH0KLX07Ci0KLXZhciBj
ID0gbmV3IENoaWxkQ2xhc3MoKTsKLQotdmFyIGluZGV4T2ZQYXJlbnRDbGFzc0luU3RhY2tFcnJv
ciA9IGVycm9yU3RhY2suaW5kZXhPZignUGFyZW50Q2xhc3MnKTsKLXZhciBpbmRleE9mbmVzdGVk
QXJyb3dJblN0YWNrRXJyb3IgPSBlcnJvclN0YWNrLmluZGV4T2YoJ25lc3RlZEFycm93Jyk7Ci12
YXIgaW5kZXhPZmFycm93SW5DaGlsZENvbnN0cnVjdG9ySW5TdGFja0Vycm9yID0gZXJyb3JTdGFj
ay5pbmRleE9mKCdhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvcicpOwotdmFyIGluZGV4T2ZDaGlsZENs
YXNzSW5TdGFja0Vycm9yID0gZXJyb3JTdGFjay5pbmRleE9mKCdDaGlsZENsYXNzJyk7Ci0KLXNo
b3VsZEJlVHJ1ZSgiaW5kZXhPZlBhcmVudENsYXNzSW5TdGFja0Vycm9yIDwgaW5kZXhPZm5lc3Rl
ZEFycm93SW5TdGFja0Vycm9yIik7Ci1zaG91bGRCZVRydWUoImluZGV4T2ZuZXN0ZWRBcnJvd0lu
U3RhY2tFcnJvciA8IGluZGV4T2ZhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluU3RhY2tFcnJvciIp
Owotc2hvdWxkQmVUcnVlKCJpbmRleE9mYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJy
b3IgPCBpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciIpOwotc2hvdWxkQmVUcnVlKCJpbmRl
eE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciA+IDAiKTsKLQotc2hvdWxkQmVUcnVlKCJpbmRleE9m
UGFyZW50Q2xhc3NJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmluZGV4T2YoJ1BhcmVu
dENsYXNzJywgaW5kZXhPZlBhcmVudENsYXNzSW5TdGFja0Vycm9yICsgMSkgPT09IC0xIik7Ci1z
aG91bGRCZVRydWUoImluZGV4T2ZuZXN0ZWRBcnJvd0luU3RhY2tFcnJvciA+IC0xICYmIGVycm9y
U3RhY2suaW5kZXhPZignbmVzdGVkQXJyb3cnLCBpbmRleE9mbmVzdGVkQXJyb3dJblN0YWNrRXJy
b3IgKyAxKSA9PT0gLTEiKTsKLXNob3VsZEJlVHJ1ZSgiaW5kZXhPZmFycm93SW5DaGlsZENvbnN0
cnVjdG9ySW5TdGFja0Vycm9yID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCdhcnJvd0luQ2hp
bGRDb25zdHJ1Y3RvcicsIGluZGV4T2ZhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluU3RhY2tFcnJv
ciArIDEpID09PSAtMSIpOwotc2hvdWxkQmVUcnVlKCJpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tF
cnJvciA+IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignQ2hpbGRDbGFzcycsIGluZGV4T2ZDaGls
ZENsYXNzSW5TdGFja0Vycm9yICsgMSkgPT09IC0xIik7Ci0KLXZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tdGR6LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tdGR6LmpzCmluZGV4IGI0MWFhNjcwZjQ0NGM2ODBjZDkyZDQ5MmNiYWFkNWRiODkwNjY5NTYu
LmFhZjU4ZmM2NTEzZWRhYmRlMWRkNjUwNzQ5NmFlODY0YjYxMWZmZjkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcworKysgYi9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMKQEAgLTEsMjAgKzEs
MTMgQEAKIGRlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6
Jyk7CiAKLXZhciBBID0gY2xhc3MgQSB7Ci0gIGNvbnN0cnVjdG9yKCkgewotICAgIHRoaXMuaWQg
PSAnYSc7Ci0gIH0KLX07Ci0KK3ZhciBBID0gY2xhc3MgQSB7IH07CiB2YXIgQiA9IGNsYXNzIEIg
ZXh0ZW5kcyBBIHsKICAgY29uc3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7Ci0gICAg
dmFyIGYgPSAoKSA9PiB0aGlzOwogICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKLSAg
ICAgIGYoKTsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKICAgICAgIHN1cGVyKCk7CiAgICAg
fSBlbHNlIHsKICAgICAgIHN1cGVyKCk7Ci0gICAgICBmKCk7CiAgICAgfQogICB9CiB9OwpAQCAt
MjgsNjUgKzIxLDYgQEAgdHJ5IHsKIAogc2hvdWxkQmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1
ZScpOwogCi12YXIgYSA9IG5ldyBCKGZhbHNlKTsKLQotdmFyIEQgPSBjbGFzcyBEIGV4dGVuZHMg
QSB7Ci0gIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlciwgcmV0dXJuVGhpcykgewot
ICAgIHZhciBmID0gKCkgPT4gcmV0dXJuVGhpcyA/IHRoaXMgOiB7fTsKLSAgICBpZiAoYWNjZXNz
VGhpc0JlZm9yZVN1cGVyKSB7Ci0gICAgICBsZXQgdmFsID0gZigpOwotICAgICAgc3VwZXIoKTsK
LSAgICB9IGVsc2UgewotICAgICAgc3VwZXIoKTsKLSAgICAgIGxldCB2YWwgPSBmKCk7Ci0gICAg
fQotICB9Ci19OwotCi1pc1JlZmVyZW5jZUVycm9yID0gZmFsc2U7Ci10cnkgewotICAgICAgbmV3
IEQodHJ1ZSwgdHJ1ZSk7Ci19IGNhdGNoIChlKSB7Ci0gICAgICBpc1JlZmVyZW5jZUVycm9yID0g
ZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOwotfQotCi1zaG91bGRCZSgnaXNSZWZlcmVuY2VF
cnJvcicsICd0cnVlJyk7Ci0KLXZhciBkID0gbmV3IEQoZmFsc2UsIHRydWUpOwotc2hvdWxkQmUo
J2QuaWQnLCAiJ2EnIik7Ci12YXIgZSA9IG5ldyBEKGZhbHNlLCBmYWxzZSk7Ci1zaG91bGRCZSgn
ZS5pZCcsICInYSciKTsKLXZhciBmID0gbmV3IEQodHJ1ZSwgZmFsc2UpOwotc2hvdWxkQmUoJ2Yu
aWQnLCAiJ2EnIik7Ci0KLXZhciBHID0gY2xhc3MgRyBleHRlbmRzIEEgewotICBjb25zdHJ1Y3Rv
cihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIsIHJldHVyblRoaXMpIHsKLSAgICB2YXIgZiA9ICgpID0+
IHJldHVyblRoaXMgPyAoKCkgPT4gdGhpcyApIDogKCgpPT57fSk7Ci0gICAgbGV0IGFmID0gZigp
OwotICAgIGlmIChhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKLSAgICAgIGxldCByZXN1bHQgPSBh
ZigpOwotICAgICAgc3VwZXIoKTsKLSAgICB9IGVsc2UgewotICAgICAgc3VwZXIoKTsKLSAgICAg
IGxldCByZXN1bHQgPSBhZigpOwotICAgIH0KLSAgfQotfTsKLQotdHJ5IHsKLSAgICAgIG5ldyBH
KHRydWUsIHRydWUpOwotfSBjYXRjaCAoZSkgewotICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgaXNS
ZWZlcmVuY2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcjsKLX0KLQotc2hvdWxk
QmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOwotCi12YXIgZyA9IG5ldyBHKGZhbHNlLCB0
cnVlKTsKLXNob3VsZEJlKCdnLmlkJywgIidhJyIpOwotdmFyIGggPSBuZXcgRyhmYWxzZSwgZmFs
c2UpOwotc2hvdWxkQmUoJ2guaWQnLCAiJ2EnIik7Ci12YXIgaSA9IG5ldyBHKHRydWUsIGZhbHNl
KTsKLXNob3VsZEJlKCdpLmlkJywgIidhJyIpOwordmFyIGUgPSBuZXcgQihmYWxzZSk7CiAKIHZh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="291751"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="291752"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>