<?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>17059</bug_id>
          
          <creation_ts>2008-01-29 00:15:30 -0800</creation_ts>
          <short_desc>ASSERT when trying to select text in Acid3</short_desc>
          <delta_ts>2008-01-29 00:20:37 -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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>17004</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>68538</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-29 00:15:30 -0800</bug_when>
    <thetext>See /usr/include/servers/bootstrap_defs.h for the error codes.
ASSERTION FAILED: prev != *this
(/Stuff/Projects/WebKit/WebCore/editing/VisiblePosition.cpp:85 WebCore::VisiblePosition WebCore::VisiblePosition::previous(bool) const)

Process:         Safari [23844]
Path:            /Applications/Safari.app/Contents/MacOS/Safari
Identifier:      com.apple.Safari
Version:         3.0.4 (5523.10.6)
Build Info:      WebBrowser-55231006~1
Code Type:       X86 (Native)
Parent Process:  perl [23841]

Date/Time:       2008-01-29 00:14:37.893 -0800
OS Version:      Mac OS X 10.5.1 (9B18)
Report Version:  6

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef
Crashed Thread:  0

Thread 0 Crashed:
0   com.apple.WebCore             	0x01f8efc5 WebCore::VisiblePosition::previous(bool) const + 169 (VisiblePosition.cpp:85)
1   com.apple.WebCore             	0x02000b40 WebCore::positionAvoidingFirstPositionInTable(WebCore::VisiblePosition const&amp;) + 38 (visible_units.cpp:271)
2   com.apple.WebCore             	0x02000d38 WebCore::startPositionForLine(WebCore::VisiblePosition const&amp;) + 426 (visible_units.cpp:321)
3   com.apple.WebCore             	0x02000d5a WebCore::startOfLine(WebCore::VisiblePosition const&amp;) + 18 (visible_units.cpp:328)
4   com.apple.WebCore             	0x02000fb4 WebCore::inSameLine(WebCore::VisiblePosition const&amp;, WebCore::VisiblePosition const&amp;) + 50 (visible_units.cpp:415)
5   com.apple.WebCore             	0x01f8ea0f WebCore::VisiblePosition::init(WebCore::Position const&amp;, WebCore::EAffinity) + 149 (VisiblePosition.cpp:61)
6   com.apple.WebCore             	0x01f8eacd WebCore::VisiblePosition::VisiblePosition(WebCore::Node*, int, WebCore::EAffinity) + 133 (VisiblePosition.cpp:51)
7   com.apple.WebCore             	0x01f8eb04 WebCore::VisiblePosition::VisiblePosition(WebCore::Node*, int, WebCore::EAffinity) + 38 (VisiblePosition.cpp:52)
8   com.apple.WebCore             	0x01e52b99 WebCore::RenderText::positionForCoordinates(int, int) + 885 (RenderText.cpp:296)
9   com.apple.WebCore             	0x01b7cfaf WebCore::RenderObject::positionForPoint(WebCore::IntPoint const&amp;) + 77 (RenderObject.h:523)
10  com.apple.WebCore             	0x01b77b3d WebCore::EventHandler::handleMousePressEventSingleClick(WebCore::MouseEventWithHitTestResults const&amp;) + 443 (EventHandler.cpp:260)
11  com.apple.WebCore             	0x01b783c6 WebCore::EventHandler::handleMousePressEvent(WebCore::MouseEventWithHitTestResults const&amp;) + 680 (EventHandler.cpp:344)
12  com.apple.WebCore             	0x01b7cce7 WebCore::EventHandler::handleMousePressEvent(WebCore::PlatformMouseEvent const&amp;) + 1717 (EventHandler.cpp:905)
13  com.apple.WebCore             	0x01b80ff8 WebCore::EventHandler::mouseDown(NSEvent*) + 554 (EventHandlerMac.mm:480)
14  com.apple.WebKit              	0x001d0ced -[WebHTMLView mouseDown:] + 499 (WebHTMLView.mm:2979)
15  com.apple.AppKit              	0x9539cd9b -[NSWindow sendEvent:] + 5362
16  com.apple.Safari              	0x000329d3 0x1000 + 203219
17  com.apple.AppKit              	0x95369a2c -[NSApplication sendEvent:] + 2766
18  com.apple.Safari              	0x000324a8 0x1000 + 201896
19  com.apple.AppKit              	0x952c7705 -[NSApplication run] + 847
20  com.apple.AppKit              	0x952949ba NSApplicationMain + 574
21  com.apple.Safari              	0x00002876 0x1000 + 6262

Thread 1:
0   libSystem.B.dylib             	0x922a9ace __semwait_signal + 10
1   libSystem.B.dylib             	0x922d3ced pthread_cond_wait$UNIX2003 + 73
2   com.apple.WebCore             	0x01f852bf WebCore::ThreadCondition::wait(WebCore::Mutex&amp;) + 39 (ThreadingPthreads.cpp:184)
3   com.apple.WebCore             	0x01c5417b WebCore::IconDatabase::syncThreadMainLoop() + 641 (IconDatabase.cpp:1313)
4   com.apple.WebCore             	0x01c55996 WebCore::IconDatabase::iconDatabaseSyncThread() + 1198 (IconDatabase.cpp:1015)
5   com.apple.WebCore             	0x01c559c5 WebCore::IconDatabase::iconDatabaseSyncThreadStart(void*) + 23 (IconDatabase.cpp:919)
6   libSystem.B.dylib             	0x922d3075 _pthread_start + 321
7   libSystem.B.dylib             	0x922d2f32 thread_start + 34

Thread 2:
0   libSystem.B.dylib             	0x922f1f5a select$DARWIN_EXTSN + 10
1   libSystem.B.dylib             	0x922d3075 _pthread_start + 321
2   libSystem.B.dylib             	0x922d2f32 thread_start + 34

Thread 3:
0   libSystem.B.dylib             	0x922a28e6 mach_msg_trap + 10
1   libSystem.B.dylib             	0x922aa0dc mach_msg + 72
2   com.apple.CoreFoundation      	0x935c10fe CFRunLoopRunSpecific + 1806
3   com.apple.CoreFoundation      	0x935c1d38 CFRunLoopRunInMode + 88
4   com.apple.CFNetwork           	0x938487ba CFURLCacheWorkerThread(void*) + 396
5   libSystem.B.dylib             	0x922d3075 _pthread_start + 321
6   libSystem.B.dylib             	0x922d2f32 thread_start + 34

Thread 4:
0   libSystem.B.dylib             	0x922a28e6 mach_msg_trap + 10
1   libSystem.B.dylib             	0x922aa0dc mach_msg + 72
2   com.apple.CoreFoundation      	0x935c10fe CFRunLoopRunSpecific + 1806
3   com.apple.CoreFoundation      	0x935c1d38 CFRunLoopRunInMode + 88
4   com.apple.Foundation          	0x94e27560 +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] + 320
5   com.apple.Foundation          	0x94dc404d -[NSThread main] + 45
6   com.apple.Foundation          	0x94dc3bf4 __NSThread__main__ + 308
7   libSystem.B.dylib             	0x922d3075 _pthread_start + 321
8   libSystem.B.dylib             	0x922d2f32 thread_start + 34

Thread 0 crashed with X86 Thread State (32-bit):
  eax: 0xbbadbeef  ebx: 0x01f8ef28  ecx: 0x00000000  edx: 0x00000000
  edi: 0xbfffe9a0  esi: 0x00000001  ebp: 0xbfffe698  esp: 0xbfffe650
   ss: 0x0000001f  efl: 0x00010286  eip: 0x01f8efc5   cs: 0x00000017
   ds: 0x0000001f   es: 0x0000001f   fs: 0x00000000   gs: 0x00000037
  cr2: 0xbbadbeef

Binary Images:
    0x1000 -   0x12efef  com.apple.Safari 3.0.4 (5523.10.6) &lt;53d219fd878088543fd2e1af460bed18&gt; /Applications/Safari.app/Contents/MacOS/Safari
  0x176000 -   0x276fe3  com.apple.WebKit 525.7+ (525.7+) &lt;bce01ac153df95931e1e297ebe71943b&gt; /Stuff/Projects/build/Debug/WebKit.framework/Versions/A/WebKit
  0x400000 -   0x40eff8  SyndicationUI ??? (???) &lt;8adc35e1eb5001dead3c18ee25f2e8db&gt; /System/Library/PrivateFrameworks/SyndicationUI.framework/Versions/A/SyndicationUI
  0x41d000 -   0x4e9fe7  com.apple.JavaScriptCore 525.7+ (525.7+) &lt;6efb2b305cbdc7c65e48c136adf87ff6&gt; /Stuff/Projects/build/Debug/JavaScriptCore.framework/Versions/A/JavaScriptCore
  0x6b7000 -   0x6b9fff +net.culater.SIMBL 0.8.2 (8) /Library/InputManagers/SIMBL/SIMBL.bundle/Contents/MacOS/SIMBL
 0x1a04000 -  0x22ccff2  com.apple.WebCore 525.7+ (525.7+) &lt;cb3bdc82e311855139a77de358b59b62&gt; /Stuff/Projects/build/Debug/WebCore.framework/Versions/A/WebCore
 0x3408000 -  0x34eeff7  com.apple.RawCamera.bundle 2.0 (2.0) /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera
 0x37c4000 -  0x37c9fff  com.apple.DictionaryServiceComponent 1.1 (1.1) &lt;8edc1180f52db18e9ddfb4e95debe61b&gt; /System/Library/Components/DictionaryService.component/Contents/MacOS/DictionaryService
 0x37d6000 -  0x37dbff3  libCGXCoreImage.A.dylib ??? (???) &lt;978986709159e5fe9e094df5efddac1d&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGXCoreImage.A.dylib
0x1907e000 - 0x1907fff3  ATSHI.dylib ??? (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/ATSHI.dylib
0x19d4c000 - 0x19db9fff +com.DivXInc.DivXDecoder 6.6.0 (6.6.0) /Library/QuickTime/DivX Decoder.component/Contents/MacOS/DivX Decoder
0x19ed9000 - 0x19ed9ffe  com.apple.JavaPluginCocoa 12.0.0 (12.0.0) &lt;02a9f23a8bfc902c32ac0adfb66d6816&gt; /Library/Internet Plug-Ins/JavaPluginCocoa.bundle/Contents/MacOS/JavaPluginCocoa
0x19edf000 - 0x19ee6ffd  com.apple.JavaVM 12.0.0 (12.0.0) &lt;44b9536fe4d7c7fcb3506adb695a180f&gt; /System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM
0x8fe00000 - 0x8fe2d883  dyld 95.3 (???) &lt;81592e798780564b5d46b988f7ee1a6a&gt; /usr/lib/dyld
0x90003000 - 0x90004fef  libmathCommon.A.dylib ??? (???) /usr/lib/system/libmathCommon.A.dylib
0x90005000 - 0x9030bfff  com.apple.HIToolbox 1.5.0 (???) &lt;1b872a7151ee3f80c9c736a3e46d00d9&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x9035a000 - 0x9035efff  libGIF.dylib ??? (???) &lt;d4234e6f5e5f530bdafb969157f1f17b&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
0x9035f000 - 0x9035fffd  com.apple.Accelerate 1.4 (Accelerate 1.4) /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
0x90392000 - 0x903d1fef  libTIFF.dylib ??? (???) &lt;6d0f80e9d4d81f3f64c876aca005bd53&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
0x90660000 - 0x90676fff  com.apple.DictionaryServices 1.0.0 (1.0.0) &lt;ad0aa0252e3323d182e17f50defe56fc&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
0x90677000 - 0x906b1ff7  com.apple.coreui 0.1 (60) /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
0x906b2000 - 0x906b3ffc  libffi.dylib ??? (???) &lt;a3b573eb950ca583290f7b2b4c486d09&gt; /usr/lib/libffi.dylib
0x906b4000 - 0x906b4ffd  com.apple.Accelerate.vecLib 3.4 (vecLib 3.4) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
0x906b5000 - 0x9070fff7  com.apple.CoreText 2.0.0 (???) &lt;7fa39cd5bc847615ec02e7c7a37c0508&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreText.framework/Versions/A/CoreText
0x90727000 - 0x90729fff  com.apple.securityhi 3.0 (30817) &lt;2b2854123fed609d1820d2779e2e0963&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
0x9072a000 - 0x90734feb  com.apple.audio.SoundManager 3.9.2 (3.9.2) &lt;0f2ba6e891d3761212cf5a5e6134d683&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CarbonSound.framework/Versions/A/CarbonSound
0x90735000 - 0x90737fff  com.apple.CrashReporterSupport 10.5.0 (156) &lt;3088b785b10d03504ed02f3fee5d3aab&gt; /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
0x90898000 - 0x90ca8fef  libBLAS.dylib ??? (???) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
0x90ca9000 - 0x90d50fff  com.apple.QD 3.11.50 (???) &lt;e2f71720ae1dad06a8883ac80775b21a&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
0x90d51000 - 0x90d87fef  libtidy.A.dylib ??? (???) &lt;e4d3e7399fb83d7f145f9b4ec8196242&gt; /usr/lib/libtidy.A.dylib
0x90d88000 - 0x90dacfeb  libssl.0.9.7.dylib ??? (???) &lt;acee7fc534674498dcac211318aa23e8&gt; /usr/lib/libssl.0.9.7.dylib
0x90dfa000 - 0x90e4aff7  com.apple.HIServices 1.6.0 (???) &lt;d74aa73e4cfd30a08fb169198a8d2539&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
0x90e4b000 - 0x90e69ff3  com.apple.DirectoryService.Framework 3.5 (3.5) &lt;899d8c9ee31b004a6ff73dab88982b1a&gt; /System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService
0x90f43000 - 0x90fb7fef  libvMisc.dylib ??? (???) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
0x90fb8000 - 0x910dcfe3  com.apple.audio.toolbox.AudioToolbox 1.5 (1.5) /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
0x910dd000 - 0x910e4fff  com.apple.agl 3.0.9 (AGL-3.0.9) &lt;7dac4a7cb0de2f6d08ae71c1249379e3&gt; /System/Library/Frameworks/AGL.framework/Versions/A/AGL
0x910e5000 - 0x910e5ffd  com.apple.vecLib 3.4 (vecLib 3.4) /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
0x9112d000 - 0x92076fea  com.apple.QuickTimeComponents.component 7.4 (92) /System/Library/QuickTime/QuickTimeComponents.component/Contents/MacOS/QuickTimeComponents
0x92077000 - 0x9207efe9  libgcc_s.1.dylib ??? (???) &lt;f53c808e87d1184c0f9df63aef53ce0b&gt; /usr/lib/libgcc_s.1.dylib
0x9207f000 - 0x920a6fff  libcups.2.dylib ??? (???) &lt;5521498e8902ddd0b15cfaa7db384e29&gt; /usr/lib/libcups.2.dylib
0x920a7000 - 0x920ecfef  com.apple.Metadata 10.5.0 (398) &lt;4fd74fba0062c2e08ec4b1c10b40ff63&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
0x920ed000 - 0x9217fff3  com.apple.ApplicationServices.ATS 3.0 (???) &lt;fb5f572243dbc370a0ea5efc8e81ae11&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
0x92180000 - 0x9218bfe7  libCSync.A.dylib ??? (???) &lt;df82fc093e498a9eb5490761cb292218&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCSync.A.dylib
0x922a2000 - 0x923fcfe3  libSystem.B.dylib ??? (???) &lt;8ecc83dc0399be3946f7a46e88cf4bbb&gt; /usr/lib/libSystem.B.dylib
0x923fd000 - 0x92484ff7  libsqlite3.0.dylib ??? (???) &lt;273efcb717e89c21207c851d7d33fda4&gt; /usr/lib/libsqlite3.0.dylib
0x92485000 - 0x92537ffb  libcrypto.0.9.7.dylib ??? (???) &lt;330b0e48e67faffc8c22dfc069ca7a47&gt; /usr/lib/libcrypto.0.9.7.dylib
0x92538000 - 0x9253fffe  libbsm.dylib ??? (???) &lt;d25c63378a5029648ffd4b4669be31bf&gt; /usr/lib/libbsm.dylib
0x92540000 - 0x92547ff7  libCGATS.A.dylib ??? (???) &lt;9b29a5500efe01cc3adea67bbc42568e&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGATS.A.dylib
0x92548000 - 0x92906fea  libLAPACK.dylib ??? (???) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
0x92907000 - 0x92944ff7  libGLImage.dylib ??? (???) &lt;202d73e6a4688fc06ff11b71910c2ce7&gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
0x92bae000 - 0x92e87fe7  com.apple.CoreServices.CarbonCore 783 (783) &lt;8370e664eeb25edc98d5c1f5405b06ae&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
0x92e88000 - 0x92eacfff  libxslt.1.dylib ??? (???) &lt;4933ddc7f6618743197aadc85b33b5ab&gt; /usr/lib/libxslt.1.dylib
0x92ead000 - 0x92eb6fff  com.apple.speech.recognition.framework 3.7.24 (3.7.24) &lt;d3180f9edbd9a5e6f283d6156aa3c602&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
0x92eb7000 - 0x9354efef  com.apple.CoreGraphics 1.351.0 (???) &lt;7a6f399039eed6dbe845c169f7d21a70&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
0x9354f000 - 0x93681fe7  com.apple.CoreFoundation 6.5 (476) &lt;8bfebc0dbad6fc33bea0fa00a1b9ec37&gt; /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x93682000 - 0x93692fff  com.apple.speech.synthesis.framework 3.6.59 (3.6.59) &lt;4ffef145fad3d4d787e0c33eab26b336&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
0x93693000 - 0x9369bfff  com.apple.DiskArbitration 2.2 (2.2) &lt;1551b2af557fdf6f368f93e093933852&gt; /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
0x9369c000 - 0x9372ffff  com.apple.ink.framework 101.3 (86) &lt;bf3fa8927b4b8baae92381a976fd2079&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
0x93730000 - 0x937f7ff2  com.apple.vImage 3.0 (3.0) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
0x9383d000 - 0x938b4fe3  com.apple.CFNetwork 220 (221) &lt;972a41911805859205b057a6f5b91e8d&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x9395f000 - 0x93973ff3  com.apple.ImageCapture 4.0 (5.0.0) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
0x93974000 - 0x93977fff  com.apple.help 1.1 (36) &lt;b507b08e484cb89033e9cf23062d77de&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
0x93978000 - 0x93978ff8  com.apple.Cocoa 6.5 (???) &lt;e064f94d969ce25cb7de3cfb980c3249&gt; /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
0x93979000 - 0x9397bff5  libRadiance.dylib ??? (???) &lt;20eadb285da83df96c795c2c5fa20590&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
0x9397c000 - 0x93a60ffb  com.apple.CoreData 100 (185) &lt;a4e63784275e25e62f57e75e0af0b94d&gt; /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
0x93a61000 - 0x93ae0ff5  com.apple.SearchKit 1.2.0 (1.2.0) &lt;277b460da86bc222785159fe77e2e2ed&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x93ae1000 - 0x93b5bff8  com.apple.print.framework.PrintCore 5.5 (245) &lt;9441d178f4b430cf92b67bf346646693&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
0x93b5c000 - 0x93bd8feb  com.apple.audio.CoreAudio 3.1.0 (3.1) &lt;70bb7c657061631491029a61babe0b26&gt; /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
0x93bd9000 - 0x93bd9ff8  com.apple.ApplicationServices 34 (34) &lt;8f910fa65f01d401ad8d04cc933cf887&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
0x93bda000 - 0x93c04fef  libauto.dylib ??? (???) &lt;d468bc4a8a69343f1748c293db1b57fb&gt; /usr/lib/libauto.dylib
0x93c05000 - 0x93dcefef  com.apple.security 5.0.1 (32736) &lt;8c9eda0fcc1d8a571543025ac900715f&gt; /System/Library/Frameworks/Security.framework/Versions/A/Security
0x93dcf000 - 0x93dcfffb  com.apple.installserver.framework 1.0 (8) /System/Library/PrivateFrameworks/InstallServer.framework/Versions/A/InstallServer
0x93dd0000 - 0x93e29fff  libGLU.dylib ??? (???) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
0x93e55000 - 0x93e63ffd  libz.1.dylib ??? (???) &lt;5ddd8539ae2ebfd8e7cc1c57525385c7&gt; /usr/lib/libz.1.dylib
0x93f2c000 - 0x93fb8ff7  com.apple.LaunchServices 286 (286) &lt;72b15e7a01e42d510f0339e90113d5d6&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
0x93fb9000 - 0x94098fff  libobjc.A.dylib ??? (???) &lt;5eda47fec2d0e7853b3506aa1fd2dafa&gt; /usr/lib/libobjc.A.dylib
0x945b0000 - 0x945f1fe7  libRIP.A.dylib ??? (???) &lt;bdc6d70bf4ed3dace321b4ff76a353b3&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib
0x945f2000 - 0x94770fff  com.apple.AddressBook.framework 4.1 (687) &lt;3f005092d08e963eabe8f7f66c09cc1e&gt; /System/Library/Frameworks/AddressBook.framework/Versions/A/AddressBook
0x94771000 - 0x94777fff  com.apple.print.framework.Print 218 (220) &lt;c35172175abbe554ddadd9b6401351fa&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
0x94778000 - 0x94778ffc  com.apple.audio.units.AudioUnit 1.5 (1.5) /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
0x94779000 - 0x947d5ff7  com.apple.htmlrendering 68 (1.1.3) &lt;fe87a9dede38db00e6c8949942c6bd4f&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HTMLRendering.framework/Versions/A/HTMLRendering
0x94846000 - 0x94bdcff7  com.apple.QuartzCore 1.5.1 (1.5.1) &lt;deb61cbeb3f734a1b2f4669f6268b9de&gt; /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
0x94c4a000 - 0x94c68fff  libresolv.9.dylib ??? (???) &lt;54e6a08c2f108bdf5916fb483d51961b&gt; /usr/lib/libresolv.9.dylib
0x94c69000 - 0x94d19fff  edu.mit.Kerberos 6.0.11 (6.0.11) &lt;33c25789baedcd70a7e24881775dd9ad&gt; /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
0x94d1a000 - 0x94d49fe3  com.apple.AE 402 (402) &lt;994ba8e884aefe7bf1fc5987df099e7b&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x94d4a000 - 0x94d5affc  com.apple.LangAnalysis 1.6.4 (1.6.4) &lt;cbeb17ab39f28351fe2ab5b82bf465bc&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
0x94d8c000 - 0x94db9feb  libvDSP.dylib ??? (???) &lt;a26683d121ee0f96df9a9d0bfca36049&gt; /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
0x94dba000 - 0x95033fe7  com.apple.Foundation 6.5.1 (677.1) &lt;85ac18c7cd454378db6122bea0c00965&gt; /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x95034000 - 0x95135fff  com.apple.PubSub 1.0.1 (59) /System/Library/Frameworks/PubSub.framework/Versions/A/PubSub
0x95148000 - 0x9528dff7  com.apple.ImageIO.framework 2.0.0 (2.0.0) &lt;154d4d8cda2bd99518cbabc9f2d69833&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
0x9528e000 - 0x95a88fef  com.apple.AppKit 6.5 (949) &lt;f8d0f6d0bb5ac092f48f42ca684bdb54&gt; /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
0x95a89000 - 0x95a94ff9  com.apple.helpdata 1.0 (14) /System/Library/PrivateFrameworks/HelpData.framework/Versions/A/HelpData
0x95a95000 - 0x95aa4ffe  com.apple.DSObjCWrappers.Framework 1.2 (1.2) &lt;f5b58d1d3a855a63d493ccbec417a1e9&gt; /System/Library/PrivateFrameworks/DSObjCWrappers.framework/Versions/A/DSObjCWrappers
0x95b9a000 - 0x95b9ffff  com.apple.backup.framework 1.0 (1.0) /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
0x95c10000 - 0x95cc6fe3  com.apple.CoreServices.OSServices 210.2 (210.2) &lt;4ed69f07fc0f211ab32d1ee96e281fc2&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
0x95cc7000 - 0x95d24ffb  libstdc++.6.dylib ??? (???) &lt;04b812dcec670daa8b7d2852ab14be60&gt; /usr/lib/libstdc++.6.dylib
0x95d25000 - 0x95d3bfe7  com.apple.CoreVideo 1.5.0 (1.5.0) &lt;7e010557527a0e6d49147c297d16850a&gt; /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
0x95d3c000 - 0x95ddafef  com.apple.QuickTimeImporters.component 7.4 (92) /System/Library/QuickTime/QuickTimeImporters.component/Contents/MacOS/QuickTimeImporters
0x95ddb000 - 0x95de8fe7  com.apple.opengl 1.5.5 (1.5.5) &lt;aa08b52d2a84b44dc6ee5d544a53fe8a&gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
0x95dea000 - 0x95e2cfef  com.apple.NavigationServices 3.5.1 (161) &lt;cc6bd78eabf1e2e7166914e9f12f5850&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/NavigationServices.framework/Versions/A/NavigationServices
0x95fe9000 - 0x96098fff  com.apple.DesktopServices 1.4.3 (1.4.3) &lt;66d5ed56111c43d234e235d365d02469&gt; /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
0x960db000 - 0x960e0fff  com.apple.CommonPanels 1.2.4 (85) &lt;ea0665f57cd267609466ed8b2b20e893&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
0x960f9000 - 0x96121ff7  com.apple.shortcut 1 (1.0) &lt;057783867138902b52bc0941fedb74d1&gt; /System/Library/PrivateFrameworks/Shortcut.framework/Versions/A/Shortcut
0x96127000 - 0x9613ffff  com.apple.openscripting 1.2.6 (???) &lt;b8e553df643f2aec68fa968b3b459b2b&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
0x96140000 - 0x9615bffb  libPng.dylib ??? (???) &lt;b6abcac36ec7654ff3e1cfa786b0117b&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
0x96170000 - 0x961bafe1  com.apple.securityinterface 3.0 (32532) &lt;f521dae416ce7a3bdd594b0d4e2fb517&gt; /System/Library/Frameworks/SecurityInterface.framework/Versions/A/SecurityInterface
0x961bb000 - 0x961bbfff  com.apple.Carbon 136 (136) &lt;98a5e3bc0c4fa44bbb09713bb88707fe&gt; /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
0x961bc000 - 0x961bcffa  com.apple.CoreServices 32 (32) &lt;2fcc8f3bd5bbfc000b476cad8e6a3dd2&gt; /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
0x96279000 - 0x96303fff  com.apple.framework.IOKit 1.5.1 (???) &lt;5176a7383151a19c962334009fef2c6d&gt; /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x96304000 - 0x96336fff  com.apple.LDAPFramework 1.4.3 (106) &lt;3a5c9df6032143cd6bc2658a9d328d8e&gt; /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
0x96337000 - 0x96343ff5  libGL.dylib ??? (???) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
0x96344000 - 0x9647cff7  libicucore.A.dylib ??? (???) &lt;afcea652ff2ec36885b2c81c57d06d4c&gt; /usr/lib/libicucore.A.dylib
0x9647d000 - 0x96548fff  com.apple.ColorSync 4.5.0 (4.5.0) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
0x96549000 - 0x9685dfe2  com.apple.QuickTime 7.4.0 (92) &lt;0d674546d12c65dc5c33dca4c81c315b&gt; /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime
0x9685f000 - 0x96898ffe  com.apple.securityfoundation 3.0 (32768) &lt;1e9885d63ced51f81bc1f39af624637d&gt; /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
0x96899000 - 0x968b8ffa  libJPEG.dylib ??? (???) &lt;0cfb80109d624beb9ceb3c43b6c5ec10&gt; /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
0x968b9000 - 0x968effff  com.apple.SystemConfiguration 1.9.0 (1.9.0) &lt;7919d9588c3b0d556646e555b7193f1f&gt; /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x968f0000 - 0x96dbcffe  libGLProgrammability.dylib ??? (???) &lt;e8bc0af671427cf2b6279a035805a086&gt; /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
0x96dbd000 - 0x96dccfff  libsasl2.2.dylib ??? (???) &lt;b9e1ca0b6612e280b6cbea6df0eec5f6&gt; /usr/lib/libsasl2.2.dylib
0x96dcd000 - 0x96eaeff7  libxml2.2.dylib ??? (???) &lt;450ec38b57fb46013847cce851001a2f&gt; /usr/lib/libxml2.2.dylib
0x96eaf000 - 0x96f14ffb  com.apple.ISSupport 1.6 (34) /System/Library/PrivateFrameworks/ISSupport.framework/Versions/A/ISSupport
0xba900000 - 0xba916fff  libJapaneseConverter.dylib ??? (???) &lt;7b0248c392848338f5d6ed093313eeef&gt; /System/Library/CoreServices/Encodings/libJapaneseConverter.dylib
0xfffe8000 - 0xfffebfff  libobjc.A.dylib ??? (???) /usr/lib/libobjc.A.dylib
0xffff0000 - 0xffff1780  libSystem.B.dylib ??? (???) /usr/lib/libSystem.B.dylib</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68539</commentid>
    <comment_count>1</comment_count>
      <attachid>18756</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-29 00:15:56 -0800</bug_when>
    <thetext>Created attachment 18756
select text to see the ASSERT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68542</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-29 00:20:37 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of 17004 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18756</attachid>
            <date>2008-01-29 00:15:56 -0800</date>
            <delta_ts>2008-01-29 00:15:56 -0800</delta_ts>
            <desc>select text to see the ASSERT</desc>
            <filename>foo.html</filename>
            <type>text/html</type>
            <size>164080</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDov
L3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogPHRpdGxlPlRoZSBBY2lk
MyBUZXN0PC90aXRsZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgc3Rh
cnRUaW1lID0gbmV3IERhdGUoKTsKIDwvc2NyaXB0PgogPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
CiAgLyogc2V0IHNvbWUgYmFzaWMgc3R5bGVzIHNvIHRoYXQgd2UgY2FuIGdldCByZWxpYWJseSBl
eGFjdCByZXN1bHRzICovCiAgKiB7IG1hcmdpbjogMDsgYm9yZGVyOiAxcHggYmx1ZTsgcGFkZGlu
ZzogMDsgYm9yZGVyLXNwYWNpbmc6IDA7IGZvbnQ6IGluaGVyaXQ7IGxpbmUtaGVpZ2h0OiAxLjI7
IGNvbG9yOiBpbmhlcml0OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfQogIDpsaW5rLCA6dmlz
aXRlZCB7IGNvbG9yOiBibHVlOyB9CgogIC8qIGhlYWRlciBhbmQgZ2VuZXJhbCBsYXlvdXQgKi8K
ICBodG1sIHsgZm9udDogMjBweCBBcmlhbCwgc2Fucy1zZXJpZjsgYm9yZGVyOiAyY20gc29saWQg
Z3JheTsgd2lkdGg6IDMyZW07IG1hcmdpbjogMWVtOyB9CiAgOnJvb3QgeyBiYWNrZ3JvdW5kOiBz
aWx2ZXI7IGNvbG9yOiBibGFjazsgYm9yZGVyLXdpZHRoOiAwIDAuMmVtIDAuMmVtIDA7IH0gLyog
bGVmdCBhbmQgdG9wIGNvbnRlbnQgZWRnZXM6IDEqMjBweCA9IDIwcHggKi8KICBib2R5IHsgcGFk
ZGluZzogMmVtIDJlbSAwOyBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LGlW
Qk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FJQUFBQUM2NHBhQUFBQUJHZEJUVUVBQUsl
MkZJTndXSzZRQUFBQWx3U0ZsekFBQUFTQUFBQUVnQVJzbHJQZ0FBQUJ0SlJFRlVPTXRqJTJGTTlB
UG1DaVFPJTJCbzVsSE5vNXBITlZOQk13QWluQUVuSVd3ODlnQUFBQ0o2VkZoMFUyOW1kSGRoY21V
QUFIamFjMHpKVDBwVjhNeE5URThOU2sxTXFRUUFMNXdGMUs0TXFVMEFBQUFBU1VWT1JLNUNZSUkl
M0QpIG5vLXJlcGVhdCB0b3AgcmlnaHQgd2hpdGU7IGJvcmRlcjogc29saWQgMXB4IGJsYWNrOyBt
YXJnaW46IC0wLjJlbSAwIDAgLTAuMmVtOyB9IC8qIGxlZnQgYW5kIHRvcCBjb250ZW50IGVkZ2Vz
OiAyMHB4LTAuMioyMHB4KzFweCsyKjIwcHggPSA1N3B4ICovCiAgaDE6Zmlyc3QtY2hpbGQgeyBm
b250LXNpemU6IDVlbTsgZm9udC13ZWlnaHQ6IGJvbGRlcjsgbWFyZ2luLWJvdHRvbTogLTAuNGVt
OyB0ZXh0LXNoYWRvdzogcmdiYSgxOTIsIDE5MiwgMTkyLCAxLjApIDNweCAzcHg7IH0gLyogKGxl
ZnQ6NTdweCwgdG9wOjU3cHgpICovCiAgI3Jlc3VsdCB7IGZvbnQtd2VpZ2h0OiBib2xkZXI7IHdp
ZHRoOiA1LjY4ZW07IHRleHQtYWxpZ246IHJpZ2h0OyB9CiAgI3Jlc3VsdCB7IGZvbnQtc2l6ZTog
NWVtOyBtYXJnaW46IC0yLjE5ZW0gMCAwOyB9IC8qIChyaWdodDo1N3B4KzUuMio1KjIwcHggPSA1
NzdweCwgdG9wOjU3cHgrMS4yKjUqMjBweC0wLjQqNSoyMHB4KzFweCsxKjQwcHgrMSo0MHB4KzFw
eCsyKjQwcHgrMTUwcHgtMi4xOSo1KjIwcHggPSAyMzBweCkgKi8KICAuaGlkZGVuIHsgdmlzaWJp
bGl0eTogaGlkZGVuOyB9CiAgI3NsYXNoIHsgY29sb3I6IHJlZDsgY29sb3I6IGhzbGEoMCwgMCUs
IDAlLCAxLjApOyB9CiAgI2luc3RydWN0aW9ucyB7IG1hcmdpbi10b3A6IDA7IGZvbnQtc2l6ZTog
MC44ZW07IGNvbG9yOiBncmF5OyBjb2xvcjogLWFjaWQzLWJvZ3VzOyBoZWlnaHQ6IDYuMTI1ZW07
IH0gLyogKGxlZnQ6NTdweCwgdG9wOjIzMHB4KzEuMio1KjIwKzAgPSAzNTBweCkgKi8KICAjaW5z
dHJ1Y3Rpb25zIHsgbWFyZ2luLXJpZ2h0OiAtMjBweDsgcGFkZGluZy1yaWdodDogMjBweDsgYmFj
a2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBQlFBQUFBVUNBSUFBQUFDNjRwYUFBQUFCR2RCVFVFQUFLJTJGSU53V0s2UUFBQUFsd1NGbHpB
QUFBU0FBQUFFZ0FSc2xyUGdBQUFCdEpSRUZVT010aiUyRk05QVBtQ2lRTyUyQm81bEhObzVwSE5W
TkJNd0FpbkFFbklXdzg5Z0FBQUNKNlZGaDBVMjltZEhkaGNtVUFBSGphYzB6SlQwcFY4TXhOVEU4
TlNrMU1xUVFBTDV3RjFLNE1xVTBBQUFBQVNVVk9SSzVDWUlJJTNEKSBuby1yZXBlYXQgdG9wIHJp
Z2h0OyB9CiAgI2luc3RydWN0aW9ucyBzcGFuIHsgZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMjBweDsg
bWFyZ2luLXJpZ2h0OiAtMjBweDsgYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDogMjBweDsgfQog
IEBmb250LWZhY2UgeyBmb250LWZhbWlseTogIkFjaWRBaGVtVGVzdCI7IHNyYzogdXJsKGZvbnQu
dHRmKTsgfQogIG1hcDo6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjBweDsgbGVm
dDogNjQwcHg7IGNvbnRlbnQ6ICJYIjsgYmFja2dyb3VuZDogZnVjaHNpYTsgY29sb3I6IHdoaXRl
OyBmb250OiAyMHB4LzEgQWNpZEFoZW1UZXN0OyB9CiAgaWZyYW1lIHsgZmxvYXQ6IGxlZnQ7IGhl
aWdodDogMDsgd2lkdGg6IDA7IH0gLyogaGlkZSBpZnJhbWVzIGJ1dCBkb24ndCBtYWtlIHRoZW0g
ZGlzcGxheTogbm9uZSAqLwogIG9iamVjdCB7IHBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMTMwLjVw
eDsgdG9wOiA4NC4zcHg7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9IC8qIHNob3cgb2JqZWN0
cyBpZiB0aGV5IGhhdmUgY29udGVudCAqLwogIC5yZW1vdmVkIHsgcG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDgwcHg7IGxlZnQ6IDM4MHB4OyBoZWlnaHQ6IDEwMHB4OyB3aWR0aDogMTAwcHg7IG9w
YWNpdHk6IDA7IH0KCiAgLyogc2V0IHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgbGluZSBvZiBjb2xv
dXJlZCBib3hlcyBzbyB3ZSBjYW4gYWRkIHRoZW0gd2l0aG91dCB0aGUgbGF5b3V0IGNoYW5naW5n
IGhlaWdodCAqLwogIC5idWNrZXRzIHsgZm9udDogMC8wIEFyaWFsLCBzYW5zLXNlcmlmOyB9CiAg
LmJ1Y2tldHMgeyBwYWRkaW5nOiAwIDAgMTUwcHggM3B4OyB9CgogIC8qIHRoZSBuZXh0IHR3byBy
dWxlcyBnaXZlIHRoZSBzaXggY29sb3VyZWQgYmxvY2tzIHRoZWlyIGRlZmF1bHQgc3R5bGVzICh0
aGV5IG1hdGNoIHRoZSBzYW1lIGVsZW1lbnRzKTsgdGhlIHRoaXJkIGhpZGVzIHRoZW0gKi8KICA6
Zmlyc3QtY2hpbGQgKyAqIC5idWNrZXRzIHAgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRp
Y2FsLWFsaWduOiAyZW07IGJvcmRlcjogMmVtIGRvdHRlZCByZWQ7IHBhZGRpbmc6IDEuMGVtIDEu
M2VtOyB9CiAgKiArICogPiAqID4gcCB7IG1hcmdpbjogMCAwLjJlbTsgYm9yZGVyOiAxcHggc29s
aWQgISBpbXBvcnRhbnQ7IH0KICAueiB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfSAvKiBvbmx5IG1h
dGNoZXMgdGhlIGJ1Y2tldHMgd2l0aCBubyBzY29yZSAqLwoKICAvKiBzaXplcyBmb3IgdGhlIHNp
eCBidWNrZXRzICovCiAgI2J1Y2tldDEgeyBmb250LXNpemU6IDIwcHg7IH0KICAjYnVja2V0MiB7
IGZvbnQtc2l6ZTogMjRweDsgfQogICNidWNrZXQzIHsgZm9udC1zaXplOiAyOHB4OyB9CiAgI2J1
Y2tldDQgeyBmb250LXNpemU6IDMycHg7IH0KICAjYnVja2V0NSB7IGZvbnQtc2l6ZTogMzZweDsg
fQogICNidWNrZXQ2IHsgZm9udC1zaXplOiA0MHB4OyB9CgogIC8qIGNvbG91cnMgZm9yIHRoZW0g
Ki8KICAueiwgLnpQLCAuelBQLCAuelBQUCwgLnpQUFBQLCAuelBQUFBQIHsgYmFja2dyb3VuZDog
YmxhY2s7IH0KICAuelBQUFBQUCwgLnpQUFBQUFBQLCAuelBQUFBQUFBQLCAuelBQUFBQUFBQLCAu
elBQUFBQUFBQUCwKICAuelBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBncmV5OyB9CiAgLnpQUFBQ
UFBQUFBQUCwgLnpQUFBQUFBQUFBQUFAsIC56UFBQUFBQUFBQUFBQUCwKICAuelBQUFBQUFBQUFBQ
UFBQLCAuelBQUFBQUFBQUFBQUFBQUCB7IGJhY2tncm91bmQ6IHNpbHZlcjsgfQogICNidWNrZXQx
LnpQUFBQUFBQUFBQUFBQUFBQIHsgYmFja2dyb3VuZDogcmVkOyB9CiAgI2J1Y2tldDIuelBQUFBQ
UFBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBvcmFuZ2U7IH0KICAjYnVja2V0My56UFBQUFBQUFBQ
UFBQUFBQUCB7IGJhY2tncm91bmQ6IHllbGxvdzsgfQogICNidWNrZXQ0LnpQUFBQUFBQUFBQUFBQ
UFBQIHsgYmFja2dyb3VuZDogbGltZTsgfQogICNidWNrZXQ1LnpQUFBQUFBQUFBQUFBQUFBQIHsg
YmFja2dyb3VuZDogYmx1ZTsgfQogICNidWNrZXQ2LnpQUFBQUFBQUFBQUFBQUFBQIHsgYmFja2dy
b3VuZDogcHVycGxlOyB9CgogIC8qIFRoZSBsaW5lLWhlaWdodCBmb3IgdGhlIC5idWNrZXQgZGl2
IGlzIHdvcmtlZCBvdXQgYXMgZm9sbG93czoKICAgKgogICAqIFRoZSBkaXYuYnVja2V0IGVsZW1l
bnQgaGFzIGEgbGluZSBib3ggd2l0aCBhIGZldwogICAqIGlubGluZS1ibG9ja3MuIEVhY2ggaW5s
aW5lLWJsb2NrIGNvbnNpc3RzIG9mOgogICAqCiAgICogICAgIDIuMGVtIHZlcnRpY2FsLWFsaWdu
IGZyb20gYmFzZWxpbmUgdG8gYm90dG9tIG9mIGlubGluZS1ibG9jawogICAqICAgICAxcHggYm90
dG9tIGJvcmRlcgogICAqICAgICAxLjBlbSBib3R0b20gcGFkZGluZwogICAqICAgICAxLjBlbSB0
b3AgcGFkZGluZwogICAqICAgICAxcHggdG9wIGJvcmRlcgogICAqCiAgICogVGhlIGJpZ2dlc3Qg
aW5saW5lLWJsb2NrIGhhcyBmb250LXNpemU6IDQwcHguCiAgICoKICAgKiBUaHVzIHRoZSBkaXN0
YW5jZSBmcm9tIHRoZSBiYXNlbGluZSB0byB0aGUgdG9wIG9mIHRoZSBiaWdnZXN0CiAgICogaW5s
aW5lLWJsb2NrIGlzICgyZW0rMWVtKzFlbSkqMmVtKjIwcHgrMnB4ID0gMTYycHguCiAgICoKICAg
KiBUaGUgbGluZSBib3ggaXRzZWxmIGhhcyBubyBvdGhlciBjb250ZW50cywgYW5kIGl0cyBzdHJ1
dCBoYXMgemVybwogICAqIGhlaWdodCBhbmQgdGhlcmUgaXMgbm8gaGFsZi1sZWFkaW5nLCBzbyB0
aGUgaGVpZ2h0IG9mIHRoZQogICAqIGRpdi5idWNrZXQgaXMgMTYycHguCiAgICoKICAgKiAoV2h5
IHVzZSBsaW5lLWhlaWdodDowIGFuZCBmb250LXNpemU6MD8gV2VsbDoKICAgKgogICAqIFRoZSBk
aXYuYnVja2V0IGxpbmUgYm94IHdvdWxkIGhhdmUgYSBoZWlnaHQgdGhhdCBpcyB0aGUgbWF4aW11
bQogICAqIG9mIHRoZSBmb2xsb3dpbmcgdHdvIHN1bXM6CiAgICoKICAgKiAgMTogaGFsZi1sZWFk
aW5nICsgZm9udCBkZXNjZW50IGF0IDFlbSArIGZvbnQgYXNjZW50IGF0IDFlbSArIGhhbGYtbGVh
ZGluZwogICAqICAyOiBoYWxmLWxlYWRpbmcgKyBmb250IGRlc2NlbnQgYXQgMWVtICsgMTYycHgg
CiAgICoKICAgKiBOb3cgdGhlIGhhbGYtbGVhZGluZyBpcyAobGluZS1oZWlnaHQgLSAoZm9udC1h
c2NlbnQgKyBmb250LWRlc2NlbnQpKS8yLCBzbyB0aGF0IGlzIHJlYWxseToKICAgKgogICAqICAx
OiAobGluZS1oZWlnaHQgLSAoZm9udC1hc2NlbnQgKyBmb250LWRlc2NlbnQpKS8yICsgZm9udCBk
ZXNjZW50ICsgZm9udCBhc2NlbnQgKyAobGluZS1oZWlnaHQgLSAoZm9udC1hc2NlbnQgKyBmb250
LWRlc2NlbnQpKS8yCiAgICogIDI6IChsaW5lLWhlaWdodCAtIChmb250LWFzY2VudCArIGZvbnQt
ZGVzY2VudCkpLzIgKyBmb250IGRlc2NlbnQgKyAxNjJweAogICAqCiAgICogV2hpY2ggc2ltcGxp
ZnkgdG86CiAgICoKICAgKiAgMTogbGluZS1oZWlnaHQKICAgKiAgMjogbGluZS1oZWlnaHQvMiAr
IChmb250IGRlc2NlbnQgLSBmb250LWFzY2VudCkvMiArIDE2MnB4CiAgICoKICAgKiBTbyBpZiB0
aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gaXMgdHJ1ZToKICAgKgogICAqICAgIGxpbmUtaGVpZ2h0
ID4gbGluZS1oZWlnaHQvMiArIChmb250IGRlc2NlbnQgLSBmb250LWFzY2VudCkvMiArIDE2MnB4
CiAgICoKICAgKiBUaGF0IGlzLCBpZiB0aGlzIGlzIHRydWU6CiAgICoKICAgKiAgICBsaW5lLWhl
aWdodCA+IGZvbnQgZGVzY2VudCAtIGZvbnQtYXNjZW50ICsgMzI0cHgKICAgKgogICAqIC4uLnRo
ZW4gdGhlIGxpbmUtaGVpZ2h0IG1hdHRlcnMsIG90aGVyd2lzZSB0aGUgZm9udCBkb2VzLiBOb3Rl
CiAgICogdGhhdCBmb250IGRlc2NlbnQgLSBmb250LWFzY2VudCB3aWxsIGJlIGluIHRoZSByZWdp
b24gb2YKICAgKiAxMHB4LTMwcHggKHdpdGggQWhlbSwgZXhhY3RseSAxMnB4KS4gSG93ZXZlciwg
aWYgd2UgbWFrZSB0aGUKICAgKiBsaW5lLWhlaWdodCBiaWcsIHRoZW4gdGhlIF9wb3NpdGlvbmlu
Z18gb2YgdGhlIGlubGluZS1ibG9ja3Mgd2lsbAogICAqIGRlcGVuZCBvbiB0aGUgZm9udCBkZXNj
ZW50LCBzaW5jZSB0aGF0IGlzIHdoYXQgd2lsbCBkZWNpZGUgdGhlCiAgICogZGlzdGFuY2UgZnJv
bSB0aGUgYm90dG9tIG9mIHRoZSBsaW5lIGJveCB0byB0aGUgYmFzZWxpbmUgb2YgdGhlCiAgICog
YmxvY2sgKHNpbmNlIHRoZSBiYXNlbGluZSBpcyBzZXQgYnkgdGhlIHN0cnV0KS4KICAgKgogICAq
IEhvd2V2ZXIsIGluIEFjaWQyIGEgZGVwZW5kZW5jeSBvbiB0aGUgZm9udCBtZXRyaWNzIHdhcyBp
bnRyb2R1Y2VkCiAgICogYW5kIHRoaXMgY2F1c2VkIGFsbCBraW5kcyBvZiBwcm9ibGVtcy4gQW5k
IHdlIGNhbid0IHJlcXVpcmUgQWhlbQogICAqIGluIHRoZSBBY2lkIHRlc3RzLCBzaW5jZSBpdCdz
IHVubGlrZWx5IG1vc3QgcGVvcGxlIHdpbGwgaGF2ZSBpdAogICAqIGluc3RhbGxlZC4KICAgKgog
ICAqIFdoYXQgd2Ugd2FudCBpcyBmb3IgdGhlIGZvbnQgdG8gbm90IG1hdHRlciwgYW5kIHRoZSBi
YXNlbGluZSB0bwogICAqIGJlIGFzIGhpZ2ggYXMgcG9zc2libGUuIFdlIGNhbiBkbyB0aGF0IGJ5
IHNheWluZyB0aGF0IHRoZSBmb250CiAgICogYW5kIHRoZSBsaW5lLWhlaWdodCBhcmUgemVyby4K
ICAgKgogICAqIE9uZSB3b3JkIG9mIHdhcm5pbmcuIElmIHlvdXIgYnJvd3NlciBoYXMgYSBtaW5p
bXVtIGZvbnQgc2l6ZSBmZWF0dXJlCiAgICogdGhhdCBmb3JjZXMgZm9udCBzaXplcyB1cCBldmVu
IHdoZW4gdGhlcmUgaXMgbm8gdGV4dCwgeW91IHdpbGwgbmVlZAogICAqIHRvIGRpc2FibGUgaXQg
YmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0LgogICAqCiAgICovCgogIC8qIHJ1bGVzIHNwZWNpZmlj
IHRvIHRoZSB0ZXN0cyBiZWxvdyAqLwogICNpbnN0cnVjdGlvbnM6bGFzdC1jaGlsZCB7IHdoaXRl
LXNwYWNlOiBwcmUtd3JhcDsgd2hpdGUtc3BhY2U6IHgtYm9ndXM7IH0KICAjbGlua3Rlc3Q6bGlu
ayB7IGRpc3BsYXk6IGJsb2NrOyBjb2xvcjogcmVkOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHRleHQt
ZGVjb3JhdGlvbjogbm9uZTsgfQogICNsaW5rdGVzdC5wZW5kaW5nLCAjbGlua3Rlc3Q6dmlzaXRl
ZCB7IGRpc3BsYXk6IG5vbmU7IH0KICAjXCB7IGNvbG9yOiB0cmFuc3BhcmVudDsgY29sb3I6IGhz
bGEoMCwgMCwgMCwgMSk7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMHB4OyBsZWZ0OiAxMHB4OyBm
b250OiA0MHB4IEFyaWFsLCBzYW5zLXNlcmlmOyB9CiAgI1wgICNyZXN1bHQsICNcICAjc2NvcmUg
eyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTAlOyBsZWZ0OiAxMCU7IHdpZHRoOiA0ZW07IHotaW5k
ZXg6IDE7IGNvbG9yOiB5ZWxsb3c7IGZvbnQtc2l6ZTogNTBweDsgYmFja2dyb3VuZDogZnVjaHNp
YTsgYm9yZGVyOiBzb2xpZCAxZW0gcHVycGxlOyB9CiA8L3N0eWxlPgoKIDwhLS0gcGFydCBvZiB0
aGUgSFRUUCB0ZXN0cyAtLT4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iZW1wdHkuY3Nz
Ij48IS0tIHRleHQvaHRtbCBmaWxlIChzaG91bGQgYmUgaWdub3JlZCwgPGgxPiB3aWxsIGdvIHJl
ZCBpZiBpdCBpc24ndCkgLS0+CgogPCEtLSB0aGUgbmV4dCBmaXZlIHNjcmlwdCBibG9ja3MgYXJl
IHBhcnQgb2Ygb25lIG9mIHRoZSB0ZXN0cyAtLT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KICB2YXIgZDEgPSAiZmFpbCI7CiAgdmFyIGQyID0gImZhaWwiOwogIHZhciBkMyA9ICJm
YWlsIjsKICB2YXIgZDQgPSAiZmFpbCI7CiAgdmFyIGQ1ID0gImZhaWwiOwogPC9zY3JpcHQ+CiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxk
MSUyMCUzRCUyMCdvbmUnJTNCIj48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0O2Jhc2U2NCxaRElnUFNBbmRIZHZKenMlM0Qi
Pjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iZGF0YTp0ZXh0
L2phdmFzY3JpcHQ7YmFzZTY0LCU1YSU0NCU0ZCU2NyU1MCU1MyU0MSU2ZSU2NCU0NyU2OCU3OSU1
YSU1NyU1NSU2ZSU0ZiU3NyUzRCUzRCI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdDtiYXNlNjQsJTIwWkQlMjBRZyUwRCUw
QVBTJTIwQW4lMjBabTkxY2ljJTBEJTBBJTIwNyUyMCI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxkNSUyMCUzRCUyMCdm
aXZlXHUwMDI3cyclM0IiPjwvc2NyaXB0PgoKIDwhLS0gcGFydCBvZiB0aGUgSlMgcmVnZXhwIGFu
ZCBcMCB2YWx1ZSB0ZXN0cyB0ZXN0IC0tPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgogIHZhciBudWxsSW5SZWdleHBBcmd1bWVudFJlc3VsdCA9IDAgPCAvc2NyaXB0Ly50ZXN0KCdc
MHNjcmlwdCcpID8gInBhc3NlZCIgOiAiZmFpbGVkIjsKIDwvc2NyaXB0PgoKIDwhLS0gbWFpbiB0
ZXN0IGJvZHkgLS0+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgdmFyIG5vdGlm
aWNhdGlvbnMgPSB7fTsKICBmdW5jdGlvbiBub3RpZnkoZmlsZSkgewogICAgLy8gdXNlZCBpbiBj
cm9zcy1maWxlIHRlc3RzCiAgICBub3RpZmljYXRpb25zW2ZpbGVdID0gMTsKICB9CiAgZnVuY3Rp
b24gZmFpbChtZXNzYWdlKSB7CiAgICB0aHJvdyB7IG1lc3NhZ2U6IG1lc3NhZ2UgfTsKICB9CiAg
ZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkgewogICAgaWYgKCFjb25kaXRpb24p
CiAgICAgIGZhaWwobWVzc2FnZSk7CiAgfQogIGZ1bmN0aW9uIGFzc2VydEVxdWFscyhleHByZXNz
aW9uLCB2YWx1ZSwgbWVzc2FnZSkgewogICAgaWYgKGV4cHJlc3Npb24gIT0gdmFsdWUpIHsKICAg
ICAgZXhwcmVzc2lvbiA9ICgiIitleHByZXNzaW9uKS5yZXBsYWNlKC9bXHJcbl0rL2csICJcXG4i
KTsKICAgICAgdmFsdWUgPSAoIiIrdmFsdWUpLnJlcGxhY2UoL1xyP1xuL2csICJcXG4iKTsKICAg
ICAgZmFpbCgiZXhwZWN0ZWQgIiArIHZhbHVlICsgIiwgZ290OiAiICsgZXhwcmVzc2lvbiArICIg
LSAiICsgbWVzc2FnZSk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGdldFRlc3REb2N1bWVudCgpIHsK
ICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0b3JzIik7CiAg
ICB2YXIgZG9jID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudDsKICAgIGZvciAodmFyIGkgPSBkb2Mu
ZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoLTE7IGkgPj0gMDsgaSAtPSAxKQogICAg
ICBkb2MuZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKGRvYy5kb2N1bWVudEVsZW1lbnQuY2hp
bGROb2Rlc1tpXSk7CiAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVh
dGVFbGVtZW50KCdoZWFkJykpOwogICAgZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLmFw
cGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50KCd0aXRsZScpKTsKICAgIGRvYy5kb2N1bWVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnQoJ2JvZHknKSk7CiAgICByZXR1cm4g
ZG9jOwogIH0KICBmdW5jdGlvbiBzZWxlY3RvclRlc3QodGVzdGVyKSB7CiAgICB2YXIgZG9jID0g
Z2V0VGVzdERvY3VtZW50KCk7CiAgICB2YXIgc3R5bGUgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3R5
bGUnKTsKICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiKiB7IHotaW5k
ZXg6IDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxuIikpOwogICAgZG9jLmRvY3VtZW50RWxlbWVu
dC5maXJzdENoaWxkLmFwcGVuZENoaWxkKHN0eWxlKTsKICAgIHZhciBydWxlQ291bnQgPSAwOwog
ICAgdGVzdGVyKGRvYywgZnVuY3Rpb24gKHNlbGVjdG9yKSB7CiAgICAgICAgcnVsZUNvdW50ICs9
IDE7CiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHNlbGVjdG9y
ICsgIiB7IHotaW5kZXg6ICIgKyBydWxlQ291bnQgKyAiOyB9XG4iKSk7CiAgICAgICAgcmV0dXJu
IHJ1bGVDb3VudDsKICAgICAgfSwgZnVuY3Rpb24obm9kZSwgcnVsZSwgbWVzc2FnZSkgewogICAg
ICAgIHZhciB2YWx1ZSA9IGRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsICIi
KS56SW5kZXg7CiAgICAgICAgYXNzZXJ0KHZhbHVlICE9ICdhdXRvJywgInVuZGVybHlpbmcgcHJv
YmxlbXMgcHJldmVudCB0aGlzIHRlc3QgZnJvbSBydW5uaW5nIHByb3Blcmx5Iik7CiAgICAgICAg
YXNzZXJ0RXF1YWxzKHZhbHVlLCBydWxlLCBtZXNzYWdlKTsKICAgIH0pOwogIH0KICB2YXIga3Vu
Z0Z1RGVhdGhHcmlwID0gbnVsbDsgLy8gdXNlZCB0byBob2xkIHRoaW5ncyBmcm9tIHRlc3QgdG8g
dGVzdAogIHZhciB0ZXN0cyA9IFsKCiAgICAvLyB0aGVyZSBhcmUgNiBidWNrZXRzIHdpdGggMTYg
dGVzdHMgZWFjaCwgcGx1cyBmb3VyIHNwZWNpYWwgdGVzdHMgKDAsIDk3LCA5OCwgYW5kIDk5KS4K
CiAgICAvLyBSZW1vdmUgdGhlICJKUyByZXF1aXJlZCIgbWVzc2FnZQogICAgZnVuY3Rpb24gKCkg
ewogICAgICAvLyB0ZXN0IDA6IHdoZXRoZXIgcmVtb3ZpbmcgYW4gZWxlbWVudCB0aGF0IGlzIHRo
ZSBsYXN0IGNoaWxkIGNvcnJlY3RseSByZWNvbXB1dGVzIHN0eWxlcyBmb3IgdGhlIG5ldyBsYXN0
IGNoaWxkCiAgICAgIC8vIGFsc28gdGVzdHMgc3VwcG9ydCBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSwg
Omxhc3QtY2hpbGQsIHByZS13cmFwCiAgICAgIHZhciBsYXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3JlbW92ZS1sYXN0LWNoaWxkLXRlc3QnKTsKICAgICAgdmFyIHBlbnVsdGltYXRlID0g
bGFzdC5wcmV2aW91c1NpYmxpbmc7IC8vIHRoaXMgc2hvdWxkIGJlIHRoZSB3aGl0ZXNwYWNlIG5v
ZGUKICAgICAgcGVudWx0aW1hdGUgPSBwZW51bHRpbWF0ZS5wcmV2aW91c1NpYmxpbmc7IC8vIHRo
aXMgc2hvdWxkIG5vdyBiZSB0aGUgYWN0dWFsIHBlbnVsdGltYXRlIGVsZW1lbnQKICAgICAgbGFz
dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGxhc3QpOwogICAgICBhc3NlcnRFcXVhbHMoZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwZW51bHRpbWF0ZSwgJycpLndoaXRlU3Bh
Y2UsICdwcmUtd3JhcCcsICJmb3VuZCB1bmV4cGVjdGVkIGNvbXB1dGVkIHN0eWxlIik7CiAgICAg
IHJldHVybiA3OwogICAgfSwKCiAgICAvLyBidWNrZXQgMTogRE9NIFRyYXZlcnNhbCwgRE9NIFJh
bmdlLCBIVFRQCiAgICAvLyBET00gVHJhdmVyc2FsCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8v
IHRlc3QgMTogTm9kZUZpbHRlcnMgYW5kIEV4Y2VwdGlvbnMKICAgICAgdmFyIGRvYyA9IGdldFRl
c3REb2N1bWVudCgpOyAvLyBsb29rcyBsaWtlIDwhRE9DVFlQRT48aHRtbD48aGVhZD48dGl0bGUv
PjwvaGVhZD48Ym9keS8+PC9odG1sPgogICAgICB2YXIgaXRlcmF0aW9uID0gMDsKICAgICAgdmFy
IGV4Y2VwdGlvbiA9ICJSb3NlcyI7CiAgICAgIHZhciB0ZXN0ID0gZnVuY3Rpb24obm9kZSkgewog
ICAgICAgIGl0ZXJhdGlvbiArPSAxOwogICAgICAgIHN3aXRjaCAoaXRlcmF0aW9uKSB7CiAgICAg
ICAgICBjYXNlIDE6IGNhc2UgMzogY2FzZSA0OiBjYXNlIDY6IGNhc2UgNzogY2FzZSA4OiBjYXNl
IDk6IGNhc2UgMTI6IGNhc2UgMTM6IHRocm93IGV4Y2VwdGlvbjsKICAgICAgICAgIGNhc2UgMjog
Y2FzZSA1OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gdHJ1ZTsgLy8gVG9OdW1iZXIodHJ1ZSkg
PT4gMQogICAgICAgICAgZGVmYXVsdDogdGhyb3cgMDsKICAgICAgICB9OwogICAgICB9OwogICAg
ICB2YXIgY2hlY2sgPSBmdW5jdGlvbihvLCBtZXRob2QpIHsKICAgICAgICB2YXIgb2sgPSBmYWxz
ZTsKICAgICAgICB0cnkgewogICAgICAgICAgb1ttZXRob2RdKCk7CiAgICAgICAgfSBjYXRjaCAo
ZSkgewogICAgICAgICAgaWYgKGUgPT09IGV4Y2VwdGlvbikKICAgICAgICAgICAgb2sgPSB0cnVl
OwogICAgICAgIH0KICAgICAgICBhc3NlcnQob2ssICJtZXRob2QgIiArIG8gKyAiLiIgKyBtZXRo
b2QgKyAiKCkgZGlkbid0IGZvcndhcmQgZXhjZXB0aW9uIik7CiAgICAgIH07CiAgICAgIHZhciBp
ID0gZG9jLmNyZWF0ZU5vZGVJdGVyYXRvcihkb2MuZG9jdW1lbnRFbGVtZW50LCAweEZGRkZGRkZG
LCB0ZXN0LCB0cnVlKTsKICAgICAgY2hlY2soaSwgIm5leHROb2RlIik7IC8vIDEKICAgICAgYXNz
ZXJ0RXF1YWxzKGkubmV4dE5vZGUoKSwgZG9jLmRvY3VtZW50RWxlbWVudCwgImkubmV4dE5vZGUo
KSBkaWRuJ3QgcmV0dXJuIHRoZSByaWdodCBub2RlIik7IC8vIDIKICAgICAgY2hlY2soaSwgInBy
ZXZpb3VzTm9kZSIpOyAvLyAzCiAgICAgIHZhciB3ID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtl
cihkb2MuZG9jdW1lbnRFbGVtZW50LCAweEZGRkZGRkZGLCB0ZXN0LCB0cnVlKTsKICAgICAgY2hl
Y2sodywgIm5leHROb2RlIik7IC8vIDQKICAgICAgYXNzZXJ0RXF1YWxzKHcubmV4dE5vZGUoKSwg
ZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLCAidy5uZXh0Tm9kZSgpIGRpZG4ndCByZXR1
cm4gdGhlIHJpZ2h0IG5vZGUiKTsgLy8gNQogICAgICBjaGVjayh3LCAicHJldmlvdXNOb2RlIik7
IC8vIDYKICAgICAgY2hlY2sodywgImZpcnN0Q2hpbGQiKTsgLy8gNwogICAgICBjaGVjayh3LCAi
bGFzdENoaWxkIik7IC8vIDgKICAgICAgY2hlY2sodywgIm5leHRTaWJsaW5nIik7IC8vIDkKICAg
ICAgYXNzZXJ0RXF1YWxzKGl0ZXJhdGlvbiwgOSwgIml0ZXJhdGlvbnMgd2VudCB3cm9uZyIpOwog
ICAgICBhc3NlcnRFcXVhbHMody5wcmV2aW91c1NpYmxpbmcoKSwgbnVsbCwgIncucHJldmlvdXNT
aWJsaW5nKCkgZGlkbid0IHJldHVybiB0aGUgcmlnaHQgbm9kZSIpOyAvLyBkb2Vzbid0IGNhbGwg
ZmlsdGVyCiAgICAgIGFzc2VydEVxdWFscyhpdGVyYXRpb24sIDksICJmaWx0ZXIgY2FsbGVkIGlu
Y29ycmVjdGx5IGZvciBwcmV2aW91c1NpYmxpbmcoKSIpOwogICAgICBhc3NlcnRFcXVhbHMody5u
ZXh0U2libGluZygpLCBudWxsLCAidy5uZXh0U2libGluZygpIGRpZG4ndCByZXR1cm4gdGhlIHJp
Z2h0IG5vZGUiKTsgLy8gZG9lc24ndCBjYWxsIGZpbHRlcgogICAgICBhc3NlcnRFcXVhbHMoaXRl
cmF0aW9uLCA5LCAiZmlsdGVyIGNhbGxlZCBpbmNvcnJlY3RseSBmb3IgbmV4dFNpYmxpbmcoKSIp
OwogICAgICBhc3NlcnRFcXVhbHMody5wYXJlbnROb2RlKCksIGRvYy5kb2N1bWVudEVsZW1lbnQu
Zmlyc3RDaGlsZCwgIncucGFyZW50Tm9kZSgpIGRpZG4ndCByZXR1cm4gdGhlIHJpZ2h0IG5vZGUi
KTsgLy8gMTAKICAgICAgYXNzZXJ0RXF1YWxzKHcubmV4dFNpYmxpbmcoKSwgZG9jLmRvY3VtZW50
RWxlbWVudC5sYXN0Q2hpbGQsICJ3Lm5leHRTaWJsaW5nKCkgZGlkbid0IHJldHVybiB0aGUgcmln
aHQgbm9kZSIpOyAvLyAxMQogICAgICBjaGVjayh3LCAicHJldmlvdXNTaWJsaW5nIik7IC8vIDEy
CiAgICAgIGNoZWNrKHcsICJwYXJlbnROb2RlIik7IC8vIDEzCiAgICAgIHJldHVybiAxOwogICAg
fSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAyOiBSZW1vdmluZyBub2RlcyBkdXJp
bmcgaXRlcmF0aW9uCiAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgIHZhciBleHBlY3QgPSBmdW5j
dGlvbihuLCBub2RlMSwgbm9kZTIpIHsKICAgICAgICBjb3VudCArPSAxOwogICAgICAgIGFzc2Vy
dChuID09IGNvdW50LCAicmVhY2hlZCBleHBlY3RhdGlvbiAiICsgbiArICIgd2hlbiBleHBlY3Rp
bmcgZXhwZWN0YXRpb24gIiArIGNvdW50KTsKICAgICAgICBhc3NlcnRFcXVhbHMobm9kZTEsIG5v
ZGUyLCAiZXhwZWN0YXRpb24gIiArIGNvdW50ICsgIiBmYWlsZWQiKTsKICAgICAgfTsKICAgICAg
dmFyIGRvYyA9IGdldFRlc3REb2N1bWVudCgpOwogICAgICB2YXIgdDEgPSBkb2MuYm9keS5hcHBl
bmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgndDEnKSk7CiAgICAgIHZhciB0MiA9IGRvYy5ib2R5
LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50KCd0MicpKTsKICAgICAgdmFyIHQzID0gZG9j
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnQoJ3QzJykpOwogICAgICB2YXIgdDQg
PSBkb2MuYm9keS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgndDQnKSk7CiAgICAgIHZh
ciBjYWxsQ291bnQgPSAwOwogICAgICB2YXIgZmlsdGVyRnVuY3Rpb25zID0gWwogICAgICAgIGZ1
bmN0aW9uIChub2RlKSB7IGV4cGVjdCgxLCBub2RlLCBkb2MuYm9keSk7IHJldHVybiB0cnVlOyB9
LCAvLyBmaWx0ZXIgMAogICAgICAgIGZ1bmN0aW9uIChub2RlKSB7IGV4cGVjdCgzLCBub2RlLCB0
MSk7IHJldHVybiB0cnVlOyB9LCAvLyBmaWx0ZXIgMQogICAgICAgIGZ1bmN0aW9uIChub2RlKSB7
IGV4cGVjdCg1LCBub2RlLCB0Mik7IHJldHVybiB0cnVlOyB9LCAvLyBmaWx0ZXIgMgogICAgICAg
IGZ1bmN0aW9uIChub2RlKSB7IGV4cGVjdCg3LCBub2RlLCB0Myk7IGRvYy5ib2R5LnJlbW92ZUNo
aWxkKHQ0KTsgcmV0dXJuIHRydWU7IH0sIC8vIGZpbHRlciAzCiAgICAgICAgZnVuY3Rpb24gKG5v
ZGUpIHsgZXhwZWN0KDksIG5vZGUsIHQ0KTsgcmV0dXJuIHRydWU7IH0sIC8vIGZpbHRlciA0CiAg
ICAgICAgZnVuY3Rpb24gKG5vZGUpIHsgZXhwZWN0KDExLCBub2RlLCB0NCk7IGRvYy5ib2R5LnJl
bW92ZUNoaWxkKHQ0KTsgcmV0dXJuIDIgLyogUkVKRUNUICovOyB9LCAvLyBmaWx0ZXIgNQogICAg
ICAgIGZ1bmN0aW9uIChub2RlKSB7IGV4cGVjdCgxMiwgbm9kZSwgdDMpOyByZXR1cm4gdHJ1ZTsg
fSwgLy8gZmlsdGVyIDYKICAgICAgICBmdW5jdGlvbiAobm9kZSkgeyBleHBlY3QoMTQsIG5vZGUs
IHQyKTsgZG9jLmJvZHkucmVtb3ZlQ2hpbGQodDIpOyByZXR1cm4gdHJ1ZTsgfSwgLy8gZmlsdGVy
IDcKICAgICAgICBmdW5jdGlvbiAobm9kZSkgeyBleHBlY3QoMTYsIG5vZGUsIHQxKTsgcmV0dXJu
IHRydWU7IH0sIC8vIGZpbHRlciA4CiAgICAgIF07CiAgICAgIHZhciBpID0gZG9jLmNyZWF0ZU5v
ZGVJdGVyYXRvcihkb2MuZG9jdW1lbnRFbGVtZW50Lmxhc3RDaGlsZCwgMHhGRkZGRkZGRiwgZnVu
Y3Rpb24gKG5vZGUpIHsgcmV0dXJuIGZpbHRlckZ1bmN0aW9uc1tjYWxsQ291bnQrK10obm9kZSk7
IH0sIHRydWUpOwogICAgICAvLyAqIEIgMSAyIDMgNAogICAgICBleHBlY3QoMiwgaS5uZXh0Tm9k
ZSgpLCBkb2MuYm9keSk7IC8vIGZpbHRlciAwCiAgICAgIC8vIFtCXSAqIDEgMiAzIDQgICAgIAog
ICAgICBleHBlY3QoNCwgaS5uZXh0Tm9kZSgpLCB0MSk7IC8vIGZpbHRlciAxCiAgICAgIC8vIEIg
WzFdICogMiAzIDQKICAgICAgZXhwZWN0KDYsIGkubmV4dE5vZGUoKSwgdDIpOyAvLyBmaWx0ZXIg
MgogICAgICAvLyBCIDEgWzJdICogMyA0CiAgICAgIGV4cGVjdCg4LCBpLm5leHROb2RlKCksIHQz
KTsgLy8gZmlsdGVyIDMKICAgICAgLy8gQiAxIDIgWzNdICoKICAgICAgZG9jLmJvZHkuYXBwZW5k
Q2hpbGQodDQpOwogICAgICAvLyBCIDEgMiBbM10gKiA0CiAgICAgIGV4cGVjdCgxMCwgaS5uZXh0
Tm9kZSgpLCB0NCk7IC8vIGZpbHRlciA0CiAgICAgIC8vIEIgMSAyIDMgWzRdICoKICAgICAgZXhw
ZWN0KDEzLCBpLnByZXZpb3VzTm9kZSgpLCB0NCk7IC8vIGZpbHRlcnMgNSwgNgogICAgICAgIC8v
IEIgMSAyIDMgKiAoNCkgLy8gZmlsdGVyIDUKICAgICAgICAvLyBCIDEgMiBbM10gKiAgIC8vIGJl
dHdlZW4gNSBhbmQgNgogICAgICAgIC8vIEIgMSAyICogKDMpICAgLy8gZmlsdGVyIDYKICAgICAg
Ly8gQiAxIDIgKiBbM10KICAgICAgZXhwZWN0KDE1LCBpLnByZXZpb3VzTm9kZSgpLCB0Mik7IC8v
IGZpbHRlciA3CiAgICAgICAgLy8gQiAxICogKDIpIDMKICAgICAgLy8gQiAqIFsxXSAzCiAgICAg
IGV4cGVjdCgxNywgaS5wcmV2aW91c05vZGUoKSwgdDEpOyAvLyBmaWx0ZXIgOAogICAgICByZXR1
cm4gMTsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgMzogdGhlIGluZmlu
aXRlIGl0ZXJhdG9yCiAgICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQoKTsKICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA1OyBpICs9IDEpIHsKICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGls
ZChkb2MuY3JlYXRlRWxlbWVudCgnc2VjdGlvbicpKTsKICAgICAgICBkb2MuYm9keS5sYXN0Q2hp
bGQudGl0bGUgPSBpOwogICAgICB9CiAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgIHZhciB0ZXN0
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKGNvdW50ID4gMyAmJiBjb3VudCA8IDEyKQogICAg
ICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZG9jLmJvZHkuZmlyc3RDaGlsZCk7CiAgICAgICAg
Y291bnQgKz0gMTsKICAgICAgICByZXR1cm4gKGNvdW50ICUgMiA9PSAwKSA/IDEgOiAyOwogICAg
ICB9OwogICAgICB2YXIgaSA9IGRvYy5jcmVhdGVOb2RlSXRlcmF0b3IoZG9jLmJvZHksIDB4RkZG
RkZGRkYsIHRlc3QsIHRydWUpOwogICAgICBhc3NlcnRFcXVhbHMoaS5uZXh0Tm9kZSgpLnRpdGxl
LCAiMCIsICJmYWlsdXJlIDEiKTsKICAgICAgYXNzZXJ0RXF1YWxzKGkubmV4dE5vZGUoKS50aXRs
ZSwgIjIiLCAiZmFpbHVyZSAyIik7CiAgICAgIGFzc2VydEVxdWFscyhpLm5leHROb2RlKCkudGl0
bGUsICI0IiwgImZhaWx1cmUgMyIpOwogICAgICBhc3NlcnRFcXVhbHMoaS5uZXh0Tm9kZSgpLnRp
dGxlLCAiMSIsICJmYWlsdXJlIDQiKTsKICAgICAgYXNzZXJ0RXF1YWxzKGkubmV4dE5vZGUoKS50
aXRsZSwgIjMiLCAiZmFpbHVyZSA1Iik7CiAgICAgIGFzc2VydEVxdWFscyhpLm5leHROb2RlKCku
dGl0bGUsICIwIiwgImZhaWx1cmUgNiIpOwogICAgICBhc3NlcnRFcXVhbHMoaS5uZXh0Tm9kZSgp
LnRpdGxlLCAiMiIsICJmYWlsdXJlIDciKTsKICAgICAgYXNzZXJ0RXF1YWxzKGkubmV4dE5vZGUo
KSwgbnVsbCwgImZhaWx1cmUgOCIpOwogICAgICByZXR1cm4gMTsKICAgIH0sCiAgICBmdW5jdGlv
biAoKSB7CiAgICAgIC8vIHRlc3QgNDogaWdub3Jpbmcgd2hpdGVzcGFjZSB0ZXh0IG5vZGVzIHdp
dGggbm9kZSBpdGVyYXRvcnMKICAgICAgdmFyIGNvdW50ID0gMDsKICAgICAgdmFyIGV4cGVjdCA9
IGZ1bmN0aW9uKG5vZGUxLCBub2RlMikgewogICAgICAgIGNvdW50ICs9IDE7CiAgICAgICAgYXNz
ZXJ0RXF1YWxzKG5vZGUxLCBub2RlMiwgImV4cGVjdGF0aW9uICIgKyBjb3VudCArICIgZmFpbGVk
Iik7CiAgICAgIH07CiAgICAgIHZhciBhbGxCdXRXUyA9IGZ1bmN0aW9uIChub2RlKSB7CiAgICAg
ICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMyAmJiBub2RlLmRhdGEubWF0Y2goL15ccyokLykpCiAg
ICAgICAgICByZXR1cm4gMjsKICAgICAgICByZXR1cm4gMTsKICAgICAgfTsKICAgICAgdmFyIGkg
PSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoZG9jdW1lbnQuYm9keSwgMHgwMSB8IDB4MDQg
fCAweDA4IHwgMHgxMCB8IDB4MjAsIGFsbEJ1dFdTLCB0cnVlKTsKICAgICAgLy8gbm93IHdhbGsg
dGhlIGRvY3VtZW50IGJvZHkgYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGluIHRoZSByaWdo
dCBwbGFjZQogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5ib2R5KTsgLy8gMQog
ICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
aDEnKVswXSk7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdoMScpWzBdLmZpcnN0Q2hpbGQpOwogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgp
LCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF0pOwogICAgICBleHBlY3Qo
aS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVja2V0MScpKTsKICAgICAg
ZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDInKSk7
CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWNr
ZXQzJykpOwogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYnVja2V0NCcpKTsKICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2J1Y2tldDUnKSk7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdidWNrZXQ2JykpOyAvLyAxMAogICAgICBleHBlY3QoaS5uZXh0Tm9k
ZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykpOwogICAgICBleHBlY3QoaS5u
ZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmUnKSk7CiAgICAgIGV4cGVj
dChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZScpLmZpcnN0Q2hp
bGQpOwogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c2xhc2gnKSk7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzbGFzaCcpLmZpcnN0Q2hpbGQpOwogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2xhc2gnKS5uZXh0U2libGluZyk7CiAgICAgIGV4cGVjdChp
Lm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbGFzaCcpLm5leHRTaWJsaW5n
LmZpcnN0Q2hpbGQpOwogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnbWFwJylbMF0pOwogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYXJlYScpWzBdKTsKICAgICAgZXhwZWN0KGkubmV4
dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdKTsgLy8g
MjAKICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2lmcmFtZScpWzBdLmZpcnN0Q2hpbGQpOwogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMV0pOwogICAgICBleHBlY3Qo
aS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMV0u
Zmlyc3RDaGlsZCk7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdpZnJhbWUnKVsyXSk7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRv
Y3VtZW50LmZvcm1zWzBdKTsKICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZm9y
bXMuZm9ybS5lbGVtZW50c1swXSk7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0YWJsZScpWzBdKTsKICAgICAgZXhwZWN0KGkubmV4dE5v
ZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Rib2R5JylbMF0pOwogICAgICBl
eHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVsw
XSk7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCd0ZCcpWzBdKTsKICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3RkJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3AnKVswXSk7CiAg
ICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0cnVj
dGlvbnMnKSk7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbnN0cnVjdGlvbnMnKS5maXJzdENoaWxkKTsKICAgICAgZXhwZWN0KGkubmV4dE5vZGUo
KS5ub2RlTmFtZSwgIlNQQU4iKTsKICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKS5ub2RlTmFtZSwg
IiN0ZXh0Iik7CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmxpbmtzWzFdKTsK
ICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQubGlua3NbMV0uZmlyc3RDaGlsZCk7
CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0
cnVjdGlvbnMnKS5sYXN0Q2hpbGQpOwogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBudWxsKTsK
ICAgICAgLy8gd2FsayBpdCBiYWNrd2FyZHMgZm9yIGdvb2QgbWVhc3VyZQogICAgICBleHBlY3Qo
aS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RydWN0aW9ucycp
Lmxhc3RDaGlsZCk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5saW5r
c1sxXS5maXJzdENoaWxkKTsKICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50
LmxpbmtzWzFdKTsKICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKS5ub2RlTmFtZSwgIiN0ZXh0Iik7
CiAgICAgIGV4cGVjdChpLm5leHROb2RlKCkubm9kZU5hbWUsICJTUEFOIik7CiAgICAgIGV4cGVj
dChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdHJ1Y3Rpb25z
JykuZmlyc3RDaGlsZCk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnaW5zdHJ1Y3Rpb25zJykpOwogICAgICBleHBlY3QoaS5wcmV2aW91c05v
ZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RkJylbMF0uZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3AnKVswXSk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGQnKVswXSk7CiAgICAgIGV4cGVjdChpLnByZXZpb3Vz
Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVswXSk7CiAgICAgIGV4
cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGJv
ZHknKVswXSk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgndGFibGUnKVswXSk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgp
LCBkb2N1bWVudC5mb3Jtcy5mb3JtLmVsZW1lbnRzWzBdKTsKICAgICAgZXhwZWN0KGkucHJldmlv
dXNOb2RlKCksIGRvY3VtZW50LmZvcm1zWzBdKTsKICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2Rl
KCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVsyXSk7CiAgICAgIGV4
cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZy
YW1lJylbMV0uZmlyc3RDaGlsZCk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMV0pOwogICAgICBleHBlY3QoaS5w
cmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBd
LmZpcnN0Q2hpbGQpOwogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdKTsgLy8gMjAKICAgICAgZXhwZWN0KGkucHJl
dmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhcmVhJylbMF0pOwog
ICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ21hcCcpWzBdKTsKICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzbGFzaCcpLm5leHRTaWJsaW5nLmZpcnN0Q2hpbGQpOwogICAgICBleHBl
Y3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NsYXNoJykubmV4
dFNpYmxpbmcpOwogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NsYXNoJykuZmlyc3RDaGlsZCk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9k
ZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xhc2gnKSk7CiAgICAgIGV4cGVjdChpLnBy
ZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmUnKS5maXJzdENoaWxk
KTsKICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzY29yZScpKTsKICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHQnKSk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYnVja2V0NicpKTsKICAgICAgZXhwZWN0KGkucHJldmlvdXNO
b2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWNrZXQ1JykpOwogICAgICBleHBlY3Qo
aS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDQnKSk7CiAg
ICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVj
a2V0MycpKTsKICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdidWNrZXQyJykpOwogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDEnKSk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9k
ZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF0pOwogICAgICBleHBl
Y3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2gxJylb
MF0uZmlyc3RDaGlsZCk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKVswXSk7CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9k
ZSgpLCBkb2N1bWVudC5ib2R5KTsKICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIG51bGwp
OwogICAgICByZXR1cm4gMTsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3Qg
NTogaWdub3Jpbmcgd2hpdGVzcGFjZSB0ZXh0IG5vZGVzIHdpdGggdHJlZSB3YWxrZXJzCiAgICAg
IHZhciBjb3VudCA9IDA7CiAgICAgIHZhciBleHBlY3QgPSBmdW5jdGlvbihub2RlMSwgbm9kZTIp
IHsKICAgICAgICBjb3VudCArPSAxOwogICAgICAgIGFzc2VydEVxdWFscyhub2RlMSwgbm9kZTIs
ICJleHBlY3RhdGlvbiAiICsgY291bnQgKyAiIGZhaWxlZCIpOwogICAgICB9OwogICAgICB2YXIg
YWxsQnV0V1MgPSBmdW5jdGlvbiAobm9kZSkgewogICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09
IDMgJiYgbm9kZS5kYXRhLm1hdGNoKC9eXHMqJC8pKQogICAgICAgICAgcmV0dXJuIDM7CiAgICAg
ICAgcmV0dXJuIDE7CiAgICAgIH07CiAgICAgIHZhciB3ID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdh
bGtlcihkb2N1bWVudC5ib2R5LCAweDAxIHwgMHgwNCB8IDB4MDggfCAweDEwIHwgMHgyMCwgYWxs
QnV0V1MsIHRydWUpOwogICAgICBleHBlY3Qody5jdXJyZW50Tm9kZSwgZG9jdW1lbnQuYm9keSk7
CiAgICAgIGV4cGVjdCh3LnBhcmVudE5vZGUoKSwgbnVsbCk7CiAgICAgIGV4cGVjdCh3LmN1cnJl
bnROb2RlLCBkb2N1bWVudC5ib2R5KTsKICAgICAgZXhwZWN0KHcuZmlyc3RDaGlsZCgpLCBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKVswXSk7CiAgICAgIGV4cGVjdCh3LmZpcnN0
Q2hpbGQoKS5ub2RlVHlwZSwgMyk7CiAgICAgIGV4cGVjdCh3LnBhcmVudE5vZGUoKSwgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2gxJylbMF0pOwogICAgICBleHBlY3Qody5uZXh0U2li
bGluZygpLnByZXZpb3VzU2libGluZy5ub2RlVHlwZSwgMyk7CiAgICAgIGV4cGVjdCh3Lm5leHRT
aWJsaW5nKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbNl0pOwogICAgICBl
eHBlY3Qody5uZXh0U2libGluZygpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWFw
JylbMF0pOwogICAgICBleHBlY3Qody5sYXN0Q2hpbGQoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3RhYmxlJylbMF0pOwogICAgICBleHBlY3Qody5sYXN0Q2hpbGQoKSwgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Rib2R5JylbMF0pOwogICAgICBleHBlY3Qody5uZXh0
Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVswXSk7CiAgICAgIGV4
cGVjdCh3Lm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZCcpWzBd
KTsKICAgICAgZXhwZWN0KHcubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3AnKVs3XSk7CiAgICAgIGV4cGVjdCh3Lm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdwJylbOF0pOwogICAgICBleHBlY3Qody5wcmV2aW91c1NpYmxpbmcoKSwg
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hcCcpWzBdKTsKICAgICAgZXhwZWN0KHcu
cHJldmlvdXNOb2RlKCkuZGF0YSwgIjEwMCIpOwogICAgICBleHBlY3Qody5wYXJlbnROb2RlKCku
dGFnTmFtZSwgIlNQQU4iKTsKICAgICAgZXhwZWN0KHcucGFyZW50Tm9kZSgpLCBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykpOwogICAgICBleHBlY3Qody5wYXJlbnROb2RlKCksIGRv
Y3VtZW50LmJvZHkpOwogICAgICBleHBlY3Qody5sYXN0Q2hpbGQoKS5pZCwgImluc3RydWN0aW9u
cyIpOwogICAgICBleHBlY3Qody5sYXN0Q2hpbGQoKS5kYXRhLnN1YnN0cigwLDEpLCAiLiIpOwog
ICAgICBleHBlY3Qody5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQubGlua3NbMV0uZmlyc3RDaGls
ZCk7CiAgICAgIHJldHVybiAxOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVz
dCA2OiB3YWxraW5nIG91dHNpZGUgYSB0cmVlCiAgICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1l
bnQoKTsKICAgICAgdmFyIHAgPSBkb2MuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICBkb2MuYm9k
eS5hcHBlbmRDaGlsZChwKTsKICAgICAgdmFyIGIgPSBkb2MuYm9keTsKICAgICAgdmFyIHcgPSBk
b2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGIsIDB4RkZGRkZGRkYsIG51bGwsIHRydWUpOwogICAg
ICBhc3NlcnRFcXVhbHMody5jdXJyZW50Tm9kZSwgYiwgImJhc2ljIHVzZSBvZiBUcmVlV2Fsa2Vy
IGZhaWxlZDogY3VycmVudE5vZGUiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHcubGFzdENoaWxkKCks
IHAsICJiYXNpYyB1c2Ugb2YgVHJlZVdhbGtlciBmYWlsZWQ6IGxhc3RDaGlsZCgpIik7CiAgICAg
IGFzc2VydEVxdWFscyh3LnByZXZpb3VzTm9kZSgpLCBiLCAiYmFzaWMgdXNlIG9mIFRyZWVXYWxr
ZXIgZmFpbGVkOiBwcmV2aW91c05vZGUoKSIpOwogICAgICBkb2MuZG9jdW1lbnRFbGVtZW50LnJl
bW92ZUNoaWxkKGIpOwogICAgICBhc3NlcnRFcXVhbHMody5sYXN0Q2hpbGQoKSwgcCwgIlRyZWVX
YWxrZXIgZmFpbGVkIGFmdGVyIHJlbW92aW5nIHRoZSBjdXJyZW50IG5vZGUgZnJvbSB0aGUgdHJl
ZSIpOwogICAgICBhc3NlcnRFcXVhbHMody5uZXh0Tm9kZSgpLCBudWxsLCAiZmFpbGVkIHRvIHdh
bGsgaW50byB0aGUgZW5kIG9mIGEgc3VidHJlZSIpOwogICAgICBkb2MuZG9jdW1lbnRFbGVtZW50
LmFwcGVuZENoaWxkKHApOwogICAgICBhc3NlcnRFcXVhbHMody5wcmV2aW91c05vZGUoKSwgZG9j
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0aXRsZScpWzBdLCAiZmFpbGVkIHRvIGhhbmRsZSByZWdy
YWZ0aW5nIGNvcnJlY3RseSIpOwogICAgICBwLmFwcGVuZENoaWxkKGIpOwogICAgICBhc3NlcnRF
cXVhbHMody5uZXh0Tm9kZSgpLCBwLCAiY291bGRuJ3QgcmV0cmFjZSBzdGVwcyIpOwogICAgICBh
c3NlcnRFcXVhbHMody5uZXh0Tm9kZSgpLCBiLCAiY291bGRuJ3Qgc3RlcCBiYWNrIGludG8gcm9v
dCIpOwogICAgICBhc3NlcnRFcXVhbHMody5wcmV2aW91c05vZGUoKSwgbnVsbCwgInJvb3QgZGlk
bid0IHJldGFrZSBpdHMgcm9vdGlzaCBwb3NpdGlvbiIpOwogICAgICByZXR1cm4gMTsKICAgIH0s
CgogICAgLy8gRE9NIFJhbmdlCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNzogYmFz
aWMgcmFuZ2VzIHRlc3RzCiAgICAgIHZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAg
ICAgYXNzZXJ0KHIsICJyYW5nZSBub3QgY3JlYXRlZCIpOwogICAgICBhc3NlcnQoci5jb2xsYXBz
ZWQsICJuZXcgcmFuZ2Ugd2Fzbid0IGNvbGxhcHNlZCIpOwogICAgICBhc3NlcnRFcXVhbHMoci5j
b21tb25BbmNlc3RvckNvbnRhaW5lciwgZG9jdW1lbnQsICJuZXcgcmFuZ2UncyBjb21tb24gYW5j
ZXN0b3Igd2Fzbid0IHRoZSBkb2N1bWVudCIpOwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENv
bnRhaW5lciwgZG9jdW1lbnQsICJuZXcgcmFuZ2UncyBzdGFydCBjb250YWluZXIgd2Fzbid0IHRo
ZSBkb2N1bWVudCIpOwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMCwgIm5ldyBy
YW5nZSdzIHN0YXJ0IG9mZnNldCB3YXNuJ3QgemVybyIpOwogICAgICBhc3NlcnRFcXVhbHMoci5l
bmRDb250YWluZXIsIGRvY3VtZW50LCAibmV3IHJhbmdlJ3MgZW5kIGNvbnRhaW5lciB3YXNuJ3Qg
dGhlIGRvY3VtZW50Iik7CiAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMCwgIm5ldyBy
YW5nZSdzIGVuZCBvZmZzZXQgd2Fzbid0IHplcm8iKTsKICAgICAgYXNzZXJ0KHIuY2xvbmVDb250
ZW50cygpLCAiY2xvbmVDb250ZW50cygpIGRpZG4ndCByZXR1cm4gYW4gb2JqZWN0Iik7CiAgICAg
IGFzc2VydEVxdWFscyhyLmNsb25lQ29udGVudHMoKS5jaGlsZE5vZGVzLmxlbmd0aCwgMCwgIm5v
dGhpbmcgY2xvbmVkIHdhcyBtb3JlIHRoYW4gbm90aGluZyIpOwogICAgICBhc3NlcnRFcXVhbHMo
ci5jbG9uZVJhbmdlKCkudG9TdHJpbmcoKSwgIiIsICJub3RoaW5nIGNsb25lZCBzdHJpbmdpZmVk
IHRvIG1vcmUgdGhhbiBub3RoaW5nIik7CiAgICAgIHIuY29sbGFwc2UodHJ1ZSk7IC8vIG5vIGVm
ZmVjdAogICAgICBhc3NlcnRFcXVhbHMoci5jb21wYXJlQm91bmRhcnlQb2ludHMoci5TVEFSVF9U
T19FTkQsIHIuY2xvbmVSYW5nZSgpKSwgMCwgInN0YXJ0aW5nIGJvdW5kYXJ5IHBvaW50IG9mIHJh
bmdlIHdhc24ndCB0aGUgc2FtZSBhcyB0aGUgZW5kIGJvdW5kYXJ5IHBvaW50IG9mIHRoZSBjbG9u
ZSByYW5nZSIpOwogICAgICByLmRlbGV0ZUNvbnRlbnRzKCk7IC8vIG5vIGVmZmVjdAogICAgICBh
c3NlcnRFcXVhbHMoci5leHRyYWN0Q29udGVudHMoKS5jaGlsZE5vZGVzLmxlbmd0aCwgMCwgIm5v
dGhpbmcgcmVtb3ZlZCB3YXMgbW9yZSB0aGFuIG5vdGhpbmciKTsKICAgICAgci5pbnNlcnROb2Rl
KGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoImNvbW1lbnRlZCBpbnNlcnRlZCB0byB0ZXN0IHJhbmdl
cyIpKTsKICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgInJhbmdlIHdpdGggaW5zZXJ0ZWQgY29t
bWVudCBpc24ndCBjb2xsYXBzZWQiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuY29tbW9uQW5jZXN0
b3JDb250YWluZXIsIGRvY3VtZW50LCAicmFuZ2Ugd2l0aCBpbnNlcnRlZCBjb21tZW50IGhhcyBj
b21tb24gYW5jZXN0b3IgdGhhdCBpc24ndCB0aGUgZG9jdW1lbnQiKTsKICAgICAgYXNzZXJ0RXF1
YWxzKHIuc3RhcnRDb250YWluZXIsIGRvY3VtZW50LCAicmFuZ2Ugd2l0aCBpbnNlcnRlZCBjb21t
ZW50IGhhcyBzdGFydCBjb250YWluZXIgdGhhdCBpc24ndCB0aGUgZG9jdW1lbnQiKTsKICAgICAg
YXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDAsICJyYW5nZSB3aXRoIGluc2VydGVkIGNvbW1l
bnQgaGFzIHN0YXJ0IG9mZnNldCB0aGF0IGlzbid0IHplcm8iKTsKICAgICAgYXNzZXJ0RXF1YWxz
KHIuZW5kQ29udGFpbmVyLCBkb2N1bWVudCwgInJhbmdlIHdpdGggaW5zZXJ0ZWQgY29tbWVudCBo
YXMgZW5kIGNvbnRhaW5lciB0aGF0IGlzbid0IHRoZSBkb2N1bWVudCIpOwogICAgICBhc3NlcnRF
cXVhbHMoci5lbmRPZmZzZXQsIDEsICJyYW5nZSB3aXRoIGluc2VydGVkIGNvbW1lbnQgaGFzIGVu
ZCBvZmZzZXQgdGhhdCBpc24ndCBhZnRlciB0aGUgY29tbWVudCIpOwogICAgICByZXR1cm4gMTsK
ICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgODogbW92aW5nIGJvdW5kYXJ5
IHBvaW50cwogICAgICB2YXIgZG9jID0gZG9jdW1lbnQuY2xvbmVOb2RlKGZhbHNlKTsgLy8gY29u
dmVuaWVudCB3YXkgdG8gZ2V0IGEgbmV3IEhUTUwgZG9jdW1lbnQKICAgICAgdmFyIHJvb3QgPSBk
b2MuY3JlYXRlRWxlbWVudCgicm9vdCIpOwogICAgICBkb2MuYXBwZW5kQ2hpbGQocm9vdCk7CiAg
ICAgIHZhciBlMSA9IGRvYy5jcmVhdGVFbGVtZW50KCJlIik7CiAgICAgIHJvb3QuYXBwZW5kQ2hp
bGQoZTEpOwogICAgICB2YXIgZTIgPSBkb2MuY3JlYXRlRWxlbWVudCgiZSIpOwogICAgICByb290
LmFwcGVuZENoaWxkKGUyKTsKICAgICAgdmFyIGUzID0gZG9jLmNyZWF0ZUVsZW1lbnQoImUiKTsK
ICAgICAgcm9vdC5hcHBlbmRDaGlsZChlMyk7CiAgICAgIHZhciByID0gZG9jLmNyZWF0ZVJhbmdl
KCk7CiAgICAgIHIuc2V0U3RhcnQoZTIsIDApOwogICAgICByLnNldEVuZChlMywgMCk7CiAgICAg
IGFzc2VydCghci5jb2xsYXBzZWQsICJub24tZW1wdHkgcmFuZ2UgY2xhaW1zIHRvIGJlIGNvbGxh
cHNlZCIpOwogICAgICByLnNldEVuZChlMSwgMCk7CiAgICAgIGFzc2VydChyLmNvbGxhcHNlZCwg
InNldEVuZCgpIGRpZG4ndCBjb2xsYXBzZSB0aGUgcmFuZ2UiKTsKICAgICAgYXNzZXJ0RXF1YWxz
KHIuc3RhcnRDb250YWluZXIsIGUxLCAic3RhcnRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgc2V0
RW5kKCkiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDAsICJzdGFydE9mZnNl
dCBpcyB3cm9uZyBhZnRlciBzZXRFbmQoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5lbmRDb250
YWluZXIsIGUxLCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNldEVuZCgpIik7CiAgICAg
IGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMCwgImVuZE9mZnNldCBpcyB3cm9uZyBhZnRlciBz
ZXRFbmQoKSIpOwogICAgICByLnNldFN0YXJ0QmVmb3JlKGUzKTsKICAgICAgYXNzZXJ0KHIuY29s
bGFwc2VkLCAic2V0U3RhcnRCZWZvcmUoKSBkaWRuJ3QgY29sbGFwc2UgdGhlIHJhbmdlIik7CiAg
ICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCByb290LCAic3RhcnRDb250YWluZXIg
aXMgd3JvbmcgYWZ0ZXIgc2V0U3RhcnRCZWZvcmUoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5z
dGFydE9mZnNldCwgMiwgInN0YXJ0T2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QmVmb3Jl
KCkiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29udGFpbmVyLCByb290LCAiZW5kQ29udGFp
bmVyIGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QmVmb3JlKCkiKTsKICAgICAgYXNzZXJ0RXF1YWxz
KHIuZW5kT2Zmc2V0LCAyLCAiZW5kT2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QmVmb3Jl
KCkiKTsKICAgICAgci5zZXRFbmRBZnRlcihyb290KTsKICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNl
ZCwgInNldEVuZEFmdGVyKCkgZGlkbid0IHVuY29sbGFwc2UgdGhlIHJhbmdlIik7CiAgICAgIGFz
c2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCByb290LCAic3RhcnRDb250YWluZXIgaXMgd3Jv
bmcgYWZ0ZXIgc2V0RW5kQWZ0ZXIoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNl
dCwgMiwgInN0YXJ0T2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNldEVuZEFmdGVyKCkiKTsKICAgICAg
YXNzZXJ0RXF1YWxzKHIuZW5kQ29udGFpbmVyLCBkb2MsICJlbmRDb250YWluZXIgaXMgd3Jvbmcg
YWZ0ZXIgc2V0RW5kQWZ0ZXIoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDEs
ICJlbmRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgc2V0RW5kQWZ0ZXIoKSIpOwogICAgICByLnNldFN0
YXJ0QWZ0ZXIoZTIpOwogICAgICBhc3NlcnQoIXIuY29sbGFwc2VkLCAic2V0U3RhcnRBZnRlcigp
IGNvbGxhcHNlZCB0aGUgcmFuZ2UiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRDb250YWlu
ZXIsIHJvb3QsICJzdGFydENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBzZXRTdGFydEFmdGVyKCki
KTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDIsICJzdGFydE9mZnNldCBpcyB3
cm9uZyBhZnRlciBzZXRTdGFydEFmdGVyKCkiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29u
dGFpbmVyLCBkb2MsICJlbmRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgc2V0U3RhcnRBZnRlcigp
Iik7CiAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMSwgImVuZE9mZnNldCBpcyB3cm9u
ZyBhZnRlciBzZXRTdGFydEFmdGVyKCkiKTsKICAgICAgdmFyIG1zZyA9ICcnOwogICAgICB0cnkg
ewogICAgICAgIHIuc2V0RW5kQmVmb3JlKGRvYyk7CiAgICAgICAgbXNnID0gIm5vIGV4Y2VwdGlv
biB0aHJvd24gZm9yIHNldEVuZEJlZm9yZSgpIHRoZSBkb2N1bWVudCBpdHNlbGYiOwogICAgICB9
IGNhdGNoIChlKSB7CiAgICAgICAgaWYgKGUuQkFEX0JPVU5EQVJZUE9JTlRTX0VSUiAhPSAxKQog
ICAgICAgICAgbXNnID0gJ25vdCBhIFJhbmdlRXhjZXB0aW9uJzsKICAgICAgICBlbHNlIGlmIChl
LklOVkFMSURfTk9ERV9UWVBFX0VSUiAhPSAyKQogICAgICAgICAgbXNnID0gJ1JhbmdlRXhjZXB0
aW9uIGhhcyBubyBJTlZBTElEX05PREVfVFlQRV9FUlInOwogICAgICAgIGVsc2UgaWYgKCJJTlZB
TElEX0FDQ0VTU19FUlIiIGluIGUpCiAgICAgICAgICBtc2cgPSAnUmFuZ2VFeGNlcHRpb24gaGFz
IERPTUV4Y2VwdGlvbiBjb25zdGFudHMnOwogICAgICAgIGVsc2UgaWYgKGUuY29kZSAhPSBlLklO
VkFMSURfTk9ERV9UWVBFX0VSUikKICAgICAgICAgIG1zZyA9ICd3cm9uZyBleGNlcHRpb24gcmFp
c2VkIGZyb20gc2V0RW5kQmVmb3JlKCknOwogICAgICB9CiAgICAgIGFzc2VydChtc2cgPT0gIiIs
IG1zZyk7CiAgICAgIGFzc2VydCghci5jb2xsYXBzZWQsICJzZXRFbmRCZWZvcmUoKSBjb2xsYXBz
ZWQgdGhlIHJhbmdlIik7CiAgICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCByb290
LCAic3RhcnRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgc2V0RW5kQmVmb3JlKCkiKTsKICAgICAg
YXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDIsICJzdGFydE9mZnNldCBpcyB3cm9uZyBhZnRl
ciBzZXRFbmRCZWZvcmUoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5lbmRDb250YWluZXIsIGRv
YywgImVuZENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBzZXRFbmRCZWZvcmUoKSIpOwogICAgICBh
c3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDEsICJlbmRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgc2V0
RW5kQmVmb3JlKCkiKTsKICAgICAgci5jb2xsYXBzZShmYWxzZSk7CiAgICAgIGFzc2VydChyLmNv
bGxhcHNlZCwgImNvbGxhcHNlKCkgY29sbGFwc2VkIHRoZSByYW5nZSIpOwogICAgICBhc3NlcnRF
cXVhbHMoci5zdGFydENvbnRhaW5lciwgZG9jLCAic3RhcnRDb250YWluZXIgaXMgd3JvbmcgYWZ0
ZXIgY29sbGFwc2UoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMSwgInN0
YXJ0T2Zmc2V0IGlzIHdyb25nIGFmdGVyIGNvbGxhcHNlKCkiKTsKICAgICAgYXNzZXJ0RXF1YWxz
KHIuZW5kQ29udGFpbmVyLCBkb2MsICJlbmRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgY29sbGFw
c2UoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDEsICJlbmRPZmZzZXQgaXMg
d3JvbmcgYWZ0ZXIgY29sbGFwc2UoKSIpOwogICAgICByLnNlbGVjdE5vZGVDb250ZW50cyhyb290
KTsKICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgImNvbGxhcHNlZCBpcyB3cm9uZyBhZnRlciBz
ZWxlY3ROb2RlQ29udGVudHMoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRhaW5l
ciwgcm9vdCwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNlbGVjdE5vZGVDb250ZW50
cygpIik7CiAgICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0T2Zmc2V0LCAwLCAic3RhcnRPZmZzZXQg
aXMgd3JvbmcgYWZ0ZXIgc2VsZWN0Tm9kZUNvbnRlbnRzKCkiKTsKICAgICAgYXNzZXJ0RXF1YWxz
KHIuZW5kQ29udGFpbmVyLCByb290LCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNlbGVj
dE5vZGVDb250ZW50cygpIik7CiAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMywgImVu
ZE9mZnNldCBpcyB3cm9uZyBhZnRlciBzZWxlY3ROb2RlQ29udGVudHMoKSIpOwogICAgICByLnNl
bGVjdE5vZGUoZTIpOwogICAgICBhc3NlcnQoIXIuY29sbGFwc2VkLCAiY29sbGFwc2VkIGlzIHdy
b25nIGFmdGVyIHNlbGVjdE5vZGUoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRh
aW5lciwgcm9vdCwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNlbGVjdE5vZGUoKSIp
OwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMSwgInN0YXJ0T2Zmc2V0IGlzIHdy
b25nIGFmdGVyIHNlbGVjdE5vZGUoKSIpOwogICAgICBhc3NlcnRFcXVhbHMoci5lbmRDb250YWlu
ZXIsIHJvb3QsICJlbmRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgc2VsZWN0Tm9kZSgpIik7CiAg
ICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMiwgImVuZE9mZnNldCBpcyB3cm9uZyBhZnRl
ciBzZWxlY3ROb2RlKCkiKTsKICAgICAgcmV0dXJuIDE7CiAgICB9LAogICAgZnVuY3Rpb24gKCkg
ewogICAgICAvLyB0ZXN0IDk6IGV4dHJhY3RDb250ZW50cygpIGluIGEgRG9jdW1lbnQKICAgICAg
dmFyIGRvYyA9IGdldFRlc3REb2N1bWVudCgpOwogICAgICB2YXIgaDEgPSBkb2MuY3JlYXRlRWxl
bWVudCgnaDEnKTsKICAgICAgdmFyIHQxID0gZG9jLmNyZWF0ZVRleHROb2RlKCdIZWxsbyAnKTsK
ICAgICAgaDEuYXBwZW5kQ2hpbGQodDEpOwogICAgICB2YXIgZW0gPSBkb2MuY3JlYXRlRWxlbWVu
dCgnZW0nKTsKICAgICAgdmFyIHQyID0gZG9jLmNyZWF0ZVRleHROb2RlKCdXb25kZXJmdWwnKTsK
ICAgICAgZW0uYXBwZW5kQ2hpbGQodDIpOwogICAgICBoMS5hcHBlbmRDaGlsZChlbSk7CiAgICAg
IHZhciB0MyA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgnIEtpdHR5Jyk7CiAgICAgIGgxLmFwcGVuZENo
aWxkKHQzKTsKICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoaDEpOwogICAgICB2YXIgcCA9IGRv
Yy5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAgIHZhciB0NCA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgn
SG93IGFyZSB5b3U/Jyk7CiAgICAgIHAuYXBwZW5kQ2hpbGQodDQpOwogICAgICBkb2MuYm9keS5h
cHBlbmRDaGlsZChwKTsKICAgICAgdmFyIHIgPSBkb2MuY3JlYXRlUmFuZ2UoKTsKICAgICAgci5z
ZWxlY3ROb2RlQ29udGVudHMoZG9jKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIudG9TdHJpbmcoKSwg
IkhlbGxvIFdvbmRlcmZ1bCBLaXR0eUhvdyBhcmUgeW91PyIsICJ0b1N0cmluZygpIG9uIHJhbmdl
IHNlbGVjdGluZyBEb2N1bWVudCBnYXZlIHdyb25nIG91dHB1dCIpOwogICAgICByLnNldFN0YXJ0
KHQyLCA2KTsKICAgICAgci5zZXRFbmQocCwgMCk7CiAgICAgIC8vIDxib2R5PjxoMT5IZWxsbyA8
ZW0+V29uZGVyIGZ1bDwvZW0+IEtpdHR5PC9oMT48cD4gSG93IGFyZSB5b3U/PC9wPjwvYm9keT4K
ICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBeLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LV4KICAgICAgYXNzZXJ0RXF1YWxzKHIudG9TdHJpbmcoKSwgImZ1bCBLaXR0eSIsICJ0b1N0cmlu
ZygpIG9uIHJhbmdlIGNyb3NzaW5nIHRleHQgbm9kZXMgZ2F2ZSB3cm9uZyBvdXRwdXQiKTsKICAg
ICAgdmFyIGYgPSByLmV4dHJhY3RDb250ZW50cygpOwogICAgICAvLyA8aDE+PGVtPmZ1bDwvZW0+
IEtpdHR5PC9oMT48cD48L3A+CiAgICAgIC8vIGNjY2NjY2NjY2NjY2NjY2NNTU1NTU1jY2NjY2Nj
Y2NjY2MKICAgICAgYXNzZXJ0RXF1YWxzKGYubm9kZVR5cGUsIDExLCAiZmFpbHVyZSAxIik7CiAg
ICAgIGFzc2VydChmLmNoaWxkTm9kZXMubGVuZ3RoID09IDIsICJleHBlY3RlZCB0d28gY2hpbGRy
ZW4gaW4gdGhlIHJlc3VsdCwgZ290ICIgKyBmLmNoaWxkTm9kZXMubGVuZ3RoKTsKICAgICAgYXNz
ZXJ0RXF1YWxzKGYuY2hpbGROb2Rlc1swXS50YWdOYW1lLCAiSDEiLCAiZmFpbHVyZSAzIik7CiAg
ICAgIGFzc2VydChmLmNoaWxkTm9kZXNbMF0gIT0gaDEsICJmYWlsdXJlIDQiKTsKICAgICAgYXNz
ZXJ0RXF1YWxzKGYuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzLmxlbmd0aCwgMiwgImZhaWx1cmUg
NSIpOwogICAgICBhc3NlcnRFcXVhbHMoZi5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF0udGFn
TmFtZSwgIkVNIiwgImZhaWx1cmUgNiIpOwogICAgICBhc3NlcnQoZi5jaGlsZE5vZGVzWzBdLmNo
aWxkTm9kZXNbMF0gIT0gZW0sICJmYWlsdXJlIDciKTsKICAgICAgYXNzZXJ0RXF1YWxzKGYuY2hp
bGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAiZmFpbHVyZSA4
Iik7CiAgICAgIGFzc2VydEVxdWFscyhmLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGls
ZE5vZGVzWzBdLmRhdGEsICJmdWwiLCAiZmFpbHVyZSA5Iik7CiAgICAgIGFzc2VydChmLmNoaWxk
Tm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdICE9IHQyLCAiZmFpbHVyZSAxMCIp
OwogICAgICBhc3NlcnRFcXVhbHMoZi5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMV0sIHQzLCAi
ZmFpbHVyZSAxMSIpOwogICAgICBhc3NlcnQoZi5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMV0g
IT0gZW0sICJmYWlsdXJlIDEyIik7CiAgICAgIGFzc2VydEVxdWFscyhmLmNoaWxkTm9kZXNbMV0u
dGFnTmFtZSwgIlAiLCAiZmFpbHVyZSAxMyIpOwogICAgICBhc3NlcnRFcXVhbHMoZi5jaGlsZE5v
ZGVzWzFdLmNoaWxkTm9kZXMubGVuZ3RoLCAwLCAiZmFpbHVyZSAxNCIpOwogICAgICBhc3NlcnQo
Zi5jaGlsZE5vZGVzWzFdICE9IHAsICJmYWlsdXJlIDE1Iik7CiAgICAgIHJldHVybiAxOwogICAg
fSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAxMDogUmFuZ2VzIGFuZCBBdHRyaWJ1
dGVzCiAgICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOwogICAg
ICB2YXIgYSA9IGUuZ2V0QXR0cmlidXRlTm9kZSgnaWQnKTsKICAgICAgdmFyIHIgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOwogICAgICByLnNlbGVjdE5vZGVDb250ZW50cyhhKTsKICAgICAgYXNz
ZXJ0RXF1YWxzKHIudG9TdHJpbmcoKSwgInJlc3VsdCIsICJ0b1N0cmluZygpIGRpZG4ndCB3b3Jr
IGZvciBhdHRyaWJ1dGUgbm9kZSIpOwogICAgICB2YXIgdCA9IGEuZmlyc3RDaGlsZDsKICAgICAg
dmFyIGYgPSByLmV4dHJhY3RDb250ZW50cygpOwogICAgICBhc3NlcnRFcXVhbHMoZi5jaGlsZE5v
ZGVzLmxlbmd0aCwgMSwgImV4dHJhY3RlZCBjb250ZW50cyB3ZXJlIHRoZSB3cm9uZyBsZW5ndGgi
KTsKICAgICAgYXNzZXJ0RXF1YWxzKGYuY2hpbGROb2Rlc1swXSwgdCwgImV4dHJhY3RlZCBjb250
ZW50cyB3ZXJlIHRoZSB3cm9uZyBub2RlIik7CiAgICAgIGFzc2VydEVxdWFscyh0LnRleHRDb250
ZW50LCAncmVzdWx0JywgImV4dHJhY3RlZCBjb250ZW50cyBkaWRuJ3QgbWF0Y2ggb2xkIGF0dHJp
YnV0ZSB2YWx1ZSIpOwogICAgICBhc3NlcnRFcXVhbHMoci50b1N0cmluZygpLCAnJywgImV4dHJh
Y3RpbmcgY29udGVudHMgZGlkbid0IGVtcHR5IGF0dHJpYnV0ZSB2YWx1ZTsgaW5zdGVhZCBlcXVh
bHMgJyIgKyByLnRvU3RyaW5nKCkgKyAiJyIpOwogICAgICBhc3NlcnRFcXVhbHMoZS5nZXRBdHRy
aWJ1dGUoJ2lkJyksICcnLCAiZXh0cmFjdGluZyBjb250ZW50cyBkaWRuJ3QgY2hhbmdlICdpZCcg
YXR0cmlidXRlIHRvIGVtcHR5IHN0cmluZyIpOwogICAgICBlLmlkID0gJ3Jlc3VsdCc7CiAgICAg
IHJldHVybiAxOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAxMTogUmFu
Z2VzIGFuZCBDb21tZW50cwogICAgICB2YXIgbXNnOwogICAgICB2YXIgZG9jID0gZ2V0VGVzdERv
Y3VtZW50KCk7CiAgICAgIHZhciBjMSA9IGRvYy5jcmVhdGVDb21tZW50KCIxMTExMSIpOwogICAg
ICBkb2MuYXBwZW5kQ2hpbGQoYzEpOwogICAgICB2YXIgciA9IGRvYy5jcmVhdGVSYW5nZSgpOwog
ICAgICByLnNlbGVjdE5vZGUoYzEpOwogICAgICBtc2cgPSAnd3JvbmcgZXhjZXB0aW9uIHJhaXNl
ZCc7CiAgICAgIHRyeSB7CiAgICAgICAgci5zdXJyb3VuZENvbnRlbnRzKGRvYy5jcmVhdGVFbGVt
ZW50KCdhJykpOwogICAgICAgIG1zZyA9ICdubyBleGNlcHRpb24gcmFpc2VkJzsKICAgICAgfSBj
YXRjaCAoZSkgewogICAgICAgIGlmICgnY29kZScgaW4gZSkKICAgICAgICAgIG1zZyArPSAnOyBj
b2RlID0gJyArIGUuY29kZTsKICAgICAgICBpZiAoZS5jb2RlID09IDMpCiAgICAgICAgICBtc2cg
PSAnJzsKICAgICAgfQogICAgICBhc3NlcnQobXNnID09ICcnLCAid2hlbiBpbnNlcnRpbmcgPGE+
IGludG8gRG9jdW1lbnQgd2l0aCBhbm90aGVyIGNoaWxkOiAiICsgbXNnKTsKICAgICAgdmFyIGMy
ID0gZG9jLmNyZWF0ZUNvbW1lbnQoIjIyMjIyIik7CiAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxk
KGMyKTsKICAgICAgdmFyIGMzID0gZG9jLmNyZWF0ZUNvbW1lbnQoIjMzMzMzIik7CiAgICAgIGRv
Yy5ib2R5LmFwcGVuZENoaWxkKGMzKTsKICAgICAgci5zZXRTdGFydChjMiwgMik7CiAgICAgIHIu
c2V0RW5kKGMzLCAzKTsKICAgICAgdmFyIG1zZyA9ICd3cm9uZyBleGNlcHRpb24gcmFpc2VkJzsK
ICAgICAgdHJ5IHsKICAgICAgICByLnN1cnJvdW5kQ29udGVudHMoZG9jLmNyZWF0ZUVsZW1lbnQo
J2EnKSk7CiAgICAgICAgbXNnID0gJ25vIGV4Y2VwdGlvbiByYWlzZWQnOwogICAgICB9IGNhdGNo
IChlKSB7CiAgICAgICAgaWYgKCdjb2RlJyBpbiBlKQogICAgICAgICAgbXNnICs9ICc7IGNvZGUg
PSAnICsgZS5jb2RlOwogICAgICAgIGlmIChlLmNvZGUgPT0gMSkKICAgICAgICAgIG1zZyA9ICcn
OwogICAgICB9CiAgICAgIGFzc2VydChtc2cgPT0gJycsICJ3aGVuIHRyeWluZyB0byBzdXJyb3Vu
ZCB0d28gaGFsdmVzIG9mIGNvbW1lbnQ6ICIgKyBtc2cpOwogICAgICBhc3NlcnRFcXVhbHMoci50
b1N0cmluZygpLCAiIiwgImNvbW1lbnRzIHJldHVybmVkIHRleHQiKTsKICAgICAgcmV0dXJuIDE7
CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDEyOiBSYW5nZXMgdW5kZXIg
bXV0YXRpb25zOiBpbnNlcnRpb24gaW50byB0ZXh0IG5vZGVzCiAgICAgIHZhciBkb2MgPSBnZXRU
ZXN0RG9jdW1lbnQoKTsKICAgICAgdmFyIHAgPSBkb2MuY3JlYXRlRWxlbWVudCgncCcpOwogICAg
ICB2YXIgdDEgPSBkb2MuY3JlYXRlVGV4dE5vZGUoJzEyMzQ1Jyk7CiAgICAgIHAuYXBwZW5kQ2hp
bGQodDEpOwogICAgICB2YXIgdDIgPSBkb2MuY3JlYXRlVGV4dE5vZGUoJ0FCQ0RFJyk7CiAgICAg
IHAuYXBwZW5kQ2hpbGQodDIpOwogICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChwKTsKICAgICAg
dmFyIHIgPSBkb2MuY3JlYXRlUmFuZ2UoKTsKICAgICAgci5zZXRTdGFydChwLmZpcnN0Q2hpbGQs
IDIpOwogICAgICByLnNldEVuZChwLmZpcnN0Q2hpbGQsIDMpOwogICAgICBhc3NlcnQoIXIuY29s
bGFwc2VkLCAiY29sbGFwc2VkIGlzIHdyb25nIGF0IHN0YXJ0Iik7CiAgICAgIGFzc2VydEVxdWFs
cyhyLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBwLmZpcnN0Q2hpbGQsICJjb21tb25BbmNlc3Rv
ckNvbnRhaW5lciBpcyB3cm9uZyBhdCBzdGFydCIpOwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFy
dENvbnRhaW5lciwgcC5maXJzdENoaWxkLCAic3RhcnRDb250YWluZXIgaXMgd3JvbmcgYXQgc3Rh
cnQiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDIsICJzdGFydE9mZnNldCBp
cyB3cm9uZyBhdCBzdGFydCIpOwogICAgICBhc3NlcnRFcXVhbHMoci5lbmRDb250YWluZXIsIHAu
Zmlyc3RDaGlsZCwgImVuZENvbnRhaW5lciBpcyB3cm9uZyBhdCBzdGFydCIpOwogICAgICBhc3Nl
cnRFcXVhbHMoci5lbmRPZmZzZXQsIDMsICJlbmRPZmZzZXQgaXMgd3JvbmcgYXQgc3RhcnQiKTsK
ICAgICAgYXNzZXJ0RXF1YWxzKHIudG9TdHJpbmcoKSwgIjMiLCAicmFuZ2UgaW4gdGV4dCBub2Rl
IHN0cmluZ2lmaWNhdGlvbiBmYWlsZWQiKTsKICAgICAgci5pbnNlcnROb2RlKHAubGFzdENoaWxk
KTsKICAgICAgYXNzZXJ0RXF1YWxzKHAuY2hpbGROb2Rlcy5sZW5ndGgsIDMsICJpbnNlcnRpb24g
b2Ygbm9kZSBtYWRlIHdyb25nIG51bWJlciBvZiBjaGlsZCBub2RlcyIpOwogICAgICBhc3NlcnRF
cXVhbHMocC5jaGlsZE5vZGVzWzBdLCB0MSwgInVuZXhwZWN0ZWQgZmlyc3QgdGV4dCBub2RlIik7
CiAgICAgIGFzc2VydEVxdWFscyhwLmNoaWxkTm9kZXNbMF0uZGF0YSwgIjEyIiwgInVuZXhwZWN0
ZWQgZmlyc3QgdGV4dCBub2RlIGNvbnRlbnRzIik7CiAgICAgIGFzc2VydEVxdWFscyhwLmNoaWxk
Tm9kZXNbMV0sIHQyLCAidW5leHBlY3RlZCBzZWNvbmQgdGV4dCBub2RlIik7CiAgICAgIGFzc2Vy
dEVxdWFscyhwLmNoaWxkTm9kZXNbMV0uZGF0YSwgIkFCQ0RFIiwgInVuZXhwZWN0ZWQgc2Vjb25k
IHRleHQgbm9kZSIpOwogICAgICBhc3NlcnRFcXVhbHMocC5jaGlsZE5vZGVzWzJdLmRhdGEsICIz
NDUiLCAidW5leHBlY3RlZCB0aGlyZCB0ZXh0IG5vZGUgY29udGVudHMiKTsKICAgICAgLy8gVGhl
IHNwZWMgaXMgdmVyeSB2YWd1ZSBhYm91dCB3aGF0IGV4YWN0bHkgc2hvdWxkIGJlIGluIHRoZSBy
YW5nZSBhZnRlcndhcmRzOgogICAgICAvLyB0aGUgaW5zZXJ0aW9uIHJlc3VsdHMgaW4gYSBzcGxp
dFRleHQoKSwgd2hpY2ggaXQgc2F5cyBpcyBlcXVpdmFsZW50IHRvIGEgdHJ1bmNhdGlvbgogICAg
ICAvLyBmb2xsb3dlZCBieSBhbiBpbnNlcnRpb24sIGJ1dCBpdCBkb2Vzbid0IHNheSB3aGF0IHRv
IGRvIHdoZW4geW91IGhhdmUgYSB0cnVuY2F0aW9uLAogICAgICAvLyBzbyB3ZSBkb24ndCBrbm93
IHdoZXJlIGVpdGhlciB0aGUgc3RhcnQgb3IgdGhlIGVuZCBib3VuZGFyeSBwb2ludHMgZW5kIHVw
LgogICAgICAvLyBUaGUgc3BlYyByZWFsbHkgc2hvdWxkIGJlIGNsYXJpZmllZCBmb3IgaG93IHRv
IGhhbmRsZSBzcGxpdFRleHQoKSBhbmQKICAgICAgLy8gdGV4dCBub2RlIHRydW5jYXRpb24gaW4g
Z2VuZXJhbAogICAgICAvLyBUaGUgb25seSB0aGluZyB0aGF0IHNlZW1zIHZlcnkgY2xlYXIgaXMg
dGhhdCB0aGUgaW5zZXJ0ZWQgdGV4dCBub2RlIHNob3VsZAogICAgICAvLyBiZSBpbiB0aGUgcmFu
Z2UsIGFuZCBpdCBoYXMgdG8gYmUgYXQgdGhlIHN0YXJ0LCBzaW5jZSBpbnNlcnRpb24gYWx3YXlz
IHB1dHMgaXQgYXQKICAgICAgLy8gdGhlIHN0YXJ0LgogICAgICBhc3NlcnQoIXIuY29sbGFwc2Vk
LCAiY29sbGFwc2VkIGlzIHdyb25nIGFmdGVyIGluc2VydGlvbiIpOwogICAgICAvL2Fzc2VydEVx
dWFscyhyLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBwLCAiY29tbW9uQW5jZXN0b3JDb250YWlu
ZXIgaXMgd3JvbmcgYWZ0ZXIgaW5zZXJ0aW9uIik7CiAgICAgIC8vYXNzZXJ0RXF1YWxzKHIuc3Rh
cnRDb250YWluZXIsIHAsICJzdGFydENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBpbnNlcnRpb24i
KTsKICAgICAgLy9hc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMSwgInN0YXJ0T2Zmc2V0IGlz
IHdyb25nIGFmdGVyIGluc2VydGlvbiIpOwogICAgICAvL2Fzc2VydEVxdWFscyhyLmVuZENvbnRh
aW5lciwgcC5sYXN0Q2hpbGQsICJlbmRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgaW5zZXJ0aW9u
Iik7CiAgICAgIC8vYXNzZXJ0RXF1YWxzKHIuZW5kT2Zmc2V0LCAxLCAiZW5kT2Zmc2V0IGlzIHdy
b25nIGFmdGVyIGluc2VydGlvbiIpOwogICAgICBhc3NlcnQoci50b1N0cmluZygpLm1hdGNoKC9e
QUJDREUvKSwgInJhbmdlIGRpZG4ndCBzdGFydCB3aXRoIHRoZSBleHBlY3RlZCB0ZXh0OyByYW5n
ZSBzdHJpbmdpZmllZCB0byAnIiArIHIudG9TdHJpbmcoKSArICInIik7CiAgICAgIHJldHVybiAx
OwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAxMzogUmFuZ2VzIHVuZGVy
IG11dGF0aW9uczogZGVsZXRpb24KICAgICAgdmFyIGRvYyA9IGdldFRlc3REb2N1bWVudCgpOwog
ICAgICB2YXIgcCA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAgIHAuYXBwZW5kQ2hpbGQo
ZG9jLmNyZWF0ZVRleHROb2RlKCIxMjM0NSIpKTsKICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQo
cCk7CiAgICAgIHZhciByID0gZG9jLmNyZWF0ZVJhbmdlKCk7CiAgICAgIHIuc2V0RW5kKGRvYy5i
b2R5LCAxKTsKICAgICAgci5zZXRTdGFydChwLmZpcnN0Q2hpbGQsIDIpOwogICAgICBhc3NlcnQo
IXIuY29sbGFwc2VkLCAiY29sbGFwc2VkIGlzIHdyb25nIGF0IHN0YXJ0Iik7CiAgICAgIGFzc2Vy
dEVxdWFscyhyLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBkb2MuYm9keSwgImNvbW1vbkFuY2Vz
dG9yQ29udGFpbmVyIGlzIHdyb25nIGF0IHN0YXJ0Iik7CiAgICAgIGFzc2VydEVxdWFscyhyLnN0
YXJ0Q29udGFpbmVyLCBwLmZpcnN0Q2hpbGQsICJzdGFydENvbnRhaW5lciBpcyB3cm9uZyBhdCBz
dGFydCIpOwogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMiwgInN0YXJ0T2Zmc2V0
IGlzIHdyb25nIGF0IHN0YXJ0Iik7CiAgICAgIGFzc2VydEVxdWFscyhyLmVuZENvbnRhaW5lciwg
ZG9jLmJvZHksICJlbmRDb250YWluZXIgaXMgd3JvbmcgYXQgc3RhcnQiKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHIuZW5kT2Zmc2V0LCAxLCAiZW5kT2Zmc2V0IGlzIHdyb25nIGF0IHN0YXJ0Iik7CiAg
ICAgIGRvYy5ib2R5LnJlbW92ZUNoaWxkKHApOwogICAgICBhc3NlcnQoci5jb2xsYXBzZWQsICJj
b2xsYXBzZWQgaXMgd3JvbmcgYWZ0ZXIgZGVsZXRpb24iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIu
Y29tbW9uQW5jZXN0b3JDb250YWluZXIsIGRvYy5ib2R5LCAiY29tbW9uQW5jZXN0b3JDb250YWlu
ZXIgaXMgd3JvbmcgYWZ0ZXIgZGVsZXRpb24iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRD
b250YWluZXIsIGRvYy5ib2R5LCAic3RhcnRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgZGVsZXRp
b24iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDAsICJzdGFydE9mZnNldCBp
cyB3cm9uZyBhZnRlciBkZWxldGlvbiIpOwogICAgICBhc3NlcnRFcXVhbHMoci5lbmRDb250YWlu
ZXIsIGRvYy5ib2R5LCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVyIGRlbGV0aW9uIik7CiAg
ICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMCwgImVuZE9mZnNldCBpcyB3cm9uZyBhZnRl
ciBkZWxldGlvbiIpOwogICAgICByZXR1cm4gMTsKICAgIH0sCgogICAgLy8gSFRUUAogICAgZnVu
Y3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDE0OiBIVFRQIC0gQ29udGVudC1UeXBlOiBpbWFnZS9w
bmcKICAgICAgYXNzZXJ0KCFub3RpZmljYXRpb25zWydlbXB0eS5wbmcnXSwgInByaXZpbGVnZSBl
c2NhbGF0aW9uIHNlY3VyaXR5IGJ1ZzogUE5HIHJhbiBzY3JpcHQiKTsKICAgICAgdmFyIGlmcmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXTsKICAgICAgYXNz
ZXJ0KGlmcmFtZSwgIm5vIDxpZnJhbWU+IHN1cHBvcnQiKTsKICAgICAgaWYgKGlmcmFtZSAmJiBp
ZnJhbWUuY29udGVudERvY3VtZW50KSB7CiAgICAgICAgdmFyIHBzID0gaWZyYW1lLmNvbnRlbnRE
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpOwogICAgICAgIGlmIChwcy5sZW5ndGgg
PiAwKSB7CiAgICAgICAgICBpZiAocHNbMF0uZmlyc3RDaGlsZCAmJiBwc1swXS5maXJzdENoaWxk
LmRhdGEgJiYgcHNbMF0uZmlyc3RDaGlsZC5kYXRhID09ICdGQUlMJykKICAgICAgICAgICAgZmFp
bCgiUE5HIHdhcyBwYXJzZWQgYXMgSFRNTC4iKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0
dXJuIDE7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDE1OiBIVFRQIC0g
Q29udGVudC1UeXBlOiB0ZXh0L3BsYWluCiAgICAgIGFzc2VydCghbm90aWZpY2F0aW9uc1snZW1w
dHkudHh0J10sICJwcml2aWxlZ2UgZXNjYWxhdGlvbiBzZWN1cml0eSBidWc6IHRleHQgZmlsZSBy
YW4gc2NyaXB0Iik7CiAgICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnaWZyYW1lJylbMV07CiAgICAgIGFzc2VydChpZnJhbWUsICJubyA8aWZyYW1lPiBzdXBw
b3J0Iik7CiAgICAgIGlmIChpZnJhbWUgJiYgaWZyYW1lLmNvbnRlbnREb2N1bWVudCkgewogICAg
ICAgIHZhciBwcyA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J3AnKTsKICAgICAgICBpZiAocHMubGVuZ3RoID4gMCkgewogICAgICAgICAgaWYgKHBzWzBdLmZp
cnN0Q2hpbGQgJiYgcHNbMF0uZmlyc3RDaGlsZC5kYXRhICYmIHBzWzBdLmZpcnN0Q2hpbGQuZGF0
YSA9PSAnRkFJTCcpCiAgICAgICAgICAgIGZhaWwoInRleHQvcGxhaW4gZmlsZSB3YXMgcGFyc2Vk
IGFzIEhUTUwiKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIDE7CiAgICB9LAogICAg
ZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDE2OiA8b2JqZWN0PiBoYW5kbGluZyBhbmQgSFRU
UCBzdGF0dXMgY29kZXMKICAgICAgdmFyIG9DID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2Jq
ZWN0Jyk7CiAgICAgIG9DLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGQUlM
IikpOwogICAgICB2YXIgb0IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvYmplY3QnKTsKICAg
ICAgdmFyIG9BID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2JqZWN0Jyk7CiAgICAgIG9BLmRh
dGEgPSAic3VwcG9ydC1hLnBuZyI7CiAgICAgIG9CLmRhdGEgPSAic3VwcG9ydC1iLnBuZyI7CiAg
ICAgIG9CLmFwcGVuZENoaWxkKG9DKTsKICAgICAgb0MuZGF0YSA9ICJzdXBwb3J0LWMucG5nIjsK
ICAgICAgb0EuYXBwZW5kQ2hpbGQob0IpOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgibWFwIilbMF0uYXBwZW5kQ2hpbGQob0EpOwogICAgICAvLyBhc3N1bWluZyB0aGUgYWJv
dmUgZGlkbid0IHJhaXNlIGFueSBleGNlcHRpb25zLCB0aGlzIHRlc3QgaGFzIHBhc3NlZAogICAg
ICAvLyAodGhlIHJlYWwgdGVzdCBpcyB3aGV0aGVyIHRoZSByZW5kZXJpbmcgaXMgY29ycmVjdCkK
ICAgICAgcmV0dXJuIDE7CiAgICB9LAoKICAgIC8vIGJ1Y2tldCAyOiBET00yIENvcmUgYW5kIERP
TTIgRXZlbnRzCiAgICAvLyBDb3JlCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgMTc6
IGhhc0F0dHJpYnV0ZSBvbiBhIG1pc3NpbmcgYXR0cmlidXRlCiAgICAgIGFzc2VydCghZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hcCcpWzBdLmhhc0F0dHJpYnV0ZSgnaWQnKSwgImhh
c0F0dHJpYnV0ZSBmYWlsdXJlIik7CiAgICAgIHJldHVybiAyOwogICAgfSwKICAgIGZ1bmN0aW9u
ICgpIHsKICAgICAgLy8gdGVzdCAxODogbm9kZVR5cGUgKHRoaXMgdGVzdCBhbHNvIHJlbGllcyBv
biBhY2N1cmF0ZSBwYXJzaW5nIG9mIHRoZSBkb2N1bWVudCkKICAgICAgYXNzZXJ0RXF1YWxzKGRv
Y3VtZW50Lm5vZGVUeXBlLCA5LCAiZG9jdW1lbnQgbm9kZVR5cGUgd3JvbmciKTsKICAgICAgYXNz
ZXJ0RXF1YWxzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5ub2RlVHlwZSwgMSwgImVsZW1lbnQg
bm9kZVR5cGUgd3JvbmciKTsKICAgICAgYXNzZXJ0RXF1YWxzKGRvY3VtZW50LmNyZWF0ZUF0dHJp
YnV0ZSgndGVzdCcpLm5vZGVUeXBlLCAyLCAiYXR0cmlidXRlIG5vZGVUeXBlIHdyb25nIik7CiAg
ICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmUnKS5maXJzdENo
aWxkLm5vZGVUeXBlLCAzLCAidGV4dCBub2RlIG5vZGVUeXBlIHdyb25nIik7CiAgICAgIGFzc2Vy
dEVxdWFscyhkb2N1bWVudC5maXJzdENoaWxkLm5vZGVUeXBlLCAxMCwgIkRPQ1RZUEUgbm9kZVR5
cGUgd3JvbmciKTsKICAgICAgcmV0dXJuIDI7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAg
ICAvLyB0ZXN0IDE5OiB2YWx1ZSBvZiBjb25zdGFudHMKICAgICAgdmFyIGUgPSBudWxsOwogICAg
ICB0cnkgewogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50KTsKICAgICAgICAgLy8gcmFpc2VzIGEgSElFUkFSQ0hZX1JFUVVFU1RfRVJSCiAg
ICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgIGUgPSBlcnI7CiAgICAgIH0KICAgICAgYXNzZXJ0
RXF1YWxzKGRvY3VtZW50LkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUsIDExLCAiZG9jdW1lbnQgRE9D
VU1FTlRfRlJBR01FTlRfTk9ERSBjb25zdGFudCBtaXNzaW5nIG9yIHdyb25nIik7CiAgICAgIGFz
c2VydEVxdWFscyhkb2N1bWVudC5ib2R5LkNPTU1FTlRfTk9ERSwgOCwgImVsZW1lbnQgQ09NTUVO
VF9OT0RFIGNvbnN0YW50IG1pc3Npbmcgb3Igd3JvbmciKTsKICAgICAgYXNzZXJ0RXF1YWxzKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKS5FTEVNRU5UX05PREUsIDEsICJ0ZXh0IG5vZGUgRUxF
TUVOVF9OT0RFIGNvbnN0YW50IG1pc3Npbmcgb3Igd3JvbmciKTsKICAgICAgYXNzZXJ0KGUuSElF
UkFSQ0hZX1JFUVVFU1RfRVJSID09IDMsICJleGNlcHRpb24gSElFUkFSQ0hZX1JFUVVFU1RfRVJS
IGNvbnN0YW50IG1pc3Npbmcgb3Igd3JvbmciKQogICAgICBhc3NlcnRFcXVhbHMoZS5jb2RlLCAz
LCAiaW5jb3JyZWN0IGV4Y2VwdGlvbiByYWlzZWQgZnJvbSBhcHBlbmRDaGlsZCgpIik7CiAgICAg
IHJldHVybiAyOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAyMDogbnVs
bHMgYnl0ZXMgaW4gdmFyaW91cyBwbGFjZXMKICAgICAgYXNzZXJ0KCFkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYnVja2V0MVwwZXJyb3InKSwgIm51bGwgaW4gZ2V0RWxlbWVudEJ5SWQoKSBwcm9i
YWJseSB0ZXJtaW5hdGVkIHN0cmluZyIpOwogICAgICB2YXIgb2sgPSB0cnVlOwogICAgICB0cnkg
ewogICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm1cMGRpdicpOwogICAgICAgIG9r
ID0gZmFsc2U7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBpZiAoZS5jb2RlICE9IDUpCiAg
ICAgICAgICBvayA9IGZhbHNlOwogICAgICB9CiAgICAgIGFzc2VydChvaywgImRpZG4ndCByYWlz
ZSB0aGUgcmlnaHQgZXhjZXB0aW9uIGZvciBudWxsIGJ5dGUgaW4gY3JlYXRlRWxlbWVudCgpIik7
CiAgICAgIHJldHVybiAyOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAy
MTogYmFzaWMgbmFtZXNwYWNlIHN0dWZmCiAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCdodHRwOi8vbnMuZXhhbXBsZS5jb20vJywgJ3ByZWZpeDpsb2NhbG5hbWUn
KTsKICAgICAgYXNzZXJ0RXF1YWxzKGVsZW1lbnQudGFnTmFtZSwgJ3ByZWZpeDpsb2NhbG5hbWUn
LCAid3JvbmcgdGFnTmFtZSIpOwogICAgICBhc3NlcnRFcXVhbHMoZWxlbWVudC5ub2RlTmFtZSwg
J3ByZWZpeDpsb2NhbG5hbWUnLCAid3Jvbmcgbm9kZU5hbWUiKTsKICAgICAgYXNzZXJ0RXF1YWxz
KGVsZW1lbnQucHJlZml4LCAncHJlZml4JywgIndyb25nIHByZWZpeCIpOwogICAgICBhc3NlcnRF
cXVhbHMoZWxlbWVudC5sb2NhbE5hbWUsICdsb2NhbG5hbWUnLCAid3JvbmcgbG9jYWxOYW1lIik7
CiAgICAgIGFzc2VydEVxdWFscyhlbGVtZW50Lm5hbWVzcGFjZVVSSSwgJ2h0dHA6Ly9ucy5leGFt
cGxlLmNvbS8nLCAid3JvbmcgbmFtZXNwYWNlVVJJIik7CiAgICAgIHJldHVybiAyOwogICAgfSwK
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAyMjogY3JlYXRlRWxlbWVudCgpIHdpdGgg
aW52YWxpZCB0YWcgbmFtZXMKICAgICAgdmFyIHRlc3QgPSBmdW5jdGlvbiAobmFtZSkgewogICAg
ICAgIHZhciByZXN1bHQ7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KG5hbWUpOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHJl
c3VsdCA9IGU7CiAgICAgICAgfQogICAgICAgIGFzc2VydChyZXN1bHQsICJubyBleGNlcHRpb24g
Zm9yIGNyZWF0ZUVsZW1lbnQoJyIgKyBuYW1lICsgIicpIik7CiAgICAgICAgYXNzZXJ0RXF1YWxz
KHJlc3VsdC5jb2RlLCA1LCAid3JvbmcgZXhjZXB0aW9uIGZvciBjcmVhdGVFbGVtZW50KCcgKyBu
YW1lICsgJykiKTsgLy8gSU5WQUxJRF9DSEFSQUNURVJfRVJSCiAgICAgIH0KICAgICAgdGVzdCgn
PGRpdj4nKTsKICAgICAgdGVzdCgnMGRpdicpOwogICAgICB0ZXN0KCdkaSB2Jyk7CiAgICAgIHRl
c3QoJ2RpPHYnKTsKICAgICAgdGVzdCgnLWRpdicpOwogICAgICB0ZXN0KCcuZGl2Jyk7CiAgICAg
IHJldHVybiAyOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAyMzogY3Jl
YXRlRWxlbWVudE5TKCkgd2l0aCBpbnZhbGlkIHRhZyBuYW1lcwogICAgICB2YXIgdGVzdCA9IGZ1
bmN0aW9uIChuYW1lLCBucywgY29kZSkgewogICAgICAgIHZhciByZXN1bHQ7CiAgICAgICAgdHJ5
IHsKICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnMsIG5hbWUp
OwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHJlc3VsdCA9IGU7CiAgICAgICAgfQog
ICAgICAgIGFzc2VydChyZXN1bHQsICJubyBleGNlcHRpb24gZm9yIGNyZWF0ZUVsZW1lbnROUygn
IiArIG5zICsgIicsICciICsgbmFtZSArICInKSIpOwogICAgICAgIGFzc2VydEVxdWFscyhyZXN1
bHQuY29kZSwgY29kZSwgIndyb25nIGV4Y2VwdGlvbiBmb3IgY3JlYXRlRWxlbWVudE5TKCciICsg
bnMgKyAiJywgJyIgKyBuYW1lICsgIicpIik7CiAgICAgIH0KICAgICAgdGVzdCgnPGRpdj4nLCBu
dWxsLCA1KTsKICAgICAgdGVzdCgnMGRpdicsIG51bGwsIDUpOwogICAgICB0ZXN0KCdkaSB2Jywg
bnVsbCwgNSk7CiAgICAgIHRlc3QoJ2RpPHYnLCBudWxsLCA1KTsKICAgICAgdGVzdCgnLWRpdics
IG51bGwsIDUpOwogICAgICB0ZXN0KCcuZGl2JywgbnVsbCwgNSk7CiAgICAgIHRlc3QoJzxkaXY+
JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKICAgICAgdGVzdCgnMGRpdicsICJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgNSk7CiAgICAgIHRlc3QoJ2RpPHYnLCAiaHR0cDovL2V4YW1wbGUuY29t
LyIsIDUpOwogICAgICB0ZXN0KCctZGl2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKICAg
ICAgdGVzdCgnLmRpdicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7CiAgICAgIHRlc3QoJzpk
aXYnLCBudWxsLCAxNCk7CiAgICAgIHRlc3QoJzpkaXYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIs
IDE0KTsKICAgICAgdGVzdCgnZDppdicsIG51bGwsIDE0KTsKICAgICAgdGVzdCgneG1sOnRlc3Qn
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsKICAgICAgdGVzdCgneG1sbnM6dGVzdCcsICJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgMTQpOyAvLyAodGVjaG5pY2FsbHkgYSBET00zIENvcmUgdGVz
dCkKICAgICAgdGVzdCgneDp0ZXN0JywgImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwg
MTQpOyAvLyAodGVjaG5pY2FsbHkgYSBET00zIENvcmUgdGVzdCkKICAgICAgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICd4bWxuczp0ZXN0
Jyk7IC8vICh0ZWNobmljYWxseSBhIERPTTMgQ29yZSB0ZXN0KQogICAgICByZXR1cm4gMjsKICAg
IH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgMjQ6IGV2ZW50IGhhbmRsZXIgYXR0
cmlidXRlcwogICAgICBhc3NlcnRFcXVhbHMoZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoJ29u
bG9hZCcpLCAidXBkYXRlKCkgIC8qIHRoaXMgYXR0cmlidXRlJ3MgdmFsdWUgaXMgdGVzdGVkIGlu
IG9uZSBvZiB0aGUgdGVzdHMgKi8gIiwgIm9ubG9hZCB2YWx1ZSB3cm9uZyIpOwogICAgICByZXR1
cm4gMjsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgMjU6IHRlc3QgbmFt
ZXNwYWNlIGNoZWNraW5nIGluIGNyZWF0ZURvY3VtZW50VHlwZSwgYW5kCiAgICAgIC8vIGNoZWNr
IHRoYXQgZXhjZXB0aW9ucyB0aGF0IGFyZSB0aHJvd24gYXJlIERPTUV4Y2VwdGlvbiBvYmplY3Rz
CiAgICAgIHZhciBtZXNzYWdlID0gIiI7CiAgICAgIHRyeSB7CiAgICAgICAgZG9jdW1lbnQuaW1w
bGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCdhOicsICcnLCAnJyk7IC8qIGRvZXNuJ3Qg
Y29udGFpbiBhbiBpbGxlZ2FsIGNoYXJhY3RlcjsgaXMgbWFsZm9ybWVkICovCiAgICAgICAgbWVz
c2FnZSA9ICJmYWlsZWQgdG8gcmFpc2UgZXhjZXB0aW9uIjsKICAgICAgfSBjYXRjaCAoZSkgewog
ICAgICAgIGlmIChlLmNvZGUgIT0gZS5OQU1FU1BBQ0VfRVJSKQogICAgICAgICAgbWVzc2FnZSA9
ICJ3cm9uZyBleGNlcHRpb24iOwogICAgICAgIGVsc2UgaWYgKGUuSU5WQUxJRF9BQ0NFU1NfRVJS
ICE9IDE1KQogICAgICAgICAgbWVzc2FnZSA9ICJleGNlcHRpb25zIGRvbid0IGhhdmUgYWxsIHRo
ZSBjb25zdGFudHMiOwogICAgICB9CiAgICAgIGlmIChtZXNzYWdlKQogICAgICAgIGZhaWwobWVz
c2FnZSk7CiAgICAgIHJldHVybiAyOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8g
dGVzdCAyNjogY2hlY2sgdGhhdCBkb2N1bWVudCB0cmVlIHN1cnZpdmVzIHdoaWxlIHN0aWxsIGFj
Y2Vzc2libGUKICAgICAgdmFyIGQ7CiAgICAgIC8vIGUxIC0gYW4gZWxlbWVudCB0aGF0J3MgaW4g
YSBkb2N1bWVudAogICAgICBkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1l
bnQobnVsbCwgbnVsbCwgbnVsbCk7CiAgICAgIHZhciBlMSA9IGQuY3JlYXRlRWxlbWVudCgndGVz
dCcpOwogICAgICBkLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgncm9vdCcpKTsKICAgICAg
ZC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZTEpOwogICAgICBhc3NlcnQoZTEucGFyZW50
Tm9kZSwgImUxIC0gcGFyZW50IGVsZW1lbnQgZG9lc24ndCBleGlzdCIpOwogICAgICBhc3NlcnQo
ZTEucGFyZW50Tm9kZS5vd25lckRvY3VtZW50LCAiZTEgLSBkb2N1bWVudCBkb2Vzbid0IGV4aXN0
Iik7CiAgICAgIC8vIGUyIC0gYW4gZWxlbWVudCB0aGF0J3Mgbm90IGluIGEgZG9jdW1lbnQKICAg
ICAgZCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KG51bGwsIG51bGws
IG51bGwpOwogICAgICB2YXIgZTIgPSBkLmNyZWF0ZUVsZW1lbnQoJ3Rlc3QnKTsKICAgICAgZC5j
cmVhdGVFbGVtZW50KCdyb290JykuYXBwZW5kQ2hpbGQoZTIpOwogICAgICBhc3NlcnQoZTIucGFy
ZW50Tm9kZSwgImUyIC0gcGFyZW50IGVsZW1lbnQgZG9lc24ndCBleGlzdCIpOwogICAgICBhc3Nl
cnQoZTIucGFyZW50Tm9kZS5vd25lckRvY3VtZW50LCAiZTIgLSBkb2N1bWVudCBkb2Vzbid0IGV4
aXN0Iik7CiAgICAgIC8vIG5vdyB0cnkgdG8gZGVjb3VwbGUgdGhlbQogICAgICBkID0gbnVsbDsK
ICAgICAga3VuZ0Z1RGVhdGhHcmlwID0gW2UxLCBlMl07CiAgICAgIGFzc2VydChlMS5wYXJlbnRO
b2RlLCAiZTEgLSBwYXJlbnQgZWxlbWVudCBkb2Vzbid0IGV4aXN0IGFmdGVyIGRyb3BwaW5nIHJl
ZmVyZW5jZSB0byBkb2N1bWVudCIpOwogICAgICBhc3NlcnQoZTEucGFyZW50Tm9kZS5vd25lckRv
Y3VtZW50LCAiZTEgLSBkb2N1bWVudCBkb2Vzbid0IGV4aXN0IGFmdGVyIGRyb3BwaW5nIHJlZmVy
ZW5jZSB0byBkb2N1bWVudCIpOwogICAgICBhc3NlcnQoZTIucGFyZW50Tm9kZSwgImUyIC0gcGFy
ZW50IGVsZW1lbnQgZG9lc24ndCBleGlzdCBhZnRlciBkcm9wcGluZyByZWZlcmVuY2UgdG8gZG9j
dW1lbnQiKTsKICAgICAgYXNzZXJ0KGUyLnBhcmVudE5vZGUub3duZXJEb2N1bWVudCwgImUyIC0g
ZG9jdW1lbnQgZG9lc24ndCBleGlzdCBhZnRlciBkcm9wcGluZyByZWZlcmVuY2UgdG8gZG9jdW1l
bnQiKTsKICAgICAgdmFyIGxvb3BzID0gKChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAtIDEuMWUxMikg
LyAzMmU5KSAqIDB4NTAwOyAvLyBpbmNyZWFzZXMgbGluZWFybHkgb3ZlciB0aW1lCiAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbG9vcHM7IGkgKz0gMSkgewogICAgICAgIC8vIHdlIHdhbnQgdG8g
Zm9yY2UgYSBHQyBoZXJlLCBzbyB3ZSB1c2UgdXAgbG90cyBvZiBtZW1vcnkKICAgICAgICAvLyB3
ZSB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBzbmVhayBpbiBhIHBlcmYgdGVzdCB0byBtYWtlIERP
TSBhbmQgSlMgc3R1ZmYgZmFzdGVyLi4uCiAgICAgICAgZCA9IG5ldyBEYXRlKCk7CiAgICAgICAg
ZCA9IG5ldyAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHsgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIHgudG9TdHJpbmcoKSB9IH0gfSkoZC52YWx1ZU9mKCkpOwogICAgICAgIGQgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgiaXRlcmF0aW9uICIgKyBpICsgIiBhdCAiICsgZCk7CiAgICAg
ICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpLmFwcGVuZENoaWxkKGQpOwogICAgICAgIGQg
PSBkLnBhcmVudE5vZGU7CiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZCwgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDEnKS5wYXJlbnROb2RlKTsKICAgICAgICBhc3Nl
cnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDInKS5uZXh0U2libGluZy5wYXJlbnRO
b2RlLnByZXZpb3VzU2libGluZy5maXJzdENoaWxkLmRhdGEubWF0Y2goL0FUXFcvaSksICJpdGVy
YXRpb24gIiArIGkgKyAiIGZhaWxlZCIpOwogICAgICAgIGQuc2V0QXR0cmlidXRlKCdjbGFzcycs
IGQudGV4dENvbnRlbnQpOwogICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZCk7CiAg
ICAgIH0KICAgICAgYXNzZXJ0KGUxLnBhcmVudE5vZGUsICJlMSAtIHBhcmVudCBlbGVtZW50IGRv
ZXNuJ3QgZXhpc3QgYWZ0ZXIgbG9vcGluZyIpOwogICAgICBhc3NlcnQoZTEucGFyZW50Tm9kZS5v
d25lckRvY3VtZW50LCAiZTEgLSBkb2N1bWVudCBkb2Vzbid0IGV4aXN0IGFmdGVyIGxvb3Bpbmci
KTsKICAgICAgYXNzZXJ0RXF1YWxzKGUxLnBhcmVudE5vZGUub3duZXJEb2N1bWVudC5ub2RlVHlw
ZSwgOSwgImUxIC0gZG9jdW1lbnQgbm9kZSB0eXBlIGhhcyB3cm9uZyBub2RlIHR5cGUiKTsKICAg
ICAgYXNzZXJ0KGUyLnBhcmVudE5vZGUsICJlMiAtIHBhcmVudCBlbGVtZW50IGRvZXNuJ3QgZXhp
c3QgYWZ0ZXIgbG9vcGluZyIpOwogICAgICBhc3NlcnQoZTIucGFyZW50Tm9kZS5vd25lckRvY3Vt
ZW50LCAiZTIgLSBkb2N1bWVudCBkb2Vzbid0IGV4aXN0IGFmdGVyIGxvb3BpbmciKTsKICAgICAg
YXNzZXJ0RXF1YWxzKGUyLnBhcmVudE5vZGUub3duZXJEb2N1bWVudC5ub2RlVHlwZSwgOSwgImUy
IC0gZG9jdW1lbnQgbm9kZSB0eXBlIGhhcyB3cm9uZyBub2RlIHR5cGUiKTsKICAgICAgcmV0dXJu
IDI7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDI3OiBhIGNvbnRpbnVh
dGlvbiBvZiB0aGUgcHJldmlvdXMgdGVzdAogICAgICB2YXIgZTEgPSBrdW5nRnVEZWF0aEdyaXBb
MF07CiAgICAgIHZhciBlMiA9IGt1bmdGdURlYXRoR3JpcFsxXTsKICAgICAga3VuZ0Z1RGVhdGhH
cmlwID0gbnVsbDsKICAgICAgYXNzZXJ0KGUxLCAiZTEgLSBlbGVtZW50IGl0c2VsZiBkaWRuJ3Qg
c3Vydml2ZSBhY3Jvc3MgdGVzdHMiKTsKICAgICAgYXNzZXJ0KGUxLnBhcmVudE5vZGUsICJlMSAt
IHBhcmVudCBlbGVtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgd2FpdGluZyIpOwogICAgICBhc3Nl
cnQoZTEucGFyZW50Tm9kZS5vd25lckRvY3VtZW50LCAiZTEgLSBkb2N1bWVudCBkb2Vzbid0IGV4
aXN0IGFmdGVyIHdhaXRpbmciKTsKICAgICAgYXNzZXJ0RXF1YWxzKGUxLnBhcmVudE5vZGUub3du
ZXJEb2N1bWVudC5ub2RlVHlwZSwgOSwgImUxIC0gZG9jdW1lbnQgbm9kZSB0eXBlIGhhcyB3cm9u
ZyBub2RlIHR5cGUgYWZ0ZXIgd2FpdGluZyIpOwogICAgICBhc3NlcnQoZTIsICJlMiAtIGVsZW1l
bnQgaXRzZWxmIGRpZG4ndCBzdXJ2aXZlIGFjcm9zcyB0ZXN0cyIpOwogICAgICBhc3NlcnQoZTIu
cGFyZW50Tm9kZSwgImUyIC0gcGFyZW50IGVsZW1lbnQgZG9lc24ndCBleGlzdCBhZnRlciB3YWl0
aW5nIik7CiAgICAgIGFzc2VydChlMi5wYXJlbnROb2RlLm93bmVyRG9jdW1lbnQsICJlMiAtIGRv
Y3VtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgd2FpdGluZyIpOwogICAgICBhc3NlcnRFcXVhbHMo
ZTIucGFyZW50Tm9kZS5vd25lckRvY3VtZW50Lm5vZGVUeXBlLCA5LCAiZTIgLSBkb2N1bWVudCBu
b2RlIHR5cGUgaGFzIHdyb25nIG5vZGUgdHlwZSBhZnRlciB3YWl0aW5nIik7CiAgICAgIHJldHVy
biAyOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAyODogZ2V0RWxlbWVu
dEJ5SWQoKQogICAgICAvLyAuLi5hbmQgbmFtZT0iIgogICAgICBhc3NlcnQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2Zvcm0nKSAhPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zv
cm0nKVswXSwgImdldEVsZW1lbnRCeUlkKCkgc2VhcmNoZWQgb24gJ25hbWUnIik7CiAgICAgIC8v
IC4uLmFuZCBhIHNwYWNlIGNoYXJhY3RlciBhcyB0aGUgSUQKICAgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ0ZBSUwnKSk7CiAgICAgIGRpdi5pZCA9ICIgIjsKICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOyAvLyBpdCdzIGhpZGRlbiBieSBDU1MKICAgICAgYXNz
ZXJ0KGRpdiA9PT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIiAiKSwgImdldEVsZW1lbnRCeUlk
KCkgZGlkbid0IHJldHVybiB0aGUgcmlnaHQgZWxlbWVudCIpOwogICAgICByZXR1cm4gMjsKICAg
IH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgMjk6IGNoZWNrIHRoYXQgd2hpdGVz
cGFjZSBzdXJ2aXZlcyBjbG9uaW5nCiAgICAgIHZhciB0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCd0YWJsZScpWzBdOwogICAgICB2YXIgdDIgPSB0MS5jbG9uZU5vZGUodHJ1ZSk7
CiAgICAgIGFzc2VydEVxdWFscyh0Mi50Qm9kaWVzWzBdLnJvd3NbMF0uY2VsbHNbMF0uZmlyc3RD
aGlsZC50YWdOYW1lLCAnUCcsICI8cD4gZGlkbid0IGNsb25lIHJpZ2h0Iik7CiAgICAgIGFzc2Vy
dEVxdWFscyh0Mi50Qm9kaWVzWzBdLnJvd3NbMF0uY2VsbHNbMF0uZmlyc3RDaGlsZC5jaGlsZE5v
ZGVzLmxlbmd0aCwgMCwgIjxwPiBnb3QgY2hpbGQgbm9kZXMgYWZ0ZXIgY2xvbmluZyIpOwogICAg
ICBhc3NlcnRFcXVhbHModDIuY2hpbGROb2Rlcy5sZW5ndGgsIDIsICJjbG9uZWQgdGFibGUgaGFk
IHdyb25nIG51bWJlciBvZiBjaGlsZHJlbiIpOwogICAgICBhc3NlcnRFcXVhbHModDIubGFzdENo
aWxkLmRhdGEsICIgIiwgImNsb25lZCB0YWJsZSBsb3N0IHdoaXRlc3BhY2UgdGV4dCBub2RlIik7
CiAgICAgIHJldHVybiAyOwogICAgfSwKCiAgICAvLyBFdmVudHMKICAgIGZ1bmN0aW9uICgpIHsK
ICAgICAgLy8gdGVzdCAzMDogZGlzcGF0Y2hFdmVudCgpCiAgICAgIHZhciBjb3VudCA9IDA7CiAg
ICAgIHZhciBvayA9IHRydWU7CiAgICAgIHZhciB0ZXN0ID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAg
ICAgICAgaWYgKGV2ZW50LmRldGFpbCAhPSA2KQogICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAg
ICBjb3VudCsrOwogICAgICB9OwogICAgICAvLyB0ZXN0IGV2ZW50IGxpc3RlbmVyIGFkZGl0aW9u
CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5hZGRFdmVudExpc3RlbmVy
KCd0ZXN0JywgdGVzdCwgZmFsc2UpOwogICAgICAvLyB0ZXN0IGV2ZW50IGNyZWF0aW9uCiAgICAg
IHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdVSUV2ZW50cycpOwogICAgICBldmVu
dC5pbml0VUlFdmVudCgndGVzdCcsIHRydWUsIGZhbHNlLCBudWxsLCA2KTsKICAgICAgLy8gdGVz
dCBldmVudCBkaXNwYXRjaCBvbiBlbGVtZW50cyBhbmQgdGV4dCBub2RlcwogICAgICBhc3NlcnQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlJykuZGlzcGF0Y2hFdmVudChldmVudCksICJk
aXNwYXRjaEV2ZW50ICMxIGZhaWxlZCIpOwogICAgICBhc3NlcnQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Njb3JlJykubmV4dFNpYmxpbmcuZGlzcGF0Y2hFdmVudChldmVudCksICJkaXNwYXRj
aEV2ZW50ICMyIGZhaWxlZCIpOwogICAgICAvLyB0ZXN0IGV2ZW50IGxpc3RlbmVyIHJlbW92YWwK
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoJ3Rlc3QnLCB0ZXN0LCBmYWxzZSk7CiAgICAgIGFzc2VydChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2NvcmUnKS5kaXNwYXRjaEV2ZW50KGV2ZW50KSwgImRpc3BhdGNoRXZlbnQgIzMgZmFp
bGVkIik7CiAgICAgIGFzc2VydEVxdWFscyhjb3VudCwgMiwgInVuZXhwZWN0ZWQgbnVtYmVyIG9m
IGV2ZW50cyBoYW5kbGVkIik7CiAgICAgIGFzc2VydChvaywgInVuZXhwZWN0ZWQgZXZlbnRzIGhh
bmRsZWQiKTsKICAgICAgcmV0dXJuIDI7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAv
LyB0ZXN0IDMxOiBldmVudC5zdG9wUHJvcGFnYXRpb24oKSBhbmQgY2FwdHVyZQogICAgICAvLyB3
ZSdyZSBnb2luZyB0byB1c2UgYW4gaW5wdXQgZWxlbWVudCBiZWNhdXNlIHdlIGNhbiBjYXVzZSBl
dmVudHMgdG8gYnViYmxlIGZyb20gaXQKICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW5wdXQnKTsKICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOwogICAgICBkaXYuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRpdik7CiAgICAgIC8vIHRoZSB0ZXN0IHdpbGwgY29uc2lzdCBvZiB0d28g
ZXZlbnQgaGFuZGxlcnM6CiAgICAgIHZhciBvayA9IHRydWU7CiAgICAgIHZhciBjYXB0dXJlQ291
bnQgPSAwOwogICAgICB2YXIgdGVzdENhcHR1cmUgPSBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAg
ICBvayA9IG9rICYmCiAgICAgICAgICAgICAoZXZlbnQudHlwZSA9PSAnY2xpY2snKSAmJgogICAg
ICAgICAgICAgKGV2ZW50LnRhcmdldCA9PSBpbnB1dCkgJiYKICAgICAgICAgICAgIChldmVudC5j
dXJyZW50VGFyZ2V0ID09IGRpdikgJiYKICAgICAgICAgICAgIChldmVudC5ldmVudFBoYXNlID09
IDEpICYmCiAgICAgICAgICAgICAoZXZlbnQuYnViYmxlcykgJiYKICAgICAgICAgICAgIChldmVu
dC5jYW5jZWxhYmxlKTsKICAgICAgICBjYXB0dXJlQ291bnQrKzsKICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsgLy8gdGhpcyBzaG91bGRuJ3Qgc3RvcCBpdCBmcm9tIGZpcmluZyBib3Ro
IHRpbWVzIG9uIHRoZSBkaXYgZWxlbWVudAogICAgICB9OwogICAgICB2YXIgdGVzdEJ1YmJsZSA9
IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIG9rID0gZmFsc2U7CiAgICAgIH07CiAgICAgIC8v
IG9uZSBvZiB3aGljaCBpcyBhZGRlZCB0d2ljZToKICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIo
J2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7IHRlc3RDYXB0dXJlKGV2ZW50KSB9LCB0cnVlKTsK
ICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7IHRl
c3RDYXB0dXJlKGV2ZW50KSB9LCB0cnVlKTsKICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ2Ns
aWNrJywgdGVzdEJ1YmJsZSwgZmFsc2UpOwogICAgICAvLyB3ZSBjYXVzZSBhbiBldmVudCB0byBi
dWJibGUgbGlrZSB0aGlzOgogICAgICBpbnB1dC50eXBlID0gJ3Jlc2V0JzsKICAgICAgaW5wdXQu
Y2xpY2soKTsKICAgICAgLy8gY2xlYW51cCBhZnRlcndhcmRzCiAgICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZGl2KTsKICAgICAgLy8gY2FwdHVyZSBoYW5kbGVyIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIHR3aWNlCiAgICAgIGFzc2VydEVxdWFscyhjYXB0dXJlQ291bnQsIDIsICJjYXB0
dXJlIGhhbmRsZXIgY2FsbGVkIHRoZSB3cm9uZyBudW1iZXIgb2YgdGltZXMiKTsKICAgICAgYXNz
ZXJ0KG9rLCAiY2FwdHVyZSBoYW5kbGVyIGNhbGxlZCBpbmNvcnJlY3RseSIpOwogICAgICByZXR1
cm4gMjsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgMzI6IGV2ZW50cyBi
dWJibGluZyB0aHJvdWdoIERvY3VtZW50IG5vZGUKICAgICAgLy8gZXZlbnQgaGFuZGxlcjoKICAg
ICAgdmFyIG9rID0gdHJ1ZTsKICAgICAgdmFyIGNvdW50ID0gMDsKICAgICAgdmFyIHRlc3QgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBjb3VudCArPSAxOwogICAgICAgIGlmIChldmVudC5l
dmVudFBoYXNlICE9IDMpCiAgICAgICAgICBvayA9IGZhbHNlOwogICAgICB9CiAgICAgIC8vIHJl
Z2lzdGVyIGV2ZW50IGhhbmRsZXIKICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVy
KCdjbGljaycsIHRlc3QsIGZhbHNlKTsKICAgICAgLy8gY3JlYXRlIGFuIGVsZW1lbnQgdGhhdCBi
dWJibGVzIGFuIGV2ZW50LCBhbmQgYnViYmxlIGl0CiAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKICAgICAgZGl2LmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOwogICAgICBpbnB1dC50eXBlID0gJ3Jlc2V0JzsKICAg
ICAgaW5wdXQuY2xpY2soKTsKICAgICAgLy8gdW5yZWdpc3RlciBldmVudCBoYW5kbGVyCiAgICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0ZXN0LCBmYWxzZSk7
CiAgICAgIC8vIGNoZWNrIHRoYXQgaXQncyByZW1vdmVkIGZvciBnb29kCiAgICAgIGlucHV0LmNs
aWNrKCk7CiAgICAgIC8vIHJlbW92ZSB0aGUgbmV3bHkgYWRkZWQgZWxlbWVudHMKICAgICAgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOwogICAgICBhc3NlcnRFcXVhbHMoY291bnQsIDEs
ICJjYXB0dXJlIGhhbmRsZXIgY2FsbGVkIHRoZSB3cm9uZyBudW1iZXIgb2YgdGltZXMiKTsKICAg
ICAgYXNzZXJ0KG9rLCAiY2FwdHVyZSBoYW5kbGVyIGNhbGxlZCBpbmNvcnJlY3RseSIpOwogICAg
ICByZXR1cm4gMjsKICAgIH0sCgogICAgLy8gYnVja2V0IDM6IERPTTIgVmlld3MsIERPTTIgU3R5
bGUsIGFuZCBTZWxlY3RvcnMKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAzMzogYmFz
aWMgdGVzdHMgZm9yIHNlbGVjdG9ycyAtIGNsYXNzZXMsIGF0dHJpYnV0ZXMKICAgICAgdmFyIHA7
CiAgICAgIHZhciBidWlsZGVyID0gZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgcCA9IGRvYy5jcmVh
dGVFbGVtZW50KCJwIik7CiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7CiAgICAgIH07
CiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgewogICAgICAg
IGJ1aWxkZXIoZG9jKTsKICAgICAgICBwLmNsYXNzTmFtZSA9ICJzZWxlY3RvclBpbmdUZXN0IjsK
ICAgICAgICB2YXIgZ29vZCA9IGFkZCgiLnNlbGVjdG9yUGluZ1Rlc3QiKTsKICAgICAgICBhZGQo
Ii5TZWxlY3RvclBpbmdUZXN0Iik7CiAgICAgICAgYWRkKCIuc2VsZWN0b3JwaW5ndGVzdCIpOwog
ICAgICAgIGV4cGVjdChkb2MuYm9keSwgMCwgImZhaWx1cmUgMSIpOwogICAgICAgIGV4cGVjdChw
LCBnb29kLCAiZmFpbHVyZSAyIik7CiAgICAgIH0pOwogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rp
b24gKGRvYywgYWRkLCBleHBlY3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAgcC5j
bGFzc05hbWUgPSAnYVx1MDAyMGJcdTAwMDljXHUwMDBBZFx1MDAwRGVcdTAwMENmXHUyMDAzZ1x1
MzAwMGgnOwogICAgICAgIHZhciBnb29kID0gYWRkKCIuYS5iLmMuZC5lLmZcXDIwMDNnXFwzMDAw
aCIpOwogICAgICAgIGV4cGVjdChwLCBnb29kLCAid2hpdGVzcGFjZSBlcnJvciBpbiBjbGFzcyBw
cm9jZXNzaW5nIik7CiAgICAgIH0pOwogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywg
YWRkLCBleHBlY3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAgcC5jbGFzc05hbWUg
PSAic2VsZWN0b3JQaW5nVGVzdCI7CiAgICAgICAgdmFyIGdvb2QgPSBhZGQoIltjbGFzcz1zZWxl
Y3RvclBpbmdUZXN0XSIpOwogICAgICAgIGFkZCgiW2NsYXNzPVNlbGVjdG9yUGluZ1Rlc3RdIik7
CiAgICAgICAgYWRkKCJbY2xhc3M9c2VsZWN0b3JwaW5ndGVzdF0iKTsKICAgICAgICBleHBlY3Qo
ZG9jLmJvZHksIDAsICJmYWlsdXJlIDMiKTsKICAgICAgICBleHBlY3QocCwgZ29vZCwgImNsYXNz
IGF0dHJpYnV0ZSBtYXRjaGluZyBmYWlsZWQiKTsKICAgICAgfSk7CiAgICAgIHNlbGVjdG9yVGVz
dChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgewogICAgICAgIGJ1aWxkZXIoZG9jKTsKICAg
ICAgICBwLmNsYXNzTmFtZSA9ICJzZWxlY3RvclBpbmdUZXN0IjsKICAgICAgICB2YXIgZ29vZCA9
IGFkZCgiW3RpdGxlPXNlbGVjdG9yUGluZ1Rlc3RdIik7CiAgICAgICAgYWRkKCJbdGl0bGU9U2Vs
ZWN0b3JQaW5nVGVzdF0iKTsKICAgICAgICBhZGQoIlt0aXRsZT1zZWxlY3RvcnBpbmd0ZXN0XSIp
OwogICAgICAgIGV4cGVjdChkb2MuYm9keSwgMCwgImZhaWx1cmUgNCIpOwogICAgICAgIGV4cGVj
dChwLCAwLCAiZmFpbHVyZSA1Iik7CiAgICAgICAgcC50aXRsZSA9ICJzZWxlY3RvclBpbmdUZXN0
IjsKICAgICAgICBleHBlY3QoZG9jLmJvZHksIDAsICJmYWlsdXJlIDYiKTsKICAgICAgICBleHBl
Y3QocCwgZ29vZCwgImZhaWx1cmUgNyIpOwogICAgICB9KTsKICAgICAgc2VsZWN0b3JUZXN0KGZ1
bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CiAgICAgICAgYnVpbGRlcihkb2MpOwogICAgICAg
IHAuc2V0QXR0cmlidXRlKCdhbGlnbicsICdyaWdodCBhbmQgbGVmdCcpOwogICAgICAgIHZhciBn
b29kID0gYWRkKCJbYWxpZ249XCJyaWdodCBhbmQgbGVmdFwiXSIpOwogICAgICAgIGFkZCgiW2Fs
aWduPWxlZnRdIik7CiAgICAgICAgYWRkKCJbYWxpZ249cmlnaHRdIik7CiAgICAgICAgZXhwZWN0
KHAsIGdvb2QsICJhbGlnbiBhdHRyaWJ1dGUgbWlzbWF0Y2giKTsKICAgICAgfSk7CiAgICAgIHJl
dHVybiAzOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAzNDogOmxhbmco
KSBhbmQgW3w9XQogICAgICB2YXIgZGl2MTsKICAgICAgdmFyIGRpdjI7CiAgICAgIHZhciBwOwog
ICAgICB2YXIgYnVpbGRlciA9IGZ1bmN0aW9uKGRvYykgewogICAgICAgIGRpdjEgPSBkb2MuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2MS5zZXRBdHRyaWJ1dGUoImxhbmciLCAiZW5n
bGlzaCIpOwogICAgICAgIGRpdjEuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJ3aWRnZXQtdHJlZSIp
OwogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGRpdjEpOwogICAgICAgIGRpdjIgPSBkb2Mu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2Mi5zZXRBdHRyaWJ1dGUoImxhbmciLCAi
ZW4tR0IiKTsKICAgICAgICBkaXYyLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAiV0lER0VUIik7CiAg
ICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZGl2Mik7CiAgICAgICAgcCA9IGRvYy5jcmVhdGVF
bGVtZW50KCdwJyk7CiAgICAgICAgZGl2Mi5hcHBlbmRDaGlsZChwKTsKICAgICAgfTsKICAgICAg
c2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CiAgICAgICAgYnVpbGRl
cihkb2MpOwogICAgICAgIHZhciBsYW5nX2VuID0gYWRkKCI6bGFuZyhlbikiKTsKICAgICAgICBl
eHBlY3QoZGl2MSwgMCwgImxhbmc9ZW5nbGlzaCBzaG91bGQgbm90IGJlIG1hdGNoZWQgYnkgOmxh
bmcoZW4pIik7CiAgICAgICAgZXhwZWN0KGRpdjIsIGxhbmdfZW4sICJsYW5nPWVuLUdCIHNob3Vs
ZCBiZSBtYXRjaGVkIGJ5IDpsYW5nKGVuKSIpOwogICAgICAgIGV4cGVjdChwLCBsYW5nX2VuLCAi
ZGVzY2VuZGFudHMgaW5oZXJpdGluZyBsYW5nPWVuLUdCIHNob3VsZCBiZSBtYXRjaGVkIGJ5IDps
YW5nKGVuKSIpOwogICAgICB9KTsKICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFk
ZCwgZXhwZWN0KSB7CiAgICAgICAgYnVpbGRlcihkb2MpOwogICAgICAgIHZhciBjbGFzc193aWRn
ZXQgPSBhZGQoIltjbGFzc3w9d2lkZ2V0XSIpOwogICAgICAgIGV4cGVjdChkaXYxLCBjbGFzc193
aWRnZXQsICJjbGFzcyBhdHRyaWJ1dGUgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSB8PSBhdHRyaWJ1
dGUgc2VsZWN0b3JzIik7CiAgICAgICAgZXhwZWN0KGRpdjIsIDAsICJjbGFzcyBhdHRyaWJ1dGUg
aXMgY2FzZS1zZW5zaXRpdmUiKTsKICAgICAgfSk7CiAgICAgIHJldHVybiAzOwogICAgfSwKICAg
IGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCAzNTogOmZpcnN0LWNoaWxkCiAgICAgIHNlbGVj
dG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgewogICAgICAgIHZhciBub3RGaXJz
dCA9IDA7CiAgICAgICAgdmFyIGZpcnN0ID0gYWRkKCI6Zmlyc3QtY2hpbGQiKTsKICAgICAgICB2
YXIgcDEgPSBkb2MuY3JlYXRlRWxlbWVudCgicCIpOwogICAgICAgIGRvYy5ib2R5LmFwcGVuZENo
aWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiIFRFU1QgIikpOwogICAgICAgIGRvYy5ib2R5LmFwcGVu
ZENoaWxkKHAxKTsKICAgICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxlbWVudCwgbm90Rmlyc3Qs
ICJyb290IGVsZW1lbnQsIHdpdGggbm8gcGFyZW50IG5vZGUsIGNsYWltcyB0byBiZSBhIDpmaXJz
dC1jaGlsZCIpOwogICAgICAgIGV4cGVjdChkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQs
IGZpcnN0LCAiZmlyc3QgY2hpbGQgb2Ygcm9vdCBub2RlIGRpZG4ndCBtYXRjaCA6Zmlyc3QtY2hp
bGQiKTsKICAgICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLmZpcnN0
Q2hpbGQsIGZpcnN0LCAiZmFpbHVyZSAzIik7CiAgICAgICAgZXhwZWN0KGRvYy5ib2R5LCBub3RG
aXJzdCwgImZhaWx1cmUgNCIpOwogICAgICAgIGV4cGVjdChwMSwgZmlyc3QsICJmYWlsdXJlIDUi
KTsKICAgICAgICB2YXIgcDIgPSBkb2MuY3JlYXRlRWxlbWVudCgicCIpOwogICAgICAgIGRvYy5i
b2R5LmFwcGVuZENoaWxkKHAyKTsKICAgICAgICBleHBlY3QoZG9jLmJvZHksIG5vdEZpcnN0LCAi
ZmFpbHVyZSA2Iik7CiAgICAgICAgZXhwZWN0KHAxLCBmaXJzdCwgImZhaWx1cmUgNyIpOwogICAg
ICAgIGV4cGVjdChwMiwgbm90Rmlyc3QsICJmYWlsdXJlIDgiKTsKICAgICAgICB2YXIgcDAgPSBk
b2MuY3JlYXRlRWxlbWVudCgicCIpOwogICAgICAgIGRvYy5ib2R5Lmluc2VydEJlZm9yZShwMCwg
cDEpOwogICAgICAgIGV4cGVjdChkb2MuYm9keSwgbm90Rmlyc3QsICJmYWlsdXJlIDkiKTsKICAg
ICAgICBleHBlY3QocDAsIGZpcnN0LCAiZmFpbHVyZSAxMCIpOwogICAgICAgIGV4cGVjdChwMSwg
bm90Rmlyc3QsICI6Zmlyc3QtY2hpbGQgc3RpbGwgYXBwbGllcyB0byBlbGVtZW50IHRoYXQgd2Fz
IHByZXZpb3VzbHkgYSBmaXJzdCBjaGlsZCIpOwogICAgICAgIGV4cGVjdChwMiwgbm90Rmlyc3Qs
ICJmYWlsdXJlIDEyIik7CiAgICAgICAgZG9jLmJvZHkuaW5zZXJ0QmVmb3JlKHAwLCBwMik7CiAg
ICAgICAgZXhwZWN0KGRvYy5ib2R5LCBub3RGaXJzdCwgImZhaWx1cmUgMTMiKTsKICAgICAgICBl
eHBlY3QocDEsIGZpcnN0LCAiZmFpbHVyZSAxNCIpOwogICAgICAgIGV4cGVjdChwMCwgbm90Rmly
c3QsICJmYWlsdXJlIDE1Iik7CiAgICAgICAgZXhwZWN0KHAyLCBub3RGaXJzdCwgImZhaWx1cmUg
MTYiKTsKICAgICAgfSk7CiAgICAgIHJldHVybiAzOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsK
ICAgICAgLy8gdGVzdCAzNjogOmxhc3QtY2hpbGQKICAgICAgdmFyIHAxOwogICAgICB2YXIgcDI7
CiAgICAgIHZhciBidWlsZGVyID0gZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgcDEgPSBkb2MuY3Jl
YXRlRWxlbWVudCgncCcpOwogICAgICAgIHAyID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAg
ICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChwMSk7CiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hp
bGQocDIpOwogICAgICB9OwogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBl
eHBlY3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAgdmFyIGxhc3QgPSBhZGQoIjps
YXN0LWNoaWxkIik7CiAgICAgICAgZXhwZWN0KHAxLCAwLCAiY29udHJvbCB0ZXN0IGZvciA6bGFz
dC1jaGlsZCBmYWlsZWQiKTsKICAgICAgICBleHBlY3QocDIsIGxhc3QsICJsYXN0IGNoaWxkIGRp
ZCBub3QgbWF0Y2ggOmxhc3QtY2hpbGQiKTsKICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChw
MSk7CiAgICAgICAgZXhwZWN0KHAyLCAwLCAiOmxhc3QtY2hpbGQgbWF0Y2hlZCBlbGVtZW50IHdp
dGggYSBmb2xsb3dpbmcgc2libGluZyIpOwogICAgICAgIGV4cGVjdChwMSwgbGFzdCwgImZhaWx1
cmUgNCIpOwogICAgICAgIHAxLmFwcGVuZENoaWxkKHAyKTsKICAgICAgICBleHBlY3QocDIsIGxh
c3QsICJmYWlsdXJlIDUiKTsKICAgICAgICBleHBlY3QocDEsIGxhc3QsICJmYWlsdXJlIDYiKTsK
ICAgICAgfSk7CiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkg
ewogICAgICAgIGJ1aWxkZXIoZG9jKTsKICAgICAgICB2YXIgbGFzdCA9IGFkZCgiOmxhc3QtY2hp
bGQiKTsKICAgICAgICBleHBlY3QocDEsIDAsICJmYWlsdXJlIDciKTsKICAgICAgICBleHBlY3Qo
cDIsIGxhc3QsICJmYWlsdXJlIDgiKTsKICAgICAgICBkb2MuYm9keS5pbnNlcnRCZWZvcmUocDIs
IHAxKTsKICAgICAgICBleHBlY3QocDIsIDAsICJmYWlsdXJlIDkiKTsKICAgICAgICBleHBlY3Qo
cDEsIGxhc3QsICJmYWlsdXJlIDEwIik7CiAgICAgIH0pOwogICAgICBzZWxlY3RvclRlc3QoZnVu
Y3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAg
dmFyIGxhc3QgPSBhZGQoIjpsYXN0LWNoaWxkIik7CiAgICAgICAgZXhwZWN0KHAxLCAwLCAiZmFp
bHVyZSAxMSIpOwogICAgICAgIGV4cGVjdChwMiwgbGFzdCwgImZhaWx1cmUgMTIiKTsKICAgICAg
ICBkb2MuYm9keS5yZW1vdmVDaGlsZChwMik7CiAgICAgICAgZXhwZWN0KHAxLCBsYXN0LCAiZmFp
bHVyZSAxMyIpOwogICAgICAgIGFzc2VydEVxdWFscyhwMS5uZXh0U2libGluZywgbnVsbCwgImZh
aWx1cmUgMTQiKTsKICAgICAgICBhc3NlcnRFcXVhbHMocDIucGFyZW50Tm9kZSwgbnVsbCwgImZh
aWx1cmUgMTUiKTsKICAgICAgfSk7CiAgICAgIHJldHVybiAzOwogICAgfSwKICAgIGZ1bmN0aW9u
ICgpIHsKICAgICAgLy8gdGVzdCAzNzogOm9ubHktY2hpbGQKICAgICAgdmFyIHAxOwogICAgICB2
YXIgcDI7CiAgICAgIHZhciBidWlsZGVyID0gZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgcDEgPSBk
b2MuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICAgIHAyID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3An
KTsKICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChwMSk7CiAgICAgICAgZG9jLmJvZHkuYXBw
ZW5kQ2hpbGQocDIpOwogICAgICB9OwogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywg
YWRkLCBleHBlY3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAgdmFyIG9ubHkgPSBh
ZGQoIjpvbmx5LWNoaWxkIik7CiAgICAgICAgZXhwZWN0KHAxLCAwLCAiY29udHJvbCB0ZXN0IGZv
ciA6b25seS1jaGlsZCBmYWlsZWQiKTsKICAgICAgICBleHBlY3QocDIsIDAsICJmYWlsdXJlIDIi
KTsKICAgICAgICBkb2MuYm9keS5yZW1vdmVDaGlsZChwMik7CiAgICAgICAgZXhwZWN0KHAxLCBv
bmx5LCAiOm9ubHktY2hpbGQgZGlkIG5vdCBtYXRjaCBvbmx5IGNoaWxkIik7CiAgICAgICAgcDEu
YXBwZW5kQ2hpbGQocDIpOwogICAgICAgIGV4cGVjdChwMiwgb25seSwgImZhaWx1cmUgNCIpOwog
ICAgICAgIGV4cGVjdChwMSwgb25seSwgImZhaWx1cmUgNSIpOwogICAgICB9KTsKICAgICAgc2Vs
ZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CiAgICAgICAgYnVpbGRlcihk
b2MpOwogICAgICAgIHZhciBvbmx5ID0gYWRkKCI6b25seS1jaGlsZCIpOwogICAgICAgIGV4cGVj
dChwMSwgMCwgImZhaWx1cmUgNiIpOwogICAgICAgIGV4cGVjdChwMiwgMCwgImZhaWx1cmUgNyIp
OwogICAgICAgIGRvYy5ib2R5LnJlbW92ZUNoaWxkKHAxKTsKICAgICAgICBleHBlY3QocDIsIG9u
bHksICJmYWlsdXJlIDgiKTsKICAgICAgICBwMi5hcHBlbmRDaGlsZChwMSk7CiAgICAgICAgZXhw
ZWN0KHAyLCBvbmx5LCAiZmFpbHVyZSA5Iik7CiAgICAgICAgZXhwZWN0KHAxLCBvbmx5LCAiZmFp
bHVyZSAxMCIpOwogICAgICB9KTsKICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFk
ZCwgZXhwZWN0KSB7CiAgICAgICAgYnVpbGRlcihkb2MpOwogICAgICAgIHZhciBvbmx5ID0gYWRk
KCI6b25seS1jaGlsZCIpOwogICAgICAgIGV4cGVjdChwMSwgMCwgImZhaWx1cmUgMTEiKTsKICAg
ICAgICBleHBlY3QocDIsIDAsICJmYWlsdXJlIDEyIik7CiAgICAgICAgdmFyIHNwYW4xID0gZG9j
LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICBwMS5hcHBlbmRDaGlsZChzcGFuMSk7CiAg
ICAgICAgZXhwZWN0KHAxLCAwLCAiZmFpbHVyZSAxMyIpOwogICAgICAgIGV4cGVjdChwMiwgMCwg
ImZhaWx1cmUgMTQiKTsKICAgICAgICBleHBlY3Qoc3BhbjEsIG9ubHksICJmYWlsdXJlIDE1Iik7
CiAgICAgICAgdmFyIHNwYW4yID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICBw
MS5hcHBlbmRDaGlsZChzcGFuMik7CiAgICAgICAgZXhwZWN0KHAxLCAwLCAiZmFpbHVyZSAxNiIp
OwogICAgICAgIGV4cGVjdChwMiwgMCwgImZhaWx1cmUgMTciKTsKICAgICAgICBleHBlY3Qoc3Bh
bjEsIDAsICJmYWlsdXJlIDE4Iik7CiAgICAgICAgZXhwZWN0KHNwYW4yLCAwLCAiZmFpbHVyZSAx
OSIpOwogICAgICB9KTsKICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhw
ZWN0KSB7CiAgICAgICAgYnVpbGRlcihkb2MpOwogICAgICAgIHZhciBvbmx5ID0gYWRkKCI6b25s
eS1jaGlsZCIpOwogICAgICAgIGV4cGVjdChwMSwgMCwgImZhaWx1cmUgMjAiKTsKICAgICAgICBl
eHBlY3QocDIsIDAsICJmYWlsdXJlIDIxIik7CiAgICAgICAgdmFyIHNwYW4xID0gZG9jLmNyZWF0
ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICBwMi5hcHBlbmRDaGlsZChzcGFuMSk7CiAgICAgICAg
ZXhwZWN0KHAxLCAwLCAiZmFpbHVyZSAyMiIpOwogICAgICAgIGV4cGVjdChwMiwgMCwgImZhaWx1
cmUgMjMiKTsKICAgICAgICBleHBlY3Qoc3BhbjEsIG9ubHksICJmYWlsdXJlIDI0Iik7CiAgICAg
ICAgdmFyIHNwYW4yID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICBwMi5pbnNl
cnRCZWZvcmUoc3BhbjIsIHNwYW4xKTsKICAgICAgICBleHBlY3QocDEsIDAsICJmYWlsdXJlIDI1
Iik7CiAgICAgICAgZXhwZWN0KHAyLCAwLCAiZmFpbHVyZSAyNiIpOwogICAgICAgIGV4cGVjdChz
cGFuMSwgMCwgImZhaWx1cmUgMjciKTsKICAgICAgICBleHBlY3Qoc3BhbjIsIDAsICJmYWlsdXJl
IDI4Iik7CiAgICAgIH0pOwogICAgICByZXR1cm4gMzsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7
CiAgICAgIC8vIHRlc3QgMzg6IDplbXB0eQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRv
YywgYWRkLCBleHBlY3QpIHsKICAgICAgICB2YXIgZW1wdHkgPSBhZGQoIjplbXB0eSIpOwogICAg
ICAgIHZhciBwID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgICBkb2MuYm9keS5hcHBl
bmRDaGlsZChwKTsKICAgICAgICBleHBlY3QocCwgZW1wdHksICJlbXB0eSBlbGVtZW50IGRpZG4n
dCBtYXRjaCA6ZW1wdHkiKTsKICAgICAgICB2YXIgc3BhbiA9IGRvYy5jcmVhdGVFbGVtZW50KCdz
cGFuJyk7CiAgICAgICAgcC5hcHBlbmRDaGlsZChzcGFuKTsKICAgICAgICBleHBlY3QocCwgMCwg
InJlbW92aW5nIGFsbCBjaGlsZHJlbiBkaWRuJ3QgbWFrZSB0aGUgZWxlbWVudCBtYXRjaCA6ZW1w
dHkiKTsKICAgICAgICBwLnJlbW92ZUNoaWxkKHNwYW4pOwogICAgICAgIHAuYXBwZW5kQ2hpbGQo
ZG9jLmNyZWF0ZUNvbW1lbnQoImMiKSk7CiAgICAgICAgcC5hcHBlbmRDaGlsZChkb2MuY3JlYXRl
VGV4dE5vZGUoImEiKSk7CiAgICAgICAgZXhwZWN0KHAsIDAsICJlbGVtZW50IHdpdGggbm8gY2hp
bGQgZWxlbWVudCBub2RlcyBkaWRuJ3QgbWF0Y2ggOmVtcHR5Iik7CiAgICAgIH0pOwogICAgICBy
ZXR1cm4gMzsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgMzk6IDpudGgt
Y2hpbGQsIDpudGgtbGFzdC1jaGlsZAogICAgICB2YXIgcHM7CiAgICAgIHZhciBidWlsZGVyID0g
ZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgcHMgPSBbCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVu
dCgncCcpLAogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwKICAgICAgICAgIGRvYy5j
cmVhdGVFbGVtZW50KCdwJyksCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAogICAg
ICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwKICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50
KCdwJyksCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAogICAgICAgICAgZG9jLmNy
ZWF0ZUVsZW1lbnQoJ3AnKSwKICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksCiAgICAg
ICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQo
J3AnKSwKICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksCiAgICAgICAgICBkb2MuY3Jl
YXRlRWxlbWVudCgncCcpCiAgICAgICAgXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBz
Lmxlbmd0aDsgaSArPSAxKQogICAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocHNbaV0pOwog
ICAgICB9OwogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsK
ICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLWNoaWxk
KG9kZCkiKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSArPSAxKQog
ICAgICAgICAgZXhwZWN0KHBzW2ldLCBpICUgMiA/IDAgOiBtYXRjaCwgIjpudGgtY2hpbGQob2Rk
KSBmYWlsZWQgd2l0aCBjaGlsZCAiICsgaSk7CiAgICAgIH0pOwogICAgICBzZWxlY3RvclRlc3Qo
ZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAg
ICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLWNoaWxkKGV2ZW4pIik7CiAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBwcy5sZW5ndGg7IGkgKz0gMSkKICAgICAgICAgIGV4cGVjdChwc1tpXSwgaSAl
IDIgPyBtYXRjaCA6IDAgLCAiOm50aC1jaGlsZChldmVuKSBmYWlsZWQgd2l0aCBjaGlsZCAiICsg
aSk7CiAgICAgIH0pOwogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBl
Y3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bnRo
LWNoaWxkKG9kZCkiKTsKICAgICAgICBkb2MuYm9keS5yZW1vdmVDaGlsZChwc1s1XSk7CiAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpICs9IDEpCiAgICAgICAgICBleHBlY3QocHNbaV0s
IGkgJSAyID8gMCA6IG1hdGNoLCAiOm50aC1jaGlsZChvZGQpIGZhaWxlZCBhZnRlciByZW1vdmFs
IHdpdGggY2hpbGQgIiArIGkpOwogICAgICAgIGZvciAodmFyIGkgPSA2OyBpIDwgcHMubGVuZ3Ro
OyBpICs9IDEpCiAgICAgICAgICBleHBlY3QocHNbaV0sIGkgJSAyID8gbWF0Y2ggOiAwLCAiOm50
aC1jaGlsZChvZGQpIGZhaWxlZCBhZnRlciByZW1vdmFsIHdpdGggY2hpbGQgIiArIGkpOwogICAg
ICB9KTsKICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CiAg
ICAgICAgYnVpbGRlcihkb2MpOwogICAgICAgIHZhciBtYXRjaCA9IGFkZCgiOm50aC1jaGlsZChl
dmVuKSIpOwogICAgICAgIGRvYy5ib2R5LnJlbW92ZUNoaWxkKHBzWzVdKTsKICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDU7IGkgKz0gMSkKICAgICAgICAgIGV4cGVjdChwc1tpXSwgaSAlIDIg
PyBtYXRjaCA6IDAsICI6bnRoLWNoaWxkKGV2ZW4pIGZhaWxlZCBhZnRlciByZW1vdmFsIHdpdGgg
Y2hpbGQgIiArIGkpOwogICAgICAgIGZvciAodmFyIGkgPSA2OyBpIDwgcHMubGVuZ3RoOyBpICs9
IDEpCiAgICAgICAgICBleHBlY3QocHNbaV0sIGkgJSAyID8gMCA6IG1hdGNoLCAiOm50aC1jaGls
ZChldmVuKSBmYWlsZWQgYWZ0ZXIgcmVtb3ZhbCB3aXRoIGNoaWxkICIgKyBpKTsKICAgICAgfSk7
CiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgewogICAgICAg
IGJ1aWxkZXIoZG9jKTsKICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpudGgtY2hpbGQoLW4rMyki
KTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkgKz0gMSkKICAgICAgICAgIGV4cGVj
dChwc1tpXSwgbWF0Y2gsICI6bnRoLWNoaWxkKC1uKzMpIGZhaWxlZCB3aXRoIGNoaWxkICIgKyBp
KTsKICAgICAgICBmb3IgKHZhciBpID0gMzsgaSA8IHBzLmxlbmd0aDsgaSArPSAxKQogICAgICAg
ICAgZXhwZWN0KHBzW2ldLCAwLCAiOm50aC1jaGlsZCgtbiszKSBmYWlsZWQgd2l0aCBjaGlsZCAi
ICsgaSk7CiAgICAgIH0pOwogICAgICByZXR1cm4gMzsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7
CiAgICAgIC8vIHRlc3QgNDA6IDpmaXJzdC1vZi10eXBlLCA6bGFzdC1vZi10eXBlLCA6b25seS1v
Zi10eXBlLCA6bnRoLW9mLXR5cGUsIDpudGgtbGFzdC1vZi10eXBlCiAgICAgIHZhciBlbGVtZW50
czsKICAgICAgdmFyIGJ1aWxkZXIgPSBmdW5jdGlvbihkb2MpIHsKICAgICAgICBlbGVtZW50cyA9
IFsKICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksCiAgICAgICAgICBkb2MuY3JlYXRl
RWxlbWVudCgnZGl2JyksCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAgICAg
ICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQo
J3AnKSwKICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksCiAgICAgICAgICBkb2MuY3Jl
YXRlRWxlbWVudCgnZGl2JyksCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgnYWRkcmVzcycp
LAogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpLAogICAgICAgICAgZG9jLmNyZWF0
ZUVsZW1lbnQoJ2RpdicpLAogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpLAogICAg
ICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwKICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50
KCdkaXYnKSwKICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJykKICAgICAgICBdOwogICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpCiAgICAgICAg
ICBkb2MuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50c1tpXSk7CiAgICAgIH07CiAgICAgIHNlbGVj
dG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgewogICAgICAgIGJ1aWxkZXIoZG9j
KTsKICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpmaXJzdC1vZi10eXBlIik7CiAgICAgICAgdmFy
IHZhbHVlcyA9IFsxLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwXTsKICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSArPSAxKQogICAgICAg
ICAgZXhwZWN0KGVsZW1lbnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJwYXJ0IDE6IiAr
IGkpOwogICAgICB9KTsKICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhw
ZWN0KSB7CiAgICAgICAgYnVpbGRlcihkb2MpOwogICAgICAgIHZhciBtYXRjaCA9IGFkZCgiOmxh
c3Qtb2YtdHlwZSIpOwogICAgICAgIHZhciB2YWx1ZXMgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MSwgMCwgMCwgMCwgMCwgMSwgMV07CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50
cy5sZW5ndGg7IGkgKz0gMSkKICAgICAgICAgIGV4cGVjdChlbGVtZW50c1tpXSwgdmFsdWVzW2ld
ID8gbWF0Y2ggOiAwLCAicGFydCAyOiIgKyBpKTsKICAgICAgfSk7CiAgICAgIHNlbGVjdG9yVGVz
dChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgewogICAgICAgIGJ1aWxkZXIoZG9jKTsKICAg
ICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpvbmx5LW9mLXR5cGUiKTsKICAgICAgICB2YXIgdmFsdWVz
ID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDBdOwogICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpCiAgICAgICAgICBleHBl
Y3QoZWxlbWVudHNbaV0sIHZhbHVlc1tpXSA/IG1hdGNoIDogMCwgInBhcnQgMzoiICsgaSk7CiAg
ICAgIH0pOwogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsK
ICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLW9mLXR5
cGUoM24tMSkiKTsKICAgICAgICB2YXIgdmFsdWVzID0gWzAsIDAsIDEsIDEsIDAsIDAsIDAsIDAs
IDAsIDEsIDAsIDEsIDAsIDBdOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMu
bGVuZ3RoOyBpICs9IDEpCiAgICAgICAgICBleHBlY3QoZWxlbWVudHNbaV0sIHZhbHVlc1tpXSA/
IG1hdGNoIDogMCwgInBhcnQgNDoiICsgaSk7CiAgICAgIH0pOwogICAgICBzZWxlY3RvclRlc3Qo
ZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAg
ICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLW9mLXR5cGUoM24rMSkiKTsKICAgICAgICB2YXIgdmFs
dWVzID0gWzEsIDEsIDAsIDAsIDAsIDEsIDAsIDEsIDEsIDAsIDAsIDAsIDEsIDBdOwogICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpCiAgICAgICAgICBl
eHBlY3QoZWxlbWVudHNbaV0sIHZhbHVlc1tpXSA/IG1hdGNoIDogMCwgInBhcnQgNToiICsgaSk7
CiAgICAgIH0pOwogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3Qp
IHsKICAgICAgICBidWlsZGVyKGRvYyk7CiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLWxh
c3Qtb2YtdHlwZSgybikiKTsKICAgICAgICB2YXIgdmFsdWVzID0gWzEsIDAsIDEsIDAsIDEsIDAs
IDAsIDAsIDEsIDAsIDEsIDEsIDAsIDBdOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxl
bWVudHMubGVuZ3RoOyBpICs9IDEpCiAgICAgICAgICBleHBlY3QoZWxlbWVudHNbaV0sIHZhbHVl
c1tpXSA/IG1hdGNoIDogMCwgInBhcnQgNjoiICsgaSk7CiAgICAgIH0pOwogICAgICBzZWxlY3Rv
clRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKICAgICAgICBidWlsZGVyKGRvYyk7
CiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLWxhc3Qtb2YtdHlwZSgtNW4rMykiKTsKICAg
ICAgICB2YXIgdmFsdWVzOwogICAgICAgIHZhbHVlcyA9IFswLCAwLCAwLCAwLCAwLCAxLCAwLCAw
LCAwLCAxLCAwLCAwLCAwLCAwXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRz
Lmxlbmd0aDsgaSArPSAxKQogICAgICAgICAgZXhwZWN0KGVsZW1lbnRzW2ldLCB2YWx1ZXNbaV0g
PyBtYXRjaCA6IDAsICJwYXJ0IDc6IiArIGkpOwogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxk
KGRvYy5jcmVhdGVFbGVtZW50KCdibG9ja3F1b3RlJykpOwogICAgICAgIHZhbHVlcyA9IFswLCAw
LCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwXTsKICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSArPSAxKQogICAgICAgICAgZXhwZWN0KGVs
ZW1lbnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJwYXJ0IDg6IiArIGkpOwogICAgICAg
IGRvYy5ib2R5LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAg
dmFsdWVzID0gWzAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDBd
OwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpCiAg
ICAgICAgICBleHBlY3QoZWxlbWVudHNbaV0sIHZhbHVlc1tpXSA/IG1hdGNoIDogMCwgInBhcnQg
OToiICsgaSk7CiAgICAgIH0pOwogICAgICByZXR1cm4gMzsKICAgIH0sCiAgICBmdW5jdGlvbiAo
KSB7CiAgICAgIC8vIHRlc3QgNDE6IDpyb290LCA6bm90KCkKICAgICAgc2VsZWN0b3JUZXN0KGZ1
bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bm90
KDpyb290KSIpOwogICAgICAgIHZhciBwID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAg
ICBkb2MuYm9keS5hcHBlbmRDaGlsZChwKTsKICAgICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxl
bWVudCwgMCwgInJvb3Qgd2FzIDpub3QoOnJvb3QpIik7CiAgICAgICAgZXhwZWN0KGRvYy5kb2N1
bWVudEVsZW1lbnQuY2hpbGROb2Rlc1swXSwgbWF0Y2gsImhlYWQgd2FzIG5vdCA6bm90KDpyb290
KSIpOwogICAgICAgIGV4cGVjdChkb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXNbMV0sIG1h
dGNoLCJib2R5IHdhcyBub3QgOm5vdCg6cm9vdCkiKTsKICAgICAgICBleHBlY3QoZG9jLmRvY3Vt
ZW50RWxlbWVudC5jaGlsZE5vZGVzWzBdLmZpcnN0Q2hpbGQsIG1hdGNoLCJ0aXRsZSB3YXMgbm90
IDpub3QoOnJvb3QpIik7CiAgICAgICAgZXhwZWN0KHAsIG1hdGNoLCJwIHdhcyBub3QgOm5vdCg6
cm9vdCkiKTsKICAgICAgfSk7CiAgICAgIHJldHVybiAzOwogICAgfSwKICAgIGZ1bmN0aW9uICgp
IHsKICAgICAgLy8gdGVzdCA0MjogKywgfiwgPiwgYW5kICcgJyBpbiBkeW5hbWljIHNpdHVhdGlv
bnMKICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CiAgICAg
ICAgdmFyIGRpdjEgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2MS5pZCA9
ICJkaXYxIjsKICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChkaXYxKTsKICAgICAgICB2YXIg
ZGl2MiA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBkb2MuYm9keS5hcHBlbmRD
aGlsZChkaXYyKTsKICAgICAgICB2YXIgZGl2MyA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
ICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChkaXYzKTsKICAgICAgICB2YXIgZGl2MzEgPSBk
b2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2My5hcHBlbmRDaGlsZChkaXYzMSk7
CiAgICAgICAgdmFyIGRpdjMxMSA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBk
aXYzMS5hcHBlbmRDaGlsZChkaXYzMTEpOwogICAgICAgIHZhciBkaXYzMTExID0gZG9jLmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGRpdjMxMS5hcHBlbmRDaGlsZChkaXYzMTExKTsKICAg
ICAgICB2YXIgbWF0Y2ggPSBhZGQoIiNkaXYxIH4gZGl2IGRpdiArIGRpdiA+IGRpdiIpOwogICAg
ICAgIGV4cGVjdChkaXYxLCAwLCAiZmFpbHVyZSAxIik7CiAgICAgICAgZXhwZWN0KGRpdjIsIDAs
ICJmYWlsdXJlIDIiKTsKICAgICAgICBleHBlY3QoZGl2MywgMCwgImZhaWx1cmUgMyIpOwogICAg
ICAgIGV4cGVjdChkaXYzMSwgMCwgImZhaWx1cmUgNCIpOwogICAgICAgIGV4cGVjdChkaXYzMTEs
IDAsICJmYWlsdXJlIDUiKTsKICAgICAgICBleHBlY3QoZGl2MzExMSwgMCwgImZhaWx1cmUgNiIp
OwogICAgICAgIHZhciBkaXYzMTAgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAg
ZGl2MzEuaW5zZXJ0QmVmb3JlKGRpdjMxMCwgZGl2MzExKTsKICAgICAgICBleHBlY3QoZGl2MSwg
MCwgImZhaWx1cmUgNyIpOwogICAgICAgIGV4cGVjdChkaXYyLCAwLCAiZmFpbHVyZSA4Iik7CiAg
ICAgICAgZXhwZWN0KGRpdjMsIDAsICJmYWlsdXJlIDkiKTsKICAgICAgICBleHBlY3QoZGl2MzEs
IDAsICJmYWlsdXJlIDEwIik7CiAgICAgICAgZXhwZWN0KGRpdjMxMCwgMCwgImZhaWx1cmUgMTEi
KTsKICAgICAgICBleHBlY3QoZGl2MzExLCAwLCAiZmFpbHVyZSAxMiIpOwogICAgICAgIGV4cGVj
dChkaXYzMTExLCBtYXRjaCwgInJ1bGUgZGlkIG5vdCBzdGFydCBtYXRjaGluZyBhZnRlciBjaGFu
Z2UiKTsKICAgICAgfSk7CiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4
cGVjdCkgewogICAgICAgIHZhciBkaXYxID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAg
ICAgIGRpdjEuaWQgPSAiZGl2MSI7CiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZGl2MSk7
CiAgICAgICAgdmFyIGRpdjIgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2
MS5hcHBlbmRDaGlsZChkaXYyKTsKICAgICAgICB2YXIgZGl2MyA9IGRvYy5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKICAgICAgICBkaXYyLmFwcGVuZENoaWxkKGRpdjMpOwogICAgICAgIHZhciBkaXY0
ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGRpdjMuYXBwZW5kQ2hpbGQoZGl2
NCk7CiAgICAgICAgdmFyIGRpdjUgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAg
ZGl2NC5hcHBlbmRDaGlsZChkaXY1KTsKICAgICAgICB2YXIgZGl2NiA9IGRvYy5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKICAgICAgICBkaXY1LmFwcGVuZENoaWxkKGRpdjYpOwogICAgICAgIHZhciBt
YXRjaCA9IGFkZCgiI2RpdjEgPiBkaXYgZGl2ID4gZGl2Iik7CiAgICAgICAgZXhwZWN0KGRpdjEs
IDAsICJmYWlsdXJlIDE0Iik7CiAgICAgICAgZXhwZWN0KGRpdjIsIDAsICJmYWlsdXJlIDE1Iik7
CiAgICAgICAgZXhwZWN0KGRpdjMsIDAsICJmYWlsdXJlIDE2Iik7CiAgICAgICAgZXhwZWN0KGRp
djQsIG1hdGNoLCAiZmFpbHVyZSAxNyIpOwogICAgICAgIGV4cGVjdChkaXY1LCBtYXRjaCwgImZh
aWx1cmUgMTgiKTsKICAgICAgICBleHBlY3QoZGl2NiwgbWF0Y2gsICJmYWlsdXJlIDE5Iik7CiAg
ICAgICAgdmFyIHAzNCA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAgICAgZGl2My5pbnNl
cnRCZWZvcmUocDM0LCBkaXY0KTsKICAgICAgICBwMzQuaW5zZXJ0QmVmb3JlKGRpdjQsIG51bGwp
OwogICAgICAgIGV4cGVjdChkaXYxLCAwLCAiZmFpbHVyZSAyMCIpOwogICAgICAgIGV4cGVjdChk
aXYyLCAwLCAiZmFpbHVyZSAyMSIpOwogICAgICAgIGV4cGVjdChkaXYzLCAwLCAiZmFpbHVyZSAy
MiIpOwogICAgICAgIGV4cGVjdChwMzQsIDAsICJmYWlsdXJlIDIzIik7CiAgICAgICAgZXhwZWN0
KGRpdjQsIDAsICJmYWlsdXJlIDI0Iik7CiAgICAgICAgZXhwZWN0KGRpdjUsIG1hdGNoLCAiZmFp
bHVyZSAyNSIpOwogICAgICAgIGV4cGVjdChkaXY2LCBtYXRjaCwgImZhaWx1cmUgMjYiKTsKICAg
ICAgfSk7CiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgewog
ICAgICAgIHZhciBkaXYxID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGRpdjEu
aWQgPSAiZGl2MSI7CiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZGl2MSk7CiAgICAgICAg
dmFyIGRpdjIgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2MS5hcHBlbmRD
aGlsZChkaXYyKTsKICAgICAgICB2YXIgZGl2MyA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
ICAgICAgICBkaXYyLmFwcGVuZENoaWxkKGRpdjMpOwogICAgICAgIHZhciBkaXY0ID0gZG9jLmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGRpdjMuYXBwZW5kQ2hpbGQoZGl2NCk7CiAgICAg
ICAgdmFyIGRpdjUgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2NC5hcHBl
bmRDaGlsZChkaXY1KTsKICAgICAgICB2YXIgZGl2NiA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKICAgICAgICBkaXY1LmFwcGVuZENoaWxkKGRpdjYpOwogICAgICAgIHZhciBtYXRjaCA9IGFk
ZCgiI2RpdjEgPiBkaXYgZGl2ID4gZGl2Iik7CiAgICAgICAgZXhwZWN0KGRpdjEsIDAsICJmYWls
dXJlIDI3Iik7CiAgICAgICAgZXhwZWN0KGRpdjIsIDAsICJmYWlsdXJlIDI4Iik7CiAgICAgICAg
ZXhwZWN0KGRpdjMsIDAsICJmYWlsdXJlIDI5Iik7CiAgICAgICAgZXhwZWN0KGRpdjQsIG1hdGNo
LCAiZmFpbHVyZSAzMCIpOwogICAgICAgIGV4cGVjdChkaXY1LCBtYXRjaCwgImZhaWx1cmUgMzEi
KTsKICAgICAgICBleHBlY3QoZGl2NiwgbWF0Y2gsICJmYWlsdXJlIDMyIik7CiAgICAgICAgdmFy
IHAyMyA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAgICAgZGl2Mi5pbnNlcnRCZWZvcmUo
cDIzLCBkaXYzKTsKICAgICAgICBwMjMuaW5zZXJ0QmVmb3JlKGRpdjMsIG51bGwpOwogICAgICAg
IGV4cGVjdChkaXYxLCAwLCAiZmFpbHVyZSAzMyIpOwogICAgICAgIGV4cGVjdChkaXYyLCAwLCAi
ZmFpbHVyZSAzNCIpOwogICAgICAgIGV4cGVjdChkaXYzLCAwLCAiZmFpbHVyZSAzNSIpOwogICAg
ICAgIGV4cGVjdChwMjMsIDAsICJmYWlsdXJlIDM2Iik7CiAgICAgICAgZXhwZWN0KGRpdjQsIG1h
dGNoLCAiZmFpbHVyZSAzNyIpOwogICAgICAgIGV4cGVjdChkaXY1LCBtYXRjaCwgImZhaWx1cmUg
MzgiKTsKICAgICAgICBleHBlY3QoZGl2NiwgbWF0Y2gsICJmYWlsdXJlIDM5Iik7CiAgICAgIH0p
OwogICAgICByZXR1cm4gMzsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3Qg
NDM6IDplbmFibGVkLCA6ZGlzYWJsZWQsIDpjaGVja2VkLCBldGMKICAgICAgc2VsZWN0b3JUZXN0
KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CiAgICAgICAgdmFyIGlucHV0ID0gZG9jLmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgICAgaW5wdXQudHlwZSA9ICdjaGVja2JveCc7CiAg
ICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgIHZhciBuZWl0aGVyID0g
MDsKICAgICAgICB2YXIgYm90aCA9IGFkZCgiOmNoZWNrZWQ6ZW5hYmxlZCIpOwogICAgICAgIHZh
ciBjaGVja2VkID0gYWRkKCI6Y2hlY2tlZCIpOwogICAgICAgIHZhciBlbmFibGVkID0gYWRkKCI6
ZW5hYmxlZCIpOwogICAgICAgIGV4cGVjdChkb2MuYm9keSwgbmVpdGhlciwgImNvbnRyb2wgZmFp
bHVyZSIpOwogICAgICAgIGV4cGVjdChpbnB1dCwgZW5hYmxlZCwgImlucHV0IGVsZW1lbnQgZGlk
bid0IG1hdGNoIDplbmFibGVkIik7CiAgICAgICAgaW5wdXQuY2xpY2soKTsKICAgICAgICBleHBl
Y3QoaW5wdXQsIGJvdGgsICJpbnB1dCBlbGVtZW50IGRpZG4ndCBtYXRjaCA6Y2hlY2tlZCIpOwog
ICAgICAgIGlucHV0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICBleHBlY3QoaW5wdXQsIGNoZWNr
ZWQsICJmYWlsdXJlIDMiKTsKICAgICAgICBpbnB1dC5jaGVja2VkID0gZmFsc2U7CiAgICAgICAg
ZXhwZWN0KGlucHV0LCBuZWl0aGVyLCAiZmFpbHVyZSA0Iik7CiAgICAgICAgZXhwZWN0KGRvYy5i
b2R5LCBuZWl0aGVyLCAiZmFpbHVyZSA1Iik7CiAgICAgIH0pOwogICAgICBzZWxlY3RvclRlc3Qo
ZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKICAgICAgICB2YXIgaW5wdXQxID0gZG9jLmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgICAgaW5wdXQxLnR5cGUgPSAncmFkaW8nOwogICAg
ICAgIGlucHV0MS5uYW1lID0gJ3JhZGlvJzsKICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChp
bnB1dDEpOwogICAgICAgIHZhciBpbnB1dDIgPSBkb2MuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsK
ICAgICAgICBpbnB1dDIudHlwZSA9ICdyYWRpbyc7CiAgICAgICAgaW5wdXQyLm5hbWUgPSAncmFk
aW8nOwogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGlucHV0Mik7CiAgICAgICAgdmFyIGNo
ZWNrZWQgPSBhZGQoIjpjaGVja2VkIik7CiAgICAgICAgZXhwZWN0KGlucHV0MSwgMCwgImZhaWx1
cmUgNiIpOwogICAgICAgIGV4cGVjdChpbnB1dDIsIDAsICJmYWlsdXJlIDciKTsKICAgICAgICBp
bnB1dDIuY2xpY2soKTsKICAgICAgICBleHBlY3QoaW5wdXQxLCAwLCAiZmFpbHVyZSA2Iik7CiAg
ICAgICAgZXhwZWN0KGlucHV0MiwgY2hlY2tlZCwgImZhaWx1cmUgNyIpOwogICAgICAgIGlucHV0
MS5jaGVja2VkID0gdHJ1ZTsKICAgICAgICBleHBlY3QoaW5wdXQxLCBjaGVja2VkLCAiZmFpbHVy
ZSA4Iik7CiAgICAgICAgZXhwZWN0KGlucHV0MiwgMCwgImZhaWx1cmUgOSIpOwogICAgICAgIGlu
cHV0Mi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCAiY2hlY2tlZCIpOyAvLyBzZXRzIGRlZmF1bHRD
aGVja2VkLCBkb2Vzbid0IGNoYW5nZSBhY3R1YWwgc3RhdGUKICAgICAgICBleHBlY3QoaW5wdXQx
LCBjaGVja2VkLCAiZmFpbHVyZSAxMCIpOwogICAgICAgIGV4cGVjdChpbnB1dDIsIDAsICJmYWls
dXJlIDExIik7CiAgICAgICAgaW5wdXQxLnR5cGUgPSAidGV4dCI7CiAgICAgICAgZXhwZWN0KGlu
cHV0MSwgMCwgInRleHQgZmllbGQgbWF0Y2hlZCA6Y2hlY2tlZCIpOwogICAgICB9KTsKICAgICAg
c2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CiAgICAgICAgdmFyIGlu
cHV0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgICAgaW5wdXQudHlwZSA9ICdi
dXR0b24nOwogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICB2YXIg
bmVpdGhlciA9IDA7CiAgICAgICAgdmFyIGVuYWJsZWQgPSBhZGQoIjplbmFibGVkIik7CiAgICAg
ICAgdmFyIGRpc2FibGVkID0gYWRkKCI6ZGlzYWJsZWQiKTsKICAgICAgICBhZGQoIjplbmFibGVk
OmRpc2FibGVkIik7CiAgICAgICAgZXhwZWN0KGlucHV0LCBlbmFibGVkLCAiZmFpbHVyZSAxMiIp
OwogICAgICAgIGlucHV0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICBleHBlY3QoaW5wdXQsIGRp
c2FibGVkLCAiZmFpbHVyZSAxMyIpOwogICAgICAgIGlucHV0LnJlbW92ZUF0dHJpYnV0ZSgiZGlz
YWJsZWQiKTsKICAgICAgICBleHBlY3QoaW5wdXQsIGVuYWJsZWQsICJmYWlsdXJlIDE0Iik7CiAg
ICAgICAgZXhwZWN0KGRvYy5ib2R5LCBuZWl0aGVyLCAiZmFpbHVyZSAxNSIpOwogICAgICB9KTsK
ICAgICAgcmV0dXJuIDM7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDQ0
OiBzZWxlY3RvcnMgd2l0aG91dCBzcGFjZXMgYmVmb3JlIGEgIioiCiAgICAgIHNlbGVjdG9yVGVz
dChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgewogICAgICAgIGRvYy5ib2R5LmNsYXNzTmFt
ZSA9ICJ0ZXN0IjsKICAgICAgICB2YXIgcCA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAg
ICAgcC5jbGFzc05hbWUgPSAidGVzdCI7CiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7
CiAgICAgICAgYWRkKCJodG1sKi50ZXN0Iik7CiAgICAgICAgZXhwZWN0KGRvYy5ib2R5LCAwLCAi
bWlzcGFyc2VkIHNlbGVjdG9ycyIpOwogICAgICAgIGV4cGVjdChwLCAwLCAicmVhbGx5IG1pc3Bh
cnNlZCBzZWxlY3RvcnMiKTsKICAgICAgfSk7CiAgICAgIHJldHVybiAzOwogICAgfSwKICAgIGZ1
bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA0NTogY3NzRmxvYXQgYW5kIHRoZSBzdHlsZSBhdHRy
aWJ1dGUKICAgICAgYXNzZXJ0KCFkb2N1bWVudC5ib2R5LnN0eWxlLmNzc0Zsb2F0LCAiYm9keSBo
YXMgZmxvYXRhdGlvbiIpOwogICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgic3R5bGUi
LCAiZmxvYXQ6IHJpZ2h0Iik7CiAgICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5ib2R5LnN0eWxl
LmNzc0Zsb2F0LCAicmlnaHQiLCAiYm9keSBkb2Vzbid0IGhhdmUgZmxvYXRhdGlvbiIpOwogICAg
ICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiZmxvYXQ6IG5vbmUiKTsKICAg
ICAgYXNzZXJ0RXF1YWxzKGRvY3VtZW50LmJvZHkuc3R5bGUuY3NzRmxvYXQsICJub25lIiwgImJv
ZHkgZGlkbid0IGxvc2UgZmxvYXRhdGlvbiIpOwogICAgICByZXR1cm4gMzsKICAgIH0sCiAgICBm
dW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNDY6IG1lZGlhIHF1ZXJpZXMKICAgICAgdmFyIGRv
YyA9IGdldFRlc3REb2N1bWVudCgpOwogICAgICB2YXIgc3R5bGUgPSBkb2MuY3JlYXRlRWxlbWVu
dCgnc3R5bGUnKTsKICAgICAgc3R5bGUuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7
CiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCBh
bmQgKG1pbi1jb2xvcjogMCkgeyAjYSB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScp
KTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcwogICAgICBzdHlsZS5hcHBlbmRD
aGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBub3QgYWxsIGFuZCAobWluLWNvbG9yOiAw
KSB7ICNiIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOwogICAgICBzdHlsZS5h
cHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBvbmx5IGFsbCBhbmQgKG1pbi1j
b2xvcjogMCkgeyAjYyB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsgICAgICAg
ICAgICAgICAgICAgIC8vIG1hdGNoZXMKICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0
ZVRleHROb2RlKCdAbWVkaWEgKGJvZ3VzKSB7ICNkIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2Fz
ZTsgfSB9JykpOwogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0Bt
ZWRpYSBhbGwgYW5kIChib2d1cykgeyAjZSB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0g
fScpKTsKICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEg
bm90IGFsbCBhbmQgKGJvZ3VzKSB7ICNmIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9
JykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaGVzCiAgICAgIHN0eWxlLmFw
cGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIG9ubHkgYWxsIGFuZCAoYm9ndXMp
IHsgI2cgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7CiAgICAgIHN0eWxlLmFw
cGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIChib2d1cyksIGFsbCB7ICNoIHsg
dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOwogICAgICBzdHlsZS5hcHBlbmRDaGls
ZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBhbGwgYW5kIChib2d1cyksIGFsbCB7ICNpIHsg
dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIG1hdGNoZXMKICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2Rl
KCdAbWVkaWEgbm90IGFsbCBhbmQgKGJvZ3VzKSwgYWxsIHsgI2ogeyB0ZXh0LXRyYW5zZm9ybTog
dXBwZXJjYXNlOyB9IH0nKSk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaGVzCiAgICAg
IHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIG9ubHkgYWxsIGFu
ZCAoYm9ndXMpLCBhbGwgeyAjayB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsg
ICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcwogICAgICBzdHlsZS5hcHBlbmRDaGlsZChk
b2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBhbGwsIChib2d1cykgeyAjbCB7IHRleHQtdHJhbnNm
b3JtOiB1cHBlcmNhc2U7IH0gfScpKTsKICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0
ZVRleHROb2RlKCdAbWVkaWEgYWxsLCBhbGwgYW5kIChib2d1cykgeyAjbSB7IHRleHQtdHJhbnNm
b3JtOiB1cHBlcmNhc2U7IH0gfScpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRj
aGVzCiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFs
bCwgbm90IGFsbCBhbmQgKGJvZ3VzKSB7ICNuIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsg
fSB9JykpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcwogICAgICBzdHlsZS5hcHBl
bmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBhbGwsIG9ubHkgYWxsIGFuZCAoYm9n
dXMpIHsgI28geyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7ICAgICAgICAgICAg
ICAgICAgICAgIC8vIG1hdGNoZXMKICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRl
eHROb2RlKCdAbWVkaWEgYWxsIGFuZCBjb2xvciB7ICNwIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVy
Y2FzZTsgfSB9JykpOwogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUo
J0BtZWRpYSBhbGwgYW5kIG1pbi1jb2xvcjogMCB7ICNxIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVy
Y2FzZTsgfSB9JykpOwogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUo
J0BtZWRpYSBhbGwsIGFsbCBhbmQgY29sb3IgeyAjciB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNh
c2U7IH0gfScpKTsKICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdA
bWVkaWEgYWxsLCBhbGwgYW5kIG1pbi1jb2xvcjogMCB7ICNzIHsgdGV4dC10cmFuc2Zvcm06IHVw
cGVyY2FzZTsgfSB9JykpOwogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5v
ZGUoJ0BtZWRpYSBhbGwgYW5kIG1pbi1jb2xvcjogMCwgYWxsIHsgI3QgeyB0ZXh0LXRyYW5zZm9y
bTogdXBwZXJjYXNlOyB9IH0nKSk7CiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVU
ZXh0Tm9kZSgnQG1lZGlhIChtaW4tY29sb3I6IDApIGFuZCAobWluLW1vbm9jaHJvbWU6IDApIHsg
I3UgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7CiAgICAgIHN0eWxlLmFwcGVu
ZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIChtaW4tY29sb3I6IDApLCAobWluLW1v
bm9jaHJvbWU6IDApIHsgI3YgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7CiAg
ICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCBhbmQg
KG1pbi1jb2xvcjogMCksIGFsbCBhbmQgKG1pbi1tb25vY2hyb21lOiAwKSB7ICN3IHsgdGV4dC10
cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOyAvLyBtYXRjaGVzCiAgICAgIHN0eWxlLmFwcGVu
ZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIG5vdCBhbGwgYW5kIChtaW4tY29sb3I6
IDApLCBub3QgYWxsIGFuZCAobWluLW1vbm9jaHJvbWU6IDApIHsgI3ggeyB0ZXh0LXRyYW5zZm9y
bTogdXBwZXJjYXNlOyB9IH0nKSk7IC8vIG1hdGNoZXMKICAgICAgLy8gdGhlIG5leHQgZm91ciBh
c3N1bWUgdGhhdCB0aGUgd2luZG93IGlzIGJpZ2dlciB0aGFuIDFlbSBieSAxZW0gYXQgdGhlIHRp
bWUgdGhlIHRlc3QgaXMgcnVuCiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0
Tm9kZSgnQG1lZGlhIGFsbCBhbmQgKG1pbi1oZWlnaHQ6IDFlbSkgYW5kIChtaW4td2lkdGg6IDFl
bSkgeyAjeTEgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7IC8vIG1hdGNoZXMK
ICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFu
ZCAobWF4LWhlaWdodDogMWVtKSBhbmQgKG1pbi13aWR0aDogMWVtKSB7ICN5MiB7IHRleHQtdHJh
bnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsKICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNy
ZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCAobWluLWhlaWdodDogMWVtKSBhbmQgKG1heC13
aWR0aDogMWVtKSB7ICN5MyB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsKICAg
ICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCAo
bWF4LWhlaWdodDogMWVtKSBhbmQgKG1heC13aWR0aDogMWVtKSB7ICN5NCB7IHRleHQtdHJhbnNm
b3JtOiB1cHBlcmNhc2U7IH0gfScpKTsKICAgICAgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdo
ZWFkJylbMF0uYXBwZW5kQ2hpbGQoc3R5bGUpOwogICAgICB2YXIgbmFtZXMgPSBbJ2EnLCAnYics
ICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAn
bicsICdvJywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcsICd1JywgJ3YnLCAndycsICd4JywgJ3kx
JywgJ3kyJywgJ3kzJywgJ3k0J107CiAgICAgIGZvciAodmFyIGkgaW4gbmFtZXMpIHsKICAgICAg
ICB2YXIgcCA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAgICAgcC5pZCA9IG5hbWVzW2ld
OwogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHApOwogICAgICB9CiAgICAgIHZhciBjaGVj
ayA9IGZ1bmN0aW9uIChjLCBlKSB7CiAgICAgICAgdmFyIHAgPSBkb2MuZ2V0RWxlbWVudEJ5SWQo
Yyk7CiAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KHAsICcnKS50ZXh0VHJhbnNmb3JtLCBlID8gJ3VwcGVyY2FzZScgOiAnbm9uZScsICJjYXNlICIg
KyBjICsgIiBmYWlsZWQiKTsKICAgICAgfQogICAgICBjaGVjaygnYScsIHRydWUpOwogICAgICBj
aGVjaygnYicsIGZhbHNlKTsKICAgICAgY2hlY2soJ2MnLCB0cnVlKTsKICAgICAgY2hlY2soJ2Qn
LCBmYWxzZSk7CiAgICAgIGNoZWNrKCdlJywgZmFsc2UpOwogICAgICBjaGVjaygnZicsIHRydWUp
OwogICAgICBjaGVjaygnZycsIGZhbHNlKTsKICAgICAgY2hlY2soJ2gnLCBmYWxzZSk7CiAgICAg
IGNoZWNrKCdpJywgdHJ1ZSk7CiAgICAgIGNoZWNrKCdqJywgdHJ1ZSk7CiAgICAgIGNoZWNrKCdr
JywgdHJ1ZSk7CiAgICAgIGNoZWNrKCdsJywgZmFsc2UpOwogICAgICBjaGVjaygnbScsIHRydWUp
OwogICAgICBjaGVjaygnbicsIHRydWUpOwogICAgICBjaGVjaygnbycsIHRydWUpOwogICAgICBj
aGVjaygncCcsIGZhbHNlKTsKICAgICAgY2hlY2soJ3EnLCBmYWxzZSk7CiAgICAgIGNoZWNrKCdy
JywgZmFsc2UpOwogICAgICBjaGVjaygncycsIGZhbHNlKTsKICAgICAgY2hlY2soJ3QnLCBmYWxz
ZSk7CiAgICAgIGNoZWNrKCd1JywgZmFsc2UpOwogICAgICBjaGVjaygndicsIGZhbHNlKTsKICAg
ICAgY2hlY2soJ3cnLCB0cnVlKTsKICAgICAgY2hlY2soJ3gnLCB0cnVlKTsKICAgICAgY2hlY2so
J3kxJywgdHJ1ZSk7CiAgICAgIGNoZWNrKCd5MicsIGZhbHNlKTsKICAgICAgY2hlY2soJ3kzJywg
ZmFsc2UpOwogICAgICBjaGVjaygneTQnLCBmYWxzZSk7CiAgICAgIHJldHVybiAzOwogICAgfSwK
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA0NzogJ2N1cnNvcicgYW5kIENTUzMgdmFs
dWVzCiAgICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQoKTsKICAgICAgdmFyIHN0eWxlID0g
ZG9jLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgndHlw
ZScsICd0ZXh0L2NzcycpOwogICAgICB2YXIgY3Vyc29ycyA9IFsnYXV0bycsICdkZWZhdWx0Jywg
J25vbmUnLCAnY29udGV4dC1tZW51JywgJ2hlbHAnLCAncG9pbnRlcicsICdwcm9ncmVzcycsICd3
YWl0JywgJ2NlbGwnLCAnY3Jvc3NoYWlyJywgJ3RleHQnLCAndmVydGljYWwtdGV4dCcsICdhbGlh
cycsICdjb3B5JywgJ21vdmUnLCAnbm8tZHJvcCcsICdub3QtYWxsb3dlZCcsICdlLXJlc2l6ZScs
ICduLXJlc2l6ZScsICduZS1yZXNpemUnLCAnbnctcmVzaXplJywgJ3MtcmVzaXplJywgJ3NlLXJl
c2l6ZScsICdzdy1yZXNpemUnLCAndy1yZXNpemUnLCAnZXctcmVzaXplJywgJ25zLXJlc2l6ZScs
ICduZXN3LXJlc2l6ZScsICdud3NlLXJlc2l6ZScsICdjb2wtcmVzaXplJywgJ3Jvdy1yZXNpemUn
LCAnYWxsLXNjcm9sbCddOwogICAgICBmb3IgKHZhciBpIGluIGN1cnNvcnMpIHsKICAgICAgICB2
YXIgYyA9IGN1cnNvcnNbaV07CiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRl
eHROb2RlKCcjJyArIGMgKyAnIHsgY3Vyc29yOiAnICsgYyArICc7IH0nKSk7CiAgICAgIH0KICAg
ICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCcjYm9ndXMgeyBjdXJzb3I6
IGJvZ3VzOyB9JykpOwogICAgICBkb2MuYm9keS5wcmV2aW91c1NpYmxpbmcuYXBwZW5kQ2hpbGQo
c3R5bGUpOwogICAgICBkb2MuYm9keS5pZCA9ICJib2d1cyI7CiAgICAgIGFzc2VydEVxdWFscyhk
b2MuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2MuYm9keSwgJycpLmN1cnNvciwgImF1
dG8iLCAiY29udHJvbCBmYWlsZWQiKTsKICAgICAgZm9yICh2YXIgaSBpbiBjdXJzb3JzKSB7CiAg
ICAgICAgdmFyIGMgPSBjdXJzb3JzW2ldOwogICAgICAgIGRvYy5ib2R5LmlkID0gYzsKICAgICAg
ICBhc3NlcnRFcXVhbHMoZG9jLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jLmJvZHks
ICcnKS5jdXJzb3IsIGMsICJjdXJzb3IgIiArIGMgKyAiIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAg
fQogICAgICByZXR1cm4gMzsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3Qg
NDg6IDpsaW5rIGFuZCA6dmlzaXRlZAogICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNlbGVjdG9ycyIpOwogICAgICB2YXIgbnVtYmVyID0gKG5ldyBEYXRlKCkpLnZh
bHVlT2YoKTsKICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAg
IGEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0xJTktURVNUIEZBSUxFRCcp
KTsKICAgICAgYS5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2xpbmt0ZXN0Jyk7CiAgICAgIGEuc2V0QXR0
cmlidXRlKCdjbGFzcycsICdwZW5kaW5nJyk7CiAgICAgIGEuc2V0QXR0cmlidXRlKCdocmVmJywg
aWZyYW1lLmdldEF0dHJpYnV0ZSgnc3JjJykgKyAiPyIgKyBudW1iZXIpOwogICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWFwJylbMF0uYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGlm
cmFtZS5zZXRBdHRyaWJ1dGUoIm9ubG9hZCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGlu
a3Rlc3QnKS5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJykiKTsKICAgICAgaWZyYW1lLnNyYyA9IGEu
Z2V0QXR0cmlidXRlKCJocmVmIik7CiAgICAgIHJldHVybiAzOwogICAgfSwKCiAgICAvLyBidWNr
ZXQgNDogSFRNTCBhbmQgdGhlIERPTQogICAgLy8gVGFibGVzCiAgICBmdW5jdGlvbiAoKSB7CiAg
ICAgIC8vIHRlc3QgNDk6IGJhc2ljIHRhYmxlIGFjY2Vzc29yIHBpbmcgdGVzdCBjcmVhdGUqLCBk
ZWxldGUqLCBhbmQgKgogICAgICAvLyB3aGVyZSAqIGlzIGNhcHRpb24sIHRIZWFkLCB0Rm9vdC4K
ICAgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTsKICAgICAg
YXNzZXJ0KCF0YWJsZS5jYXB0aW9uLCAiaW5pdGlhbGx5OiBjYXB0aW9uIik7CiAgICAgIGFzc2Vy
dCh0YWJsZS50Qm9kaWVzLCAiaW5pdGlhbGx5OiB0Qm9kaWVzIik7CiAgICAgIGFzc2VydEVxdWFs
cyh0YWJsZS50Qm9kaWVzLmxlbmd0aCwgMCwgImluaXRpYWxseTogdEJvZGllcy5sZW5ndGgiKTsK
ICAgICAgYXNzZXJ0KHRhYmxlLnJvd3MsICJpbml0aWFsbHk6IHJvd3MiKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHRhYmxlLnJvd3MubGVuZ3RoLCAwLCAiaW5pdGlhbGx5OiByb3dzLmxlbmd0aCIpOwog
ICAgICBhc3NlcnQoIXRhYmxlLnRGb290LCAiaW5pdGlhbGx5OiB0Rm9vdCIpOwogICAgICBhc3Nl
cnQoIXRhYmxlLnRIZWFkLCAiaW5pdGlhbGx5OiB0SGVhZCIpOwogICAgICB2YXIgY2FwdGlvbiA9
IHRhYmxlLmNyZWF0ZUNhcHRpb24oKTsKICAgICAgdmFyIHRoZWFkID0gdGFibGUuY3JlYXRlVEhl
YWQoKTsKICAgICAgdmFyIHRmb290ID0gdGFibGUuY3JlYXRlVEZvb3QoKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHRhYmxlLmNhcHRpb24sIGNhcHRpb24sICJhZnRlciBjcmVhdGlvbjogY2FwdGlvbiIp
OwogICAgICBhc3NlcnQodGFibGUudEJvZGllcywgImFmdGVyIGNyZWF0aW9uOiB0Qm9kaWVzIik7
CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50Qm9kaWVzLmxlbmd0aCwgMCwgImFmdGVyIGNyZWF0
aW9uOiB0Qm9kaWVzLmxlbmd0aCIpOwogICAgICBhc3NlcnQodGFibGUucm93cywgImFmdGVyIGNy
ZWF0aW9uOiByb3dzIik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5yb3dzLmxlbmd0aCwgMCwg
ImFmdGVyIGNyZWF0aW9uOiByb3dzLmxlbmd0aCIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUu
dEZvb3QsIHRmb290LCAiYWZ0ZXIgY3JlYXRpb246IHRGb290Iik7CiAgICAgIGFzc2VydEVxdWFs
cyh0YWJsZS50SGVhZCwgdGhlYWQsICJhZnRlciBjcmVhdGlvbjogdEhlYWQiKTsKICAgICAgYXNz
ZXJ0RXF1YWxzKHRhYmxlLmNoaWxkTm9kZXMubGVuZ3RoLCAzLCAiYWZ0ZXIgY3JlYXRpb246IGNo
aWxkTm9kZXMubGVuZ3RoIik7CiAgICAgIHRhYmxlLmNhcHRpb24gPSBjYXB0aW9uOyAvLyBuby1v
cAogICAgICB0YWJsZS50SGVhZCA9IHRoZWFkOyAvLyBuby1vcAogICAgICB0YWJsZS50Rm9vdCA9
IHRmb290OyAvLyBuby1vcAogICAgICBhc3NlcnRFcXVhbHModGFibGUuY2FwdGlvbiwgY2FwdGlv
biwgImFmdGVyIHNldHRpbmc6IGNhcHRpb24iKTsKICAgICAgYXNzZXJ0KHRhYmxlLnRCb2RpZXMs
ICJhZnRlciBzZXR0aW5nOiB0Qm9kaWVzIik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50Qm9k
aWVzLmxlbmd0aCwgMCwgImFmdGVyIHNldHRpbmc6IHRCb2RpZXMubGVuZ3RoIik7CiAgICAgIGFz
c2VydCh0YWJsZS5yb3dzLCAiYWZ0ZXIgc2V0dGluZzogcm93cyIpOwogICAgICBhc3NlcnRFcXVh
bHModGFibGUucm93cy5sZW5ndGgsIDAsICJhZnRlciBzZXR0aW5nOiByb3dzLmxlbmd0aCIpOwog
ICAgICBhc3NlcnRFcXVhbHModGFibGUudEZvb3QsIHRmb290LCAiYWZ0ZXIgc2V0dGluZzogdEZv
b3QiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRIZWFkLCB0aGVhZCwgImFmdGVyIHNldHRp
bmc6IHRIZWFkIik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCwg
MywgImFmdGVyIHNldHRpbmc6IGNoaWxkTm9kZXMubGVuZ3RoIik7CiAgICAgIHRhYmxlLmRlbGV0
ZUNhcHRpb24oKTsKICAgICAgdGFibGUuZGVsZXRlVEhlYWQoKTsKICAgICAgdGFibGUuZGVsZXRl
VEZvb3QoKTsKICAgICAgYXNzZXJ0KCF0YWJsZS5jYXB0aW9uLCAiYWZ0ZXIgZGVsZXRpb246IGNh
cHRpb24iKTsKICAgICAgYXNzZXJ0KHRhYmxlLnRCb2RpZXMsICJhZnRlciBkZWxldGlvbjogdEJv
ZGllcyIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUudEJvZGllcy5sZW5ndGgsIDAsICJhZnRl
ciBkZWxldGlvbjogdEJvZGllcy5sZW5ndGgiKTsKICAgICAgYXNzZXJ0KHRhYmxlLnJvd3MsICJh
ZnRlciBkZWxldGlvbjogcm93cyIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUucm93cy5sZW5n
dGgsIDAsICJhZnRlciBkZWxldGlvbjogcm93cy5sZW5ndGgiKTsKICAgICAgYXNzZXJ0KCF0YWJs
ZS50Rm9vdCwgImFmdGVyIGRlbGV0aW9uOiB0Rm9vdCIpOwogICAgICBhc3NlcnQoIXRhYmxlLnRI
ZWFkLCAiYWZ0ZXIgZGVsZXRpb246IHRIZWFkIik7CiAgICAgIGFzc2VydCghdGFibGUuaGFzQ2hp
bGROb2RlcygpLCAiYWZ0ZXIgZGVsZXRpb246IGhhc0NoaWxkTm9kZXMoKSIpOwogICAgICBhc3Nl
cnRFcXVhbHModGFibGUuY2hpbGROb2Rlcy5sZW5ndGgsIDAsICJhZnRlciBkZWxldGlvbjogY2hp
bGROb2Rlcy5sZW5ndGgiKTsKICAgICAgcmV0dXJuIDQ7CiAgICB9LAogICAgZnVuY3Rpb24gKCkg
ewogICAgICAvLyB0ZXN0IDUwOiBjb25zdHJ1Y3QgYSB0YWJsZSwgYW5kIHNlZSBpZiB0aGUgdGFi
bGUgaXMgYXMgZXhwZWN0ZWQKICAgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndGFibGUnKTsKICAgICAgdGFibGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndGJvZHknKSk7CiAgICAgIHZhciB0cjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicp
OwogICAgICB0YWJsZS5hcHBlbmRDaGlsZCh0cjEpOwogICAgICB0YWJsZS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYXB0aW9uJykpOwogICAgICB0YWJsZS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aGVhZCcpKTsKICAgICAgLy8gPHRhYmxlPjx0Ym9k
eS8+PHRyLz48Y2FwdGlvbi8+PHRoZWFkLz4KICAgICAgdGFibGUuaW5zZXJ0QmVmb3JlKHRhYmxl
LmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcsIG51bGwpOyAvLyBtb3ZlIHRoZSA8dHIvPiB0byB0aGUg
ZW5kCiAgICAgIC8vIDx0YWJsZT48dGJvZHkvPjxjYXB0aW9uLz48dGhlYWQvPjx0ci8+CiAgICAg
IHRhYmxlLnJlcGxhY2VDaGlsZCh0YWJsZS5maXJzdENoaWxkLCB0YWJsZS5sYXN0Q2hpbGQpOyAv
LyBtb3ZlIHRoZSA8dGJvZHkvPiB0byB0aGUgZW5kIGFuZCByZW1vdmUgdGhlIDx0cj4KICAgICAg
Ly8gPHRhYmxlPjxjYXB0aW9uLz48dGhlYWQvPjx0Ym9keS8+CiAgICAgIHZhciB0cjIgPSB0YWJs
ZS50Qm9kaWVzWzBdLmluc2VydFJvdygwKTsKICAgICAgLy8gPHRhYmxlPjxjYXB0aW9uLz48dGhl
YWQvPjx0Ym9keT48dHIvPjwvdGJvZHk+CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50Qm9kaWVz
WzBdLnJvd3NbMF0ucm93SW5kZXgsIDAsICJyb3dJbmRleCBicm9rZW4iKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHRhYmxlLnRCb2RpZXNbMF0ucm93c1swXS5zZWN0aW9uUm93SW5kZXgsIDAsICJzZWN0
aW9uUm93SW5kZXggYnJva2VuIik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5jaGlsZE5vZGVz
Lmxlbmd0aCwgMywgIndyb25nIG51bWJlciBvZiBjaGlsZHJlbiIpOwogICAgICBhc3NlcnQodGFi
bGUuY2FwdGlvbiwgImNhcHRpb24gYnJva2VuIik7CiAgICAgIGFzc2VydCh0YWJsZS50SGVhZCwg
InRIZWFkIGJyb2tlbiIpOwogICAgICBhc3NlcnQoIXRhYmxlLnRGb290LCAidEZvb3QgYnJva2Vu
Iik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50Qm9kaWVzLmxlbmd0aCwgMSwgIndyb25nIG51
bWJlciBvZiB0Qm9kaWVzIik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5yb3dzLmxlbmd0aCwg
MSwgIndyb25nIG51bWJlciBvZiByb3dzIik7CiAgICAgIGFzc2VydCghdHIxLnBhcmVudE5vZGUs
ICJvcnBoYW4gcm93IGhhcyB1bmV4cGVjdGVkIHBhcmVudCIpOwogICAgICBhc3NlcnRFcXVhbHMo
dGFibGUuY2FwdGlvbiwgdGFibGUuY3JlYXRlQ2FwdGlvbigpLCAiY2FwdGlvbiBjcmVhdGlvbiBm
YWlsZWQiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRGb290LCBudWxsLCAidGFibGUgaGFz
IHVuZXhwZWN0ZWQgZm9vdGVyIik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50SGVhZCwgdGFi
bGUuY3JlYXRlVEhlYWQoKSwgImhlYWRlciBjcmVhdGlvbiBmYWlsZWQiKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHRhYmxlLmNyZWF0ZVRGb290KCksIHRhYmxlLnRGb290LCAiZm9vdGVyIGNyZWF0aW9u
IGZhaWxlZCIpOwogICAgICAvLyBlaXRoZXI6IDx0YWJsZT48Y2FwdGlvbi8+PHRoZWFkLz48dGJv
ZHk+PHRyLz48L3Rib2R5Pjx0Zm9vdC8+CiAgICAgIC8vICAgICBvcjogPHRhYmxlPjxjYXB0aW9u
Lz48dGhlYWQvPjx0Zm9vdC8+PHRib2R5Pjx0ci8+PC90Ym9keT4KICAgICAgdGFibGUudEhlYWQu
YXBwZW5kQ2hpbGQodHIxKTsKICAgICAgLy8gZWl0aGVyOiA8dGFibGU+PGNhcHRpb24vPjx0aGVh
ZD48dHIvPjwvdGhlYWQ+PHRib2R5Pjx0ci8+PC90Ym9keT48dGZvb3QvPgogICAgICAvLyAgICAg
b3I6IDx0YWJsZT48Y2FwdGlvbi8+PHRoZWFkPjx0ci8+PC90aGVhZD48dGZvb3QvPjx0Ym9keT48
dHIvPjwvdGJvZHk+CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5yb3dzWzBdLCB0YWJsZS50SGVh
ZC5maXJzdENoaWxkLCAidG9wIHJvdyBub3QgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsKICAgICAg
YXNzZXJ0RXF1YWxzKHRhYmxlLnJvd3MubGVuZ3RoLCAyLCAid3JvbmcgbnVtYmVyIG9mIHJvd3Mg
YWZ0ZXIgYXBwZW5kaW5nIG9uZSIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUucm93c1sxXSwg
dGFibGUudEJvZGllc1swXS5maXJzdENoaWxkLCAic2Vjb25kIHJvdyBub3QgaW4gZXhwZWN0ZWQg
cG9zaXRpb24iKTsKICAgICAgcmV0dXJuIDQ7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAg
ICAvLyB0ZXN0IDUxOiB0ZXN0IHRoZSBvcmRlcmluZyBhbmQgY3JlYXRpb24gb2Ygcm93cwogICAg
ICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpOwogICAgICB2YXIg
cm93cyA9IFsKICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpLCAgICAvLyAwOiBl
bmRzIHVwIGZpcnN0IGNoaWxkIG9mIHRoZSB0Zm9vdAogICAgICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3RyJyksICAgIC8vIDE6IGdvZXMgYXQgdGhlIGVuZCBvZiB0aGUgdGFibGUKICAgICAg
ICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpLCAgICAvLyAyOiBiZWNvbWVzIHNlY29uZCBj
aGlsZCBvZiB0aGVhZAogICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyksICAgIC8v
IDM6IGJlY29tZXMgdGhpcmQgY2hpbGQgb2YgdGhlIHRoZWFkCiAgICAgICAgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgndHInKSwgICAgLy8gNDogbm90IGluIHRoZSB0YWJsZQogICAgICAgIHRhYmxl
Lmluc2VydFJvdygwKSwgICAgICAgICAgICAgIC8vIDU6IG5vdCBpbiB0aGUgdGFibGUKICAgICAg
ICB0YWJsZS5jcmVhdGVURm9vdCgpLmluc2VydFJvdygwKSAvLyA2OiBlbmRzIHVwIHNlY29uZCBp
biB0aGUgdGZvb3QKICAgICAgXTsKICAgICAgcm93c1s2XS5wYXJlbnROb2RlLmFwcGVuZENoaWxk
KHJvd3NbMF0pOwogICAgICB0YWJsZS5hcHBlbmRDaGlsZChyb3dzWzFdKTsKICAgICAgdGFibGUu
aW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoZWFkJyksIHRhYmxlLmZpcnN0
Q2hpbGQpOwogICAgICB0YWJsZS5maXJzdENoaWxkLmFwcGVuZENoaWxkKHJvd3NbMl0pOwogICAg
ICByb3dzWzJdLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQocm93c1szXSk7CiAgICAgIHJvd3NbNF0u
YXBwZW5kQ2hpbGQocm93c1s1XS5wYXJlbnROb2RlKTsKICAgICAgdGFibGUuaW5zZXJ0Um93KDAp
OwogICAgICB0YWJsZS50Rm9vdC5hcHBlbmRDaGlsZChyb3dzWzZdKTsKICAgICAgYXNzZXJ0RXF1
YWxzKHRhYmxlLnJvd3MubGVuZ3RoLCA2LCAid3JvbmcgbnVtYmVyIG9mIHJvd3MiKTsKICAgICAg
YXNzZXJ0RXF1YWxzKHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpLmxlbmd0aCwgNiwg
Indyb25nIG51bWJlciBvZiB0ciBlbGVtZW50cyIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUu
Y2hpbGROb2Rlcy5sZW5ndGgsIDMsICJ0YWJsZSBoYXMgd3JvbmcgbnVtYmVyIG9mIGNoaWxkcmVu
Iik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5jaGlsZE5vZGVzWzBdLCB0YWJsZS50SGVhZCwg
InRIZWFkIGlzbid0IGZpcnN0Iik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgndHInKVswXSwgdGFibGUudEhlYWQuY2hpbGROb2Rlc1swXSwgImZpcnN0IHRy
IGlzbid0IGluIHRIZWFkIGNvcnJlY3RseSIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylbMV0sIHRhYmxlLnRIZWFkLmNoaWxkTm9kZXNbMV0sICJz
ZWNvbmQgdHIgaXNuJ3QgaW4gdEhlYWQgY29ycmVjdGx5Iik7CiAgICAgIGFzc2VydEVxdWFscyh0
YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVsxXSwgcm93c1syXSwgInNlY29uZCB0ciBp
cyB0aGUgd3Jvbmcgcm93Iik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVtZW50c0J5
VGFnTmFtZSgndHInKVsyXSwgdGFibGUudEhlYWQuY2hpbGROb2Rlc1syXSwgInRoaXJkIHRyIGlz
bid0IGluIHRIZWFkIGNvcnJlY3RseSIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3RyJylbMl0sIHJvd3NbM10sICJ0aGlyZCB0ciBpcyB0aGUgd3Jvbmcg
cm93Iik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5jaGlsZE5vZGVzWzFdLCB0YWJsZS50Rm9v
dCwgInRGb290IGlzbid0IHNlY29uZCIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3RyJylbM10sIHRhYmxlLnRGb290LmNoaWxkTm9kZXNbMF0sICJmb3Vy
dGggdHIgaXNuJ3QgaW4gdEZvb3QgY29ycmVjdGx5Iik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJs
ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVszXSwgcm93c1swXSwgImZvdXJ0aCB0ciBpcyB0
aGUgd3Jvbmcgcm93Iik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVtZW50c0J5VGFn
TmFtZSgndHInKVs0XSwgdGFibGUudEZvb3QuY2hpbGROb2Rlc1sxXSwgImZpZnRoIHRyIGlzbid0
IGluIHRGb290IGNvcnJlY3RseSIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3RyJylbNF0sIHJvd3NbNl0sICJmaWZ0aCB0ciBpcyB0aGUgd3Jvbmcgcm93
Iik7CiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVs1
XSwgdGFibGUuY2hpbGROb2Rlc1syXSwgInNpeHRoIHRyIGlzbid0IGluIHRGb290IGNvcnJlY3Rs
eSIpOwogICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylb
NV0sIHJvd3NbMV0sICJzaXh0aCB0ciBpcyB0aGUgd3Jvbmcgcm93Iik7CiAgICAgIGFzc2VydEVx
dWFscyh0YWJsZS50Qm9kaWVzLmxlbmd0aCwgMCwgIm5vbi16ZXJvIG51bWJlciBvZiB0Qm9kaWVz
Iik7CiAgICAgIHJldHVybiA0OwogICAgfSwKCiAgICAvLyBGb3JtcwogICAgZnVuY3Rpb24gKCkg
ewogICAgICAvLyB0ZXN0IDUyOiA8Zm9ybT4gYW5kIC5lbGVtZW50cwogICAgICB0ZXN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXTsKICAgICAgYXNzZXJ0KHRlc3Qu
ZWxlbWVudHMgIT09IHRlc3QsICJmb3JtLmVsZW1lbnRzID09PSBmb3JtIik7CiAgICAgIGFzc2Vy
dCh0ZXN0LmVsZW1lbnRzICE9PSB0ZXN0LmdldEF0dHJpYnV0ZSgnZWxlbWVudHMnKSwgImZvcm0g
ZWxlbWVudCBoYXMgYW4gZWxlbWVudHMgY29udGVudCBhdHRyaWJ1dGUiKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHRlc3QuZWxlbWVudHMubGVuZ3RoLCAxLCAiZm9ybSBlbGVtZW50IGhhcyB1bmV4cGVj
dGVkIG51bWJlciBvZiBjb250cm9scyIpOwogICAgICBhc3NlcnRFcXVhbHModGVzdC5lbGVtZW50
cy5sZW5ndGgsIHRlc3QubGVuZ3RoLCAiZm9ybSBlbGVtZW50IGhhcyBpbmNvbnNpc3RlbnQgbnVt
YmVycyBvZiBjb250cm9scyIpOwogICAgICByZXR1cm4gNDsKICAgIH0sCiAgICBmdW5jdGlvbiAo
KSB7CiAgICAgIC8vIHRlc3QgNTM6IGNoYW5naW5nIGFuIDxpbnB1dD4gZHluYW1pY2FsbHkKICAg
ICAgdmFyIGYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7CiAgICAgIHZhciBpID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKICAgICAgaS5uYW1lID0gJ2ZpcnN0JzsK
ICAgICAgaS50eXBlID0gJ3RleHQnOwogICAgICBpLnZhbHVlID0gJ3Rlc3QnOwogICAgICBmLmFw
cGVuZENoaWxkKGkpOwogICAgICBhc3NlcnRFcXVhbHMoaS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSwg
J2ZpcnN0JywgIm5hbWUgYXR0cmlidXRlIHdyb25nIik7CiAgICAgIGFzc2VydEVxdWFscyhpLm5h
bWUsICdmaXJzdCcsICJuYW1lIHByb3BlcnR5IHdyb25nIik7CiAgICAgIGFzc2VydEVxdWFscyhp
LmdldEF0dHJpYnV0ZSgndHlwZScpLCAndGV4dCcsICJ0eXBlIGF0dHJpYnV0ZSB3cm9uZyIpOwog
ICAgICBhc3NlcnRFcXVhbHMoaS50eXBlLCAndGV4dCcsICJ0eXBlIHByb3BlcnR5IHdyb25nIik7
CiAgICAgIGFzc2VydCghaS5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJyksICJ2YWx1ZSBhdHRyaWJ1dGUg
d3JvbmciKTsKICAgICAgYXNzZXJ0RXF1YWxzKGkudmFsdWUsICd0ZXN0JywgInZhbHVlIHByb3Bl
cnR5IHdyb25nIik7CiAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1lbnRzLmxlbmd0aCwgMSwgImZv
cm0ncyBlbGVtZW50cyBhcnJheSBoYXMgd3Jvbmcgc2l6ZSIpOwogICAgICBhc3NlcnRFcXVhbHMo
Zi5lbGVtZW50c1swXSwgaSwgImZvcm0ncyBlbGVtZW50IGFycmF5IGRvZXNuJ3QgaGF2ZSBpbnB1
dCBjb250cm9sIGJ5IGluZGV4Iik7CiAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1lbnRzLmZpcnN0
LCBpLCAiZm9ybSdzIGVsZW1lbnQgYXJyYXkgZG9lc24ndCBoYXZlIGlucHV0IGNvbnRyb2wgYnkg
bmFtZSIpOwogICAgICBhc3NlcnRFcXVhbHMoZi5lbGVtZW50cy5zZWNvbmQsIG51bGwsICJmb3Jt
J3MgZWxlbWVudCBhcnJheSBoYXMgdW5leHBlY3RlZCBjb250cm9scyBieSBuYW1lIik7CiAgICAg
IGkubmFtZSA9ICdzZWNvbmQnOwogICAgICBpLnR5cGUgPSAncGFzc3dvcmQnOwogICAgICBpLnZh
bHVlID0gJ1RFU1QnOwogICAgICBhc3NlcnRFcXVhbHMoaS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSwg
J3NlY29uZCcsICJuYW1lIGF0dHJpYnV0ZSB3cm9uZyBhZnRlciBjaGFuZ2UiKTsKICAgICAgYXNz
ZXJ0RXF1YWxzKGkubmFtZSwgJ3NlY29uZCcsICJuYW1lIHByb3BlcnR5IHdyb25nIGFmdGVyIGNo
YW5nZSIpOwogICAgICBhc3NlcnRFcXVhbHMoaS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSwgJ3Bhc3N3
b3JkJywgInR5cGUgYXR0cmlidXRlIHdyb25nIGFmdGVyIGNoYW5nZSIpOwogICAgICBhc3NlcnRF
cXVhbHMoaS50eXBlLCAncGFzc3dvcmQnLCAidHlwZSBwcm9wZXJ0eSB3cm9uZyBhZnRlciBjaGFu
Z2UiKTsKICAgICAgYXNzZXJ0KCFpLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSwgInZhbHVlIGF0dHJp
YnV0ZSB3cm9uZyBhZnRlciBjaGFuZ2UiKTsKICAgICAgYXNzZXJ0RXF1YWxzKGkudmFsdWUsICdU
RVNUJywgInZhbHVlIHByb3BlcnR5IHdyb25nIGFmdGVyIGNoYW5nZSIpOwogICAgICBhc3NlcnRF
cXVhbHMoZi5lbGVtZW50cy5sZW5ndGgsIDEsICJmb3JtJ3MgZWxlbWVudHMgYXJyYXkgaGFzIHdy
b25nIHNpemUgYWZ0ZXIgY2hhbmdlIik7CiAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1lbnRzWzBd
LCBpLCAiZm9ybSdzIGVsZW1lbnQgYXJyYXkgZG9lc24ndCBoYXZlIGlucHV0IGNvbnRyb2wgYnkg
aW5kZXggYWZ0ZXIgY2hhbmdlIik7CiAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1lbnRzLnNlY29u
ZCwgaSwgImZvcm0ncyBlbGVtZW50IGFycmF5IGRvZXNuJ3QgaGF2ZSBpbnB1dCBjb250cm9sIGJ5
IG5hbWUgYWZ0ZXIgY2hhbmdlIik7CiAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1lbnRzLmZpcnN0
LCBudWxsLCAiZm9ybSdzIGVsZW1lbnQgYXJyYXkgaGFzIHVuZXhwZWN0ZWQgY29udHJvbHMgYnkg
bmFtZSBhZnRlciBjaGFuZ2UiKTsKICAgICAgcmV0dXJuIDQ7CiAgICB9LAogICAgZnVuY3Rpb24g
KCkgewogICAgICAvLyB0ZXN0IDU0OiBjaGFuZ2luZyBhIHBhcnNlZCA8aW5wdXQ+CiAgICAgIHZh
ciBpID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07CiAgICAgIC8v
IGluaXRpYWwgdmFsdWVzCiAgICAgIGFzc2VydEVxdWFscyhpLmdldEF0dHJpYnV0ZSgndHlwZScp
LCAnSElEREVOJywgImlucHV0IGNvbnRyb2wncyB0eXBlIGNvbnRlbnQgYXR0cmlidXRlIHdhcyB3
cm9uZyIpOwogICAgICBhc3NlcnRFcXVhbHMoaS50eXBlLCAnaGlkZGVuJywgImlucHV0IGNvbnRy
b2wncyB0eXBlIERPTSBhdHRyaWJ1dGUgd2FzIHdyb25nIik7CiAgICAgIC8vIGNoYW5nZSB2YWx1
ZXMKICAgICAgaS5uYW1lID0gJ3Rlc3QnOwogICAgICBhc3NlcnRFcXVhbHMoaS5wYXJlbnROb2Rl
LmVsZW1lbnRzLnRlc3QsIGksICJpbnB1dCBjb250cm9sJ3MgZm9ybSBkaWRuJ3QgdXBkYXRlIik7
CiAgICAgIC8vIGNoZWNrIGV2ZW50IGhhbmRsZXJzCiAgICAgIGkucGFyZW50Tm9kZS5hY3Rpb24g
PSAnamF2YXNjcmlwdDonOwogICAgICB2YXIgY2FsbGVkID0gZmFsc2U7CiAgICAgIGkucGFyZW50
Tm9kZS5vbnN1Ym1pdCA9IGZ1bmN0aW9uIChhcmcpIHsKICAgICAgICBhcmcucHJldmVudERlZmF1
bHQoKTsKICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAgICB9OwogICAgICBpLnR5cGUgPSAnc3Vi
bWl0JzsKICAgICAgaS5jbGljaygpOyAvLyBzeW5jaHJvbm91c2x5IGRpc3BhdGNoZXMgYSBjbGlj
ayBldmVudCB0byB0aGUgc3VibWl0IGJ1dHRvbiwgd2hpY2ggc3VibWl0cyB0aGUgZm9ybSwgd2hp
Y2ggY2FsbHMgb25zdWJtaXQKICAgICAgYXNzZXJ0KGNhbGxlZCwgImNsaWNrIGhhbmRsZXIgZGlk
bid0IGRpc3BhdGNoIHByb3Blcmx5Iik7CiAgICAgIGkudHlwZSA9ICdoSWREZU4nOwogICAgICAv
LyBjaGVjayBudW1lcmljIGF0dHJpYnV0ZXMKICAgICAgaS5zZXRBdHRyaWJ1dGUoJ21heExlbmd0
aCcsICcyJyk7CiAgICAgIHZhciBzID0gaS5nZXRBdHRyaWJ1dGUoJ21heExlbmd0aCcpOwogICAg
ICBhc3NlcnQocy5tYXRjaCwgImF0dHJpYnV0ZSBpcyBub3QgYSBTdHJpbmciKTsKICAgICAgYXNz
ZXJ0KCFzLk1JTl9WQUxVRSwgImF0dHJpYnV0ZSBpcyBhIE51bWJlciIpOwogICAgICByZXR1cm4g
NDsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNTU6IG1vdmVkIGNoZWNr
Ym94ZXMgc2hvdWxkIGtlZXAgdGhlaXIgc3RhdGUKICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKICAgICAgdmFyIGlucHV0MSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZChpbnB1dDEpOwogICAgICBpbnB1dDEudHlwZSA9ICJjaGVja2JveCI7CiAgICAgIGlucHV0
MS5jaGVja2VkID0gdHJ1ZTsKICAgICAgYXNzZXJ0KGlucHV0MS5jaGVja2VkLCAiY2hlY2tib3gg
bm90IGNoZWNrZWQgYWZ0ZXIgYmVpbmcgY2hlY2tlZCAoaW5zZXJ0ZWQgZmlyc3QpIik7CiAgICAg
IHZhciBpbnB1dDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwogICAgICBpbnB1
dDIudHlwZSA9ICJjaGVja2JveCI7CiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbnB1dDIp
OwogICAgICBpbnB1dDIuY2hlY2tlZCA9IHRydWU7CiAgICAgIGFzc2VydChpbnB1dDIuY2hlY2tl
ZCwgImNoZWNrYm94IG5vdCBjaGVja2VkIGFmdGVyIGJlaW5nIGNoZWNrZWQgKGluc2VydGVkIGFm
dGVyIHR5cGUgc2V0KSIpOwogICAgICB2YXIgaW5wdXQzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnaW5wdXQnKTsKICAgICAgaW5wdXQzLnR5cGUgPSAiY2hlY2tib3giOwogICAgICBpbnB1dDMu
Y2hlY2tlZCA9IHRydWU7CiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbnB1dDMpOwogICAg
ICBhc3NlcnQoaW5wdXQzLmNoZWNrZWQsICJjaGVja2JveCBub3QgY2hlY2tlZCBhZnRlciBiZWlu
ZyBjaGVja2VkIChpbnNlcnRlZCBhZnRlciBiZWluZyBjaGVja2VkKSIpOwogICAgICB2YXIgdGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzFdOwogICAgICB0
YXJnZXQuYXBwZW5kQ2hpbGQoaW5wdXQxKTsKICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGlucHV0
Mik7CiAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChpbnB1dDMpOwogICAgICBhc3NlcnQoaW5wdXQx
LmNoZWNrZWQsICJjaGVja2JveCAxIG5vdCBjaGVja2VkIGFmdGVyIGJlaW5nIG1vdmVkIik7CiAg
ICAgIGFzc2VydChpbnB1dDIuY2hlY2tlZCwgImNoZWNrYm94IDIgbm90IGNoZWNrZWQgYWZ0ZXIg
YmVpbmcgbW92ZWQiKTsKICAgICAgYXNzZXJ0KGlucHV0My5jaGVja2VkLCAiY2hlY2tib3ggMyBu
b3QgY2hlY2tlZCBhZnRlciBiZWluZyBtb3ZlZCIpOwogICAgICByZXR1cm4gNDsKICAgIH0sCiAg
ICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNTY6IGNsb25lZCByYWRpbyBidXR0b25zIHNo
b3VsZCBrZWVwIHRoZWlyIHN0YXRlCiAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImZvcm0iKVswXTsKICAgICAgdmFyIGlucHV0MSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgIGlucHV0MS50eXBlID0gInJhZGlvIjsKICAgICAgaW5w
dXQxLm5hbWUgPSAicmFkaW9Hcm91cDEiOwogICAgICBmb3JtLmFwcGVuZENoaWxkKGlucHV0MSk7
CiAgICAgIHZhciBpbnB1dDIgPSBpbnB1dDEuY2xvbmVOb2RlKHRydWUpOwogICAgICBpbnB1dDEu
cGFyZW50Tm9kZS5hcHBlbmRDaGlsZChpbnB1dDIpOwogICAgICBpbnB1dDEuY2hlY2tlZCA9IHRy
dWU7CiAgICAgIGFzc2VydChmb3JtLmVsZW1lbnRzLnJhZGlvR3JvdXAxLCAicmFkaW8gZ3JvdXAg
YWJzZW50Iik7CiAgICAgIGFzc2VydChpbnB1dDEuY2hlY2tlZCwgImZpcnN0IHJhZGlvIGJ1dHRv
biBub3QgY2hlY2tlZCIpOwogICAgICBhc3NlcnQoIWlucHV0Mi5jaGVja2VkLCAic2Vjb25kIHJh
ZGlvIGJ1dHRvbiBjaGVja2VkIik7CiAgICAgIGlucHV0Mi5jaGVja2VkID0gdHJ1ZTsKICAgICAg
YXNzZXJ0KCFpbnB1dDEuY2hlY2tlZCwgImZpcnN0IHJhZGlvIGJ1dHRvbiBjaGVja2VkIik7CiAg
ICAgIGFzc2VydChpbnB1dDIuY2hlY2tlZCwgInNlY29uZCByYWRpbyBidXR0b24gbm90IGNoZWNr
ZWQiKTsKICAgICAgdmFyIGlucHV0MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7
CiAgICAgIGlucHV0My50eXBlID0gInJhZGlvIjsKICAgICAgaW5wdXQzLm5hbWUgPSAicmFkaW9H
cm91cDIiOwogICAgICBmb3JtLmFwcGVuZENoaWxkKGlucHV0Myk7CiAgICAgIGFzc2VydCghaW5w
dXQzLmNoZWNrZWQsICJ0aGlyZCByYWRpbyBidXR0b24gY2hlY2tlZCIpOwogICAgICBpbnB1dDMu
Y2hlY2tlZCA9IHRydWU7CiAgICAgIGFzc2VydCghaW5wdXQxLmNoZWNrZWQsICJmaXJzdCByYWRp
byBidXR0b24gbmV3bHkgY2hlY2tlZCIpOwogICAgICBhc3NlcnQoaW5wdXQyLmNoZWNrZWQsICJz
ZWNvbmQgcmFkaW8gYnV0dG9uIG5ld2x5IG5vdCBjaGVja2VkIik7CiAgICAgIGFzc2VydChpbnB1
dDMuY2hlY2tlZCwgInRoaXJkIHJhZGlvIGJ1dHRvbiBub3QgY2hlY2tlZCIpOwogICAgICBpbnB1
dDEuY2hlY2tlZCA9IHRydWU7CiAgICAgIGFzc2VydChpbnB1dDEuY2hlY2tlZCwgImZpcnN0IHJh
ZGlvIGJ1dHRvbiBlbmRlZCB1cCBub3QgY2hlY2tlZCIpOwogICAgICBhc3NlcnQoIWlucHV0Mi5j
aGVja2VkLCAic2Vjb25kIHJhZGlvIGJ1dHRvbiBlbmRlZCB1cCBjaGVja2VkIik7CiAgICAgIGFz
c2VydChpbnB1dDMuY2hlY2tlZCwgInRoaXJkIHJhZGlvIGJ1dHRvbiBlbmRlZCB1cCBub3QgY2hl
Y2tlZCIpOwogICAgICBpbnB1dDEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpbnB1dDEpOwogICAg
ICBpbnB1dDIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpbnB1dDIpOwogICAgICBpbnB1dDMucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChpbnB1dDMpOwogICAgICByZXR1cm4gNDsKICAgIH0sCiAgICBm
dW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNTc6IEhUTUxTZWxlY3RFbGVtZW50LmFkZCgpCiAg
ICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7CiAgICAgIHZhciBv
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CiAgICAgIHMuYWRkKG8sIG51bGwp
OwogICAgICBhc3NlcnQocy5maXJzdENoaWxkID09PSBvLCAiYWRkKCkgZGlkbid0IGFkZCB0byBm
aXJzdENoaWxkIik7CiAgICAgIGFzc2VydEVxdWFscyhzLmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAi
YWRkKCkgZGlkbid0IGFkZCB0byBjaGlsZE5vZGVzIik7CiAgICAgIGFzc2VydChzLmNoaWxkTm9k
ZXNbMF0gPT09IG8sICJhZGQoKSBkaWRuJ3QgYWRkIHRvIGNoaWxkTm9kZXMgY29ycmVjdGx5Iik7
CiAgICAgIGFzc2VydEVxdWFscyhzLm9wdGlvbnMubGVuZ3RoLCAxLCAiYWRkKCkgZGlkbid0IGFk
ZCB0byBvcHRpb25zIik7CiAgICAgIGFzc2VydChzLm9wdGlvbnNbMF0gPT09IG8sICJhZGQoKSBk
aWRuJ3QgYWRkIHRvIG9wdGlvbnMgY29ycmVjdGx5Iik7CiAgICAgIHJldHVybiA0OwogICAgfSwK
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA1ODogSFRNTE9wdGlvbkVsZW1lbnQuZGVm
YXVsdFNlbGVjdGVkCiAgICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0
Jyk7CiAgICAgIHZhciBvMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAg
ICB2YXIgbzIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsKICAgICAgbzIuZGVm
YXVsdFNlbGVjdGVkID0gdHJ1ZTsKICAgICAgdmFyIG8zID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnb3B0aW9uJyk7CiAgICAgIHMuYXBwZW5kQ2hpbGQobzEpOwogICAgICBzLmFwcGVuZENoaWxk
KG8yKTsKICAgICAgcy5hcHBlbmRDaGlsZChvMyk7CiAgICAgIGFzc2VydChzLm9wdGlvbnNbcy5z
ZWxlY3RlZEluZGV4XSA9PT0gbzIsICJkZWZhdWx0U2VsZWN0ZWQgZGlkbid0IHRha2UiKTsKICAg
ICAgcmV0dXJuIDQ7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDU5OiBh
dHRyaWJ1dGVzIG9mIDxidXR0b24+IGVsZW1lbnRzCiAgICAgIHZhciBidXR0b24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICAgYXNzZXJ0RXF1YWxzKGJ1dHRvbi50eXBl
LCAic3VibWl0IiwgIjxidXR0b24+IGRvZXNuJ3QgaGF2ZSB0eXBlPXN1Ym1pdCIpOwogICAgICBi
dXR0b24uc2V0QXR0cmlidXRlKCJ0eXBlIiwgImJ1dHRvbiIpOwogICAgICBhc3NlcnRFcXVhbHMo
YnV0dG9uLnR5cGUsICJidXR0b24iLCAiPGJ1dHRvbiB0eXBlPWJ1dHRvbj4gZG9lc24ndCBoYXZl
IHR5cGU9YnV0dG9uIik7CiAgICAgIGJ1dHRvbi5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKTsKICAg
ICAgYXNzZXJ0RXF1YWxzKGJ1dHRvbi50eXBlLCAic3VibWl0IiwgIjxidXR0b24+IGRvZXNuJ3Qg
aGF2ZSB0eXBlPXN1Ym1pdCBiYWNrIik7CiAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVl
JywgJ2FwcGxlJyk7CiAgICAgIGJ1dHRvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnYmFuYW5hJykpOwogICAgICBhc3NlcnRFcXVhbHMoYnV0dG9uLnZhbHVlLCAnYXBwbGUn
LCAid3JvbmcgYnV0dG9uIHZhbHVlIik7CiAgICAgIHJldHVybiA0OwogICAgfSwKCiAgICAvLyBN
aXNjIERPTTIgSFRNTAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDYwOiBjbGFzc05h
bWUgdnMgImNsYXNzIiB2cyBhdHRyaWJ1dGUgbm9kZXMKICAgICAgdmFyIHNwYW4gPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpWzBdOwogICAgICBzcGFuLnNldEF0dHJpYnV0
ZSgnY2xhc3MnLCAna2l0dGVucycpOwogICAgICB2YXIgYXR0ciA9IHNwYW4uZ2V0QXR0cmlidXRl
Tm9kZSgnY2xhc3MnKTsKICAgICAgYXNzZXJ0KGF0dHIuc3BlY2lmaWVkLCAiYXR0cmlidXRlIG5v
dCBzcGVjaWZpZWQiKTsKICAgICAgYXNzZXJ0RXF1YWxzKGF0dHIudmFsdWUsICdraXR0ZW5zJywg
ImF0dHJpYnV0ZSB2YWx1ZSB3cm9uZyIpOwogICAgICBhc3NlcnRFcXVhbHMoYXR0ci5uYW1lLCAn
Y2xhc3MnLCAiYXR0cmlidXRlIG5hbWUgd3JvbmciKTsKICAgICAgYXR0ci52YWx1ZSA9ICdvY2Vs
b3RzJzsKICAgICAgYXNzZXJ0RXF1YWxzKHNwYW4uY2xhc3NOYW1lLCAnb2NlbG90cycsICJzZXR0
aW5nIGF0dHJpYnV0ZSB2YWx1ZSBmYWlsZWQgdG8gYmUgcmVmbGVjdGVkIGluIGNsYXNzTmFtZSIp
OwogICAgICBzcGFuLmNsYXNzTmFtZSA9ICdjYXRzJzsKICAgICAgYXNzZXJ0RXF1YWxzKGF0dHIu
b3duZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSwgJ2NhdHMnLCAic2V0dGluZyBhdHRy
aWJ1dGUgdmFsdWUgZmFpbGVkIHRvIGJlIHJlZmxlY3RlZCBpbiBnZXRBdHRyaWJ1dGUoKSIpOwog
ICAgICBzcGFuLnJlbW92ZUF0dHJpYnV0ZU5vZGUoYXR0cik7CiAgICAgIGFzc2VydChhdHRyLnNw
ZWNpZmllZCwgImF0dHJpYnV0ZSBub3Qgc3BlY2lmaWVkIGFmdGVyIHJlbW92YWwiKTsKICAgICAg
YXNzZXJ0KCFhdHRyLm93bmVyRWxlbWVudCwgImF0dHJpYnV0ZSBzdGlsbCBvd25lZCBhZnRlciBy
ZW1vdmFsIik7CiAgICAgIGFzc2VydCghc3Bhbi5jbGFzc05hbWUsICJlbGVtZW50IGhhZCBjbGFz
cyBhZnRlciByZW1vdmFsIik7CiAgICAgIHJldHVybiA0OwogICAgfSwKICAgIGZ1bmN0aW9uICgp
IHsKICAgICAgLy8gdGVzdCA2MTogY2xhc3NOYW1lIGFuZCB0aGUgY2xhc3MgYXR0cmlidXRlOiBz
cGFjZSBwcmVzZXJ2YXRpb24KICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdw
Jyk7CiAgICAgIGFzc2VydCghcC5oYXNBdHRyaWJ1dGUoJ2NsYXNzJyksICJlbGVtZW50IGhhZCBh
dHRyaWJ1dGUgb24gY3JlYXRpb24iKTsKICAgICAgcC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJyB0
ZSAgc3QgJyk7CiAgICAgIGFzc2VydChwLmhhc0F0dHJpYnV0ZSgnY2xhc3MnKSwgImVsZW1lbnQg
ZGlkIG5vdCBoYXZlIGF0dHJpYnV0ZSBhZnRlciBzZXR0aW5nIik7CiAgICAgIGFzc2VydEVxdWFs
cyhwLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSwgJyB0ZSAgc3QgJywgImNsYXNzIGF0dHJpYnV0ZSdz
IHZhbHVlIHdhcyB3cm9uZyIpOwogICAgICBhc3NlcnRFcXVhbHMocC5jbGFzc05hbWUsICcgdGUg
IHN0ICcsICJjbGFzc05hbWUgd2FzIHdyb25nIik7CiAgICAgIHAuY2xhc3NOYW1lID0gcC5jbGFz
c05hbWUucmVwbGFjZSgvIC9nLCAnXG4nKTsKICAgICAgYXNzZXJ0KHAuaGFzQXR0cmlidXRlKCdj
bGFzcycpLCAiZWxlbWVudCBkaWQgbm90IGhhdmUgYXR0cmlidXRlIGFmdGVyIHJlcGxhY2VtZW50
Iik7CiAgICAgIGFzc2VydEVxdWFscyhwLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSwgJ1xudGVcblxu
c3RcbicsICJjbGFzcyBhdHRyaWJ1dGUncyB2YWx1ZSB3YXMgd3JvbmcgYWZ0ZXIgcmVwbGFjZW1l
bnQiKTsKICAgICAgYXNzZXJ0RXF1YWxzKHAuY2xhc3NOYW1lLCAnXG50ZVxuXG5zdFxuJywgImNs
YXNzTmFtZSB3YXMgd3JvbmcgYWZ0ZXIgcmVwbGFjZW1lbnQiKTsKICAgICAgcC5jbGFzc05hbWUg
PSAnJzsKICAgICAgYXNzZXJ0KHAuaGFzQXR0cmlidXRlKCdjbGFzcycpLCAiZWxlbWVudCBsb3N0
IGF0dHJpYnV0ZSBhZnRlciBiZWluZyBzZXQgdG8gZW1wdHkgc3RyaW5nIik7CiAgICAgIGFzc2Vy
dEVxdWFscyhwLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSwgJycsICJjbGFzcyBhdHRyaWJ1dGUncyB2
YWx1ZSB3YXMgd3JvbmcgYWZ0ZXIgYmVpbmcgZW1wdGllZCIpOwogICAgICBhc3NlcnRFcXVhbHMo
cC5jbGFzc05hbWUsICcnLCAiY2xhc3NOYW1lIHdhcyB3cm9uZyBhZnRlciBiZWluZyBlbXB0aWVk
Iik7CiAgICAgIHJldHVybiA0OwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVz
dCA2MjogY2hlY2sgdGhhdCBET00gYXR0cmlidXRlcyBhbmQgY29udGVudCBhdHRyaWJ1dGVzIGFy
ZW4ndCBlcXVpdmFsZW50CiAgICAgIHZhciB0ZXN0OwogICAgICAvLyA8ZGl2IGNsYXNzPSIiPgog
ICAgICB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpWzBdOwogICAg
ICBhc3NlcnRFcXVhbHModGVzdC5jbGFzc05hbWUsICdidWNrZXRzJywgImJ1Y2tldHM6IGNsYXNz
TmFtZSB3cm9uZyIpOwogICAgICBhc3NlcnRFcXVhbHModGVzdC5nZXRBdHRyaWJ1dGUoJ2NsYXNz
JyksICdidWNrZXRzJywgImJ1Y2tldHM6IGNsYXNzIHdyb25nIik7CiAgICAgIGFzc2VydCghdGVz
dC5oYXNBdHRyaWJ1dGUoJ2NsYXNzTmFtZScpLCAiYnVja2V0czogZWxlbWVudCBoYXMgY2xhc3NO
YW1lIGF0dHJpYnV0ZSIpOwogICAgICBhc3NlcnQodGVzdC5jbGFzc05hbWUgIT0gdGVzdC5nZXRB
dHRyaWJ1dGUoJ2NsYXNzTmFtZScpLCAiYnVja2V0czogY2xhc3NOYW1lIGF0dHJpYnV0ZSBlcXVh
bHMgY2xhc3NOYW1lIHByb3BlcnR5Iik7CiAgICAgIGFzc2VydCghKCdjbGFzcycgaW4gdGVzdCks
ICJidWNrZXRzOiBlbGVtZW50IGhhcyBjbGFzcyBwcm9wZXJ0eSIpCiAgICAgIHRlc3RbJ2NsYXNz
J10gPSAib2lsIjsKICAgICAgYXNzZXJ0KHRlc3QuY2xhc3NOYW1lICE9ICJvaWwiLCAiYnVja2V0
czogY2xhc3MgcHJvcGVydHkgYWZmZWN0ZWQgY2xhc3NOYW1lIik7CiAgICAgIC8vIDxsYWJlbCBm
b3I9IiI+CiAgICAgIHRlc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpOwogICAg
ICB0ZXN0Lmh0bWxGb3IgPSAnamFycyc7CiAgICAgIGFzc2VydEVxdWFscyh0ZXN0Lmh0bWxGb3Is
ICdqYXJzJywgImphcnM6IGh0bWxGb3Igd3JvbmciKTsKICAgICAgYXNzZXJ0RXF1YWxzKHRlc3Qu
Z2V0QXR0cmlidXRlKCdmb3InKSwgJ2phcnMnLCAiamFyczogZm9yIHdyb25nIik7CiAgICAgIGFz
c2VydCghdGVzdC5oYXNBdHRyaWJ1dGUoJ2h0bWxGb3InKSwgImphcnM6IGVsZW1lbnQgaGFzIGh0
bWxGb3IgYXR0cmlidXRlIik7CiAgICAgIGFzc2VydCh0ZXN0Lmh0bWxGb3IgIT0gdGVzdC5nZXRB
dHRyaWJ1dGUoJ2h0bWxGb3InKSwgImphcnM6IGh0bWxGb3IgYXR0cmlidXRlIGVxdWFscyBodG1s
Rm9yIHByb3BlcnR5Iik7CiAgICAgIHRlc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJl
bCcpOwogICAgICB0ZXN0LnNldEF0dHJpYnV0ZSgnZm9yJywgJ3BvdHMnKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHRlc3QuaHRtbEZvciwgJ3BvdHMnLCAicG90czogaHRtbEZvciB3cm9uZyIpOwogICAg
ICBhc3NlcnRFcXVhbHModGVzdC5nZXRBdHRyaWJ1dGUoJ2ZvcicpLCAncG90cycsICJwb3RzOiBm
b3Igd3JvbmciKTsKICAgICAgYXNzZXJ0KCF0ZXN0Lmhhc0F0dHJpYnV0ZSgnaHRtbEZvcicpLCAi
cG90czogZWxlbWVudCBoYXMgaHRtbEZvciBhdHRyaWJ1dGUiKTsKICAgICAgYXNzZXJ0KHRlc3Qu
aHRtbEZvciAhPSB0ZXN0LmdldEF0dHJpYnV0ZSgnaHRtbEZvcicpLCAicG90czogaHRtbEZvciBh
dHRyaWJ1dGUgZXF1YWxzIGh0bWxGb3IgcHJvcGVydHkiKTsKICAgICAgYXNzZXJ0KCEoJ2Zvcicg
aW4gdGVzdCksICJwb3RzOiBlbGVtZW50IGhhcyBmb3IgcHJvcGVydHkiKTsKICAgICAgdGVzdFsn
Zm9yJ10gPSAib2lsIjsKICAgICAgYXNzZXJ0KHRlc3QuaHRtbEZvciAhPSAib2lsIiwgInBvdHM6
IGZvciBwcm9wZXJ0eSBhZmZlY3RlZCBodG1sRm9yIik7CiAgICAgIC8vIDxtZXRhIGh0dHAtZXF1
aXY9IiI+CiAgICAgIHRlc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdtZXRhJyk7CiAgICAg
IHRlc3Quc2V0QXR0cmlidXRlKCdodHRwLWVxdWl2JywgJ2JveGVzJyk7CiAgICAgIGFzc2VydEVx
dWFscyh0ZXN0Lmh0dHBFcXVpdiwgJ2JveGVzJywgImJveGVzOiBodHRwRXF1aXYgd3JvbmciKTsK
ICAgICAgYXNzZXJ0RXF1YWxzKHRlc3QuZ2V0QXR0cmlidXRlKCdodHRwLWVxdWl2JyksICdib3hl
cycsICJib3hlczogaHR0cC1lcXVpdiB3cm9uZyIpOwogICAgICBhc3NlcnQoIXRlc3QuaGFzQXR0
cmlidXRlKCdodHRwRXF1aXYnKSwgImJveGVzOiBlbGVtZW50IGhhcyBodHRwRXF1aXYgYXR0cmli
dXRlIik7CiAgICAgIGFzc2VydCh0ZXN0Lmh0dHBFcXVpdiAhPSB0ZXN0LmdldEF0dHJpYnV0ZSgn
aHR0cEVxdWl2JyksICJib3hlczogaHR0cEVxdWl2IGF0dHJpYnV0ZSBlcXVhbHMgaHR0cEVxdWl2
IHByb3BlcnR5Iik7CiAgICAgIHRlc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdtZXRhJyk7
CiAgICAgIHRlc3QuaHR0cEVxdWl2ID0gJ2NhbnMnOwogICAgICBhc3NlcnRFcXVhbHModGVzdC5o
dHRwRXF1aXYsICdjYW5zJywgImNhbnM6IGh0dHBFcXVpdiB3cm9uZyIpOwogICAgICBhc3NlcnRF
cXVhbHModGVzdC5nZXRBdHRyaWJ1dGUoJ2h0dHAtZXF1aXYnKSwgJ2NhbnMnLCAiY2FuczogaHR0
cC1lcXVpdiB3cm9uZyIpOwogICAgICBhc3NlcnQoIXRlc3QuaGFzQXR0cmlidXRlKCdodHRwRXF1
aXYnKSwgImNhbnM6IGVsZW1lbnQgaGFzIGh0dHBFcXVpdiBhdHRyaWJ1dGUiKTsKICAgICAgYXNz
ZXJ0KHRlc3QuaHR0cEVxdWl2ICE9IHRlc3QuZ2V0QXR0cmlidXRlKCdodHRwRXF1aXYnKSwgImNh
bnM6IGh0dHBFcXVpdiBhdHRyaWJ1dGUgZXF1YWxzIGh0dHBFcXVpdiBwcm9wZXJ0eSIpOwogICAg
ICBhc3NlcnQoISgnaHR0cC1lcXVpdicgaW4gdGVzdCksICJjYW5zOiBlbGVtZW50IGhhcyBodHRw
LWVxdWl2IHByb3BlcnR5Iik7CiAgICAgIHRlc3RbJ2h0dHAtZXF1aXYnXSA9ICJvaWwiOwogICAg
ICBhc3NlcnQodGVzdC5odHRwRXF1aXYgIT0gIm9pbCIsICJjYW5zOiBodHRwLWVxdWl2IHByb3Bl
cnR5IGFmZmVjdGVkIGh0dHBFcXVpdiIpOwogICAgICByZXR1cm4gNDsKICAgIH0sCiAgICBmdW5j
dGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNjM6IGF0dHJpYnV0ZXMgb2YgdGhlIDxhcmVhPiBlbGVt
ZW50CiAgICAgIHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2FyZWEn
KVswXTsKICAgICAgYXNzZXJ0RXF1YWxzKGFyZWEuZ2V0QXR0cmlidXRlKCdocmVmJyksICcnLCAi
d3JvbmcgdmFsdWUgZm9yIGhyZWY9JyciKTsKICAgICAgYXNzZXJ0RXF1YWxzKGFyZWEuZ2V0QXR0
cmlidXRlKCdzaGFwZScpLCAncmVjdCcsICJ3cm9uZyB2YWx1ZSBmb3Igc2hhcGU9JyciKTsKICAg
ICAgYXNzZXJ0RXF1YWxzKGFyZWEuZ2V0QXR0cmlidXRlKCdjb29yZHMnKSwgJzIsMiw0LDQnLCAi
d3JvbmcgdmFsdWUgZm9yIGNvb3Jkcz0nJyIpOwogICAgICByZXR1cm4gNDsKICAgIH0sCiAgICBm
dW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNjQ6IGF0dHJpYnV0ZXMgb2YgdGhlIDxvYmplY3Q+
IGVsZW1lbnQKICAgICAgdmFyIG9iajEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvYmplY3Qn
KTsKICAgICAgb2JqMS5zZXRBdHRyaWJ1dGUoJ2RhdGEnLCAndGVzdC5odG1sJyk7CiAgICAgIHZh
ciBvYmoyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2JqZWN0Jyk7CiAgICAgIG9iajIuc2V0
QXR0cmlidXRlKCdkYXRhJywgJy4vdGVzdC5odG1sJyk7CiAgICAgIGFzc2VydEVxdWFscyhvYmox
LmRhdGEsIG9iajIuZGF0YSwgIm9iamVjdCBlbGVtZW50cyBkaWRuJ3QgcmVzb2x2ZSBVUklzIGNv
cnJlY3RseSIpOwogICAgICBhc3NlcnQob2JqMS5kYXRhLm1hdGNoKC9eaHR0cDovKSwgIm9iamVj
dC5kYXRhIGlzbid0IGFic29sdXRlIik7CiAgICAgIG9iajEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgncGFyYW0nKSk7CiAgICAgIGFzc2VydEVxdWFscyhvYmoxLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdwYXJhbScpLmxlbmd0aCwgMSwgIm9iamVjdCBpcyBtaXNzaW5nIGl0cyBv
bmx5IGNoaWxkIik7CiAgICAgIHJldHVybiA0OwogICAgfSwKCiAgICAvLyBidWNrZXQgNTogVGVz
dHMgZnJvbSB0aGUgQWNpZDMgQ29tcGV0aXRpb24KICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8g
dGVzdCA2NTogYnJpbmcgaW4gYSBjb3VwbGUgb2YgU1ZHIGZpbGVzIGFuZCBzb21lIEhUTUwgZmls
ZXMgZHluYW1pY2FsbHkgLSBwcmVwYXJhdGlvbiBmb3IgbGF0ZXIgdGVzdHMgaW4gdGhpcyBidWNr
ZXQKICAgICAga3VuZ0Z1RGVhdGhHcmlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwog
ICAgICBrdW5nRnVEZWF0aEdyaXAuY2xhc3NOYW1lID0gJ3JlbW92ZWQnOwogICAgICB2YXIgc3Zn
ZmlsZSA9ICdzdmcueG1sJzsKICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdpZnJhbWUnKTsKICAgICAgaWZy
YW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsga3VuZ0Z1RGVhdGhHcmlwLnRpdGxlICs9ICcxJyB9
OwogICAgICBpZnJhbWUuc3JjID0gc3ZnZmlsZTsKICAgICAga3VuZ0Z1RGVhdGhHcmlwLmFwcGVu
ZENoaWxkKGlmcmFtZSk7CiAgICAgIHZhciBvYmplY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnb2JqZWN0Jyk7CiAgICAgIG9iamVj
dC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGt1bmdGdURlYXRoR3JpcC50aXRsZSArPSAnMicgfTsK
ICAgICAgb2JqZWN0LmRhdGEgPSBzdmdmaWxlOwogICAgICBrdW5nRnVEZWF0aEdyaXAuYXBwZW5k
Q2hpbGQob2JqZWN0KTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hcCcp
WzBdLmFwcGVuZENoaWxkKGt1bmdGdURlYXRoR3JpcCk7CiAgICAgIC8vIFhYWCBhZGQgc29tZSBo
dG1sIGZpbGVzIHRvbwogICAgICByZXR1cm4gNTsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAg
ICAgIC8vIHRlc3QgNjY6IGxvY2FsTmFtZSBvbiBhdHRyaWJ1dGVzLCBmcm9tIFN5bHZhaW4gUGFz
Y2hlCiAgICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInRlc3QiKTsKICAg
ICAgYXNzZXJ0RXF1YWxzKHRlc3QubG9jYWxOYW1lLCBudWxsLCAnd3JvbmcgbG9jYWxOYW1lJyk7
CiAgICAgIHJldHVybiA1OwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA2
NzogcmVtb3ZlZE5hbWVkSXRlbU5TIG9uIG1pc3NpbmcgYXR0cmlidXRlcywgZnJvbSBTeWx2YWlu
IFBhc2NoZQogICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKICAgICAg
dmFyIG1zZyA9ICd3cm9uZyBleGNlcHRpb24gcmFpc2VkJzsKICAgICAgdHJ5IHsKICAgICAgICBw
LmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtTlMoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIiwg
ImFic2VudCIpOwogICAgICAgIG1zZyA9ICdubyBleGNlcHRpb24gcmFpc2VkJzsKICAgICAgfSBj
YXRjaCAoZSkgewogICAgICAgIGlmICgnY29kZScgaW4gZSkgewogICAgICAgICAgaWYgKGUuY29k
ZSA9PSA4KQogICAgICAgICAgICBtc2cgPSAnJzsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
bXNnICs9ICc7IGNvZGUgPSAnICsgZS5jb2RlOwogICAgICAgIH0KICAgICAgfQogICAgICBhc3Nl
cnQobXNnID09ICcnLCAid2hlbiBjYWxsaW5nIHJlbW92ZU5hbWVkSXRlbU5TIGluIGEgbm9uIGV4
aXN0ZW50IGF0dHJpYnV0ZTogIiArIG1zZyk7CiAgICAgIHJldHVybiA1OwogICAgfSwKICAgIGZ1
bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA2ODogVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgZnJv
bSBEYXZpZCBDaGFuCiAgICAgIC8vIAogICAgICAvLyBJbiBUaGUgVW5pY29kZSBTdGFuZGFyZCA1
LjAsIGl0IGlzIGV4cGxpY2l0bHkgcGVybWl0dGVkIHRvCiAgICAgIC8vIGFsbG93IG1hbGZvcm1l
ZCBVVEYtMTYsIHRoYXQgaXMsIHRvIGxlYXZlIHRoZSBzdHJpbmcgYWxvbmUuCiAgICAgIC8vICho
dHRwOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU1LjAuMCk6CiAgICAgIC8vIAog
ICAgICAvLyBzZWN0aW9uIDIuNzogIi4uLnN0cmluZ3MgaW4gLi4uIEVDTUFTY3JpcHQgYXJlIFVu
aWNvZGUgMTYtYml0CiAgICAgIC8vIHN0cmluZ3MsIGJ1dCBhcmUgbm90IG5lY2Vzc2FyaWx5IHdl
bGwtZm9ybWVkIFVURi0xNgogICAgICAvLyBzZXF1ZW5jZXMuICBJbiBub3JtYWwgcHJvY2Vzc2lu
ZywgaXQgY2FuIGJlIGZhciBtb3JlCiAgICAgIC8vIGVmZmljaWVudCB0byBhbGxvdyBzdWNoIHN0
cmluZ3MgdG8gY29udGFpbiBjb2RlIHVuaXQKICAgICAgLy8gc2VxdWVuY2VzIHRoYXQgYXJlIG5v
dCB3ZWxsLWZvcm1lZCBVVEYtMTYgLS0gdGhhdCBpcywKICAgICAgLy8gaXNvbGF0ZWQgc3Vycm9n
YXRlcyIKICAgICAgLy8gCiAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgYXBwbGlj
YXRpb24gd2lzaGVzIHRvIGVuc3VyZQogICAgICAvLyB3ZWxsLWZvcm1lZCBjaGFyYWN0ZXIgc2Vx
dWVuY2VzLCBpdCBtYXkgbm90IHBlcm1pdCB0aGUKICAgICAgLy8gbWFsZm9ybWVkIHNlcXVlbmNl
IGFuZCBpdCBtdXN0IHJlZ2FyZCB0aGUgZmlyc3QgY29kZXBvaW50IGFzCiAgICAgIC8vIGFuIGVy
cm9yOgogICAgICAvLyAKICAgICAgLy8gU2VjdGlvbiAzLjI6ICJDMTAuIFdoZW4gYSBwcm9jZXNz
IGludGVycHJldHMgYSBjb2RlIHNlcXVlbmNlCiAgICAgIC8vIHdoaWNoIHB1cnBvcnRzIHRvIGJl
IGluIGEgVW5pY29kZSBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9ybSwgaXQKICAgICAgLy8gc2hhbGwg
dHJlYXQgaWxsLWZvcm1lZCBjb2RlIHVuaXQgc2VxdWVuY2VzIGFzIGFuIGVycm9yCiAgICAgIC8v
IGNvbmRpdGlvbiBhbmQgc2hhbGwgbm90IGludGVycHJldCBzdWNoIHNlcXVlbmNlcyBhcwogICAg
ICAvLyBjaGFyYWN0ZXJzLgogICAgICAvLyBbLi4uXQogICAgICAvLyBGb3IgZXhhbXBsZSwgaW4g
VVRGLTggZXZlcnkgY29kZSB1bml0IG9mIHRoZSBmb3JtIDExMC4uLi4yCiAgICAgIC8vIG11c3Qg
YmUgZm9sbG93ZWQgYnkgYSBjb2RlIHVuaXQgb2YgdGhlIGZvcm0gMTAuLi4uLi4yLiBBCiAgICAg
IC8vIHNlcXVlbmNlIHN1Y2ggYXMgMTEwLi4uLi4yIDAuLi4uLi4uMiBpcyBpbGwtZm9ybWVkIGFu
ZCBtdXN0CiAgICAgIC8vIG5ldmVyIGJlIGdlbmVyYXRlZC4gV2hlbiBmYWNlZCB3aXRoIHRoaXMg
aWxsLWZvcm1lZCBjb2RlIHVuaXQKICAgICAgLy8gc2VxdWVuY2Ugd2hpbGUgdHJhbnNmb3JtaW5n
IG9yIGludGVycHJldGluZyB0ZXh0LCBhCiAgICAgIC8vIGNvbmZvcm1hbnQgcHJvY2VzcyBtdXN0
IHRyZWF0IHRoZSBmaXJzdCBjb2RlIHVuaXQgMTEwLi4uLi4yCiAgICAgIC8vIGFzIGFuIGlsbGVn
YWxseSB0ZXJtaW5hdGVkIGNvZGUgdW5pdCBzZXF1ZW5jZX5XZm9yIGV4YW1wbGUsCiAgICAgIC8v
IGJ5IHNpZ25hbGluZyBhbiBlcnJvciwgZmlsdGVyaW5nIHRoZSBjb2RlIHVuaXQgb3V0LCBvcgog
ICAgICAvLyByZXByZXNlbnRpbmcgdGhlIGNvZGUgdW5pdCB3aXRoIGEgbWFya2VyIHN1Y2ggYXMg
VStGRkZECiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4iCiAgICAgIC8vIAogICAgICAv
LyBTbyBpdCB3b3VsZCBiZSBwZXJtaXR0ZWQgdG8gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6CiAg
ICAgIC8vIDEpIExlYXZlIHRoZSBzdHJpbmcgYWxvbmUKICAgICAgLy8gMikgUmVtb3ZlIHRoZSB1
bnBhaXJlZCBzdXJyb2dhdGUKICAgICAgLy8gMykgUmVwbGFjZSB0aGUgdW5wYWlyZWQgc3Vycm9n
YXRlIHdpdGggVStGRkZECiAgICAgIC8vIDQpIFRocm93IGFuIGV4Y2VwdGlvbgoKICAgICAgdHJ5
IHsKICAgICAgICB2YXIgdW5wYWlyZWQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDg2Myk7IC8v
IGhhbGYgYSBzdXJyb2dhdGUgcGFpcgogICAgICAgIHZhciBiZWZvcmUgPSB1bnBhaXJlZCArICJ0
ZXh0IjsKICAgICAgICB2YXIgZWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsK
ICAgICAgICBlbHQudmFsdWUgPSBiZWZvcmU7CiAgICAgICAgdmFyIGFmdGVyID0gZWx0LnZhbHVl
OwogICAgICB9CiAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgcmV0dXJuIDU7IC8vIFVucGFpcmVk
IHN1cnJvZ2F0ZSBjYXVzZWQgYW4gZXhjZXB0aW9uIC0gb2sKICAgICAgfQogICAgICBpZiAoYWZ0
ZXIgPT0gYmVmb3JlICYmIGJlZm9yZS5sZW5ndGggPT0gNSkKICAgICAgICByZXR1cm4gNTsgLy8g
VW5wYWlyZWQgc3Vycm9nYXRlIGtlcHQgLSBvawogICAgICBpZiAoYWZ0ZXIgPT0gInRleHQiKQog
ICAgICAgIHJldHVybiA1OyAvLyBVbnBhaXJlZCBzdXJyb2dhdGUgcmVtb3ZlZCAtIG9rCiAgICAg
IHZhciByZXBsYWNlbWVudCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmZmZkKTsKICAgICAgaWYg
KGFmdGVyID09IHJlcGxhY2VtZW50ICsgInRleHQiKQogICAgICAgIHJldHVybiA1OyAvLyBVbnBh
aXJlZCBzdXJyb2dhdGUgcmVwbGFjZWQgLSBvawogICAgICBmYWlsKCJVbnBhaXJlZCBzdXJyb2dh
dGUgaGFuZGxlZCB3cm9uZ2x5IChpbnB1dCB3YXMgJyIgKyBiZWZvcmUgKyAiJywgb3V0cHV0IHdh
cyAnIiArIGFmdGVyICsgIicpIik7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0
ZXN0IDY5OiBhIGdpYW50IHRlc3QgZm9yIDxzdmc6Zm9udD4sIGZyb20gQ2FtZXJvbiBNY0Nvcm1h
Y2sKICAgICAgLy8gVGhpcyB0ZXN0cyB2YXJpb3VzIGZlYXR1cmVzIG9mIFNWRyBmb250cyBmcm9t
IFNWRyAxLjEuICBJdCBjb25zaXN0cyBvZgogICAgICAvLyBhIDx0ZXh0PiBlbGVtZW50IHdpdGgg
MzMgY2hhcmFjdGVycywgc3R5bGVkIHVzaW5nIGFuIFNWRyBmb250IHRoYXQgaGFzCiAgICAgIC8v
IGRpZmZlcmVudCBhZHZhbmNlIHZhbHVlcyBmb3IgZWFjaCBnbHlwaC4gIFRoZSBzY3JpcHQgdXNl
cwogICAgICAvLyBTVkdUZXh0RWxlbWVudENvbnRlbnQuZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigp
IHRvIGRldGVybWluZSB3aGVyZSB0aGUKICAgICAgLy8gZ2x5cGggY29ycmVzcG9uZGluZyB0byBl
YWNoIGNoYXJhY3RlciB3YXMgcGxhY2VkLCBhbmQgdGh1cyB0byB3b3JrIG91dAogICAgICAvLyB3
aGV0aGVyIHRoZSBTVkcgZm9udCB3YXMgdXNlZCBjb3JyZWN0bHkuCiAgICAgIC8vCiAgICAgIC8v
IFRoZSBmb250IHVzZXMgMTAwIHVuaXRzIHBlciBlbSwgYW5kIHRoZSB0ZXh0IGlzIHNldCBpbiAx
MDBweC4gIFNpbmNlCiAgICAgIC8vIGZvbnQtc2l6ZSBnaXZlcyB0aGUgc2l6ZSBvZiB0aGUgZW0g
Ym94CiAgICAgIC8vIChodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS90ZXh0Lmh0bWwjRE9NSW50
ZXJmYWNlcyksIHRoZSBzY2FsZSBvZiB0aGUKICAgICAgLy8gY29vcmRpbmF0ZSBzeXN0ZW0gZm9y
IHRoZSBnbHlwaHMgaXMgdGhlIHNhbWUgYXMgdGhlIFNWRyBkb2N1bWVudC4KICAgICAgLy8KICAg
ICAgLy8gVGhlIGV4cGVjdGVkQWR2YW5jZXMgYXJyYXkgaG9sZHMgdGhlIGV4cGVjdGVkIGFkdmFu
Y2UgdmFsdWUgZm9yIGVhY2gKICAgICAgLy8gY2hhcmFjdGVyLCBhbmQgZXhwZWN0ZWRLZXJuaW5n
IGhvbGRzIHRoZSAobmVnYXRpdmUpIGtlcm5pbmcgZm9yIGVhY2gKICAgICAgLy8gY2hhcmFjdGVy
LiAgZ2V0UG9zaXRpb25PZkNoYXIoKSByZXR1cm5zIHRoZSBhY3R1YWwgeCBjb29yZGluYXRlIGZv
ciB0aGUKICAgICAgLy8gZ2x5cGgsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGNoYXJhY3Rl
ciwgYW5kIGlmIG11bHRpcGxlIGNoYXJhY3RlcnMKICAgICAgLy8gY29ycmVzcG9uZCB0byB0aGUg
c2FtZSBnbHlwaCwgdGhlIHNhbWUgcG9zaXRpb24gdmFsdWUgaXMgcmV0dXJuZWQgZm9yCiAgICAg
IC8vIGVhY2ggb2YgdGhvc2UgY2hhcmFjdGVycy4KICAgICAgLy8KICAgICAgLy8gSGVyZSBhcmUg
dGhlIHJlYXNvbmluZ3MgZm9yIHRoZSBhZHZhbmNlL2tlcm5pbmcgdmFsdWVzLiAgTm90ZSB0aGF0
IGZvcgogICAgICAvLyBhIGdpdmVuIGNoYXJhY3RlciBhdCBpbmRleCBpLCB0aGUgZXhwZWN0ZWQg
cG9zaXRpb24gaXMKICAgICAgLy8gc3VtKGV4cGVjdGVkQWR2YW5jZXNbMDppLTFdICsgZXhwZWN0
ZWRLZXJuaW5nWzA6aS0xXSkuCiAgICAgIC8vCiAgICAgIC8vIGNoYXIgICAgIGFkdmFuY2UgIGtl
cm5pbmcgIHJlYXNvbmluZwogICAgICAvLyAtLS0tLS0tICAtLS0tLS0tICAtLS0tLS0tICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAvLyBB
ICAgICAgICAxMDAwMCAgICAwICAgICAgICBOb3JtYWwgY2hhcmFjdGVyIG1hcHBpbmcgdG8gYSBz
aW5nbGUgZ2x5cGguCiAgICAgIC8vIEIgICAgICAgIDAgICAgICAgIDAgICAgICAgIEZpcnN0IGNo
YXJhY3RlciBvZiBhIHR3byBjaGFyYWN0ZXIgZ2x5cGgsIHNvIHRoZQogICAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50IHBvc2l0aW9uIGlzbid0IGFkdmFuY2VkIHVudGls
IHRoZSBzZWNvbmQKICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVy
LgogICAgICAvLyBDICAgICAgICAyMDAgICAgICAwICAgICAgICBTZWNvbmQgY2hhcmFjdGVyIG9m
IGEgdHdvIGNoYXJhY3RlciBnbHlwaCwgc28gbm93CiAgICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoZSBwb3NpdGlvbiBpcyBhZHZhbmNlZC4KICAgICAgLy8gQiAgICAgICAgMzAw
ICAgICAgMCAgICAgICAgQWx0aG91Z2ggdGhlcmUgaXMgYSBnbHlwaCBmb3IgIkJDIiBpbiB0aGUg
Zm9udCwKICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgYXBwZWFycyBhZnRl
ciB0aGUgZ2x5cGggZm9yICJCIiwgc28gdGhlIHNpbmdsZQogICAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyYWN0ZXIgZ2x5cGggZm9yICJCIiBzaG91bGQgYmUgY2hvc2VuIGlu
c3RlYWQuCiAgICAgIC8vIEQgICAgICAgIDExMDAgICAgIDAgICAgICAgIE5vcm1hbCBjaGFyYWN0
ZXIgbWFwcGluZyB0byBhIHNpbmdsZSBnbHlwaC4KICAgICAgLy8gQSAgICAgICAgMTAwMDAgICAg
MjAwICAgICAgS2VybmluZyBvZiAtMjAwIGlzIHNwZWNpZmllZCBpbiB0aGUgZm9udCBiZXR3ZWVu
CiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiQSIgYW5kICJFRSIgZ2x5
cGhzLgogICAgICAvLyBFICAgICAgICAwICAgICAgICAwICAgICAgICBUaGUgZmlyc3QgY2hhcmFj
dGVyIG9mIGEgdHdvIGNoYXJhY3RlciBnbHlwaCAiRUUiLgogICAgICAvLyBFICAgICAgICAxMzAw
ICAgICAwICAgICAgICBUaGUgc2Vjb25kIGNoYXJhY3RlciBvZiBhIHR3byBjaGFyYWN0ZXIgZ2x5
cGguCiAgICAgIC8vIFUgICAgICAgIDAgICAgICAgIDAgICAgICAgIFRoaXMgaXMgYSBnbHlwaCBm
b3IgdGhlIHNpeCBjaGFyYWN0ZXJzICJVKzAwNDYiLAogICAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aGljaCBoYXBwZW4gdG8gbG9vayBsaWtlIGEgdmFsaWQgdW5pY29kZSByYW5n
ZS4KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0ZXN0cyB0aGF0IHRo
ZSA8Z2x5cGggdW5pY29kZT0iIj4gaW4gdGhlCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvbnQgbWF0Y2hlcyBleGFjdCBzdHJpbmdzIHJhdGhlciB0aGFuIGEgcmFuZ2UsCiAg
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHVzZWQgaW4gdGhlIGtlcm5pbmcg
ZWxlbWVudHMuCiAgICAgIC8vICsgICAgICAgIDAgICAgICAgIDAgICAgICAgIFNlY29uZCBjaGFy
YWN0ZXIgb2Ygc2l4IGNoYXJhY3RlciBnbHlwaC4KICAgICAgLy8gMCAgICAgICAgMCAgICAgICAg
MCAgICAgICAgVGhpcmQgY2hhcmFjdGVyIG9mIHNpeCBjaGFyYWN0ZXIgZ2x5cGguCiAgICAgIC8v
IDAgICAgICAgIDAgICAgICAgIDAgICAgICAgIEZvdXJ0aCBjaGFyYWN0ZXIgb2Ygc2l4IGNoYXJh
Y3RlciBnbHlwaC4KICAgICAgLy8gNCAgICAgICAgMCAgICAgICAgMCAgICAgICAgRmlmdGggY2hh
cmFjdGVyIG9mIHNpeCBjaGFyYWN0ZXIgZ2x5cGguCiAgICAgIC8vIDYgICAgICAgIDE3MDAgICAg
IDAgICAgICAgIFNpeHRoIGNoYXJhY3RlciBvZiBzaXggY2hhcmFjdGVyIGdseXBoLgogICAgICAv
LyBVICAgICAgICAwICAgICAgICAwICAgICAgICBUaGUgc2FtZSBzaXggY2hhcmFjdGVyIGdseXBo
IHRoYXQgbG9va3MgbGlrZSBhCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWNvZGUgcmFuZ2UuICBPbmUgb2YgdGhlIGtlcm5pbmcgZWxlbWVudHMgaGFzCiAgICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHUxPSJVKzAwNDYiIHUyPSJVKzAwNDYiLCB3aGljaCBz
aG91bGRuJ3QgbWF0Y2gKICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywg
YmVjYXVzZSB0aG9zZSBhdHRyaWJ1dGVzIGFyZSBpbnRlcnByZXRlZAogICAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcyBVbmljb2RlIHJhbmdlcyBpZiB0aGV5IGFyZSwgYW5kIG5v
cm1hbAogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdzIG90aGVyd2lz
ZS4gIFRodXMgdGhlcmUgc2hvdWxkIGJlIG5vCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtlcm5pbmcgYmV0d2VlbiB0aGVzZSB0d28gZ2x5cGhzLgogICAgICAvLyBHICAgICAg
ICAyMzAwICAgICAyMDAgICAgICBLZXJuaW5nIGlzIGJldHdlZW4gdGhpcyBjaGFyYWN0ZXIgYW5k
IHRoZSBuZXh0CiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHIiwgc2luY2Ug
dGhlcmUgaXMgYW4gPGhrZXJuPiBlbGVtZW50IHRoYXQKICAgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXNlcyBhIFVuaWNvZGUgcmFuZ2Ugb24gaXRzIHUxPSIiIGF0dHJpYnV0ZQog
ICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYSBnbHlwaCBuYW1lIG9uIGl0
cyBnMj0iIiBhdHRyaWJ1dGUgd2hpY2gKICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm90aCBtYXRjaCAiRyIuCiAgICAgIC8vIEcgICAgICAgIDIzMDAgICAgIDAgICAgICAgIE5v
cm1hbCBjaGFyYWN0ZXIgd2l0aCBrZXJuaW5nIGJlZm9yZSBpdC4KICAgICAgLy8gSCAgICAgICAg
MzEwMCAgICAgMCAgICAgICAgQSBnbHlwaCB3aXRoIGdyYXBoaWNhbCBjb250ZW50IGRlc2NyaWJp
bmcgdGhlCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoLCByYXRoZXIg
dGhhbiBhIGQ9IiIgYXR0cmlidXRlLgogICAgICAvLyBJICAgICAgICA0MzAwICAgICAwICAgICAg
ICBHbHlwaHMgYXJlIGNoZWNrZWQgaW4gZG9jdW1lbnQgb3JkZXIgZm9yIG9uZQogICAgICAvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG1hdGNoZXMsIGJ1dCB0aGUgZmlyc3QgZ2x5
cGggd2l0aAogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlPSJJIiBh
bHNvIGhhcyBsYW5nPSJ6aCIsIHdoaWNoIGRpc3F1YWxpZmllcwogICAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpdC4gIFRodXMgdGhlIHNlY29uZCBnbHlwaCB3aXRoIHVuaWNvZGU9
IkkiCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNob3Nlbi4KICAgICAg
Ly8gSSAgICAgICAgNDEwMCAgICAgMCAgICAgICAgU2luY2UgdGhpcyBJIGhhcyB4bWw6bGFuZz0i
emgiIG9uIGl0IGluIHRoZSB0ZXh0LAogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGUgZmlyc3QgZ2x5cGggd2l0aCBsYW5nPSJ6aCIgbWF0Y2hlcy4KICAgICAgLy8gSiAgICAg
ICAgNDcwMCAgICAgLTQ3MDAgICAgQSBub3JtYWwgZ2x5cGggd2l0aCBrZXJuaW5nIGJldHdlZW4g
dGhlICJKIiBhbmQgdGhlCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQg
Z2x5cGggIkEiIGVxdWFsIHRvIHRoZSBhZHZhbmNlIG9mIHRoZSAiSiIKICAgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2x5cGgsIHNvIHRoZSBwb3NpdGlvbiBzaG91bGQgc3RheSB0
aGUgc2FtZS4KICAgICAgLy8gQSAgICAgICAgMTAwMDAgICAgMCAgICAgICAgTm9ybWFsIGdseXBo
IHdpdGgga2VybmluZyBiZWZvcmUgaXQuCiAgICAgIC8vIEsgICAgICAgIDU5MDAgICAgIDAgICAg
ICAgIFRoZSBmaXJzdCBnbHlwaCB3aXRoIHVuaWNvZGU9IksiIGRvZXMgbm90IG1hdGNoLAogICAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5jZSBpdCBoYXMgb3JpZW50YXRpb249
InYiLCBzbyB0aGUgc2Vjb25kCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
eXBoIHdpdGggdW5pY29kZT0iSyIgaXMgY2hvc2VuLgogICAgICAvLyA8c3BjPiAgICA2MTAwICAg
ICAwICAgICAgICBUaGUgc3BhY2UgY2hhcmFjdGVyIHNob3VsZCBzZWxlY3QgdGhlIGdseXBoIHdp
dGgKICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZT0iICIsIGRlc3Bp
dGUgaXQgaGF2aW5nIGEgbWlzbGVhZGluZwogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbHlwaC1uYW1lPSJMIi4KICAgICAgLy8gTCAgICAgICAgNjcwMCAgICAgMCAgICAgICAg
VGhlICJMIiBjaGFyYWN0ZXIgc2hvdWxkIHNlbGVjdCB0aGUgZ2x5cGggd2l0aAogICAgICAvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlPSIgIiwgZGVzcGl0ZSBpdCBoYXZpbmcg
YSBtaXNsZWFkaW5nCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoLW5h
bWU9InNwYWNldiIuCiAgICAgIC8vIEEgICAgICAgIDI5MDAgICAgIDAgICAgICAgIEFuIDxhbHRH
bHlwaD4gZWxlbWVudCBpcyB1c2VkIHRvIHNlbGVjdCB0aGUKICAgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2x5cGggZm9yIFUrMTAwODUgaW5zdGVhZCBvZiB0aGUgb25lIGZvciAi
QSIuCiAgICAgIC8vIFUrMTAwODUgIDI5MDAgICAgIDAgICAgICAgIFRlc3RzIGdseXBoIHNlbGVj
dGlvbiB3aXRoIGEgbm9uLXBsYW5lLTAKICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhcmFjdGVyLgogICAgICAvLyBBICAgICAgICAxMDAwMCAgICAwICAgICAgICBBIGZpbmFs
IG5vcm1hbCBjaGFyYWN0ZXIuCiAgICAgIC8vCiAgICAgIC8vIEluIGFkZGl0aW9uLCB0aGUgc2Ny
aXB0IHRlc3RzIHRoZSB2YWx1ZSByZXR1cm5lZCBieQogICAgICAvLyBTVkdUZXh0Q29udGVudEVs
ZW1lbnQuZ2V0TnVtYmVyT2ZDaGFycygpLCB3aGljaCBpbiB0aGlzIGNhc2Ugc2hvdWxkIGJlIDMz
LgogICAgICAvLyBJZiBpdCByZXR1cm5lZCAzNCwgdGhlbiBpdCBpbmNvcnJlY3RseSBjb3VudGVk
IFVURi0xNiBjb2RlcG9pbnRzIG9yCiAgICAgIC8vIHNvbWV0aGluZy4KICAgICAgLy8KICAgICAg
Ly8gU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZvbnRzLmh0bWwgZm9yIGEgZGVzY3Jp
cHRpb24gb2YgdGhlIGdseXBoCiAgICAgIC8vIG1hdGNoaW5nIHJ1bGVzLCBhbmQgaHR0cDovL3d3
dy53My5vcmcvVFIvU1ZHMTEvdGV4dC5odG1sI0RPTUludGVyZmFjZXMKICAgICAgLy8gZm9yIGEg
ZGVzY3JpcHRpb24gb2YgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigpIGFuZCBnZXROdW1iZXJPZkNo
YXJzKCkuCiAgICAgIC8vCiAgICAgIC8vIE5vdGUgYWxzbyB0aGF0IHRoZSB0ZXN0IHVzZXMgRE9N
SW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoKSB0byBjcmVhdGUKICAgICAgLy8gdGhlIFNW
RyBkb2N1bWVudC4gIFRoaXMgc2VlbXMgdG8gY2F1c2UgYnJvd3NlcnMgdHJvdWJsZSBmb3IgdGhl
IFNWRyBET00KICAgICAgLy8gaW50ZXJmYWNlcywgc2luY2UgdGhlIGRvY3VtZW50IGlzbid0IGJl
aW5nICJyZW5kZXJlZCIgYXMgaXQgbWlnaHQgYmUKICAgICAgLy8gaWYgaXQgd2VyZSBpbiBhbiA8
aWZyYW1lPi4gIENoYW5naW5nIHRoZSB0ZXN0IHRvIHVzZSBhbiA8aWZyYW1lPiB3aWxsCiAgICAg
IC8vIGF0IGxlYXN0IGxldCB5b3Ugc2VlIHRoZSBtYWluIHBhcnQgb2YgdGhlIHRlc3QgcnVubmlu
Zy4KCiAgICAgIHZhciBOUyA9IHsgCiAgICAgICAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcnLAogICAgICAgIHhtbDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvWE1ML25hbWVzcGFj
ZScsCiAgICAgICAgeGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJwogICAgICB9
OwoKICAgICAgdmFyIGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50
KE5TLnN2ZywgJ3N2ZycsIG51bGwpOwogICAgICB2YXIgZSA9IGZ1bmN0aW9uIChuLCBhcywgY3Mp
IHsKICAgICAgICB2YXIgZWx0ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhOUy5zdmcsIG4pOwogICAg
ICAgIGlmIChhcykgewogICAgICAgICAgZm9yICh2YXIgYW4gaW4gYXMpIHsKICAgICAgICAgICAg
dmFyIGlkeCA9IGFuLmluZGV4T2YoJzonKTsKICAgICAgICAgICAgdmFyIG5zID0gbnVsbDsKICAg
ICAgICAgICAgaWYgKGlkeCAhPSAtMSkKICAgICAgICAgICAgICBucyA9IE5TW2FuLnN1YnN0cmlu
ZygwLCBpZHgpXTsKICAgICAgICAgICAgZWx0LnNldEF0dHJpYnV0ZU5TKG5zLCBhbiwgYXNbYW5d
KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGNzKSB7CiAgICAgICAgICBmb3Ig
KHZhciBpIGluIGNzKSB7CiAgICAgICAgICAgIHZhciBjID0gY3NbaV07CiAgICAgICAgICAgIGVs
dC5hcHBlbmRDaGlsZCh0eXBlb2YgYyA9PSAnc3RyaW5nJyA/IGRvYy5jcmVhdGVUZXh0Tm9kZShj
KSA6IGMpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZWx0OwogICAgICB9
CiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZSgnZm9udCcsIHsgJ2hvcml6
LWFkdi14JzogJzEwMDAwJ30sIFtlKCdmb250LWZhY2UnLCB7ICdmb250LWZhbWlseSc6ICdIQ2wn
LCAndW5pdHMtcGVyLWVtJzogJzEwMCcsICdhc2NlbnQnOiAnMTAwMCcsICdkZXNjZW50JzogJzUw
MCd9KSwgZSgnbWlzc2luZy1nbHlwaCcsIG51bGwsIFtlKCdwYXRoJywgeyAnZCc6ICdNMTAwLDAg
aDgwMCB2LTEwMCBoLTgwMCB6J30pXSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdBJywgJ2Qn
OiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeid9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzog
J0JDJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICcy
MDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdCJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0x
MDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICczMDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29k
ZSc6ICdDJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6
ICc1MDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdCRCcsICdkJzogJ00xMDAsMCBoMTAw
IHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnNzAwJ30pLCBlKCdnbHlwaCcsIHsgJ3Vu
aWNvZGUnOiAnRCcsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2
LXgnOiAnMTEwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0VFJywgJ2QnOiAnTTEwMCww
IGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICcxMzAwJ30pLCBlKCdnbHlwaCcs
IHsgJ3VuaWNvZGUnOiAnVSswMDQ2JywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeics
ICdob3Jpei1hZHYteCc6ICcxNzAwJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnRicsICdk
JzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnMTkwMCd9KSwg
ZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0cnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEw
MCB6JywgJ2hvcml6LWFkdi14JzogJzIzMDAnLCAnZ2x5cGgtbmFtZSc6ICdnZWUnfSksIGUoJ2ds
eXBoJywgeyAndW5pY29kZSc6ICdcdUQ4MDBcdURDODUnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEw
MCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzI5MDAnLCAnaWQnOiAnYXN0cmFsJ30pLCBlKCdn
bHlwaCcsIHsgJ3VuaWNvZGUnOiAnSCcsICdob3Jpei1hZHYteCc6ICczMTAwJ30sIFtlKCdwYXRo
JywgeyAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6J30pXSksIGUoJ2dseXBoJywgeyAn
dW5pY29kZSc6ICdJJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1h
ZHYteCc6ICc0MTAwJywgJ2xhbmcnOiAnemgnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdJ
JywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICc0MzAw
J30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnSicsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAw
IGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnNDcwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2Rl
JzogJ0snLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14Jzog
JzUzMDAnLCAnb3JpZW50YXRpb24nOiAndid9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0sn
LCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzU5MDAn
fSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICcgJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAg
aC0xMDAgeicsICdob3Jpei1hZHYteCc6ICc2MTAwJywgJ2dseXBoLW5hbWUnOiAnTCd9KSwgZSgn
Z2x5cGgnLCB7ICd1bmljb2RlJzogJ0wnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6
JywgJ2hvcml6LWFkdi14JzogJzY3MDAnLCAnZ2x5cGgtbmFtZSc6ICdzcGFjZSd9KSwgZSgnaGtl
cm4nLCB7ICd1MSc6ICdBJywgJ3UyJzogJ0VFJywgJ2snOiAnLTIwMCd9KSwgZSgnaGtlcm4nLCB7
ICd1MSc6ICdVKzAwNDYnLCAndTInOiAnVSswMDQ2JywgJ2snOiAnLTIwMCd9KSwgZSgnaGtlcm4n
LCB7ICd1MSc6ICdVKzAwNDctMDA0NycsICdnMic6ICdnZWUnLCAnayc6ICctMjAwJ30pLCBlKCdo
a2VybicsIHsgJ3UxJzogJ0onLCAndTInOiAnQScsICdrJzogJzQ3MDAnfSldKSk7CiAgICAgIGRv
Yy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZSgndGV4dCcsIHsgJ3knOiAnMTAwJywgJ2Zv
bnQtZmFtaWx5JzogJ0hDbCcsICdmb250LXNpemUnOiAnMTAwcHgnLCAnbGV0dGVyLXNwYWNpbmcn
OiAnMHB4JywgJ3dvcmQtc3BhY2luZyc6ICcwcHgnfSwgWydBQkNCREFFRVUrMDA0NlUrMDA0NkdH
SEknLCBlKCd0c3BhbicsIHsgJ3htbDpsYW5nJzogJ3poJ30sIFsnSSddKSwgJ0pBSyBMJywgZSgn
YWx0R2x5cGgnLCB7ICd4bGluazpocmVmJzogJyNhc3RyYWwnfSwgWydBJ10pLCAnXHVEODAwXHVE
Qzg1J10pKTsKCiAgICAgIHZhciB0ID0gZG9jLmRvY3VtZW50RWxlbWVudC5sYXN0Q2hpbGQ7Cgog
ICAgICB2YXIgY2hhcmFjdGVyRGVzY3JpcHRpb25zID0gWwogICAgICAgICJhIG5vcm1hbCBjaGFy
YWN0ZXIiLAogICAgICAgICJ0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgdHdvLWNoYXJhY3RlciBn
bHlwaCIsCiAgICAgICAgInRoZSBzZWNvbmQgY2hhcmFjdGVyIG9mIGEgdHdvLWNoYXJhY3RlciBn
bHlwaCIsCiAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hpY2ggc2hvdWxkbid0IGJlIHRo
ZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSB0d28tY2hhcmFjdGVyIGdseXBoIiwKICAgICAgICAiYSBu
b3JtYWwgY2hhcmFjdGVyLCB3aGljaCBzaG91bGRuJ3QgYmUgdGhlIHNlY29uZCBjaGFyYWN0ZXIg
b2YgYSB0d28tY2hhcmFjdGVyIGdseXBoIiwKICAgICAgICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3
aGljaCBoYXMgc29tZSBrZXJuaW5nIGFmdGVyIGl0IiwKICAgICAgICAidGhlIGZpcnN0IGNoYXJh
Y3RlciBvZiBhIHR3by1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcyBzb21lIGtlcm5pbmcgYmVm
b3JlIGl0IiwKICAgICAgICAidGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgYSB0d28tY2hhcmFjdGVy
IGdseXBoLCB3aGljaCBoYXMgc29tZSBrZXJuaW5nIGJlZm9yZSBpdCIsCiAgICAgICAgInRoZSBm
aXJzdCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5zIHRv
IGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQgZ2x5
cGggaGFzIGtlcm5pbmcgYWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwKICAgICAg
ICAidGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBo
YXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVj
aWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcgYWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90
IiwKICAgICAgICAidGhlIHRoaXJkIGNoYXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIgZ2x5cGgs
IHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5nZSwgd2hlcmUgdGhlIHJh
bmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBhZnRlciBpdCwgYnV0IHRoaXMgZ2x5cGgg
ZG9lcyBub3QiLAogICAgICAgICJ0aGUgZm91cnRoIGNoYXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0
ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5nZSwgd2hl
cmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBhZnRlciBpdCwgYnV0IHRo
aXMgZ2x5cGggZG9lcyBub3QiLAogICAgICAgICJ0aGUgZmlmdGggY2hhcmFjdGVyIG9mIGEgc2l4
LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJh
bmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGFmdGVyIGl0
LCBidXQgdGhpcyBnbHlwaCBkb2VzIG5vdCIsCiAgICAgICAgInRoZSBzaXh0aCBjaGFyYWN0ZXIg
b2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVu
aWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcg
YWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwKICAgICAgICAidGhlIGZpcnN0IGNo
YXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBs
aWtlIGEgVW5pY29kZSByYW5nZSwgd2hlcmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMg
a2VybmluZyBiZWZvcmUgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwKICAgICAgICAidGhl
IHNlY29uZCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5z
IHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQg
Z2x5cGggaGFzIGtlcm5pbmcgYmVmb3JlIGl0LCBidXQgdGhpcyBnbHlwaCBkb2VzIG5vdCIsCiAg
ICAgICAgInRoZSB0aGlyZCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGlj
aCBoYXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1z
cGVjaWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcgYmVmb3JlIGl0LCBidXQgdGhpcyBnbHlwaCBkb2Vz
IG5vdCIsCiAgICAgICAgInRoZSBmb3VydGggY2hhcmFjdGVyIG9mIGEgc2l4LWNoYXJhY3RlciBn
bHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJhbmdlLCB3aGVyZSB0
aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGJlZm9yZSBpdCwgYnV0IHRoaXMg
Z2x5cGggZG9lcyBub3QiLAogICAgICAgICJ0aGUgZmlmdGggY2hhcmFjdGVyIG9mIGEgc2l4LWNo
YXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJhbmdl
LCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGJlZm9yZSBpdCwg
YnV0IHRoaXMgZ2x5cGggZG9lcyBub3QiLAogICAgICAgICJ0aGUgc2l4dGggY2hhcmFjdGVyIG9m
IGEgc2l4LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmlj
b2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGJl
Zm9yZSBpdCwgYnV0IHRoaXMgZ2x5cGggZG9lcyBub3QiLAogICAgICAgICJhIG5vcm1hbCBjaGFy
YWN0ZXIsIHdoaWNoIGhhcyBzb21lIGtlcm5pbmcgYWZ0ZXIgaXQgdGhhdCBpcyBzcGVjaWZpZWQg
YnkgZ2x5cGggbmFtZSIsCiAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hpY2ggaGFzIHNv
bWUga2VybmluZyBiZWZvcmUgaXQgdGhhdCBpcyBzcGVjaWZpZWQgYnkgZ2x5cGggbmFtZSIsCiAg
ICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hvc2UgZ2x5cGggaXMgZ2l2ZW4gYnkgY2hpbGQg
Z3JhcGhpY2FsIGNvbnRlbnQgb2YgdGhlIDxnbHlwaD4gZWxlbWVudCIsCiAgICAgICAgImEgbm9y
bWFsIGNoYXJhY3Rlciwgd2hvc2UgZ2x5cGggc2hvdWxkIG5vdCBtYXRjaCB0aGUgb25lIHdpdGgg
YSBsYW5nPVwiXCIgYXR0cmlidXRlIG9uIGl0IiwKICAgICAgICAiYSBub3JtYWwgY2hhcmFjdGVy
LCB3aG9zZSBnbHlwaCBzaG91bGQgbWF0Y2ggdGhlIG9uZSB3aXRoIGEgbGFuZz1cIlwiIGF0dHJp
YnV0ZSBvbiBpdCIsCiAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hpY2ggaGFzIHNvbWUg
a2VybmluZyBhZnRlciBpdCB0aGF0IGlzIGVxdWFsIHRvIHRoZSBhZHZhbmNlIG9mIHRoZSBjaGFy
YWN0ZXIiLAogICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdoaWNoIGhhcyBzb21lIGtlcm5p
bmcgYmVmb3JlIGl0IHRoYXQgaXMgZXF1YWwgdG8gdGhlIGFkdmFuY2Ugb2YgdGhlIHByZXZpb3Vz
IGNoYXJhY3RlciIsCiAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hvc2UgZ2x5cGggc2hv
dWxkIG5vdCBtYXRjaCB0aGUgb25lIHdpdGggYW4gb3JpZW50YXRpb249XCJ2XCIgYXR0cmlidXRl
IG9uIGl0IiwKICAgICAgICAiYSBzcGFjZSBjaGFyYWN0ZXIsIHdoaWNoIGhhcyBhIG1pc2xlYWRp
bmcgZ2x5cGgtbmFtZT1cIlwiIGF0dHJpYnV0ZSIsCiAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rl
ciwgd2hpY2ggaGFzIGEgbWlzbGVhZGluZyBnbHlwaC1uYW1lPVwiXCIgYXR0cmlidXRlIiwKICAg
ICAgICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aG9zZSBnbHlwaCBpcyBjaG9zZW4gdG8gYmUgYW5v
dGhlciBieSB1c2luZyA8YWx0R2x5cGg+IiwKICAgICAgICAiYSBjaGFyYWN0ZXIgbm90IGluIFBs
YW5lIDAiLAogICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIiLAogICAgICBdOwoKICAgICAgdmFy
IGV4cGVjdGVkQWR2YW5jZXMgPSBbCiAgICAgICAgMTAwMDAsICAgICAgIC8vIEEKICAgICAgICAw
LCAgICAgICAgICAgLy8gQkMgWzBdCiAgICAgICAgMjAwLCAgICAgICAgIC8vIEJDIFsxXQogICAg
ICAgIDMwMCwgICAgICAgICAvLyBCCiAgICAgICAgMTEwMCwgICAgICAgIC8vIEQKICAgICAgICAx
MDAwMCwgICAgICAgLy8gQQogICAgICAgIDAsICAgICAgICAgICAvLyBFRSBbMF0KICAgICAgICAx
MzAwLCAgICAgICAgLy8gRUUgWzFdCiAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMF0K
ICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFsxXQogICAgICAgIDAsICAgICAgICAgICAv
LyBVKzAwNDYgWzJdCiAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbM10KICAgICAgICAw
LCAgICAgICAgICAgLy8gVSswMDQ2IFs0XQogICAgICAgIDE3MDAsICAgICAgICAvLyBVKzAwNDYg
WzVdCiAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMF0KICAgICAgICAwLCAgICAgICAg
ICAgLy8gVSswMDQ2IFsxXQogICAgICAgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzJdCiAgICAg
ICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbM10KICAgICAgICAwLCAgICAgICAgICAgLy8gVSsw
MDQ2IFs0XQogICAgICAgIDE3MDAsICAgICAgICAvLyBVKzAwNDYgWzVdCiAgICAgICAgMjMwMCwg
ICAgICAgIC8vIEcKICAgICAgICAyMzAwLCAgICAgICAgLy8gRwogICAgICAgIDMxMDAsICAgICAg
ICAvLyBICiAgICAgICAgNDMwMCwgICAgICAgIC8vIEkKICAgICAgICA0MTAwLCAgICAgICAgLy8g
SSAoemgpCiAgICAgICAgNDcwMCwgICAgICAgIC8vIEoKICAgICAgICAxMDAwMCwgICAgICAgLy8g
QQogICAgICAgIDU5MDAsICAgICAgICAvLyBLCiAgICAgICAgNjEwMCwgICAgICAgIC8vIDxzcGFj
ZT4KICAgICAgICA2NzAwLCAgICAgICAgLy8gTAogICAgICAgIDI5MDAsICAgICAgICAvLyBBICh1
c2luZyAmI3gxMDA4NTsgYWx0R2x5cGgpCiAgICAgICAgMjkwMCwgICAgICAgIC8vICYjeDEwMDg1
OwogICAgICAgIDEwMDAwLCAgICAgICAvLyBBCiAgICAgIF07CgogICAgICB2YXIgZXhwZWN0ZWRL
ZXJuaW5nID0gWwogICAgICAgIDAsICAgICAgICAgICAvLyBBCiAgICAgICAgMCwgICAgICAgICAg
IC8vIEJDIFswXQogICAgICAgIDAsICAgICAgICAgICAvLyBCQyBbMV0KICAgICAgICAwLCAgICAg
ICAgICAgLy8gQgogICAgICAgIDAsICAgICAgICAgICAvLyBECiAgICAgICAgMjAwLCAgICAgICAg
IC8vIEEKICAgICAgICAwLCAgICAgICAgICAgLy8gRUUgWzBdCiAgICAgICAgMCwgICAgICAgICAg
IC8vIEVFIFsxXQogICAgICAgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzBdCiAgICAgICAgMCwg
ICAgICAgICAgIC8vIFUrMDA0NiBbMV0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFsy
XQogICAgICAgIDAsICAgICAgICAgICAvLyBVKzAwNDYgWzNdCiAgICAgICAgMCwgICAgICAgICAg
IC8vIFUrMDA0NiBbNF0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFs1XQogICAgICAg
IDAsICAgICAgICAgICAvLyBVKzAwNDYgWzBdCiAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0
NiBbMV0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFsyXQogICAgICAgIDAsICAgICAg
ICAgICAvLyBVKzAwNDYgWzNdCiAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbNF0KICAg
ICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFs1XQogICAgICAgIDIwMCwgICAgICAgICAvLyBH
CiAgICAgICAgMCwgICAgICAgICAgIC8vIEcKICAgICAgICAwLCAgICAgICAgICAgLy8gSAogICAg
ICAgIDAsICAgICAgICAgICAvLyBJCiAgICAgICAgMCwgICAgICAgICAgIC8vIEkgKHpoKQogICAg
ICAgIC00NzAwLCAgICAgICAvLyBKCiAgICAgICAgMCwgICAgICAgICAgIC8vIEEKICAgICAgICAw
LCAgICAgICAgICAgLy8gSwogICAgICAgIDAsICAgICAgICAgICAvLyA8c3BhY2U+CiAgICAgICAg
MCwgICAgICAgICAgIC8vIEwKICAgICAgICAwLCAgICAgICAgICAgLy8gQSAodXNpbmcgJiN4MTAw
ODU7IGFsdEdseXBoKQogICAgICAgIDAsICAgICAgICAgICAvLyAmI3gxMDA4NTsKICAgICAgICAw
LCAgICAgICAgICAgLy8gQQogICAgICBdOwoKICAgICAgdmFyIG51bWJlck9mQ2hhcnMgPSB0Lmdl
dE51bWJlck9mQ2hhcnMoKTsKICAgICAgaWYgKG51bWJlck9mQ2hhcnMgPT0gZXhwZWN0ZWRBZHZh
bmNlcy5sZW5ndGggKyAxKQogICAgICAgIGZhaWwoJ1NWR1NWR1RleHRFbGVtZW50LmdldE51bWJl
ck9mQ2hhcnMoKSBjb3VudHMgVVRGLTE2IHN1cnJvZ2F0ZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVy
cycpOwogICAgICBhc3NlcnRFcXVhbHMobnVtYmVyT2ZDaGFycywgZXhwZWN0ZWRBZHZhbmNlcy5s
ZW5ndGgsICdTVkdTVkdUZXh0RWxlbWVudC5nZXROdW1iZXJPZkNoYXJzKCkgaW5jb3JyZWN0Jyk7
CgogICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbnMgPSBbMF07CiAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZXhwZWN0ZWRBZHZhbmNlcy5sZW5ndGg7IGkrKykKICAgICAgICBleHBlY3RlZFBvc2l0
aW9ucy5wdXNoKGV4cGVjdGVkUG9zaXRpb25zW2ldICsgZXhwZWN0ZWRBZHZhbmNlc1tpXSArIGV4
cGVjdGVkS2VybmluZ1tpXSk7CgogICAgICB2YXIgYWN0dWFsUG9zaXRpb25zID0gW107CiAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFyczsgaSsrKQogICAgICAgIGFjdHVhbFBv
c2l0aW9ucy5wdXNoKHQuZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcihpKS54KTsKICAgICAgYWN0dWFs
UG9zaXRpb25zLnB1c2godC5nZXRFbmRQb3NpdGlvbk9mQ2hhcihudW1iZXJPZkNoYXJzIC0gMSku
eCk7CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkUG9zaXRpb25zLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgaWYgKGV4cGVjdGVkUG9zaXRpb25zW2ldICE9IGFjdHVhbFBvc2l0aW9u
c1tpXSkgewogICAgICAgICAgdmFyIHMgPSAnUG9zaXRpb24gb2YgY2hhcmFjdGVyICcgKyBpICsg
JyB3YXMgJyArIGFjdHVhbFBvc2l0aW9uc1tpXSArICcsIGJ1dCBleHBlY3RpbmcgJyArIGV4cGVj
dGVkUG9zaXRpb25zW2ldICsgJywgd2hpY2ggd2FzICc7CiAgICAgICAgICBpZiAoaSA9PSAwKSB7
CiAgICAgICAgICAgIHMgKz0gJ2JlZm9yZSAnICsgY2hhcmFjdGVyRGVzY3JpcHRpb25zWzBdICsg
Jy4nOwogICAgICAgICAgfSBlbHNlIGlmIChpID09IGV4cGVjdGVkUG9zaXRpb25zLmxlbmd0aCAt
IDEpIHsKICAgICAgICAgICAgcyArPSAnYWZ0ZXIgJyArIGNoYXJhY3RlckRlc2NyaXB0aW9uc1tj
aGFyYWN0ZXJEZXNjcmlwdGlvbnMubGVuZ3RoIC0gMV0gKyAnLic7CiAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICBzICs9ICdiZXR3ZWVuOlxuXG4gICAgJyArIGNoYXJhY3RlckRlc2NyaXB0
aW9uc1tpIC0gMV0gKyAnLFxuXG5hbmQ6XG5cbiAgICAnICsgY2hhcmFjdGVyRGVzY3JpcHRpb25z
W2ldICsgJy4nOwogICAgICAgICAgfQogICAgICAgICAgZmFpbChzKTsKICAgICAgICB9CiAgICAg
IH0KICAgICAgcmV0dXJuIDU7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0
IDcwOiBjaGVjayB0aGF0IHRoZSBzdXBwb3J0IGZpbGVzIGxvYWRlZCAtLSBwcmVwYXJhdGlvbiBm
b3IgdGhlIHJlc3Qgb2YgdGhlIHRlc3RzIGluIHRoaXMgYnVja2V0CiAgICAgIGlmIChrdW5nRnVE
ZWF0aEdyaXAudGl0bGUgIT0gJzEyJyAmJiBrdW5nRnVEZWF0aEdyaXAudGl0bGUgIT0gJzIxJykK
ICAgICAgICByZXR1cm4gInJldHJ5IjsKICAgICAgLy8gWFhYCiAgICAgIHJldHVybiA1OwogICAg
fSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA3MTogWE1MIGVuY29kaW5nIHRlc3Qg
WFhYCiAgICAgIC8vIGhhdmUgYW4gSVNPLTg4NTktMSBkb2N1bWVudCBzZW50IGFzIFVURi04IGFu
ZCBjaGVjayB0aGF0IGl0IGRvZXNuJ3QgcGFyc2UgY29ycmVjdGx5CiAgICAgIHJldHVybiA1Owog
ICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA3MzogSFRNTCBwYXJzaW5nLCBm
cm9tIFNpbW9uIFBpZXRlcnMgYW5kIEFubmUgdmFuIEtlc3RlcmVuCiAgICAgIC8vIFhYWCA8IURP
Q1RZUEUgaHRtbD48c3Bhbj48c2NyaXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXS5wYXJlbnROb2RlLnRhZ05hbWU9PSdTUEFOJz8nUEFT
Uyc6J0ZBSUwnKTwgL3NjcmlwdD4KICAgICAgLy8gWFhYIDwhRE9DVFlQRSBodG1sPjxzcGFuPjwv
c3Bhbj48c2NyaXB0PncoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKS5sZW5n
dGggPT0gMSk8IC9zY3JpcHQ+CiAgICAgIHJldHVybiA1OwogICAgfSwKICAgIGZ1bmN0aW9uICgp
IHsKICAgICAgLy8gWFhYIDcyCiAgICAgIC8vIAogICAgICByZXR1cm4gNTsKICAgIH0sCiAgICBm
dW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNzQ6IG5lc3RlZCBldmVudHMsIGZyb20gSm9uYXMg
U2lja2luZwogICAgICAvLyBYWFggPHNjcmlwdD5jb3VudCA9IDA8LyBzY3JpcHQ+CiAgICAgIC8v
IC4uLjxpbnB1dCB2YWx1ZT10ZXN0IHR5cGU9YnV0dG9uIG9uY2xpY2s9J2FsZXJ0KCJlbnRlcmlu
ZyAiK2NvdW50KTsgY291bnQrKzsgdGhpcy5jbGljaygpOyBjb3VudC0tOyBhbGVydCgibGVhdmlu
ZyAiK2NvdW50KTsnPi4uLgogICAgICByZXR1cm4gNTsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7
CiAgICAgIC8vIHRlc3QgNzU6IGNoZWNrIGdldFNWR0RvY3VtZW50KCksIGZyb20gRXJpayBEYWhs
c3Ryb20KICAgICAgLy8gR2V0U1ZHRG9jdW1lbnRbNl06ICJJbiB0aGUgY2FzZSB3aGVyZSBhbiBT
VkcgZG9jdW1lbnQgaXMKICAgICAgLy8gZW1iZWRkZWQgYnkgcmVmZXJlbmNlLCBzdWNoIGFzIHdo
ZW4gYW4gWEhUTUwgZG9jdW1lbnQgaGFzIGFuCiAgICAgIC8vICdvYmplY3QnIGVsZW1lbnQgd2hv
c2UgaHJlZiAob3IgZXF1aXZhbGVudCkgYXR0cmlidXRlCiAgICAgIC8vIHJlZmVyZW5jZXMgYW4g
U1ZHIGRvY3VtZW50IChpLmUuLCBhIGRvY3VtZW50IHdob3NlIE1JTUUgdHlwZQogICAgICAvLyBp
cyAiaW1hZ2Uvc3ZnK3htbCIgYW5kIHdob3NlIHJvb3QgZWxlbWVudCBpcyB0aHVzIGFuICdzdmcn
CiAgICAgIC8vIGVsZW1lbnQpLCB0aGUgU1ZHIHVzZXIgYWdlbnQgaXMgcmVxdWlyZWQgdG8gaW1w
bGVtZW50IHRoZQogICAgICAvLyBHZXRTVkdEb2N1bWVudCBpbnRlcmZhY2UgZm9yIHRoZSBlbGVt
ZW50IHdoaWNoIHJlZmVyZW5jZXMgdGhlCiAgICAgIC8vIFNWRyBkb2N1bWVudCAoZS5nLiwgdGhl
IEhUTUwgJ29iamVjdCcgb3IgY29tcGFyYWJsZQogICAgICAvLyByZWZlcmVuY2luZyBlbGVtZW50
cykuIgogICAgICAvLwogICAgICAvLyBbNl0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvc3Ry
dWN0Lmh0bWwjSW50ZXJmYWNlR2V0U1ZHRG9jdW1lbnQKICAgICAgLy8KICAgICAgLy8gaWZyYW1l
CiAgICAgIHZhciBpZnJhbWUgPSBrdW5nRnVEZWF0aEdyaXAuZmlyc3RDaGlsZDsKICAgICAgYXNz
ZXJ0KGlmcmFtZSwgIkZhaWxlZCBmaW5kaW5nIHN2ZyBpZnJhbWUuIik7CiAgICAgIGFzc2VydChp
ZnJhbWUuY29udGVudERvY3VtZW50LCAiY29udGVudERvY3VtZW50IGZhaWxlZCBmb3IgPGlmcmFt
ZT4gcmVmZXJlbmNpbmcgYW4gc3ZnIGRvY3VtZW50LiIpOwogICAgICBpZiAoIWlmcmFtZS5nZXRT
VkdEb2N1bWVudCkKICAgICAgICBmYWlsKCJnZXRTVkdEb2N1bWVudCBtaXNzaW5nIG9uIDxpZnJh
bWU+IGVsZW1lbnQuIik7CiAgICAgIGFzc2VydChpZnJhbWUuZ2V0U1ZHRG9jdW1lbnQoKSwgImdl
dFNWR0RvY3VtZW50IGZhaWxlZCBmb3IgPGlmcmFtZT4gcmVmZXJlbmNpbmcgYW4gc3ZnIGRvY3Vt
ZW50LiIpOwogICAgICBhc3NlcnQoaWZyYW1lLmdldFNWR0RvY3VtZW50KCkgPT0gaWZyYW1lLmNv
bnRlbnREb2N1bWVudCwgIk1pc21hdGNoIGJldHdlZW4gZ2V0U1ZHRG9jdW1lbnQgYW5kIGNvbnRl
bnREb2N1bWVudCAjMS4iKTsKICAgICAgLy8gb2JqZWN0CiAgICAgIHZhciBvYmplY3QgPSBrdW5n
RnVEZWF0aEdyaXAubGFzdENoaWxkOwogICAgICBhc3NlcnQob2JqZWN0LCAiRmFpbGVkIGZpbmRp
bmcgc3ZnIG9iamVjdC4iKTsKICAgICAgYXNzZXJ0KG9iamVjdC5jb250ZW50RG9jdW1lbnQsICJj
b250ZW50RG9jdW1lbnQgZmFpbGVkIGZvciA8b2JqZWN0PiByZWZlcmVuY2luZyBhbiBzdmcgZG9j
dW1lbnQuIik7CiAgICAgIGlmICghb2JqZWN0LmdldFNWR0RvY3VtZW50KQogICAgICAgIGZhaWwo
ImdldFNWR0RvY3VtZW50IG1pc3Npbmcgb24gPG9iamVjdD4gZWxlbWVudC4iKTsKICAgICAgYXNz
ZXJ0KG9iamVjdC5nZXRTVkdEb2N1bWVudCgpLCAiZ2V0U1ZHRG9jdW1lbnQgZmFpbGVkIGZvciA8
b2JqZWN0PiByZWZlcmVuY2luZyBhbiBzdmcgZG9jdW1lbnQuIik7CiAgICAgIGFzc2VydChvYmpl
Y3QuZ2V0U1ZHRG9jdW1lbnQoKSA9PSBvYmplY3QuY29udGVudERvY3VtZW50LCAiTWlzbWF0Y2gg
YmV0d2VlbiBnZXRTVkdEb2N1bWVudCBhbmQgY29udGVudERvY3VtZW50ICMyLiIpOwogICAgICBy
ZXR1cm4gNTsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNzY6IFNNSUwg
aW4gU1ZHLCBmcm9tIEVyaWsgRGFobHN0cm9tCiAgICAgIC8vCiAgICAgIC8vIFRoZSB0ZXN0IGJl
Z2lucyBieSBjcmVhdGluZyBhIGZldyBlbGVtZW50cywgYW1vbmcgdGhvc2UgaXMgYQogICAgICAv
LyA8c2V0PiBlbGVtZW50LiAgVGhpcyBlbGVtZW50IGlzIHByZXZlbnRlZCBmcm9tIHJ1bm5pbmcg
YnkKICAgICAgLy8gc2V0dGluZyBiZWdpbj0iaW5kZWZpbml0ZSIsIHdoaWNoIG1lYW5zIHRoYXQg
dGhlIGFuaW1hdGlvbgogICAgICAvLyBkb2Vzbid0IHN0YXJ0IHVudGlsIHRoZSAnYmVnaW5FbGVt
ZW50JyBET00gbWV0aG9kIGlzIGNhbGxlZAogICAgICAvLyBvbiB0aGUgPHNldD4gZWxlbWVudC4g
VGhlIGFuaW1hdGlvbiBpcyBhIHNpbXBsZSBhbmltYXRpb24KICAgICAgLy8gdGhhdCBzZXRzIHRo
ZSB2YWx1ZSBvZiB0aGUgd2lkdGggYXR0cmlidXRlIHRvIDAuIFRoZSBkdXJhdGlvbgogICAgICAv
LyBvZiB0aGUgYW5pbWF0aW9uIGlzICdpbmRlZmluaXRlJyB3aGljaCBtZWFucyB0aGF0IHRoZSB2
YWx1ZQogICAgICAvLyB3aWxsIHN0YXkgMCBpbmRlZmluaXRlbHkuIFRoZSB0YXJnZXQgb2YgdGhl
IGFuaW1hdGlvbiBpcyB0aGUKICAgICAgLy8gJ3dpZHRoJyBhdHRyaWJ1dGUgb2YgdGhlIDxyZWN0
PiBlbGVtZW50IHRoYXQgaXMgdGhlIHBhcmVudCBvZgogICAgICAvLyB0aGUgPHNldD4gZWxlbWVu
dC4gV2hlbiAnd2lkdGgnIGlzIDAgdGhlIHJlY3QgaXMgbm90IHJlbmRlcmVkCiAgICAgIC8vIGFj
Y29yZGluZyB0byB0aGUgc3BlY1s3XS4KICAgICAgLy8KICAgICAgLy8gU29tZSBwcm9wZXJ0aWVz
IG9mIHRoZSBTVkdBbmltYXRlZExlbmd0aFsyXSBhbmQgU1ZHTGVuZ3RoWzhdCiAgICAgIC8vIGFy
ZSBhbHNvIGluc3BlY3RlZC4gQmVmb3JlIHRoZSBhbmltYXRpb24gc3RhcnRzIGJvdGggYmFzZVZh
bAogICAgICAvLyBhbmQgYW5pbVZhbCBjb250YWluIHRoZSBzYW1lIHZhbHVlc1syXS4gVGhlbiB0
aGUgYW5pbWF0aW9uIGlzCiAgICAgIC8vIHN0YXJ0ZWQgYnkgY2FsbGluZyB0aGUgYmVnaW5FbGVt
ZW50IG1ldGhvZFs5XS4gVG8gbWFrZSBzdXJlCiAgICAgIC8vIHRoYXQgdGltZSBwYXNzZXMgYmV0
d2VlbiB0aGUgdHJpZ2dlcmluZyBvZiB0aGUgYW5pbWF0aW9uIGFuZAogICAgICAvLyB0aGUgdGlt
ZSB0aGF0IHRoZSB2YWx1ZXMgYXJlIHJlYWQgb3V0IChpbiB0ZXN0ICM2NiksIHRoZQogICAgICAv
LyBjdXJyZW50IHRpbWUgaXMgc2V0IHRvIDEwMDAgc2Vjb25kcyB1c2luZyB0aGUgc2V0Q3VycmVu
dFRpbWUKICAgICAgLy8gbWV0aG9kWzEwXS4KICAgICAgLy8gCiAgICAgIC8vIFsyXSBodHRwOi8v
d3d3LnczLm9yZy9UUi9TVkcxMS90eXBlcy5odG1sI0ludGVyZmFjZVNWR0FuaW1hdGVkTGVuZ3Ro
CiAgICAgIC8vIFs3XSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9zaGFwZXMuaHRtbCNSZWN0
RWxlbWVudAogICAgICAvLyBbOF0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvdHlwZXMuaHRt
bCNJbnRlcmZhY2VTVkdMZW5ndGgKICAgICAgLy8gWzldIGh0dHA6Ly93d3cudzMub3JnL1RSL1NW
RzExL2FuaW1hdGUuaHRtbCNET01JbnRlcmZhY2VzCiAgICAgIC8vIFsxMF0gaHR0cDovL3d3dy53
My5vcmcvVFIvU1ZHMTEvc3RydWN0Lmh0bWwjSW50ZXJmYWNlU1ZHU1ZHRWxlbWVudAoKICAgICAg
dmFyIHN2Z25zID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjsKICAgICAgdmFyIHN2Z2Rv
YyA9IGt1bmdGdURlYXRoR3JpcC5maXJzdENoaWxkLmNvbnRlbnREb2N1bWVudDsKICAgICAgYXNz
ZXJ0KHN2Z2RvYywgImNvbnRlbnREb2N1bWVudCBmYWlsZWQgb24gPGlmcmFtZT4gZm9yIHN2ZyBk
b2N1bWVudC4iKTsKICAgICAgdmFyIHN2ZyA9IHN2Z2RvYy5kb2N1bWVudEVsZW1lbnQ7CiAgICAg
IHZhciByZWN0ID0gc3ZnZG9jLmNyZWF0ZUVsZW1lbnROUyhzdmducywgInJlY3QiKTsKICAgICAg
cmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAicmVkIik7CiAgICAgIHJlY3Quc2V0QXR0cmlidXRl
KCJ3aWR0aCIsICIxMDAiKTsKICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMDAi
KTsKICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImlkIiwgInJlY3QiKTsKICAgICAgdmFyIGFuaW0g
PSBzdmdkb2MuY3JlYXRlRWxlbWVudE5TKHN2Z25zLCAic2V0Iik7CiAgICAgIGFuaW0uc2V0QXR0
cmlidXRlKCJiZWdpbiIsICJpbmRlZmluaXRlIik7CiAgICAgIGFuaW0uc2V0QXR0cmlidXRlKCJ0
byIsICIwIik7CiAgICAgIGFuaW0uc2V0QXR0cmlidXRlKCJhdHRyaWJ1dGVOYW1lIiwgIndpZHRo
Iik7CiAgICAgIGFuaW0uc2V0QXR0cmlidXRlKCJkdXIiLCAiaW5kZWZpbml0ZSIpOwogICAgICBh
bmltLnNldEF0dHJpYnV0ZSgiZmlsbCIsICJmcmVlemUiKTsKICAgICAgcmVjdC5hcHBlbmRDaGls
ZChhbmltKTsKICAgICAgc3ZnLmFwcGVuZENoaWxkKHJlY3QpOwogICAgICBhc3NlcnQocmVjdC53
aWR0aCwgIlNWRyBET00gaW50ZXJmYWNlIFNWR1JlY3RFbGVtZW50IG5vdCBzdXBwb3J0ZWQuIik7
CiAgICAgIGFzc2VydChyZWN0LndpZHRoLmJhc2VWYWwsICJTVkcgRE9NIGJhc2UgdHlwZSBTVkdB
bmltYXRlZExlbmd0aCBub3Qgc3VwcG9ydGVkLiIpOwogICAgICBhc3NlcnQocmVjdC53aWR0aC5h
bmltVmFsLCAiU1ZHIERPTSBiYXNlIHR5cGUgU1ZHQW5pbWF0ZWRMZW5ndGggbm90IHN1cHBvcnRl
ZC4iKTsKICAgICAgYXNzZXJ0RXF1YWxzKFNWR0xlbmd0aC5TVkdfTEVOR1RIVFlQRV9OVU1CRVIs
IDEsICJJbmNvcnJlY3QgU1ZHTGVuZ3RoLlNWR19MRU5HVEhUWVBFX05VTUJFUiBjb25zdGFudCB2
YWx1ZS4iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHJlY3Qud2lkdGguYmFzZVZhbC51bml0VHlwZSwg
U1ZHTGVuZ3RoLlNWR19MRU5HVEhUWVBFX05VTUJFUiwgIkluY29ycmVjdCB1bml0VHlwZSBvbiB3
aWR0aCBhdHRyaWJ1dGUuIik7CiAgICAgIGFzc2VydEVxdWFscyhyZWN0LmdldEF0dHJpYnV0ZSgi
d2lkdGgiKSwgIjEwMCIsICJJbmNvcnJlY3QgdmFsdWUgZnJvbSBnZXRBdHRyaWJ1dGUuIik7CiAg
ICAgIGFzc2VydEVxdWFscyhyZWN0LndpZHRoLmJhc2VWYWwudmFsdWVJblNwZWNpZmllZFVuaXRz
LCAxMDAsICJJbmNvcnJlY3QgdmFsdWVJblNwZWNpZmllZFVuaXRzIHZhbHVlLiIpOwogICAgICBh
c3NlcnRFcXVhbHMocmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlLCAxMDAsICJJbmNvcnJlY3QgYmFz
ZVZhbCB2YWx1ZSBiZWZvcmUgYW5pbWF0aW9uLiIpOwogICAgICBhc3NlcnRFcXVhbHMocmVjdC53
aWR0aC5hbmltVmFsLnZhbHVlLCAxMDAsICJJbmNvcnJlY3QgYW5pbVZhbCB2YWx1ZSBiZWZvcmUg
YW5pbWF0aW9uLiIpOwogICAgICBhbmltLmJlZ2luRWxlbWVudCgpOwogICAgICBhc3NlcnRFcXVh
bHMocmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlLCAxMDAsICJJbmNvcnJlY3QgYmFzZVZhbCB2YWx1
ZSBhZnRlciBzdGFydGluZyBhbmltYXRpb24uIik7CiAgICAgIHN2Zy5zZXRDdXJyZW50VGltZSgx
MDAwKTsgLy8gc2V0dGluZyAxIHNlY29uZCB0byBtYWtlIHN1cmUgdGhhdCB0aW1lICE9IDBzIHdo
ZW4gd2UgY2hlY2sgdGhlIGFuaW1WYWwgdmFsdWUKICAgICAgLy8gdGhlIGFuaW1hdGlvbiBpcyB0
aGVuIHRlc3RlZCBpbiB0aGUgbmV4dCB0ZXN0CiAgICAgIHJldHVybiA1OwogICAgfSwKICAgIGZ1
bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA3NzogU01JTCBpbiBTVkcsIHBhcnQgMiwgZnJvbSBF
cmlrIERhaGxzdHJvbQogICAgICAvLwogICAgICAvLyBBYm91dCBhbmltVmFsWzJdOiAiSWYgdGhl
IGdpdmVuIGF0dHJpYnV0ZSBvciBwcm9wZXJ0eSBpcwogICAgICAvLyBiZWluZyBhbmltYXRlZCwg
Y29udGFpbnMgdGhlIGN1cnJlbnQgYW5pbWF0ZWQgdmFsdWUgb2YgdGhlCiAgICAgIC8vIGF0dHJp
YnV0ZSBvciBwcm9wZXJ0eSwgYW5kIGJvdGggdGhlIG9iamVjdCBpdHNlbGYgYW5kIGl0cwogICAg
ICAvLyBjb250ZW50cyBhcmUgcmVhZG9ubHkuIElmIHRoZSBnaXZlbiBhdHRyaWJ1dGUgb3IgcHJv
cGVydHkgaXMKICAgICAgLy8gbm90IGN1cnJlbnRseSBiZWluZyBhbmltYXRlZCwgY29udGFpbnMg
dGhlIHNhbWUgdmFsdWUgYXMKICAgICAgLy8gJ2Jhc2VWYWwnLiIKICAgICAgLy8KICAgICAgLy8g
U2luY2UgdGhlIGR1cmF0aW9uIG9mIHRoZSBhbmltYXRpb24gaXMgaW5kZWZpbml0ZSB0aGUgdmFs
dWUKICAgICAgLy8gaXMgc3RpbGwgYmVpbmcgYW5pbWF0ZWQgYXQgdGhlIHRpbWUgaXQncyBxdWVy
aWVkLiBOb3cgc2luY2UKICAgICAgLy8gdGhlICd3aWR0aCcgYXR0cmlidXRlIHdhcyBhbmltYXRl
ZCBmcm9tIGl0cyBvcmlnaW5hbCB2YWx1ZSBvZgogICAgICAvLyAiMTAwIiB0byB0aGUgbmV3IHZh
bHVlIG9mICIwIiB0aGUgYW5pbVZhbCBwcm9wZXJ0eSBtdXN0CiAgICAgIC8vIGNvbnRhaW4gdGhl
IHZhbHVlIDAuCiAgICAgIC8vIAogICAgICAvLyBbMl0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZH
MTEvdHlwZXMuaHRtbCNJbnRlcmZhY2VTVkdBbmltYXRlZExlbmd0aAoKICAgICAgdmFyIHN2Z2Rv
YyA9IGt1bmdGdURlYXRoR3JpcC5maXJzdENoaWxkLmNvbnRlbnREb2N1bWVudDsKICAgICAgYXNz
ZXJ0KHN2Z2RvYywgImNvbnRlbnREb2N1bWVudCBmYWlsZWQgb24gPG9iamVjdD4gZm9yIHN2ZyBk
b2N1bWVudC4iKTsKICAgICAgdmFyIHJlY3QgPSBzdmdkb2MuZ2V0RWxlbWVudEJ5SWQoInJlY3Qi
KTsKICAgICAgYXNzZXJ0KHJlY3QsICJGYWlsZWQgdG8gZmluZCA8cmVjdD4gZWxlbWVudCBpbiBz
dmcgZG9jdW1lbnQuIik7CiAgICAgIGFzc2VydEVxdWFscyhyZWN0LndpZHRoLmFuaW1WYWwudmFs
dWUsIDAsICJJbmNvcnJlY3QgYW5pbVZhbCB2YWx1ZSBhZnRlciBzdmcgYW5pbWF0aW9uLiIpOwog
ICAgICByZXR1cm4gNTsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgNzg6
IGV4dGVybmFsIFNWRyBmb250cywgZnJvbSBFcmlrIERhaGxzdHJvbQogICAgICAvLwogICAgICAv
LyBTVkdGb250cyBhcmUgZGVzY3JpYmVkIGhlcmVbM10sIGFuZCB0aGUgcmVsZXZhbnQgRE9NIG1l
dGhvZHMKICAgICAgLy8gdXNlZCBpbiB0aGUgdGVzdCBhcmUgZGVmaW5lZCBoZXJlWzRdLgogICAg
ICAvLwogICAgICAvLyBOb3RlIHRoYXQgaW4gb3JkZXIgdG8gYmUgbW9yZSBwcmVkaWN0YWJsZSB0
aGUgc3ZnIHNob3VsZCBiZQogICAgICAvLyB2aXNpYmxlLCBzbyB0aGF0IGNsYXVzZSAiRm9yIG5v
bi1yZW5kZXJpbmcgZW52aXJvbm1lbnRzLCB0aGUKICAgICAgLy8gdXNlciBhZ2VudCBzaGFsbCBt
YWtlIHJlYXNvbmFibGUgYXNzdW1wdGlvbnMgYWJvdXQgZ2x5cGgKICAgICAgLy8gbWV0cmljcy4i
IGRvZXNuJ3QgaW5mbHVlbmNlIHRoZSByZXN1bHRzLiBXZSB1c2UgJ29wYWNpdHk6MCcKICAgICAg
Ly8gdG8gaGlkZSB0aGUgU1ZHLCBidXQgYXJndWFibHkgaXQncyBzdGlsbCBhICJyZW5kZXJpbmcK
ICAgICAgLy8gZW52aXJvbm1lbnQiLgogICAgICAvLwogICAgICAvLyBUaGUgZm9udC1zaXplIDQw
MDAgd2FzIGNob3NlbiBiZWNhdXNlIHRoYXQgbWF0Y2hlcyB0aGUKICAgICAgLy8gdW5pdHNQZXJF
bSB2YWx1ZSBpbiB0aGUgc3ZnZm9udCwgd2hpY2ggbWFrZXMgaXQgZWFzeSB0byBjaGVjawogICAg
ICAvLyB0aGUgZ2x5cGggYWR2YW5jZXMgc2luY2UgdGhleSB3aWxsIHRoZW4gYmUgZXhhY3RseSB3
aGF0IHdhcwogICAgICAvLyBzcGVjaWZpZWQgaW4gdGhlIHN2Z2ZvbnQuCiAgICAgIC8vCiAgICAg
IC8vIFszXSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mb250cy5odG1sCiAgICAgIC8vIFs0
XSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS90ZXh0Lmh0bWwjSW50ZXJmYWNlU1ZHVGV4dENv
bnRlbnRFbGVtZW50CgogICAgICB2YXIgc3ZnbnMgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciOwogICAgICB2YXIgeGxpbmtucyA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjsK
ICAgICAgdmFyIHN2Z2RvYyA9IGt1bmdGdURlYXRoR3JpcC5maXJzdENoaWxkLmNvbnRlbnREb2N1
bWVudDsKICAgICAgYXNzZXJ0KHN2Z2RvYywgImNvbnRlbnREb2N1bWVudCBmYWlsZWQgb24gPG9i
amVjdD4gZm9yIHN2ZyBkb2N1bWVudC4iKTsKICAgICAgdmFyIHN2ZyA9IHN2Z2RvYy5kb2N1bWVu
dEVsZW1lbnQ7CiAgICAgIHZhciB0ZXh0ID0gc3ZnZG9jLmNyZWF0ZUVsZW1lbnROUyhzdmducywg
InRleHQiKTsKICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoInkiLCAiMWVtIik7CiAgICAgIHRleHQu
c2V0QXR0cmlidXRlKCJmb250LXNpemUiLCAiNDAwMCIpOwogICAgICB0ZXh0LnNldEF0dHJpYnV0
ZSgiZm9udC1mYW1pbHkiLCAiQUNJRDNzdmdmb250Iik7CiAgICAgIHZhciB0ZXh0Q29udGVudCA9
IHN2Z2RvYy5jcmVhdGVUZXh0Tm9kZSgiYWJjIik7CiAgICAgIHRleHQuYXBwZW5kQ2hpbGQodGV4
dENvbnRlbnQpOwogICAgICBzdmcuYXBwZW5kQ2hpbGQodGV4dCk7CiAgICAgIC8vIFRoZSBmb250
LXNpemUgNDAwMCB3YXMgY2hvc2VuIGJlY2F1c2UgdGhhdCBtYXRjaGVzIHRoZSB1bml0c1BlckVt
IHZhbHVlIGluIHRoZSBzdmdmb250LCAKICAgICAgLy8gd2hpY2ggbWFrZXMgaXQgZWFzeSB0byBj
aGVjayB0aGUgZ2x5cGggYWR2YW5jZXMgc2luY2UgdGhleSB3aWxsIHRoZW4gYmUgZXhhY3RseSB3
aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIHN2Z2ZvbnQuCiAgICAgIGFzc2VydCh0ZXh0LmdldE51
bWJlck9mQ2hhcnMsICJTVkdUZXh0Q29udGVudEVsZW1lbnQuZ2V0TnVtYmVyT2ZDaGFycygpIG5v
dCBzdXBwb3J0ZWQuIik7CiAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldE51bWJlck9mQ2hhcnMo
KSwgMywgImdldE51bWJlck9mQ2hhcnMgcmV0dXJuZWQgaW5jb3JyZWN0IHN0cmluZyBsZW5ndGgu
Iik7CiAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldENvbXB1dGVkVGV4dExlbmd0aCgpLCA0NzEx
KzQyKzIzLCAiZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoIGZhaWxlZC4iKTsKICAgICAgYXNzZXJ0RXF1
YWxzKHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsMSksIDQyLCAiZ2V0U3ViU3RyaW5nTGVuZ3Ro
ICMxIGZhaWxlZC4iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3Ro
KDAsMiksIDQyKzIzLCAiZ2V0U3ViU3RyaW5nTGVuZ3RoICMyIGZhaWxlZC4iKTsKICAgICAgYXNz
ZXJ0RXF1YWxzKHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDEsMSksIDIzLCAiZ2V0U3ViU3RyaW5n
TGVuZ3RoICMzIGZhaWxlZC4iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDEsMCksIDAsICJnZXRTdWJTdHJpbmdMZW5ndGggIzQgZmFpbGVkLiIpOwogICAgICB2
YXIgY29kZSA9IC0xMDAwOwogICAgICB0cnkgewogICAgICAgIHZhciBzbCA9IHRleHQuZ2V0U3Vi
U3RyaW5nTGVuZ3RoKDEsMyk7CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGNvZGUgPSBlLmNv
ZGU7CiAgICAgIH0KICAgICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERPTUV4Y2VwdGlvbi5JTkRFWF9T
SVpFX0VSUiwgImdldFN1YlN0cmluZ0xlbmd0aCAjMSBkaWRuJ3QgdGhyb3cgZXhjZXB0aW9uLiIp
OwogICAgICBjb2RlID0gLTEwMDA7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHNsID0gdGV4dC5n
ZXRTdWJTdHJpbmdMZW5ndGgoMCwzKTsKICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgY29kZSA9
IGUuY29kZTsKICAgICAgfQogICAgICBhc3NlcnRFcXVhbHMoY29kZSwgRE9NRXhjZXB0aW9uLklO
REVYX1NJWkVfRVJSLCAiZ2V0U3ViU3RyaW5nTGVuZ3RoICMyIGRpZG4ndCB0aHJvdyBleGNlcHRp
b24uIik7CiAgICAgIGNvZGUgPSAtMTAwMDsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgc2wgPSB0
ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgxLDIpOwogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBj
b2RlID0gZS5jb2RlOwogICAgICB9CiAgICAgIGFzc2VydEVxdWFscyhjb2RlLCBET01FeGNlcHRp
b24uSU5ERVhfU0laRV9FUlIsICJnZXRTdWJTdHJpbmdMZW5ndGggIzMgZGlkbid0IHRocm93IGV4
Y2VwdGlvbi4iKTsKICAgICAgY29kZSA9IC0xMDAwOwogICAgICB0cnkgewogICAgICAgIHZhciBz
bCA9IHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKC0xNywyMCk7CiAgICAgIH0gY2F0Y2goZSkgewog
ICAgICAgIGNvZGUgPSBlLmNvZGU7CiAgICAgIH0KICAgICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERP
TUV4Y2VwdGlvbi5JTkRFWF9TSVpFX0VSUiwgImdldFN1YlN0cmluZ0xlbmd0aCAjNCBkaWRuJ3Qg
dGhyb3cgZXhjZXB0aW9uLiIpOwogICAgICBjb2RlID0gLTEwMDA7CiAgICAgIHRyeSB7CiAgICAg
ICAgdmFyIHNsID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMSwyKTsKICAgICAgfSBjYXRjaChl
KSB7CiAgICAgICAgY29kZSA9IGUuY29kZTsKICAgICAgfQogICAgICBhc3NlcnRFcXVhbHMoY29k
ZSwgRE9NRXhjZXB0aW9uLklOREVYX1NJWkVfRVJSLCAiZ2V0U3ViU3RyaW5nTGVuZ3RoICM1IGRp
ZG4ndCB0aHJvdyBleGNlcHRpb24uIik7CiAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFN0YXJ0
UG9zaXRpb25PZkNoYXIoMCkueCwgMCwgImdldFN0YXJ0UG9zaXRpb25PZkNoYXIoMCkueCByZXR1
cm5lZCBpbnZhbGlkIHZhbHVlLiIpOwogICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRTdGFydFBv
c2l0aW9uT2ZDaGFyKDEpLngsIDQyLCAiZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigxKS54IHJldHVy
bmVkIGludmFsaWQgdmFsdWUuIik7CiAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFN0YXJ0UG9z
aXRpb25PZkNoYXIoMikueCwgNDIrMjMsICJnZXRTdGFydFBvc2l0aW9uT2ZDaGFyKDIpLnggcmV0
dXJuZWQgaW52YWxpZCB2YWx1ZS4iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0U3RhcnRQ
b3NpdGlvbk9mQ2hhcigwKS55LCA0MDAwLCAiZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigwKS55IHJl
dHVybmVkIGludmFsaWQgdmFsdWUuIik7CiAgICAgIGNvZGUgPSAtMTAwMDsKICAgICAgdHJ5IHsK
ICAgICAgICB2YXIgdmFsID0gdGV4dC5nZXRTdGFydFBvc2l0aW9uT2ZDaGFyKC0xKTsKICAgICAg
fSBjYXRjaChlKSB7CiAgICAgICAgY29kZSA9IGUuY29kZTsKICAgICAgfQogICAgICBhc3NlcnRF
cXVhbHMoY29kZSwgRE9NRXhjZXB0aW9uLklOREVYX1NJWkVfRVJSLCAiZ2V0U3RhcnRQb3NpdGlv
bk9mQ2hhciAjMSBleGNlcHRpb24gZmFpbGVkLiIpOwogICAgICBjb2RlID0gLTEwMDA7CiAgICAg
IHRyeSB7CiAgICAgICAgdmFyIHZhbCA9IHRleHQuZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcig0KTsK
ICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgY29kZSA9IGUuY29kZTsKICAgICAgfQogICAgICBh
c3NlcnRFcXVhbHMoY29kZSwgRE9NRXhjZXB0aW9uLklOREVYX1NJWkVfRVJSLCAiZ2V0U3RhcnRQ
b3NpdGlvbk9mQ2hhciAjMiBleGNlcHRpb24gZmFpbGVkLiIpOwogICAgICBhc3NlcnRFcXVhbHMo
dGV4dC5nZXRFbmRQb3NpdGlvbk9mQ2hhcigwKS54LCA0MiwgImdldEVuZFBvc2l0aW9uT2ZDaGFy
KDApLnggcmV0dXJuZWQgaW52YWxpZCB2YWx1ZS4iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHRleHQu
Z2V0RW5kUG9zaXRpb25PZkNoYXIoMSkueCwgNDIrMjMsICJnZXRFbmRQb3NpdGlvbk9mQ2hhcigx
KS54IHJldHVybmVkIGludmFsaWQgdmFsdWUuIik7CiAgICAgIGFzc2VydEVxdWFscyh0ZXh0Lmdl
dEVuZFBvc2l0aW9uT2ZDaGFyKDIpLngsIDQyKzIzKzQ3MTEsICJnZXRFbmRQb3NpdGlvbk9mQ2hh
cigyKS54IHJldHVybmVkIGludmFsaWQgdmFsdWUuIik7CiAgICAgIGNvZGUgPSAtMTAwMDsKICAg
ICAgdHJ5IHsKICAgICAgICB2YXIgdmFsID0gdGV4dC5nZXRFbmRQb3NpdGlvbk9mQ2hhcigtMTcp
OwogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBjb2RlID0gZS5jb2RlOwogICAgICB9CiAgICAg
IGFzc2VydEVxdWFscyhjb2RlLCBET01FeGNlcHRpb24uSU5ERVhfU0laRV9FUlIsICJnZXRFbmRQ
b3NpdGlvbk9mQ2hhciAjMSBleGNlcHRpb24gZmFpbGVkLiIpOwogICAgICBjb2RlID0gLTEwMDA7
CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHZhbCA9IHRleHQuZ2V0RW5kUG9zaXRpb25PZkNoYXIo
NCk7CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGNvZGUgPSBlLmNvZGU7CiAgICAgIH0KICAg
ICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERPTUV4Y2VwdGlvbi5JTkRFWF9TSVpFX0VSUiwgImdldEVu
ZFBvc2l0aW9uT2ZDaGFyICMyIGV4Y2VwdGlvbiBmYWlsZWQuIik7CiAgICAgIHJldHVybiA1Owog
ICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA3OTogU1ZHIHRleHRQYXRoIGFu
ZCBnZXRSb3RhdGlvbk9mQ2hhcigpLCBmcm9tIEVyaWsgRGFobHN0cm9tCiAgICAgIC8vCiAgICAg
IC8vIFRoZSBnZXRSb3RhdGlvbk9mQ2hhcls0XSBtZXRob2QgZmV0Y2hlcyB0aGUgbWlkcG9pbnQg
cm90YXRpb24KICAgICAgLy8gb2YgYSBnbHlwaCBkZWZpbmVkIGJ5IGEgY2hhcmFjdGVyIChpbiB0
aGlzIHRlc3RjYXNlIHRoZXJlIGlzCiAgICAgIC8vIGEgc2ltcGxlIDE6MSBjb3JyZXNwb25kZW5j
ZSBiZXR3ZWVuIHRoZSB0d28pLiBUaGUgcGF0aCBpcwogICAgICAvLyBkZWZpbmVkIGluIHRoZSBl
bXB0eS5zdmcgZmlsZSwgYW5kIGNvbnNpc3RzIG9mIGZpcnN0IGEgbGluZQogICAgICAvLyBnb2lu
ZyBkb3duLCB0aGVuIGZvbGxvd2VkIGJ5IGEgbGluZSB0aGF0IGhhcyBhIDQ1IGRlZ3JlZQogICAg
ICAvLyBzbG9wZSBhbmQgdGhlbiBmb2xsb3dlZCBieSBhIGhvcml6b250YWwgbGluZS4gVGhlIGxl
bmd0aCBvZgogICAgICAvLyBlYWNoIHBhdGggc2VnbWVudCBoYXZlIGJlZW4gcGFpcmVkIHdpdGgg
dGhlIGFkdmFuY2Ugb2YgZWFjaAogICAgICAvLyBnbHlwaCwgc28gdGhhdCBlYWNoIGdseXBoIHdp
bGwgYmUgb24gZWFjaCBvZiB0aGUgdGhyZWUKICAgICAgLy8gZGlmZmVyZW50IHBhdGggc2VnbWVu
dHMgKHNlZSB0ZXh0IG9uIGEgcGF0aCBsYXlvdXQgcnVsZXNbNV0pLgogICAgICAvLyBUaHVzIHRo
ZSByb3RhdGlvbiBvZiB0aGUgZmlyc3QgZ2x5cGggaXMgOTAgZGVncmVlcywgdGhlCiAgICAgIC8v
IHNlY29uZCA0NSBkZWdyZWVzIGFuZCB0aGUgdGhpcmQgMCBkZWdyZWVzLgogICAgICAvLwogICAg
ICAvLyBbNF0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvdGV4dC5odG1sI0ludGVyZmFjZVNW
R1RleHRDb250ZW50RWxlbWVudAogICAgICAvLyBbNV0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZH
MTEvdGV4dC5odG1sI1RleHRwYXRoTGF5b3V0UnVsZXMKCiAgICAgIHZhciBzdmducyA9ICJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7CiAgICAgIHZhciB4bGlua25zID0gImh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiOwogICAgICB2YXIgc3ZnZG9jID0ga3VuZ0Z1RGVhdGhHcmlwLmZp
cnN0Q2hpbGQuY29udGVudERvY3VtZW50OwogICAgICBhc3NlcnQoc3ZnZG9jLCAiY29udGVudERv
Y3VtZW50IGZhaWxlZCBvbiA8b2JqZWN0PiBmb3Igc3ZnIGRvY3VtZW50LiIpOwogICAgICB2YXIg
c3ZnID0gc3ZnZG9jLmRvY3VtZW50RWxlbWVudDsKICAgICAgdmFyIHRleHQgPSBzdmdkb2MuY3Jl
YXRlRWxlbWVudE5TKHN2Z25zLCAidGV4dCIpOwogICAgICB0ZXh0LnNldEF0dHJpYnV0ZSgiZm9u
dC1zaXplIiwgIjQwMDAiKTsKICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoImZvbnQtZmFtaWx5Iiwg
IkFDSUQzc3ZnZm9udCIpOwogICAgICB2YXIgdGV4dHBhdGggPSBzdmdkb2MuY3JlYXRlRWxlbWVu
dE5TKHN2Z25zLCAidGV4dFBhdGgiKTsKICAgICAgdGV4dHBhdGguc2V0QXR0cmlidXRlTlMoeGxp
bmtucywgInhsaW5rOmhyZWYiLCAiI3BhdGgiKTsKICAgICAgdmFyIHRleHRDb250ZW50ID0gc3Zn
ZG9jLmNyZWF0ZVRleHROb2RlKCJhYmMiKTsKICAgICAgdGV4dHBhdGguYXBwZW5kQ2hpbGQodGV4
dENvbnRlbnQpOwogICAgICB0ZXh0LmFwcGVuZENoaWxkKHRleHRwYXRoKTsKICAgICAgc3ZnLmFw
cGVuZENoaWxkKHRleHQpOwogICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRSb3RhdGlvbk9mQ2hh
cigwKSwgOTAsICJnZXRSb3RhdGlvbk9mQ2hhcigwKSBmYWlsZWQuIik7CiAgICAgIGFzc2VydEVx
dWFscyh0ZXh0LmdldFJvdGF0aW9uT2ZDaGFyKDEpLCA0NSwgImdldFJvdGF0aW9uT2ZDaGFyKDEp
IGZhaWxlZC4iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0Um90YXRpb25PZkNoYXIoMiks
IDAsICJnZXRSb3RhdGlvbk9mQ2hhcigyKSBmYWlsZWQuIik7CiAgICAgIHZhciBjb2RlID0gLTEw
MDA7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHZhbCA9IHRleHQuZ2V0Um90YXRpb25PZkNoYXIo
LTEpCiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGNvZGUgPSBlLmNvZGU7CiAgICAgIH0KICAg
ICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERPTUV4Y2VwdGlvbi5JTkRFWF9TSVpFX0VSUiwgImdldFJv
dGF0aW9uT2ZDaGFyICMxIGV4Y2VwdGlvbiBmYWlsZWQuIik7CiAgICAgIGNvZGUgPSAtMTAwMDsK
ICAgICAgdHJ5IHsKICAgICAgICB2YXIgdmFsID0gdGV4dC5nZXRSb3RhdGlvbk9mQ2hhcig0KQog
ICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBjb2RlID0gZS5jb2RlOwogICAgICB9CiAgICAgIGFz
c2VydEVxdWFscyhjb2RlLCBET01FeGNlcHRpb24uSU5ERVhfU0laRV9FUlIsICJnZXRSb3RhdGlv
bk9mQ2hhciAjMiBleGNlcHRpb24gZmFpbGVkLiIpOwogICAgICByZXR1cm4gNTsKICAgIH0sCiAg
ICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgODA6IHJlbW92ZSB0aGUgaWZyYW1lIGFuZCB0
aGUgb2JqZWN0CiAgICAgIGt1bmdGdURlYXRoR3JpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGt1
bmdGdURlYXRoR3JpcCk7CiAgICAgIGt1bmdGdURlYXRoR3JpcCA9IG51bGw7CiAgICAgIC8vIFhY
WAogICAgICByZXR1cm4gNTsKICAgIH0sCgogICAgLy8gYnVja2V0IDY6IEVDTUFTY3JpcHQKICAg
IGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA4MTogbGVuZ3RoIG9mIGFycmF5cyB3aXRoIGVs
aXNpb25zIGF0IGVuZAogICAgICB2YXIgdDEgPSBbLF07CiAgICAgIHZhciB0MiA9IFssLF07CiAg
ICAgIGFzc2VydEVxdWFscyh0MS5sZW5ndGgsIDEsICJbLF0gZG9lc24ndCBoYXZlIGxlbmd0aCAx
Iik7CiAgICAgIGFzc2VydEVxdWFscyh0Mi5sZW5ndGgsIDIsICJbLCxdIGRvZXNuJ3QgaGF2ZSBs
ZW5ndGggMiIpOwogICAgICByZXR1cm4gNjsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7IAogICAg
ICAvLyB0ZXN0IDgyOiBsZW5ndGggb2YgYXJyYXlzIHdpdGggZWxpc2lvbnMgaW4gdGhlIG1pZGRs
ZQogICAgICB2YXIgdDMgPSBbJ2EnLCAsICdjJ107CiAgICAgIGFzc2VydEVxdWFscyh0My5sZW5n
dGgsIDMsICJbJ2EnLCwnYyddIGRvZXNuJ3QgaGF2ZSBsZW5ndGggMyIpOwogICAgICBhc3NlcnQo
MCBpbiB0MywgIm5vIDAgaW4gdDMiKTsKICAgICAgYXNzZXJ0KCEoMSBpbiB0MyksICJ1bmV4cGVj
dGVkIDEgaW4gdDMiKTsKICAgICAgYXNzZXJ0KDIgaW4gdDMsICJubyAyIGluIHQzIik7CiAgICAg
IGFzc2VydEVxdWFscyh0M1swXSwgJ2EnLCAidDNbMF0gd3JvbmciKTsKICAgICAgYXNzZXJ0RXF1
YWxzKHQzWzJdLCAnYycsICJ0M1syXSB3cm9uZyIpOwogICAgICByZXR1cm4gNjsKICAgIH0sCiAg
ICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgODM6IGFycmF5IG1ldGhvZHMKICAgICAgdmFy
IHggPSBbJ2EnLCAnYicsICdjJ107CiAgICAgIGFzc2VydEVxdWFscyh4LnVuc2hpZnQoJ0EnLCAn
QicsICdDJyksIDYsICJhcnJheS51bnNoaWZ0KCkgcmV0dXJuZWQgdGhlIHdyb25nIHZhbHVlIik7
CiAgICAgIHZhciBzID0geC5qb2luKHVuZGVmaW5lZCk7CiAgICAgIGFzc2VydEVxdWFscyhzLCAn
QSxCLEMsYSxiLGMnLCAiYXJyYXkuam9pbih1bmRlZmluZWQpIHVzZWQgd3Jvbmcgc2VwYXJhdG9y
Iik7IC8vIHF2IDE1LjQuNC41OjMKICAgICAgcmV0dXJuIDY7CiAgICB9LAogICAgZnVuY3Rpb24g
KCkgewogICAgICAvLyB0ZXN0IDg0OiBjb252ZXJ0aW5nIG51bWJlcnMgdG8gc3RyaW5ncwogICAg
ICBhc3NlcnRFcXVhbHMoKDAuMCkudG9GaXhlZCg0KSwgIjAuMDAwMCIsICJ0b0ZpeGVkKDQpIHdy
b25nIGZvciAwIik7CiAgICAgIGFzc2VydEVxdWFscygoLTAuMCkudG9GaXhlZCg0KSwgIjAuMDAw
MCIsICJ0b0ZpeGVkKDQpIHdyb25nIGZvciAtMCIpOwogICAgICBhc3NlcnRFcXVhbHMoKDAuMDAw
MDYpLnRvRml4ZWQoNCksICIwLjAwMDEiLCAidG9GaXhlZCg0KSB3cm9uZyBmb3IgMC4wMDAwNiIp
OwogICAgICBhc3NlcnRFcXVhbHMoKC0wLjAwMDA2KS50b0ZpeGVkKDQpLCAiLTAuMDAwMSIsICJ0
b0ZpeGVkKDQpIHdyb25nIGZvciAtMC4wMDAwNiIpOwogICAgICBhc3NlcnRFcXVhbHMoKDAuMCku
dG9FeHBvbmVudGlhbCg0KSwgIjAuMDAwMGUrMCIsICJ0b0V4cG9uZW50aWFsKDQpIHdyb25nIGZv
ciAwIik7CiAgICAgIGFzc2VydEVxdWFscygoLTAuMCkudG9FeHBvbmVudGlhbCg0KSwgIjAuMDAw
MGUrMCIsICJ0b0V4cG9uZW50aWFsKDQpIHdyb25nIGZvciAtMCIpOwogICAgICB2YXIgeCA9IDdl
LTQ7CiAgICAgIGFzc2VydEVxdWFscyh4LnRvUHJlY2lzaW9uKHVuZGVmaW5lZCksIHgudG9TdHJp
bmcodW5kZWZpbmVkKSwgInRvUHJlY2lzaW9uKHVuZGVmaW5lZCkgd2FzIHdyb25nIik7CiAgICAg
IHJldHVybiA2OwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA4NTogc3Ry
aW5ncyBhbmQgc3RyaW5nLXJlbGF0ZWQgb3BlcmF0aW9ucwogICAgICAvLyBzdWJzdHIoKSBhbmQg
bmVnYXRpdmUgbnVtYmVycwogICAgICBhc3NlcnRFcXVhbHMoInNjYXRoaW5nIi5zdWJzdHIoLTcs
IDMpLCAiY2F0IiwgInN1YnN0cigpIHdyb25nIHdpdGggbmVnYXRpdmUgbnVtYmVycyIpOwogICAg
ICByZXR1cm4gNjsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgODY6IERh
dGUgdGVzdHMgLS0gbWV0aG9kcyBwYXNzZWQgbm8gYXJndW1lbnRzCiAgICAgIHZhciBkID0gbmV3
IERhdGUoKTsKICAgICAgYXNzZXJ0KGlzTmFOKGQuc2V0TWlsbGlzZWNvbmRzKCkpLCAiY2FsbGlu
ZyBzZXRNaWxsaXNlY29uZHMoKSB3aXRoIG5vIGFyZ3VtZW50cyBkaWRuJ3QgcmVzdWx0IGluIE5h
TiIpOwogICAgICBhc3NlcnQoaXNOYU4oZCksICJkYXRlIHdhc24ndCBtYWRlIE5hTiIpOwogICAg
ICBhc3NlcnQoaXNOYU4oZC5nZXREYXkoKSksICJkYXRlIHdhc24ndCBtYWRlIE5hTiIpOwogICAg
ICByZXR1cm4gNjsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgODc6IERh
dGUgdGVzdHMgLS0geWVhcnMKICAgICAgdmFyIGQxID0gbmV3IERhdGUoRGF0ZS5VVEMoOTkuOSwg
NikpOwogICAgICBhc3NlcnRFcXVhbHMoZDEuZ2V0VVRDRnVsbFllYXIoKSwgMTk5OSwgIkRhdGUu
VVRDKCkgZGlkbid0IGRvIHByb3BlciAxOTAwIHllYXIgb2Zmc2V0dGluZyIpOwogICAgICB2YXIg
ZDIgPSBuZXcgRGF0ZSg5OC45LCA2KTsKICAgICAgYXNzZXJ0RXF1YWxzKGQyLmdldEZ1bGxZZWFy
KCksIDE5OTgsICJuZXcgRGF0ZSgpIGRpZG4ndCBkbyBwcm9wZXIgMTkwMCB5ZWFyIG9mZnNldHRp
bmciKTsKICAgICAgcmV0dXJuIDY7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0
ZXN0IDg4OiBFUzMgc2VjdGlvbiA3LjY6MyAodW5pY29kZSBlc2NhcGVzIGNhbid0IGJlIHVzZWQg
dG8gcHV0IG5vbi1pZGVudGlmaWVyIGNoYXJhY3RlcnMgaW50byBpZGVudGlmaWVycykKICAgICAg
Ly8gYW5kIHRoZXJlJ3Mgbm8gb3RoZXIgcGxhY2UgZm9yIHRoZW0gaW4gdGhlIHN5bnRheCAob3Ro
ZXIgdGhhbiBzdHJpbmdzLCBvZiBjb3Vyc2UpCiAgICAgIHZhciBvayA9IGZhbHNlOwogICAgICB0
cnkgewogICAgICAgIGV2YWwoInZhciB0ZXN0ID0geyB9O1xudGVzdC5pPSAwO1xudGVzdC5pXFx1
MDAyYj0gMTtcbnRlc3QuaTtcbiIpOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgb2sgPSB0
cnVlOwogICAgICB9CiAgICAgIGFzc2VydChvaywgIlxcdTAwMmIgd2FzIG5vdCBjb25zaWRlcmVk
IGEgcGFyc2UgZXJyb3IgaW4gc2NyaXB0Iik7CiAgICAgIHJldHVybiA2OwogICAgfSwKICAgIGZ1
bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA4OTogUmVndWxhciBFeHByZXNzaW9ucwogICAgICB2
YXIgb2sgPSB0cnVlOwogICAgICAvLyBlbXB0eSBjbGFzc2VzIGluIHJlZ2V4cHMKICAgICAgdHJ5
IHsKICAgICAgICBldmFsKCIvVEFbXSldLy5leGVjKCdUQV0nKSIpOwogICAgICAgIC8vIEpTIHJl
Z2V4cHMgYXJlbid0IGxpa2UgUGVybCByZWdleHBzLCBpZiB0aGVpciBjaGFyYWN0ZXIKICAgICAg
ICAvLyBjbGFzc2VzIHN0YXJ0IHdpdGggYSBdIHRoYXQgbWVhbnMgdGhleSdyZSBlbXB0eS4gU28g
dGhpcwogICAgICAgIC8vIGlzIGEgc3ludGF4IGVycm9yOyBpZiB3ZSBnZXQgaGVyZSBpdCdzIGEg
YnVnLgogICAgICAgIG9rID0gZmFsc2U7CiAgICAgIH0gY2F0Y2ggKGUpIHsgfQogICAgICBhc3Nl
cnQob2ssICJvcnBoYW5lZCBicmFja2V0IG5vdCBjb25zaWRlcmVkIHBhcnNlIGVycm9yIGluIHJl
Z3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIik7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKGV2YWwo
Ii9bXS8uZXhlYygnJykiKSkKICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgICBvayA9IGZhbHNlOwogICAgICB9CiAgICAgIGFzc2VydChvaywgIi9bXS8gZWl0
aGVyIGZhaWxlZCB0byBwYXJzZSBvciBtYXRjaGVkIHNvbWV0aGluZyIpOwogICAgICByZXR1cm4g
NjsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgOTA6IFJlZ3VsYXIgRXhw
cmVzc2lvbnMKICAgICAgLy8gbm90IGJhY2sgcmVmZXJlbmNlcy4KICAgICAgYXNzZXJ0KCEoLygx
KVwwKDIpLy50ZXN0KCIxMiIpKSwgIk5VTCBpbiByZWdleHAgaW5jb3JyZWN0bHkgaWdub3JlZCIp
OwogICAgICBhc3NlcnQoKC8oMSlcMCgyKS8udGVzdCgiMSIgKyAiXDAiICsgIjIiKSksICJOVUwg
aW4gcmVnZXhwIGRpZG4ndCBtYXRjaCBjb3JyZWN0bHkiKTsKICAgICAgYXNzZXJ0KCEoLygxKVww
KDIpLy50ZXN0KCIxXDAyIikpLCAib2N0YWwgMiB1bmV4cGVjdGVkbHkgbWF0Y2hlZCBOVUwiKTsK
ICAgICAgYXNzZXJ0RXF1YWxzKG51bGxJblJlZ2V4cEFyZ3VtZW50UmVzdWx0LCAicGFzc2VkIiwg
ImZhaWxlZCAvLy50ZXN0KCkgY2hlY2siKTsgLy8gbm90aGluZyB0byBzZWUgaGVyZSwgbW92ZSBh
bG9uZyBub3cKICAgICAgLy8gYmFjayByZWZlcmVuY2UgdG8gZnV0dXJlIGNhcHR1cmUKICAgICAg
dmFyIHggPSAvKFwzKShcMSkoYSkvLmV4ZWMoJ2NhdCcpOyAvLyB0aGUgXDMgbWF0Y2hlcyB0aGUg
ZW1wdHkgc3RyaW5nLCBxdi4gRVMzOjE1LjEwLjIuOQogICAgICBhc3NlcnQoeCwgIi8oXFwzKShc
XDEpKGEpLyBmYWlsZWQgdG8gbWF0Y2ggJ2NhdCciKTsKICAgICAgYXNzZXJ0RXF1YWxzKHgubGVu
Z3RoLCA0LCAiLyhcXDMpKFxcMSkoYSkvIGZhaWxlZCB0byByZXR1cm4gZm91ciBjb21wb25lbnRz
Iik7CiAgICAgIGFzc2VydEVxdWFscyh4WzBdLCAiYSIsICIvKFxcMykoXFwxKShhKS8gZmFpbGVk
IHRvIGZpbmQgJ2EnIGluICdjYXQnIik7CiAgICAgIGFzc2VydCh4WzFdID09PSAiIiwgIi8oXFwz
KShcXDEpKGEpLyBmYWlsZWQgdG8gZmluZCAnJyBpbiAnY2F0JyBhcyBmaXJzdCBwYXJ0Iik7CiAg
ICAgIGFzc2VydCh4WzJdID09PSAiIiwgIi8oXFwzKShcXDEpKGEpLyBmYWlsZWQgdG8gZmluZCAn
JyBpbiAnY2F0JyBhcyBzZWNvbmQgcGFydCIpOwogICAgICBhc3NlcnRFcXVhbHMoeFszXSwgImEi
LCAiLyhcXDMpKFxcMSkoYSkvIGZhaWxlZCB0byBmaW5kICdhJyBpbiAnY2F0JyBhcyB0aGlyZCBw
YXJ0Iik7CiAgICAgIC8vIG5lZ2F0aXZlIGxvb2thaGVhZAogICAgICB4ID0gLyg/ISh0ZXh0KSko
dGUudCkvLmV4ZWMoInRleHQgdGVzdGluZyIpOwogICAgICBhc3NlcnRFcXVhbHMoeC5sZW5ndGgs
IDMsICJuZWdhdGl2ZSBsb29rYWhlYWQgdGVzdCBmYWlsZWQgdG8gcmV0dXJuIHRoZSByaWdodCBu
dW1iZXIgb2YgYml0cyIpOwogICAgICBhc3NlcnRFcXVhbHMoeFswXSwgInRlc3QiLCAibmVnYXRp
dmUgbG9va2FoZWFkIHRlc3QgZmFpbGVkIHRvIGZpbmQgdGhlIHJpZ2h0IHRleHQiKTsKICAgICAg
YXNzZXJ0KHhbMV0gPT09IHVuZGVmaW5lZCwgIm5lZ2F0aXZlIGxvb2thaGVhZCB0ZXN0IGZhaWxl
ZCB0byByZXR1cm4gdW5kZWZpbmVkIGZvciBuZWdhdGl2ZSBsb29rYWhlYWQgY2FwdHVyZSIpOwog
ICAgICBhc3NlcnQoeFsyXSA9PT0gInRlc3QiLCAibmVnYXRpdmUgbG9va2FoZWFkIHRlc3QgZmFp
bGVkIHRvIGZpbmQgdGhlIHJpZ2h0IHNlY29uZCBjYXB0dXJlIik7CiAgICAgIHJldHVybiA2Owog
ICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgLy8gdGVzdCA5MTogY2hlY2sgdGhhdCBwcm9w
ZXJ0aWVzIGFyZSBlbnVtZXJhYmxlIGJ5IGRlZmF1bHQKICAgICAgdmFyIHRlc3QgPSB7CiAgICAg
ICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfSwKICAgICAgICB0b1N0cmlu
ZzogZnVuY3Rpb24oKSB7IHJldHVybiAyOyB9LAogICAgICAgIHRvTG9jYWxlU3RyaW5nOiBmdW5j
dGlvbigpIHsgcmV0dXJuIDM7IH0sCiAgICAgICAgdmFsdWVPZjogZnVuY3Rpb24oKSB7IHJldHVy
biA0OyB9LAogICAgICAgIGhhc093blByb3BlcnR5OiBmdW5jdGlvbigpIHsgcmV0dXJuIDU7IH0s
CiAgICAgICAgaXNQcm90b3R5cGVPZjogZnVuY3Rpb24oKSB7IHJldHVybiA2OyB9LAogICAgICAg
IHByb3BlcnR5SXNFbnVtZXJhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIDc7IH0sCiAgICAgICAg
cHJvdG90eXBlOiBmdW5jdGlvbigpIHsgcmV0dXJuIDg7IH0sCiAgICAgICAgbGVuZ3RoOiBmdW5j
dGlvbigpIHsgcmV0dXJuIDk7IH0sCiAgICAgICAgdW5pcXVlOiBmdW5jdGlvbigpIHsgcmV0dXJu
IDEwOyB9CiAgICAgIH07CiAgICAgIHZhciByZXN1bHRzID0gW107CiAgICAgIGZvciAodmFyIHBy
b3BlcnR5IGluIHRlc3QpCiAgICAgICAgcmVzdWx0cy5wdXNoKFt0ZXN0W3Byb3BlcnR5XSgpLCBw
cm9wZXJ0eV0pOwogICAgICByZXN1bHRzLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgIGlm
IChhWzBdIDwgYlswXSkgcmV0dXJuIC0xOwogICAgICAgIGlmIChhWzBdID4gYlswXSkgcmV0dXJu
IDE7CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0pOwogICAgICBhc3NlcnRFcXVhbHMocmVzdWx0
cy5sZW5ndGgsIDEwLCAibWlzc2luZyBwcm9wZXJ0aWVzIik7CiAgICAgIGZvciAodmFyIGluZGV4
ID0gMDsgaW5kZXggPCAxMDsgaW5kZXggKz0gMSkKICAgICAgICBhc3NlcnRFcXVhbHMocmVzdWx0
c1tpbmRleF1bMF0sIGluZGV4KzEsICJvcmRlciB3cm9uZyBhdCByZXN1bHRzWyIraW5kZXgrIl0g
PT0gIik7CiAgICAgIHZhciBpbmRleCA9IDA7CiAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRzW2lu
ZGV4KytdWzFdLCAiY29uc3RydWN0b3IiLCAiZmFpbGVkIHRvIGZpbmQgY29uc3RydWN0b3IgaW4g
ZXhwZWN0ZWQgcG9zaXRpb24iKTsKICAgICAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNbaW5kZXgrK11b
MV0sICJ0b1N0cmluZyIsICJmYWlsZWQgdG8gZmluZCB0b1N0cmluZyBpbiBleHBlY3RlZCBwb3Np
dGlvbiIpOwogICAgICBhc3NlcnRFcXVhbHMocmVzdWx0c1tpbmRleCsrXVsxXSwgInRvTG9jYWxl
U3RyaW5nIiwgImZhaWxlZCB0byBmaW5kIHRvTG9jYWxlU3RyaW5nIGluIGV4cGVjdGVkIHBvc2l0
aW9uIik7CiAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRzW2luZGV4KytdWzFdLCAidmFsdWVPZiIs
ICJmYWlsZWQgdG8gZmluZCB2YWx1ZU9mIGluIGV4cGVjdGVkIHBvc2l0aW9uIik7CiAgICAgIGFz
c2VydEVxdWFscyhyZXN1bHRzW2luZGV4KytdWzFdLCAiaGFzT3duUHJvcGVydHkiLCAiZmFpbGVk
IHRvIGZpbmQgaGFzT3duUHJvcGVydHkgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsKICAgICAgYXNz
ZXJ0RXF1YWxzKHJlc3VsdHNbaW5kZXgrK11bMV0sICJpc1Byb3RvdHlwZU9mIiwgImZhaWxlZCB0
byBmaW5kIGlzUHJvdG90eXBlT2YgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHJlc3VsdHNbaW5kZXgrK11bMV0sICJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsICJmYWls
ZWQgdG8gZmluZCBwcm9wZXJ0eUlzRW51bWVyYWJsZSBpbiBleHBlY3RlZCBwb3NpdGlvbiIpOwog
ICAgICBhc3NlcnRFcXVhbHMocmVzdWx0c1tpbmRleCsrXVsxXSwgInByb3RvdHlwZSIsICJmYWls
ZWQgdG8gZmluZCBwcm90b3R5cGUgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsKICAgICAgYXNzZXJ0
RXF1YWxzKHJlc3VsdHNbaW5kZXgrK11bMV0sICJsZW5ndGgiLCAiZmFpbGVkIHRvIGZpbmQgbGVu
Z3RoIGluIGV4cGVjdGVkIHBvc2l0aW9uIik7CiAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRzW2lu
ZGV4KytdWzFdLCAidW5pcXVlIiwgImZhaWxlZCB0byBmaW5kIHVuaXF1ZSBpbiBleHBlY3RlZCBw
b3NpdGlvbiIpOwogICAgICByZXR1cm4gNjsKICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAg
IC8vIHRlc3QgOTI6IGludGVybmFsIHByb3BlcnRpZXMgb2YgRnVuY3Rpb24gb2JqZWN0cwogICAg
ICAvLyBjb25zdHJ1Y3RvciBpcyBub3QgUmVhZE9ubHkKICAgICAgdmFyIGYxID0gZnVuY3Rpb24g
KCkgeyAxIH07CiAgICAgIGYxLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICJoZWxsbyB3b3JsZCI7
CiAgICAgIHZhciBmMWkgPSBuZXcgZjEoKTsKICAgICAgYXNzZXJ0KGYxaS5jb25zdHJ1Y3RvciA9
PT0gImhlbGxvIHdvcmxkIiwgIkZ1bmN0aW9uIG9iamVjdCdzIHByb3RvdHlwZSdzIGNvbnN0cnVj
dG9yIHdhcyBSZWFkT25seSIpOwogICAgICAvLyBjb25zdHJ1Y3RvciBpcyBEb250RW51bSAoaW5k
ZWVkLCBubyBwcm9wZXJ0aWVzIGF0IGFsbCBvbiBhIG5ldyBGdW5jdGlvbiBvYmplY3QpCiAgICAg
IHZhciBmMiA9IGZ1bmN0aW9uICgpIHsgMiB9OwogICAgICB2YXIgZjJpID0gbmV3IGYyKCk7CiAg
ICAgIHZhciBjb3VudCA9IDA7CiAgICAgIGZvciAodmFyIHByb3BlcnR5IGluIGYyaSkgewogICAg
ICAgIGFzc2VydChwcm9wZXJ0eSAhPSAiY29uc3RydWN0b3IiLCAiRnVuY3Rpb24gb2JqZWN0J3Mg
cHJvdG90eXBlJ3MgY29uc3RydWN0b3Igd2FzIG5vdCBEb250RW51bSIpOwogICAgICAgIGNvdW50
ICs9IDE7CiAgICAgIH0KICAgICAgYXNzZXJ0RXF1YWxzKGNvdW50LCAwLCAiRnVuY3Rpb24gb2Jq
ZWN0IGhhZCB1bmV4cGVjdGVkIHByb3BlcnRpZXMiKTsKICAgICAgLy8gY29uc3RydWN0b3IgaXMg
bm90IERvbnREZWxldGUKICAgICAgdmFyIGYzID0gZnVuY3Rpb24gKGEsIGIpIHsgMyB9OwogICAg
ICBkZWxldGUgZjMucHJvdG90eXBlLmNvbnN0cnVjdG9yOwogICAgICB2YXIgZjNpID0gbmV3IGYz
KCk7CiAgICAgIGFzc2VydEVxdWFscyhmM2kuY29uc3RydWN0b3IsIE9iamVjdC5wcm90b3R5cGUu
Y29uc3RydWN0b3IsICJGdW5jdGlvbiBvYmplY3QncyBwcm90b3R5cGUncyBjb25zdHJ1Y3RvciB3
YXMgRG9udERlbGV0ZSAob3IgZ290IG1hZ2ljYWxseSByZXBsYWNlZCkiKTsKICAgICAgcmV0dXJu
IDY7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDkzOiBGdW5jdGlvbkV4
cHJlc3Npb24gc2VtYW50aWNzCiAgICAgIHZhciBmdW5jdGVzdDsKICAgICAgdmFyIHZhcnRlc3Qg
PSAwOwogICAgICB2YXIgdmFsdWUgPSAoZnVuY3Rpb24gZnVuY3Rlc3QoYXJnKSB7CiAgICAgICAg
aWYgKGFyZykKICAgICAgICAgIHJldHVybiAxOwogICAgICAgIHZhcnRlc3QgPSAxOwogICAgICAg
IGZ1bmN0ZXN0ID0gZnVuY3Rpb24gKGFyZykgeyByZXR1cm4gMjsgfTsgLy8gdGhpcyBsaW5lIGRv
ZXMgbm90aGluZyBhcyAnZnVuY3Rlc3QnIGlzIFJlYWRPbmx5IGhlcmUKICAgICAgICByZXR1cm4g
ZnVuY3Rlc3QodHJ1ZSk7IC8vIHRoaXMgaXMgdGhlcmVmb3JlIHRhaWwgcmVjdXJzaW9uIGFuZCBy
ZXR1cm5zIDEKICAgICAgfSkoZmFsc2UpOwogICAgICBhc3NlcnRFcXVhbHModmFydGVzdCwgMSwg
InJ1bGVzIGluIDEwLjEuNCBub3QgZm9sbG93ZWQgaW4gRnVuY3Rpb25Cb2R5Iik7CiAgICAgIGFz
c2VydEVxdWFscyh2YWx1ZSwgMSwgInNlbWFudGljcyBvZiBGdW5jdGlvbkV4cHJlc3Npb246IGZ1
bmN0aW9uIElkZW50aWZpZXIgLi4uIG5vdCBmb2xsb3dlZCIpOwogICAgICBhc3NlcnQoIWZ1bmN0
ZXN0LCAiUHJvcGVydHkgaW4gc3RlcCA0IG9mIEZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24g
SWRlbnRpZmllciAuLi4gbGVha2VkIHRvIHBhcmVudCBzY29wZSIpOwogICAgICByZXR1cm4gNjsK
ICAgIH0sCiAgICBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgOTQ6IGV4Y2VwdGlvbiBzY29w
ZQogICAgICB2YXIgdGVzdCA9ICdwYXNzJzsKICAgICAgdHJ5IHsKICAgICAgICB0aHJvdyAnZmFp
bCc7CiAgICAgIH0gY2F0Y2ggKHRlc3QpIHsKICAgICAgICB0ZXN0ICs9ICdpbmcnOwogICAgICB9
CiAgICAgIGFzc2VydEVxdWFscyh0ZXN0LCAncGFzcycsICdvdXRlciBzY29wZSBwb2lzb25lZCBi
eSBleGNlcHRpb24gY2F0Y2h7fSBibG9jaycpOwogICAgICByZXR1cm4gNjsKICAgIH0sCiAgICBm
dW5jdGlvbiAoKSB7CiAgICAgIC8vIHRlc3QgOTU6IHR5cGVzIG9mIGV4cHJlc3Npb25zCiAgICAg
IHZhciBhID0gW107IHZhciBzOwogICAgICBzID0gYS5sZW5ndGggPSAiMjE0NzQ4MzY0OCI7CiAg
ICAgIGFzc2VydEVxdWFscyh0eXBlb2YgcywgInN0cmluZyIsICJ0eXBlIG9mIHxcIjIxNDc0ODM2
NDhcInwgaXMgbm90IHN0cmluZyIpOwogICAgICByZXR1cm4gNjsKICAgIH0sCiAgICBmdW5jdGlv
biAoKSB7CiAgICAgIC8vIHRlc3QgOTY6IGVuY29kZVVSSSgpIGFuZCBlbmNvZGVVUklDb21wb25l
bnQoKSBhbmQgbnVsbCBieXRlcwogICAgICBhc3NlcnRFcXVhbHMoZW5jb2RlVVJJQ29tcG9uZW50
KFN0cmluZy5mcm9tQ2hhckNvZGUoMCkpLCAnJTAwJywgImVuY29kZVVSSUNvbXBvbmVudCBmYWls
ZWQgdG8gZW5jb2RlIFUrMDAwMCIpOwogICAgICBhc3NlcnRFcXVhbHMoZW5jb2RlVVJJKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMCkpLCAnJTAwJywgImVuY29kZVVSSSBmYWlsZWQgdG8gZW5jb2RlIFUr
MDAwMCIpOwogICAgICByZXR1cm4gNjsKICAgIH0sCgogICAgLy8gVVJJcwogICAgZnVuY3Rpb24g
KCkgewogICAgICAvLyB0ZXN0IDk3OiBkYXRhOiBVUkkgcGFyc2luZwogICAgICBhc3NlcnRFcXVh
bHMoZDEsICJvbmUiLCAiZGF0YTogZmFpbGVkIGFzIGVzY2FwZWQiKTsKICAgICAgYXNzZXJ0RXF1
YWxzKGQyLCAidHdvIiwgImRhdGE6IGZhaWxlZCBhcyBiYXNlNjQiKTsKICAgICAgYXNzZXJ0RXF1
YWxzKGQzLCAidGhyZWUiLCAiZGF0YTogZmFpbGVkIGFzIGJhc2U2NCBlc2NhcGVkIik7CiAgICAg
IGFzc2VydEVxdWFscyhkNCwgImZvdXIiLCAiZGF0YTogZmFpbGVkIGFzIGJhc2U2NCB3aXRoIHNw
YWNlcyIpOwogICAgICBhc3NlcnRFcXVhbHMoZDUsICJmaXZlJ3MiLCAiZGF0YTogZmFpbGVkIHdp
dGggYmFja3NsYXNoIik7CiAgICAgIHJldHVybiA3OwogICAgfSwKCiAgICAvLyBYSFRNTAogICAg
ZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDk4OiBYSFRNTCBhbmQgdGhlIERPTQogICAgICAv
LyAoc3BlY2lhbCB0ZXN0KQogICAgICB2YXIgZG9jdHlwZSA9IGRvY3VtZW50LmltcGxlbWVudGF0
aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgiaHRtbCIsICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3Ry
aWN0Ly9FTiIsICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3Qu
ZHRkIik7CiAgICAgIHZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1
bWVudCgiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJodG1sIiwgZG9jdHlwZSk7CiAg
ICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJoZWFkIikpOwogICAgICBkb2MuZG9jdW1l
bnRFbGVtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiLCAiYm9keSIpKTsKICAgICAgdmFyIHQgPSBkb2MuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgInRpdGxlIik7CiAgICAgIGRvYy5k
b2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZCh0KTsKICAgICAgLy8gb2sgd2Ug
aGF2ZSBhIGNvbmZvcm1pbmcgWEhUTUwxIGRvYyBpbiB8ZG9jfCBub3cuCiAgICAgIGFzc2VydEVx
dWFscyhkb2MudGl0bGUsICIiLCAiZG9jdW1lbnQgaGFkIHVuZXhwZWN0ZWQgdGl0bGUiKTsKICAg
ICAgdC50ZXh0Q29udGVudCA9ICJTcGFycm93IjsKICAgICAgYXNzZXJ0RXF1YWxzKGRvYy50aXRs
ZSwgIlNwYXJyb3ciLCAiZG9jdW1lbnQudGl0bGUgZGlkIG5vdCB1cGRhdGUgZHluYW1pY2FsbHki
KTsKICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJmb3JtIikpOwogICAgICBhc3NlcnRFcXVhbHMoZG9j
LmZvcm1zLmxlbmd0aCwgMSwgImRvY3VtZW50LmZvcm1zIG5vdCB1cGRhdGVkIGFmdGVyIGluc2Vy
dGluZyBhIGZvcm0iKTsKICAgICAgcmV0dXJuIDc7CiAgICB9LAoKICAgIC8vIFNhbml0eQogICAg
ZnVuY3Rpb24gKCkgewogICAgICAvLyB0ZXN0IDk5OiBjaGVjayBmb3IgdGhlIHdlaXJkZXN0IGJ1
ZyBldmVyCiAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICBh
LnNldEF0dHJpYnV0ZSgnaHJlZicsICdodHRwOi8vd3d3LmV4YW1wbGUuY29tLycpOwogICAgICBh
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCd3d3cuZXhhbXBsZS5jb20nKSk7
CiAgICAgIGEuaHJlZiA9ICdodHRwOi8vaGl4aWUuY2gvJzsKICAgICAgYXNzZXJ0RXF1YWxzKGEu
Zmlyc3RDaGlsZC5kYXRhLCAid3d3LmV4YW1wbGUuY29tIiwgInNhbml0eSBkaWQgbm90IHByZXZh
aWwiKTsKICAgICAgYS5ocmVmID0gJ2h0dHA6Ly9kYW1vd21vdy5jb20vJzsKICAgICAgYXNzZXJ0
RXF1YWxzKGEuZmlyc3RDaGlsZC5kYXRhLCAid3d3LmV4YW1wbGUuY29tIiwgImZpbmFsIHRlc3Qg
ZmFpbGVkIik7CiAgICAgIHJldHVybiA3OwogICAgfQoKICBdOwogIHZhciBsb2cgPSAnJzsKICB2
YXIgZGVsYXkgPSAxMDsKICB2YXIgc2NvcmUgPSAwLCBpbmRleCA9IDAsIHJldHJ5ID0gMDsKICBm
dW5jdGlvbiB1cGRhdGUoKSB7CiAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzY29yZScpOyAvLyBub3QgY2FjaGVkIGJ5IEpTCiAgICBzcGFuLm5leHRTaWJsaW5nLnJlbW92
ZUF0dHJpYnV0ZSgnY2xhc3MnKTsgLy8gbm8tb3AgYWZ0ZXIgZmlyc3QgbG9vcAogICAgc3Bhbi5u
ZXh0U2libGluZy5uZXh0U2libGluZy5maXJzdENoaWxkLmRhdGEgPSB0ZXN0cy5sZW5ndGg7IC8v
IG5vLW9wIGFmdGVyIGZpcnN0IGxvb3AKICAgIGlmIChpbmRleCA8IHRlc3RzLmxlbmd0aCkgewog
ICAgICB0cnkgewogICAgICAgIHZhciByZXN1bHQgPSB0ZXN0c1tpbmRleF0oKTsKICAgICAgICBp
ZiAocmVzdWx0ID09ICJyZXRyeSIpIHsKICAgICAgICAgIC8vIHNvbWUgdGVzdHMgdXNlcyB0aGlz
IG1hZ2ljYWwgbWVjaGFuaXNtIHRvIHdhaXQgZm9yIHN1cHBvcnQgZmlsZXMgdG8gbG9hZAogICAg
ICAgICAgLy8gd2Ugd2lsbCBnaXZlIHRoaXMgdGVzdCAyNTAgYXR0ZW1wdHMgKDI1MDBtcykgYmVm
b3JlIGFib3J0aW5nCiAgICAgICAgICByZXRyeSArPSAxOwogICAgICAgICAgaWYgKHJldHJ5IDwg
MjUwKSB7CiAgICAgICAgICAgIHNldFRpbWVvdXQodXBkYXRlLCBkZWxheSk7CiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCkgewogICAgICAg
ICAgdmFyIGJ1Y2tldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWNrZXQnICsgcmVzdWx0
KTsKICAgICAgICAgIGlmIChidWNrZXQpCiAgICAgICAgICAgIGJ1Y2tldC5jbGFzc05hbWUgKz0g
J1AnOwogICAgICAgICAgc2NvcmUgKz0gMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbG9n
ICs9ICJUZXN0ICIgKyBpbmRleCArICI6IG5vIGRldGFpbHNcbiI7CiAgICAgICAgfQogICAgICB9
IGNhdGNoIChlKSB7CiAgICAgICAgdmFyIHMgPSBlLm1lc3NhZ2UucmVwbGFjZSgvXHMrJC8sICIi
KTsKICAgICAgICBsb2cgKz0gIlRlc3QgIiArIGluZGV4ICsgIjogIiArIHMgKyAiXG4iOwogICAg
ICB9OwogICAgICBpZiAocmV0cnkgPiAwKQogICAgICAgIGxvZyArPSAiVGVzdCAiICsgaW5kZXgg
KyAiIHRvb2sgIiArIHJldHJ5ICsgIiBhdHRlbXB0cy5cbiI7CiAgICAgIHJldHJ5ID0gMDsKICAg
ICAgaW5kZXggKz0gMTsKICAgICAgc3Bhbi5maXJzdENoaWxkLmRhdGEgPSBzY29yZTsKICAgICAg
c2V0VGltZW91dCh1cGRhdGUsIGRlbGF5KTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBlbmRUaW1l
ID0gbmV3IERhdGUoKTsKICAgICAgdmFyIGVsYXBzZWRUaW1lID0gKChlbmRUaW1lIC0gc3RhcnRU
aW1lKSAtIChkZWxheSAqIHRlc3RzLmxlbmd0aCkpIC8gMTAwMDsKICAgICAgbG9nICs9ICJFbGFw
c2VkIHRpbWU6ICIgKyBlbGFwc2VkVGltZS50b0ZpeGVkKDIpICsgInMiOwogICAgfQogIH0KICBm
dW5jdGlvbiByZXBvcnQoZXZlbnQpIHsKICAgIC8vIGZvciBkZWJ1Z2dpbmcgZWl0aGVyIGNsaWNr
IHRoZSAiQSIgaW4gIkFjaWQzIiAodG8gZ2V0IGFuIGFsZXJ0KSBvciBzaGlmdC1jbGljayBpdCAo
dG8gZ2V0IGEgcmVwb3J0KQogICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7CiAgICAgIHZhciB3ID0g
d2luZG93Lm9wZW4oKTsKICAgICAgdy5kb2N1bWVudC53cml0ZSgnPHByZT5GYWlsZWQgJyArICh0
ZXN0cy5sZW5ndGggLSBzY29yZSkgKyAnIG9mICcgKyB0ZXN0cy5sZW5ndGggKyAnIHRlc3RzLlxu
JyArCiAgICAgICAgICAgICAgICAgICAgICAgbG9nLnJlcGxhY2UoLyYvZywnJmFtcDsnKS5yZXBs
YWNlKC88L2csJyZsdDsnKS5yZXBsYWNlKCdcMCcsICdcXDAnKSArCiAgICAgICAgICAgICAgICAg
ICAgICAgJzwvcHJlPicpOwogICAgICB3LmRvY3VtZW50LmNsb3NlKCk7CiAgICB9IGVsc2Ugewog
ICAgICBhbGVydCgnRmFpbGVkICcgKyAodGVzdHMubGVuZ3RoIC0gc2NvcmUpICsgJyB0ZXN0JyAr
IChzY29yZSA9PSAxID8gJycgOiAncycpICsgJy5cbicgKyBsb2cpCiAgICB9CiAgfQogPC9zY3Jp
cHQ+CiA8Ym9keSBvbmxvYWQ9InVwZGF0ZSgpICAvKiB0aGlzIGF0dHJpYnV0ZSdzIHZhbHVlIGlz
IHRlc3RlZCBpbiBvbmUgb2YgdGhlIHRlc3RzICovICI+CiAgPGgxIG9uY2xpY2s9InJlcG9ydChl
dmVudCkiPkFjaWQzPC9oMT4KICA8ZGl2IGNsYXNzPSJidWNrZXRzIgogICA+PHAgaWQ9ImJ1Y2tl
dDEiIGNsYXNzPSJ6Ij48L3AKICAgPjxwIGlkPSJidWNrZXQyIiBjbGFzcz0ieiI+PC9wCiAgID48
cCBpZD0iYnVja2V0MyIgY2xhc3M9InoiPjwvcAogICA+PHAgaWQ9ImJ1Y2tldDQiIGNsYXNzPSJ6
Ij48L3AKICAgPjxwIGlkPSJidWNrZXQ1IiBjbGFzcz0ieiI+PC9wCiAgID48cCBpZD0iYnVja2V0
NiIgY2xhc3M9InoiPjwvcD4KICA8L2Rpdj4KICA8cCBpZD0icmVzdWx0Ij48c3BhbiBpZD0ic2Nv
cmUiPkpTPC9zcGFuPjxzcGFuIGlkPSJzbGFzaCIgY2xhc3M9ImhpZGRlbiI+Lzwvc3Bhbj48c3Bh
bj4/PC9zcGFuPjwvcD4KICA8IS0tIHRoZSBmb2xsb3dpbmcgbGluZSBpcyB1c2VkIGluIGEgbnVt
YmVyIG9mIHRoZSB0ZXN0cyAtLT4KICA8bWFwPjxhcmVhIGhyZWY9IiIgc2hhcGU9InJlY3QiIGNv
b3Jkcz0iMiwyLDQsNCI+PGlmcmFtZSBzcmM9ImVtcHR5LnBuZyI+RkFJTDwvaWZyYW1lPjxpZnJh
bWUgc3JjPSJlbXB0eS50eHQiPkZBSUw8L2lmcmFtZT48aWZyYW1lIHNyYz0iZW1wdHkuaHRtbCIg
aWQ9InNlbGVjdG9ycyI+PC9pZnJhbWU+PGZvcm0gbmFtZT0iZm9ybSI+PGlucHV0IHR5cGU9SElE
REVOPjwvZm9ybT48dGFibGU+PHRyPjx0ZD48cD48L3Rib2R5PiA8L3RhYmxlPjwvbWFwPgogIDxw
IGlkPSJpbnN0cnVjdGlvbnMiPlRvIHBhc3MgdGhlIHRlc3QsIDxzcGFuPjwvc3Bhbj4gYSBicm93
c2VyIG11c3QgdXNlIGl0cyBkZWZhdWx0IHNldHRpbmdzLCB0aGUgYW5pbWF0aW9uIGhhcyB0byBi
ZSBzbW9vdGgsIHRoZSBzY29yZSBoYXMgdG8gZW5kIG9uIDEwMC8xMDAsIGFuZCB0aGUgZmluYWwg
cGFnZSBoYXMgdG8gbG9vayBleGFjdGx5LCBwaXhlbCBmb3IgcGl4ZWwsIGxpa2UgPGEgaHJlZj0i
cmVmZXJlbmNlLmh0bWwiPnRoaXMgcmVmZXJlbmNlIHJlbmRlcmluZzwvYT4uPC9wPgogIDxwIGlk
PSJyZW1vdmUtbGFzdC1jaGlsZC10ZXN0Ij5TY3JpcHRpbmcgbXVzdCBiZSBlbmFibGVkIHRvIHVz
ZSB0aGlzIHRlc3QuPC9wPgogPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>