<?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>18456</bug_id>
          
          <creation_ts>2008-04-13 04:06:40 -0700</creation_ts>
          <short_desc>segmentation fault crash on Acid3 test 64 and 79 under Linux</short_desc>
          <delta_ts>2020-06-25 13:48:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="wellofsouls">wellofsouls</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs</cc>
    
    <cc>elias.julkunen</cc>
    
    <cc>krit</cc>
    
    <cc>mrowe</cc>
    
    <cc>thepizzaking</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>77388</commentid>
    <comment_count>0</comment_count>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-13 04:06:40 -0700</bug_when>
    <thetext>For both WebKitQt and WebKitGtk, any browser utilizing either of them crashes at test 65 of the Acid3 test with a segmentation fault error message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77519</commentid>
    <comment_count>1</comment_count>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-14 02:06:39 -0700</bug_when>
    <thetext>actually it&apos;s test 64 and 79 that can cause WebKitGtk to crash with segmentation fault</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77522</commentid>
    <comment_count>2</comment_count>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-14 02:50:30 -0700</bug_when>
    <thetext>code that caused the segmentation fault in test 64:

// non-existent attributes
var test = document.createElement(&apos;p&apos;);
test.setAttribute(&apos;TWVvdywgbWV3Li4u&apos;, &apos;woof&apos;);

code that caused the segmentation fault in test 79:

 doc.documentElement.appendChild(e(&apos;font&apos;, { &apos;horiz-adv-x&apos;: &apos;10000&apos;}, [e(&apos;font-face&apos;, { &apos;font-family&apos;: &apos;HCl&apos;, &apos;units-per-em&apos;: &apos;100&apos;, &apos;ascent&apos;: &apos;1000&apos;, &apos;descent&apos;: &apos;500&apos;}), e(&apos;missing-glyph&apos;, null, [e(&apos;path&apos;, { &apos;d&apos;: &apos;M100,0 h800 v-100 h-800 z&apos;})]), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;A&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;BC&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;200&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;B&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;300&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;C&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;500&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;BD&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;700&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;D&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;1100&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;EE&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;1300&apos;,  &apos;glyph-name&apos;: &apos;grapefruit&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;U+0046&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;1700&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;F&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;1900&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;G&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;2300&apos;, &apos;glyph-name&apos;: &apos;gee&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;\uD800\uDC85&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;2900&apos;, &apos;id&apos;: &apos;astral&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;H&apos;, &apos;horiz-adv-x&apos;: &apos;3100&apos;}, [e(&apos;path&apos;, { &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;})]), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;I&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;4100&apos;, &apos;lang&apos;: &apos;zh&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;I&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;4300&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;J&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;4700&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;K&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;5300&apos;, &apos;orientation&apos;: &apos;v&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;K&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;5900&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos; &apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;6100&apos;, &apos;glyph-name&apos;: &apos;L&apos;}), e(&apos;glyph&apos;, { &apos;unicode&apos;: &apos;L&apos;, &apos;d&apos;: &apos;M100,0 h100 v-100 h-100 z&apos;, &apos;horiz-adv-x&apos;: &apos;6700&apos;, &apos;glyph-name&apos;: &apos;space&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;A&apos;, &apos;u2&apos;: &apos;EE&apos;, &apos;k&apos;: &apos;1000&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;A&apos;, &apos;g2&apos;: &apos;grapefruit&apos;, &apos;k&apos;: &apos;-200&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;U+0046&apos;, &apos;u2&apos;: &apos;U+0046&apos;, &apos;k&apos;: &apos;-200&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;U+0047-0047&apos;, &apos;g2&apos;: &apos;gee&apos;, &apos;k&apos;: &apos;-200&apos;}), e(&apos;hkern&apos;, { &apos;u1&apos;: &apos;J&apos;, &apos;u2&apos;: &apos;A&apos;, &apos;k&apos;: &apos;4700&apos;})]));
      doc.documentElement.appendChild(e(&apos;text&apos;, { &apos;y&apos;: &apos;100&apos;, &apos;font-family&apos;: &apos;HCl&apos;, &apos;font-size&apos;: &apos;100px&apos;, &apos;letter-spacing&apos;: &apos;0px&apos;, &apos;word-spacing&apos;: &apos;0px&apos;}, [&apos;ABCBDAEEU+0046U+0046GGHI&apos;, e(&apos;tspan&apos;, { &apos;xml:lang&apos;: &apos;zh&apos;}, [&apos;I&apos;]), &apos;JAK L&apos;, e(&apos;altGlyph&apos;, { &apos;xlink:href&apos;: &apos;#astral&apos;}, [&apos;A&apos;]), &apos;\uD800\uDC85A&apos;]));

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77523</commentid>
    <comment_count>3</comment_count>
      <attachid>20523</attachid>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-14 02:54:55 -0700</bug_when>
    <thetext>Created attachment 20523
modified acid3 test 

Acid3 test with the parts that cause the segmentation faults commented out, still WebKitGtk and WebKitQt can&apos;t reach 100/100 though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77602</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-04-14 12:46:12 -0700</bug_when>
    <thetext>Which revision of WebKit?  What CPU architecture?  What compiler version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77636</commentid>
    <comment_count>5</comment_count>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-14 18:38:33 -0700</bug_when>
    <thetext>&gt; Which revision of WebKit?  What CPU architecture?  What compiler version?

all the latest revisions, from as far back as 314xx (can&apos;t remember exactly) to (currently tested) 31860. I do recall 312xx from the end of March didn&apos;t have this problem.

x86 CPU, gcc 4.3.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77662</commentid>
    <comment_count>6</comment_count>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-15 00:58:12 -0700</bug_when>
    <thetext>I&apos;ve tried the latest 31896 revision, and it&apos;s still the same segmentation fault probelms. Interestingly, WebKitQt only crashes at test 64, while unaffected by test 79, but only scores 88/100 at the modified Acid3. WebKitGtk crashes at both test 64 and test 79, but scores 90/100 at the modified Acid3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77681</commentid>
    <comment_count>7</comment_count>
      <attachid>20550</attachid>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-15 05:39:40 -0700</bug_when>
    <thetext>Created attachment 20550
part of test 64 that makes WebKitGtk and WebKitQt crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77682</commentid>
    <comment_count>8</comment_count>
      <attachid>20551</attachid>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-15 05:40:38 -0700</bug_when>
    <thetext>Created attachment 20551
part of test 79 that makes WebKitGtk crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77683</commentid>
    <comment_count>9</comment_count>
      <attachid>20552</attachid>
    <who name="wellofsouls">wellofsouls</who>
    <bug_when>2008-04-15 05:42:05 -0700</bug_when>
    <thetext>Created attachment 20552
the svg.xml that&apos;s needed for test 79</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78976</commentid>
    <comment_count>10</comment_count>
    <who name="ossh4x">ossh4x</who>
    <bug_when>2008-04-26 13:33:29 -0700</bug_when>
    <thetext>My backtrace for segfault at 64% on acid3...
(without fast-malloc, it still bombs after adopt() at the same place)

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb567a8e0 (LWP 25866)]
0xb7eb4e4f in WTF::fastMalloc () from /usr/lib/libwebkit-1.0.so.1
(gdb) backtrace
#0  0xb7eb4e4f in WTF::fastMalloc () from /usr/lib/libwebkit-1.0.so.1
#1  0xb7bd90d6 in WebCore::StringImpl::adopt () from /usr/lib/libwebkit-1.0.so.1
#2  0xb7bd97ab in WebCore::StringImpl::lower () from /usr/lib/libwebkit-1.0.so.1
#3  0xb7bd3d33 in WebCore::String::lower () from /usr/lib/libwebkit-1.0.so.1
#4  0xb7a3b945 in WebCore::Element::removeAttribute () from /usr/lib/libwebkit-1.0.so.1
#5  0xb7df4929 in WebCore::jsElementPrototypeFunctionRemoveAttribute () from /usr/lib/libwebkit-1.0.so.1
#6  0xb7ea779e in KJS::PrototypeFunction::callAsFunction () from /usr/lib/libwebkit-1.0.so.1
#7  0xb7ed42c2 in KJS::JSObject::call () from /usr/lib/libwebkit-1.0.so.1
#8  0xb7eedbd0 in KJS::FunctionCallDotNode::evaluate () from /usr/lib/libwebkit-1.0.so.1
#9  0xb7ee497b in KJS::ExprStatementNode::execute () from /usr/lib/libwebkit-1.0.so.1
#10 0xb7ea9115 in KJS::BlockNode::execute () from /usr/lib/libwebkit-1.0.so.1
#11 0xb7ef868c in KJS::FunctionImp::callAsFunction () from /usr/lib/libwebkit-1.0.so.1
#12 0xb7ed42c2 in KJS::JSObject::call () from /usr/lib/libwebkit-1.0.so.1
#13 0xb79b787e in WebCore::ScheduledAction::execute () from /usr/lib/libwebkit-1.0.so.1
#14 0xb799bd29 in WebCore::JSDOMWindowBase::timerFired () from /usr/lib/libwebkit-1.0.so.1
#15 0xb799bf14 in WebCore::DOMWindowTimer::fired () from /usr/lib/libwebkit-1.0.so.1
#16 0xb7bdea7c in WebCore::TimerBase::fireTimers () from /usr/lib/libwebkit-1.0.so.1
#17 0xb7bdeb38 in WebCore::TimerBase::sharedTimerFired () from /usr/lib/libwebkit-1.0.so.1
#18 0xb797f285 in WebCore::timeout_cb () from /usr/lib/libwebkit-1.0.so.1
#19 0xb6db06b6 in g_timeout_dispatch () from /usr/lib/libglib-2.0.so.0
#20 0xb6daff88 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#21 0xb6db34eb in g_main_context_iterate () from /usr/lib/libglib-2.0.so.0
#22 0xb6db39ba in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#23 0xb718cb19 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#24 0x0807bdb8 in main ()
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81806</commentid>
    <comment_count>11</comment_count>
    <who name="Audren Cezar">audrencezar</who>
    <bug_when>2008-05-28 18:40:09 -0700</bug_when>
    <thetext>using: 
WebKit-r34153.tar.bz2 
&apos;&apos;&apos;
./autogen.sh --prefix=/usr --enable-svg-experimental --with-http-backend=soup --with-font-backend=pango --with-target=x11 --enable-svg-animation --enable-fast-malloc --enable-video --enable-debug
&apos;&apos;&apos;
I have &quot;segmentation fault&quot; msg too when i run acid3 test around 60.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81928</commentid>
    <comment_count>12</comment_count>
      <attachid>21431</attachid>
    <who name="Audren Cezar">audrencezar</who>
    <bug_when>2008-05-30 07:11:29 -0700</bug_when>
    <thetext>Created attachment 21431
log of debug message

Linux negresco 2.6.25-ARCH #1 SMP PREEMPT Fri May 16 14:52:43 CEST 2008 i686 AMD Sempron(tm) Processor 2500+ AuthenticAMD GNU/Linux.
gcc 4.3.0-1

In my last test i run nightly build WebKit-r34153.tar.bz2
With some build options (every crash on test):
----------------------------------------------------------
  ./autogen.sh --prefix=/usr \
   --enable-offline-web-applications=no \
   --enable-dom-storage=no \
   --enable-database=no \
   --enable-icon-database=no \
   --enable-video=no \
   --enable-xpath=no \
   --enable-xslt=no \
   --enable-svg=no \
   --enable-fast-malloc=no \
   --enable-dashboard-support=no \
   --with-gnu-ld=yes --enable-debug
----------------------------------------------------------
  ./autogen.sh --prefix=/usr \
  --disable-debug \
  --enable-dashboard-support \
  --enable-offline-web-applications \
  --enable-dom-storage \
  --enable-database \
  --enable-icon-database \
  --enable-video \
  --enable-xpath \
  --enable-xslt \
  --enable-svg \
  --enable-svg-animation \
  --enable-svg-filters \
  --enable-svg-fonts \
  --enable-svg-foreign-object \
  --enable-svg-as-image  \
  --enable-svg-use-element \
  --disable-coverage \
  --enable-fast-malloc \
  --with-target=x11 \
  --without-hildon \
  --with-http-backend=curl \
  --with-font-backend=pango
--------------------------------------------------------------
  ./autogen.sh --prefix=/usr \
  --enable-debug \
  --disable-dashboard-support \
  --disable-offline-web-applications \
  --disable-dom-storage \
  --disable-database \
  --disable-icon-database \
  --disable-video \
  --enable-xpath \
  --enable-xslt \
  --enable-svg \
  --disable-svg-animation \
  --disable-svg-filters \
  --disable-svg-fonts \
  --disable-svg-foreign-object \
  --disable-svg-as-image  \
  --disable-svg-use-element \
  --disable-coverage \
  --enable-fast-malloc \
  --with-target=x11 \
  --without-hildon \
  --with-http-backend=curl \
  --with-font-backend=pango</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127550</commentid>
    <comment_count>13</comment_count>
    <who name="Alexander Butenko">a.butenka</who>
    <bug_when>2009-06-22 20:09:51 -0700</bug_when>
    <thetext>webkit passing acid3 now. I think bug is already fixed. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127562</commentid>
    <comment_count>14</comment_count>
    <who name="Audren Cezar">audrencezar</who>
    <bug_when>2009-06-22 21:01:45 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; webkit passing acid3 now. I think bug is already fixed. 
&gt; 

Yes, I believe too.

Now I see 100/100 without crash!

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137060</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-08-04 11:00:45 -0700</bug_when>
    <thetext>It works for me too and I haven&apos;t heard of crashes for a long time now. Please reopen the bug if someone still see a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666199</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-25 13:48:25 -0700</bug_when>
    <thetext>*** Bug 18696 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>20523</attachid>
            <date>2008-04-14 02:54:55 -0700</date>
            <delta_ts>2008-04-14 02:54:55 -0700</delta_ts>
            <desc>modified acid3 test </desc>
            <filename>acid3mod.htm</filename>
            <type>text/html</type>
            <size>182533</size>
            <attacher name="wellofsouls">wellofsouls</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDov
L3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+DQo8aHRtbD4NCiA8dGl0bGU+VGhlIEFj
aWQzIFRlc3Q8L3RpdGxlPg0KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgdmFy
IHN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7DQogPC9zY3JpcHQ+DQogPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4NCg0KICAvKiBzZXQgc29tZSBiYXNpYyBzdHlsZXMgc28gdGhhdCB3ZSBjYW4gZ2V0IHJl
bGlhYmx5IGV4YWN0IHJlc3VsdHMgKi8NCiAgKiB7IG1hcmdpbjogMDsgYm9yZGVyOiAxcHggYmx1
ZTsgcGFkZGluZzogMDsgYm9yZGVyLXNwYWNpbmc6IDA7IGZvbnQ6IGluaGVyaXQ7IGxpbmUtaGVp
Z2h0OiAxLjI7IGNvbG9yOiBpbmhlcml0OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfQ0KICA6
bGluaywgOnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgfQ0KDQogIC8qIGhlYWRlciBhbmQgZ2VuZXJh
bCBsYXlvdXQgKi8NCiAgaHRtbCB7IGZvbnQ6IDIwcHggQXJpYWwsIHNhbnMtc2VyaWY7IGJvcmRl
cjogMmNtIHNvbGlkIGdyYXk7IHdpZHRoOiAzMmVtOyBtYXJnaW46IDFlbTsgfQ0KICA6cm9vdCB7
IGJhY2tncm91bmQ6IHNpbHZlcjsgY29sb3I6IGJsYWNrOyBib3JkZXItd2lkdGg6IDAgMC4yZW0g
MC4yZW0gMDsgfSAvKiBsZWZ0IGFuZCB0b3AgY29udGVudCBlZGdlczogMSoyMHB4ID0gMjBweCAq
Lw0KICBib2R5IHsgcGFkZGluZzogMmVtIDJlbSAwOyBiYWNrZ3JvdW5kOiB1cmwoYWNpZDNtb2Rf
ZmlsZXMvZ2lmMDAwMDAucG5nKSBuby1yZXBlYXQgOTkuODM5MjI4MyUgMXB4IHdoaXRlOyBib3Jk
ZXI6IHNvbGlkIDFweCBibGFjazsgbWFyZ2luOiAtMC4yZW0gMCAwIC0wLjJlbTsgfSAvKiBsZWZ0
IGFuZCB0b3AgY29udGVudCBlZGdlczogMjBweC0wLjIqMjBweCsxcHgrMioyMHB4ID0gNTdweCAq
Lw0KICBoMTpmaXJzdC1jaGlsZCB7IGN1cnNvcjogaGVscDsgZm9udC1zaXplOiA1ZW07IGZvbnQt
d2VpZ2h0OiBib2xkZXI7IG1hcmdpbi1ib3R0b206IC0wLjRlbTsgdGV4dC1zaGFkb3c6IHJnYmEo
MTkyLCAxOTIsIDE5MiwgMS4wKSAzcHggM3B4OyB9IC8qIChsZWZ0OjU3cHgsIHRvcDo1N3B4KSAq
Lw0KICAjcmVzdWx0IHsgZm9udC13ZWlnaHQ6IGJvbGRlcjsgd2lkdGg6IDUuNjhlbTsgdGV4dC1h
bGlnbjogcmlnaHQ7IH0NCiAgI3Jlc3VsdCB7IGZvbnQtc2l6ZTogNWVtOyBtYXJnaW46IC0yLjE5
ZW0gMCAwOyB9IC8qIChyaWdodDo1N3B4KzUuMio1KjIwcHggPSA1NzdweCwgdG9wOjU3cHgrMS4y
KjUqMjBweC0wLjQqNSoyMHB4KzFweCsxKjQwcHgrMSo0MHB4KzFweCsyKjQwcHgrMTUwcHgtMi4x
OSo1KjIwcHggPSAyMzBweCkgKi8NCiAgLmhpZGRlbiB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQ0K
ICAjc2xhc2ggeyBjb2xvcjogcmVkOyBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDEuMCk7IH0NCiAg
I2luc3RydWN0aW9ucyB7IG1hcmdpbi10b3A6IDA7IGZvbnQtc2l6ZTogMC44ZW07IGNvbG9yOiBn
cmF5OyBjb2xvcjogLWFjaWQzLWJvZ3VzOyBoZWlnaHQ6IDYuMTI1ZW07IH0gLyogKGxlZnQ6NTdw
eCwgdG9wOjIzMHB4KzEuMio1KjIwKzAgPSAzNTBweCkgKi8NCiAgI2luc3RydWN0aW9ucyB7IG1h
cmdpbi1yaWdodDogLTIwcHg7IHBhZGRpbmctcmlnaHQ6IDIwcHg7IGJhY2tncm91bmQ6IHVybChh
Y2lkM21vZF9maWxlcy9naWYwMDAwMC5wbmcpIG5vLXJlcGVhdCB0b3AgcmlnaHQ7IH0NCiAgI2lu
c3RydWN0aW9ucyBzcGFuIHsgZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMjBweDsgbWFyZ2luLXJpZ2h0
OiAtMjBweDsgYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDogMjBweDsgfQ0KICBAZm9udC1mYWNl
IHsgZm9udC1mYW1pbHk6ICJBY2lkQWhlbVRlc3QiOyBzcmM6IHVybChhY2lkM21vZF9maWxlcy9m
b250MDAwMC50dGYpOyB9DQogIG1hcDo6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MThweDsgbGVmdDogNjM4cHg7IGNvbnRlbnQ6ICJYIjsgYmFja2dyb3VuZDogZnVjaHNpYTsgY29s
b3I6IHdoaXRlOyBmb250OiAyMHB4LzEgQWNpZEFoZW1UZXN0OyB9DQogIGlmcmFtZSB7IGZsb2F0
OiBsZWZ0OyBoZWlnaHQ6IDA7IHdpZHRoOiAwOyB9IC8qIGhpZGUgaWZyYW1lcyBidXQgZG9uJ3Qg
bWFrZSB0aGVtIGRpc3BsYXk6IG5vbmUgKi8NCiAgb2JqZWN0IHsgcG9zaXRpb246IGZpeGVkOyBs
ZWZ0OiAxMzAuNXB4OyB0b3A6IDg0LjNweDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH0gLyog
c2hvdyBvYmplY3RzIGlmIHRoZXkgaGF2ZSBjb250ZW50ICovDQogIC5yZW1vdmVkIHsgcG9zaXRp
b246IGFic29sdXRlOyB0b3A6IDgwcHg7IGxlZnQ6IDM4MHB4OyBoZWlnaHQ6IDEwMHB4OyB3aWR0
aDogMTAwcHg7IG9wYWNpdHk6IDA7IH0NCg0KICAvKiBzZXQgdGhlIGxpbmUgaGVpZ2h0IG9mIHRo
ZSBsaW5lIG9mIGNvbG91cmVkIGJveGVzIHNvIHdlIGNhbiBhZGQgdGhlbSB3aXRob3V0IHRoZSBs
YXlvdXQgY2hhbmdpbmcgaGVpZ2h0ICovDQogIC5idWNrZXRzIHsgZm9udDogMC8wIEFyaWFsLCBz
YW5zLXNlcmlmOyB9DQogIC5idWNrZXRzIHsgcGFkZGluZzogMCAwIDE1MHB4IDNweDsgfQ0KDQog
IC8qIHRoZSBuZXh0IHR3byBydWxlcyBnaXZlIHRoZSBzaXggY29sb3VyZWQgYmxvY2tzIHRoZWly
IGRlZmF1bHQgc3R5bGVzICh0aGV5IG1hdGNoIHRoZSBzYW1lIGVsZW1lbnRzKTsgdGhlIHRoaXJk
IGhpZGVzIHRoZW0gKi8NCiAgOmZpcnN0LWNoaWxkICsgKiAuYnVja2V0cyBwIHsgZGlzcGxheTog
aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogMmVtOyBib3JkZXI6IDJlbSBkb3R0ZWQgcmVk
OyBwYWRkaW5nOiAxLjBlbSAwIDEuMGVtIDJlbTsgfQ0KICAqICsgKiA+ICogPiBwIHsgbWFyZ2lu
OiAwOyBib3JkZXI6IDFweCBzb2xpZCAhIGltcG9ydGFudDsgfQ0KICAueiB7IHZpc2liaWxpdHk6
IGhpZGRlbjsgfSAvKiBvbmx5IG1hdGNoZXMgdGhlIGJ1Y2tldHMgd2l0aCBubyBzY29yZSAqLw0K
DQogIC8qIHNpemVzIGZvciB0aGUgc2l4IGJ1Y2tldHMgKi8NCiAgI2J1Y2tldDEgeyBmb250LXNp
emU6IDIwcHg7IG1hcmdpbi1sZWZ0OiAwLjJlbTsgcGFkZGluZy1sZWZ0OiAxLjNlbTsgcGFkZGlu
Zy1yaWdodDogMS4zZW07IG1hcmdpbi1yaWdodDogMC4wMDAxcHg7IH0NCiAgI2J1Y2tldDIgeyBm
b250LXNpemU6IDI0cHg7IG1hcmdpbi1sZWZ0OiAwLjM3NWVtOyBwYWRkaW5nLWxlZnQ6IDMwcHg7
IHBhZGRpbmctcmlnaHQ6IDMycHg7IG1hcmdpbi1yaWdodDogMnB4OyB9DQogICNidWNrZXQzIHsg
Zm9udC1zaXplOiAyOHB4OyBtYXJnaW4tbGVmdDogOC45OTk5cHg7IHBhZGRpbmctbGVmdDogMTdw
eDsgcGFkZGluZy1yaWdodDogNTVweDsgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9DQogICNidWNrZXQ0
IHsgZm9udC1zaXplOiAzMnB4OyBtYXJnaW4tbGVmdDogMDsgcGFkZGluZy1sZWZ0OiA4NHB4OyBw
YWRkaW5nLXJpZ2h0OiAwOyBtYXJnaW4tcmlnaHQ6IDA7IH0NCiAgI2J1Y2tldDUgeyBmb250LXNp
emU6IDM2cHg7IG1hcmdpbi1sZWZ0OiAxM3B4OyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmln
aHQ6IDk0cHg7IG1hcmdpbi1yaWdodDogMjVweDsgfQ0KICAjYnVja2V0NiB7IGZvbnQtc2l6ZTog
NDBweDsgbWFyZ2luLWxlZnQ6IC0xMHB4OyBwYWRkaW5nLWxlZnQ6IDEwNHB4OyBwYWRkaW5nLXJp
Z2h0OiAtMTBweDsgfQ0KDQogIC8qIGNvbG91cnMgZm9yIHRoZW0gKi8NCiAgLnosIC56UCwgLnpQ
UCwgLnpQUFAsIC56UFBQUCwgLnpQUFBQUCB7IGJhY2tncm91bmQ6IGJsYWNrOyB9DQogIC56UFBQ
UFBQLCAuelBQUFBQUFAsIC56UFBQUFBQUFAsIC56UFBQUFBQUFAsIC56UFBQUFBQUFBQLA0KICAu
elBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBncmV5OyB9DQogIC56UFBQUFBQUFBQUFAsIC56UFBQ
UFBQUFBQUFBQLCAuelBQUFBQUFBQUFBQUFAsDQogIC56UFBQUFBQUFBQUFBQUFAsIC56UFBQUFBQ
UFBQUFBQUFBQIHsgYmFja2dyb3VuZDogc2lsdmVyOyB9DQogICNidWNrZXQxLnpQUFBQUFBQUFBQ
UFBQUFBQIHsgYmFja2dyb3VuZDogcmVkOyB9DQogICNidWNrZXQyLnpQUFBQUFBQUFBQUFBQUFBQ
IHsgYmFja2dyb3VuZDogb3JhbmdlOyB9DQogICNidWNrZXQzLnpQUFBQUFBQUFBQUFBQUFBQIHsg
YmFja2dyb3VuZDogeWVsbG93OyB9DQogICNidWNrZXQ0LnpQUFBQUFBQUFBQUFBQUFBQIHsgYmFj
a2dyb3VuZDogbGltZTsgfQ0KICAjYnVja2V0NS56UFBQUFBQUFBQUFBQUFBQUCB7IGJhY2tncm91
bmQ6IGJsdWU7IH0NCiAgI2J1Y2tldDYuelBQUFBQUFBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBw
dXJwbGU7IH0NCg0KICAvKiBUaGUgbGluZS1oZWlnaHQgZm9yIHRoZSAuYnVja2V0IGRpdiBpcyB3
b3JrZWQgb3V0IGFzIGZvbGxvd3M6DQogICAqDQogICAqIFRoZSBkaXYuYnVja2V0IGVsZW1lbnQg
aGFzIGEgbGluZSBib3ggd2l0aCBhIGZldw0KICAgKiBpbmxpbmUtYmxvY2tzLiBFYWNoIGlubGlu
ZS1ibG9jayBjb25zaXN0cyBvZjoNCiAgICoNCiAgICogICAgIDIuMGVtIHZlcnRpY2FsLWFsaWdu
IGZyb20gYmFzZWxpbmUgdG8gYm90dG9tIG9mIGlubGluZS1ibG9jaw0KICAgKiAgICAgMXB4IGJv
dHRvbSBib3JkZXINCiAgICogICAgIDEuMGVtIGJvdHRvbSBwYWRkaW5nDQogICAqICAgICAxLjBl
bSB0b3AgcGFkZGluZw0KICAgKiAgICAgMXB4IHRvcCBib3JkZXINCiAgICoNCiAgICogVGhlIGJp
Z2dlc3QgaW5saW5lLWJsb2NrIGhhcyBmb250LXNpemU6IDQwcHguDQogICAqDQogICAqIFRodXMg
dGhlIGRpc3RhbmNlIGZyb20gdGhlIGJhc2VsaW5lIHRvIHRoZSB0b3Agb2YgdGhlIGJpZ2dlc3QN
CiAgICogaW5saW5lLWJsb2NrIGlzICgyZW0rMWVtKzFlbSkqMmVtKjIwcHgrMnB4ID0gMTYycHgu
DQogICAqDQogICAqIFRoZSBsaW5lIGJveCBpdHNlbGYgaGFzIG5vIG90aGVyIGNvbnRlbnRzLCBh
bmQgaXRzIHN0cnV0IGhhcyB6ZXJvDQogICAqIGhlaWdodCBhbmQgdGhlcmUgaXMgbm8gaGFsZi1s
ZWFkaW5nLCBzbyB0aGUgaGVpZ2h0IG9mIHRoZQ0KICAgKiBkaXYuYnVja2V0IGlzIDE2MnB4Lg0K
ICAgKg0KICAgKiAoV2h5IHVzZSBsaW5lLWhlaWdodDowIGFuZCBmb250LXNpemU6MD8gV2VsbDoN
CiAgICoNCiAgICogVGhlIGRpdi5idWNrZXQgbGluZSBib3ggd291bGQgaGF2ZSBhIGhlaWdodCB0
aGF0IGlzIHRoZSBtYXhpbXVtDQogICAqIG9mIHRoZSBmb2xsb3dpbmcgdHdvIHN1bXM6DQogICAq
DQogICAqICAxOiBoYWxmLWxlYWRpbmcgKyBmb250IGRlc2NlbnQgYXQgMWVtICsgZm9udCBhc2Nl
bnQgYXQgMWVtICsgaGFsZi1sZWFkaW5nDQogICAqICAyOiBoYWxmLWxlYWRpbmcgKyBmb250IGRl
c2NlbnQgYXQgMWVtICsgMTYycHggDQogICAqDQogICAqIE5vdyB0aGUgaGFsZi1sZWFkaW5nIGlz
IChsaW5lLWhlaWdodCAtIChmb250LWFzY2VudCArIGZvbnQtZGVzY2VudCkpLzIsIHNvIHRoYXQg
aXMgcmVhbGx5Og0KICAgKg0KICAgKiAgMTogKGxpbmUtaGVpZ2h0IC0gKGZvbnQtYXNjZW50ICsg
Zm9udC1kZXNjZW50KSkvMiArIGZvbnQgZGVzY2VudCArIGZvbnQgYXNjZW50ICsgKGxpbmUtaGVp
Z2h0IC0gKGZvbnQtYXNjZW50ICsgZm9udC1kZXNjZW50KSkvMg0KICAgKiAgMjogKGxpbmUtaGVp
Z2h0IC0gKGZvbnQtYXNjZW50ICsgZm9udC1kZXNjZW50KSkvMiArIGZvbnQgZGVzY2VudCArIDE2
MnB4DQogICAqDQogICAqIFdoaWNoIHNpbXBsaWZ5IHRvOg0KICAgKg0KICAgKiAgMTogbGluZS1o
ZWlnaHQNCiAgICogIDI6IGxpbmUtaGVpZ2h0LzIgKyAoZm9udCBkZXNjZW50IC0gZm9udC1hc2Nl
bnQpLzIgKyAxNjJweA0KICAgKg0KICAgKiBTbyBpZiB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24g
aXMgdHJ1ZToNCiAgICoNCiAgICogICAgbGluZS1oZWlnaHQgPiBsaW5lLWhlaWdodC8yICsgKGZv
bnQgZGVzY2VudCAtIGZvbnQtYXNjZW50KS8yICsgMTYycHgNCiAgICoNCiAgICogVGhhdCBpcywg
aWYgdGhpcyBpcyB0cnVlOg0KICAgKg0KICAgKiAgICBsaW5lLWhlaWdodCA+IGZvbnQgZGVzY2Vu
dCAtIGZvbnQtYXNjZW50ICsgMzI0cHgNCiAgICoNCiAgICogLi4udGhlbiB0aGUgbGluZS1oZWln
aHQgbWF0dGVycywgb3RoZXJ3aXNlIHRoZSBmb250IGRvZXMuIE5vdGUNCiAgICogdGhhdCBmb250
IGRlc2NlbnQgLSBmb250LWFzY2VudCB3aWxsIGJlIGluIHRoZSByZWdpb24gb2YNCiAgICogMTBw
eC0zMHB4ICh3aXRoIEFoZW0sIGV4YWN0bHkgMTJweCkuIEhvd2V2ZXIsIGlmIHdlIG1ha2UgdGhl
DQogICAqIGxpbmUtaGVpZ2h0IGJpZywgdGhlbiB0aGUgX3Bvc2l0aW9uaW5nXyBvZiB0aGUgaW5s
aW5lLWJsb2NrcyB3aWxsDQogICAqIGRlcGVuZCBvbiB0aGUgZm9udCBkZXNjZW50LCBzaW5jZSB0
aGF0IGlzIHdoYXQgd2lsbCBkZWNpZGUgdGhlDQogICAqIGRpc3RhbmNlIGZyb20gdGhlIGJvdHRv
bSBvZiB0aGUgbGluZSBib3ggdG8gdGhlIGJhc2VsaW5lIG9mIHRoZQ0KICAgKiBibG9jayAoc2lu
Y2UgdGhlIGJhc2VsaW5lIGlzIHNldCBieSB0aGUgc3RydXQpLg0KICAgKg0KICAgKiBIb3dldmVy
LCBpbiBBY2lkMiBhIGRlcGVuZGVuY3kgb24gdGhlIGZvbnQgbWV0cmljcyB3YXMgaW50cm9kdWNl
ZA0KICAgKiBhbmQgdGhpcyBjYXVzZWQgYWxsIGtpbmRzIG9mIHByb2JsZW1zLiBBbmQgd2UgY2Fu
J3QgcmVxdWlyZSBBaGVtDQogICAqIGluIHRoZSBBY2lkIHRlc3RzLCBzaW5jZSBpdCdzIHVubGlr
ZWx5IG1vc3QgcGVvcGxlIHdpbGwgaGF2ZSBpdA0KICAgKiBpbnN0YWxsZWQuDQogICAqDQogICAq
IFdoYXQgd2Ugd2FudCBpcyBmb3IgdGhlIGZvbnQgdG8gbm90IG1hdHRlciwgYW5kIHRoZSBiYXNl
bGluZSB0bw0KICAgKiBiZSBhcyBoaWdoIGFzIHBvc3NpYmxlLiBXZSBjYW4gZG8gdGhhdCBieSBz
YXlpbmcgdGhhdCB0aGUgZm9udA0KICAgKiBhbmQgdGhlIGxpbmUtaGVpZ2h0IGFyZSB6ZXJvLg0K
ICAgKg0KICAgKiBPbmUgd29yZCBvZiB3YXJuaW5nLiBJZiB5b3VyIGJyb3dzZXIgaGFzIGEgbWlu
aW11bSBmb250IHNpemUgZmVhdHVyZQ0KICAgKiB0aGF0IGZvcmNlcyBmb250IHNpemVzIHVwIGV2
ZW4gd2hlbiB0aGVyZSBpcyBubyB0ZXh0LCB5b3Ugd2lsbCBuZWVkDQogICAqIHRvIGRpc2FibGUg
aXQgYmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0Lg0KICAgKg0KICAgKi8NCg0KICAvKiBydWxlcyBz
cGVjaWZpYyB0byB0aGUgdGVzdHMgYmVsb3cgKi8NCiAgI2luc3RydWN0aW9uczpsYXN0LWNoaWxk
IHsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3aGl0ZS1zcGFjZTogeC1ib2d1czsgfQ0KICAjbGlu
a3Rlc3Q6bGluayB7IGRpc3BsYXk6IGJsb2NrOyBjb2xvcjogcmVkOyB0ZXh0LWFsaWduOiBjZW50
ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KICAjbGlua3Rlc3QucGVuZGluZywgI2xpbmt0
ZXN0OnZpc2l0ZWQgeyBkaXNwbGF5OiBub25lOyB9DQogICNcIHsgY29sb3I6IHRyYW5zcGFyZW50
OyBjb2xvcjogaHNsYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDEwcHg7IGxl
ZnQ6IDEwcHg7IGZvbnQ6IDQwcHggQXJpYWwsIHNhbnMtc2VyaWY7IH0NCiAgI1wgICNyZXN1bHQs
ICNcICAjc2NvcmUgeyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTAlOyBsZWZ0OiAxMCU7IHdpZHRo
OiA0ZW07IHotaW5kZXg6IDE7IGNvbG9yOiB5ZWxsb3c7IGZvbnQtc2l6ZTogNTBweDsgYmFja2dy
b3VuZDogZnVjaHNpYTsgYm9yZGVyOiBzb2xpZCAxZW0gcHVycGxlOyB9DQogPC9zdHlsZT4NCg0K
IDwhLS0gcGFydCBvZiB0aGUgSFRUUCB0ZXN0cyAtLT4NCiA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9ImFjaWQzbW9kX2ZpbGVzL2VtcHR5MDAwLmh0bSI+PCEtLSB0ZXh0L2h0bWwgZmlsZSAo
c2hvdWxkIGJlIGlnbm9yZWQsIDxoMT4gd2lsbCBnbyByZWQgaWYgaXQgaXNuJ3QpIC0tPg0KDQog
PCEtLSB0aGUgbmV4dCBmaXZlIHNjcmlwdCBibG9ja3MgYXJlIHBhcnQgb2Ygb25lIG9mIHRoZSB0
ZXN0cyAtLT4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogIHZhciBkMSA9ICJm
YWlsIjsNCiAgdmFyIGQyID0gImZhaWwiOw0KICB2YXIgZDMgPSAiZmFpbCI7DQogIHZhciBkNCA9
ICJmYWlsIjsNCiAgdmFyIGQ1ID0gImZhaWwiOw0KIDwvc2NyaXB0Pg0KIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFjaWQzbW9kX2ZpbGVzL2phdmFzY3JpLmpzIj48L3Njcmlw
dD4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhY2lkM21vZF9maWxlcy9q
YXZhc2Nyai5qcyI+PC9zY3JpcHQ+DQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iYWNpZDNtb2RfZmlsZXMvamF2YXNjcmsuanMiPjwvc2NyaXB0Pg0KIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFjaWQzbW9kX2ZpbGVzL2phdmFzY3JsLmpzIj48L3Njcmlw
dD4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhY2lkM21vZF9maWxlcy9q
YXZhc2NybS5qcyI+PC9zY3JpcHQ+DQoNCiA8IS0tIHBhcnQgb2YgdGhlIEpTIHJlZ2V4cCBhbmQg
XDAgdmFsdWUgdGVzdHMgdGVzdCAtLT4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
DQogIHZhciBudWxsSW5SZWdleHBBcmd1bWVudFJlc3VsdCA9IDAgPCAvc2NyaXB0Ly50ZXN0KCdc
MHNjcmlwdCcpID8gInBhc3NlZCIgOiAiZmFpbGVkIjsNCiA8L3NjcmlwdD4NCg0KIDwhLS0gbWFp
biB0ZXN0IGJvZHkgLS0+DQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICB2YXIg
bm90aWZpY2F0aW9ucyA9IHt9Ow0KICBmdW5jdGlvbiBub3RpZnkoZmlsZSkgew0KICAgIC8vIHVz
ZWQgaW4gY3Jvc3MtZmlsZSB0ZXN0cw0KICAgIG5vdGlmaWNhdGlvbnNbZmlsZV0gPSAxOw0KICB9
DQogIGZ1bmN0aW9uIGZhaWwobWVzc2FnZSkgew0KICAgIHRocm93IHsgbWVzc2FnZTogbWVzc2Fn
ZSB9Ow0KICB9DQogIGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHsNCiAgICBp
ZiAoIWNvbmRpdGlvbikNCiAgICAgIGZhaWwobWVzc2FnZSk7DQogIH0NCiAgZnVuY3Rpb24gYXNz
ZXJ0RXF1YWxzKGV4cHJlc3Npb24sIHZhbHVlLCBtZXNzYWdlKSB7DQogICAgaWYgKGV4cHJlc3Np
b24gIT0gdmFsdWUpIHsNCiAgICAgIGV4cHJlc3Npb24gPSAoIiIrZXhwcmVzc2lvbikucmVwbGFj
ZSgvW1xyXG5dKy9nLCAiXFxuIik7DQogICAgICB2YWx1ZSA9ICgiIit2YWx1ZSkucmVwbGFjZSgv
XHI/XG4vZywgIlxcbiIpOw0KICAgICAgZmFpbCgiZXhwZWN0ZWQgJyIgKyB2YWx1ZSArICInIGJ1
dCBnb3QgJyIgKyBleHByZXNzaW9uICsgIicgLSAiICsgbWVzc2FnZSk7DQogICAgfQ0KICB9DQog
IGZ1bmN0aW9uIGdldFRlc3REb2N1bWVudCgpIHsNCiAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNlbGVjdG9ycyIpOw0KICAgIHZhciBkb2MgPSBpZnJhbWUuY29udGVu
dERvY3VtZW50Ow0KICAgIGZvciAodmFyIGkgPSBkb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9k
ZXMubGVuZ3RoLTE7IGkgPj0gMDsgaSAtPSAxKQ0KICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5y
ZW1vdmVDaGlsZChkb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXNbaV0pOw0KICAgIGRvYy5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnQoJ2hlYWQnKSk7DQog
ICAgZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVF
bGVtZW50KCd0aXRsZScpKTsNCiAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRv
Yy5jcmVhdGVFbGVtZW50KCdib2R5JykpOw0KICAgIHJldHVybiBkb2M7DQogIH0NCiAgZnVuY3Rp
b24gc2VsZWN0b3JUZXN0KHRlc3Rlcikgew0KICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQo
KTsNCiAgICB2YXIgc3R5bGUgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsNCiAgICBzdHls
ZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIiogeyB6LWluZGV4OiAwOyBwb3NpdGlv
bjogYWJzb2x1dGU7IH1cbiIpKTsNCiAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQu
YXBwZW5kQ2hpbGQoc3R5bGUpOw0KICAgIHZhciBydWxlQ291bnQgPSAwOw0KICAgIHRlc3Rlcihk
b2MsIGZ1bmN0aW9uIChzZWxlY3Rvcikgew0KICAgICAgICBydWxlQ291bnQgKz0gMTsNCiAgICAg
ICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHNlbGVjdG9yICsgIiB7IHot
aW5kZXg6ICIgKyBydWxlQ291bnQgKyAiOyB9XG4iKSk7DQogICAgICAgIHJldHVybiBydWxlQ291
bnQ7DQogICAgICB9LCBmdW5jdGlvbihub2RlLCBydWxlLCBtZXNzYWdlKSB7DQogICAgICAgIHZh
ciB2YWx1ZSA9IGRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsICIiKS56SW5k
ZXg7DQogICAgICAgIGFzc2VydCh2YWx1ZSAhPSAnYXV0bycsICJ1bmRlcmx5aW5nIHByb2JsZW1z
IHByZXZlbnQgdGhpcyB0ZXN0IGZyb20gcnVubmluZyBwcm9wZXJseSIpOw0KICAgICAgICBhc3Nl
cnRFcXVhbHModmFsdWUsIHJ1bGUsIG1lc3NhZ2UpOw0KICAgIH0pOw0KICB9DQogIHZhciBrdW5n
RnVEZWF0aEdyaXAgPSBudWxsOyAvLyB1c2VkIHRvIGhvbGQgdGhpbmdzIGZyb20gdGVzdCB0byB0
ZXN0DQogIHZhciB0ZXN0cyA9IFsNCg0KICAgIC8vIHRoZXJlIGFyZSA2IGJ1Y2tldHMgd2l0aCAx
NiB0ZXN0cyBlYWNoLCBwbHVzIGZvdXIgc3BlY2lhbCB0ZXN0cyAoMCwgOTcsIDk4LCBhbmQgOTkp
Lg0KDQogICAgLy8gUmVtb3ZlIHRoZSAiSlMgcmVxdWlyZWQiIG1lc3NhZ2UgYW5kIHRoZSA8c2Ny
aXB0PiBlbGVtZW50IGluIHRoZSA8Ym9keT4NCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0
ZXN0IDA6IHdoZXRoZXIgcmVtb3ZpbmcgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBsYXN0IGNoaWxk
IGNvcnJlY3RseSByZWNvbXB1dGVzIHN0eWxlcyBmb3IgdGhlIG5ldyBsYXN0IGNoaWxkDQogICAg
ICAvLyBhbHNvIHRlc3RzIHN1cHBvcnQgZm9yIGdldENvbXB1dGVkU3R5bGUsIDpsYXN0LWNoaWxk
LCBwcmUtd3JhcCwgcmVtb3ZpbmcgYSA8c2NyaXB0PiBlbGVtZW50DQogICAgICAvLyByZW1vdmlu
ZyBzY3JpcHQ6DQogICAgICB2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdzY3JpcHQnKTsNCiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2NyaXB0c1tz
Y3JpcHRzLmxlbmd0aC0xXSk7DQogICAgICAvLyByZW1vdmluZyBsYXN0IGNoaWxkOg0KICAgICAg
dmFyIGxhc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVtb3ZlLWxhc3QtY2hpbGQtdGVz
dCcpOw0KICAgICAgdmFyIHBlbnVsdGltYXRlID0gbGFzdC5wcmV2aW91c1NpYmxpbmc7IC8vIHRo
aXMgc2hvdWxkIGJlIHRoZSB3aGl0ZXNwYWNlIG5vZGUNCiAgICAgIHBlbnVsdGltYXRlID0gcGVu
dWx0aW1hdGUucHJldmlvdXNTaWJsaW5nOyAvLyB0aGlzIHNob3VsZCBub3cgYmUgdGhlIGFjdHVh
bCBwZW51bHRpbWF0ZSBlbGVtZW50DQogICAgICBsYXN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
bGFzdCk7DQogICAgICBhc3NlcnRFcXVhbHMoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShwZW51bHRpbWF0ZSwgJycpLndoaXRlU3BhY2UsICdwcmUtd3JhcCcsICJmb3VuZCB1
bmV4cGVjdGVkIGNvbXB1dGVkIHN0eWxlIik7DQogICAgICByZXR1cm4gNzsNCiAgICB9LA0KDQog
ICAgLy8gYnVja2V0IDE6IERPTSBUcmF2ZXJzYWwsIERPTSBSYW5nZSwgSFRUUA0KICAgIC8vIERP
TSBUcmF2ZXJzYWwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDE6IE5vZGVGaWx0
ZXJzIGFuZCBFeGNlcHRpb25zDQogICAgICB2YXIgZG9jID0gZ2V0VGVzdERvY3VtZW50KCk7IC8v
IGxvb2tzIGxpa2UgPCFET0NUWVBFPjxodG1sPjxoZWFkPjx0aXRsZS8+PFxoZWFkPjxib2R5Lz48
XGh0bWw+ICAgICAodGhlICdcJ3MgYXJlIHRvIGF2b2lkIHZhbGlkYXRpb24gZXJyb3JzKQ0KICAg
ICAgdmFyIGl0ZXJhdGlvbiA9IDA7DQogICAgICB2YXIgZXhjZXB0aW9uID0gIlJvc2VzIjsNCiAg
ICAgIHZhciB0ZXN0ID0gZnVuY3Rpb24obm9kZSkgew0KICAgICAgICBpdGVyYXRpb24gKz0gMTsN
CiAgICAgICAgc3dpdGNoIChpdGVyYXRpb24pIHsNCiAgICAgICAgICBjYXNlIDE6IGNhc2UgMzog
Y2FzZSA0OiBjYXNlIDY6IGNhc2UgNzogY2FzZSA4OiBjYXNlIDk6IGNhc2UgMTQ6IGNhc2UgMTU6
IHRocm93IGV4Y2VwdGlvbjsNCiAgICAgICAgICBjYXNlIDI6IGNhc2UgNTogY2FzZSAxMDogY2Fz
ZSAxMTogY2FzZSAxMjogY2FzZSAxMzogcmV0dXJuIHRydWU7IC8vIFRvTnVtYmVyKHRydWUpID0+
IDENCiAgICAgICAgICBkZWZhdWx0OiB0aHJvdyAwOw0KICAgICAgICB9Ow0KICAgICAgfTsNCiAg
ICAgIHZhciBjaGVjayA9IGZ1bmN0aW9uKG8sIG1ldGhvZCkgew0KICAgICAgICB2YXIgb2sgPSBm
YWxzZTsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICBvW21ldGhvZF0oKTsNCiAgICAgICAgfSBj
YXRjaCAoZSkgew0KICAgICAgICAgIGlmIChlID09PSBleGNlcHRpb24pDQogICAgICAgICAgICBv
ayA9IHRydWU7DQogICAgICAgIH0NCiAgICAgICAgYXNzZXJ0KG9rLCAibWV0aG9kICIgKyBvICsg
Ii4iICsgbWV0aG9kICsgIigpIGRpZG4ndCBmb3J3YXJkIGV4Y2VwdGlvbiIpOw0KICAgICAgfTsN
CiAgICAgIHZhciBpID0gZG9jLmNyZWF0ZU5vZGVJdGVyYXRvcihkb2MuZG9jdW1lbnRFbGVtZW50
LCAweEZGRkZGRkZGLCB0ZXN0LCB0cnVlKTsNCiAgICAgIGNoZWNrKGksICJuZXh0Tm9kZSIpOyAv
LyAxDQogICAgICBhc3NlcnRFcXVhbHMoaS5uZXh0Tm9kZSgpLCBkb2MuZG9jdW1lbnRFbGVtZW50
LCAiaS5uZXh0Tm9kZSgpIGRpZG4ndCByZXR1cm4gdGhlIHJpZ2h0IG5vZGUiKTsgLy8gMg0KICAg
ICAgY2hlY2soaSwgInByZXZpb3VzTm9kZSIpOyAvLyAzDQogICAgICB2YXIgdyA9IGRvY3VtZW50
LmNyZWF0ZVRyZWVXYWxrZXIoZG9jLmRvY3VtZW50RWxlbWVudCwgMHhGRkZGRkZGRiwgdGVzdCwg
dHJ1ZSk7DQogICAgICBjaGVjayh3LCAibmV4dE5vZGUiKTsgLy8gNA0KICAgICAgYXNzZXJ0RXF1
YWxzKHcubmV4dE5vZGUoKSwgZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLCAidy5uZXh0
Tm9kZSgpIGRpZG4ndCByZXR1cm4gdGhlIHJpZ2h0IG5vZGUiKTsgLy8gNQ0KICAgICAgY2hlY2so
dywgInByZXZpb3VzTm9kZSIpOyAvLyA2DQogICAgICBjaGVjayh3LCAiZmlyc3RDaGlsZCIpOyAv
LyA3DQogICAgICBjaGVjayh3LCAibGFzdENoaWxkIik7IC8vIDgNCiAgICAgIGNoZWNrKHcsICJu
ZXh0U2libGluZyIpOyAvLyA5DQogICAgICBhc3NlcnRFcXVhbHMoaXRlcmF0aW9uLCA5LCAiaXRl
cmF0aW9ucyB3ZW50IHdyb25nIik7DQogICAgICBhc3NlcnRFcXVhbHMody5wcmV2aW91c1NpYmxp
bmcoKSwgbnVsbCwgIncucHJldmlvdXNTaWJsaW5nKCkgZGlkbid0IHJldHVybiB0aGUgcmlnaHQg
bm9kZSIpOyAvLyBkb2Vzbid0IGNhbGwgZmlsdGVyDQogICAgICBhc3NlcnRFcXVhbHMoaXRlcmF0
aW9uLCA5LCAiZmlsdGVyIGNhbGxlZCBpbmNvcnJlY3RseSBmb3IgcHJldmlvdXNTaWJsaW5nKCki
KTsNCiAgICAgIGFzc2VydEVxdWFscyh3Lmxhc3RDaGlsZCgpLCBkb2MuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3RpdGxlJylbMF0sICJ3Lmxhc3RDaGlsZCgpIGRpZG4ndCByZXR1cm4gdGhlIHJpZ2h0
IG5vZGUiKTsgLy8gMTANCiAgICAgIGFzc2VydEVxdWFscyh3Lm5leHRTaWJsaW5nKCksIG51bGws
ICJ3Lm5leHRTaWJsaW5nKCkgZGlkbid0IHJldHVybiB0aGUgcmlnaHQgbm9kZSIpOyAvLyAxMSAo
ZmlsdGVyIGNhbGxlZCBvbiBwYXJlbnQsIHRvIHNlZSBpZiBpdCdzIGluY2x1ZGVkLCBvdGhlcndp
c2UgaXQgY291bGQgc2tpcCB0aGF0IGFuZCBmaW5kIGEgbmV4dHNpYmxpbmcgZWxzZXdoZXJlKQ0K
ICAgICAgYXNzZXJ0RXF1YWxzKGl0ZXJhdGlvbiwgMTEsICJmaWx0ZXIgY2FsbGVkIGluY29ycmVj
dGx5IGZvciBuZXh0U2libGluZygpIik7DQogICAgICBhc3NlcnRFcXVhbHMody5wYXJlbnROb2Rl
KCksIGRvYy5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZCwgIncucGFyZW50Tm9kZSgpIGRpZG4n
dCByZXR1cm4gdGhlIHJpZ2h0IG5vZGUiKTsgLy8gMTINCiAgICAgIGFzc2VydEVxdWFscyh3Lm5l
eHRTaWJsaW5nKCksIGRvYy5kb2N1bWVudEVsZW1lbnQubGFzdENoaWxkLCAidy5uZXh0U2libGlu
ZygpIGRpZG4ndCByZXR1cm4gdGhlIHJpZ2h0IG5vZGUiKTsgLy8gMTMNCiAgICAgIGNoZWNrKHcs
ICJwcmV2aW91c1NpYmxpbmciKTsgLy8gMTQNCiAgICAgIGNoZWNrKHcsICJwYXJlbnROb2RlIik7
IC8vIDE1DQogICAgICByZXR1cm4gMTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAg
IC8vIHRlc3QgMjogUmVtb3Zpbmcgbm9kZXMgZHVyaW5nIGl0ZXJhdGlvbg0KICAgICAgdmFyIGNv
dW50ID0gMDsNCiAgICAgIHZhciBleHBlY3QgPSBmdW5jdGlvbihuLCBub2RlMSwgbm9kZTIpIHsN
CiAgICAgICAgY291bnQgKz0gMTsNCiAgICAgICAgYXNzZXJ0KG4gPT0gY291bnQsICJyZWFjaGVk
IGV4cGVjdGF0aW9uICIgKyBuICsgIiB3aGVuIGV4cGVjdGluZyBleHBlY3RhdGlvbiAiICsgY291
bnQpOw0KICAgICAgICBhc3NlcnRFcXVhbHMobm9kZTEsIG5vZGUyLCAiZXhwZWN0YXRpb24gIiAr
IGNvdW50ICsgIiBmYWlsZWQiKTsNCiAgICAgIH07DQogICAgICB2YXIgZG9jID0gZ2V0VGVzdERv
Y3VtZW50KCk7DQogICAgICB2YXIgdDEgPSBkb2MuYm9keS5hcHBlbmRDaGlsZChkb2MuY3JlYXRl
RWxlbWVudCgndDEnKSk7DQogICAgICB2YXIgdDIgPSBkb2MuYm9keS5hcHBlbmRDaGlsZChkb2Mu
Y3JlYXRlRWxlbWVudCgndDInKSk7DQogICAgICB2YXIgdDMgPSBkb2MuYm9keS5hcHBlbmRDaGls
ZChkb2MuY3JlYXRlRWxlbWVudCgndDMnKSk7DQogICAgICB2YXIgdDQgPSBkb2MuYm9keS5hcHBl
bmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgndDQnKSk7DQogICAgICB2YXIgY2FsbENvdW50ID0g
MDsNCiAgICAgIHZhciBmaWx0ZXJGdW5jdGlvbnMgPSBbDQogICAgICAgIGZ1bmN0aW9uIChub2Rl
KSB7IGV4cGVjdCgxLCBub2RlLCBkb2MuYm9keSk7IHJldHVybiB0cnVlOyB9LCAvLyBmaWx0ZXIg
MA0KICAgICAgICBmdW5jdGlvbiAobm9kZSkgeyBleHBlY3QoMywgbm9kZSwgdDEpOyByZXR1cm4g
dHJ1ZTsgfSwgLy8gZmlsdGVyIDENCiAgICAgICAgZnVuY3Rpb24gKG5vZGUpIHsgZXhwZWN0KDUs
IG5vZGUsIHQyKTsgcmV0dXJuIHRydWU7IH0sIC8vIGZpbHRlciAyDQogICAgICAgIGZ1bmN0aW9u
IChub2RlKSB7IGV4cGVjdCg3LCBub2RlLCB0Myk7IGRvYy5ib2R5LnJlbW92ZUNoaWxkKHQ0KTsg
cmV0dXJuIHRydWU7IH0sIC8vIGZpbHRlciAzDQogICAgICAgIGZ1bmN0aW9uIChub2RlKSB7IGV4
cGVjdCg5LCBub2RlLCB0NCk7IHJldHVybiB0cnVlOyB9LCAvLyBmaWx0ZXIgNA0KICAgICAgICBm
dW5jdGlvbiAobm9kZSkgeyBleHBlY3QoMTEsIG5vZGUsIHQ0KTsgZG9jLmJvZHkucmVtb3ZlQ2hp
bGQodDQpOyByZXR1cm4gMiAvKiBSRUpFQ1QgKi87IH0sIC8vIGZpbHRlciA1DQogICAgICAgIGZ1
bmN0aW9uIChub2RlKSB7IGV4cGVjdCgxMiwgbm9kZSwgdDMpOyByZXR1cm4gdHJ1ZTsgfSwgLy8g
ZmlsdGVyIDYNCiAgICAgICAgZnVuY3Rpb24gKG5vZGUpIHsgZXhwZWN0KDE0LCBub2RlLCB0Mik7
IGRvYy5ib2R5LnJlbW92ZUNoaWxkKHQyKTsgcmV0dXJuIHRydWU7IH0sIC8vIGZpbHRlciA3DQog
ICAgICAgIGZ1bmN0aW9uIChub2RlKSB7IGV4cGVjdCgxNiwgbm9kZSwgdDEpOyByZXR1cm4gdHJ1
ZTsgfSwgLy8gZmlsdGVyIDgNCiAgICAgIF07DQogICAgICB2YXIgaSA9IGRvYy5jcmVhdGVOb2Rl
SXRlcmF0b3IoZG9jLmRvY3VtZW50RWxlbWVudC5sYXN0Q2hpbGQsIDB4RkZGRkZGRkYsIGZ1bmN0
aW9uIChub2RlKSB7IHJldHVybiBmaWx0ZXJGdW5jdGlvbnNbY2FsbENvdW50KytdKG5vZGUpOyB9
LCB0cnVlKTsNCiAgICAgIC8vICogQiAxIDIgMyA0DQogICAgICBleHBlY3QoMiwgaS5uZXh0Tm9k
ZSgpLCBkb2MuYm9keSk7IC8vIGZpbHRlciAwDQogICAgICAvLyBbQl0gKiAxIDIgMyA0ICAgICAN
CiAgICAgIGV4cGVjdCg0LCBpLm5leHROb2RlKCksIHQxKTsgLy8gZmlsdGVyIDENCiAgICAgIC8v
IEIgWzFdICogMiAzIDQNCiAgICAgIGV4cGVjdCg2LCBpLm5leHROb2RlKCksIHQyKTsgLy8gZmls
dGVyIDINCiAgICAgIC8vIEIgMSBbMl0gKiAzIDQNCiAgICAgIGV4cGVjdCg4LCBpLm5leHROb2Rl
KCksIHQzKTsgLy8gZmlsdGVyIDMNCiAgICAgIC8vIEIgMSAyIFszXSAqDQogICAgICBkb2MuYm9k
eS5hcHBlbmRDaGlsZCh0NCk7DQogICAgICAvLyBCIDEgMiBbM10gKiA0DQogICAgICBleHBlY3Qo
MTAsIGkubmV4dE5vZGUoKSwgdDQpOyAvLyBmaWx0ZXIgNA0KICAgICAgLy8gQiAxIDIgMyBbNF0g
Kg0KICAgICAgZXhwZWN0KDEzLCBpLnByZXZpb3VzTm9kZSgpLCB0Myk7IC8vIGZpbHRlcnMgNSwg
Ng0KICAgICAgICAvLyBCIDEgMiAzICogKDQpIC8vIGZpbHRlciA1DQogICAgICAgIC8vIEIgMSAy
IFszXSAqICAgLy8gYmV0d2VlbiA1IGFuZCA2DQogICAgICAgIC8vIEIgMSAyICogKDMpICAgLy8g
ZmlsdGVyIDYNCiAgICAgIC8vIEIgMSAyICogWzNdDQogICAgICBleHBlY3QoMTUsIGkucHJldmlv
dXNOb2RlKCksIHQyKTsgLy8gZmlsdGVyIDcNCiAgICAgICAgLy8gQiAxICogKDIpIFszXQ0KICAg
ICAgICAvLyAtLSBzcGVjIHNheXMgIkZvciBpbnN0YW5jZSwgaWYgYSBOb2RlRmlsdGVyIHJlbW92
ZXMgYSBub2RlDQogICAgICAgIC8vICAgIGZyb20gYSBkb2N1bWVudCwgaXQgY2FuIHN0aWxsIGFj
Y2VwdCB0aGUgbm9kZSwgd2hpY2gNCiAgICAgICAgLy8gICAgbWVhbnMgdGhhdCB0aGUgbm9kZSBt
YXkgYmUgcmV0dXJuZWQgYnkgdGhlIE5vZGVJdGVyYXRvcg0KICAgICAgICAvLyAgICBvciBUcmVl
V2Fsa2VyIGV2ZW4gdGhvdWdoIGl0IGlzIG5vIGxvbmdlciBpbiB0aGUgc3VidHJlZQ0KICAgICAg
ICAvLyAgICBiZWluZyB0cmF2ZXJzZWQuIg0KICAgICAgICAvLyAtLSBidXQgaXQgYWxzbyBzYXlz
ICJJZiBjaGFuZ2VzIHRvIHRoZSBpdGVyYXRlZCBsaXN0IGRvIG5vdA0KICAgICAgICAvLyAgICBy
ZW1vdmUgdGhlIHJlZmVyZW5jZSBub2RlLCB0aGV5IGRvIG5vdCBhZmZlY3QgdGhlIHN0YXRlDQog
ICAgICAgIC8vICAgIG9mIHRoZSBOb2RlSXRlcmF0b3IuIg0KICAgICAgLy8gQiAxICogWzNdDQog
ICAgICBleHBlY3QoMTcsIGkucHJldmlvdXNOb2RlKCksIHQxKTsgLy8gZmlsdGVyIDgNCiAgICAg
IC8vIEIgWzFdICogMw0KICAgICAgcmV0dXJuIDE7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7
DQogICAgICAvLyB0ZXN0IDM6IHRoZSBpbmZpbml0ZSBpdGVyYXRvcg0KICAgICAgdmFyIGRvYyA9
IGdldFRlc3REb2N1bWVudCgpOw0KICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpICs9IDEp
IHsNCiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnQoJ3NlY3Rp
b24nKSk7DQogICAgICAgIGRvYy5ib2R5Lmxhc3RDaGlsZC50aXRsZSA9IGk7DQogICAgICB9DQog
ICAgICB2YXIgY291bnQgPSAwOw0KICAgICAgdmFyIHRlc3QgPSBmdW5jdGlvbigpIHsNCiAgICAg
ICAgaWYgKGNvdW50ID4gMyAmJiBjb3VudCA8IDEyKQ0KICAgICAgICAgIGRvYy5ib2R5LmFwcGVu
ZENoaWxkKGRvYy5ib2R5LmZpcnN0Q2hpbGQpOw0KICAgICAgICBjb3VudCArPSAxOw0KICAgICAg
ICByZXR1cm4gKGNvdW50ICUgMiA9PSAwKSA/IDEgOiAyOw0KICAgICAgfTsNCiAgICAgIHZhciBp
ID0gZG9jLmNyZWF0ZU5vZGVJdGVyYXRvcihkb2MuYm9keSwgMHhGRkZGRkZGRiwgdGVzdCwgdHJ1
ZSk7DQogICAgICBhc3NlcnRFcXVhbHMoaS5uZXh0Tm9kZSgpLnRpdGxlLCAiMCIsICJmYWlsdXJl
IDEiKTsNCiAgICAgIGFzc2VydEVxdWFscyhpLm5leHROb2RlKCkudGl0bGUsICIyIiwgImZhaWx1
cmUgMiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGkubmV4dE5vZGUoKS50aXRsZSwgIjQiLCAiZmFp
bHVyZSAzIik7DQogICAgICBhc3NlcnRFcXVhbHMoaS5uZXh0Tm9kZSgpLnRpdGxlLCAiMSIsICJm
YWlsdXJlIDQiKTsNCiAgICAgIGFzc2VydEVxdWFscyhpLm5leHROb2RlKCkudGl0bGUsICIzIiwg
ImZhaWx1cmUgNSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGkubmV4dE5vZGUoKS50aXRsZSwgIjAi
LCAiZmFpbHVyZSA2Iik7DQogICAgICBhc3NlcnRFcXVhbHMoaS5uZXh0Tm9kZSgpLnRpdGxlLCAi
MiIsICJmYWlsdXJlIDciKTsNCiAgICAgIGFzc2VydEVxdWFscyhpLm5leHROb2RlKCksIG51bGws
ICJmYWlsdXJlIDgiKTsNCiAgICAgIHJldHVybiAxOw0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkg
ew0KICAgICAgLy8gdGVzdCA0OiBpZ25vcmluZyB3aGl0ZXNwYWNlIHRleHQgbm9kZXMgd2l0aCBu
b2RlIGl0ZXJhdG9ycw0KICAgICAgdmFyIGNvdW50ID0gMDsNCiAgICAgIHZhciBleHBlY3QgPSBm
dW5jdGlvbihub2RlMSwgbm9kZTIpIHsNCiAgICAgICAgY291bnQgKz0gMTsNCiAgICAgICAgYXNz
ZXJ0RXF1YWxzKG5vZGUxLCBub2RlMiwgImV4cGVjdGF0aW9uICIgKyBjb3VudCArICIgZmFpbGVk
Iik7DQogICAgICB9Ow0KICAgICAgdmFyIGFsbEJ1dFdTID0gZnVuY3Rpb24gKG5vZGUpIHsNCiAg
ICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMyAmJiBub2RlLmRhdGEubWF0Y2goL15ccyokLykp
DQogICAgICAgICAgcmV0dXJuIDI7DQogICAgICAgIHJldHVybiAxOw0KICAgICAgfTsNCiAgICAg
IHZhciBpID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGRvY3VtZW50LmJvZHksIDB4MDEg
fCAweDA0IHwgMHgwOCB8IDB4MTAgfCAweDIwLCBhbGxCdXRXUywgdHJ1ZSk7DQogICAgICAvLyBu
b3cgd2FsayB0aGUgZG9jdW1lbnQgYm9keSBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4g
dGhlIHJpZ2h0IHBsYWNlDQogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5ib2R5
KTsgLy8gMQ0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2gxJylbMF0pOw0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2gxJylbMF0uZmlyc3RDaGlsZCk7DQogICAgICBleHBlY3Qo
aS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF0pOw0K
ICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tl
dDEnKSk7DQogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYnVja2V0MicpKTsNCiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdidWNrZXQzJykpOw0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDQnKSk7DQogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgp
LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVja2V0NScpKTsNCiAgICAgIGV4cGVjdChpLm5l
eHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWNrZXQ2JykpOyAvLyAxMA0KICAg
ICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
KTsNCiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
Y29yZScpKTsNCiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzY29yZScpLmZpcnN0Q2hpbGQpOw0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NsYXNoJykpOw0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUo
KSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NsYXNoJykuZmlyc3RDaGlsZCk7DQogICAgICBl
eHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xhc2gnKS5uZXh0
U2libGluZyk7DQogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2xhc2gnKS5uZXh0U2libGluZy5maXJzdENoaWxkKTsNCiAgICAgIGV4cGVjdChpLm5l
eHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXAnKVswXSk7DQogICAg
ICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYXJl
YScpWzBdKTsNCiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdpZnJhbWUnKVswXSk7IC8vIDIwDQogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgp
LCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF0uZmlyc3RDaGlsZCk7
DQogICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnaWZyYW1lJylbMV0pOw0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzFdLmZpcnN0Q2hpbGQpOw0KICAgICAgZXhwZWN0
KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzJd
KTsNCiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmZvcm1zWzBdKTsNCiAgICAg
IGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmZvcm1zLmZvcm0uZWxlbWVudHNbMF0pOw0K
ICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J3RhYmxlJylbMF0pOw0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3Rib2R5JylbMF0pOw0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwg
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylbMF0pOw0KICAgICAgZXhwZWN0KGku
bmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RkJylbMF0pOw0KICAg
ICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Rk
JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3AnKVswXSk7DQogICAgICBleHBlY3QoaS5uZXh0
Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdHJ1Y3Rpb25zJykpOw0KICAgICAg
ZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RydWN0aW9u
cycpLmZpcnN0Q2hpbGQpOw0KICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKS5ub2RlTmFtZSwgIlNQ
QU4iKTsNCiAgICAgIGV4cGVjdChpLm5leHROb2RlKCkubm9kZU5hbWUsICIjdGV4dCIpOw0KICAg
ICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQubGlua3NbMV0pOw0KICAgICAgZXhwZWN0
KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQubGlua3NbMV0uZmlyc3RDaGlsZCk7DQogICAgICBleHBl
Y3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdHJ1Y3Rpb25zJyku
bGFzdENoaWxkKTsNCiAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIG51bGwpOw0KICAgICAgLy8g
d2FsayBpdCBiYWNrd2FyZHMgZm9yIGdvb2QgbWVhc3VyZQ0KICAgICAgZXhwZWN0KGkucHJldmlv
dXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0cnVjdGlvbnMnKS5sYXN0Q2hp
bGQpOw0KICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmxpbmtzWzFdLmZp
cnN0Q2hpbGQpOw0KICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50Lmxpbmtz
WzFdKTsNCiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLm5vZGVOYW1lLCAiI3RleHQiKTsN
CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLm5vZGVOYW1lLCAiU1BBTiIpOw0KICAgICAg
ZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0cnVj
dGlvbnMnKS5maXJzdENoaWxkKTsNCiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdHJ1Y3Rpb25zJykpOw0KICAgICAgZXhwZWN0KGkucHJl
dmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZCcpWzBdLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdwJylbMF0pOw0KICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCks
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZCcpWzBdKTsNCiAgICAgIGV4cGVjdChp
LnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVswXSk7
DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3Rib2R5JylbMF0pOw0KICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0YWJsZScpWzBdKTsNCiAgICAgIGV4cGVjdChpLnBy
ZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5mb3Jtcy5mb3JtLmVsZW1lbnRzWzBdKTsNCiAgICAgIGV4
cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5mb3Jtc1swXSk7DQogICAgICBleHBlY3Qo
aS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScp
WzJdKTsNCiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaWZyYW1lJylbMV0uZmlyc3RDaGlsZCk7DQogICAgICBleHBlY3QoaS5wcmV2
aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzFdKTsN
CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnaWZyYW1lJylbMF0uZmlyc3RDaGlsZCk7DQogICAgICBleHBlY3QoaS5wcmV2aW91c05v
ZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdKTsgLy8gMjAN
CiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnYXJlYScpWzBdKTsNCiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWFwJylbMF0pOw0KICAgICAgZXhwZWN0KGkucHJldmlv
dXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbGFzaCcpLm5leHRTaWJsaW5nLmZp
cnN0Q2hpbGQpOw0KICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzbGFzaCcpLm5leHRTaWJsaW5nKTsNCiAgICAgIGV4cGVjdChpLnByZXZpb3Vz
Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xhc2gnKS5maXJzdENoaWxkKTsNCiAg
ICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xh
c2gnKSk7DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Njb3JlJykuZmlyc3RDaGlsZCk7DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUo
KSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlJykpOw0KICAgICAgZXhwZWN0KGkucHJl
dmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKSk7DQogICAgICBl
eHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDYn
KSk7DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2J1Y2tldDUnKSk7DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDQnKSk7DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUo
KSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDMnKSk7DQogICAgICBleHBlY3QoaS5w
cmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDInKSk7DQogICAg
ICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tl
dDEnKSk7DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2RpdicpWzBdKTsNCiAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKVswXS5maXJzdENoaWxkKTsNCiAgICAg
IGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
aDEnKVswXSk7DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuYm9keSk7
DQogICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgbnVsbCk7DQogICAgICByZXR1cm4gMTsN
CiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNTogaWdub3Jpbmcgd2hp
dGVzcGFjZSB0ZXh0IG5vZGVzIHdpdGggdHJlZSB3YWxrZXJzDQogICAgICB2YXIgY291bnQgPSAw
Ow0KICAgICAgdmFyIGV4cGVjdCA9IGZ1bmN0aW9uKG5vZGUxLCBub2RlMikgew0KICAgICAgICBj
b3VudCArPSAxOw0KICAgICAgICBhc3NlcnRFcXVhbHMobm9kZTEsIG5vZGUyLCAiZXhwZWN0YXRp
b24gIiArIGNvdW50ICsgIiBmYWlsZWQiKTsNCiAgICAgIH07DQogICAgICB2YXIgYWxsQnV0V1Mg
PSBmdW5jdGlvbiAobm9kZSkgew0KICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzICYmIG5v
ZGUuZGF0YS5tYXRjaCgvXlxzKiQvKSkNCiAgICAgICAgICByZXR1cm4gMzsNCiAgICAgICAgcmV0
dXJuIDE7DQogICAgICB9Ow0KICAgICAgdmFyIHcgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2Vy
KGRvY3VtZW50LmJvZHksIDB4MDEgfCAweDA0IHwgMHgwOCB8IDB4MTAgfCAweDIwLCBhbGxCdXRX
UywgdHJ1ZSk7DQogICAgICBleHBlY3Qody5jdXJyZW50Tm9kZSwgZG9jdW1lbnQuYm9keSk7DQog
ICAgICBleHBlY3Qody5wYXJlbnROb2RlKCksIG51bGwpOw0KICAgICAgZXhwZWN0KHcuY3VycmVu
dE5vZGUsIGRvY3VtZW50LmJvZHkpOw0KICAgICAgZXhwZWN0KHcuZmlyc3RDaGlsZCgpLCBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKVswXSk7DQogICAgICBleHBlY3Qody5maXJz
dENoaWxkKCkubm9kZVR5cGUsIDMpOw0KICAgICAgZXhwZWN0KHcucGFyZW50Tm9kZSgpLCBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKVswXSk7DQogICAgICBleHBlY3Qody5uZXh0
U2libGluZygpLnByZXZpb3VzU2libGluZy5ub2RlVHlwZSwgMyk7DQogICAgICBleHBlY3Qody5u
ZXh0U2libGluZygpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpWzZdKTsNCiAg
ICAgIGV4cGVjdCh3Lm5leHRTaWJsaW5nKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdtYXAnKVswXSk7DQogICAgICBleHBlY3Qody5sYXN0Q2hpbGQoKSwgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3RhYmxlJylbMF0pOw0KICAgICAgZXhwZWN0KHcubGFzdENoaWxkKCks
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0Ym9keScpWzBdKTsNCiAgICAgIGV4cGVj
dCh3Lm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpWzBdKTsN
CiAgICAgIGV4cGVjdCh3Lm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCd0ZCcpWzBdKTsNCiAgICAgIGV4cGVjdCh3Lm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdwJylbN10pOw0KICAgICAgZXhwZWN0KHcubmV4dE5vZGUoKSwgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3AnKVs4XSk7IC8vIGluc3RydWN0aW9ucy5pbmMgcGFy
YWdyYXBoDQogICAgICBleHBlY3Qody5wcmV2aW91c1NpYmxpbmcoKSwgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ21hcCcpWzBdKTsNCiAgICAgIGV4cGVjdCh3LnByZXZpb3VzTm9kZSgp
LmRhdGEsICIxMDAiKTsNCiAgICAgIGV4cGVjdCh3LnBhcmVudE5vZGUoKS50YWdOYW1lLCAiU1BB
TiIpOw0KICAgICAgZXhwZWN0KHcucGFyZW50Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykpOw0KICAgICAgZXhwZWN0KHcucGFyZW50Tm9kZSgpLCBkb2N1bWVudC5ib2R5
KTsNCiAgICAgIGV4cGVjdCh3Lmxhc3RDaGlsZCgpLmlkLCAiaW5zdHJ1Y3Rpb25zIik7DQogICAg
ICBleHBlY3Qody5sYXN0Q2hpbGQoKS5kYXRhLnN1YnN0cigwLDEpLCAiLiIpOw0KICAgICAgZXhw
ZWN0KHcucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmxpbmtzWzFdLmZpcnN0Q2hpbGQpOw0KICAg
ICAgcmV0dXJuIDE7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDY6
IHdhbGtpbmcgb3V0c2lkZSBhIHRyZWUNCiAgICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQo
KTsNCiAgICAgIHZhciBwID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKTsNCiAgICAgIGRvYy5ib2R5
LmFwcGVuZENoaWxkKHApOw0KICAgICAgdmFyIGIgPSBkb2MuYm9keTsNCiAgICAgIHZhciB3ID0g
ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihiLCAweEZGRkZGRkZGLCBudWxsLCB0cnVlKTsNCiAg
ICAgIGFzc2VydEVxdWFscyh3LmN1cnJlbnROb2RlLCBiLCAiYmFzaWMgdXNlIG9mIFRyZWVXYWxr
ZXIgZmFpbGVkOiBjdXJyZW50Tm9kZSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHcubGFzdENoaWxk
KCksIHAsICJiYXNpYyB1c2Ugb2YgVHJlZVdhbGtlciBmYWlsZWQ6IGxhc3RDaGlsZCgpIik7DQog
ICAgICBhc3NlcnRFcXVhbHMody5wcmV2aW91c05vZGUoKSwgYiwgImJhc2ljIHVzZSBvZiBUcmVl
V2Fsa2VyIGZhaWxlZDogcHJldmlvdXNOb2RlKCkiKTsNCiAgICAgIGRvYy5kb2N1bWVudEVsZW1l
bnQucmVtb3ZlQ2hpbGQoYik7DQogICAgICBhc3NlcnRFcXVhbHMody5sYXN0Q2hpbGQoKSwgcCwg
IlRyZWVXYWxrZXIgZmFpbGVkIGFmdGVyIHJlbW92aW5nIHRoZSBjdXJyZW50IG5vZGUgZnJvbSB0
aGUgdHJlZSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHcubmV4dE5vZGUoKSwgbnVsbCwgImZhaWxl
ZCB0byB3YWxrIGludG8gdGhlIGVuZCBvZiBhIHN1YnRyZWUiKTsNCiAgICAgIGRvYy5kb2N1bWVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQocCk7DQogICAgICBhc3NlcnRFcXVhbHMody5wcmV2aW91c05v
ZGUoKSwgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0aXRsZScpWzBdLCAiZmFpbGVkIHRvIGhh
bmRsZSByZWdyYWZ0aW5nIGNvcnJlY3RseSIpOw0KICAgICAgcC5hcHBlbmRDaGlsZChiKTsNCiAg
ICAgIGFzc2VydEVxdWFscyh3Lm5leHROb2RlKCksIHAsICJjb3VsZG4ndCByZXRyYWNlIHN0ZXBz
Iik7DQogICAgICBhc3NlcnRFcXVhbHMody5uZXh0Tm9kZSgpLCBiLCAiY291bGRuJ3Qgc3RlcCBi
YWNrIGludG8gcm9vdCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHcucHJldmlvdXNOb2RlKCksIG51
bGwsICJyb290IGRpZG4ndCByZXRha2UgaXRzIHJvb3Rpc2ggcG9zaXRpb24iKTsNCiAgICAgIHJl
dHVybiAxOw0KICAgIH0sDQoNCiAgICAvLyBET00gUmFuZ2UNCiAgICBmdW5jdGlvbiAoKSB7DQog
ICAgICAvLyB0ZXN0IDc6IGJhc2ljIHJhbmdlcyB0ZXN0cw0KICAgICAgdmFyIHIgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOw0KICAgICAgYXNzZXJ0KHIsICJyYW5nZSBub3QgY3JlYXRlZCIpOw0K
ICAgICAgYXNzZXJ0KHIuY29sbGFwc2VkLCAibmV3IHJhbmdlIHdhc24ndCBjb2xsYXBzZWQiKTsN
CiAgICAgIGFzc2VydEVxdWFscyhyLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLCBkb2N1bWVudCwg
Im5ldyByYW5nZSdzIGNvbW1vbiBhbmNlc3RvciB3YXNuJ3QgdGhlIGRvY3VtZW50Iik7DQogICAg
ICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRhaW5lciwgZG9jdW1lbnQsICJuZXcgcmFuZ2UncyBz
dGFydCBjb250YWluZXIgd2Fzbid0IHRoZSBkb2N1bWVudCIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHIuc3RhcnRPZmZzZXQsIDAsICJuZXcgcmFuZ2UncyBzdGFydCBvZmZzZXQgd2Fzbid0IHplcm8i
KTsNCiAgICAgIGFzc2VydEVxdWFscyhyLmVuZENvbnRhaW5lciwgZG9jdW1lbnQsICJuZXcgcmFu
Z2UncyBlbmQgY29udGFpbmVyIHdhc24ndCB0aGUgZG9jdW1lbnQiKTsNCiAgICAgIGFzc2VydEVx
dWFscyhyLmVuZE9mZnNldCwgMCwgIm5ldyByYW5nZSdzIGVuZCBvZmZzZXQgd2Fzbid0IHplcm8i
KTsNCiAgICAgIGFzc2VydChyLmNsb25lQ29udGVudHMoKSwgImNsb25lQ29udGVudHMoKSBkaWRu
J3QgcmV0dXJuIGFuIG9iamVjdCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuY2xvbmVDb250ZW50
cygpLmNoaWxkTm9kZXMubGVuZ3RoLCAwLCAibm90aGluZyBjbG9uZWQgd2FzIG1vcmUgdGhhbiBu
b3RoaW5nIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5jbG9uZVJhbmdlKCkudG9TdHJpbmcoKSwg
IiIsICJub3RoaW5nIGNsb25lZCBzdHJpbmdpZmVkIHRvIG1vcmUgdGhhbiBub3RoaW5nIik7DQog
ICAgICByLmNvbGxhcHNlKHRydWUpOyAvLyBubyBlZmZlY3QNCiAgICAgIGFzc2VydEVxdWFscyhy
LmNvbXBhcmVCb3VuZGFyeVBvaW50cyhyLlNUQVJUX1RPX0VORCwgci5jbG9uZVJhbmdlKCkpLCAw
LCAic3RhcnRpbmcgYm91bmRhcnkgcG9pbnQgb2YgcmFuZ2Ugd2Fzbid0IHRoZSBzYW1lIGFzIHRo
ZSBlbmQgYm91bmRhcnkgcG9pbnQgb2YgdGhlIGNsb25lIHJhbmdlIik7DQogICAgICByLmRlbGV0
ZUNvbnRlbnRzKCk7IC8vIG5vIGVmZmVjdA0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZXh0cmFjdENv
bnRlbnRzKCkuY2hpbGROb2Rlcy5sZW5ndGgsIDAsICJub3RoaW5nIHJlbW92ZWQgd2FzIG1vcmUg
dGhhbiBub3RoaW5nIik7DQogICAgICByLmluc2VydE5vZGUoZG9jdW1lbnQuY3JlYXRlQ29tbWVu
dCgiY29tbWVudGVkIGluc2VydGVkIHRvIHRlc3QgcmFuZ2VzIikpOw0KICAgICAgdHJ5IHsNCiAg
ICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgInJhbmdlIHdpdGggaW5zZXJ0ZWQgY29tbWVudCBp
cyBjb2xsYXBzZWQiKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxzKHIuY29tbW9uQW5jZXN0b3JDb250
YWluZXIsIGRvY3VtZW50LCAicmFuZ2Ugd2l0aCBpbnNlcnRlZCBjb21tZW50IGhhcyBjb21tb24g
YW5jZXN0b3IgdGhhdCBpc24ndCB0aGUgZG9jdW1lbnQiKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxz
KHIuc3RhcnRDb250YWluZXIsIGRvY3VtZW50LCAicmFuZ2Ugd2l0aCBpbnNlcnRlZCBjb21tZW50
IGhhcyBzdGFydCBjb250YWluZXIgdGhhdCBpc24ndCB0aGUgZG9jdW1lbnQiKTsNCiAgICAgICAg
YXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDAsICJyYW5nZSB3aXRoIGluc2VydGVkIGNvbW1l
bnQgaGFzIHN0YXJ0IG9mZnNldCB0aGF0IGlzbid0IHplcm8iKTsNCiAgICAgICAgYXNzZXJ0RXF1
YWxzKHIuZW5kQ29udGFpbmVyLCBkb2N1bWVudCwgInJhbmdlIHdpdGggaW5zZXJ0ZWQgY29tbWVu
dCBoYXMgZW5kIGNvbnRhaW5lciB0aGF0IGlzbid0IHRoZSBkb2N1bWVudCIpOw0KICAgICAgICBh
c3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDEsICJyYW5nZSB3aXRoIGluc2VydGVkIGNvbW1lbnQg
aGFzIGVuZCBvZmZzZXQgdGhhdCBpc24ndCBhZnRlciB0aGUgY29tbWVudCIpOw0KICAgICAgfSBm
aW5hbGx5IHsNCiAgICAgICAgZG9jdW1lbnQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZmlyc3RDaGls
ZCk7DQogICAgICB9DQogICAgICByZXR1cm4gMTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsN
CiAgICAgIC8vIHRlc3QgODogbW92aW5nIGJvdW5kYXJ5IHBvaW50cw0KICAgICAgdmFyIGRvYyA9
IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KG51bGwsIG51bGwsIG51bGwp
Ow0KICAgICAgdmFyIHJvb3QgPSBkb2MuY3JlYXRlRWxlbWVudCgicm9vdCIpOw0KICAgICAgZG9j
LmFwcGVuZENoaWxkKHJvb3QpOw0KICAgICAgdmFyIGUxID0gZG9jLmNyZWF0ZUVsZW1lbnQoImUi
KTsNCiAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZTEpOw0KICAgICAgdmFyIGUyID0gZG9jLmNyZWF0
ZUVsZW1lbnQoImUiKTsNCiAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZTIpOw0KICAgICAgdmFyIGUz
ID0gZG9jLmNyZWF0ZUVsZW1lbnQoImUiKTsNCiAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZTMpOw0K
ICAgICAgdmFyIHIgPSBkb2MuY3JlYXRlUmFuZ2UoKTsNCiAgICAgIHIuc2V0U3RhcnQoZTIsIDAp
Ow0KICAgICAgci5zZXRFbmQoZTMsIDApOw0KICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgIm5v
bi1lbXB0eSByYW5nZSBjbGFpbXMgdG8gYmUgY29sbGFwc2VkIik7DQogICAgICByLnNldEVuZChl
MSwgMCk7DQogICAgICBhc3NlcnQoci5jb2xsYXBzZWQsICJzZXRFbmQoKSBkaWRuJ3QgY29sbGFw
c2UgdGhlIHJhbmdlIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRhaW5lciwgZTEs
ICJzdGFydENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBzZXRFbmQoKSIpOw0KICAgICAgYXNzZXJ0
RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDAsICJzdGFydE9mZnNldCBpcyB3cm9uZyBhZnRlciBzZXRF
bmQoKSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29udGFpbmVyLCBlMSwgImVuZENvbnRh
aW5lciBpcyB3cm9uZyBhZnRlciBzZXRFbmQoKSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5k
T2Zmc2V0LCAwLCAiZW5kT2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNldEVuZCgpIik7DQogICAgICBy
LnNldFN0YXJ0QmVmb3JlKGUzKTsNCiAgICAgIGFzc2VydChyLmNvbGxhcHNlZCwgInNldFN0YXJ0
QmVmb3JlKCkgZGlkbid0IGNvbGxhcHNlIHRoZSByYW5nZSIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHIuc3RhcnRDb250YWluZXIsIHJvb3QsICJzdGFydENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBz
ZXRTdGFydEJlZm9yZSgpIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMiwg
InN0YXJ0T2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QmVmb3JlKCkiKTsNCiAgICAgIGFz
c2VydEVxdWFscyhyLmVuZENvbnRhaW5lciwgcm9vdCwgImVuZENvbnRhaW5lciBpcyB3cm9uZyBh
ZnRlciBzZXRTdGFydEJlZm9yZSgpIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5lbmRPZmZzZXQs
IDIsICJlbmRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgc2V0U3RhcnRCZWZvcmUoKSIpOw0KICAgICAg
ci5zZXRFbmRBZnRlcihyb290KTsNCiAgICAgIGFzc2VydCghci5jb2xsYXBzZWQsICJzZXRFbmRB
ZnRlcigpIGRpZG4ndCB1bmNvbGxhcHNlIHRoZSByYW5nZSIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHIuc3RhcnRDb250YWluZXIsIHJvb3QsICJzdGFydENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBz
ZXRFbmRBZnRlcigpIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMiwgInN0
YXJ0T2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNldEVuZEFmdGVyKCkiKTsNCiAgICAgIGFzc2VydEVx
dWFscyhyLmVuZENvbnRhaW5lciwgZG9jLCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNl
dEVuZEFmdGVyKCkiKTsNCiAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMSwgImVuZE9m
ZnNldCBpcyB3cm9uZyBhZnRlciBzZXRFbmRBZnRlcigpIik7DQogICAgICByLnNldFN0YXJ0QWZ0
ZXIoZTIpOw0KICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgInNldFN0YXJ0QWZ0ZXIoKSBjb2xs
YXBzZWQgdGhlIHJhbmdlIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRhaW5lciwg
cm9vdCwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QWZ0ZXIoKSIpOw0K
ICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDIsICJzdGFydE9mZnNldCBpcyB3cm9u
ZyBhZnRlciBzZXRTdGFydEFmdGVyKCkiKTsNCiAgICAgIGFzc2VydEVxdWFscyhyLmVuZENvbnRh
aW5lciwgZG9jLCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QWZ0ZXIoKSIp
Ow0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kT2Zmc2V0LCAxLCAiZW5kT2Zmc2V0IGlzIHdyb25n
IGFmdGVyIHNldFN0YXJ0QWZ0ZXIoKSIpOw0KICAgICAgdmFyIG1zZyA9ICcnOw0KICAgICAgdHJ5
IHsNCiAgICAgICAgci5zZXRFbmRCZWZvcmUoZG9jKTsNCiAgICAgICAgbXNnID0gIm5vIGV4Y2Vw
dGlvbiB0aHJvd24gZm9yIHNldEVuZEJlZm9yZSgpIHRoZSBkb2N1bWVudCBpdHNlbGYiOw0KICAg
ICAgfSBjYXRjaCAoZSkgew0KICAgICAgICBpZiAoZS5CQURfQk9VTkRBUllQT0lOVFNfRVJSICE9
IDEpDQogICAgICAgICAgbXNnID0gJ25vdCBhIFJhbmdlRXhjZXB0aW9uJzsNCiAgICAgICAgZWxz
ZSBpZiAoZS5JTlZBTElEX05PREVfVFlQRV9FUlIgIT0gMikNCiAgICAgICAgICBtc2cgPSAnUmFu
Z2VFeGNlcHRpb24gaGFzIG5vIElOVkFMSURfTk9ERV9UWVBFX0VSUic7DQogICAgICAgIGVsc2Ug
aWYgKCJJTlZBTElEX0FDQ0VTU19FUlIiIGluIGUpDQogICAgICAgICAgbXNnID0gJ1JhbmdlRXhj
ZXB0aW9uIGhhcyBET01FeGNlcHRpb24gY29uc3RhbnRzJzsNCiAgICAgICAgZWxzZSBpZiAoZS5j
b2RlICE9IGUuSU5WQUxJRF9OT0RFX1RZUEVfRVJSKQ0KICAgICAgICAgIG1zZyA9ICd3cm9uZyBl
eGNlcHRpb24gcmFpc2VkIGZyb20gc2V0RW5kQmVmb3JlKCknOw0KICAgICAgfQ0KICAgICAgYXNz
ZXJ0KG1zZyA9PSAiIiwgbXNnKTsNCiAgICAgIGFzc2VydCghci5jb2xsYXBzZWQsICJzZXRFbmRC
ZWZvcmUoKSBjb2xsYXBzZWQgdGhlIHJhbmdlIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5zdGFy
dENvbnRhaW5lciwgcm9vdCwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNldEVuZEJl
Zm9yZSgpIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMiwgInN0YXJ0T2Zm
c2V0IGlzIHdyb25nIGFmdGVyIHNldEVuZEJlZm9yZSgpIik7DQogICAgICBhc3NlcnRFcXVhbHMo
ci5lbmRDb250YWluZXIsIGRvYywgImVuZENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBzZXRFbmRC
ZWZvcmUoKSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kT2Zmc2V0LCAxLCAiZW5kT2Zmc2V0
IGlzIHdyb25nIGFmdGVyIHNldEVuZEJlZm9yZSgpIik7DQogICAgICByLmNvbGxhcHNlKGZhbHNl
KTsNCiAgICAgIGFzc2VydChyLmNvbGxhcHNlZCwgImNvbGxhcHNlKCkgY29sbGFwc2VkIHRoZSBy
YW5nZSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRDb250YWluZXIsIGRvYywgInN0YXJ0
Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIGNvbGxhcHNlKCkiKTsNCiAgICAgIGFzc2VydEVxdWFs
cyhyLnN0YXJ0T2Zmc2V0LCAxLCAic3RhcnRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgY29sbGFwc2Uo
KSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29udGFpbmVyLCBkb2MsICJlbmRDb250YWlu
ZXIgaXMgd3JvbmcgYWZ0ZXIgY29sbGFwc2UoKSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5k
T2Zmc2V0LCAxLCAiZW5kT2Zmc2V0IGlzIHdyb25nIGFmdGVyIGNvbGxhcHNlKCkiKTsNCiAgICAg
IHIuc2VsZWN0Tm9kZUNvbnRlbnRzKHJvb3QpOw0KICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwg
ImNvbGxhcHNlZCBpcyB3cm9uZyBhZnRlciBzZWxlY3ROb2RlQ29udGVudHMoKSIpOw0KICAgICAg
YXNzZXJ0RXF1YWxzKHIuc3RhcnRDb250YWluZXIsIHJvb3QsICJzdGFydENvbnRhaW5lciBpcyB3
cm9uZyBhZnRlciBzZWxlY3ROb2RlQ29udGVudHMoKSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIu
c3RhcnRPZmZzZXQsIDAsICJzdGFydE9mZnNldCBpcyB3cm9uZyBhZnRlciBzZWxlY3ROb2RlQ29u
dGVudHMoKSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29udGFpbmVyLCByb290LCAiZW5k
Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNlbGVjdE5vZGVDb250ZW50cygpIik7DQogICAgICBh
c3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDMsICJlbmRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgc2Vs
ZWN0Tm9kZUNvbnRlbnRzKCkiKTsNCiAgICAgIHIuc2VsZWN0Tm9kZShlMik7DQogICAgICBhc3Nl
cnQoIXIuY29sbGFwc2VkLCAiY29sbGFwc2VkIGlzIHdyb25nIGFmdGVyIHNlbGVjdE5vZGUoKSIp
Ow0KICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRDb250YWluZXIsIHJvb3QsICJzdGFydENvbnRh
aW5lciBpcyB3cm9uZyBhZnRlciBzZWxlY3ROb2RlKCkiKTsNCiAgICAgIGFzc2VydEVxdWFscyhy
LnN0YXJ0T2Zmc2V0LCAxLCAic3RhcnRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgc2VsZWN0Tm9kZSgp
Iik7DQogICAgICBhc3NlcnRFcXVhbHMoci5lbmRDb250YWluZXIsIHJvb3QsICJlbmRDb250YWlu
ZXIgaXMgd3JvbmcgYWZ0ZXIgc2VsZWN0Tm9kZSgpIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5l
bmRPZmZzZXQsIDIsICJlbmRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgc2VsZWN0Tm9kZSgpIik7DQog
ICAgICByZXR1cm4gMTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3Qg
OTogZXh0cmFjdENvbnRlbnRzKCkgaW4gYSBEb2N1bWVudA0KICAgICAgdmFyIGRvYyA9IGdldFRl
c3REb2N1bWVudCgpOw0KICAgICAgdmFyIGgxID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2gxJyk7DQog
ICAgICB2YXIgdDEgPSBkb2MuY3JlYXRlVGV4dE5vZGUoJ0hlbGxvICcpOw0KICAgICAgaDEuYXBw
ZW5kQ2hpbGQodDEpOw0KICAgICAgdmFyIGVtID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2VtJyk7DQog
ICAgICB2YXIgdDIgPSBkb2MuY3JlYXRlVGV4dE5vZGUoJ1dvbmRlcmZ1bCcpOw0KICAgICAgZW0u
YXBwZW5kQ2hpbGQodDIpOw0KICAgICAgaDEuYXBwZW5kQ2hpbGQoZW0pOw0KICAgICAgdmFyIHQz
ID0gZG9jLmNyZWF0ZVRleHROb2RlKCcgS2l0dHknKTsNCiAgICAgIGgxLmFwcGVuZENoaWxkKHQz
KTsNCiAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGgxKTsNCiAgICAgIHZhciBwID0gZG9jLmNy
ZWF0ZUVsZW1lbnQoJ3AnKTsNCiAgICAgIHZhciB0NCA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgnSG93
IGFyZSB5b3U/Jyk7DQogICAgICBwLmFwcGVuZENoaWxkKHQ0KTsNCiAgICAgIGRvYy5ib2R5LmFw
cGVuZENoaWxkKHApOw0KICAgICAgdmFyIHIgPSBkb2MuY3JlYXRlUmFuZ2UoKTsNCiAgICAgIHIu
c2VsZWN0Tm9kZUNvbnRlbnRzKGRvYyk7DQogICAgICBhc3NlcnRFcXVhbHMoci50b1N0cmluZygp
LCAiSGVsbG8gV29uZGVyZnVsIEtpdHR5SG93IGFyZSB5b3U/IiwgInRvU3RyaW5nKCkgb24gcmFu
Z2Ugc2VsZWN0aW5nIERvY3VtZW50IGdhdmUgd3Jvbmcgb3V0cHV0Iik7DQogICAgICByLnNldFN0
YXJ0KHQyLCA2KTsNCiAgICAgIHIuc2V0RW5kKHAsIDApOw0KICAgICAgLy8gPGJvZHk+PGgxPkhl
bGxvIDxlbT5Xb25kZXIgZnVsPFxlbT4gS2l0dHk8XGgxPjxwPiBIb3cgYXJlIHlvdT88XHA+PFxi
b2R5PiAgICAgKHRoZSAnXCdzIGFyZSB0byBhdm9pZCB2YWxpZGF0aW9uIGVycm9ycykNCiAgICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgXi0tLS0tLS0tLS0tLS0tLS0tLS0tLS1eDQog
ICAgICBhc3NlcnRFcXVhbHMoci50b1N0cmluZygpLCAiZnVsIEtpdHR5IiwgInRvU3RyaW5nKCkg
b24gcmFuZ2UgY3Jvc3NpbmcgdGV4dCBub2RlcyBnYXZlIHdyb25nIG91dHB1dCIpOw0KICAgICAg
dmFyIGYgPSByLmV4dHJhY3RDb250ZW50cygpOw0KICAgICAgLy8gPGgxPjxlbT5mdWw8XGVtPiBL
aXR0eTxcaDE+PHA+PFxwPg0KICAgICAgLy8gY2NjY2NjY2NjY2NjY2NjY01NTU1NTWNjY2NjY2Nj
Y2NjYw0KICAgICAgYXNzZXJ0RXF1YWxzKGYubm9kZVR5cGUsIDExLCAiZmFpbHVyZSAxIik7DQog
ICAgICBhc3NlcnQoZi5jaGlsZE5vZGVzLmxlbmd0aCA9PSAyLCAiZXhwZWN0ZWQgdHdvIGNoaWxk
cmVuIGluIHRoZSByZXN1bHQsIGdvdCAiICsgZi5jaGlsZE5vZGVzLmxlbmd0aCk7DQogICAgICBh
c3NlcnRFcXVhbHMoZi5jaGlsZE5vZGVzWzBdLnRhZ05hbWUsICJIMSIsICJmYWlsdXJlIDMiKTsN
CiAgICAgIGFzc2VydChmLmNoaWxkTm9kZXNbMF0gIT0gaDEsICJmYWlsdXJlIDQiKTsNCiAgICAg
IGFzc2VydEVxdWFscyhmLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlcy5sZW5ndGgsIDIsICJmYWls
dXJlIDUiKTsNCiAgICAgIGFzc2VydEVxdWFscyhmLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1sw
XS50YWdOYW1lLCAiRU0iLCAiZmFpbHVyZSA2Iik7DQogICAgICBhc3NlcnQoZi5jaGlsZE5vZGVz
WzBdLmNoaWxkTm9kZXNbMF0gIT0gZW0sICJmYWlsdXJlIDciKTsNCiAgICAgIGFzc2VydEVxdWFs
cyhmLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzLmxlbmd0aCwgMSwgImZh
aWx1cmUgOCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGYuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVz
WzBdLmNoaWxkTm9kZXNbMF0uZGF0YSwgImZ1bCIsICJmYWlsdXJlIDkiKTsNCiAgICAgIGFzc2Vy
dChmLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdICE9IHQyLCAiZmFp
bHVyZSAxMCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGYuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVz
WzFdLCB0MywgImZhaWx1cmUgMTEiKTsNCiAgICAgIGFzc2VydChmLmNoaWxkTm9kZXNbMF0uY2hp
bGROb2Rlc1sxXSAhPSBlbSwgImZhaWx1cmUgMTIiKTsNCiAgICAgIGFzc2VydEVxdWFscyhmLmNo
aWxkTm9kZXNbMV0udGFnTmFtZSwgIlAiLCAiZmFpbHVyZSAxMyIpOw0KICAgICAgYXNzZXJ0RXF1
YWxzKGYuY2hpbGROb2Rlc1sxXS5jaGlsZE5vZGVzLmxlbmd0aCwgMCwgImZhaWx1cmUgMTQiKTsN
CiAgICAgIGFzc2VydChmLmNoaWxkTm9kZXNbMV0gIT0gcCwgImZhaWx1cmUgMTUiKTsNCiAgICAg
IHJldHVybiAxOw0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCAxMDog
UmFuZ2VzIGFuZCBBdHRyaWJ1dGUgTm9kZXMNCiAgICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpOw0KICAgICAgaWYgKCFlLmdldEF0dHJpYnV0ZU5vZGUpDQogICAg
ICAgIHJldHVybiAxOyAvLyBzdXBwb3J0IGZvciBhdHRyaWJ1dGUgbm9kZXMgaXMgb3B0aW9uYWwg
aW4gQWNpZDMsIGJlY2F1c2UgYXR0cmlidXRlIG5vZGVzIG1pZ2h0IGJlIHJlbW92ZWQgZnJvbSBE
T00gQ29yZSBpbiB0aGUgZnV0dXJlLg0KICAgICAgLy8gaG93ZXZlciwgaWYgdGhleSdyZSBzdXBw
b3J0ZWQsIHRoZXknZCBiZXR0ZXIgd29yazoNCiAgICAgIHZhciBhID0gZS5nZXRBdHRyaWJ1dGVO
b2RlKCdpZCcpOw0KICAgICAgdmFyIHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOw0KICAgICAg
ci5zZWxlY3ROb2RlQ29udGVudHMoYSk7DQogICAgICBhc3NlcnRFcXVhbHMoci50b1N0cmluZygp
LCAicmVzdWx0IiwgInRvU3RyaW5nKCkgZGlkbid0IHdvcmsgZm9yIGF0dHJpYnV0ZSBub2RlIik7
DQogICAgICB2YXIgdCA9IGEuZmlyc3RDaGlsZDsNCiAgICAgIHZhciBmID0gci5leHRyYWN0Q29u
dGVudHMoKTsNCiAgICAgIGFzc2VydEVxdWFscyhmLmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAiZXh0
cmFjdGVkIGNvbnRlbnRzIHdlcmUgdGhlIHdyb25nIGxlbmd0aCIpOw0KICAgICAgYXNzZXJ0RXF1
YWxzKGYuY2hpbGROb2Rlc1swXSwgdCwgImV4dHJhY3RlZCBjb250ZW50cyB3ZXJlIHRoZSB3cm9u
ZyBub2RlIik7DQogICAgICBhc3NlcnRFcXVhbHModC50ZXh0Q29udGVudCwgJ3Jlc3VsdCcsICJl
eHRyYWN0ZWQgY29udGVudHMgZGlkbid0IG1hdGNoIG9sZCBhdHRyaWJ1dGUgdmFsdWUiKTsNCiAg
ICAgIGFzc2VydEVxdWFscyhyLnRvU3RyaW5nKCksICcnLCAiZXh0cmFjdGluZyBjb250ZW50cyBk
aWRuJ3QgZW1wdHkgYXR0cmlidXRlIHZhbHVlOyBpbnN0ZWFkIGVxdWFscyAnIiArIHIudG9TdHJp
bmcoKSArICInIik7DQogICAgICBhc3NlcnRFcXVhbHMoZS5nZXRBdHRyaWJ1dGUoJ2lkJyksICcn
LCAiZXh0cmFjdGluZyBjb250ZW50cyBkaWRuJ3QgY2hhbmdlICdpZCcgYXR0cmlidXRlIHRvIGVt
cHR5IHN0cmluZyIpOw0KICAgICAgZS5pZCA9ICdyZXN1bHQnOw0KICAgICAgcmV0dXJuIDE7DQog
ICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDExOiBSYW5nZXMgYW5kIENv
bW1lbnRzDQogICAgICB2YXIgbXNnOw0KICAgICAgdmFyIGRvYyA9IGdldFRlc3REb2N1bWVudCgp
Ow0KICAgICAgdmFyIGMxID0gZG9jLmNyZWF0ZUNvbW1lbnQoIjExMTExIik7DQogICAgICBkb2Mu
YXBwZW5kQ2hpbGQoYzEpOw0KICAgICAgdmFyIHIgPSBkb2MuY3JlYXRlUmFuZ2UoKTsNCiAgICAg
IHIuc2VsZWN0Tm9kZShjMSk7DQogICAgICBtc2cgPSAnd3JvbmcgZXhjZXB0aW9uIHJhaXNlZCc7
DQogICAgICB0cnkgew0KICAgICAgICByLnN1cnJvdW5kQ29udGVudHMoZG9jLmNyZWF0ZUVsZW1l
bnQoJ2EnKSk7DQogICAgICAgIG1zZyA9ICdubyBleGNlcHRpb24gcmFpc2VkJzsNCiAgICAgIH0g
Y2F0Y2ggKGUpIHsNCiAgICAgICAgaWYgKCdjb2RlJyBpbiBlKQ0KICAgICAgICAgIG1zZyArPSAn
OyBjb2RlID0gJyArIGUuY29kZTsNCiAgICAgICAgaWYgKGUuY29kZSA9PSAzKQ0KICAgICAgICAg
IG1zZyA9ICcnOw0KICAgICAgfQ0KICAgICAgYXNzZXJ0KG1zZyA9PSAnJywgIndoZW4gaW5zZXJ0
aW5nIDxhPiBpbnRvIERvY3VtZW50IHdpdGggYW5vdGhlciBjaGlsZDogIiArIG1zZyk7DQogICAg
ICB2YXIgYzIgPSBkb2MuY3JlYXRlQ29tbWVudCgiMjIyMjIiKTsNCiAgICAgIGRvYy5ib2R5LmFw
cGVuZENoaWxkKGMyKTsNCiAgICAgIHZhciBjMyA9IGRvYy5jcmVhdGVDb21tZW50KCIzMzMzMyIp
Ow0KICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoYzMpOw0KICAgICAgci5zZXRTdGFydChjMiwg
Mik7DQogICAgICByLnNldEVuZChjMywgMyk7DQogICAgICB2YXIgbXNnID0gJ3dyb25nIGV4Y2Vw
dGlvbiByYWlzZWQnOw0KICAgICAgdHJ5IHsNCiAgICAgICAgci5zdXJyb3VuZENvbnRlbnRzKGRv
Yy5jcmVhdGVFbGVtZW50KCdhJykpOw0KICAgICAgICBtc2cgPSAnbm8gZXhjZXB0aW9uIHJhaXNl
ZCc7DQogICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgIGlmICgnY29kZScgaW4gZSkNCiAgICAg
ICAgICBtc2cgKz0gJzsgY29kZSA9ICcgKyBlLmNvZGU7DQogICAgICAgIGlmIChlLmNvZGUgPT0g
MSkNCiAgICAgICAgICBtc2cgPSAnJzsNCiAgICAgIH0NCiAgICAgIGFzc2VydChtc2cgPT0gJycs
ICJ3aGVuIHRyeWluZyB0byBzdXJyb3VuZCB0d28gaGFsdmVzIG9mIGNvbW1lbnQ6ICIgKyBtc2cp
Ow0KICAgICAgYXNzZXJ0RXF1YWxzKHIudG9TdHJpbmcoKSwgIiIsICJjb21tZW50cyByZXR1cm5l
ZCB0ZXh0Iik7DQogICAgICByZXR1cm4gMTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAg
ICAgIC8vIHRlc3QgMTI6IFJhbmdlcyB1bmRlciBtdXRhdGlvbnM6IGluc2VydGlvbiBpbnRvIHRl
eHQgbm9kZXMNCiAgICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQoKTsNCiAgICAgIHZhciBw
ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKTsNCiAgICAgIHZhciB0MSA9IGRvYy5jcmVhdGVUZXh0
Tm9kZSgnMTIzNDUnKTsNCiAgICAgIHAuYXBwZW5kQ2hpbGQodDEpOw0KICAgICAgdmFyIHQyID0g
ZG9jLmNyZWF0ZVRleHROb2RlKCdBQkNERScpOw0KICAgICAgcC5hcHBlbmRDaGlsZCh0Mik7DQog
ICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChwKTsNCiAgICAgIHZhciByID0gZG9jLmNyZWF0ZVJh
bmdlKCk7DQogICAgICByLnNldFN0YXJ0KHAuZmlyc3RDaGlsZCwgMik7DQogICAgICByLnNldEVu
ZChwLmZpcnN0Q2hpbGQsIDMpOw0KICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgImNvbGxhcHNl
ZCBpcyB3cm9uZyBhdCBzdGFydCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuY29tbW9uQW5jZXN0
b3JDb250YWluZXIsIHAuZmlyc3RDaGlsZCwgImNvbW1vbkFuY2VzdG9yQ29udGFpbmVyIGlzIHdy
b25nIGF0IHN0YXJ0Iik7DQogICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRhaW5lciwgcC5m
aXJzdENoaWxkLCAic3RhcnRDb250YWluZXIgaXMgd3JvbmcgYXQgc3RhcnQiKTsNCiAgICAgIGFz
c2VydEVxdWFscyhyLnN0YXJ0T2Zmc2V0LCAyLCAic3RhcnRPZmZzZXQgaXMgd3JvbmcgYXQgc3Rh
cnQiKTsNCiAgICAgIGFzc2VydEVxdWFscyhyLmVuZENvbnRhaW5lciwgcC5maXJzdENoaWxkLCAi
ZW5kQ29udGFpbmVyIGlzIHdyb25nIGF0IHN0YXJ0Iik7DQogICAgICBhc3NlcnRFcXVhbHMoci5l
bmRPZmZzZXQsIDMsICJlbmRPZmZzZXQgaXMgd3JvbmcgYXQgc3RhcnQiKTsNCiAgICAgIGFzc2Vy
dEVxdWFscyhyLnRvU3RyaW5nKCksICIzIiwgInJhbmdlIGluIHRleHQgbm9kZSBzdHJpbmdpZmlj
YXRpb24gZmFpbGVkIik7DQogICAgICByLmluc2VydE5vZGUocC5sYXN0Q2hpbGQpOw0KICAgICAg
YXNzZXJ0RXF1YWxzKHAuY2hpbGROb2Rlcy5sZW5ndGgsIDMsICJpbnNlcnRpb24gb2Ygbm9kZSBt
YWRlIHdyb25nIG51bWJlciBvZiBjaGlsZCBub2RlcyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHAu
Y2hpbGROb2Rlc1swXSwgdDEsICJ1bmV4cGVjdGVkIGZpcnN0IHRleHQgbm9kZSIpOw0KICAgICAg
YXNzZXJ0RXF1YWxzKHAuY2hpbGROb2Rlc1swXS5kYXRhLCAiMTIiLCAidW5leHBlY3RlZCBmaXJz
dCB0ZXh0IG5vZGUgY29udGVudHMiKTsNCiAgICAgIGFzc2VydEVxdWFscyhwLmNoaWxkTm9kZXNb
MV0sIHQyLCAidW5leHBlY3RlZCBzZWNvbmQgdGV4dCBub2RlIik7DQogICAgICBhc3NlcnRFcXVh
bHMocC5jaGlsZE5vZGVzWzFdLmRhdGEsICJBQkNERSIsICJ1bmV4cGVjdGVkIHNlY29uZCB0ZXh0
IG5vZGUiKTsNCiAgICAgIGFzc2VydEVxdWFscyhwLmNoaWxkTm9kZXNbMl0uZGF0YSwgIjM0NSIs
ICJ1bmV4cGVjdGVkIHRoaXJkIHRleHQgbm9kZSBjb250ZW50cyIpOw0KICAgICAgLy8gVGhlIHNw
ZWMgaXMgdmVyeSB2YWd1ZSBhYm91dCB3aGF0IGV4YWN0bHkgc2hvdWxkIGJlIGluIHRoZSByYW5n
ZSBhZnRlcndhcmRzOg0KICAgICAgLy8gdGhlIGluc2VydGlvbiByZXN1bHRzIGluIGEgc3BsaXRU
ZXh0KCksIHdoaWNoIGl0IHNheXMgaXMgZXF1aXZhbGVudCB0byBhIHRydW5jYXRpb24NCiAgICAg
IC8vIGZvbGxvd2VkIGJ5IGFuIGluc2VydGlvbiwgYnV0IGl0IGRvZXNuJ3Qgc2F5IHdoYXQgdG8g
ZG8gd2hlbiB5b3UgaGF2ZSBhIHRydW5jYXRpb24sDQogICAgICAvLyBzbyB3ZSBkb24ndCBrbm93
IHdoZXJlIGVpdGhlciB0aGUgc3RhcnQgb3IgdGhlIGVuZCBib3VuZGFyeSBwb2ludHMgZW5kIHVw
Lg0KICAgICAgLy8gVGhlIHNwZWMgcmVhbGx5IHNob3VsZCBiZSBjbGFyaWZpZWQgZm9yIGhvdyB0
byBoYW5kbGUgc3BsaXRUZXh0KCkgYW5kDQogICAgICAvLyB0ZXh0IG5vZGUgdHJ1bmNhdGlvbiBp
biBnZW5lcmFsDQogICAgICAvLyBUaGUgb25seSB0aGluZyB0aGF0IHNlZW1zIHZlcnkgY2xlYXIg
aXMgdGhhdCB0aGUgaW5zZXJ0ZWQgdGV4dCBub2RlIHNob3VsZA0KICAgICAgLy8gYmUgaW4gdGhl
IHJhbmdlLCBhbmQgaXQgaGFzIHRvIGJlIGF0IHRoZSBzdGFydCwgc2luY2UgaW5zZXJ0aW9uIGFs
d2F5cyBwdXRzIGl0IGF0DQogICAgICAvLyB0aGUgc3RhcnQuDQogICAgICBhc3NlcnQoIXIuY29s
bGFwc2VkLCAiY29sbGFwc2VkIGlzIHdyb25nIGFmdGVyIGluc2VydGlvbiIpOw0KICAgICAgYXNz
ZXJ0KHIudG9TdHJpbmcoKS5tYXRjaCgvXkFCQ0RFLyksICJyYW5nZSBkaWRuJ3Qgc3RhcnQgd2l0
aCB0aGUgZXhwZWN0ZWQgdGV4dDsgcmFuZ2Ugc3RyaW5naWZpZWQgdG8gJyIgKyByLnRvU3RyaW5n
KCkgKyAiJyIpOw0KICAgICAgcmV0dXJuIDE7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQog
ICAgICAvLyB0ZXN0IDEzOiBSYW5nZXMgdW5kZXIgbXV0YXRpb25zOiBkZWxldGlvbg0KICAgICAg
dmFyIGRvYyA9IGdldFRlc3REb2N1bWVudCgpOw0KICAgICAgdmFyIHAgPSBkb2MuY3JlYXRlRWxl
bWVudCgncCcpOw0KICAgICAgcC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIjEyMzQ1
IikpOw0KICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7DQogICAgICB2YXIgciA9IGRvYy5j
cmVhdGVSYW5nZSgpOw0KICAgICAgci5zZXRFbmQoZG9jLmJvZHksIDEpOw0KICAgICAgci5zZXRT
dGFydChwLmZpcnN0Q2hpbGQsIDIpOw0KICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgImNvbGxh
cHNlZCBpcyB3cm9uZyBhdCBzdGFydCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuY29tbW9uQW5j
ZXN0b3JDb250YWluZXIsIGRvYy5ib2R5LCAiY29tbW9uQW5jZXN0b3JDb250YWluZXIgaXMgd3Jv
bmcgYXQgc3RhcnQiKTsNCiAgICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCBwLmZp
cnN0Q2hpbGQsICJzdGFydENvbnRhaW5lciBpcyB3cm9uZyBhdCBzdGFydCIpOw0KICAgICAgYXNz
ZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDIsICJzdGFydE9mZnNldCBpcyB3cm9uZyBhdCBzdGFy
dCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29udGFpbmVyLCBkb2MuYm9keSwgImVuZENv
bnRhaW5lciBpcyB3cm9uZyBhdCBzdGFydCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kT2Zm
c2V0LCAxLCAiZW5kT2Zmc2V0IGlzIHdyb25nIGF0IHN0YXJ0Iik7DQogICAgICBkb2MuYm9keS5y
ZW1vdmVDaGlsZChwKTsNCiAgICAgIGFzc2VydChyLmNvbGxhcHNlZCwgImNvbGxhcHNlZCBpcyB3
cm9uZyBhZnRlciBkZWxldGlvbiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHIuY29tbW9uQW5jZXN0
b3JDb250YWluZXIsIGRvYy5ib2R5LCAiY29tbW9uQW5jZXN0b3JDb250YWluZXIgaXMgd3Jvbmcg
YWZ0ZXIgZGVsZXRpb24iKTsNCiAgICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCBk
b2MuYm9keSwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIGRlbGV0aW9uIik7DQogICAg
ICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMCwgInN0YXJ0T2Zmc2V0IGlzIHdyb25nIGFm
dGVyIGRlbGV0aW9uIik7DQogICAgICBhc3NlcnRFcXVhbHMoci5lbmRDb250YWluZXIsIGRvYy5i
b2R5LCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVyIGRlbGV0aW9uIik7DQogICAgICBhc3Nl
cnRFcXVhbHMoci5lbmRPZmZzZXQsIDAsICJlbmRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgZGVsZXRp
b24iKTsNCiAgICAgIHJldHVybiAxOw0KICAgIH0sDQoNCiAgICAvLyBIVFRQDQogICAgZnVuY3Rp
b24gKCkgew0KICAgICAgLy8gdGVzdCAxNDogSFRUUCAtIENvbnRlbnQtVHlwZTogaW1hZ2UvcG5n
DQogICAgICBhc3NlcnQoIW5vdGlmaWNhdGlvbnNbJ2VtcHR5LnBuZyddLCAicHJpdmlsZWdlIGVz
Y2FsYXRpb24gc2VjdXJpdHkgYnVnOiBQTkcgcmFuIHNjcmlwdCIpOw0KICAgICAgdmFyIGlmcmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXTsNCiAgICAgIGFz
c2VydChpZnJhbWUsICJubyA8aWZyYW1lPiBzdXBwb3J0Iik7DQogICAgICBpZiAoaWZyYW1lICYm
IGlmcmFtZS5jb250ZW50RG9jdW1lbnQpIHsNCiAgICAgICAgdmFyIHBzID0gaWZyYW1lLmNvbnRl
bnREb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpOw0KICAgICAgICBpZiAocHMubGVu
Z3RoID4gMCkgew0KICAgICAgICAgIGlmIChwc1swXS5maXJzdENoaWxkICYmIHBzWzBdLmZpcnN0
Q2hpbGQuZGF0YSAmJiBwc1swXS5maXJzdENoaWxkLmRhdGEgPT0gJ0ZBSUwnKQ0KICAgICAgICAg
ICAgZmFpbCgiUE5HIHdhcyBwYXJzZWQgYXMgSFRNTC4iKTsNCiAgICAgICAgfQ0KICAgICAgfQ0K
ICAgICAgcmV0dXJuIDE7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0
IDE1OiBIVFRQIC0gQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQogICAgICBhc3NlcnQoIW5vdGlm
aWNhdGlvbnNbJ2VtcHR5LnR4dCddLCAicHJpdmlsZWdlIGVzY2FsYXRpb24gc2VjdXJpdHkgYnVn
OiB0ZXh0IGZpbGUgcmFuIHNjcmlwdCIpOw0KICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVsxXTsNCiAgICAgIGFzc2VydChpZnJhbWUsICJu
byA8aWZyYW1lPiBzdXBwb3J0Iik7DQogICAgICBpZiAoaWZyYW1lICYmIGlmcmFtZS5jb250ZW50
RG9jdW1lbnQpIHsNCiAgICAgICAgdmFyIHBzID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgncCcpOw0KICAgICAgICBpZiAocHMubGVuZ3RoID4gMCkgew0KICAg
ICAgICAgIGlmIChwc1swXS5maXJzdENoaWxkICYmIHBzWzBdLmZpcnN0Q2hpbGQuZGF0YSAmJiBw
c1swXS5maXJzdENoaWxkLmRhdGEgPT0gJ0ZBSUwnKQ0KICAgICAgICAgICAgZmFpbCgidGV4dC9w
bGFpbiBmaWxlIHdhcyBwYXJzZWQgYXMgSFRNTCIpOw0KICAgICAgICB9DQogICAgICB9DQogICAg
ICByZXR1cm4gMTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgMTY6
IDxvYmplY3Q+IGhhbmRsaW5nIGFuZCBIVFRQIHN0YXR1cyBjb2Rlcw0KICAgICAgdmFyIG9DID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2JqZWN0Jyk7DQogICAgICBvQy5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiRkFJTCIpKTsNCiAgICAgIHZhciBvQiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ29iamVjdCcpOw0KICAgICAgdmFyIG9BID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnb2JqZWN0Jyk7DQogICAgICBvQS5kYXRhID0gInN1cHBvcnQtYS5wbmciOw0KICAg
ICAgb0IuZGF0YSA9ICJzdXBwb3J0LWIucG5nIjsNCiAgICAgIG9CLmFwcGVuZENoaWxkKG9DKTsN
CiAgICAgIG9DLmRhdGEgPSAic3VwcG9ydC1jLnBuZyI7DQogICAgICBvQS5hcHBlbmRDaGlsZChv
Qik7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibWFwIilbMF0uYXBwZW5k
Q2hpbGQob0EpOw0KICAgICAgLy8gYXNzdW1pbmcgdGhlIGFib3ZlIGRpZG4ndCByYWlzZSBhbnkg
ZXhjZXB0aW9ucywgdGhpcyB0ZXN0IGhhcyBwYXNzZWQNCiAgICAgIC8vICh0aGUgcmVhbCB0ZXN0
IGlzIHdoZXRoZXIgdGhlIHJlbmRlcmluZyBpcyBjb3JyZWN0KQ0KICAgICAgcmV0dXJuIDE7DQog
ICAgfSwNCg0KICAgIC8vIGJ1Y2tldCAyOiBET00yIENvcmUgYW5kIERPTTIgRXZlbnRzDQogICAg
Ly8gQ29yZQ0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgMTc6IGhhc0F0dHJpYnV0
ZQ0KICAgICAgLy8gbWlzc2luZyBhdHRyaWJ1dGUNCiAgICAgIGFzc2VydCghZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ21hcCcpWzBdLmhhc0F0dHJpYnV0ZSgnaWQnKSwgImhhc0F0dHJp
YnV0ZSBmYWlsdXJlIGZvciAnaWQnIG9uIG1hcCIpOw0KICAgICAgLy8gaW1wbGllZCBhdHRyaWJ1
dGUNCiAgICAgIGFzc2VydCghZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVsw
XS5oYXNBdHRyaWJ1dGUoJ21ldGhvZCcpLCAiaGFzQXR0cmlidXRlIGZhaWx1cmUgZm9yICdtZXRo
b2QnIG9uIGZvcm0iKTsNCiAgICAgIC8vIGFjdHVhbGx5IHByZXNlbnQgYXR0cmlidXRlDQogICAg
ICBhc3NlcnQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXS5oYXNBdHRy
aWJ1dGUoJ2FjdGlvbicpLCAiaGFzQXR0cmlidXRlIGZhaWx1cmUgZm9yICdhY3Rpb24nIG9uIGZv
cm0iKTsNCiAgICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
Zm9ybScpWzBdLmdldEF0dHJpYnV0ZSgnYWN0aW9uJyksICcnLCAiYXR0cmlidXRlICdhY3Rpb24n
IG9uIGZvcm0gaGFzIHdyb25nIHZhbHVlIik7DQogICAgICByZXR1cm4gMjsNCiAgICB9LA0KICAg
IGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgMTg6IG5vZGVUeXBlICh0aGlzIHRlc3QgYWxz
byByZWxpZXMgb24gYWNjdXJhdGUgcGFyc2luZyBvZiB0aGUgZG9jdW1lbnQpDQogICAgICBhc3Nl
cnRFcXVhbHMoZG9jdW1lbnQubm9kZVR5cGUsIDksICJkb2N1bWVudCBub2RlVHlwZSB3cm9uZyIp
Ow0KICAgICAgYXNzZXJ0RXF1YWxzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5ub2RlVHlwZSwg
MSwgImVsZW1lbnQgbm9kZVR5cGUgd3JvbmciKTsNCiAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVB
dHRyaWJ1dGUpIC8vIHN1cHBvcnQgZm9yIGF0dHJpYnV0ZSBub2RlcyBpcyBvcHRpb25hbCBpbiBB
Y2lkMywgYmVjYXVzZSBhdHRyaWJ1dGUgbm9kZXMgbWlnaHQgYmUgcmVtb3ZlZCBmcm9tIERPTSBD
b3JlIGluIHRoZSBmdXR1cmUuDQogICAgICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5jcmVhdGVB
dHRyaWJ1dGUoJ3Rlc3QnKS5ub2RlVHlwZSwgMiwgImF0dHJpYnV0ZSBub2RlVHlwZSB3cm9uZyIp
OyAvLyBob3dldmVyLCBpZiB0aGV5J3JlIHN1cHBvcnRlZCwgdGhleSdkIGJldHRlciB3b3JrDQog
ICAgICBhc3NlcnRFcXVhbHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlJykuZmlyc3RD
aGlsZC5ub2RlVHlwZSwgMywgInRleHQgbm9kZSBub2RlVHlwZSB3cm9uZyIpOw0KICAgICAgYXNz
ZXJ0RXF1YWxzKGRvY3VtZW50LmZpcnN0Q2hpbGQubm9kZVR5cGUsIDEwLCAiRE9DVFlQRSBub2Rl
VHlwZSB3cm9uZyIpOw0KICAgICAgcmV0dXJuIDI7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7
DQogICAgICAvLyB0ZXN0IDE5OiB2YWx1ZSBvZiBjb25zdGFudHMNCiAgICAgIHZhciBlID0gbnVs
bDsNCiAgICAgIHRyeSB7DQogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KTsNCiAgICAgICAgIC8vIHJhaXNlcyBhIEhJRVJBUkNIWV9SRVFV
RVNUX0VSUg0KICAgICAgfSBjYXRjaCAoZXJyKSB7DQogICAgICAgIGUgPSBlcnI7DQogICAgICB9
DQogICAgICBhc3NlcnRFcXVhbHMoZG9jdW1lbnQuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSwgMTEs
ICJkb2N1bWVudCBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGNvbnN0YW50IG1pc3Npbmcgb3Igd3Jv
bmciKTsNCiAgICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5ib2R5LkNPTU1FTlRfTk9ERSwgOCwg
ImVsZW1lbnQgQ09NTUVOVF9OT0RFIGNvbnN0YW50IG1pc3Npbmcgb3Igd3JvbmciKTsNCiAgICAg
IGFzc2VydEVxdWFscyhkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykuRUxFTUVOVF9OT0RFLCAx
LCAidGV4dCBub2RlIEVMRU1FTlRfTk9ERSBjb25zdGFudCBtaXNzaW5nIG9yIHdyb25nIik7DQog
ICAgICBhc3NlcnQoZS5ISUVSQVJDSFlfUkVRVUVTVF9FUlIgPT0gMywgImV4Y2VwdGlvbiBISUVS
QVJDSFlfUkVRVUVTVF9FUlIgY29uc3RhbnQgbWlzc2luZyBvciB3cm9uZyIpDQogICAgICBhc3Nl
cnRFcXVhbHMoZS5jb2RlLCAzLCAiaW5jb3JyZWN0IGV4Y2VwdGlvbiByYWlzZWQgZnJvbSBhcHBl
bmRDaGlsZCgpIik7DQogICAgICByZXR1cm4gMjsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsN
CiAgICAgIC8vIHRlc3QgMjA6IG51bGxzIGJ5dGVzIGluIHZhcmlvdXMgcGxhY2VzDQogICAgICBh
c3NlcnQoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWNrZXQxXDBlcnJvcicpLCAibnVsbCBp
biBnZXRFbGVtZW50QnlJZCgpIHByb2JhYmx5IHRlcm1pbmF0ZWQgc3RyaW5nIik7DQogICAgICB2
YXIgb2sgPSB0cnVlOw0KICAgICAgdHJ5IHsNCiAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZm9ybVwwZGl2Jyk7DQogICAgICAgIG9rID0gZmFsc2U7DQogICAgICB9IGNhdGNoIChlKSB7
DQogICAgICAgIGlmIChlLmNvZGUgIT0gNSkNCiAgICAgICAgICBvayA9IGZhbHNlOw0KICAgICAg
fQ0KICAgICAgYXNzZXJ0KG9rLCAiZGlkbid0IHJhaXNlIHRoZSByaWdodCBleGNlcHRpb24gZm9y
IG51bGwgYnl0ZSBpbiBjcmVhdGVFbGVtZW50KCkiKTsNCiAgICAgIHJldHVybiAyOw0KICAgIH0s
DQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCAyMTogYmFzaWMgbmFtZXNwYWNlIHN0
dWZmDQogICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDov
L25zLmV4YW1wbGUuY29tLycsICdwcmVmaXg6bG9jYWxuYW1lJyk7DQogICAgICBhc3NlcnRFcXVh
bHMoZWxlbWVudC50YWdOYW1lLCAncHJlZml4OmxvY2FsbmFtZScsICJ3cm9uZyB0YWdOYW1lIik7
DQogICAgICBhc3NlcnRFcXVhbHMoZWxlbWVudC5ub2RlTmFtZSwgJ3ByZWZpeDpsb2NhbG5hbWUn
LCAid3Jvbmcgbm9kZU5hbWUiKTsNCiAgICAgIGFzc2VydEVxdWFscyhlbGVtZW50LnByZWZpeCwg
J3ByZWZpeCcsICJ3cm9uZyBwcmVmaXgiKTsNCiAgICAgIGFzc2VydEVxdWFscyhlbGVtZW50Lmxv
Y2FsTmFtZSwgJ2xvY2FsbmFtZScsICJ3cm9uZyBsb2NhbE5hbWUiKTsNCiAgICAgIGFzc2VydEVx
dWFscyhlbGVtZW50Lm5hbWVzcGFjZVVSSSwgJ2h0dHA6Ly9ucy5leGFtcGxlLmNvbS8nLCAid3Jv
bmcgbmFtZXNwYWNlVVJJIik7DQogICAgICByZXR1cm4gMjsNCiAgICB9LA0KICAgIGZ1bmN0aW9u
ICgpIHsNCiAgICAgIC8vIHRlc3QgMjI6IGNyZWF0ZUVsZW1lbnQoKSB3aXRoIGludmFsaWQgdGFn
IG5hbWVzDQogICAgICB2YXIgdGVzdCA9IGZ1bmN0aW9uIChuYW1lKSB7DQogICAgICAgIHZhciBy
ZXN1bHQ7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQobmFtZSk7DQogICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICByZXN1bHQg
PSBlOw0KICAgICAgICB9DQogICAgICAgIGFzc2VydChyZXN1bHQsICJubyBleGNlcHRpb24gZm9y
IGNyZWF0ZUVsZW1lbnQoJyIgKyBuYW1lICsgIicpIik7DQogICAgICAgIGFzc2VydEVxdWFscyhy
ZXN1bHQuY29kZSwgNSwgIndyb25nIGV4Y2VwdGlvbiBmb3IgY3JlYXRlRWxlbWVudCgnIiArIG5h
bWUgKyAiJykiKTsgLy8gSU5WQUxJRF9DSEFSQUNURVJfRVJSDQogICAgICB9DQogICAgICB0ZXN0
KCc8ZGl2PicpOw0KICAgICAgdGVzdCgnMGRpdicpOw0KICAgICAgdGVzdCgnZGkgdicpOw0KICAg
ICAgdGVzdCgnZGk8dicpOw0KICAgICAgdGVzdCgnLWRpdicpOw0KICAgICAgdGVzdCgnLmRpdicp
Ow0KICAgICAgcmV0dXJuIDI7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0
ZXN0IDIzOiBjcmVhdGVFbGVtZW50TlMoKSB3aXRoIGludmFsaWQgdGFnIG5hbWVzDQogICAgICB2
YXIgdGVzdCA9IGZ1bmN0aW9uIChuYW1lLCBucywgY29kZSkgew0KICAgICAgICB2YXIgcmVzdWx0
Ow0KICAgICAgICB0cnkgew0KICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMobnMsIG5hbWUpOw0KICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgcmVzdWx0
ID0gZTsNCiAgICAgICAgfQ0KICAgICAgICBhc3NlcnQocmVzdWx0LCAibm8gZXhjZXB0aW9uIGZv
ciBjcmVhdGVFbGVtZW50TlMoJyIgKyBucyArICInLCAnIiArIG5hbWUgKyAiJykiKTsNCiAgICAg
ICAgYXNzZXJ0RXF1YWxzKHJlc3VsdC5jb2RlLCBjb2RlLCAid3JvbmcgZXhjZXB0aW9uIGZvciBj
cmVhdGVFbGVtZW50TlMoJyIgKyBucyArICInLCAnIiArIG5hbWUgKyAiJykiKTsNCiAgICAgIH0N
CiAgICAgIHRlc3QoJzxkaXY+JywgbnVsbCwgNSk7DQogICAgICB0ZXN0KCcwZGl2JywgbnVsbCwg
NSk7DQogICAgICB0ZXN0KCdkaSB2JywgbnVsbCwgNSk7DQogICAgICB0ZXN0KCdkaTx2JywgbnVs
bCwgNSk7DQogICAgICB0ZXN0KCctZGl2JywgbnVsbCwgNSk7DQogICAgICB0ZXN0KCcuZGl2Jywg
bnVsbCwgNSk7DQogICAgICB0ZXN0KCc8ZGl2PicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7
DQogICAgICB0ZXN0KCcwZGl2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsNCiAgICAgIHRl
c3QoJ2RpPHYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOw0KICAgICAgdGVzdCgnLWRpdics
ICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7DQogICAgICB0ZXN0KCcuZGl2JywgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCA1KTsNCiAgICAgIHRlc3QoJzpkaXYnLCBudWxsLCAxNCk7DQogICAgICB0
ZXN0KCc6ZGl2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAxNCk7DQogICAgICB0ZXN0KCdkOml2
JywgbnVsbCwgMTQpOw0KICAgICAgdGVzdCgneG1sOnRlc3QnLCAiaHR0cDovL2V4YW1wbGUuY29t
LyIsIDE0KTsNCiAgICAgIHRlc3QoJ3htbG5zOnRlc3QnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIs
IDE0KTsgLy8gKHRlY2huaWNhbGx5IGEgRE9NMyBDb3JlIHRlc3QpDQogICAgICB0ZXN0KCd4OnRl
c3QnLCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAxNCk7IC8vICh0ZWNobmljYWxs
eSBhIERPTTMgQ29yZSB0ZXN0KQ0KICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICd4bWxuczp0ZXN0Jyk7IC8vICh0ZWNobmljYWxs
eSBhIERPTTMgQ29yZSB0ZXN0KQ0KICAgICAgcmV0dXJuIDI7DQogICAgfSwNCiAgICBmdW5jdGlv
biAoKSB7DQogICAgICAvLyB0ZXN0IDI0OiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZXMNCiAgICAg
IGFzc2VydEVxdWFscyhkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnb25sb2FkJyksICJ1cGRh
dGUoKSAgLyogdGhpcyBhdHRyaWJ1dGUncyB2YWx1ZSBpcyB0ZXN0ZWQgaW4gb25lIG9mIHRoZSB0
ZXN0cyAqLyAiLCAib25sb2FkIHZhbHVlIHdyb25nIik7DQogICAgICByZXR1cm4gMjsNCiAgICB9
LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgMjU6IHRlc3QgbmFtZXNwYWNlIGNo
ZWNraW5nIGluIGNyZWF0ZURvY3VtZW50VHlwZSwgYW5kDQogICAgICAvLyBjaGVjayB0aGF0IGV4
Y2VwdGlvbnMgdGhhdCBhcmUgdGhyb3duIGFyZSBET01FeGNlcHRpb24gb2JqZWN0cw0KICAgICAg
dmFyIG1lc3NhZ2UgPSAiIjsNCiAgICAgIHRyeSB7DQogICAgICAgIGRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgnYTonLCAnJywgJycpOyAvKiBkb2Vzbid0IGNvbnRh
aW4gYW4gaWxsZWdhbCBjaGFyYWN0ZXI7IGlzIG1hbGZvcm1lZCAqLw0KICAgICAgICBtZXNzYWdl
ID0gImZhaWxlZCB0byByYWlzZSBleGNlcHRpb24iOw0KICAgICAgfSBjYXRjaCAoZSkgew0KICAg
ICAgICBpZiAoZS5jb2RlICE9IGUuTkFNRVNQQUNFX0VSUikNCiAgICAgICAgICBtZXNzYWdlID0g
Indyb25nIGV4Y2VwdGlvbiI7DQogICAgICAgIGVsc2UgaWYgKGUuSU5WQUxJRF9BQ0NFU1NfRVJS
ICE9IDE1KQ0KICAgICAgICAgIG1lc3NhZ2UgPSAiZXhjZXB0aW9ucyBkb24ndCBoYXZlIGFsbCB0
aGUgY29uc3RhbnRzIjsNCiAgICAgIH0NCiAgICAgIGlmIChtZXNzYWdlKQ0KICAgICAgICBmYWls
KG1lc3NhZ2UpOw0KICAgICAgcmV0dXJuIDI7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQog
ICAgICAvLyB0ZXN0IDI2OiBjaGVjayB0aGF0IGRvY3VtZW50IHRyZWUgc3Vydml2ZXMgd2hpbGUg
c3RpbGwgYWNjZXNzaWJsZQ0KICAgICAgdmFyIGQ7DQogICAgICAvLyBlMSAtIGFuIGVsZW1lbnQg
dGhhdCdzIGluIGEgZG9jdW1lbnQNCiAgICAgIGQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5j
cmVhdGVEb2N1bWVudChudWxsLCBudWxsLCBudWxsKTsNCiAgICAgIHZhciBlMSA9IGQuY3JlYXRl
RWxlbWVudCgndGVzdCcpOw0KICAgICAgZC5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoJ3Jv
b3QnKSk7DQogICAgICBkLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChlMSk7DQogICAgICBh
c3NlcnQoZTEucGFyZW50Tm9kZSwgImUxIC0gcGFyZW50IGVsZW1lbnQgZG9lc24ndCBleGlzdCIp
Ow0KICAgICAgYXNzZXJ0KGUxLnBhcmVudE5vZGUub3duZXJEb2N1bWVudCwgImUxIC0gZG9jdW1l
bnQgZG9lc24ndCBleGlzdCIpOw0KICAgICAgLy8gZTIgLSBhbiBlbGVtZW50IHRoYXQncyBub3Qg
aW4gYSBkb2N1bWVudA0KICAgICAgZCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURv
Y3VtZW50KG51bGwsIG51bGwsIG51bGwpOw0KICAgICAgdmFyIGUyID0gZC5jcmVhdGVFbGVtZW50
KCd0ZXN0Jyk7DQogICAgICBkLmNyZWF0ZUVsZW1lbnQoJ3Jvb3QnKS5hcHBlbmRDaGlsZChlMik7
DQogICAgICBhc3NlcnQoZTIucGFyZW50Tm9kZSwgImUyIC0gcGFyZW50IGVsZW1lbnQgZG9lc24n
dCBleGlzdCIpOw0KICAgICAgYXNzZXJ0KGUyLnBhcmVudE5vZGUub3duZXJEb2N1bWVudCwgImUy
IC0gZG9jdW1lbnQgZG9lc24ndCBleGlzdCIpOw0KICAgICAgLy8gbm93IHRyeSB0byBkZWNvdXBs
ZSB0aGVtDQogICAgICBkID0gbnVsbDsNCiAgICAgIGt1bmdGdURlYXRoR3JpcCA9IFtlMSwgZTJd
Ow0KICAgICAgYXNzZXJ0KGUxLnBhcmVudE5vZGUsICJlMSAtIHBhcmVudCBlbGVtZW50IGRvZXNu
J3QgZXhpc3QgYWZ0ZXIgZHJvcHBpbmcgcmVmZXJlbmNlIHRvIGRvY3VtZW50Iik7DQogICAgICBh
c3NlcnQoZTEucGFyZW50Tm9kZS5vd25lckRvY3VtZW50LCAiZTEgLSBkb2N1bWVudCBkb2Vzbid0
IGV4aXN0IGFmdGVyIGRyb3BwaW5nIHJlZmVyZW5jZSB0byBkb2N1bWVudCIpOw0KICAgICAgYXNz
ZXJ0KGUyLnBhcmVudE5vZGUsICJlMiAtIHBhcmVudCBlbGVtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0
ZXIgZHJvcHBpbmcgcmVmZXJlbmNlIHRvIGRvY3VtZW50Iik7DQogICAgICBhc3NlcnQoZTIucGFy
ZW50Tm9kZS5vd25lckRvY3VtZW50LCAiZTIgLSBkb2N1bWVudCBkb2Vzbid0IGV4aXN0IGFmdGVy
IGRyb3BwaW5nIHJlZmVyZW5jZSB0byBkb2N1bWVudCIpOw0KICAgICAgdmFyIGxvb3BzID0gbmV3
IERhdGUoKS52YWx1ZU9mKCkgKiAyLjgxMzQzNWUtOSAtIDI0MTI7IC8vIGluY3JlYXNlcyBsaW5l
YXJseSBvdmVyIHRpbWUNCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9vcHM7IGkgKz0gMSkg
ew0KICAgICAgICAvLyB3ZSB3YW50IHRvIGZvcmNlIGEgR0MgaGVyZSwgc28gd2UgdXNlIHVwIGxv
dHMgb2YgbWVtb3J5DQogICAgICAgIC8vIHdlIHRha2UgdGhlIG9wcG9ydHVuaXR5IHRvIHNuZWFr
IGluIGEgcGVyZiB0ZXN0IHRvIG1ha2UgRE9NIGFuZCBKUyBzdHVmZiBmYXN0ZXIuLi4NCiAgICAg
ICAgZCA9IG5ldyBEYXRlKCk7DQogICAgICAgIGQgPSBuZXcgKGZ1bmN0aW9uICh4KSB7IHJldHVy
biB7IHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiB4LnRvU3RyaW5nKCkgfSB9IH0pKGQu
dmFsdWVPZigpKTsNCiAgICAgICAgZCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJpdGVyYXRp
b24gIiArIGkgKyAiIGF0ICIgKyBkKTsNCiAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
YScpLmFwcGVuZENoaWxkKGQpOw0KICAgICAgICBkID0gZC5wYXJlbnROb2RlOw0KICAgICAgICBk
b2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVj
a2V0MScpLnBhcmVudE5vZGUpOw0KICAgICAgICBhc3NlcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2J1Y2tldDInKS5uZXh0U2libGluZy5wYXJlbnROb2RlLnByZXZpb3VzU2libGluZy5maXJz
dENoaWxkLmRhdGEubWF0Y2goL0FUXFcvaSksICJpdGVyYXRpb24gIiArIGkgKyAiIGZhaWxlZCIp
Ow0KICAgICAgICBkLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBkLnRleHRDb250ZW50KTsNCiAgICAg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkKTsNCiAgICAgIH0NCiAgICAgIGFzc2VydChl
MS5wYXJlbnROb2RlLCAiZTEgLSBwYXJlbnQgZWxlbWVudCBkb2Vzbid0IGV4aXN0IGFmdGVyIGxv
b3BpbmciKTsNCiAgICAgIGFzc2VydChlMS5wYXJlbnROb2RlLm93bmVyRG9jdW1lbnQsICJlMSAt
IGRvY3VtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgbG9vcGluZyIpOw0KICAgICAgYXNzZXJ0RXF1
YWxzKGUxLnBhcmVudE5vZGUub3duZXJEb2N1bWVudC5ub2RlVHlwZSwgOSwgImUxIC0gZG9jdW1l
bnQgbm9kZSB0eXBlIGhhcyB3cm9uZyBub2RlIHR5cGUiKTsNCiAgICAgIGFzc2VydChlMi5wYXJl
bnROb2RlLCAiZTIgLSBwYXJlbnQgZWxlbWVudCBkb2Vzbid0IGV4aXN0IGFmdGVyIGxvb3Bpbmci
KTsNCiAgICAgIGFzc2VydChlMi5wYXJlbnROb2RlLm93bmVyRG9jdW1lbnQsICJlMiAtIGRvY3Vt
ZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgbG9vcGluZyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGUy
LnBhcmVudE5vZGUub3duZXJEb2N1bWVudC5ub2RlVHlwZSwgOSwgImUyIC0gZG9jdW1lbnQgbm9k
ZSB0eXBlIGhhcyB3cm9uZyBub2RlIHR5cGUiKTsNCiAgICAgIHJldHVybiAyOw0KICAgIH0sDQog
ICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCAyNzogYSBjb250aW51YXRpb24gb2YgdGhl
IHByZXZpb3VzIHRlc3QNCiAgICAgIHZhciBlMSA9IGt1bmdGdURlYXRoR3JpcFswXTsNCiAgICAg
IHZhciBlMiA9IGt1bmdGdURlYXRoR3JpcFsxXTsNCiAgICAgIGt1bmdGdURlYXRoR3JpcCA9IG51
bGw7DQogICAgICBhc3NlcnQoZTEsICJlMSAtIGVsZW1lbnQgaXRzZWxmIGRpZG4ndCBzdXJ2aXZl
IGFjcm9zcyB0ZXN0cyIpOw0KICAgICAgYXNzZXJ0KGUxLnBhcmVudE5vZGUsICJlMSAtIHBhcmVu
dCBlbGVtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgd2FpdGluZyIpOw0KICAgICAgYXNzZXJ0KGUx
LnBhcmVudE5vZGUub3duZXJEb2N1bWVudCwgImUxIC0gZG9jdW1lbnQgZG9lc24ndCBleGlzdCBh
ZnRlciB3YWl0aW5nIik7DQogICAgICBhc3NlcnRFcXVhbHMoZTEucGFyZW50Tm9kZS5vd25lckRv
Y3VtZW50Lm5vZGVUeXBlLCA5LCAiZTEgLSBkb2N1bWVudCBub2RlIHR5cGUgaGFzIHdyb25nIG5v
ZGUgdHlwZSBhZnRlciB3YWl0aW5nIik7DQogICAgICBhc3NlcnQoZTIsICJlMiAtIGVsZW1lbnQg
aXRzZWxmIGRpZG4ndCBzdXJ2aXZlIGFjcm9zcyB0ZXN0cyIpOw0KICAgICAgYXNzZXJ0KGUyLnBh
cmVudE5vZGUsICJlMiAtIHBhcmVudCBlbGVtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgd2FpdGlu
ZyIpOw0KICAgICAgYXNzZXJ0KGUyLnBhcmVudE5vZGUub3duZXJEb2N1bWVudCwgImUyIC0gZG9j
dW1lbnQgZG9lc24ndCBleGlzdCBhZnRlciB3YWl0aW5nIik7DQogICAgICBhc3NlcnRFcXVhbHMo
ZTIucGFyZW50Tm9kZS5vd25lckRvY3VtZW50Lm5vZGVUeXBlLCA5LCAiZTIgLSBkb2N1bWVudCBu
b2RlIHR5cGUgaGFzIHdyb25nIG5vZGUgdHlwZSBhZnRlciB3YWl0aW5nIik7DQogICAgICByZXR1
cm4gMjsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgMjg6IGdldEVs
ZW1lbnRCeUlkKCkNCiAgICAgIC8vIC4uLmFuZCBuYW1lPSIiDQogICAgICBhc3NlcnQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0nKSAhPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2Zvcm0nKVswXSwgImdldEVsZW1lbnRCeUlkKCkgc2VhcmNoZWQgb24gJ25hbWUnIik7DQog
ICAgICAvLyAuLi5hbmQgYSBzcGFjZSBjaGFyYWN0ZXIgYXMgdGhlIElEDQogICAgICB2YXIgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICBkaXYuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0ZBSUwnKSk7DQogICAgICBkaXYuaWQgPSAiICI7DQog
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7IC8vIGl0J3MgaGlkZGVuIGJ5IENT
Uw0KICAgICAgYXNzZXJ0KGRpdiA9PT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIiAiKSwgImdl
dEVsZW1lbnRCeUlkKCkgZGlkbid0IHJldHVybiB0aGUgcmlnaHQgZWxlbWVudCIpOw0KICAgICAg
cmV0dXJuIDI7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDI5OiBj
aGVjayB0aGF0IHdoaXRlc3BhY2Ugc3Vydml2ZXMgY2xvbmluZw0KICAgICAgdmFyIHQxID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RhYmxlJylbMF07DQogICAgICB2YXIgdDIgPSB0
MS5jbG9uZU5vZGUodHJ1ZSk7DQogICAgICBhc3NlcnRFcXVhbHModDIudEJvZGllc1swXS5yb3dz
WzBdLmNlbGxzWzBdLmZpcnN0Q2hpbGQudGFnTmFtZSwgJ1AnLCAiPHA+IGRpZG4ndCBjbG9uZSBy
aWdodCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHQyLnRCb2RpZXNbMF0ucm93c1swXS5jZWxsc1sw
XS5maXJzdENoaWxkLmNoaWxkTm9kZXMubGVuZ3RoLCAwLCAiPHA+IGdvdCBjaGlsZCBub2RlcyBh
ZnRlciBjbG9uaW5nIik7DQogICAgICBhc3NlcnRFcXVhbHModDIuY2hpbGROb2Rlcy5sZW5ndGgs
IDIsICJjbG9uZWQgdGFibGUgaGFkIHdyb25nIG51bWJlciBvZiBjaGlsZHJlbiIpOw0KICAgICAg
YXNzZXJ0RXF1YWxzKHQyLmxhc3RDaGlsZC5kYXRhLCAiICIsICJjbG9uZWQgdGFibGUgbG9zdCB3
aGl0ZXNwYWNlIHRleHQgbm9kZSIpOw0KICAgICAgcmV0dXJuIDI7DQogICAgfSwNCg0KICAgIC8v
IEV2ZW50cw0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgMzA6IGRpc3BhdGNoRXZl
bnQoKQ0KICAgICAgdmFyIGNvdW50ID0gMDsNCiAgICAgIHZhciBvayA9IHRydWU7DQogICAgICB2
YXIgdGVzdCA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICBpZiAoZXZlbnQuZGV0YWlsICE9
IDYpDQogICAgICAgICAgb2sgPSBmYWxzZTsNCiAgICAgICAgY291bnQrKzsNCiAgICAgIH07DQog
ICAgICAvLyB0ZXN0IGV2ZW50IGxpc3RlbmVyIGFkZGl0aW9uDQogICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIHRlc3QsIGZhbHNl
KTsNCiAgICAgIC8vIHRlc3QgZXZlbnQgY3JlYXRpb24NCiAgICAgIHZhciBldmVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUV2ZW50KCdVSUV2ZW50cycpOw0KICAgICAgZXZlbnQuaW5pdFVJRXZlbnQoJ3Rl
c3QnLCB0cnVlLCBmYWxzZSwgbnVsbCwgNik7DQogICAgICAvLyB0ZXN0IGV2ZW50IGRpc3BhdGNo
IG9uIGVsZW1lbnRzIGFuZCB0ZXh0IG5vZGVzDQogICAgICBhc3NlcnQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Njb3JlJykuZGlzcGF0Y2hFdmVudChldmVudCksICJkaXNwYXRjaEV2ZW50ICMx
IGZhaWxlZCIpOw0KICAgICAgYXNzZXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZScp
Lm5leHRTaWJsaW5nLmRpc3BhdGNoRXZlbnQoZXZlbnQpLCAiZGlzcGF0Y2hFdmVudCAjMiBmYWls
ZWQiKTsNCiAgICAgIC8vIHRlc3QgZXZlbnQgbGlzdGVuZXIgcmVtb3ZhbA0KICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCB0
ZXN0LCBmYWxzZSk7DQogICAgICBhc3NlcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3Jl
JykuZGlzcGF0Y2hFdmVudChldmVudCksICJkaXNwYXRjaEV2ZW50ICMzIGZhaWxlZCIpOw0KICAg
ICAgYXNzZXJ0RXF1YWxzKGNvdW50LCAyLCAidW5leHBlY3RlZCBudW1iZXIgb2YgZXZlbnRzIGhh
bmRsZWQiKTsNCiAgICAgIGFzc2VydChvaywgInVuZXhwZWN0ZWQgZXZlbnRzIGhhbmRsZWQiKTsN
CiAgICAgIHJldHVybiAyOw0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVz
dCAzMTogZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgYW5kIGNhcHR1cmUNCiAgICAgIC8vIHdlJ3Jl
IGdvaW5nIHRvIHVzZSBhbiBpbnB1dCBlbGVtZW50IGJlY2F1c2Ugd2UgY2FuIGNhdXNlIGV2ZW50
cyB0byBidWJibGUgZnJvbSBpdA0KICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnaW5wdXQnKTsNCiAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsNCiAgICAgIGRpdi5hcHBlbmRDaGlsZChpbnB1dCk7DQogICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRpdik7DQogICAgICAvLyB0aGUgdGVzdCB3aWxsIGNvbnNpc3Qgb2YgdHdv
IGV2ZW50IGhhbmRsZXJzOg0KICAgICAgdmFyIG9rID0gdHJ1ZTsNCiAgICAgIHZhciBjYXB0dXJl
Q291bnQgPSAwOw0KICAgICAgdmFyIHRlc3RDYXB0dXJlID0gZnVuY3Rpb24gKGV2ZW50KSB7DQog
ICAgICAgIG9rID0gb2sgJiYNCiAgICAgICAgICAgICAoZXZlbnQudHlwZSA9PSAnY2xpY2snKSAm
Jg0KICAgICAgICAgICAgIChldmVudC50YXJnZXQgPT0gaW5wdXQpICYmDQogICAgICAgICAgICAg
KGV2ZW50LmN1cnJlbnRUYXJnZXQgPT0gZGl2KSAmJg0KICAgICAgICAgICAgIChldmVudC5ldmVu
dFBoYXNlID09IDEpICYmDQogICAgICAgICAgICAgKGV2ZW50LmJ1YmJsZXMpICYmDQogICAgICAg
ICAgICAgKGV2ZW50LmNhbmNlbGFibGUpOw0KICAgICAgICBjYXB0dXJlQ291bnQrKzsNCiAgICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIHRoaXMgc2hvdWxkbid0IHN0b3AgaXQgZnJv
bSBmaXJpbmcgYm90aCB0aW1lcyBvbiB0aGUgZGl2IGVsZW1lbnQNCiAgICAgIH07DQogICAgICB2
YXIgdGVzdEJ1YmJsZSA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICBvayA9IGZhbHNlOw0K
ICAgICAgfTsNCiAgICAgIC8vIG9uZSBvZiB3aGljaCBpcyBhZGRlZCB0d2ljZToNCiAgICAgIGRp
di5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgeyB0ZXN0Q2FwdHVy
ZShldmVudCkgfSwgdHJ1ZSk7DQogICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBm
dW5jdGlvbiAoZXZlbnQpIHsgdGVzdENhcHR1cmUoZXZlbnQpIH0sIHRydWUpOw0KICAgICAgZGl2
LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGVzdEJ1YmJsZSwgZmFsc2UpOw0KICAgICAgLy8g
d2UgY2F1c2UgYW4gZXZlbnQgdG8gYnViYmxlIGxpa2UgdGhpczoNCiAgICAgIGlucHV0LnR5cGUg
PSAncmVzZXQnOw0KICAgICAgaW5wdXQuY2xpY2soKTsNCiAgICAgIC8vIGNsZWFudXAgYWZ0ZXJ3
YXJkcw0KICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOw0KICAgICAgLy8gY2Fw
dHVyZSBoYW5kbGVyIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHR3aWNlDQogICAgICBhc3NlcnRF
cXVhbHMoY2FwdHVyZUNvdW50LCAyLCAiY2FwdHVyZSBoYW5kbGVyIGNhbGxlZCB0aGUgd3Jvbmcg
bnVtYmVyIG9mIHRpbWVzIik7DQogICAgICBhc3NlcnQob2ssICJjYXB0dXJlIGhhbmRsZXIgY2Fs
bGVkIGluY29ycmVjdGx5Iik7DQogICAgICByZXR1cm4gMjsNCiAgICB9LA0KICAgIGZ1bmN0aW9u
ICgpIHsNCiAgICAgIC8vIHRlc3QgMzI6IGV2ZW50cyBidWJibGluZyB0aHJvdWdoIERvY3VtZW50
IG5vZGUNCiAgICAgIC8vIGV2ZW50IGhhbmRsZXI6DQogICAgICB2YXIgb2sgPSB0cnVlOw0KICAg
ICAgdmFyIGNvdW50ID0gMDsNCiAgICAgIHZhciB0ZXN0ID0gZnVuY3Rpb24gKGV2ZW50KSB7DQog
ICAgICAgIGNvdW50ICs9IDE7DQogICAgICAgIGlmIChldmVudC5ldmVudFBoYXNlICE9IDMpDQog
ICAgICAgICAgb2sgPSBmYWxzZTsNCiAgICAgIH0NCiAgICAgIC8vIHJlZ2lzdGVyIGV2ZW50IGhh
bmRsZXINCiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0ZXN0
LCBmYWxzZSk7DQogICAgICAvLyBjcmVhdGUgYW4gZWxlbWVudCB0aGF0IGJ1YmJsZXMgYW4gZXZl
bnQsIGFuZCBidWJibGUgaXQNCiAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2lucHV0Jyk7DQogICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7DQogICAgICBkaXYuYXBwZW5kQ2hpbGQoaW5wdXQpOw0KICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkaXYpOw0KICAgICAgaW5wdXQudHlwZSA9ICdyZXNldCc7DQogICAgICBpbnB1
dC5jbGljaygpOw0KICAgICAgLy8gdW5yZWdpc3RlciBldmVudCBoYW5kbGVyDQogICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGVzdCwgZmFsc2UpOw0KICAg
ICAgLy8gY2hlY2sgdGhhdCBpdCdzIHJlbW92ZWQgZm9yIGdvb2QNCiAgICAgIGlucHV0LmNsaWNr
KCk7DQogICAgICAvLyByZW1vdmUgdGhlIG5ld2x5IGFkZGVkIGVsZW1lbnRzDQogICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7DQogICAgICBhc3NlcnRFcXVhbHMoY291bnQsIDEs
ICJjYXB0dXJlIGhhbmRsZXIgY2FsbGVkIHRoZSB3cm9uZyBudW1iZXIgb2YgdGltZXMiKTsNCiAg
ICAgIGFzc2VydChvaywgImNhcHR1cmUgaGFuZGxlciBjYWxsZWQgaW5jb3JyZWN0bHkiKTsNCiAg
ICAgIHJldHVybiAyOw0KICAgIH0sDQoNCiAgICAvLyBidWNrZXQgMzogRE9NMiBWaWV3cywgRE9N
MiBTdHlsZSwgYW5kIFNlbGVjdG9ycw0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3Qg
MzM6IGJhc2ljIHRlc3RzIGZvciBzZWxlY3RvcnMgLSBjbGFzc2VzLCBhdHRyaWJ1dGVzDQogICAg
ICB2YXIgcDsNCiAgICAgIHZhciBidWlsZGVyID0gZnVuY3Rpb24oZG9jKSB7DQogICAgICAgIHAg
PSBkb2MuY3JlYXRlRWxlbWVudCgicCIpOw0KICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChw
KTsNCiAgICAgIH07DQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBl
Y3QpIHsNCiAgICAgICAgYnVpbGRlcihkb2MpOw0KICAgICAgICBwLmNsYXNzTmFtZSA9ICJzZWxl
Y3RvclBpbmdUZXN0IjsNCiAgICAgICAgdmFyIGdvb2QgPSBhZGQoIi5zZWxlY3RvclBpbmdUZXN0
Iik7DQogICAgICAgIGFkZCgiLlNlbGVjdG9yUGluZ1Rlc3QiKTsNCiAgICAgICAgYWRkKCIuc2Vs
ZWN0b3JwaW5ndGVzdCIpOw0KICAgICAgICBleHBlY3QoZG9jLmJvZHksIDAsICJmYWlsdXJlIDEi
KTsNCiAgICAgICAgZXhwZWN0KHAsIGdvb2QsICJmYWlsdXJlIDIiKTsNCiAgICAgIH0pOw0KICAg
ICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIGJ1
aWxkZXIoZG9jKTsNCiAgICAgICAgcC5jbGFzc05hbWUgPSAnYVx1MDAyMGJcdTAwMDljXHUwMDBB
ZFx1MDAwRGVcdTAwMENmXHUyMDAzZ1x1MzAwMGgnOw0KICAgICAgICB2YXIgZ29vZCA9IGFkZCgi
LmEuYi5jLmQuZS5mXFwyMDAzZ1xcMzAwMGgiKTsNCiAgICAgICAgZXhwZWN0KHAsIGdvb2QsICJ3
aGl0ZXNwYWNlIGVycm9yIGluIGNsYXNzIHByb2Nlc3NpbmciKTsNCiAgICAgIH0pOw0KICAgICAg
c2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIGJ1aWxk
ZXIoZG9jKTsNCiAgICAgICAgcC5jbGFzc05hbWUgPSAic2VsZWN0b3JQaW5nVGVzdCI7DQogICAg
ICAgIHZhciBnb29kID0gYWRkKCJbY2xhc3M9c2VsZWN0b3JQaW5nVGVzdF0iKTsNCiAgICAgICAg
YWRkKCJbY2xhc3M9U2VsZWN0b3JQaW5nVGVzdF0iKTsNCiAgICAgICAgYWRkKCJbY2xhc3M9c2Vs
ZWN0b3JwaW5ndGVzdF0iKTsNCiAgICAgICAgZXhwZWN0KGRvYy5ib2R5LCAwLCAiZmFpbHVyZSAz
Iik7DQogICAgICAgIGV4cGVjdChwLCBnb29kLCAiY2xhc3MgYXR0cmlidXRlIG1hdGNoaW5nIGZh
aWxlZCIpOw0KICAgICAgfSk7DQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRk
LCBleHBlY3QpIHsNCiAgICAgICAgYnVpbGRlcihkb2MpOw0KICAgICAgICBwLmNsYXNzTmFtZSA9
ICJzZWxlY3RvclBpbmdUZXN0IjsNCiAgICAgICAgdmFyIGdvb2QgPSBhZGQoIlt0aXRsZT1zZWxl
Y3RvclBpbmdUZXN0XSIpOw0KICAgICAgICBhZGQoIlt0aXRsZT1TZWxlY3RvclBpbmdUZXN0XSIp
Ow0KICAgICAgICBhZGQoIlt0aXRsZT1zZWxlY3RvcnBpbmd0ZXN0XSIpOw0KICAgICAgICBleHBl
Y3QoZG9jLmJvZHksIDAsICJmYWlsdXJlIDQiKTsNCiAgICAgICAgZXhwZWN0KHAsIDAsICJmYWls
dXJlIDUiKTsNCiAgICAgICAgcC50aXRsZSA9ICJzZWxlY3RvclBpbmdUZXN0IjsNCiAgICAgICAg
ZXhwZWN0KGRvYy5ib2R5LCAwLCAiZmFpbHVyZSA2Iik7DQogICAgICAgIGV4cGVjdChwLCBnb29k
LCAiZmFpbHVyZSA3Iik7DQogICAgICB9KTsNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAo
ZG9jLCBhZGQsIGV4cGVjdCkgew0KICAgICAgICBidWlsZGVyKGRvYyk7DQogICAgICAgIHAuc2V0
QXR0cmlidXRlKCdhbGlnbicsICdyaWdodCBhbmQgbGVmdCcpOw0KICAgICAgICB2YXIgZ29vZCA9
IGFkZCgiW2FsaWduPVwicmlnaHQgYW5kIGxlZnRcIl0iKTsNCiAgICAgICAgYWRkKCJbYWxpZ249
bGVmdF0iKTsNCiAgICAgICAgYWRkKCJbYWxpZ249cmlnaHRdIik7DQogICAgICAgIGV4cGVjdChw
LCBnb29kLCAiYWxpZ24gYXR0cmlidXRlIG1pc21hdGNoIik7DQogICAgICB9KTsNCiAgICAgIHJl
dHVybiAzOw0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCAzNDogOmxh
bmcoKSBhbmQgW3w9XQ0KICAgICAgdmFyIGRpdjE7DQogICAgICB2YXIgZGl2MjsNCiAgICAgIHZh
ciBwOw0KICAgICAgdmFyIGJ1aWxkZXIgPSBmdW5jdGlvbihkb2MpIHsNCiAgICAgICAgZGl2MSA9
IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAgZGl2MS5zZXRBdHRyaWJ1dGUoImxh
bmciLCAiZW5nbGlzaCIpOw0KICAgICAgICBkaXYxLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAid2lk
Z2V0LXRyZWUiKTsNCiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZGl2MSk7DQogICAgICAg
IGRpdjIgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICAgIGRpdjIuc2V0QXR0cmli
dXRlKCJsYW5nIiwgImVuLUdCIik7DQogICAgICAgIGRpdjIuc2V0QXR0cmlidXRlKCJjbGFzcyIs
ICJXSURHRVQiKTsNCiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZGl2Mik7DQogICAgICAg
IHAgPSBkb2MuY3JlYXRlRWxlbWVudCgncCcpOw0KICAgICAgICBkaXYyLmFwcGVuZENoaWxkKHAp
Ow0KICAgICAgfTsNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVj
dCkgew0KICAgICAgICBidWlsZGVyKGRvYyk7DQogICAgICAgIHZhciBsYW5nX2VuID0gYWRkKCI6
bGFuZyhlbikiKTsNCiAgICAgICAgZXhwZWN0KGRpdjEsIDAsICJsYW5nPWVuZ2xpc2ggc2hvdWxk
IG5vdCBiZSBtYXRjaGVkIGJ5IDpsYW5nKGVuKSIpOw0KICAgICAgICBleHBlY3QoZGl2MiwgbGFu
Z19lbiwgImxhbmc9ZW4tR0Igc2hvdWxkIGJlIG1hdGNoZWQgYnkgOmxhbmcoZW4pIik7DQogICAg
ICAgIGV4cGVjdChwLCBsYW5nX2VuLCAiZGVzY2VuZGFudHMgaW5oZXJpdGluZyBsYW5nPWVuLUdC
IHNob3VsZCBiZSBtYXRjaGVkIGJ5IDpsYW5nKGVuKSIpOw0KICAgICAgfSk7DQogICAgICBzZWxl
Y3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsNCiAgICAgICAgYnVpbGRlcihk
b2MpOw0KICAgICAgICB2YXIgY2xhc3Nfd2lkZ2V0ID0gYWRkKCJbY2xhc3N8PXdpZGdldF0iKTsN
CiAgICAgICAgZXhwZWN0KGRpdjEsIGNsYXNzX3dpZGdldCwgImNsYXNzIGF0dHJpYnV0ZSBzaG91
bGQgYmUgc3VwcG9ydGVkIGJ5IHw9IGF0dHJpYnV0ZSBzZWxlY3RvcnMiKTsNCiAgICAgICAgZXhw
ZWN0KGRpdjIsIDAsICJjbGFzcyBhdHRyaWJ1dGUgaXMgY2FzZS1zZW5zaXRpdmUiKTsNCiAgICAg
IH0pOw0KICAgICAgcmV0dXJuIDM7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAv
LyB0ZXN0IDM1OiA6Zmlyc3QtY2hpbGQNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9j
LCBhZGQsIGV4cGVjdCkgew0KICAgICAgICB2YXIgbm90Rmlyc3QgPSAwOw0KICAgICAgICB2YXIg
Zmlyc3QgPSBhZGQoIjpmaXJzdC1jaGlsZCIpOw0KICAgICAgICB2YXIgcDEgPSBkb2MuY3JlYXRl
RWxlbWVudCgicCIpOw0KICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4
dE5vZGUoIiBURVNUICIpKTsNCiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocDEpOw0KICAg
ICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxlbWVudCwgbm90Rmlyc3QsICJyb290IGVsZW1lbnQs
IHdpdGggbm8gcGFyZW50IG5vZGUsIGNsYWltcyB0byBiZSBhIDpmaXJzdC1jaGlsZCIpOw0KICAg
ICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLCBmaXJzdCwgImZpcnN0
IGNoaWxkIG9mIHJvb3Qgbm9kZSBkaWRuJ3QgbWF0Y2ggOmZpcnN0LWNoaWxkIik7DQogICAgICAg
IGV4cGVjdChkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCwgZmlyc3Qs
ICJmYWlsdXJlIDMiKTsNCiAgICAgICAgZXhwZWN0KGRvYy5ib2R5LCBub3RGaXJzdCwgImZhaWx1
cmUgNCIpOw0KICAgICAgICBleHBlY3QocDEsIGZpcnN0LCAiZmFpbHVyZSA1Iik7DQogICAgICAg
IHZhciBwMiA9IGRvYy5jcmVhdGVFbGVtZW50KCJwIik7DQogICAgICAgIGRvYy5ib2R5LmFwcGVu
ZENoaWxkKHAyKTsNCiAgICAgICAgZXhwZWN0KGRvYy5ib2R5LCBub3RGaXJzdCwgImZhaWx1cmUg
NiIpOw0KICAgICAgICBleHBlY3QocDEsIGZpcnN0LCAiZmFpbHVyZSA3Iik7DQogICAgICAgIGV4
cGVjdChwMiwgbm90Rmlyc3QsICJmYWlsdXJlIDgiKTsNCiAgICAgICAgdmFyIHAwID0gZG9jLmNy
ZWF0ZUVsZW1lbnQoInAiKTsNCiAgICAgICAgZG9jLmJvZHkuaW5zZXJ0QmVmb3JlKHAwLCBwMSk7
DQogICAgICAgIGV4cGVjdChkb2MuYm9keSwgbm90Rmlyc3QsICJmYWlsdXJlIDkiKTsNCiAgICAg
ICAgZXhwZWN0KHAwLCBmaXJzdCwgImZhaWx1cmUgMTAiKTsNCiAgICAgICAgZXhwZWN0KHAxLCBu
b3RGaXJzdCwgIjpmaXJzdC1jaGlsZCBzdGlsbCBhcHBsaWVzIHRvIGVsZW1lbnQgdGhhdCB3YXMg
cHJldmlvdXNseSBhIGZpcnN0IGNoaWxkIik7DQogICAgICAgIGV4cGVjdChwMiwgbm90Rmlyc3Qs
ICJmYWlsdXJlIDEyIik7DQogICAgICAgIGRvYy5ib2R5Lmluc2VydEJlZm9yZShwMCwgcDIpOw0K
ICAgICAgICBleHBlY3QoZG9jLmJvZHksIG5vdEZpcnN0LCAiZmFpbHVyZSAxMyIpOw0KICAgICAg
ICBleHBlY3QocDEsIGZpcnN0LCAiZmFpbHVyZSAxNCIpOw0KICAgICAgICBleHBlY3QocDAsIG5v
dEZpcnN0LCAiZmFpbHVyZSAxNSIpOw0KICAgICAgICBleHBlY3QocDIsIG5vdEZpcnN0LCAiZmFp
bHVyZSAxNiIpOw0KICAgICAgfSk7DQogICAgICByZXR1cm4gMzsNCiAgICB9LA0KICAgIGZ1bmN0
aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgMzY6IDpsYXN0LWNoaWxkDQogICAgICB2YXIgcDE7DQog
ICAgICB2YXIgcDI7DQogICAgICB2YXIgYnVpbGRlciA9IGZ1bmN0aW9uKGRvYykgew0KICAgICAg
ICBwMSA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7DQogICAgICAgIHAyID0gZG9jLmNyZWF0ZUVs
ZW1lbnQoJ3AnKTsNCiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocDEpOw0KICAgICAgICBk
b2MuYm9keS5hcHBlbmRDaGlsZChwMik7DQogICAgICB9Ow0KICAgICAgc2VsZWN0b3JUZXN0KGZ1
bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIGJ1aWxkZXIoZG9jKTsNCiAgICAg
ICAgdmFyIGxhc3QgPSBhZGQoIjpsYXN0LWNoaWxkIik7DQogICAgICAgIGV4cGVjdChwMSwgMCwg
ImNvbnRyb2wgdGVzdCBmb3IgOmxhc3QtY2hpbGQgZmFpbGVkIik7DQogICAgICAgIGV4cGVjdChw
MiwgbGFzdCwgImxhc3QgY2hpbGQgZGlkIG5vdCBtYXRjaCA6bGFzdC1jaGlsZCIpOw0KICAgICAg
ICBkb2MuYm9keS5hcHBlbmRDaGlsZChwMSk7DQogICAgICAgIGV4cGVjdChwMiwgMCwgIjpsYXN0
LWNoaWxkIG1hdGNoZWQgZWxlbWVudCB3aXRoIGEgZm9sbG93aW5nIHNpYmxpbmciKTsNCiAgICAg
ICAgZXhwZWN0KHAxLCBsYXN0LCAiZmFpbHVyZSA0Iik7DQogICAgICAgIHAxLmFwcGVuZENoaWxk
KHAyKTsNCiAgICAgICAgZXhwZWN0KHAyLCBsYXN0LCAiZmFpbHVyZSA1Iik7DQogICAgICAgIGV4
cGVjdChwMSwgbGFzdCwgImZhaWx1cmUgNiIpOw0KICAgICAgfSk7DQogICAgICBzZWxlY3RvclRl
c3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsNCiAgICAgICAgYnVpbGRlcihkb2MpOw0K
ICAgICAgICB2YXIgbGFzdCA9IGFkZCgiOmxhc3QtY2hpbGQiKTsNCiAgICAgICAgZXhwZWN0KHAx
LCAwLCAiZmFpbHVyZSA3Iik7DQogICAgICAgIGV4cGVjdChwMiwgbGFzdCwgImZhaWx1cmUgOCIp
Ow0KICAgICAgICBkb2MuYm9keS5pbnNlcnRCZWZvcmUocDIsIHAxKTsNCiAgICAgICAgZXhwZWN0
KHAyLCAwLCAiZmFpbHVyZSA5Iik7DQogICAgICAgIGV4cGVjdChwMSwgbGFzdCwgImZhaWx1cmUg
MTAiKTsNCiAgICAgIH0pOw0KICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwg
ZXhwZWN0KSB7DQogICAgICAgIGJ1aWxkZXIoZG9jKTsNCiAgICAgICAgdmFyIGxhc3QgPSBhZGQo
IjpsYXN0LWNoaWxkIik7DQogICAgICAgIGV4cGVjdChwMSwgMCwgImZhaWx1cmUgMTEiKTsNCiAg
ICAgICAgZXhwZWN0KHAyLCBsYXN0LCAiZmFpbHVyZSAxMiIpOw0KICAgICAgICBkb2MuYm9keS5y
ZW1vdmVDaGlsZChwMik7DQogICAgICAgIGV4cGVjdChwMSwgbGFzdCwgImZhaWx1cmUgMTMiKTsN
CiAgICAgICAgYXNzZXJ0RXF1YWxzKHAxLm5leHRTaWJsaW5nLCBudWxsLCAiZmFpbHVyZSAxNCIp
Ow0KICAgICAgICBhc3NlcnRFcXVhbHMocDIucGFyZW50Tm9kZSwgbnVsbCwgImZhaWx1cmUgMTUi
KTsNCiAgICAgIH0pOw0KICAgICAgcmV0dXJuIDM7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7
DQogICAgICAvLyB0ZXN0IDM3OiA6b25seS1jaGlsZA0KICAgICAgdmFyIHAxOw0KICAgICAgdmFy
IHAyOw0KICAgICAgdmFyIGJ1aWxkZXIgPSBmdW5jdGlvbihkb2MpIHsNCiAgICAgICAgcDEgPSBk
b2MuY3JlYXRlRWxlbWVudCgncCcpOw0KICAgICAgICBwMiA9IGRvYy5jcmVhdGVFbGVtZW50KCdw
Jyk7DQogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHAxKTsNCiAgICAgICAgZG9jLmJvZHku
YXBwZW5kQ2hpbGQocDIpOw0KICAgICAgfTsNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAo
ZG9jLCBhZGQsIGV4cGVjdCkgew0KICAgICAgICBidWlsZGVyKGRvYyk7DQogICAgICAgIHZhciBv
bmx5ID0gYWRkKCI6b25seS1jaGlsZCIpOw0KICAgICAgICBleHBlY3QocDEsIDAsICJjb250cm9s
IHRlc3QgZm9yIDpvbmx5LWNoaWxkIGZhaWxlZCIpOw0KICAgICAgICBleHBlY3QocDIsIDAsICJm
YWlsdXJlIDIiKTsNCiAgICAgICAgZG9jLmJvZHkucmVtb3ZlQ2hpbGQocDIpOw0KICAgICAgICBl
eHBlY3QocDEsIG9ubHksICI6b25seS1jaGlsZCBkaWQgbm90IG1hdGNoIG9ubHkgY2hpbGQiKTsN
CiAgICAgICAgcDEuYXBwZW5kQ2hpbGQocDIpOw0KICAgICAgICBleHBlY3QocDIsIG9ubHksICJm
YWlsdXJlIDQiKTsNCiAgICAgICAgZXhwZWN0KHAxLCBvbmx5LCAiZmFpbHVyZSA1Iik7DQogICAg
ICB9KTsNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgew0K
ICAgICAgICBidWlsZGVyKGRvYyk7DQogICAgICAgIHZhciBvbmx5ID0gYWRkKCI6b25seS1jaGls
ZCIpOw0KICAgICAgICBleHBlY3QocDEsIDAsICJmYWlsdXJlIDYiKTsNCiAgICAgICAgZXhwZWN0
KHAyLCAwLCAiZmFpbHVyZSA3Iik7DQogICAgICAgIGRvYy5ib2R5LnJlbW92ZUNoaWxkKHAxKTsN
CiAgICAgICAgZXhwZWN0KHAyLCBvbmx5LCAiZmFpbHVyZSA4Iik7DQogICAgICAgIHAyLmFwcGVu
ZENoaWxkKHAxKTsNCiAgICAgICAgZXhwZWN0KHAyLCBvbmx5LCAiZmFpbHVyZSA5Iik7DQogICAg
ICAgIGV4cGVjdChwMSwgb25seSwgImZhaWx1cmUgMTAiKTsNCiAgICAgIH0pOw0KICAgICAgc2Vs
ZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIGJ1aWxkZXIo
ZG9jKTsNCiAgICAgICAgdmFyIG9ubHkgPSBhZGQoIjpvbmx5LWNoaWxkIik7DQogICAgICAgIGV4
cGVjdChwMSwgMCwgImZhaWx1cmUgMTEiKTsNCiAgICAgICAgZXhwZWN0KHAyLCAwLCAiZmFpbHVy
ZSAxMiIpOw0KICAgICAgICB2YXIgc3BhbjEgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpOw0K
ICAgICAgICBwMS5hcHBlbmRDaGlsZChzcGFuMSk7DQogICAgICAgIGV4cGVjdChwMSwgMCwgImZh
aWx1cmUgMTMiKTsNCiAgICAgICAgZXhwZWN0KHAyLCAwLCAiZmFpbHVyZSAxNCIpOw0KICAgICAg
ICBleHBlY3Qoc3BhbjEsIG9ubHksICJmYWlsdXJlIDE1Iik7DQogICAgICAgIHZhciBzcGFuMiA9
IGRvYy5jcmVhdGVFbGVtZW50KCdzcGFuJyk7DQogICAgICAgIHAxLmFwcGVuZENoaWxkKHNwYW4y
KTsNCiAgICAgICAgZXhwZWN0KHAxLCAwLCAiZmFpbHVyZSAxNiIpOw0KICAgICAgICBleHBlY3Qo
cDIsIDAsICJmYWlsdXJlIDE3Iik7DQogICAgICAgIGV4cGVjdChzcGFuMSwgMCwgImZhaWx1cmUg
MTgiKTsNCiAgICAgICAgZXhwZWN0KHNwYW4yLCAwLCAiZmFpbHVyZSAxOSIpOw0KICAgICAgfSk7
DQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsNCiAgICAg
ICAgYnVpbGRlcihkb2MpOw0KICAgICAgICB2YXIgb25seSA9IGFkZCgiOm9ubHktY2hpbGQiKTsN
CiAgICAgICAgZXhwZWN0KHAxLCAwLCAiZmFpbHVyZSAyMCIpOw0KICAgICAgICBleHBlY3QocDIs
IDAsICJmYWlsdXJlIDIxIik7DQogICAgICAgIHZhciBzcGFuMSA9IGRvYy5jcmVhdGVFbGVtZW50
KCdzcGFuJyk7DQogICAgICAgIHAyLmFwcGVuZENoaWxkKHNwYW4xKTsNCiAgICAgICAgZXhwZWN0
KHAxLCAwLCAiZmFpbHVyZSAyMiIpOw0KICAgICAgICBleHBlY3QocDIsIDAsICJmYWlsdXJlIDIz
Iik7DQogICAgICAgIGV4cGVjdChzcGFuMSwgb25seSwgImZhaWx1cmUgMjQiKTsNCiAgICAgICAg
dmFyIHNwYW4yID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsNCiAgICAgICAgcDIuaW5zZXJ0
QmVmb3JlKHNwYW4yLCBzcGFuMSk7DQogICAgICAgIGV4cGVjdChwMSwgMCwgImZhaWx1cmUgMjUi
KTsNCiAgICAgICAgZXhwZWN0KHAyLCAwLCAiZmFpbHVyZSAyNiIpOw0KICAgICAgICBleHBlY3Qo
c3BhbjEsIDAsICJmYWlsdXJlIDI3Iik7DQogICAgICAgIGV4cGVjdChzcGFuMiwgMCwgImZhaWx1
cmUgMjgiKTsNCiAgICAgIH0pOw0KICAgICAgcmV0dXJuIDM7DQogICAgfSwNCiAgICBmdW5jdGlv
biAoKSB7DQogICAgICAvLyB0ZXN0IDM4OiA6ZW1wdHkNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5j
dGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgew0KICAgICAgICB2YXIgZW1wdHkgPSBhZGQoIjplbXB0
eSIpOw0KICAgICAgICB2YXIgcCA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7DQogICAgICAgIGRv
Yy5ib2R5LmFwcGVuZENoaWxkKHApOw0KICAgICAgICBleHBlY3QocCwgZW1wdHksICJlbXB0eSBw
IGVsZW1lbnQgZGlkbid0IG1hdGNoIDplbXB0eSIpOw0KICAgICAgICB2YXIgc3BhbiA9IGRvYy5j
cmVhdGVFbGVtZW50KCdzcGFuJyk7DQogICAgICAgIHAuYXBwZW5kQ2hpbGQoc3Bhbik7DQogICAg
ICAgIGV4cGVjdChwLCAwLCAiYWRkaW5nIGNoaWxkcmVuIGRpZG4ndCBzdG9wIHRoZSBlbGVtZW50
IG1hdGNoaW5nIDplbXB0eSIpOw0KICAgICAgICBleHBlY3Qoc3BhbiwgZW1wdHksICJlbXB0eSBz
cGFuIGVsZW1lbnQgZGlkbid0IG1hdGNoIDplbXB0eSIpOw0KICAgICAgICBwLnJlbW92ZUNoaWxk
KHNwYW4pOw0KICAgICAgICBleHBlY3QocCwgZW1wdHksICJyZW1vdmluZyBhbGwgY2hpbGRyZW4g
ZGlkbid0IG1ha2UgdGhlIGVsZW1lbnQgbWF0Y2ggOmVtcHR5Iik7DQogICAgICAgIHAuYXBwZW5k
Q2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoImMiKSk7DQogICAgICAgIHAuYXBwZW5kQ2hpbGQoZG9j
LmNyZWF0ZVRleHROb2RlKCIiKSk7DQogICAgICAgIGV4cGVjdChwLCBlbXB0eSwgImVsZW1lbnQg
d2l0aCBhIGNvbW1lbnQgbm9kZSBhbmQgYW4gZW1wdHkgdGV4dCBub2RlIGRpZG4ndCBtYXRjaCA6
ZW1wdHkiKTsNCiAgICAgICAgcC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIiIpKTsN
CiAgICAgICAgZXhwZWN0KHAsIGVtcHR5LCAiZWxlbWVudCB3aXRoIGEgY29tbWVudCBub2RlIGFu
ZCB0d28gZW1wdHkgdGV4dCBub2RlcyBkaWRuJ3QgbWF0Y2ggOmVtcHR5Iik7DQogICAgICAgIHAu
bGFzdENoaWxkLmRhdGEgPSAiICI7DQogICAgICAgIGV4cGVjdChwLCAwLCAiYWRkaW5nIHRleHQg
dG8gYSB0ZXh0IG5vZGUgZGlkbid0IG1ha2UgdGhlIGVsZW1lbnQgbm9uLTplbXB0eSIpOw0KICAg
ICAgICBhc3NlcnRFcXVhbHMocC5jaGlsZE5vZGVzLmxlbmd0aCwgMywgInRleHQgbm9kZXMgbWF5
IGhhdmUgbWVyZ2VkIik7DQogICAgICAgIHAuY2hpbGROb2Rlc1sxXS5yZXBsYWNlV2hvbGVUZXh0
KCIiKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxzKHAuY2hpbGROb2Rlcy5sZW5ndGgsIDEsICJyZXBs
YWNlV2hvbGVUZXh0KCcnKSBkaWRuJ3QgcmVtb3ZlIHRleHQgbm9kZXMiKTsNCiAgICAgICAgZXhw
ZWN0KHAsIGVtcHR5LCAiZWxlbWVudCB3aXRoIGEgY29tbWVudCBub2RlIG9ubHkgZGlkbid0IG1h
dGNoIDplbXB0eSIpOw0KICAgICAgICBwLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAidGVzdCIpKTsNCiAgICAgICAgZXhwZWN0KHAsIDAsICJh
ZGRpbmcgYW4gZWxlbWVudCBpbiBhIG5hbWVzcGFjZSBkaWRuJ3QgbWFrZSB0aGUgZWxlbWVudCBu
b24tOmVtcHR5Iik7DQogICAgICB9KTsNCiAgICAgIHJldHVybiAzOw0KICAgIH0sDQogICAgZnVu
Y3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCAzOTogOm50aC1jaGlsZCwgOm50aC1sYXN0LWNoaWxk
DQogICAgICB2YXIgcHM7DQogICAgICB2YXIgYnVpbGRlciA9IGZ1bmN0aW9uKGRvYykgew0KICAg
ICAgICBwcyA9IFsNCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLA0KICAgICAgICAg
IGRvYy5jcmVhdGVFbGVtZW50KCdwJyksDQogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3An
KSwNCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLA0KICAgICAgICAgIGRvYy5jcmVh
dGVFbGVtZW50KCdwJyksDQogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwNCiAgICAg
ICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLA0KICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50
KCdwJyksDQogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwNCiAgICAgICAgICBkb2Mu
Y3JlYXRlRWxlbWVudCgncCcpLA0KICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksDQog
ICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwNCiAgICAgICAgICBkb2MuY3JlYXRlRWxl
bWVudCgncCcpDQogICAgICAgIF07DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHMubGVu
Z3RoOyBpICs9IDEpDQogICAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocHNbaV0pOw0KICAg
ICAgfTsNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgew0K
ICAgICAgICBidWlsZGVyKGRvYyk7DQogICAgICAgIHZhciBtYXRjaCA9IGFkZCgiOm50aC1jaGls
ZChvZGQpIik7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHMubGVuZ3RoOyBpICs9IDEp
DQogICAgICAgICAgZXhwZWN0KHBzW2ldLCBpICUgMiA/IDAgOiBtYXRjaCwgIjpudGgtY2hpbGQo
b2RkKSBmYWlsZWQgd2l0aCBjaGlsZCAiICsgaSk7DQogICAgICB9KTsNCiAgICAgIHNlbGVjdG9y
VGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgew0KICAgICAgICBidWlsZGVyKGRvYyk7
DQogICAgICAgIHZhciBtYXRjaCA9IGFkZCgiOm50aC1jaGlsZChldmVuKSIpOw0KICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSArPSAxKQ0KICAgICAgICAgIGV4cGVjdChw
c1tpXSwgaSAlIDIgPyBtYXRjaCA6IDAgLCAiOm50aC1jaGlsZChldmVuKSBmYWlsZWQgd2l0aCBj
aGlsZCAiICsgaSk7DQogICAgICB9KTsNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9j
LCBhZGQsIGV4cGVjdCkgew0KICAgICAgICBidWlsZGVyKGRvYyk7DQogICAgICAgIHZhciBtYXRj
aCA9IGFkZCgiOm50aC1jaGlsZChvZGQpIik7DQogICAgICAgIGRvYy5ib2R5LnJlbW92ZUNoaWxk
KHBzWzVdKTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpICs9IDEpDQogICAgICAg
ICAgZXhwZWN0KHBzW2ldLCBpICUgMiA/IDAgOiBtYXRjaCwgIjpudGgtY2hpbGQob2RkKSBmYWls
ZWQgYWZ0ZXIgcmVtb3ZhbCB3aXRoIGNoaWxkICIgKyBpKTsNCiAgICAgICAgZm9yICh2YXIgaSA9
IDY7IGkgPCBwcy5sZW5ndGg7IGkgKz0gMSkNCiAgICAgICAgICBleHBlY3QocHNbaV0sIGkgJSAy
ID8gbWF0Y2ggOiAwLCAiOm50aC1jaGlsZChvZGQpIGZhaWxlZCBhZnRlciByZW1vdmFsIHdpdGgg
Y2hpbGQgIiArIGkpOw0KICAgICAgfSk7DQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRv
YywgYWRkLCBleHBlY3QpIHsNCiAgICAgICAgYnVpbGRlcihkb2MpOw0KICAgICAgICB2YXIgbWF0
Y2ggPSBhZGQoIjpudGgtY2hpbGQoZXZlbikiKTsNCiAgICAgICAgZG9jLmJvZHkucmVtb3ZlQ2hp
bGQocHNbNV0pOw0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkgKz0gMSkNCiAgICAg
ICAgICBleHBlY3QocHNbaV0sIGkgJSAyID8gbWF0Y2ggOiAwLCAiOm50aC1jaGlsZChldmVuKSBm
YWlsZWQgYWZ0ZXIgcmVtb3ZhbCB3aXRoIGNoaWxkICIgKyBpKTsNCiAgICAgICAgZm9yICh2YXIg
aSA9IDY7IGkgPCBwcy5sZW5ndGg7IGkgKz0gMSkNCiAgICAgICAgICBleHBlY3QocHNbaV0sIGkg
JSAyID8gMCA6IG1hdGNoLCAiOm50aC1jaGlsZChldmVuKSBmYWlsZWQgYWZ0ZXIgcmVtb3ZhbCB3
aXRoIGNoaWxkICIgKyBpKTsNCiAgICAgIH0pOw0KICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9u
IChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIGJ1aWxkZXIoZG9jKTsNCiAgICAgICAgdmFy
IG1hdGNoID0gYWRkKCI6bnRoLWNoaWxkKC1uKzMpIik7DQogICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMzsgaSArPSAxKQ0KICAgICAgICAgIGV4cGVjdChwc1tpXSwgbWF0Y2gsICI6bnRoLWNo
aWxkKC1uKzMpIGZhaWxlZCB3aXRoIGNoaWxkICIgKyBpKTsNCiAgICAgICAgZm9yICh2YXIgaSA9
IDM7IGkgPCBwcy5sZW5ndGg7IGkgKz0gMSkNCiAgICAgICAgICBleHBlY3QocHNbaV0sIDAsICI6
bnRoLWNoaWxkKC1uKzMpIGZhaWxlZCB3aXRoIGNoaWxkICIgKyBpKTsNCiAgICAgIH0pOw0KICAg
ICAgcmV0dXJuIDM7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDQw
OiA6Zmlyc3Qtb2YtdHlwZSwgOmxhc3Qtb2YtdHlwZSwgOm9ubHktb2YtdHlwZSwgOm50aC1vZi10
eXBlLCA6bnRoLWxhc3Qtb2YtdHlwZQ0KICAgICAgdmFyIGVsZW1lbnRzOw0KICAgICAgdmFyIGJ1
aWxkZXIgPSBmdW5jdGlvbihkb2MpIHsNCiAgICAgICAgZWxlbWVudHMgPSBbDQogICAgICAgICAg
ZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwNCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgnZGl2
JyksDQogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpLA0KICAgICAgICAgIGRvYy5j
cmVhdGVFbGVtZW50KCdwJyksDQogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwNCiAg
ICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLA0KICAgICAgICAgIGRvYy5jcmVhdGVFbGVt
ZW50KCdkaXYnKSwNCiAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgnYWRkcmVzcycpLA0KICAg
ICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKSwNCiAgICAgICAgICBkb2MuY3JlYXRlRWxl
bWVudCgnZGl2JyksDQogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpLA0KICAgICAg
ICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksDQogICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQo
J2RpdicpLA0KICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJykNCiAgICAgICAgXTsNCiAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkgKz0gMSkNCiAgICAg
ICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50c1tpXSk7DQogICAgICB9Ow0KICAgICAg
c2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIGJ1aWxk
ZXIoZG9jKTsNCiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6Zmlyc3Qtb2YtdHlwZSIpOw0KICAg
ICAgICB2YXIgdmFsdWVzID0gWzEsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAs
IDBdOw0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSArPSAx
KQ0KICAgICAgICAgIGV4cGVjdChlbGVtZW50c1tpXSwgdmFsdWVzW2ldID8gbWF0Y2ggOiAwLCAi
cGFydCAxOiIgKyBpKTsNCiAgICAgIH0pOw0KICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChk
b2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIGJ1aWxkZXIoZG9jKTsNCiAgICAgICAgdmFyIG1h
dGNoID0gYWRkKCI6bGFzdC1vZi10eXBlIik7DQogICAgICAgIHZhciB2YWx1ZXMgPSBbMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMV07DQogICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpDQogICAgICAgICAgZXhwZWN0KGVsZW1l
bnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJwYXJ0IDI6IiArIGkpOw0KICAgICAgfSk7
DQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsNCiAgICAg
ICAgYnVpbGRlcihkb2MpOw0KICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpvbmx5LW9mLXR5cGUi
KTsNCiAgICAgICAgdmFyIHZhbHVlcyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAw
LCAwLCAwLCAwXTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7
IGkgKz0gMSkNCiAgICAgICAgICBleHBlY3QoZWxlbWVudHNbaV0sIHZhbHVlc1tpXSA/IG1hdGNo
IDogMCwgInBhcnQgMzoiICsgaSk7DQogICAgICB9KTsNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5j
dGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgew0KICAgICAgICBidWlsZGVyKGRvYyk7DQogICAgICAg
IHZhciBtYXRjaCA9IGFkZCgiOm50aC1vZi10eXBlKDNuLTEpIik7DQogICAgICAgIHZhciB2YWx1
ZXMgPSBbMCwgMCwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMF07DQogICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpDQogICAgICAgICAg
ZXhwZWN0KGVsZW1lbnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJwYXJ0IDQ6IiArIGkp
Ow0KICAgICAgfSk7DQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBl
Y3QpIHsNCiAgICAgICAgYnVpbGRlcihkb2MpOw0KICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpu
dGgtb2YtdHlwZSgzbisxKSIpOw0KICAgICAgICB2YXIgdmFsdWVzID0gWzEsIDEsIDAsIDAsIDAs
IDEsIDAsIDEsIDEsIDAsIDAsIDAsIDEsIDBdOw0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGVsZW1lbnRzLmxlbmd0aDsgaSArPSAxKQ0KICAgICAgICAgIGV4cGVjdChlbGVtZW50c1tpXSwg
dmFsdWVzW2ldID8gbWF0Y2ggOiAwLCAicGFydCA1OiIgKyBpKTsNCiAgICAgIH0pOw0KICAgICAg
c2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIGJ1aWxk
ZXIoZG9jKTsNCiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLWxhc3Qtb2YtdHlwZSgybiki
KTsNCiAgICAgICAgdmFyIHZhbHVlcyA9IFsxLCAwLCAxLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAx
LCAxLCAwLCAwXTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7
IGkgKz0gMSkNCiAgICAgICAgICBleHBlY3QoZWxlbWVudHNbaV0sIHZhbHVlc1tpXSA/IG1hdGNo
IDogMCwgInBhcnQgNjoiICsgaSk7DQogICAgICB9KTsNCiAgICAgIHNlbGVjdG9yVGVzdChmdW5j
dGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgew0KICAgICAgICBidWlsZGVyKGRvYyk7DQogICAgICAg
IHZhciBtYXRjaCA9IGFkZCgiOm50aC1sYXN0LW9mLXR5cGUoLTVuKzMpIik7DQogICAgICAgIHZh
ciB2YWx1ZXM7DQogICAgICAgIHZhbHVlcyA9IFswLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAx
LCAwLCAwLCAwLCAwXTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5n
dGg7IGkgKz0gMSkNCiAgICAgICAgICBleHBlY3QoZWxlbWVudHNbaV0sIHZhbHVlc1tpXSA/IG1h
dGNoIDogMCwgInBhcnQgNzoiICsgaSk7DQogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGRv
Yy5jcmVhdGVFbGVtZW50KCdibG9ja3F1b3RlJykpOw0KICAgICAgICB2YWx1ZXMgPSBbMCwgMCwg
MCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMF07DQogICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpDQogICAgICAgICAgZXhwZWN0KGVs
ZW1lbnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJwYXJ0IDg6IiArIGkpOw0KICAgICAg
ICBkb2MuYm9keS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgnZGl2JykpOw0KICAgICAg
ICB2YWx1ZXMgPSBbMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwg
MF07DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEp
DQogICAgICAgICAgZXhwZWN0KGVsZW1lbnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJw
YXJ0IDk6IiArIGkpOw0KICAgICAgfSk7DQogICAgICByZXR1cm4gMzsNCiAgICB9LA0KICAgIGZ1
bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNDE6IDpyb290LCA6bm90KCkNCiAgICAgIHNlbGVj
dG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgew0KICAgICAgICB2YXIgbWF0Y2gg
PSBhZGQoIjpub3QoOnJvb3QpIik7DQogICAgICAgIHZhciBwID0gZG9jLmNyZWF0ZUVsZW1lbnQo
J3AnKTsNCiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7DQogICAgICAgIGV4cGVjdChk
b2MuZG9jdW1lbnRFbGVtZW50LCAwLCAicm9vdCB3YXMgOm5vdCg6cm9vdCkiKTsNCiAgICAgICAg
ZXhwZWN0KGRvYy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2Rlc1swXSwgbWF0Y2gsImhlYWQgd2Fz
IG5vdCA6bm90KDpyb290KSIpOw0KICAgICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxlbWVudC5j
aGlsZE5vZGVzWzFdLCBtYXRjaCwiYm9keSB3YXMgbm90IDpub3QoOnJvb3QpIik7DQogICAgICAg
IGV4cGVjdChkb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXNbMF0uZmlyc3RDaGlsZCwgbWF0
Y2gsInRpdGxlIHdhcyBub3QgOm5vdCg6cm9vdCkiKTsNCiAgICAgICAgZXhwZWN0KHAsIG1hdGNo
LCJwIHdhcyBub3QgOm5vdCg6cm9vdCkiKTsNCiAgICAgIH0pOw0KICAgICAgcmV0dXJuIDM7DQog
ICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDQyOiArLCB+LCA+LCBhbmQg
JyAnIGluIGR5bmFtaWMgc2l0dWF0aW9ucw0KICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChk
b2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIHZhciBkaXYxID0gZG9jLmNyZWF0ZUVsZW1lbnQo
J2RpdicpOw0KICAgICAgICBkaXYxLmlkID0gImRpdjEiOw0KICAgICAgICBkb2MuYm9keS5hcHBl
bmRDaGlsZChkaXYxKTsNCiAgICAgICAgdmFyIGRpdjIgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7DQogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGRpdjIpOw0KICAgICAgICB2YXIgZGl2
MyA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hp
bGQoZGl2Myk7DQogICAgICAgIHZhciBkaXYzMSA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsN
CiAgICAgICAgZGl2My5hcHBlbmRDaGlsZChkaXYzMSk7DQogICAgICAgIHZhciBkaXYzMTEgPSBk
b2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICAgIGRpdjMxLmFwcGVuZENoaWxkKGRpdjMx
MSk7DQogICAgICAgIHZhciBkaXYzMTExID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAg
ICAgICBkaXYzMTEuYXBwZW5kQ2hpbGQoZGl2MzExMSk7DQogICAgICAgIHZhciBtYXRjaCA9IGFk
ZCgiI2RpdjEgfiBkaXYgZGl2ICsgZGl2ID4gZGl2Iik7DQogICAgICAgIGV4cGVjdChkaXYxLCAw
LCAiZmFpbHVyZSAxIik7DQogICAgICAgIGV4cGVjdChkaXYyLCAwLCAiZmFpbHVyZSAyIik7DQog
ICAgICAgIGV4cGVjdChkaXYzLCAwLCAiZmFpbHVyZSAzIik7DQogICAgICAgIGV4cGVjdChkaXYz
MSwgMCwgImZhaWx1cmUgNCIpOw0KICAgICAgICBleHBlY3QoZGl2MzExLCAwLCAiZmFpbHVyZSA1
Iik7DQogICAgICAgIGV4cGVjdChkaXYzMTExLCAwLCAiZmFpbHVyZSA2Iik7DQogICAgICAgIHZh
ciBkaXYzMTAgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICAgIGRpdjMxLmluc2Vy
dEJlZm9yZShkaXYzMTAsIGRpdjMxMSk7DQogICAgICAgIGV4cGVjdChkaXYxLCAwLCAiZmFpbHVy
ZSA3Iik7DQogICAgICAgIGV4cGVjdChkaXYyLCAwLCAiZmFpbHVyZSA4Iik7DQogICAgICAgIGV4
cGVjdChkaXYzLCAwLCAiZmFpbHVyZSA5Iik7DQogICAgICAgIGV4cGVjdChkaXYzMSwgMCwgImZh
aWx1cmUgMTAiKTsNCiAgICAgICAgZXhwZWN0KGRpdjMxMCwgMCwgImZhaWx1cmUgMTEiKTsNCiAg
ICAgICAgZXhwZWN0KGRpdjMxMSwgMCwgImZhaWx1cmUgMTIiKTsNCiAgICAgICAgZXhwZWN0KGRp
djMxMTEsIG1hdGNoLCAicnVsZSBkaWQgbm90IHN0YXJ0IG1hdGNoaW5nIGFmdGVyIGNoYW5nZSIp
Ow0KICAgICAgfSk7DQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBl
Y3QpIHsNCiAgICAgICAgdmFyIGRpdjEgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAg
ICAgIGRpdjEuaWQgPSAiZGl2MSI7DQogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGRpdjEp
Ow0KICAgICAgICB2YXIgZGl2MiA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAg
ZGl2MS5hcHBlbmRDaGlsZChkaXYyKTsNCiAgICAgICAgdmFyIGRpdjMgPSBkb2MuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7DQogICAgICAgIGRpdjIuYXBwZW5kQ2hpbGQoZGl2Myk7DQogICAgICAgIHZh
ciBkaXY0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAgICAgICBkaXYzLmFwcGVuZENo
aWxkKGRpdjQpOw0KICAgICAgICB2YXIgZGl2NSA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsN
CiAgICAgICAgZGl2NC5hcHBlbmRDaGlsZChkaXY1KTsNCiAgICAgICAgdmFyIGRpdjYgPSBkb2Mu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICAgIGRpdjUuYXBwZW5kQ2hpbGQoZGl2Nik7DQog
ICAgICAgIHZhciBtYXRjaCA9IGFkZCgiI2RpdjEgPiBkaXYgZGl2ID4gZGl2Iik7DQogICAgICAg
IGV4cGVjdChkaXYxLCAwLCAiZmFpbHVyZSAxNCIpOw0KICAgICAgICBleHBlY3QoZGl2MiwgMCwg
ImZhaWx1cmUgMTUiKTsNCiAgICAgICAgZXhwZWN0KGRpdjMsIDAsICJmYWlsdXJlIDE2Iik7DQog
ICAgICAgIGV4cGVjdChkaXY0LCBtYXRjaCwgImZhaWx1cmUgMTciKTsNCiAgICAgICAgZXhwZWN0
KGRpdjUsIG1hdGNoLCAiZmFpbHVyZSAxOCIpOw0KICAgICAgICBleHBlY3QoZGl2NiwgbWF0Y2gs
ICJmYWlsdXJlIDE5Iik7DQogICAgICAgIHZhciBwMzQgPSBkb2MuY3JlYXRlRWxlbWVudCgncCcp
Ow0KICAgICAgICBkaXYzLmluc2VydEJlZm9yZShwMzQsIGRpdjQpOw0KICAgICAgICBwMzQuaW5z
ZXJ0QmVmb3JlKGRpdjQsIG51bGwpOw0KICAgICAgICBleHBlY3QoZGl2MSwgMCwgImZhaWx1cmUg
MjAiKTsNCiAgICAgICAgZXhwZWN0KGRpdjIsIDAsICJmYWlsdXJlIDIxIik7DQogICAgICAgIGV4
cGVjdChkaXYzLCAwLCAiZmFpbHVyZSAyMiIpOw0KICAgICAgICBleHBlY3QocDM0LCAwLCAiZmFp
bHVyZSAyMyIpOw0KICAgICAgICBleHBlY3QoZGl2NCwgMCwgImZhaWx1cmUgMjQiKTsNCiAgICAg
ICAgZXhwZWN0KGRpdjUsIG1hdGNoLCAiZmFpbHVyZSAyNSIpOw0KICAgICAgICBleHBlY3QoZGl2
NiwgbWF0Y2gsICJmYWlsdXJlIDI2Iik7DQogICAgICB9KTsNCiAgICAgIHNlbGVjdG9yVGVzdChm
dW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgew0KICAgICAgICB2YXIgZGl2MSA9IGRvYy5jcmVh
dGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAgZGl2MS5pZCA9ICJkaXYxIjsNCiAgICAgICAgZG9j
LmJvZHkuYXBwZW5kQ2hpbGQoZGl2MSk7DQogICAgICAgIHZhciBkaXYyID0gZG9jLmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOw0KICAgICAgICBkaXYxLmFwcGVuZENoaWxkKGRpdjIpOw0KICAgICAgICB2
YXIgZGl2MyA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAgZGl2Mi5hcHBlbmRD
aGlsZChkaXYzKTsNCiAgICAgICAgdmFyIGRpdjQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
DQogICAgICAgIGRpdjMuYXBwZW5kQ2hpbGQoZGl2NCk7DQogICAgICAgIHZhciBkaXY1ID0gZG9j
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAgICAgICBkaXY0LmFwcGVuZENoaWxkKGRpdjUpOw0K
ICAgICAgICB2YXIgZGl2NiA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAgZGl2
NS5hcHBlbmRDaGlsZChkaXY2KTsNCiAgICAgICAgdmFyIG1hdGNoID0gYWRkKCIjZGl2MSA+IGRp
diBkaXYgPiBkaXYiKTsNCiAgICAgICAgZXhwZWN0KGRpdjEsIDAsICJmYWlsdXJlIDI3Iik7DQog
ICAgICAgIGV4cGVjdChkaXYyLCAwLCAiZmFpbHVyZSAyOCIpOw0KICAgICAgICBleHBlY3QoZGl2
MywgMCwgImZhaWx1cmUgMjkiKTsNCiAgICAgICAgZXhwZWN0KGRpdjQsIG1hdGNoLCAiZmFpbHVy
ZSAzMCIpOw0KICAgICAgICBleHBlY3QoZGl2NSwgbWF0Y2gsICJmYWlsdXJlIDMxIik7DQogICAg
ICAgIGV4cGVjdChkaXY2LCBtYXRjaCwgImZhaWx1cmUgMzIiKTsNCiAgICAgICAgdmFyIHAyMyA9
IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7DQogICAgICAgIGRpdjIuaW5zZXJ0QmVmb3JlKHAyMywg
ZGl2Myk7DQogICAgICAgIHAyMy5pbnNlcnRCZWZvcmUoZGl2MywgbnVsbCk7DQogICAgICAgIGV4
cGVjdChkaXYxLCAwLCAiZmFpbHVyZSAzMyIpOw0KICAgICAgICBleHBlY3QoZGl2MiwgMCwgImZh
aWx1cmUgMzQiKTsNCiAgICAgICAgZXhwZWN0KGRpdjMsIDAsICJmYWlsdXJlIDM1Iik7DQogICAg
ICAgIGV4cGVjdChwMjMsIDAsICJmYWlsdXJlIDM2Iik7DQogICAgICAgIGV4cGVjdChkaXY0LCBt
YXRjaCwgImZhaWx1cmUgMzciKTsNCiAgICAgICAgZXhwZWN0KGRpdjUsIG1hdGNoLCAiZmFpbHVy
ZSAzOCIpOw0KICAgICAgICBleHBlY3QoZGl2NiwgbWF0Y2gsICJmYWlsdXJlIDM5Iik7DQogICAg
ICB9KTsNCiAgICAgIHJldHVybiAzOw0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAg
Ly8gdGVzdCA0MzogOmVuYWJsZWQsIDpkaXNhYmxlZCwgOmNoZWNrZWQsIGV0Yw0KICAgICAgc2Vs
ZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIHZhciBpbnB1
dCA9IGRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOw0KICAgICAgICBpbnB1dC50eXBlID0gJ2No
ZWNrYm94JzsNCiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOw0KICAgICAgICB2
YXIgbmVpdGhlciA9IDA7DQogICAgICAgIHZhciBib3RoID0gYWRkKCI6Y2hlY2tlZDplbmFibGVk
Iik7DQogICAgICAgIHZhciBjaGVja2VkID0gYWRkKCI6Y2hlY2tlZCIpOw0KICAgICAgICB2YXIg
ZW5hYmxlZCA9IGFkZCgiOmVuYWJsZWQiKTsNCiAgICAgICAgZXhwZWN0KGRvYy5ib2R5LCBuZWl0
aGVyLCAiY29udHJvbCBmYWlsdXJlIik7DQogICAgICAgIGV4cGVjdChpbnB1dCwgZW5hYmxlZCwg
ImlucHV0IGVsZW1lbnQgZGlkbid0IG1hdGNoIDplbmFibGVkIik7DQogICAgICAgIGlucHV0LmNs
aWNrKCk7DQogICAgICAgIGV4cGVjdChpbnB1dCwgYm90aCwgImlucHV0IGVsZW1lbnQgZGlkbid0
IG1hdGNoIDpjaGVja2VkIik7DQogICAgICAgIGlucHV0LmRpc2FibGVkID0gdHJ1ZTsNCiAgICAg
ICAgZXhwZWN0KGlucHV0LCBjaGVja2VkLCAiZmFpbHVyZSAzIik7DQogICAgICAgIGlucHV0LmNo
ZWNrZWQgPSBmYWxzZTsNCiAgICAgICAgZXhwZWN0KGlucHV0LCBuZWl0aGVyLCAiZmFpbHVyZSA0
Iik7DQogICAgICAgIGV4cGVjdChkb2MuYm9keSwgbmVpdGhlciwgImZhaWx1cmUgNSIpOw0KICAg
ICAgfSk7DQogICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsN
CiAgICAgICAgdmFyIGlucHV0MSA9IGRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOw0KICAgICAg
ICBpbnB1dDEudHlwZSA9ICdyYWRpbyc7DQogICAgICAgIGlucHV0MS5uYW1lID0gJ3JhZGlvJzsN
CiAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQxKTsNCiAgICAgICAgdmFyIGlucHV0
MiA9IGRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOw0KICAgICAgICBpbnB1dDIudHlwZSA9ICdy
YWRpbyc7DQogICAgICAgIGlucHV0Mi5uYW1lID0gJ3JhZGlvJzsNCiAgICAgICAgZG9jLmJvZHku
YXBwZW5kQ2hpbGQoaW5wdXQyKTsNCiAgICAgICAgdmFyIGNoZWNrZWQgPSBhZGQoIjpjaGVja2Vk
Iik7DQogICAgICAgIGV4cGVjdChpbnB1dDEsIDAsICJmYWlsdXJlIDYiKTsNCiAgICAgICAgZXhw
ZWN0KGlucHV0MiwgMCwgImZhaWx1cmUgNyIpOw0KICAgICAgICBpbnB1dDIuY2xpY2soKTsNCiAg
ICAgICAgZXhwZWN0KGlucHV0MSwgMCwgImZhaWx1cmUgNiIpOw0KICAgICAgICBleHBlY3QoaW5w
dXQyLCBjaGVja2VkLCAiZmFpbHVyZSA3Iik7DQogICAgICAgIGlucHV0MS5jaGVja2VkID0gdHJ1
ZTsNCiAgICAgICAgZXhwZWN0KGlucHV0MSwgY2hlY2tlZCwgImZhaWx1cmUgOCIpOw0KICAgICAg
ICBleHBlY3QoaW5wdXQyLCAwLCAiZmFpbHVyZSA5Iik7DQogICAgICAgIGlucHV0Mi5zZXRBdHRy
aWJ1dGUoImNoZWNrZWQiLCAiY2hlY2tlZCIpOyAvLyBzZXRzIGRlZmF1bHRDaGVja2VkLCBkb2Vz
bid0IGNoYW5nZSBhY3R1YWwgc3RhdGUNCiAgICAgICAgZXhwZWN0KGlucHV0MSwgY2hlY2tlZCwg
ImZhaWx1cmUgMTAiKTsNCiAgICAgICAgZXhwZWN0KGlucHV0MiwgMCwgImZhaWx1cmUgMTEiKTsN
CiAgICAgICAgaW5wdXQxLnR5cGUgPSAidGV4dCI7DQogICAgICAgIGV4cGVjdChpbnB1dDEsIDAs
ICJ0ZXh0IGZpZWxkIG1hdGNoZWQgOmNoZWNrZWQiKTsNCiAgICAgIH0pOw0KICAgICAgc2VsZWN0
b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7DQogICAgICAgIHZhciBpbnB1dCA9
IGRvYy5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOw0KICAgICAgICBpbnB1dC50eXBlID0gJ2J1dHRv
bic7DQogICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGlucHV0KTsNCiAgICAgICAgdmFyIG5l
aXRoZXIgPSAwOw0KICAgICAgICB2YXIgZW5hYmxlZCA9IGFkZCgiOmVuYWJsZWQiKTsNCiAgICAg
ICAgdmFyIGRpc2FibGVkID0gYWRkKCI6ZGlzYWJsZWQiKTsNCiAgICAgICAgYWRkKCI6ZW5hYmxl
ZDpkaXNhYmxlZCIpOw0KICAgICAgICBleHBlY3QoaW5wdXQsIGVuYWJsZWQsICJmYWlsdXJlIDEy
Iik7DQogICAgICAgIGlucHV0LmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgZXhwZWN0KGlucHV0
LCBkaXNhYmxlZCwgImZhaWx1cmUgMTMiKTsNCiAgICAgICAgaW5wdXQucmVtb3ZlQXR0cmlidXRl
KCJkaXNhYmxlZCIpOw0KICAgICAgICBleHBlY3QoaW5wdXQsIGVuYWJsZWQsICJmYWlsdXJlIDE0
Iik7DQogICAgICAgIGV4cGVjdChkb2MuYm9keSwgbmVpdGhlciwgImZhaWx1cmUgMTUiKTsNCiAg
ICAgIH0pOw0KICAgICAgcmV0dXJuIDM7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAg
ICAvLyB0ZXN0IDQ0OiBzZWxlY3RvcnMgd2l0aG91dCBzcGFjZXMgYmVmb3JlIGEgIioiDQogICAg
ICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsNCiAgICAgICAgZG9j
LmJvZHkuY2xhc3NOYW1lID0gInRlc3QiOw0KICAgICAgICB2YXIgcCA9IGRvYy5jcmVhdGVFbGVt
ZW50KCdwJyk7DQogICAgICAgIHAuY2xhc3NOYW1lID0gInRlc3QiOw0KICAgICAgICBkb2MuYm9k
eS5hcHBlbmRDaGlsZChwKTsNCiAgICAgICAgYWRkKCJodG1sKi50ZXN0Iik7DQogICAgICAgIGV4
cGVjdChkb2MuYm9keSwgMCwgIm1pc3BhcnNlZCBzZWxlY3RvcnMiKTsNCiAgICAgICAgZXhwZWN0
KHAsIDAsICJyZWFsbHkgbWlzcGFyc2VkIHNlbGVjdG9ycyIpOw0KICAgICAgfSk7DQogICAgICBy
ZXR1cm4gMzsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNDU6IGNz
c0Zsb2F0IGFuZCB0aGUgc3R5bGUgYXR0cmlidXRlDQogICAgICBhc3NlcnQoIWRvY3VtZW50LmJv
ZHkuc3R5bGUuY3NzRmxvYXQsICJib2R5IGhhcyBmbG9hdGF0aW9uIik7DQogICAgICBkb2N1bWVu
dC5ib2R5LnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiZmxvYXQ6IHJpZ2h0Iik7DQogICAgICBhc3Nl
cnRFcXVhbHMoZG9jdW1lbnQuYm9keS5zdHlsZS5jc3NGbG9hdCwgInJpZ2h0IiwgImJvZHkgZG9l
c24ndCBoYXZlIGZsb2F0YXRpb24iKTsNCiAgICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRl
KCJzdHlsZSIsICJmbG9hdDogbm9uZSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGRvY3VtZW50LmJv
ZHkuc3R5bGUuY3NzRmxvYXQsICJub25lIiwgImJvZHkgZGlkbid0IGxvc2UgZmxvYXRhdGlvbiIp
Ow0KICAgICAgcmV0dXJuIDM7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0
ZXN0IDQ2OiBtZWRpYSBxdWVyaWVzDQogICAgICB2YXIgZG9jID0gZ2V0VGVzdERvY3VtZW50KCk7
DQogICAgICB2YXIgc3R5bGUgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsNCiAgICAgIHN0
eWxlLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpOw0KICAgICAgc3R5bGUuYXBwZW5k
Q2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCAobWluLWNvbG9yOiAwKSB7
ICNhIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBtYXRjaGVzDQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4
dE5vZGUoJ0BtZWRpYSBub3QgYWxsIGFuZCAobWluLWNvbG9yOiAwKSB7ICNiIHsgdGV4dC10cmFu
c2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOw0KICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNy
ZWF0ZVRleHROb2RlKCdAbWVkaWEgb25seSBhbGwgYW5kIChtaW4tY29sb3I6IDApIHsgI2MgeyB0
ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7ICAgICAgICAgICAgICAgICAgICAvLyBt
YXRjaGVzDQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRp
YSAoYm9ndXMpIHsgI2QgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7DQogICAg
ICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBhbGwgYW5kIChi
b2d1cykgeyAjZSB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsNCiAgICAgIHN0
eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIG5vdCBhbGwgYW5kIChi
b2d1cykgeyAjZiB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcw0KICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9j
LmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgb25seSBhbGwgYW5kIChib2d1cykgeyAjZyB7IHRleHQt
dHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsNCiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRv
Yy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIChib2d1cyksIGFsbCB7ICNoIHsgdGV4dC10cmFuc2Zv
cm06IHVwcGVyY2FzZTsgfSB9JykpOw0KICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0
ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCAoYm9ndXMpLCBhbGwgeyAjaSB7IHRleHQtdHJhbnNm
b3JtOiB1cHBlcmNhc2U7IH0gfScpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRj
aGVzDQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBu
b3QgYWxsIGFuZCAoYm9ndXMpLCBhbGwgeyAjaiB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7
IH0gfScpKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoZXMNCiAgICAgIHN0eWxlLmFw
cGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIG9ubHkgYWxsIGFuZCAoYm9ndXMp
LCBhbGwgeyAjayB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsgICAgICAgICAg
ICAgICAgICAgICAgLy8gbWF0Y2hlcw0KICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0
ZVRleHROb2RlKCdAbWVkaWEgYWxsLCAoYm9ndXMpIHsgI2wgeyB0ZXh0LXRyYW5zZm9ybTogdXBw
ZXJjYXNlOyB9IH0nKSk7DQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5v
ZGUoJ0BtZWRpYSBhbGwsIGFsbCBhbmQgKGJvZ3VzKSB7ICNtIHsgdGV4dC10cmFuc2Zvcm06IHVw
cGVyY2FzZTsgfSB9JykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoZXMNCiAg
ICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCwgbm90
IGFsbCBhbmQgKGJvZ3VzKSB7ICNuIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9Jykp
OyAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcw0KICAgICAgc3R5bGUuYXBwZW5kQ2hp
bGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsLCBvbmx5IGFsbCBhbmQgKGJvZ3VzKSB7
ICNvIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOyAgICAgICAgICAgICAgICAg
ICAgICAvLyBtYXRjaGVzDQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5v
ZGUoJ0BtZWRpYSBhbGwgYW5kIGNvbG9yIHsgI3AgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNl
OyB9IH0nKSk7DQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0Bt
ZWRpYSBhbGwgYW5kIG1pbi1jb2xvcjogMCB7ICNxIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2Fz
ZTsgfSB9JykpOw0KICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdA
bWVkaWEgYWxsLCBhbGwgYW5kIGNvbG9yIHsgI3IgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNl
OyB9IH0nKSk7DQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0Bt
ZWRpYSBhbGwsIGFsbCBhbmQgbWluLWNvbG9yOiAwIHsgI3MgeyB0ZXh0LXRyYW5zZm9ybTogdXBw
ZXJjYXNlOyB9IH0nKSk7DQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5v
ZGUoJ0BtZWRpYSBhbGwgYW5kIG1pbi1jb2xvcjogMCwgYWxsIHsgI3QgeyB0ZXh0LXRyYW5zZm9y
bTogdXBwZXJjYXNlOyB9IH0nKSk7DQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRl
VGV4dE5vZGUoJ0BtZWRpYSAobWluLWNvbG9yOiAwKSBhbmQgKG1pbi1tb25vY2hyb21lOiAwKSB7
ICN1IHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOw0KICAgICAgc3R5bGUuYXBw
ZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgKG1pbi1jb2xvcjogMCksIChtaW4t
bW9ub2Nocm9tZTogMCkgeyAjdiB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsN
CiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCBh
bmQgKG1pbi1jb2xvcjogMCksIGFsbCBhbmQgKG1pbi1tb25vY2hyb21lOiAwKSB7ICN3IHsgdGV4
dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOyAvLyBtYXRjaGVzDQogICAgICBzdHlsZS5h
cHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBub3QgYWxsIGFuZCAobWluLWNv
bG9yOiAwKSwgbm90IGFsbCBhbmQgKG1pbi1tb25vY2hyb21lOiAwKSB7ICN4IHsgdGV4dC10cmFu
c2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOyAvLyBtYXRjaGVzDQogICAgICBzdHlsZS5hcHBlbmRD
aGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBhbGwgYW5kIChtaW4taGVpZ2h0OiAxZW0p
IGFuZCAobWluLXdpZHRoOiAxZW0pIHsgI3kxIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsg
fSB9JykpOw0KICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVk
aWEgYWxsIGFuZCAobWF4LWhlaWdodDogMWVtKSBhbmQgKG1pbi13aWR0aDogMWVtKSB7ICN5MiB7
IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsNCiAgICAgIHN0eWxlLmFwcGVuZENo
aWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCBhbmQgKG1pbi1oZWlnaHQ6IDFlbSkg
YW5kIChtYXgtd2lkdGg6IDFlbSkgeyAjeTMgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9
IH0nKSk7DQogICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRp
YSBhbGwgYW5kIChtYXgtaGVpZ2h0OiAxZW0pIGFuZCAobWF4LXdpZHRoOiAxZW0pIHsgI3k0IHsg
dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOyAvLyBtYXRjaGVzDQogICAgICBkb2Mu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzdHlsZSk7DQogICAg
ICB2YXIgbmFtZXMgPSBbJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdp
JywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsICdvJywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcs
ICd1JywgJ3YnLCAndycsICd4JywgJ3kxJywgJ3kyJywgJ3kzJywgJ3k0J107DQogICAgICBmb3Ig
KHZhciBpIGluIG5hbWVzKSB7DQogICAgICAgIHZhciBwID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3An
KTsNCiAgICAgICAgcC5pZCA9IG5hbWVzW2ldOw0KICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGls
ZChwKTsNCiAgICAgIH0NCiAgICAgIHZhciBjb3VudCA9IDA7DQogICAgICB2YXIgY2hlY2sgPSBm
dW5jdGlvbiAoYywgZSkgew0KICAgICAgICBjb3VudCArPSAxOw0KICAgICAgICB2YXIgcCA9IGRv
Yy5nZXRFbGVtZW50QnlJZChjKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHAsICcnKS50ZXh0VHJhbnNmb3JtLCBlID8gJ3VwcGVyY2FzZScg
OiAnbm9uZScsICJjYXNlICIgKyBjICsgIiBmYWlsZWQgKGluZGV4ICIgKyBjb3VudCArICIpIik7
DQogICAgICB9DQogICAgICBjaGVjaygnYScsIHRydWUpOyAvLyAxDQogICAgICBjaGVjaygnYics
IGZhbHNlKTsNCiAgICAgIGNoZWNrKCdjJywgdHJ1ZSk7DQogICAgICBjaGVjaygnZCcsIGZhbHNl
KTsNCiAgICAgIGNoZWNrKCdlJywgZmFsc2UpOw0KICAgICAgY2hlY2soJ2YnLCB0cnVlKTsNCiAg
ICAgIGNoZWNrKCdnJywgZmFsc2UpOw0KICAgICAgY2hlY2soJ2gnLCBmYWxzZSk7DQogICAgICBj
aGVjaygnaScsIHRydWUpOw0KICAgICAgY2hlY2soJ2onLCB0cnVlKTsgLy8gMTANCiAgICAgIGNo
ZWNrKCdrJywgdHJ1ZSk7DQogICAgICBjaGVjaygnbCcsIGZhbHNlKTsNCiAgICAgIGNoZWNrKCdt
JywgdHJ1ZSk7DQogICAgICBjaGVjaygnbicsIHRydWUpOw0KICAgICAgY2hlY2soJ28nLCB0cnVl
KTsNCiAgICAgIGNoZWNrKCdwJywgZmFsc2UpOw0KICAgICAgY2hlY2soJ3EnLCBmYWxzZSk7DQog
ICAgICBjaGVjaygncicsIGZhbHNlKTsNCiAgICAgIGNoZWNrKCdzJywgZmFsc2UpOw0KICAgICAg
Y2hlY2soJ3QnLCBmYWxzZSk7IC8vIDIwDQogICAgICBjaGVjaygndScsIGZhbHNlKTsNCiAgICAg
IGNoZWNrKCd2JywgZmFsc2UpOw0KICAgICAgY2hlY2soJ3cnLCB0cnVlKTsNCiAgICAgIGNoZWNr
KCd4JywgdHJ1ZSk7DQogICAgICAvLyBoZXJlIHRoZSB2aWV3cG9ydCBpcyAweDANCiAgICAgIGNo
ZWNrKCd5MScsIGZhbHNlKTsgLy8gMjUNCiAgICAgIGNoZWNrKCd5MicsIGZhbHNlKTsNCiAgICAg
IGNoZWNrKCd5MycsIGZhbHNlKTsNCiAgICAgIGNoZWNrKCd5NCcsIHRydWUpOw0KICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdG9ycyIpLnNldEF0dHJpYnV0ZSgic3R5bGUiLCAi
aGVpZ2h0OiAxMDBweDsgd2lkdGg6IDEwMHB4Iik7DQogICAgICAvLyBub3cgdGhlIHZpZXdwb3J0
IGlzIG1vcmUgdGhhbiAxZW0gYnkgMWVtDQogICAgICBjaGVjaygneTEnLCB0cnVlKTsgLy8gMjkN
CiAgICAgIGNoZWNrKCd5MicsIGZhbHNlKTsNCiAgICAgIGNoZWNrKCd5MycsIGZhbHNlKTsNCiAg
ICAgIGNoZWNrKCd5NCcsIGZhbHNlKTsNCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
ZWxlY3RvcnMiKS5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIik7DQogICAgICAvLyBoZXJlIHRoZSB2
aWV3cG9ydCBpcyAweDAgYWdhaW4NCiAgICAgIGNoZWNrKCd5MScsIGZhbHNlKTsgLy8gMzMNCiAg
ICAgIGNoZWNrKCd5MicsIGZhbHNlKTsNCiAgICAgIGNoZWNrKCd5MycsIGZhbHNlKTsNCiAgICAg
IGNoZWNrKCd5NCcsIHRydWUpOw0KICAgICAgcmV0dXJuIDM7DQogICAgfSwNCiAgICBmdW5jdGlv
biAoKSB7DQogICAgICAvLyB0ZXN0IDQ3OiAnY3Vyc29yJyBhbmQgQ1NTMyB2YWx1ZXMNCiAgICAg
IHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQoKTsNCiAgICAgIHZhciBzdHlsZSA9IGRvYy5jcmVh
dGVFbGVtZW50KCdzdHlsZScpOw0KICAgICAgc3R5bGUuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3Rl
eHQvY3NzJyk7DQogICAgICB2YXIgY3Vyc29ycyA9IFsnYXV0bycsICdkZWZhdWx0JywgJ25vbmUn
LCAnY29udGV4dC1tZW51JywgJ2hlbHAnLCAncG9pbnRlcicsICdwcm9ncmVzcycsICd3YWl0Jywg
J2NlbGwnLCAnY3Jvc3NoYWlyJywgJ3RleHQnLCAndmVydGljYWwtdGV4dCcsICdhbGlhcycsICdj
b3B5JywgJ21vdmUnLCAnbm8tZHJvcCcsICdub3QtYWxsb3dlZCcsICdlLXJlc2l6ZScsICduLXJl
c2l6ZScsICduZS1yZXNpemUnLCAnbnctcmVzaXplJywgJ3MtcmVzaXplJywgJ3NlLXJlc2l6ZScs
ICdzdy1yZXNpemUnLCAndy1yZXNpemUnLCAnZXctcmVzaXplJywgJ25zLXJlc2l6ZScsICduZXN3
LXJlc2l6ZScsICdud3NlLXJlc2l6ZScsICdjb2wtcmVzaXplJywgJ3Jvdy1yZXNpemUnLCAnYWxs
LXNjcm9sbCddOw0KICAgICAgZm9yICh2YXIgaSBpbiBjdXJzb3JzKSB7DQogICAgICAgIHZhciBj
ID0gY3Vyc29yc1tpXTsNCiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHRO
b2RlKCcjJyArIGMgKyAnIHsgY3Vyc29yOiAnICsgYyArICc7IH0nKSk7DQogICAgICB9DQogICAg
ICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJyNib2d1cyB7IGN1cnNvcjog
Ym9ndXM7IH0nKSk7DQogICAgICBkb2MuYm9keS5wcmV2aW91c1NpYmxpbmcuYXBwZW5kQ2hpbGQo
c3R5bGUpOw0KICAgICAgZG9jLmJvZHkuaWQgPSAiYm9ndXMiOw0KICAgICAgYXNzZXJ0RXF1YWxz
KGRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvYy5ib2R5LCAnJykuY3Vyc29yLCAi
YXV0byIsICJjb250cm9sIGZhaWxlZCIpOw0KICAgICAgZm9yICh2YXIgaSBpbiBjdXJzb3JzKSB7
DQogICAgICAgIHZhciBjID0gY3Vyc29yc1tpXTsNCiAgICAgICAgZG9jLmJvZHkuaWQgPSBjOw0K
ICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9j
LmJvZHksICcnKS5jdXJzb3IsIGMsICJjdXJzb3IgIiArIGMgKyAiIG5vdCBzdXBwb3J0ZWQiKTsN
CiAgICAgIH0NCiAgICAgIHJldHVybiAzOw0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0KICAg
ICAgLy8gdGVzdCA0ODogOmxpbmsgYW5kIDp2aXNpdGVkDQogICAgICB2YXIgaWZyYW1lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdG9ycyIpOw0KICAgICAgdmFyIG51bWJlciA9IChu
ZXcgRGF0ZSgpKS52YWx1ZU9mKCk7DQogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2EnKTsNCiAgICAgIGEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0xJ
TktURVNUIEZBSUxFRCcpKTsNCiAgICAgIGEuc2V0QXR0cmlidXRlKCdpZCcsICdsaW5rdGVzdCcp
Ow0KICAgICAgYS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3BlbmRpbmcnKTsNCiAgICAgIGEuc2V0
QXR0cmlidXRlKCdocmVmJywgaWZyYW1lLmdldEF0dHJpYnV0ZSgnc3JjJykgKyAiPyIgKyBudW1i
ZXIpOw0KICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hcCcpWzBdLmFwcGVu
ZENoaWxkKGEpOw0KICAgICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgib25sb2FkIiwgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdsaW5rdGVzdCcpLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKSIpOw0K
ICAgICAgaWZyYW1lLnNyYyA9IGEuZ2V0QXR0cmlidXRlKCJocmVmIik7DQogICAgICByZXR1cm4g
MzsNCiAgICB9LA0KDQogICAgLy8gYnVja2V0IDQ6IEhUTUwgYW5kIHRoZSBET00NCiAgICAvLyBU
YWJsZXMNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDQ5OiBiYXNpYyB0YWJsZSBh
Y2Nlc3NvciBwaW5nIHRlc3QgY3JlYXRlKiwgZGVsZXRlKiwgYW5kICoNCiAgICAgIC8vIHdoZXJl
ICogaXMgY2FwdGlvbiwgdEhlYWQsIHRGb290Lg0KICAgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndGFibGUnKTsNCiAgICAgIGFzc2VydCghdGFibGUuY2FwdGlvbiwgImlu
aXRpYWxseTogY2FwdGlvbiIpOw0KICAgICAgYXNzZXJ0KHRhYmxlLnRCb2RpZXMsICJpbml0aWFs
bHk6IHRCb2RpZXMiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50Qm9kaWVzLmxlbmd0aCwg
MCwgImluaXRpYWxseTogdEJvZGllcy5sZW5ndGgiKTsNCiAgICAgIGFzc2VydCh0YWJsZS5yb3dz
LCAiaW5pdGlhbGx5OiByb3dzIik7DQogICAgICBhc3NlcnRFcXVhbHModGFibGUucm93cy5sZW5n
dGgsIDAsICJpbml0aWFsbHk6IHJvd3MubGVuZ3RoIik7DQogICAgICBhc3NlcnQoIXRhYmxlLnRG
b290LCAiaW5pdGlhbGx5OiB0Rm9vdCIpOw0KICAgICAgYXNzZXJ0KCF0YWJsZS50SGVhZCwgImlu
aXRpYWxseTogdEhlYWQiKTsNCiAgICAgIHZhciBjYXB0aW9uID0gdGFibGUuY3JlYXRlQ2FwdGlv
bigpOw0KICAgICAgdmFyIHRoZWFkID0gdGFibGUuY3JlYXRlVEhlYWQoKTsNCiAgICAgIHZhciB0
Zm9vdCA9IHRhYmxlLmNyZWF0ZVRGb290KCk7DQogICAgICBhc3NlcnRFcXVhbHModGFibGUuY2Fw
dGlvbiwgY2FwdGlvbiwgImFmdGVyIGNyZWF0aW9uOiBjYXB0aW9uIik7DQogICAgICBhc3NlcnQo
dGFibGUudEJvZGllcywgImFmdGVyIGNyZWF0aW9uOiB0Qm9kaWVzIik7DQogICAgICBhc3NlcnRF
cXVhbHModGFibGUudEJvZGllcy5sZW5ndGgsIDAsICJhZnRlciBjcmVhdGlvbjogdEJvZGllcy5s
ZW5ndGgiKTsNCiAgICAgIGFzc2VydCh0YWJsZS5yb3dzLCAiYWZ0ZXIgY3JlYXRpb246IHJvd3Mi
KTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5yb3dzLmxlbmd0aCwgMCwgImFmdGVyIGNyZWF0
aW9uOiByb3dzLmxlbmd0aCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRGb290LCB0Zm9v
dCwgImFmdGVyIGNyZWF0aW9uOiB0Rm9vdCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRI
ZWFkLCB0aGVhZCwgImFmdGVyIGNyZWF0aW9uOiB0SGVhZCIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHRhYmxlLmNoaWxkTm9kZXMubGVuZ3RoLCAzLCAiYWZ0ZXIgY3JlYXRpb246IGNoaWxkTm9kZXMu
bGVuZ3RoIik7DQogICAgICB0YWJsZS5jYXB0aW9uID0gY2FwdGlvbjsgLy8gbm8tb3ANCiAgICAg
IHRhYmxlLnRIZWFkID0gdGhlYWQ7IC8vIG5vLW9wDQogICAgICB0YWJsZS50Rm9vdCA9IHRmb290
OyAvLyBuby1vcA0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmNhcHRpb24sIGNhcHRpb24sICJh
ZnRlciBzZXR0aW5nOiBjYXB0aW9uIik7DQogICAgICBhc3NlcnQodGFibGUudEJvZGllcywgImFm
dGVyIHNldHRpbmc6IHRCb2RpZXMiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50Qm9kaWVz
Lmxlbmd0aCwgMCwgImFmdGVyIHNldHRpbmc6IHRCb2RpZXMubGVuZ3RoIik7DQogICAgICBhc3Nl
cnQodGFibGUucm93cywgImFmdGVyIHNldHRpbmc6IHJvd3MiKTsNCiAgICAgIGFzc2VydEVxdWFs
cyh0YWJsZS5yb3dzLmxlbmd0aCwgMCwgImFmdGVyIHNldHRpbmc6IHJvd3MubGVuZ3RoIik7DQog
ICAgICBhc3NlcnRFcXVhbHModGFibGUudEZvb3QsIHRmb290LCAiYWZ0ZXIgc2V0dGluZzogdEZv
b3QiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50SGVhZCwgdGhlYWQsICJhZnRlciBzZXR0
aW5nOiB0SGVhZCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmNoaWxkTm9kZXMubGVuZ3Ro
LCAzLCAiYWZ0ZXIgc2V0dGluZzogY2hpbGROb2Rlcy5sZW5ndGgiKTsNCiAgICAgIHRhYmxlLmRl
bGV0ZUNhcHRpb24oKTsNCiAgICAgIHRhYmxlLmRlbGV0ZVRIZWFkKCk7DQogICAgICB0YWJsZS5k
ZWxldGVURm9vdCgpOw0KICAgICAgYXNzZXJ0KCF0YWJsZS5jYXB0aW9uLCAiYWZ0ZXIgZGVsZXRp
b246IGNhcHRpb24iKTsNCiAgICAgIGFzc2VydCh0YWJsZS50Qm9kaWVzLCAiYWZ0ZXIgZGVsZXRp
b246IHRCb2RpZXMiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50Qm9kaWVzLmxlbmd0aCwg
MCwgImFmdGVyIGRlbGV0aW9uOiB0Qm9kaWVzLmxlbmd0aCIpOw0KICAgICAgYXNzZXJ0KHRhYmxl
LnJvd3MsICJhZnRlciBkZWxldGlvbjogcm93cyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxl
LnJvd3MubGVuZ3RoLCAwLCAiYWZ0ZXIgZGVsZXRpb246IHJvd3MubGVuZ3RoIik7DQogICAgICBh
c3NlcnQoIXRhYmxlLnRGb290LCAiYWZ0ZXIgZGVsZXRpb246IHRGb290Iik7DQogICAgICBhc3Nl
cnQoIXRhYmxlLnRIZWFkLCAiYWZ0ZXIgZGVsZXRpb246IHRIZWFkIik7DQogICAgICBhc3NlcnQo
IXRhYmxlLmhhc0NoaWxkTm9kZXMoKSwgImFmdGVyIGRlbGV0aW9uOiBoYXNDaGlsZE5vZGVzKCki
KTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCwgMCwgImFmdGVy
IGRlbGV0aW9uOiBjaGlsZE5vZGVzLmxlbmd0aCIpOw0KICAgICAgcmV0dXJuIDQ7DQogICAgfSwN
CiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDUwOiBjb25zdHJ1Y3QgYSB0YWJsZSwg
YW5kIHNlZSBpZiB0aGUgdGFibGUgaXMgYXMgZXhwZWN0ZWQNCiAgICAgIHZhciB0YWJsZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7DQogICAgICB0YWJsZS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd0Ym9keScpKTsNCiAgICAgIHZhciB0cjEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd0cicpOw0KICAgICAgdGFibGUuYXBwZW5kQ2hpbGQodHIxKTsNCiAg
ICAgIHRhYmxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhcHRpb24nKSk7
DQogICAgICB0YWJsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aGVhZCcp
KTsNCiAgICAgIC8vIDx0YWJsZT48dGJvZHkvPjx0ci8+PGNhcHRpb24vPjx0aGVhZC8+DQogICAg
ICB0YWJsZS5pbnNlcnRCZWZvcmUodGFibGUuZmlyc3RDaGlsZC5uZXh0U2libGluZywgbnVsbCk7
IC8vIG1vdmUgdGhlIDx0ci8+IHRvIHRoZSBlbmQNCiAgICAgIC8vIDx0YWJsZT48dGJvZHkvPjxj
YXB0aW9uLz48dGhlYWQvPjx0ci8+DQogICAgICB0YWJsZS5yZXBsYWNlQ2hpbGQodGFibGUuZmly
c3RDaGlsZCwgdGFibGUubGFzdENoaWxkKTsgLy8gbW92ZSB0aGUgPHRib2R5Lz4gdG8gdGhlIGVu
ZCBhbmQgcmVtb3ZlIHRoZSA8dHI+DQogICAgICAvLyA8dGFibGU+PGNhcHRpb24vPjx0aGVhZC8+
PHRib2R5Lz4NCiAgICAgIHZhciB0cjIgPSB0YWJsZS50Qm9kaWVzWzBdLmluc2VydFJvdygwKTsN
CiAgICAgIC8vIDx0YWJsZT48Y2FwdGlvbi8+PHRoZWFkLz48dGJvZHk+PHRyLz48XHRib2R5PiAg
ICAgKHRoZSAnXCcgaXMgdG8gYXZvaWQgdmFsaWRhdGlvbiBlcnJvcnMpDQogICAgICBhc3NlcnRF
cXVhbHModGFibGUudEJvZGllc1swXS5yb3dzWzBdLnJvd0luZGV4LCAwLCAicm93SW5kZXggYnJv
a2VuIik7DQogICAgICBhc3NlcnRFcXVhbHModGFibGUudEJvZGllc1swXS5yb3dzWzBdLnNlY3Rp
b25Sb3dJbmRleCwgMCwgInNlY3Rpb25Sb3dJbmRleCBicm9rZW4iKTsNCiAgICAgIGFzc2VydEVx
dWFscyh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCwgMywgIndyb25nIG51bWJlciBvZiBjaGlsZHJl
biIpOw0KICAgICAgYXNzZXJ0KHRhYmxlLmNhcHRpb24sICJjYXB0aW9uIGJyb2tlbiIpOw0KICAg
ICAgYXNzZXJ0KHRhYmxlLnRIZWFkLCAidEhlYWQgYnJva2VuIik7DQogICAgICBhc3NlcnQoIXRh
YmxlLnRGb290LCAidEZvb3QgYnJva2VuIik7DQogICAgICBhc3NlcnRFcXVhbHModGFibGUudEJv
ZGllcy5sZW5ndGgsIDEsICJ3cm9uZyBudW1iZXIgb2YgdEJvZGllcyIpOw0KICAgICAgYXNzZXJ0
RXF1YWxzKHRhYmxlLnJvd3MubGVuZ3RoLCAxLCAid3JvbmcgbnVtYmVyIG9mIHJvd3MiKTsNCiAg
ICAgIGFzc2VydCghdHIxLnBhcmVudE5vZGUsICJvcnBoYW4gcm93IGhhcyB1bmV4cGVjdGVkIHBh
cmVudCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmNhcHRpb24sIHRhYmxlLmNyZWF0ZUNh
cHRpb24oKSwgImNhcHRpb24gY3JlYXRpb24gZmFpbGVkIik7DQogICAgICBhc3NlcnRFcXVhbHMo
dGFibGUudEZvb3QsIG51bGwsICJ0YWJsZSBoYXMgdW5leHBlY3RlZCBmb290ZXIiKTsNCiAgICAg
IGFzc2VydEVxdWFscyh0YWJsZS50SGVhZCwgdGFibGUuY3JlYXRlVEhlYWQoKSwgImhlYWRlciBj
cmVhdGlvbiBmYWlsZWQiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5jcmVhdGVURm9vdCgp
LCB0YWJsZS50Rm9vdCwgImZvb3RlciBjcmVhdGlvbiBmYWlsZWQiKTsNCiAgICAgIC8vIGVpdGhl
cjogPHRhYmxlPjxjYXB0aW9uLz48dGhlYWQvPjx0Ym9keT48dHIvPjxcdGJvZHk+PHRmb290Lz4N
CiAgICAgIC8vICAgICBvcjogPHRhYmxlPjxjYXB0aW9uLz48dGhlYWQvPjx0Zm9vdC8+PHRib2R5
Pjx0ci8+PFx0Ym9keT4NCiAgICAgIHRhYmxlLnRIZWFkLmFwcGVuZENoaWxkKHRyMSk7DQogICAg
ICAvLyBlaXRoZXI6IDx0YWJsZT48Y2FwdGlvbi8+PHRoZWFkPjx0ci8+PFx0aGVhZD48dGJvZHk+
PHRyLz48XHRib2R5Pjx0Zm9vdC8+DQogICAgICAvLyAgICAgb3I6IDx0YWJsZT48Y2FwdGlvbi8+
PHRoZWFkPjx0ci8+PFx0aGVhZD48dGZvb3QvPjx0Ym9keT48dHIvPjxcdGJvZHk+DQogICAgICBh
c3NlcnRFcXVhbHModGFibGUucm93c1swXSwgdGFibGUudEhlYWQuZmlyc3RDaGlsZCwgInRvcCBy
b3cgbm90IGluIGV4cGVjdGVkIHBvc2l0aW9uIik7DQogICAgICBhc3NlcnRFcXVhbHModGFibGUu
cm93cy5sZW5ndGgsIDIsICJ3cm9uZyBudW1iZXIgb2Ygcm93cyBhZnRlciBhcHBlbmRpbmcgb25l
Iik7DQogICAgICBhc3NlcnRFcXVhbHModGFibGUucm93c1sxXSwgdGFibGUudEJvZGllc1swXS5m
aXJzdENoaWxkLCAic2Vjb25kIHJvdyBub3QgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsNCiAgICAg
IHJldHVybiA0Ow0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCA1MTog
dGVzdCB0aGUgb3JkZXJpbmcgYW5kIGNyZWF0aW9uIG9mIHJvd3MNCiAgICAgIHZhciB0YWJsZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7DQogICAgICB2YXIgcm93cyA9IFsNCiAg
ICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKSwgICAgLy8gMDogZW5kcyB1cCBmaXJz
dCBjaGlsZCBvZiB0aGUgdGZvb3QNCiAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHIn
KSwgICAgLy8gMTogZ29lcyBhdCB0aGUgZW5kIG9mIHRoZSB0YWJsZQ0KICAgICAgICBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd0cicpLCAgICAvLyAyOiBiZWNvbWVzIHNlY29uZCBjaGlsZCBvZiB0
aGVhZA0KICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpLCAgICAvLyAzOiBiZWNv
bWVzIHRoaXJkIGNoaWxkIG9mIHRoZSB0aGVhZA0KICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCd0cicpLCAgICAvLyA0OiBub3QgaW4gdGhlIHRhYmxlDQogICAgICAgIHRhYmxlLmluc2Vy
dFJvdygwKSwgICAgICAgICAgICAgIC8vIDU6IG5vdCBpbiB0aGUgdGFibGUNCiAgICAgICAgdGFi
bGUuY3JlYXRlVEZvb3QoKS5pbnNlcnRSb3coMCkgLy8gNjogZW5kcyB1cCBzZWNvbmQgaW4gdGhl
IHRmb290DQogICAgICBdOw0KICAgICAgcm93c1s2XS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHJv
d3NbMF0pOw0KICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocm93c1sxXSk7DQogICAgICB0YWJsZS5p
bnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGhlYWQnKSwgdGFibGUuZmlyc3RD
aGlsZCk7DQogICAgICB0YWJsZS5maXJzdENoaWxkLmFwcGVuZENoaWxkKHJvd3NbMl0pOw0KICAg
ICAgcm93c1syXS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHJvd3NbM10pOw0KICAgICAgcm93c1s0
XS5hcHBlbmRDaGlsZChyb3dzWzVdLnBhcmVudE5vZGUpOw0KICAgICAgdGFibGUuaW5zZXJ0Um93
KDApOw0KICAgICAgdGFibGUudEZvb3QuYXBwZW5kQ2hpbGQocm93c1s2XSk7DQogICAgICBhc3Nl
cnRFcXVhbHModGFibGUucm93cy5sZW5ndGgsIDYsICJ3cm9uZyBudW1iZXIgb2Ygcm93cyIpOw0K
ICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpLmxlbmd0
aCwgNiwgIndyb25nIG51bWJlciBvZiB0ciBlbGVtZW50cyIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHRhYmxlLmNoaWxkTm9kZXMubGVuZ3RoLCAzLCAidGFibGUgaGFzIHdyb25nIG51bWJlciBvZiBj
aGlsZHJlbiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmNoaWxkTm9kZXNbMF0sIHRhYmxl
LnRIZWFkLCAidEhlYWQgaXNuJ3QgZmlyc3QiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVswXSwgdGFibGUudEhlYWQuY2hpbGROb2Rlc1swXSwg
ImZpcnN0IHRyIGlzbid0IGluIHRIZWFkIGNvcnJlY3RseSIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpWzFdLCB0YWJsZS50SGVhZC5jaGlsZE5v
ZGVzWzFdLCAic2Vjb25kIHRyIGlzbid0IGluIHRIZWFkIGNvcnJlY3RseSIpOw0KICAgICAgYXNz
ZXJ0RXF1YWxzKHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpWzFdLCByb3dzWzJdLCAi
c2Vjb25kIHRyIGlzIHRoZSB3cm9uZyByb3ciKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVsyXSwgdGFibGUudEhlYWQuY2hpbGROb2Rlc1syXSwg
InRoaXJkIHRyIGlzbid0IGluIHRIZWFkIGNvcnJlY3RseSIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpWzJdLCByb3dzWzNdLCAidGhpcmQgdHIg
aXMgdGhlIHdyb25nIHJvdyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmNoaWxkTm9kZXNb
MV0sIHRhYmxlLnRGb290LCAidEZvb3QgaXNuJ3Qgc2Vjb25kIik7DQogICAgICBhc3NlcnRFcXVh
bHModGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylbM10sIHRhYmxlLnRGb290LmNoaWxk
Tm9kZXNbMF0sICJmb3VydGggdHIgaXNuJ3QgaW4gdEZvb3QgY29ycmVjdGx5Iik7DQogICAgICBh
c3NlcnRFcXVhbHModGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylbM10sIHJvd3NbMF0s
ICJmb3VydGggdHIgaXMgdGhlIHdyb25nIHJvdyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxl
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpWzRdLCB0YWJsZS50Rm9vdC5jaGlsZE5vZGVzWzFd
LCAiZmlmdGggdHIgaXNuJ3QgaW4gdEZvb3QgY29ycmVjdGx5Iik7DQogICAgICBhc3NlcnRFcXVh
bHModGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylbNF0sIHJvd3NbNl0sICJmaWZ0aCB0
ciBpcyB0aGUgd3Jvbmcgcm93Iik7DQogICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3RyJylbNV0sIHRhYmxlLmNoaWxkTm9kZXNbMl0sICJzaXh0aCB0ciBpc24n
dCBpbiB0Rm9vdCBjb3JyZWN0bHkiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgndHInKVs1XSwgcm93c1sxXSwgInNpeHRoIHRyIGlzIHRoZSB3cm9uZyBy
b3ciKTsNCiAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50Qm9kaWVzLmxlbmd0aCwgMCwgIm5vbi16
ZXJvIG51bWJlciBvZiB0Qm9kaWVzIik7DQogICAgICByZXR1cm4gNDsNCiAgICB9LA0KDQogICAg
Ly8gRm9ybXMNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDUyOiA8Zm9ybT4gYW5k
IC5lbGVtZW50cw0KICAgICAgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdm
b3JtJylbMF07DQogICAgICBhc3NlcnQodGVzdC5lbGVtZW50cyAhPT0gdGVzdCwgImZvcm0uZWxl
bWVudHMgPT09IGZvcm0iKTsNCiAgICAgIGFzc2VydCh0ZXN0LmVsZW1lbnRzICE9PSB0ZXN0Lmdl
dEF0dHJpYnV0ZSgnZWxlbWVudHMnKSwgImZvcm0gZWxlbWVudCBoYXMgYW4gZWxlbWVudHMgY29u
dGVudCBhdHRyaWJ1dGUiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0ZXN0LmVsZW1lbnRzLmxlbmd0
aCwgMSwgImZvcm0gZWxlbWVudCBoYXMgdW5leHBlY3RlZCBudW1iZXIgb2YgY29udHJvbHMiKTsN
CiAgICAgIGFzc2VydEVxdWFscyh0ZXN0LmVsZW1lbnRzLmxlbmd0aCwgdGVzdC5sZW5ndGgsICJm
b3JtIGVsZW1lbnQgaGFzIGluY29uc2lzdGVudCBudW1iZXJzIG9mIGNvbnRyb2xzIik7DQogICAg
ICByZXR1cm4gNDsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNTM6
IGNoYW5naW5nIGFuIDxpbnB1dD4gZHluYW1pY2FsbHkNCiAgICAgIHZhciBmID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZm9ybScpOw0KICAgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdpbnB1dCcpOw0KICAgICAgaS5uYW1lID0gJ2ZpcnN0JzsNCiAgICAgIGkudHlwZSA9ICd0
ZXh0JzsNCiAgICAgIGkudmFsdWUgPSAndGVzdCc7DQogICAgICBmLmFwcGVuZENoaWxkKGkpOw0K
ICAgICAgYXNzZXJ0RXF1YWxzKGkuZ2V0QXR0cmlidXRlKCduYW1lJyksICdmaXJzdCcsICJuYW1l
IGF0dHJpYnV0ZSB3cm9uZyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGkubmFtZSwgJ2ZpcnN0Jywg
Im5hbWUgcHJvcGVydHkgd3JvbmciKTsNCiAgICAgIGFzc2VydEVxdWFscyhpLmdldEF0dHJpYnV0
ZSgndHlwZScpLCAndGV4dCcsICJ0eXBlIGF0dHJpYnV0ZSB3cm9uZyIpOw0KICAgICAgYXNzZXJ0
RXF1YWxzKGkudHlwZSwgJ3RleHQnLCAidHlwZSBwcm9wZXJ0eSB3cm9uZyIpOw0KICAgICAgYXNz
ZXJ0KCFpLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSwgInZhbHVlIGF0dHJpYnV0ZSB3cm9uZyIpOw0K
ICAgICAgYXNzZXJ0RXF1YWxzKGkudmFsdWUsICd0ZXN0JywgInZhbHVlIHByb3BlcnR5IHdyb25n
Iik7DQogICAgICBhc3NlcnRFcXVhbHMoZi5lbGVtZW50cy5sZW5ndGgsIDEsICJmb3JtJ3MgZWxl
bWVudHMgYXJyYXkgaGFzIHdyb25nIHNpemUiKTsNCiAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1l
bnRzWzBdLCBpLCAiZm9ybSdzIGVsZW1lbnQgYXJyYXkgZG9lc24ndCBoYXZlIGlucHV0IGNvbnRy
b2wgYnkgaW5kZXgiKTsNCiAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1lbnRzLmZpcnN0LCBpLCAi
Zm9ybSdzIGVsZW1lbnQgYXJyYXkgZG9lc24ndCBoYXZlIGlucHV0IGNvbnRyb2wgYnkgbmFtZSIp
Ow0KICAgICAgYXNzZXJ0RXF1YWxzKGYuZWxlbWVudHMuc2Vjb25kLCBudWxsLCAiZm9ybSdzIGVs
ZW1lbnQgYXJyYXkgaGFzIHVuZXhwZWN0ZWQgY29udHJvbHMgYnkgbmFtZSIpOw0KICAgICAgaS5u
YW1lID0gJ3NlY29uZCc7DQogICAgICBpLnR5cGUgPSAncGFzc3dvcmQnOw0KICAgICAgaS52YWx1
ZSA9ICdURVNUJzsNCiAgICAgIGFzc2VydEVxdWFscyhpLmdldEF0dHJpYnV0ZSgnbmFtZScpLCAn
c2Vjb25kJywgIm5hbWUgYXR0cmlidXRlIHdyb25nIGFmdGVyIGNoYW5nZSIpOw0KICAgICAgYXNz
ZXJ0RXF1YWxzKGkubmFtZSwgJ3NlY29uZCcsICJuYW1lIHByb3BlcnR5IHdyb25nIGFmdGVyIGNo
YW5nZSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGkuZ2V0QXR0cmlidXRlKCd0eXBlJyksICdwYXNz
d29yZCcsICJ0eXBlIGF0dHJpYnV0ZSB3cm9uZyBhZnRlciBjaGFuZ2UiKTsNCiAgICAgIGFzc2Vy
dEVxdWFscyhpLnR5cGUsICdwYXNzd29yZCcsICJ0eXBlIHByb3BlcnR5IHdyb25nIGFmdGVyIGNo
YW5nZSIpOw0KICAgICAgYXNzZXJ0KCFpLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSwgInZhbHVlIGF0
dHJpYnV0ZSB3cm9uZyBhZnRlciBjaGFuZ2UiKTsNCiAgICAgIGFzc2VydEVxdWFscyhpLnZhbHVl
LCAnVEVTVCcsICJ2YWx1ZSBwcm9wZXJ0eSB3cm9uZyBhZnRlciBjaGFuZ2UiKTsNCiAgICAgIGFz
c2VydEVxdWFscyhmLmVsZW1lbnRzLmxlbmd0aCwgMSwgImZvcm0ncyBlbGVtZW50cyBhcnJheSBo
YXMgd3Jvbmcgc2l6ZSBhZnRlciBjaGFuZ2UiKTsNCiAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1l
bnRzWzBdLCBpLCAiZm9ybSdzIGVsZW1lbnQgYXJyYXkgZG9lc24ndCBoYXZlIGlucHV0IGNvbnRy
b2wgYnkgaW5kZXggYWZ0ZXIgY2hhbmdlIik7DQogICAgICBhc3NlcnRFcXVhbHMoZi5lbGVtZW50
cy5zZWNvbmQsIGksICJmb3JtJ3MgZWxlbWVudCBhcnJheSBkb2Vzbid0IGhhdmUgaW5wdXQgY29u
dHJvbCBieSBuYW1lIGFmdGVyIGNoYW5nZSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGYuZWxlbWVu
dHMuZmlyc3QsIG51bGwsICJmb3JtJ3MgZWxlbWVudCBhcnJheSBoYXMgdW5leHBlY3RlZCBjb250
cm9scyBieSBuYW1lIGFmdGVyIGNoYW5nZSIpOw0KICAgICAgcmV0dXJuIDQ7DQogICAgfSwNCiAg
ICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDU0OiBjaGFuZ2luZyBhIHBhcnNlZCA8aW5w
dXQ+DQogICAgICB2YXIgaSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcp
WzBdOw0KICAgICAgLy8gaW5pdGlhbCB2YWx1ZXMNCiAgICAgIGFzc2VydEVxdWFscyhpLmdldEF0
dHJpYnV0ZSgndHlwZScpLCAnSElEREVOJywgImlucHV0IGNvbnRyb2wncyB0eXBlIGNvbnRlbnQg
YXR0cmlidXRlIHdhcyB3cm9uZyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGkudHlwZSwgJ2hpZGRl
bicsICJpbnB1dCBjb250cm9sJ3MgdHlwZSBET00gYXR0cmlidXRlIHdhcyB3cm9uZyIpOw0KICAg
ICAgLy8gY2hhbmdlIHZhbHVlcw0KICAgICAgaS5uYW1lID0gJ3Rlc3QnOw0KICAgICAgYXNzZXJ0
RXF1YWxzKGkucGFyZW50Tm9kZS5lbGVtZW50cy50ZXN0LCBpLCAiaW5wdXQgY29udHJvbCdzIGZv
cm0gZGlkbid0IHVwZGF0ZSIpOw0KICAgICAgLy8gY2hlY2sgZXZlbnQgaGFuZGxlcnMNCiAgICAg
IGkucGFyZW50Tm9kZS5hY3Rpb24gPSAnamF2YXNjcmlwdDonOw0KICAgICAgdmFyIGNhbGxlZCA9
IGZhbHNlOw0KICAgICAgaS5wYXJlbnROb2RlLm9uc3VibWl0ID0gZnVuY3Rpb24gKGFyZykgew0K
ICAgICAgICBhcmcucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgY2FsbGVkID0gdHJ1ZTsNCiAg
ICAgIH07DQogICAgICBpLnR5cGUgPSAnc3VibWl0JzsNCiAgICAgIGkuY2xpY2soKTsgLy8gc3lu
Y2hyb25vdXNseSBkaXNwYXRjaGVzIGEgY2xpY2sgZXZlbnQgdG8gdGhlIHN1Ym1pdCBidXR0b24s
IHdoaWNoIHN1Ym1pdHMgdGhlIGZvcm0sIHdoaWNoIGNhbGxzIG9uc3VibWl0DQogICAgICBhc3Nl
cnQoY2FsbGVkLCAiY2xpY2sgaGFuZGxlciBkaWRuJ3QgZGlzcGF0Y2ggcHJvcGVybHkiKTsNCiAg
ICAgIGkudHlwZSA9ICdoSWREZU4nOw0KICAgICAgLy8gY2hlY2sgbnVtZXJpYyBhdHRyaWJ1dGVz
DQogICAgICBpLnNldEF0dHJpYnV0ZSgnbWF4TGVuZ3RoJywgJzInKTsNCiAgICAgIHZhciBzID0g
aS5nZXRBdHRyaWJ1dGUoJ21heExlbmd0aCcpOw0KICAgICAgYXNzZXJ0KHMubWF0Y2gsICJhdHRy
aWJ1dGUgaXMgbm90IGEgU3RyaW5nIik7DQogICAgICBhc3NlcnQoIXMuTUlOX1ZBTFVFLCAiYXR0
cmlidXRlIGlzIGEgTnVtYmVyIik7DQogICAgICByZXR1cm4gNDsNCiAgICB9LA0KICAgIGZ1bmN0
aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNTU6IG1vdmVkIGNoZWNrYm94ZXMgc2hvdWxkIGtlZXAg
dGhlaXIgc3RhdGUNCiAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiaWZyYW1lIilbMF07DQogICAgICB2YXIgaW5wdXQxID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW5wdXQnKTsNCiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbnB1dDEpOw0K
ICAgICAgaW5wdXQxLnR5cGUgPSAiY2hlY2tib3giOw0KICAgICAgaW5wdXQxLmNoZWNrZWQgPSB0
cnVlOw0KICAgICAgYXNzZXJ0KGlucHV0MS5jaGVja2VkLCAiY2hlY2tib3ggbm90IGNoZWNrZWQg
YWZ0ZXIgYmVpbmcgY2hlY2tlZCAoaW5zZXJ0ZWQgZmlyc3QpIik7DQogICAgICB2YXIgaW5wdXQy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsNCiAgICAgIGlucHV0Mi50eXBlID0g
ImNoZWNrYm94IjsNCiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbnB1dDIpOw0KICAgICAg
aW5wdXQyLmNoZWNrZWQgPSB0cnVlOw0KICAgICAgYXNzZXJ0KGlucHV0Mi5jaGVja2VkLCAiY2hl
Y2tib3ggbm90IGNoZWNrZWQgYWZ0ZXIgYmVpbmcgY2hlY2tlZCAoaW5zZXJ0ZWQgYWZ0ZXIgdHlw
ZSBzZXQpIik7DQogICAgICB2YXIgaW5wdXQzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5w
dXQnKTsNCiAgICAgIGlucHV0My50eXBlID0gImNoZWNrYm94IjsNCiAgICAgIGlucHV0My5jaGVj
a2VkID0gdHJ1ZTsNCiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbnB1dDMpOw0KICAgICAg
YXNzZXJ0KGlucHV0My5jaGVja2VkLCAiY2hlY2tib3ggbm90IGNoZWNrZWQgYWZ0ZXIgYmVpbmcg
Y2hlY2tlZCAoaW5zZXJ0ZWQgYWZ0ZXIgYmVpbmcgY2hlY2tlZCkiKTsNCiAgICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMV07DQogICAgICB0
YXJnZXQuYXBwZW5kQ2hpbGQoaW5wdXQxKTsNCiAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChpbnB1
dDIpOw0KICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGlucHV0Myk7DQogICAgICBhc3NlcnQoaW5w
dXQxLmNoZWNrZWQsICJjaGVja2JveCAxIG5vdCBjaGVja2VkIGFmdGVyIGJlaW5nIG1vdmVkIik7
DQogICAgICBhc3NlcnQoaW5wdXQyLmNoZWNrZWQsICJjaGVja2JveCAyIG5vdCBjaGVja2VkIGFm
dGVyIGJlaW5nIG1vdmVkIik7DQogICAgICBhc3NlcnQoaW5wdXQzLmNoZWNrZWQsICJjaGVja2Jv
eCAzIG5vdCBjaGVja2VkIGFmdGVyIGJlaW5nIG1vdmVkIik7DQogICAgICByZXR1cm4gNDsNCiAg
ICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNTY6IGNsb25lZCByYWRpbyBi
dXR0b25zIHNob3VsZCBrZWVwIHRoZWlyIHN0YXRlDQogICAgICB2YXIgZm9ybSA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF07DQogICAgICB2YXIgaW5wdXQxID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsNCiAgICAgIGlucHV0MS50eXBlID0gInJhZGlv
IjsNCiAgICAgIGlucHV0MS5uYW1lID0gInJhZGlvR3JvdXAxIjsNCiAgICAgIGZvcm0uYXBwZW5k
Q2hpbGQoaW5wdXQxKTsNCiAgICAgIHZhciBpbnB1dDIgPSBpbnB1dDEuY2xvbmVOb2RlKHRydWUp
Ow0KICAgICAgaW5wdXQxLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoaW5wdXQyKTsNCiAgICAgIGlu
cHV0MS5jaGVja2VkID0gdHJ1ZTsNCiAgICAgIGFzc2VydChmb3JtLmVsZW1lbnRzLnJhZGlvR3Jv
dXAxLCAicmFkaW8gZ3JvdXAgYWJzZW50Iik7DQogICAgICBhc3NlcnQoaW5wdXQxLmNoZWNrZWQs
ICJmaXJzdCByYWRpbyBidXR0b24gbm90IGNoZWNrZWQiKTsNCiAgICAgIGFzc2VydCghaW5wdXQy
LmNoZWNrZWQsICJzZWNvbmQgcmFkaW8gYnV0dG9uIGNoZWNrZWQiKTsNCiAgICAgIGlucHV0Mi5j
aGVja2VkID0gdHJ1ZTsNCiAgICAgIGFzc2VydCghaW5wdXQxLmNoZWNrZWQsICJmaXJzdCByYWRp
byBidXR0b24gY2hlY2tlZCIpOw0KICAgICAgYXNzZXJ0KGlucHV0Mi5jaGVja2VkLCAic2Vjb25k
IHJhZGlvIGJ1dHRvbiBub3QgY2hlY2tlZCIpOw0KICAgICAgdmFyIGlucHV0MyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7DQogICAgICBpbnB1dDMudHlwZSA9ICJyYWRpbyI7DQog
ICAgICBpbnB1dDMubmFtZSA9ICJyYWRpb0dyb3VwMiI7DQogICAgICBmb3JtLmFwcGVuZENoaWxk
KGlucHV0Myk7DQogICAgICBhc3NlcnQoIWlucHV0My5jaGVja2VkLCAidGhpcmQgcmFkaW8gYnV0
dG9uIGNoZWNrZWQiKTsNCiAgICAgIGlucHV0My5jaGVja2VkID0gdHJ1ZTsNCiAgICAgIGFzc2Vy
dCghaW5wdXQxLmNoZWNrZWQsICJmaXJzdCByYWRpbyBidXR0b24gbmV3bHkgY2hlY2tlZCIpOw0K
ICAgICAgYXNzZXJ0KGlucHV0Mi5jaGVja2VkLCAic2Vjb25kIHJhZGlvIGJ1dHRvbiBuZXdseSBu
b3QgY2hlY2tlZCIpOw0KICAgICAgYXNzZXJ0KGlucHV0My5jaGVja2VkLCAidGhpcmQgcmFkaW8g
YnV0dG9uIG5vdCBjaGVja2VkIik7DQogICAgICBpbnB1dDEuY2hlY2tlZCA9IHRydWU7DQogICAg
ICBhc3NlcnQoaW5wdXQxLmNoZWNrZWQsICJmaXJzdCByYWRpbyBidXR0b24gZW5kZWQgdXAgbm90
IGNoZWNrZWQiKTsNCiAgICAgIGFzc2VydCghaW5wdXQyLmNoZWNrZWQsICJzZWNvbmQgcmFkaW8g
YnV0dG9uIGVuZGVkIHVwIGNoZWNrZWQiKTsNCiAgICAgIGFzc2VydChpbnB1dDMuY2hlY2tlZCwg
InRoaXJkIHJhZGlvIGJ1dHRvbiBlbmRlZCB1cCBub3QgY2hlY2tlZCIpOw0KICAgICAgaW5wdXQx
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaW5wdXQxKTsNCiAgICAgIGlucHV0Mi5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKGlucHV0Mik7DQogICAgICBpbnB1dDMucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChpbnB1dDMpOw0KICAgICAgcmV0dXJuIDQ7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQog
ICAgICAvLyB0ZXN0IDU3OiBIVE1MU2VsZWN0RWxlbWVudC5hZGQoKQ0KICAgICAgdmFyIHMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTsNCiAgICAgIHZhciBvID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7DQogICAgICBzLmFkZChvLCBudWxsKTsNCiAgICAgIGFz
c2VydChzLmZpcnN0Q2hpbGQgPT09IG8sICJhZGQoKSBkaWRuJ3QgYWRkIHRvIGZpcnN0Q2hpbGQi
KTsNCiAgICAgIGFzc2VydEVxdWFscyhzLmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAiYWRkKCkgZGlk
bid0IGFkZCB0byBjaGlsZE5vZGVzIik7DQogICAgICBhc3NlcnQocy5jaGlsZE5vZGVzWzBdID09
PSBvLCAiYWRkKCkgZGlkbid0IGFkZCB0byBjaGlsZE5vZGVzIGNvcnJlY3RseSIpOw0KICAgICAg
YXNzZXJ0RXF1YWxzKHMub3B0aW9ucy5sZW5ndGgsIDEsICJhZGQoKSBkaWRuJ3QgYWRkIHRvIG9w
dGlvbnMiKTsNCiAgICAgIGFzc2VydChzLm9wdGlvbnNbMF0gPT09IG8sICJhZGQoKSBkaWRuJ3Qg
YWRkIHRvIG9wdGlvbnMgY29ycmVjdGx5Iik7DQogICAgICByZXR1cm4gNDsNCiAgICB9LA0KICAg
IGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNTg6IEhUTUxPcHRpb25FbGVtZW50LmRlZmF1
bHRTZWxlY3RlZA0KICAgICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3Qn
KTsNCiAgICAgIHZhciBvMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOw0KICAg
ICAgdmFyIG8yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7DQogICAgICBvMi5k
ZWZhdWx0U2VsZWN0ZWQgPSB0cnVlOw0KICAgICAgdmFyIG8zID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnb3B0aW9uJyk7DQogICAgICBzLmFwcGVuZENoaWxkKG8xKTsNCiAgICAgIHMuYXBwZW5k
Q2hpbGQobzIpOw0KICAgICAgcy5hcHBlbmRDaGlsZChvMyk7DQogICAgICBhc3NlcnQocy5vcHRp
b25zW3Muc2VsZWN0ZWRJbmRleF0gPT09IG8yLCAiZGVmYXVsdFNlbGVjdGVkIGRpZG4ndCB0YWtl
Iik7DQogICAgICByZXR1cm4gNDsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8v
IHRlc3QgNTk6IGF0dHJpYnV0ZXMgb2YgPGJ1dHRvbj4gZWxlbWVudHMNCiAgICAgIHZhciBidXR0
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsNCiAgICAgIGFzc2VydEVxdWFs
cyhidXR0b24udHlwZSwgInN1Ym1pdCIsICI8YnV0dG9uPiBkb2Vzbid0IGhhdmUgdHlwZT1zdWJt
aXQiKTsNCiAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiYnV0dG9uIik7DQogICAg
ICBhc3NlcnRFcXVhbHMoYnV0dG9uLnR5cGUsICJidXR0b24iLCAiPGJ1dHRvbiB0eXBlPWJ1dHRv
bj4gZG9lc24ndCBoYXZlIHR5cGU9YnV0dG9uIik7DQogICAgICBidXR0b24ucmVtb3ZlQXR0cmli
dXRlKCJ0eXBlIik7DQogICAgICBhc3NlcnRFcXVhbHMoYnV0dG9uLnR5cGUsICJzdWJtaXQiLCAi
PGJ1dHRvbj4gZG9lc24ndCBoYXZlIHR5cGU9c3VibWl0IGJhY2siKTsNCiAgICAgIGJ1dHRvbi5z
ZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJ2FwcGxlJyk7DQogICAgICBidXR0b24uYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JhbmFuYScpKTsNCiAgICAgIGFzc2VydEVxdWFscyhi
dXR0b24udmFsdWUsICdhcHBsZScsICJ3cm9uZyBidXR0b24gdmFsdWUiKTsNCiAgICAgIHJldHVy
biA0Ow0KICAgIH0sDQoNCiAgICAvLyBNaXNjIERPTTIgSFRNTA0KICAgIGZ1bmN0aW9uICgpIHsN
CiAgICAgIC8vIHRlc3QgNjA6IGNsYXNzTmFtZSB2cyAiY2xhc3MiIHZzIGF0dHJpYnV0ZSBub2Rl
cw0KICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3Bhbicp
WzBdOw0KICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2tpdHRlbnMnKTsNCiAgICAg
IGlmICghc3Bhbi5nZXRBdHRyaWJ1dGVOb2RlKQ0KICAgICAgICByZXR1cm4gNDsgLy8gc3VwcG9y
dCBmb3IgYXR0cmlidXRlIG5vZGVzIGlzIG9wdGlvbmFsIGluIEFjaWQzLCBiZWNhdXNlIGF0dHJp
YnV0ZSBub2RlcyBtaWdodCBiZSByZW1vdmVkIGZyb20gRE9NIENvcmUgaW4gdGhlIGZ1dHVyZS4N
CiAgICAgIHZhciBhdHRyID0gc3Bhbi5nZXRBdHRyaWJ1dGVOb2RlKCdjbGFzcycpOw0KICAgICAg
Ly8gaG93ZXZlciwgaWYgdGhleSdyZSBzdXBwb3J0ZWQsIHRoZXknZCBiZXR0ZXIgd29yazoNCiAg
ICAgIGFzc2VydChhdHRyLnNwZWNpZmllZCwgImF0dHJpYnV0ZSBub3Qgc3BlY2lmaWVkIik7DQog
ICAgICBhc3NlcnRFcXVhbHMoYXR0ci52YWx1ZSwgJ2tpdHRlbnMnLCAiYXR0cmlidXRlIHZhbHVl
IHdyb25nIik7DQogICAgICBhc3NlcnRFcXVhbHMoYXR0ci5uYW1lLCAnY2xhc3MnLCAiYXR0cmli
dXRlIG5hbWUgd3JvbmciKTsNCiAgICAgIGF0dHIudmFsdWUgPSAnb2NlbG90cyc7DQogICAgICBh
c3NlcnRFcXVhbHMoYXR0ci52YWx1ZSwgJ29jZWxvdHMnLCAiYXR0cmlidXRlIHZhbHVlIHdyb25n
Iik7DQogICAgICBhc3NlcnRFcXVhbHMoc3Bhbi5jbGFzc05hbWUsICdvY2Vsb3RzJywgInNldHRp
bmcgYXR0cmlidXRlIHZhbHVlIGZhaWxlZCB0byBiZSByZWZsZWN0ZWQgaW4gY2xhc3NOYW1lIik7
DQogICAgICBzcGFuLmNsYXNzTmFtZSA9ICdjYXRzJzsNCiAgICAgIGFzc2VydEVxdWFscyhhdHRy
Lm93bmVyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyksICdjYXRzJywgInNldHRpbmcgYXR0
cmlidXRlIHZhbHVlIGZhaWxlZCB0byBiZSByZWZsZWN0ZWQgaW4gZ2V0QXR0cmlidXRlKCkiKTsN
CiAgICAgIHNwYW4ucmVtb3ZlQXR0cmlidXRlTm9kZShhdHRyKTsNCiAgICAgIGFzc2VydChhdHRy
LnNwZWNpZmllZCwgImF0dHJpYnV0ZSBub3Qgc3BlY2lmaWVkIGFmdGVyIHJlbW92YWwiKTsNCiAg
ICAgIGFzc2VydCghYXR0ci5vd25lckVsZW1lbnQsICJhdHRyaWJ1dGUgc3RpbGwgb3duZWQgYWZ0
ZXIgcmVtb3ZhbCIpOw0KICAgICAgYXNzZXJ0KCFzcGFuLmNsYXNzTmFtZSwgImVsZW1lbnQgaGFk
IGNsYXNzIGFmdGVyIHJlbW92YWwiKTsNCiAgICAgIHJldHVybiA0Ow0KICAgIH0sDQogICAgZnVu
Y3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCA2MTogY2xhc3NOYW1lIGFuZCB0aGUgY2xhc3MgYXR0
cmlidXRlOiBzcGFjZSBwcmVzZXJ2YXRpb24NCiAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgncCcpOw0KICAgICAgYXNzZXJ0KCFwLmhhc0F0dHJpYnV0ZSgnY2xhc3MnKSwgImVs
ZW1lbnQgaGFkIGF0dHJpYnV0ZSBvbiBjcmVhdGlvbiIpOw0KICAgICAgcC5zZXRBdHRyaWJ1dGUo
J2NsYXNzJywgJyB0ZSAgc3QgJyk7DQogICAgICBhc3NlcnQocC5oYXNBdHRyaWJ1dGUoJ2NsYXNz
JyksICJlbGVtZW50IGRpZCBub3QgaGF2ZSBhdHRyaWJ1dGUgYWZ0ZXIgc2V0dGluZyIpOw0KICAg
ICAgYXNzZXJ0RXF1YWxzKHAuZ2V0QXR0cmlidXRlKCdjbGFzcycpLCAnIHRlICBzdCAnLCAiY2xh
c3MgYXR0cmlidXRlJ3MgdmFsdWUgd2FzIHdyb25nIik7DQogICAgICBhc3NlcnRFcXVhbHMocC5j
bGFzc05hbWUsICcgdGUgIHN0ICcsICJjbGFzc05hbWUgd2FzIHdyb25nIik7DQogICAgICBwLmNs
YXNzTmFtZSA9IHAuY2xhc3NOYW1lLnJlcGxhY2UoLyAvZywgJ1xuJyk7DQogICAgICBhc3NlcnQo
cC5oYXNBdHRyaWJ1dGUoJ2NsYXNzJyksICJlbGVtZW50IGRpZCBub3QgaGF2ZSBhdHRyaWJ1dGUg
YWZ0ZXIgcmVwbGFjZW1lbnQiKTsNCiAgICAgIGFzc2VydEVxdWFscyhwLmdldEF0dHJpYnV0ZSgn
Y2xhc3MnKSwgJ1xudGVcblxuc3RcbicsICJjbGFzcyBhdHRyaWJ1dGUncyB2YWx1ZSB3YXMgd3Jv
bmcgYWZ0ZXIgcmVwbGFjZW1lbnQiKTsNCiAgICAgIGFzc2VydEVxdWFscyhwLmNsYXNzTmFtZSwg
J1xudGVcblxuc3RcbicsICJjbGFzc05hbWUgd2FzIHdyb25nIGFmdGVyIHJlcGxhY2VtZW50Iik7
DQogICAgICBwLmNsYXNzTmFtZSA9ICcnOw0KICAgICAgYXNzZXJ0KHAuaGFzQXR0cmlidXRlKCdj
bGFzcycpLCAiZWxlbWVudCBsb3N0IGF0dHJpYnV0ZSBhZnRlciBiZWluZyBzZXQgdG8gZW1wdHkg
c3RyaW5nIik7DQogICAgICBhc3NlcnRFcXVhbHMocC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyksICcn
LCAiY2xhc3MgYXR0cmlidXRlJ3MgdmFsdWUgd2FzIHdyb25nIGFmdGVyIGJlaW5nIGVtcHRpZWQi
KTsNCiAgICAgIGFzc2VydEVxdWFscyhwLmNsYXNzTmFtZSwgJycsICJjbGFzc05hbWUgd2FzIHdy
b25nIGFmdGVyIGJlaW5nIGVtcHRpZWQiKTsNCiAgICAgIHJldHVybiA0Ow0KICAgIH0sDQogICAg
ZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCA2MjogY2hlY2sgdGhhdCBET00gYXR0cmlidXRl
cyBhbmQgY29udGVudCBhdHRyaWJ1dGVzIGFyZW4ndCBlcXVpdmFsZW50DQogICAgICB2YXIgdGVz
dDsNCiAgICAgIC8vIDxkaXYgY2xhc3M9IiI+DQogICAgICB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2RpdicpWzBdOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRlc3QuY2xhc3NO
YW1lLCAnYnVja2V0cycsICJidWNrZXRzOiBjbGFzc05hbWUgd3JvbmciKTsNCiAgICAgIGFzc2Vy
dEVxdWFscyh0ZXN0LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSwgJ2J1Y2tldHMnLCAiYnVja2V0czog
Y2xhc3Mgd3JvbmciKTsNCiAgICAgIGFzc2VydCghdGVzdC5oYXNBdHRyaWJ1dGUoJ2NsYXNzTmFt
ZScpLCAiYnVja2V0czogZWxlbWVudCBoYXMgY2xhc3NOYW1lIGF0dHJpYnV0ZSIpOw0KICAgICAg
YXNzZXJ0KHRlc3QuY2xhc3NOYW1lICE9IHRlc3QuZ2V0QXR0cmlidXRlKCdjbGFzc05hbWUnKSwg
ImJ1Y2tldHM6IGNsYXNzTmFtZSBhdHRyaWJ1dGUgZXF1YWxzIGNsYXNzTmFtZSBwcm9wZXJ0eSIp
Ow0KICAgICAgYXNzZXJ0KCEoJ2NsYXNzJyBpbiB0ZXN0KSwgImJ1Y2tldHM6IGVsZW1lbnQgaGFz
IGNsYXNzIHByb3BlcnR5IikNCiAgICAgIHRlc3RbJ2NsYXNzJ10gPSAib2lsIjsNCiAgICAgIGFz
c2VydCh0ZXN0LmNsYXNzTmFtZSAhPSAib2lsIiwgImJ1Y2tldHM6IGNsYXNzIHByb3BlcnR5IGFm
ZmVjdGVkIGNsYXNzTmFtZSIpOw0KICAgICAgLy8gPGxhYmVsIGZvcj0iIj4NCiAgICAgIHRlc3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpOw0KICAgICAgdGVzdC5odG1sRm9yID0g
J2phcnMnOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRlc3QuaHRtbEZvciwgJ2phcnMnLCAiamFyczog
aHRtbEZvciB3cm9uZyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRlc3QuZ2V0QXR0cmlidXRlKCdm
b3InKSwgJ2phcnMnLCAiamFyczogZm9yIHdyb25nIik7DQogICAgICBhc3NlcnQoIXRlc3QuaGFz
QXR0cmlidXRlKCdodG1sRm9yJyksICJqYXJzOiBlbGVtZW50IGhhcyBodG1sRm9yIGF0dHJpYnV0
ZSIpOw0KICAgICAgYXNzZXJ0KHRlc3QuaHRtbEZvciAhPSB0ZXN0LmdldEF0dHJpYnV0ZSgnaHRt
bEZvcicpLCAiamFyczogaHRtbEZvciBhdHRyaWJ1dGUgZXF1YWxzIGh0bWxGb3IgcHJvcGVydHki
KTsNCiAgICAgIHRlc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpOw0KICAgICAg
dGVzdC5zZXRBdHRyaWJ1dGUoJ2ZvcicsICdwb3RzJyk7DQogICAgICBhc3NlcnRFcXVhbHModGVz
dC5odG1sRm9yLCAncG90cycsICJwb3RzOiBodG1sRm9yIHdyb25nIik7DQogICAgICBhc3NlcnRF
cXVhbHModGVzdC5nZXRBdHRyaWJ1dGUoJ2ZvcicpLCAncG90cycsICJwb3RzOiBmb3Igd3Jvbmci
KTsNCiAgICAgIGFzc2VydCghdGVzdC5oYXNBdHRyaWJ1dGUoJ2h0bWxGb3InKSwgInBvdHM6IGVs
ZW1lbnQgaGFzIGh0bWxGb3IgYXR0cmlidXRlIik7DQogICAgICBhc3NlcnQodGVzdC5odG1sRm9y
ICE9IHRlc3QuZ2V0QXR0cmlidXRlKCdodG1sRm9yJyksICJwb3RzOiBodG1sRm9yIGF0dHJpYnV0
ZSBlcXVhbHMgaHRtbEZvciBwcm9wZXJ0eSIpOw0KICAgICAgYXNzZXJ0KCEoJ2ZvcicgaW4gdGVz
dCksICJwb3RzOiBlbGVtZW50IGhhcyBmb3IgcHJvcGVydHkiKTsNCiAgICAgIHRlc3RbJ2Zvcidd
ID0gIm9pbCI7DQogICAgICBhc3NlcnQodGVzdC5odG1sRm9yICE9ICJvaWwiLCAicG90czogZm9y
IHByb3BlcnR5IGFmZmVjdGVkIGh0bWxGb3IiKTsNCiAgICAgIC8vIDxtZXRhIGh0dHAtZXF1aXY9
IiI+DQogICAgICB0ZXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbWV0YScpOw0KICAgICAg
dGVzdC5zZXRBdHRyaWJ1dGUoJ2h0dHAtZXF1aXYnLCAnYm94ZXMnKTsNCiAgICAgIGFzc2VydEVx
dWFscyh0ZXN0Lmh0dHBFcXVpdiwgJ2JveGVzJywgImJveGVzOiBodHRwRXF1aXYgd3JvbmciKTsN
CiAgICAgIGFzc2VydEVxdWFscyh0ZXN0LmdldEF0dHJpYnV0ZSgnaHR0cC1lcXVpdicpLCAnYm94
ZXMnLCAiYm94ZXM6IGh0dHAtZXF1aXYgd3JvbmciKTsNCiAgICAgIGFzc2VydCghdGVzdC5oYXNB
dHRyaWJ1dGUoJ2h0dHBFcXVpdicpLCAiYm94ZXM6IGVsZW1lbnQgaGFzIGh0dHBFcXVpdiBhdHRy
aWJ1dGUiKTsNCiAgICAgIGFzc2VydCh0ZXN0Lmh0dHBFcXVpdiAhPSB0ZXN0LmdldEF0dHJpYnV0
ZSgnaHR0cEVxdWl2JyksICJib3hlczogaHR0cEVxdWl2IGF0dHJpYnV0ZSBlcXVhbHMgaHR0cEVx
dWl2IHByb3BlcnR5Iik7DQogICAgICB0ZXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbWV0
YScpOw0KICAgICAgdGVzdC5odHRwRXF1aXYgPSAnY2Fucyc7DQogICAgICBhc3NlcnRFcXVhbHMo
dGVzdC5odHRwRXF1aXYsICdjYW5zJywgImNhbnM6IGh0dHBFcXVpdiB3cm9uZyIpOw0KICAgICAg
YXNzZXJ0RXF1YWxzKHRlc3QuZ2V0QXR0cmlidXRlKCdodHRwLWVxdWl2JyksICdjYW5zJywgImNh
bnM6IGh0dHAtZXF1aXYgd3JvbmciKTsNCiAgICAgIGFzc2VydCghdGVzdC5oYXNBdHRyaWJ1dGUo
J2h0dHBFcXVpdicpLCAiY2FuczogZWxlbWVudCBoYXMgaHR0cEVxdWl2IGF0dHJpYnV0ZSIpOw0K
ICAgICAgYXNzZXJ0KHRlc3QuaHR0cEVxdWl2ICE9IHRlc3QuZ2V0QXR0cmlidXRlKCdodHRwRXF1
aXYnKSwgImNhbnM6IGh0dHBFcXVpdiBhdHRyaWJ1dGUgZXF1YWxzIGh0dHBFcXVpdiBwcm9wZXJ0
eSIpOw0KICAgICAgYXNzZXJ0KCEoJ2h0dHAtZXF1aXYnIGluIHRlc3QpLCAiY2FuczogZWxlbWVu
dCBoYXMgaHR0cC1lcXVpdiBwcm9wZXJ0eSIpOw0KICAgICAgdGVzdFsnaHR0cC1lcXVpdiddID0g
Im9pbCI7DQogICAgICBhc3NlcnQodGVzdC5odHRwRXF1aXYgIT0gIm9pbCIsICJjYW5zOiBodHRw
LWVxdWl2IHByb3BlcnR5IGFmZmVjdGVkIGh0dHBFcXVpdiIpOw0KICAgICAgcmV0dXJuIDQ7DQog
ICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDYzOiBhdHRyaWJ1dGVzIG9m
IHRoZSA8YXJlYT4gZWxlbWVudA0KICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnYXJlYScpWzBdOw0KICAgICAgYXNzZXJ0RXF1YWxzKGFyZWEuZ2V0QXR0cmli
dXRlKCdocmVmJyksICcnLCAid3JvbmcgdmFsdWUgZm9yIGhyZWY9JyciKTsNCiAgICAgIGFzc2Vy
dEVxdWFscyhhcmVhLmdldEF0dHJpYnV0ZSgnc2hhcGUnKSwgJ3JlY3QnLCAid3JvbmcgdmFsdWUg
Zm9yIHNoYXBlPScnIik7DQogICAgICBhc3NlcnRFcXVhbHMoYXJlYS5nZXRBdHRyaWJ1dGUoJ2Nv
b3JkcycpLCAnMiwyLDQsNCcsICJ3cm9uZyB2YWx1ZSBmb3IgY29vcmRzPScnIik7DQogICAgICBh
c3NlcnRFcXVhbHMoYXJlYS5nZXRBdHRyaWJ1dGUoJ2FsdCcpLCAnPFwnPicsICJ3cm9uZyB2YWx1
ZSBmb3IgYWx0PScnIik7DQogICAgICByZXR1cm4gNDsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgp
IHsNCiAgICAgIC8vIHRlc3QgNjQ6IG1vcmUgYXR0cmlidXRlIHRlc3RzDQogICAgICAvLyBhdHRy
aWJ1dGVzIG9mIHRoZSA8b2JqZWN0PiBlbGVtZW50DQogICAgICB2YXIgb2JqMSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ29iamVjdCcpOw0KICAgICAgb2JqMS5zZXRBdHRyaWJ1dGUoJ2RhdGEn
LCAndGVzdC5odG1sJyk7DQogICAgICB2YXIgb2JqMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J29iamVjdCcpOw0KICAgICAgb2JqMi5zZXRBdHRyaWJ1dGUoJ2RhdGEnLCAnLi90ZXN0Lmh0bWwn
KTsNCiAgICAgIGFzc2VydEVxdWFscyhvYmoxLmRhdGEsIG9iajIuZGF0YSwgIm9iamVjdCBlbGVt
ZW50cyBkaWRuJ3QgcmVzb2x2ZSBVUklzIGNvcnJlY3RseSIpOw0KICAgICAgYXNzZXJ0KG9iajEu
ZGF0YS5tYXRjaCgvXmh0dHA6LyksICJvYmplY3QuZGF0YSBpc24ndCBhYnNvbHV0ZSIpOw0KICAg
ICAgb2JqMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwYXJhbScpKTsNCiAg
ICAgIGFzc2VydEVxdWFscyhvYmoxLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwYXJhbScpLmxlbmd0
aCwgMSwgIm9iamVjdCBpcyBtaXNzaW5nIGl0cyBvbmx5IGNoaWxkIik7DQogICAgICAvLyBub24t
ZXhpc3RlbnQgYXR0cmlidXRlcw0KICAgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdwJyk7DQogICAgICBhc3NlcnQoISgnVFdWdmR5d2diV1YzTGk0dScgaW4gdGVzdCksICJU
V1Z2ZHl3Z2JXVjNMaTR1IHVuZXhwZWN0ZWRseSBmb3VuZCIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHRlc3QuVFdWdmR5d2diV1YzTGk0dSwgdW5kZWZpbmVkLCAiLlRXVnZkeXdnYldWM0xpNHUgd2Fz
bid0IHVuZGVmaW5lZCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRlc3RbJ1RXVnZkeXdnYldWM0xp
NHUnXSwgdW5kZWZpbmVkLCAiWydUV1Z2ZHl3Z2JXVjNMaTR1J10gd2Fzbid0IHVuZGVmaW5lZCIp
Ow0KLyogRVJST1IgTU9ESUZJRUQNCiAgICAgIHRlc3Quc2V0QXR0cmlidXRlKCdUV1Z2ZHl3Z2JX
VjNMaTR1JywgJ3dvb2YnKTsNCiAgICAgIGFzc2VydCghKCdUV1Z2ZHl3Z2JXVjNMaTR1JyBpbiB0
ZXN0KSwgIlRXVnZkeXdnYldWM0xpNHUgdW5leHBlY3RlZGx5IGZvdW5kIGFmdGVyIHNldHRpbmci
KTsNCiAgICAgIGFzc2VydEVxdWFscyh0ZXN0LlRXVnZkeXdnYldWM0xpNHUsIHVuZGVmaW5lZCwg
Ii5UV1Z2ZHl3Z2JXVjNMaTR1IHdhc24ndCB1bmRlZmluZWQgYWZ0ZXIgc2V0dGluZyIpOw0KICAg
ICAgYXNzZXJ0RXF1YWxzKHRlc3RbJ1RXVnZkeXdnYldWM0xpNHUnXSwgdW5kZWZpbmVkLCAiWydU
V1Z2ZHl3Z2JXVjNMaTR1J10gd2Fzbid0IHVuZGVmaW5lZCBhZnRlciBzZXR0aW5nIik7DQogICAg
ICBhc3NlcnRFcXVhbHModGVzdC5nZXRBdHRyaWJ1dGUoJ1RXVnZkeXdnYldWM0xpNHUnKSwgJ3dv
b2YnLCAiVFdWdmR5d2diV1YzTGk0dSBoYXMgd3JvbmcgdmFsdWUgYWZ0ZXIgc2V0dGluZyIpOyAN
CiovDQogICAgICByZXR1cm4gNDsNCiAgICB9LA0KDQogICAgLy8gYnVja2V0IDU6IFRlc3RzIGZy
b20gdGhlIEFjaWQzIENvbXBldGl0aW9uDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVz
dCA2NTogYnJpbmcgaW4gYSBjb3VwbGUgb2YgU1ZHIGZpbGVzIGFuZCBzb21lIEhUTUwgZmlsZXMg
ZHluYW1pY2FsbHkgLSBwcmVwYXJhdGlvbiBmb3IgbGF0ZXIgdGVzdHMgaW4gdGhpcyBidWNrZXQN
CiAgICAgIGt1bmdGdURlYXRoR3JpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsNCiAg
ICAgIGt1bmdGdURlYXRoR3JpcC5jbGFzc05hbWUgPSAncmVtb3ZlZCc7DQogICAgICB2YXIgaWZy
YW1lLCBvYmplY3Q7DQogICAgICAvLyBzdmcgaWZyYW1lDQogICAgICBpZnJhbWUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsNCiAgICAgIGlmcmFtZS5vbmxvYWQgPSBmdW5jdGlv
biAoKSB7IGt1bmdGdURlYXRoR3JpcC50aXRsZSArPSAnMScgfTsNCiAgICAgIGlmcmFtZS5zcmMg
PSAic3ZnLnhtbCI7DQogICAgICBrdW5nRnVEZWF0aEdyaXAuYXBwZW5kQ2hpbGQoaWZyYW1lKTsN
CiAgICAgIC8vIG9iamVjdCBpZnJhbWUNCiAgICAgIG9iamVjdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ29iamVjdCcpOw0KICAgICAgb2JqZWN0Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsga3Vu
Z0Z1RGVhdGhHcmlwLnRpdGxlICs9ICcyJyB9Ow0KICAgICAgb2JqZWN0LmRhdGEgPSAic3ZnLnht
bCI7DQogICAgICBrdW5nRnVEZWF0aEdyaXAuYXBwZW5kQ2hpbGQob2JqZWN0KTsNCiAgICAgIC8v
IHhtbCBpZnJhbWUNCiAgICAgIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpOw0KICAgICAgaWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsga3VuZ0Z1RGVhdGhHcmlw
LnRpdGxlICs9ICczJyB9Ow0KICAgICAgaWZyYW1lLnNyYyA9ICJlbXB0eS54bWwiOw0KICAgICAg
a3VuZ0Z1RGVhdGhHcmlwLmFwcGVuZENoaWxkKGlmcmFtZSk7DQogICAgICAvLyBodG1sIGlmcmFt
ZQ0KICAgICAgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7DQogICAg
ICBpZnJhbWUub25sb2FkID0gZnVuY3Rpb24gKCkgeyBrdW5nRnVEZWF0aEdyaXAudGl0bGUgKz0g
JzQnIH07DQogICAgICBpZnJhbWUuc3JjID0gImVtcHR5Lmh0bWwiOw0KICAgICAga3VuZ0Z1RGVh
dGhHcmlwLmFwcGVuZENoaWxkKGlmcmFtZSk7DQogICAgICAvLyBodG1sIGlmcmFtZQ0KICAgICAg
aWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7DQogICAgICBpZnJhbWUu
b25sb2FkID0gZnVuY3Rpb24gKCkgeyBrdW5nRnVEZWF0aEdyaXAudGl0bGUgKz0gJzUnIH07DQog
ICAgICBpZnJhbWUuc3JjID0gInhodG1sLjEiOw0KICAgICAga3VuZ0Z1RGVhdGhHcmlwLmFwcGVu
ZENoaWxkKGlmcmFtZSk7DQogICAgICAvLyBodG1sIGlmcmFtZQ0KICAgICAgaWZyYW1lID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7DQogICAgICBpZnJhbWUub25sb2FkID0gZnVu
Y3Rpb24gKCkgeyBrdW5nRnVEZWF0aEdyaXAudGl0bGUgKz0gJzYnIH07DQogICAgICBpZnJhbWUu
c3JjID0gInhodG1sLjIiOw0KICAgICAga3VuZ0Z1RGVhdGhHcmlwLmFwcGVuZENoaWxkKGlmcmFt
ZSk7DQogICAgICAvLyBodG1sIGlmcmFtZQ0KICAgICAgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaWZyYW1lJyk7DQogICAgICBpZnJhbWUub25sb2FkID0gZnVuY3Rpb24gKCkgeyBr
dW5nRnVEZWF0aEdyaXAudGl0bGUgKz0gJzcnIH07DQogICAgICBpZnJhbWUuc3JjID0gInhodG1s
LjMiOw0KICAgICAga3VuZ0Z1RGVhdGhHcmlwLmFwcGVuZENoaWxkKGlmcmFtZSk7DQogICAgICAv
LyBhZGQgdGhlIGxvdCB0byB0aGUgZG9jdW1lbnQNCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdtYXAnKVswXS5hcHBlbmRDaGlsZChrdW5nRnVEZWF0aEdyaXApOw0KICAgICAg
cmV0dXJuIDU7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDY2OiBs
b2NhbE5hbWUgb24gdGV4dCBub2RlcyAoYW5kIG5vdyBvdGhlciB0aGluZ3MpLCBmcm9tIFN5bHZh
aW4gUGFzY2hlDQogICAgICBhc3NlcnRFcXVhbHMoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInRl
c3QiKS5sb2NhbE5hbWUsIG51bGwsICd3cm9uZyBsb2NhbE5hbWUgZm9yIHRleHQgbm9kZScpOw0K
ICAgICAgYXNzZXJ0RXF1YWxzKGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoInRlc3QiKS5sb2NhbE5h
bWUsIG51bGwsICd3cm9uZyBsb2NhbE5hbWUgZm9yIGNvbW1lbnQgbm9kZScpOw0KICAgICAgYXNz
ZXJ0RXF1YWxzKGRvY3VtZW50LmxvY2FsTmFtZSwgbnVsbCwgJ3dyb25nIGxvY2FsTmFtZSBmb3Ig
ZG9jdW1lbnQgbm9kZScpOw0KICAgICAgcmV0dXJuIDU7DQogICAgfSwNCiAgICBmdW5jdGlvbiAo
KSB7DQogICAgICAvLyB0ZXN0IDY3OiByZW1vdmVkTmFtZWRJdGVtTlMgb24gbWlzc2luZyBhdHRy
aWJ1dGVzLCBmcm9tIFN5bHZhaW4gUGFzY2hlDQogICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInAiKTsNCiAgICAgIHZhciBtc2cgPSAnd3JvbmcgZXhjZXB0aW9uIHJhaXNlZCc7
DQogICAgICB0cnkgew0KICAgICAgICBwLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtTlMoImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20vIiwgImFic2VudCIpOw0KICAgICAgICBtc2cgPSAnbm8gZXhj
ZXB0aW9uIHJhaXNlZCc7DQogICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgIGlmICgnY29kZScg
aW4gZSkgew0KICAgICAgICAgIGlmIChlLmNvZGUgPT0gOCkNCiAgICAgICAgICAgIG1zZyA9ICcn
Ow0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1zZyArPSAnOyBjb2RlID0gJyArIGUuY29k
ZTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgYXNzZXJ0KG1zZyA9PSAnJywgIndoZW4gY2Fs
bGluZyByZW1vdmVOYW1lZEl0ZW1OUyBpbiBhIG5vbiBleGlzdGVudCBhdHRyaWJ1dGU6ICIgKyBt
c2cpOw0KICAgICAgcmV0dXJuIDU7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAv
LyB0ZXN0IDY4OiBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzLCBmcm9tIERhdmlkIENoYW4NCiAgICAg
IC8vIA0KICAgICAgLy8gSW4gVGhlIFVuaWNvZGUgU3RhbmRhcmQgNS4wLCBpdCBpcyBleHBsaWNp
dGx5IHBlcm1pdHRlZCB0bw0KICAgICAgLy8gYWxsb3cgbWFsZm9ybWVkIFVURi0xNiwgdGhhdCBp
cywgdG8gbGVhdmUgdGhlIHN0cmluZyBhbG9uZS4NCiAgICAgIC8vIChodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU1LjAuMCk6DQogICAgICAvLyANCiAgICAgIC8vIHNlY3Rp
b24gMi43OiAiLi4uc3RyaW5ncyBpbiAuLi4gRUNNQVNjcmlwdCBhcmUgVW5pY29kZSAxNi1iaXQN
CiAgICAgIC8vIHN0cmluZ3MsIGJ1dCBhcmUgbm90IG5lY2Vzc2FyaWx5IHdlbGwtZm9ybWVkIFVU
Ri0xNg0KICAgICAgLy8gc2VxdWVuY2VzLiAgSW4gbm9ybWFsIHByb2Nlc3NpbmcsIGl0IGNhbiBi
ZSBmYXIgbW9yZQ0KICAgICAgLy8gZWZmaWNpZW50IHRvIGFsbG93IHN1Y2ggc3RyaW5ncyB0byBj
b250YWluIGNvZGUgdW5pdA0KICAgICAgLy8gc2VxdWVuY2VzIHRoYXQgYXJlIG5vdCB3ZWxsLWZv
cm1lZCBVVEYtMTYgLS0gdGhhdCBpcywNCiAgICAgIC8vIGlzb2xhdGVkIHN1cnJvZ2F0ZXMiDQog
ICAgICAvLyANCiAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgYXBwbGljYXRpb24g
d2lzaGVzIHRvIGVuc3VyZQ0KICAgICAgLy8gd2VsbC1mb3JtZWQgY2hhcmFjdGVyIHNlcXVlbmNl
cywgaXQgbWF5IG5vdCBwZXJtaXQgdGhlDQogICAgICAvLyBtYWxmb3JtZWQgc2VxdWVuY2UgYW5k
IGl0IG11c3QgcmVnYXJkIHRoZSBmaXJzdCBjb2RlcG9pbnQgYXMNCiAgICAgIC8vIGFuIGVycm9y
Og0KICAgICAgLy8gDQogICAgICAvLyBTZWN0aW9uIDMuMjogIkMxMC4gV2hlbiBhIHByb2Nlc3Mg
aW50ZXJwcmV0cyBhIGNvZGUgc2VxdWVuY2UNCiAgICAgIC8vIHdoaWNoIHB1cnBvcnRzIHRvIGJl
IGluIGEgVW5pY29kZSBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9ybSwgaXQNCiAgICAgIC8vIHNoYWxs
IHRyZWF0IGlsbC1mb3JtZWQgY29kZSB1bml0IHNlcXVlbmNlcyBhcyBhbiBlcnJvcg0KICAgICAg
Ly8gY29uZGl0aW9uIGFuZCBzaGFsbCBub3QgaW50ZXJwcmV0IHN1Y2ggc2VxdWVuY2VzIGFzDQog
ICAgICAvLyBjaGFyYWN0ZXJzLg0KICAgICAgLy8gWy4uLl0NCiAgICAgIC8vIEZvciBleGFtcGxl
LCBpbiBVVEYtOCBldmVyeSBjb2RlIHVuaXQgb2YgdGhlIGZvcm0gMTEwLi4uLjINCiAgICAgIC8v
IG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjb2RlIHVuaXQgb2YgdGhlIGZvcm0gMTAuLi4uLi4yLiBB
DQogICAgICAvLyBzZXF1ZW5jZSBzdWNoIGFzIDExMC4uLi4uMiAwLi4uLi4uLjIgaXMgaWxsLWZv
cm1lZCBhbmQgbXVzdA0KICAgICAgLy8gbmV2ZXIgYmUgZ2VuZXJhdGVkLiBXaGVuIGZhY2VkIHdp
dGggdGhpcyBpbGwtZm9ybWVkIGNvZGUgdW5pdA0KICAgICAgLy8gc2VxdWVuY2Ugd2hpbGUgdHJh
bnNmb3JtaW5nIG9yIGludGVycHJldGluZyB0ZXh0LCBhDQogICAgICAvLyBjb25mb3JtYW50IHBy
b2Nlc3MgbXVzdCB0cmVhdCB0aGUgZmlyc3QgY29kZSB1bml0IDExMC4uLi4uMg0KICAgICAgLy8g
YXMgYW4gaWxsZWdhbGx5IHRlcm1pbmF0ZWQgY29kZSB1bml0IHNlcXVlbmNlfldmb3IgZXhhbXBs
ZSwNCiAgICAgIC8vIGJ5IHNpZ25hbGluZyBhbiBlcnJvciwgZmlsdGVyaW5nIHRoZSBjb2RlIHVu
aXQgb3V0LCBvcg0KICAgICAgLy8gcmVwcmVzZW50aW5nIHRoZSBjb2RlIHVuaXQgd2l0aCBhIG1h
cmtlciBzdWNoIGFzIFUrRkZGRA0KICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiINCiAg
ICAgIC8vIA0KICAgICAgLy8gU28gaXQgd291bGQgYmUgcGVybWl0dGVkIHRvIGRvIGFueSBvZiB0
aGUgZm9sbG93aW5nOg0KICAgICAgLy8gMSkgTGVhdmUgdGhlIHN0cmluZyBhbG9uZQ0KICAgICAg
Ly8gMikgUmVtb3ZlIHRoZSB1bnBhaXJlZCBzdXJyb2dhdGUNCiAgICAgIC8vIDMpIFJlcGxhY2Ug
dGhlIHVucGFpcmVkIHN1cnJvZ2F0ZSB3aXRoIFUrRkZGRA0KICAgICAgLy8gNCkgVGhyb3cgYW4g
ZXhjZXB0aW9uDQoNCiAgICAgIHRyeSB7DQogICAgICAgIHZhciB1bnBhaXJlZCA9IFN0cmluZy5m
cm9tQ2hhckNvZGUoMHhkODYzKTsgLy8gaGFsZiBhIHN1cnJvZ2F0ZSBwYWlyDQogICAgICAgIHZh
ciBiZWZvcmUgPSB1bnBhaXJlZCArICJ0ZXh0IjsNCiAgICAgICAgdmFyIGVsdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7DQogICAgICAgIGVsdC52YWx1ZSA9IGJlZm9yZTsNCiAg
ICAgICAgdmFyIGFmdGVyID0gZWx0LnZhbHVlOw0KICAgICAgfQ0KICAgICAgY2F0Y2goZXgpIHsN
CiAgICAgICAgcmV0dXJuIDU7IC8vIFVucGFpcmVkIHN1cnJvZ2F0ZSBjYXVzZWQgYW4gZXhjZXB0
aW9uIC0gb2sNCiAgICAgIH0NCiAgICAgIGlmIChhZnRlciA9PSBiZWZvcmUgJiYgYmVmb3JlLmxl
bmd0aCA9PSA1KQ0KICAgICAgICByZXR1cm4gNTsgLy8gVW5wYWlyZWQgc3Vycm9nYXRlIGtlcHQg
LSBvaw0KICAgICAgaWYgKGFmdGVyID09ICJ0ZXh0IikNCiAgICAgICAgcmV0dXJuIDU7IC8vIFVu
cGFpcmVkIHN1cnJvZ2F0ZSByZW1vdmVkIC0gb2sNCiAgICAgIHZhciByZXBsYWNlbWVudCA9IFN0
cmluZy5mcm9tQ2hhckNvZGUoMHhmZmZkKTsNCiAgICAgIGlmIChhZnRlciA9PSByZXBsYWNlbWVu
dCArICJ0ZXh0IikNCiAgICAgICAgcmV0dXJuIDU7IC8vIFVucGFpcmVkIHN1cnJvZ2F0ZSByZXBs
YWNlZCAtIG9rDQogICAgICBmYWlsKCJVbnBhaXJlZCBzdXJyb2dhdGUgaGFuZGxlZCB3cm9uZ2x5
IChpbnB1dCB3YXMgJyIgKyBiZWZvcmUgKyAiJywgb3V0cHV0IHdhcyAnIiArIGFmdGVyICsgIicp
Iik7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDY5OiBjaGVjayB0
aGF0IHRoZSBzdXBwb3J0IGZpbGVzIGxvYWRlZCAtLSBwcmVwYXJhdGlvbiBmb3IgdGhlIHJlc3Qg
b2YgdGhlIHRlc3RzIGluIHRoaXMgYnVja2V0DQogICAgICBhc3NlcnQoIShrdW5nRnVEZWF0aEdy
aXAgPT0gbnVsbCksICJrdW5nRnVEZWF0aEdyaXAgd2FzIG51bGwiKTsNCiAgICAgIGFzc2VydCgh
KGt1bmdGdURlYXRoR3JpcC50aXRsZSA9PSBudWxsKSwgImt1bmdGdURlYXRoR3JpcC50aXRsZSB3
YXMgbnVsbCIpOw0KICAgICAgaWYgKGt1bmdGdURlYXRoR3JpcC50aXRsZS5sZW5ndGggPCA3KQ0K
ICAgICAgICByZXR1cm4gInJldHJ5IjsNCiAgICAgIGFzc2VydCghKGt1bmdGdURlYXRoR3JpcC5m
aXJzdENoaWxkID09IG51bGwpLCAia3VuZ0Z1RGVhdGhHcmlwLmZpcnN0Q2hpbGQgd2FzIG51bGwi
KTsNCiAgICAgIGFzc2VydCghKGt1bmdGdURlYXRoR3JpcC5maXJzdENoaWxkLmNvbnRlbnREb2N1
bWVudCA9PSBudWxsKSwgImt1bmdGdURlYXRoR3JpcC5maXJzdENoaWxkLmNvbnRlbnREb2N1bWVu
dCB3YXMgbnVsbCIpOw0KICAgICAgYXNzZXJ0KCEoa3VuZ0Z1RGVhdGhHcmlwLmZpcnN0Q2hpbGQu
Y29udGVudERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lID09IG51bGwpLCAia3VuZ0Z1RGVh
dGhHcmlwLmZpcnN0Q2hpbGQuY29udGVudERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lIHdh
cyBudWxsIik7DQogICAgICB2YXIgdCA9IGt1bmdGdURlYXRoR3JpcC5maXJzdENoaWxkLmNvbnRl
bnREb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGV4dCcpWzBdOw0KICAgICAgYXNzZXJ0
KCEodCA9PSBudWxsKSwgInQgd2FzIG51bGwiKTsNCiAgICAgIGFzc2VydCghKHQucGFyZW50Tm9k
ZSA9PSBudWxsKSwgInQucGFyZW50Tm9kZSB3YXMgbnVsbCIpOw0KICAgICAgYXNzZXJ0KCEodC5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkID09IG51bGwpLCAidC5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
IHdhcyBudWxsIik7DQogICAgICB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCk7DQogICAgICBy
ZXR1cm4gNTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNzA6IFhN
TCBlbmNvZGluZyB0ZXN0DQogICAgICAvLyB0aGUgdGhpcmQgY2hpbGQgaW4ga3VuZ0Z1RGVhdGhH
cmlwIGlzIGFuIElTTy04ODU5LTEgZG9jdW1lbnQgc2VudCBhcyBVVEYtOC4NCiAgICAgIC8vIHEu
di4gWE1MIDEuMCwgc2VjdGlvbiA0LjMuMyBDaGFyYWN0ZXIgRW5jb2RpbmcgaW4gRW50aXRpZXMN
CiAgICAgIC8vIHRoaXMgb25seSB0ZXN0cyBvbmUgb2YgYSBsYXJnZSBudW1iZXIgb2YgY29uZGl0
aW9ucyB0aGF0IHNob3VsZCBjYXVzZSBmYXRhbCBlcnJvcnMNCiAgICAgIHZhciBkb2MgPSBrdW5n
RnVEZWF0aEdyaXAuY2hpbGROb2Rlc1syXS5jb250ZW50RG9jdW1lbnQ7DQogICAgICBpZiAoIWRv
YykNCiAgICAgICAgcmV0dXJuIDU7DQogICAgICBpZiAoZG9jLmRvY3VtZW50RWxlbWVudC50YWdO
YW1lICE9ICJyb290IikNCiAgICAgICAgcmV0dXJuIDU7DQogICAgICBpZiAoZG9jLmRvY3VtZW50
RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGVzdCcpLmxlbmd0aCA8IDEpDQogICAgICAg
IHJldHVybiA1Ow0KICAgICAgZmFpbCgiVVRGLTggZW5jb2RlZCBYTUwgZG9jdW1lbnQgd2l0aCBp
bnZhbGlkIGNoYXJhY3RlciBkaWQgbm90IGhhdmUgYSB3ZWxsLWZvcm1lZG5lc3MgZXJyb3IiKTsN
CiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNzE6IEhUTUwgcGFyc2lu
ZywgZnJvbSBTaW1vbiBQaWV0ZXJzIGFuZCBBbm5lIHZhbiBLZXN0ZXJlbg0KICAgICAgdmFyIGRv
YyA9IGt1bmdGdURlYXRoR3JpcC5jaGlsZE5vZGVzWzNdLmNvbnRlbnREb2N1bWVudDsNCiAgICAg
IGFzc2VydChkb2MsICJtaXNzaW5nIGRvY3VtZW50IGZvciB0ZXN0Iik7DQogICAgICB0cnkgew0K
ICAgICAgICAvLyBzaWJsaW5ncw0KICAgICAgICBkb2Mub3BlbigpOw0KICAgICAgICBkb2Mud3Jp
dGUoIjwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRp
b25hbC8vRU5cIj48dGl0bGU+PFwvdGl0bGU+PHNwYW4+PFwvc3Bhbj48c2NyaXB0IHR5cGU9XCJ0
ZXh0L2phdmFzY3JpcHRcIj48XC9zY3JpcHQ+Iik7DQogICAgICAgIGRvYy5jbG9zZSgpOw0KICAg
ICAgICBhc3NlcnRFcXVhbHMoZG9jLmNoaWxkTm9kZXMubGVuZ3RoLCAyLCAid3JvbmcgbnVtYmVy
IG9mIGNoaWxkcmVuIGluICNkb2N1bWVudCAoZmlyc3QgdGVzdCkiKTsNCiAgICAgICAgYXNzZXJ0
RXF1YWxzKGRvYy5maXJzdENoaWxkLm5hbWUsICJIVE1MIiwgIm5hbWUgd3JvbmcgKGZpcnN0IHRl
c3QpIik7DQogICAgICAgIGFzc2VydEVxdWFscyhkb2MuZmlyc3RDaGlsZC5wdWJsaWNJZCwgIi0v
L1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iLCAicHVibGljSWQgd3JvbmcgKGZp
cnN0IHRlc3QpIik7DQogICAgICAgIGlmICgoZG9jLmZpcnN0Q2hpbGQuc3lzdGVtSWQgIT0gbnVs
bCkgJiYgKGRvYy5maXJzdENoaWxkLnN5c3RlbUlkICE9ICIiKSkNCiAgICAgICAgICBmYWlsKCJz
eXN0ZW1JZCB3cm9uZyAoZmlyc3QgdGVzdCkiKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5m
aXJzdENoaWxkLmludGVybmFsU3Vic2V0LCBudWxsLCAiaW50ZXJuYWxTdWJzZXQgd3JvbmcgKGZp
cnN0IHRlc3QpIik7DQogICAgICAgIGFzc2VydEVxdWFscyhkb2MuZG9jdW1lbnRFbGVtZW50LmNo
aWxkTm9kZXMubGVuZ3RoLCAyLCAid3JvbmcgbnVtYmVyIG9mIGNoaWxkcmVuIGluIEhUTUwgKGZp
cnN0IHRlc3QpIik7DQogICAgICAgIGFzc2VydEVxdWFscyhkb2MuZG9jdW1lbnRFbGVtZW50LmZp
cnN0Q2hpbGQubm9kZU5hbWUsICJIRUFEIiwgIm1pc3BsYWNlZCBIRUFEIGVsZW1lbnQgKGZpcnN0
IHRlc3QpIik7DQogICAgICAgIGFzc2VydEVxdWFscyhkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0
Q2hpbGQuY2hpbGROb2Rlcy5sZW5ndGgsIDEsICJ3cm9uZyBudW1iZXIgb2YgY2hpbGRyZW4gaW4g
SEVBRCAoZmlyc3QgdGVzdCkiKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5kb2N1bWVudEVs
ZW1lbnQuZmlyc3RDaGlsZC5maXJzdENoaWxkLnRhZ05hbWUsICJUSVRMRSIsICJtaXNwbGFjZWQg
VElUTEUgZWxlbWVudCAoZmlyc3QgdGVzdCkiKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5k
b2N1bWVudEVsZW1lbnQubGFzdENoaWxkLm5vZGVOYW1lLCAiQk9EWSIsICJtaXNwbGFjZWQgQk9E
WSBlbGVtZW50IChmaXJzdCB0ZXN0KSIpOw0KICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3Vt
ZW50RWxlbWVudC5sYXN0Q2hpbGQuY2hpbGROb2Rlcy5sZW5ndGgsIDIsICJ3cm9uZyBudW1iZXIg
b2YgY2hpbGRyZW4gaW4gQk9EWSAoZmlyc3QgdGVzdCkiKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxz
KGRvYy5kb2N1bWVudEVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQudGFnTmFtZSwgIlNQQU4i
LCAibWlzcGxhY2VkIFNQQU4gZWxlbWVudCAoZmlyc3QgdGVzdCkiKTsNCiAgICAgICAgYXNzZXJ0
RXF1YWxzKGRvYy5kb2N1bWVudEVsZW1lbnQubGFzdENoaWxkLmxhc3RDaGlsZC50YWdOYW1lLCAi
U0NSSVBUIiwgIm1pc3BsYWNlZCBTQ1JJUFQgZWxlbWVudCAoZmlyc3QgdGVzdCkiKTsNCiAgICAg
ICAgLy8gcGFyZW50L2NoaWxkDQogICAgICAgIGRvYy5vcGVuKCk7DQogICAgICAgIGRvYy53cml0
ZSgiPCFET0NUWVBFIEhUTUwgUFVCTElDIFwiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRp
b25hbC8vRU5cIiBcImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZFwiPjx0aXRs
ZT48XC90aXRsZT48c3Bhbj48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj48XC9zY3Jp
cHQ+PFwvc3Bhbj4iKTsNCiAgICAgICAgZG9jLmNsb3NlKCk7DQogICAgICAgIGFzc2VydEVxdWFs
cyhkb2MuY2hpbGROb2Rlcy5sZW5ndGgsIDIsICJ3cm9uZyBudW1iZXIgb2YgY2hpbGRyZW4gaW4g
I2RvY3VtZW50IChmaXJzdCB0ZXN0KSIpOw0KICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmZpcnN0
Q2hpbGQubmFtZSwgIkhUTUwiLCAibmFtZSB3cm9uZyAoc2Vjb25kIHRlc3QpIik7DQogICAgICAg
IGFzc2VydEVxdWFscyhkb2MuZmlyc3RDaGlsZC5wdWJsaWNJZCwgIi0vL1czQy8vRFREIEhUTUwg
NC4wMSBUcmFuc2l0aW9uYWwvL0VOIiwgInB1YmxpY0lkIHdyb25nIChzZWNvbmQgdGVzdCkiKTsN
CiAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5maXJzdENoaWxkLnN5c3RlbUlkLCAiaHR0cDovL3d3
dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIiwgInN5c3RlbUlkIHdyb25nIChzZWNvbmQgdGVz
dCkiKTsNCiAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5maXJzdENoaWxkLmludGVybmFsU3Vic2V0
LCBudWxsLCAiaW50ZXJuYWxTdWJzZXQgd3JvbmcgKHNlY29uZCB0ZXN0KSIpOw0KICAgICAgICBh
c3NlcnRFcXVhbHMoZG9jLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCwgMiwgIndy
b25nIG51bWJlciBvZiBjaGlsZHJlbiBpbiBIVE1MIChzZWNvbmQgdGVzdCkiKTsNCiAgICAgICAg
YXNzZXJ0RXF1YWxzKGRvYy5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZC5ub2RlTmFtZSwgIkhF
QUQiLCAibWlzcGxhY2VkIEhFQUQgZWxlbWVudCAoc2Vjb25kIHRlc3QpIik7DQogICAgICAgIGFz
c2VydEVxdWFscyhkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQuY2hpbGROb2Rlcy5sZW5n
dGgsIDEsICJ3cm9uZyBudW1iZXIgb2YgY2hpbGRyZW4gaW4gSEVBRCAoc2Vjb25kIHRlc3QpIik7
DQogICAgICAgIGFzc2VydEVxdWFscyhkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQuZmly
c3RDaGlsZC50YWdOYW1lLCAiVElUTEUiLCAibWlzcGxhY2VkIFRJVExFIGVsZW1lbnQgKHNlY29u
ZCB0ZXN0KSIpOw0KICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3VtZW50RWxlbWVudC5sYXN0
Q2hpbGQubm9kZU5hbWUsICJCT0RZIiwgIm1pc3BsYWNlZCBCT0RZIGVsZW1lbnQgKHNlY29uZCB0
ZXN0KSIpOw0KICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3VtZW50RWxlbWVudC5sYXN0Q2hp
bGQuY2hpbGROb2Rlcy5sZW5ndGgsIDEsICJ3cm9uZyBudW1iZXIgb2YgY2hpbGRyZW4gaW4gQk9E
WSAoc2Vjb25kIHRlc3QpIik7DQogICAgICAgIGFzc2VydEVxdWFscyhkb2MuZG9jdW1lbnRFbGVt
ZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkLnRhZ05hbWUsICJTUEFOIiwgIm1pc3BsYWNlZCBTUEFO
IGVsZW1lbnQgKHNlY29uZCB0ZXN0KSIpOw0KICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3Vt
ZW50RWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZC5maXJzdENoaWxkLnRhZ05hbWUsICJTQ1JJ
UFQiLCAibWlzcGxhY2VkIFNDUklQVCBlbGVtZW50IChzZWNvbmQgdGVzdCkiKTsNCiAgICAgIH0g
ZmluYWxseSB7DQogICAgICAgIC8vIHByZXBhcmUgdGhlIGZpbGUgZm9yIHRoZSBuZXh0IHRlc3QN
CiAgICAgICAgZG9jLm9wZW4oKTsNCiAgICAgICAgZG9jLndyaXRlKCI8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgXCItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOXCI+PGhlYWQ+PHRpdGxlPjxcL3RpdGxl
PjxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj5pbWcgeyBoZWlnaHQ6IDEwcHg7IH08XC9zdHlsZT48
Ym9keT48cD48aW1nIHNyYz1cImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUQl
MkZBTURBd0FBQUFDSDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUNSQUVBT3clM0QlM0RcIiBhbHQ9
XCJcIj4iKTsNCiAgICAgICAgZG9jLmNsb3NlKCk7DQogICAgICB9DQogICAgICByZXR1cm4gNTsN
CiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNzI6IGR5bmFtaWMgbW9k
aWZpY2F0aW9uIG9mIDxzdHlsZT4gYmxvY2tzJyB0ZXh0IG5vZGVzLCBmcm9tIEpvbmFzIFNpY2tp
bmcgYW5kIEdhcnJldCBTbWl0aA0KICAgICAgdmFyIGRvYyA9IGt1bmdGdURlYXRoR3JpcC5jaGls
ZE5vZGVzWzNdLmNvbnRlbnREb2N1bWVudDsNCiAgICAgIGFzc2VydChkb2MsICJtaXNzaW5nIGRv
Y3VtZW50IGZvciB0ZXN0Iik7DQogICAgICBhc3NlcnQoZG9jLmltYWdlc1swXSwgInByZXJlcXVp
c2l0ZSBmYWlsZWQ6IG5vIGltYWdlIik7DQogICAgICBhc3NlcnRFcXVhbHMoZG9jLmltYWdlc1sw
XS5oZWlnaHQsIDEwLCAicHJlcmVxdWlzaXRlIGZhaWxlZDogc3R5bGUgZGlkbid0IGFmZmVjdCBp
bWFnZSIpOw0KICAgICAgZG9jLnN0eWxlU2hlZXRzWzBdLm93bmVyTm9kZS5maXJzdENoaWxkLmRh
dGEgPSAiaW1nIHsgaGVpZ2h0OiAyMHB4OyB9IjsNCiAgICAgIGFzc2VydEVxdWFscyhkb2MuaW1h
Z2VzWzBdLmhlaWdodCwgMjAsICJjaGFuZ2UgZmFpbGVkIHRvIHRha2UgZWZmZWN0Iik7DQogICAg
ICBkb2Muc3R5bGVTaGVldHNbMF0ub3duZXJOb2RlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0
Tm9kZSgiaW1nIHsgaGVpZ2h0OiAzMHB4OyB9IikpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5p
bWFnZXNbMF0uaGVpZ2h0LCAzMCwgImFwcGVuZCBmYWlsZWQgdG8gdGFrZSBlZmZlY3QiKTsNCiAg
ICAgIHZhciBydWxlcyA9IGRvYy5zdHlsZVNoZWV0c1swXS5jc3NSdWxlczsgLy8gIkFsbCBDU1Mg
b2JqZWN0cyBpbiB0aGUgRE9NIGFyZSAibGl2ZSIiIHNheXMgc2VjdGlvbiAyLjEsIE92ZXJ2aWV3
IG9mIHRoZSBET00gTGV2ZWwgMiBDU1MgSW50ZXJmYWNlcw0KICAgICAgZG9jLnN0eWxlU2hlZXRz
WzBdLmluc2VydFJ1bGUoImltZyB7IGhlaWdodDogNDBweDsgfSIsIDIpOw0KICAgICAgYXNzZXJ0
RXF1YWxzKGRvYy5pbWFnZXNbMF0uaGVpZ2h0LCA0MCwgImluc2VydFJ1bGUgZmFpbGVkIHRvIHRh
a2UgZWZmZWN0Iik7DQogICAgICBhc3NlcnRFcXVhbHMoZG9jLnN0eWxlU2hlZXRzWzBdLmNzc1J1
bGVzLmxlbmd0aCwgMywgImNvdW50IG9mIHJ1bGVzIGlzIHdyb25nIik7DQogICAgICBhc3NlcnRF
cXVhbHMocnVsZXMubGVuZ3RoLCAzLCAiY3NzUnVsZXMgaXNuJ3QgbGl2ZSIpOw0KICAgICAgLy8g
d2hpbGUgd2UncmUgYXQgaXQsIGNoZWNrIHNvbWUgb3RoZXIgdGhpbmdzIG9uIGRvYy5zdHlsZVNo
ZWV0czoNCiAgICAgIGFzc2VydChkb2Muc3R5bGVTaGVldHNbMF0uaHJlZiA9PT0gbnVsbCwgImlu
dGVybmFsIHN0eWxlc2hlZXQgaGFkIGEgVVJJOiAiICsgZG9jLnN0eWxlU2hlZXRzWzBdLmhyZWYp
Ow0KICAgICAgYXNzZXJ0KGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmhyZWYgPT09IG51bGwsICJp
bnRlcm5hbCBhY2lkMyBzdHlsZXNoZWV0IGhhZCBhIFVSSTogIiArIGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzBdLmhyZWYpOw0KICAgICAgcmV0dXJuIDU7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7
DQogICAgICAvLyB0ZXN0IDczOiBuZXN0ZWQgZXZlbnRzLCBmcm9tIEpvbmFzIFNpY2tpbmcNCiAg
ICAgIHZhciBkb2MgPSBrdW5nRnVEZWF0aEdyaXAuY2hpbGROb2Rlc1szXS5jb250ZW50RG9jdW1l
bnQ7DQogICAgICAvLyBpbXBsaWVkIGV2ZW50cw0KICAgICAgdmFyIHVwID0gMDsNCiAgICAgIHZh
ciBkb3duID0gMDsNCiAgICAgIHZhciBidXR0b24gPSBkb2MuY3JlYXRlRWxlbWVudCgiYnV0dG9u
Iik7DQogICAgICBidXR0b24udHlwZSA9ICJidXR0b24iOw0KICAgICAgYnV0dG9uLm9uY2xpY2sg
PSBmdW5jdGlvbiAoKSB7IHVwICs9IDE7IGlmICh1cCA8IDEwKSBidXR0b24uY2xpY2soKTsgZG93
biArPSB1cDsgfTsNCiAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgZnVuY3Rp
b24gKCkgeyB1cCArPSAxOyB2YXIgZSA9IGRvYy5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIpOyBl
LmluaXRFdmVudCgndGVzdCcsIGZhbHNlLCBmYWxzZSk7IGlmICh1cCA8IDIwKSBidXR0b24uZGlz
cGF0Y2hFdmVudChlKTsgZG93biArPSB1cDsgfSwgZmFsc2UpOw0KICAgICAgdmFyIGV2dCA9IGRv
Yy5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIpOw0KICAgICAgZXZ0LmluaXRFdmVudCgndGVzdCcs
IGZhbHNlLCBmYWxzZSk7DQogICAgICBidXR0b24uZGlzcGF0Y2hFdmVudChldnQpOw0KICAgICAg
YXNzZXJ0RXF1YWxzKHVwLCAyMCwgInRlc3QgZXZlbnQgaGFuZGxlciBjYWxsZWQgdGhlIHdyb25n
IG51bWJlciBvZiB0aW1lcyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGRvd24sIDQwMCwgInRlc3Qg
ZXZlbnQgaGFuZGxlciBjYWxsZWQgaW4gdGhlIHdyb25nIG9yZGVyIik7ICAgICAgDQogICAgICBy
ZXR1cm4gNTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNzQ6IGNo
ZWNrIGdldFNWR0RvY3VtZW50KCksIGZyb20gRXJpayBEYWhsc3Ryb20NCiAgICAgIC8vIEdldFNW
R0RvY3VtZW50WzZdOiAiSW4gdGhlIGNhc2Ugd2hlcmUgYW4gU1ZHIGRvY3VtZW50IGlzDQogICAg
ICAvLyBlbWJlZGRlZCBieSByZWZlcmVuY2UsIHN1Y2ggYXMgd2hlbiBhbiBYSFRNTCBkb2N1bWVu
dCBoYXMgYW4NCiAgICAgIC8vICdvYmplY3QnIGVsZW1lbnQgd2hvc2UgaHJlZiAob3IgZXF1aXZh
bGVudCkgYXR0cmlidXRlDQogICAgICAvLyByZWZlcmVuY2VzIGFuIFNWRyBkb2N1bWVudCAoaS5l
LiwgYSBkb2N1bWVudCB3aG9zZSBNSU1FIHR5cGUNCiAgICAgIC8vIGlzICJpbWFnZS9zdmcreG1s
IiBhbmQgd2hvc2Ugcm9vdCBlbGVtZW50IGlzIHRodXMgYW4gJ3N2ZycNCiAgICAgIC8vIGVsZW1l
bnQpLCB0aGUgU1ZHIHVzZXIgYWdlbnQgaXMgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoZQ0KICAg
ICAgLy8gR2V0U1ZHRG9jdW1lbnQgaW50ZXJmYWNlIGZvciB0aGUgZWxlbWVudCB3aGljaCByZWZl
cmVuY2VzIHRoZQ0KICAgICAgLy8gU1ZHIGRvY3VtZW50IChlLmcuLCB0aGUgSFRNTCAnb2JqZWN0
JyBvciBjb21wYXJhYmxlDQogICAgICAvLyByZWZlcmVuY2luZyBlbGVtZW50cykuIg0KICAgICAg
Ly8NCiAgICAgIC8vIFs2XSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9zdHJ1Y3QuaHRtbCNJ
bnRlcmZhY2VHZXRTVkdEb2N1bWVudA0KICAgICAgLy8NCiAgICAgIC8vIGlmcmFtZQ0KICAgICAg
dmFyIGlmcmFtZSA9IGt1bmdGdURlYXRoR3JpcC5jaGlsZE5vZGVzWzBdOw0KICAgICAgYXNzZXJ0
KGlmcmFtZSwgIkZhaWxlZCBmaW5kaW5nIHN2ZyBpZnJhbWUuIik7DQogICAgICBhc3NlcnQoaWZy
YW1lLmNvbnRlbnREb2N1bWVudCwgImNvbnRlbnREb2N1bWVudCBmYWlsZWQgZm9yIDxpZnJhbWU+
IHJlZmVyZW5jaW5nIGFuIHN2ZyBkb2N1bWVudC4iKTsNCiAgICAgIGlmICghaWZyYW1lLmdldFNW
R0RvY3VtZW50KQ0KICAgICAgICBmYWlsKCJnZXRTVkdEb2N1bWVudCBtaXNzaW5nIG9uIDxpZnJh
bWU+IGVsZW1lbnQuIik7DQogICAgICBhc3NlcnQoaWZyYW1lLmdldFNWR0RvY3VtZW50KCksICJn
ZXRTVkdEb2N1bWVudCBmYWlsZWQgZm9yIDxpZnJhbWU+IHJlZmVyZW5jaW5nIGFuIHN2ZyBkb2N1
bWVudC4iKTsNCiAgICAgIGFzc2VydChpZnJhbWUuZ2V0U1ZHRG9jdW1lbnQoKSA9PSBpZnJhbWUu
Y29udGVudERvY3VtZW50LCAiTWlzbWF0Y2ggYmV0d2VlbiBnZXRTVkdEb2N1bWVudCBhbmQgY29u
dGVudERvY3VtZW50ICMxLiIpOw0KICAgICAgLy8gb2JqZWN0DQogICAgICB2YXIgb2JqZWN0ID0g
a3VuZ0Z1RGVhdGhHcmlwLmNoaWxkTm9kZXNbMV07DQogICAgICBhc3NlcnQob2JqZWN0LCAiRmFp
bGVkIGZpbmRpbmcgc3ZnIG9iamVjdC4iKTsNCiAgICAgIGFzc2VydChvYmplY3QuY29udGVudERv
Y3VtZW50LCAiY29udGVudERvY3VtZW50IGZhaWxlZCBmb3IgPG9iamVjdD4gcmVmZXJlbmNpbmcg
YW4gc3ZnIGRvY3VtZW50LiIpOw0KICAgICAgaWYgKCFvYmplY3QuZ2V0U1ZHRG9jdW1lbnQpDQog
ICAgICAgIGZhaWwoImdldFNWR0RvY3VtZW50IG1pc3Npbmcgb24gPG9iamVjdD4gZWxlbWVudC4i
KTsNCiAgICAgIGFzc2VydChvYmplY3QuZ2V0U1ZHRG9jdW1lbnQoKSwgImdldFNWR0RvY3VtZW50
IGZhaWxlZCBmb3IgPG9iamVjdD4gcmVmZXJlbmNpbmcgYW4gc3ZnIGRvY3VtZW50LiIpOw0KICAg
ICAgYXNzZXJ0KG9iamVjdC5nZXRTVkdEb2N1bWVudCgpID09IG9iamVjdC5jb250ZW50RG9jdW1l
bnQsICJNaXNtYXRjaCBiZXR3ZWVuIGdldFNWR0RvY3VtZW50IGFuZCBjb250ZW50RG9jdW1lbnQg
IzIuIik7DQogICAgICByZXR1cm4gNTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAg
IC8vIHRlc3QgNzU6IFNNSUwgaW4gU1ZHLCBmcm9tIEVyaWsgRGFobHN0cm9tDQogICAgICAvLw0K
ICAgICAgLy8gVGhlIHRlc3QgYmVnaW5zIGJ5IGNyZWF0aW5nIGEgZmV3IGVsZW1lbnRzLCBhbW9u
ZyB0aG9zZSBpcyBhDQogICAgICAvLyA8c2V0PiBlbGVtZW50LiAgVGhpcyBlbGVtZW50IGlzIHBy
ZXZlbnRlZCBmcm9tIHJ1bm5pbmcgYnkNCiAgICAgIC8vIHNldHRpbmcgYmVnaW49ImluZGVmaW5p
dGUiLCB3aGljaCBtZWFucyB0aGF0IHRoZSBhbmltYXRpb24NCiAgICAgIC8vIGRvZXNuJ3Qgc3Rh
cnQgdW50aWwgdGhlICdiZWdpbkVsZW1lbnQnIERPTSBtZXRob2QgaXMgY2FsbGVkDQogICAgICAv
LyBvbiB0aGUgPHNldD4gZWxlbWVudC4gVGhlIGFuaW1hdGlvbiBpcyBhIHNpbXBsZSBhbmltYXRp
b24NCiAgICAgIC8vIHRoYXQgc2V0cyB0aGUgdmFsdWUgb2YgdGhlIHdpZHRoIGF0dHJpYnV0ZSB0
byAwLiBUaGUgZHVyYXRpb24NCiAgICAgIC8vIG9mIHRoZSBhbmltYXRpb24gaXMgJ2luZGVmaW5p
dGUnIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHZhbHVlDQogICAgICAvLyB3aWxsIHN0YXkgMCBpbmRl
ZmluaXRlbHkuIFRoZSB0YXJnZXQgb2YgdGhlIGFuaW1hdGlvbiBpcyB0aGUNCiAgICAgIC8vICd3
aWR0aCcgYXR0cmlidXRlIG9mIHRoZSA8cmVjdD4gZWxlbWVudCB0aGF0IGlzIHRoZSBwYXJlbnQg
b2YNCiAgICAgIC8vIHRoZSA8c2V0PiBlbGVtZW50LiBXaGVuICd3aWR0aCcgaXMgMCB0aGUgcmVj
dCBpcyBub3QgcmVuZGVyZWQNCiAgICAgIC8vIGFjY29yZGluZyB0byB0aGUgc3BlY1s3XS4NCiAg
ICAgIC8vDQogICAgICAvLyBTb21lIHByb3BlcnRpZXMgb2YgdGhlIFNWR0FuaW1hdGVkTGVuZ3Ro
WzJdIGFuZCBTVkdMZW5ndGhbOF0NCiAgICAgIC8vIGFyZSBhbHNvIGluc3BlY3RlZC4gQmVmb3Jl
IHRoZSBhbmltYXRpb24gc3RhcnRzIGJvdGggYmFzZVZhbA0KICAgICAgLy8gYW5kIGFuaW1WYWwg
Y29udGFpbiB0aGUgc2FtZSB2YWx1ZXNbMl0uIFRoZW4gdGhlIGFuaW1hdGlvbiBpcw0KICAgICAg
Ly8gc3RhcnRlZCBieSBjYWxsaW5nIHRoZSBiZWdpbkVsZW1lbnQgbWV0aG9kWzldLiBUbyBtYWtl
IHN1cmUNCiAgICAgIC8vIHRoYXQgdGltZSBwYXNzZXMgYmV0d2VlbiB0aGUgdHJpZ2dlcmluZyBv
ZiB0aGUgYW5pbWF0aW9uIGFuZA0KICAgICAgLy8gdGhlIHRpbWUgdGhhdCB0aGUgdmFsdWVzIGFy
ZSByZWFkIG91dCAoaW4gdGVzdCAjNjYpLCB0aGUNCiAgICAgIC8vIGN1cnJlbnQgdGltZSBpcyBz
ZXQgdG8gMTAwMCBzZWNvbmRzIHVzaW5nIHRoZSBzZXRDdXJyZW50VGltZQ0KICAgICAgLy8gbWV0
aG9kWzEwXS4NCiAgICAgIC8vIA0KICAgICAgLy8gWzJdIGh0dHA6Ly93d3cudzMub3JnL1RSL1NW
RzExL3R5cGVzLmh0bWwjSW50ZXJmYWNlU1ZHQW5pbWF0ZWRMZW5ndGgNCiAgICAgIC8vIFs3XSBo
dHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9zaGFwZXMuaHRtbCNSZWN0RWxlbWVudA0KICAgICAg
Ly8gWzhdIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL3R5cGVzLmh0bWwjSW50ZXJmYWNlU1ZH
TGVuZ3RoDQogICAgICAvLyBbOV0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvYW5pbWF0ZS5o
dG1sI0RPTUludGVyZmFjZXMNCiAgICAgIC8vIFsxMF0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZH
MTEvc3RydWN0Lmh0bWwjSW50ZXJmYWNlU1ZHU1ZHRWxlbWVudA0KDQogICAgICB2YXIgc3ZnbnMg
PSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOw0KICAgICAgdmFyIHN2Z2RvYyA9IGt1bmdG
dURlYXRoR3JpcC5maXJzdENoaWxkLmNvbnRlbnREb2N1bWVudDsNCiAgICAgIGFzc2VydChzdmdk
b2MsICJjb250ZW50RG9jdW1lbnQgZmFpbGVkIG9uIDxpZnJhbWU+IGZvciBzdmcgZG9jdW1lbnQu
Iik7DQogICAgICB2YXIgc3ZnID0gc3ZnZG9jLmRvY3VtZW50RWxlbWVudDsNCiAgICAgIHZhciBy
ZWN0ID0gc3ZnZG9jLmNyZWF0ZUVsZW1lbnROUyhzdmducywgInJlY3QiKTsNCiAgICAgIHJlY3Qu
c2V0QXR0cmlidXRlKCJmaWxsIiwgInJlZCIpOw0KICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoIndp
ZHRoIiwgIjEwMCIpOw0KICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMDAiKTsN
CiAgICAgIHJlY3Quc2V0QXR0cmlidXRlKCJpZCIsICJyZWN0Iik7DQogICAgICB2YXIgYW5pbSA9
IHN2Z2RvYy5jcmVhdGVFbGVtZW50TlMoc3ZnbnMsICJzZXQiKTsNCiAgICAgIGFuaW0uc2V0QXR0
cmlidXRlKCJiZWdpbiIsICJpbmRlZmluaXRlIik7DQogICAgICBhbmltLnNldEF0dHJpYnV0ZSgi
dG8iLCAiMCIpOw0KICAgICAgYW5pbS5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCAid2lk
dGgiKTsNCiAgICAgIGFuaW0uc2V0QXR0cmlidXRlKCJkdXIiLCAiaW5kZWZpbml0ZSIpOw0KICAg
ICAgYW5pbS5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZnJlZXplIik7DQogICAgICByZWN0LmFwcGVu
ZENoaWxkKGFuaW0pOw0KICAgICAgc3ZnLmFwcGVuZENoaWxkKHJlY3QpOw0KICAgICAgYXNzZXJ0
KHJlY3Qud2lkdGgsICJTVkcgRE9NIGludGVyZmFjZSBTVkdSZWN0RWxlbWVudCBub3Qgc3VwcG9y
dGVkLiIpOw0KICAgICAgYXNzZXJ0KHJlY3Qud2lkdGguYmFzZVZhbCwgIlNWRyBET00gYmFzZSB0
eXBlIFNWR0FuaW1hdGVkTGVuZ3RoIG5vdCBzdXBwb3J0ZWQuIik7DQogICAgICBhc3NlcnQocmVj
dC53aWR0aC5hbmltVmFsLCAiU1ZHIERPTSBiYXNlIHR5cGUgU1ZHQW5pbWF0ZWRMZW5ndGggbm90
IHN1cHBvcnRlZC4iKTsNCiAgICAgIGFzc2VydEVxdWFscyhTVkdMZW5ndGguU1ZHX0xFTkdUSFRZ
UEVfTlVNQkVSLCAxLCAiSW5jb3JyZWN0IFNWR0xlbmd0aC5TVkdfTEVOR1RIVFlQRV9OVU1CRVIg
Y29uc3RhbnQgdmFsdWUuIik7DQogICAgICBhc3NlcnRFcXVhbHMocmVjdC53aWR0aC5iYXNlVmFs
LnVuaXRUeXBlLCBTVkdMZW5ndGguU1ZHX0xFTkdUSFRZUEVfTlVNQkVSLCAiSW5jb3JyZWN0IHVu
aXRUeXBlIG9uIHdpZHRoIGF0dHJpYnV0ZS4iKTsNCiAgICAgIGFzc2VydEVxdWFscyhyZWN0Lmdl
dEF0dHJpYnV0ZSgid2lkdGgiKSwgIjEwMCIsICJJbmNvcnJlY3QgdmFsdWUgZnJvbSBnZXRBdHRy
aWJ1dGUuIik7DQogICAgICBhc3NlcnRFcXVhbHMocmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlSW5T
cGVjaWZpZWRVbml0cywgMTAwLCAiSW5jb3JyZWN0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyB2YWx1
ZS4iKTsNCiAgICAgIGFzc2VydEVxdWFscyhyZWN0LndpZHRoLmJhc2VWYWwudmFsdWUsIDEwMCwg
IkluY29ycmVjdCBiYXNlVmFsIHZhbHVlIGJlZm9yZSBhbmltYXRpb24uIik7DQogICAgICBhc3Nl
cnRFcXVhbHMocmVjdC53aWR0aC5hbmltVmFsLnZhbHVlLCAxMDAsICJJbmNvcnJlY3QgYW5pbVZh
bCB2YWx1ZSBiZWZvcmUgYW5pbWF0aW9uLiIpOw0KICAgICAgYW5pbS5iZWdpbkVsZW1lbnQoKTsN
CiAgICAgIGFzc2VydEVxdWFscyhyZWN0LndpZHRoLmJhc2VWYWwudmFsdWUsIDEwMCwgIkluY29y
cmVjdCBiYXNlVmFsIHZhbHVlIGFmdGVyIHN0YXJ0aW5nIGFuaW1hdGlvbi4iKTsNCiAgICAgIHN2
Zy5zZXRDdXJyZW50VGltZSgxMDAwKTsgLy8gc2V0dGluZyAxIHNlY29uZCB0byBtYWtlIHN1cmUg
dGhhdCB0aW1lICE9IDBzIHdoZW4gd2UgY2hlY2sgdGhlIGFuaW1WYWwgdmFsdWUNCiAgICAgIC8v
IHRoZSBhbmltYXRpb24gaXMgdGhlbiB0ZXN0ZWQgaW4gdGhlIG5leHQgdGVzdA0KICAgICAgcmV0
dXJuIDU7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDc2OiBTTUlM
IGluIFNWRywgcGFydCAyLCBmcm9tIEVyaWsgRGFobHN0cm9tDQogICAgICAvLw0KICAgICAgLy8g
QWJvdXQgYW5pbVZhbFsyXTogIklmIHRoZSBnaXZlbiBhdHRyaWJ1dGUgb3IgcHJvcGVydHkgaXMN
CiAgICAgIC8vIGJlaW5nIGFuaW1hdGVkLCBjb250YWlucyB0aGUgY3VycmVudCBhbmltYXRlZCB2
YWx1ZSBvZiB0aGUNCiAgICAgIC8vIGF0dHJpYnV0ZSBvciBwcm9wZXJ0eSwgYW5kIGJvdGggdGhl
IG9iamVjdCBpdHNlbGYgYW5kIGl0cw0KICAgICAgLy8gY29udGVudHMgYXJlIHJlYWRvbmx5LiBJ
ZiB0aGUgZ2l2ZW4gYXR0cmlidXRlIG9yIHByb3BlcnR5IGlzDQogICAgICAvLyBub3QgY3VycmVu
dGx5IGJlaW5nIGFuaW1hdGVkLCBjb250YWlucyB0aGUgc2FtZSB2YWx1ZSBhcw0KICAgICAgLy8g
J2Jhc2VWYWwnLiINCiAgICAgIC8vDQogICAgICAvLyBTaW5jZSB0aGUgZHVyYXRpb24gb2YgdGhl
IGFuaW1hdGlvbiBpcyBpbmRlZmluaXRlIHRoZSB2YWx1ZQ0KICAgICAgLy8gaXMgc3RpbGwgYmVp
bmcgYW5pbWF0ZWQgYXQgdGhlIHRpbWUgaXQncyBxdWVyaWVkLiBOb3cgc2luY2UNCiAgICAgIC8v
IHRoZSAnd2lkdGgnIGF0dHJpYnV0ZSB3YXMgYW5pbWF0ZWQgZnJvbSBpdHMgb3JpZ2luYWwgdmFs
dWUgb2YNCiAgICAgIC8vICIxMDAiIHRvIHRoZSBuZXcgdmFsdWUgb2YgIjAiIHRoZSBhbmltVmFs
IHByb3BlcnR5IG11c3QNCiAgICAgIC8vIGNvbnRhaW4gdGhlIHZhbHVlIDAuDQogICAgICAvLyAN
CiAgICAgIC8vIFsyXSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS90eXBlcy5odG1sI0ludGVy
ZmFjZVNWR0FuaW1hdGVkTGVuZ3RoDQoNCiAgICAgIHZhciBzdmdkb2MgPSBrdW5nRnVEZWF0aEdy
aXAuZmlyc3RDaGlsZC5jb250ZW50RG9jdW1lbnQ7DQogICAgICBhc3NlcnQoc3ZnZG9jLCAiY29u
dGVudERvY3VtZW50IGZhaWxlZCBvbiA8b2JqZWN0PiBmb3Igc3ZnIGRvY3VtZW50LiIpOw0KICAg
ICAgdmFyIHJlY3QgPSBzdmdkb2MuZ2V0RWxlbWVudEJ5SWQoInJlY3QiKTsNCiAgICAgIGFzc2Vy
dChyZWN0LCAiRmFpbGVkIHRvIGZpbmQgPHJlY3Q+IGVsZW1lbnQgaW4gc3ZnIGRvY3VtZW50LiIp
Ow0KICAgICAgYXNzZXJ0RXF1YWxzKHJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSwgMCwgIkluY29y
cmVjdCBhbmltVmFsIHZhbHVlIGFmdGVyIHN2ZyBhbmltYXRpb24uIik7DQogICAgICByZXR1cm4g
NTsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgNzc6IGV4dGVybmFs
IFNWRyBmb250cywgZnJvbSBFcmlrIERhaGxzdHJvbQ0KICAgICAgLy8NCiAgICAgIC8vIFNWR0Zv
bnRzIGFyZSBkZXNjcmliZWQgaGVyZVszXSwgYW5kIHRoZSByZWxldmFudCBET00gbWV0aG9kcw0K
ICAgICAgLy8gdXNlZCBpbiB0aGUgdGVzdCBhcmUgZGVmaW5lZCBoZXJlWzRdLg0KICAgICAgLy8N
CiAgICAgIC8vIE5vdGUgdGhhdCBpbiBvcmRlciB0byBiZSBtb3JlIHByZWRpY3RhYmxlIHRoZSBz
dmcgc2hvdWxkIGJlDQogICAgICAvLyB2aXNpYmxlLCBzbyB0aGF0IGNsYXVzZSAiRm9yIG5vbi1y
ZW5kZXJpbmcgZW52aXJvbm1lbnRzLCB0aGUNCiAgICAgIC8vIHVzZXIgYWdlbnQgc2hhbGwgbWFr
ZSByZWFzb25hYmxlIGFzc3VtcHRpb25zIGFib3V0IGdseXBoDQogICAgICAvLyBtZXRyaWNzLiIg
ZG9lc24ndCBpbmZsdWVuY2UgdGhlIHJlc3VsdHMuIFdlIHVzZSAnb3BhY2l0eTowJw0KICAgICAg
Ly8gdG8gaGlkZSB0aGUgU1ZHLCBidXQgYXJndWFibHkgaXQncyBzdGlsbCBhICJyZW5kZXJpbmcN
CiAgICAgIC8vIGVudmlyb25tZW50Ii4NCiAgICAgIC8vDQogICAgICAvLyBUaGUgZm9udC1zaXpl
IDQwMDAgd2FzIGNob3NlbiBiZWNhdXNlIHRoYXQgbWF0Y2hlcyB0aGUNCiAgICAgIC8vIHVuaXRz
UGVyRW0gdmFsdWUgaW4gdGhlIHN2Z2ZvbnQsIHdoaWNoIG1ha2VzIGl0IGVhc3kgdG8gY2hlY2sN
CiAgICAgIC8vIHRoZSBnbHlwaCBhZHZhbmNlcyBzaW5jZSB0aGV5IHdpbGwgdGhlbiBiZSBleGFj
dGx5IHdoYXQgd2FzDQogICAgICAvLyBzcGVjaWZpZWQgaW4gdGhlIHN2Z2ZvbnQuDQogICAgICAv
Lw0KICAgICAgLy8gWzNdIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZvbnRzLmh0bWwNCiAg
ICAgIC8vIFs0XSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS90ZXh0Lmh0bWwjSW50ZXJmYWNl
U1ZHVGV4dENvbnRlbnRFbGVtZW50DQoNCiAgICAgIHZhciBzdmducyA9ICJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI7DQogICAgICB2YXIgeGxpbmtucyA9ICJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIjsNCiAgICAgIHZhciBzdmdkb2MgPSBrdW5nRnVEZWF0aEdyaXAuZmlyc3RDaGls
ZC5jb250ZW50RG9jdW1lbnQ7DQogICAgICBhc3NlcnQoc3ZnZG9jLCAiY29udGVudERvY3VtZW50
IGZhaWxlZCBvbiA8b2JqZWN0PiBmb3Igc3ZnIGRvY3VtZW50LiIpOw0KICAgICAgdmFyIHN2ZyA9
IHN2Z2RvYy5kb2N1bWVudEVsZW1lbnQ7DQogICAgICB2YXIgdGV4dCA9IHN2Z2RvYy5jcmVhdGVF
bGVtZW50TlMoc3ZnbnMsICJ0ZXh0Iik7DQogICAgICB0ZXh0LnNldEF0dHJpYnV0ZSgieSIsICIx
ZW0iKTsNCiAgICAgIHRleHQuc2V0QXR0cmlidXRlKCJmb250LXNpemUiLCAiNDAwMCIpOw0KICAg
ICAgdGV4dC5zZXRBdHRyaWJ1dGUoImZvbnQtZmFtaWx5IiwgIkFDSUQzc3ZnZm9udCIpOw0KICAg
ICAgdmFyIHRleHRDb250ZW50ID0gc3ZnZG9jLmNyZWF0ZVRleHROb2RlKCJhYmMiKTsNCiAgICAg
IHRleHQuYXBwZW5kQ2hpbGQodGV4dENvbnRlbnQpOw0KICAgICAgc3ZnLmFwcGVuZENoaWxkKHRl
eHQpOw0KICAgICAgLy8gVGhlIGZvbnQtc2l6ZSA0MDAwIHdhcyBjaG9zZW4gYmVjYXVzZSB0aGF0
IG1hdGNoZXMgdGhlIHVuaXRzUGVyRW0gdmFsdWUgaW4gdGhlIHN2Z2ZvbnQsIA0KICAgICAgLy8g
d2hpY2ggbWFrZXMgaXQgZWFzeSB0byBjaGVjayB0aGUgZ2x5cGggYWR2YW5jZXMgc2luY2UgdGhl
eSB3aWxsIHRoZW4gYmUgZXhhY3RseSB3aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIHN2Z2ZvbnQu
DQogICAgICBhc3NlcnQodGV4dC5nZXROdW1iZXJPZkNoYXJzLCAiU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmdldE51bWJlck9mQ2hhcnMoKSBub3Qgc3VwcG9ydGVkLiIpOw0KICAgICAgYXNzZXJ0RXF1
YWxzKHRleHQuZ2V0TnVtYmVyT2ZDaGFycygpLCAzLCAiZ2V0TnVtYmVyT2ZDaGFycyByZXR1cm5l
ZCBpbmNvcnJlY3Qgc3RyaW5nIGxlbmd0aC4iKTsNCiAgICAgIGFzc2VydEVxdWFscyh0ZXh0Lmdl
dENvbXB1dGVkVGV4dExlbmd0aCgpLCA0NzExKzQyKzIzLCAiZ2V0Q29tcHV0ZWRUZXh0TGVuZ3Ro
IGZhaWxlZC4iKTsNCiAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgw
LDEpLCA0MiwgImdldFN1YlN0cmluZ0xlbmd0aCAjMSBmYWlsZWQuIik7DQogICAgICBhc3NlcnRF
cXVhbHModGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMCwyKSwgNDIrMjMsICJnZXRTdWJTdHJpbmdM
ZW5ndGggIzIgZmFpbGVkLiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0U3ViU3RyaW5n
TGVuZ3RoKDEsMSksIDIzLCAiZ2V0U3ViU3RyaW5nTGVuZ3RoICMzIGZhaWxlZC4iKTsNCiAgICAg
IGFzc2VydEVxdWFscyh0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgxLDApLCAwLCAiZ2V0U3ViU3Ry
aW5nTGVuZ3RoICM0IGZhaWxlZC4iKTsNCiAgICAgIHZhciBjb2RlID0gLTEwMDA7DQogICAgICB0
cnkgew0KICAgICAgICB2YXIgc2wgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgxLDMpOw0KICAg
ICAgfSBjYXRjaChlKSB7DQogICAgICAgIGNvZGUgPSBlLmNvZGU7DQogICAgICB9DQogICAgICBh
c3NlcnRFcXVhbHMoY29kZSwgRE9NRXhjZXB0aW9uLklOREVYX1NJWkVfRVJSLCAiZ2V0U3ViU3Ry
aW5nTGVuZ3RoICMxIGRpZG4ndCB0aHJvdyBleGNlcHRpb24uIik7DQogICAgICBjb2RlID0gLTEw
MDA7DQogICAgICB0cnkgew0KICAgICAgICB2YXIgc2wgPSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0
aCgwLDQpOw0KICAgICAgfSBjYXRjaChlKSB7DQogICAgICAgIGNvZGUgPSBlLmNvZGU7DQogICAg
ICB9DQogICAgICBhc3NlcnRFcXVhbHMoY29kZSwgRE9NRXhjZXB0aW9uLklOREVYX1NJWkVfRVJS
LCAiZ2V0U3ViU3RyaW5nTGVuZ3RoICMyIGRpZG4ndCB0aHJvdyBleGNlcHRpb24uIik7DQogICAg
ICBjb2RlID0gLTEwMDA7DQogICAgICB0cnkgew0KICAgICAgICB2YXIgc2wgPSB0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgzLDApOw0KICAgICAgfSBjYXRjaChlKSB7DQogICAgICAgIGNvZGUgPSBl
LmNvZGU7DQogICAgICB9DQogICAgICBhc3NlcnRFcXVhbHMoY29kZSwgRE9NRXhjZXB0aW9uLklO
REVYX1NJWkVfRVJSLCAiZ2V0U3ViU3RyaW5nTGVuZ3RoICMzIGRpZG4ndCB0aHJvdyBleGNlcHRp
b24uIik7DQogICAgICBjb2RlID0gLTEwMDA7DQogICAgICB0cnkgew0KICAgICAgICB2YXIgc2wg
PSB0ZXh0LmdldFN1YlN0cmluZ0xlbmd0aCgtMTcsMjApOw0KICAgICAgfSBjYXRjaChlKSB7DQog
ICAgICAgIGNvZGUgPSAwOyAvLyBuZWdhdGl2ZSB2YWx1ZXMgbWlnaHQgdGhyb3cgbmF0aXZlIGV4
Y2VwdGlvbiBzaW5jZSB0aGUgYXBpIGFjY2VwdHMgb25seSB1bnNpZ25lZCB2YWx1ZXMNCiAgICAg
IH0NCiAgICAgIGFzc2VydChjb2RlID09IDAsICJnZXRTdWJTdHJpbmdMZW5ndGggIzQgZGlkbid0
IHRocm93IGV4Y2VwdGlvbi4iKTsNCiAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFN0YXJ0UG9z
aXRpb25PZkNoYXIoMCkueCwgMCwgImdldFN0YXJ0UG9zaXRpb25PZkNoYXIoMCkueCByZXR1cm5l
ZCBpbnZhbGlkIHZhbHVlLiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0U3RhcnRQb3Np
dGlvbk9mQ2hhcigxKS54LCA0MiwgImdldFN0YXJ0UG9zaXRpb25PZkNoYXIoMSkueCByZXR1cm5l
ZCBpbnZhbGlkIHZhbHVlLiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0U3RhcnRQb3Np
dGlvbk9mQ2hhcigyKS54LCA0MisyMywgImdldFN0YXJ0UG9zaXRpb25PZkNoYXIoMikueCByZXR1
cm5lZCBpbnZhbGlkIHZhbHVlLiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0U3RhcnRQ
b3NpdGlvbk9mQ2hhcigwKS55LCA0MDAwLCAiZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigwKS55IHJl
dHVybmVkIGludmFsaWQgdmFsdWUuIik7DQogICAgICBjb2RlID0gLTEwMDA7DQogICAgICB0cnkg
ew0KICAgICAgICB2YXIgdmFsID0gdGV4dC5nZXRTdGFydFBvc2l0aW9uT2ZDaGFyKC0xKTsNCiAg
ICAgIH0gY2F0Y2goZSkgew0KICAgICAgICBjb2RlID0gMDsgLy8gbmVnYXRpdmUgdmFsdWVzIG1p
Z2h0IHRocm93IG5hdGl2ZSBleGNlcHRpb24gc2luY2UgdGhlIGFwaSBhY2NlcHRzIG9ubHkgdW5z
aWduZWQgdmFsdWVzDQogICAgICB9DQogICAgICBhc3NlcnQoY29kZSA9PSAwLCAiZ2V0U3RhcnRQ
b3NpdGlvbk9mQ2hhciAjMSBleGNlcHRpb24gZmFpbGVkLiIpOw0KICAgICAgY29kZSA9IC0xMDAw
Ow0KICAgICAgdHJ5IHsNCiAgICAgICAgdmFyIHZhbCA9IHRleHQuZ2V0U3RhcnRQb3NpdGlvbk9m
Q2hhcig0KTsNCiAgICAgIH0gY2F0Y2goZSkgew0KICAgICAgICBjb2RlID0gZS5jb2RlOw0KICAg
ICAgfQ0KICAgICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERPTUV4Y2VwdGlvbi5JTkRFWF9TSVpFX0VS
UiwgImdldFN0YXJ0UG9zaXRpb25PZkNoYXIgIzIgZXhjZXB0aW9uIGZhaWxlZC4iKTsNCiAgICAg
IGFzc2VydEVxdWFscyh0ZXh0LmdldEVuZFBvc2l0aW9uT2ZDaGFyKDApLngsIDQyLCAiZ2V0RW5k
UG9zaXRpb25PZkNoYXIoMCkueCByZXR1cm5lZCBpbnZhbGlkIHZhbHVlLiIpOw0KICAgICAgYXNz
ZXJ0RXF1YWxzKHRleHQuZ2V0RW5kUG9zaXRpb25PZkNoYXIoMSkueCwgNDIrMjMsICJnZXRFbmRQ
b3NpdGlvbk9mQ2hhcigxKS54IHJldHVybmVkIGludmFsaWQgdmFsdWUuIik7DQogICAgICBhc3Nl
cnRFcXVhbHModGV4dC5nZXRFbmRQb3NpdGlvbk9mQ2hhcigyKS54LCA0MisyMys0NzExLCAiZ2V0
RW5kUG9zaXRpb25PZkNoYXIoMikueCByZXR1cm5lZCBpbnZhbGlkIHZhbHVlLiIpOw0KICAgICAg
Y29kZSA9IC0xMDAwOw0KICAgICAgdHJ5IHsNCiAgICAgICAgdmFyIHZhbCA9IHRleHQuZ2V0RW5k
UG9zaXRpb25PZkNoYXIoLTE3KTsNCiAgICAgIH0gY2F0Y2goZSkgew0KICAgICAgICBjb2RlID0g
MDsgLy8gbmVnYXRpdmUgdmFsdWVzIG1pZ2h0IHRocm93IG5hdGl2ZSBleGNlcHRpb24gc2luY2Ug
dGhlIGFwaSBhY2NlcHRzIG9ubHkgdW5zaWduZWQgdmFsdWVzDQogICAgICB9DQogICAgICBhc3Nl
cnQoY29kZSA9PSAwLCAiZ2V0RW5kUG9zaXRpb25PZkNoYXIgIzEgZXhjZXB0aW9uIGZhaWxlZC4i
KTsNCiAgICAgIGNvZGUgPSAtMTAwMDsNCiAgICAgIHRyeSB7DQogICAgICAgIHZhciB2YWwgPSB0
ZXh0LmdldEVuZFBvc2l0aW9uT2ZDaGFyKDQpOw0KICAgICAgfSBjYXRjaChlKSB7DQogICAgICAg
IGNvZGUgPSBlLmNvZGU7DQogICAgICB9DQogICAgICBhc3NlcnRFcXVhbHMoY29kZSwgRE9NRXhj
ZXB0aW9uLklOREVYX1NJWkVfRVJSLCAiZ2V0RW5kUG9zaXRpb25PZkNoYXIgIzIgZXhjZXB0aW9u
IGZhaWxlZC4iKTsNCiAgICAgIHJldHVybiA1Ow0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0K
ICAgICAgLy8gdGVzdCA3ODogU1ZHIHRleHRQYXRoIGFuZCBnZXRSb3RhdGlvbk9mQ2hhcigpLCBm
cm9tIEVyaWsgRGFobHN0cm9tDQogICAgICAvLw0KICAgICAgLy8gVGhlIGdldFJvdGF0aW9uT2ZD
aGFyWzRdIG1ldGhvZCBmZXRjaGVzIHRoZSBtaWRwb2ludCByb3RhdGlvbg0KICAgICAgLy8gb2Yg
YSBnbHlwaCBkZWZpbmVkIGJ5IGEgY2hhcmFjdGVyIChpbiB0aGlzIHRlc3RjYXNlIHRoZXJlIGlz
DQogICAgICAvLyBhIHNpbXBsZSAxOjEgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiB0aGUgdHdvKS4g
VGhlIHBhdGggaXMNCiAgICAgIC8vIGRlZmluZWQgaW4gdGhlIHN2Zy54bWwgZmlsZSwgYW5kIGNv
bnNpc3RzIG9mIGZpcnN0IGEgbGluZQ0KICAgICAgLy8gZ29pbmcgZG93biwgdGhlbiBmb2xsb3dl
ZCBieSBhIGxpbmUgdGhhdCBoYXMgYSA0NSBkZWdyZWUNCiAgICAgIC8vIHNsb3BlIGFuZCB0aGVu
IGZvbGxvd2VkIGJ5IGEgaG9yaXpvbnRhbCBsaW5lLiBUaGUgbGVuZ3RoIG9mDQogICAgICAvLyBl
YWNoIHBhdGggc2VnbWVudCBoYXZlIGJlZW4gcGFpcmVkIHdpdGggdGhlIGFkdmFuY2Ugb2YgZWFj
aA0KICAgICAgLy8gZ2x5cGgsIHNvIHRoYXQgZWFjaCBnbHlwaCB3aWxsIGJlIG9uIGVhY2ggb2Yg
dGhlIHRocmVlDQogICAgICAvLyBkaWZmZXJlbnQgcGF0aCBzZWdtZW50cyAoc2VlIHRleHQgb24g
YSBwYXRoIGxheW91dCBydWxlc1s1XSkuDQogICAgICAvLyBUaHVzIHRoZSByb3RhdGlvbiBvZiB0
aGUgZmlyc3QgZ2x5cGggaXMgOTAgZGVncmVlcywgdGhlDQogICAgICAvLyBzZWNvbmQgNDUgZGVn
cmVlcyBhbmQgdGhlIHRoaXJkIDAgZGVncmVlcy4NCiAgICAgIC8vDQogICAgICAvLyBbNF0gaHR0
cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvdGV4dC5odG1sI0ludGVyZmFjZVNWR1RleHRDb250ZW50
RWxlbWVudA0KICAgICAgLy8gWzVdIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL3RleHQuaHRt
bCNUZXh0cGF0aExheW91dFJ1bGVzDQoNCiAgICAgIHZhciBzdmducyA9ICJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI7DQogICAgICB2YXIgeGxpbmtucyA9ICJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIjsNCiAgICAgIHZhciBzdmdkb2MgPSBrdW5nRnVEZWF0aEdyaXAuZmlyc3RDaGls
ZC5jb250ZW50RG9jdW1lbnQ7DQogICAgICBhc3NlcnQoc3ZnZG9jLCAiY29udGVudERvY3VtZW50
IGZhaWxlZCBvbiA8b2JqZWN0PiBmb3Igc3ZnIGRvY3VtZW50LiIpOw0KICAgICAgdmFyIHN2ZyA9
IHN2Z2RvYy5kb2N1bWVudEVsZW1lbnQ7DQogICAgICB2YXIgdGV4dCA9IHN2Z2RvYy5jcmVhdGVF
bGVtZW50TlMoc3ZnbnMsICJ0ZXh0Iik7DQogICAgICB0ZXh0LnNldEF0dHJpYnV0ZSgiZm9udC1z
aXplIiwgIjQwMDAiKTsNCiAgICAgIHRleHQuc2V0QXR0cmlidXRlKCJmb250LWZhbWlseSIsICJB
Q0lEM3N2Z2ZvbnQiKTsNCiAgICAgIHZhciB0ZXh0cGF0aCA9IHN2Z2RvYy5jcmVhdGVFbGVtZW50
TlMoc3ZnbnMsICJ0ZXh0UGF0aCIpOw0KICAgICAgdGV4dHBhdGguc2V0QXR0cmlidXRlTlMoeGxp
bmtucywgInhsaW5rOmhyZWYiLCAiI3BhdGgiKTsNCiAgICAgIHZhciB0ZXh0Q29udGVudCA9IHN2
Z2RvYy5jcmVhdGVUZXh0Tm9kZSgiYWJjIik7DQogICAgICB0ZXh0cGF0aC5hcHBlbmRDaGlsZCh0
ZXh0Q29udGVudCk7DQogICAgICB0ZXh0LmFwcGVuZENoaWxkKHRleHRwYXRoKTsNCiAgICAgIHN2
Zy5hcHBlbmRDaGlsZCh0ZXh0KTsNCiAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFJvdGF0aW9u
T2ZDaGFyKDApLCA5MCwgImdldFJvdGF0aW9uT2ZDaGFyKDApIGZhaWxlZC4iKTsNCiAgICAgIGFz
c2VydEVxdWFscyh0ZXh0LmdldFJvdGF0aW9uT2ZDaGFyKDEpLCA0NSwgImdldFJvdGF0aW9uT2ZD
aGFyKDEpIGZhaWxlZC4iKTsNCiAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFJvdGF0aW9uT2ZD
aGFyKDIpLCAwLCAiZ2V0Um90YXRpb25PZkNoYXIoMikgZmFpbGVkLiIpOw0KICAgICAgdmFyIGNv
ZGUgPSAtMTAwMDsNCiAgICAgIHRyeSB7DQogICAgICAgIHZhciB2YWwgPSB0ZXh0LmdldFJvdGF0
aW9uT2ZDaGFyKC0xKQ0KICAgICAgfSBjYXRjaChlKSB7DQogICAgICAgIGNvZGUgPSBlLmNvZGU7
DQogICAgICB9DQogICAgICBhc3NlcnRFcXVhbHMoY29kZSwgRE9NRXhjZXB0aW9uLklOREVYX1NJ
WkVfRVJSLCAiZ2V0Um90YXRpb25PZkNoYXIgIzEgZXhjZXB0aW9uIGZhaWxlZC4iKTsNCiAgICAg
IGNvZGUgPSAtMTAwMDsNCiAgICAgIHRyeSB7DQogICAgICAgIHZhciB2YWwgPSB0ZXh0LmdldFJv
dGF0aW9uT2ZDaGFyKDQpDQogICAgICB9IGNhdGNoKGUpIHsNCiAgICAgICAgY29kZSA9IGUuY29k
ZTsNCiAgICAgIH0NCiAgICAgIGFzc2VydEVxdWFscyhjb2RlLCBET01FeGNlcHRpb24uSU5ERVhf
U0laRV9FUlIsICJnZXRSb3RhdGlvbk9mQ2hhciAjMiBleGNlcHRpb24gZmFpbGVkLiIpOw0KICAg
ICAgcmV0dXJuIDU7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDc5
OiBhIGdpYW50IHRlc3QgZm9yIDxzdmc6Zm9udD4sIGZyb20gQ2FtZXJvbiBNY0Nvcm1hY2sNCiAg
ICAgIC8vIFRoaXMgdGVzdHMgdmFyaW91cyBmZWF0dXJlcyBvZiBTVkcgZm9udHMgZnJvbSBTVkcg
MS4xLiAgSXQgY29uc2lzdHMgb2YNCiAgICAgIC8vIGEgPHRleHQ+IGVsZW1lbnQgd2l0aCAzMyBj
aGFyYWN0ZXJzLCBzdHlsZWQgdXNpbmcgYW4gU1ZHIGZvbnQgdGhhdCBoYXMNCiAgICAgIC8vIGRp
ZmZlcmVudCBhZHZhbmNlIHZhbHVlcyBmb3IgZWFjaCBnbHlwaC4gIFRoZSBzY3JpcHQgdXNlcw0K
ICAgICAgLy8gU1ZHVGV4dEVsZW1lbnRDb250ZW50LmdldFN0YXJ0UG9zaXRpb25PZkNoYXIoKSB0
byBkZXRlcm1pbmUgd2hlcmUgdGhlDQogICAgICAvLyBnbHlwaCBjb3JyZXNwb25kaW5nIHRvIGVh
Y2ggY2hhcmFjdGVyIHdhcyBwbGFjZWQsIGFuZCB0aHVzIHRvIHdvcmsgb3V0DQogICAgICAvLyB3
aGV0aGVyIHRoZSBTVkcgZm9udCB3YXMgdXNlZCBjb3JyZWN0bHkuDQogICAgICAvLw0KICAgICAg
Ly8gVGhlIGZvbnQgdXNlcyAxMDAgdW5pdHMgcGVyIGVtLCBhbmQgdGhlIHRleHQgaXMgc2V0IGlu
IDEwMHB4LiAgU2luY2UNCiAgICAgIC8vIGZvbnQtc2l6ZSBnaXZlcyB0aGUgc2l6ZSBvZiB0aGUg
ZW0gYm94DQogICAgICAvLyAoaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvdGV4dC5odG1sI0RP
TUludGVyZmFjZXMpLCB0aGUgc2NhbGUgb2YgdGhlDQogICAgICAvLyBjb29yZGluYXRlIHN5c3Rl
bSBmb3IgdGhlIGdseXBocyBpcyB0aGUgc2FtZSBhcyB0aGUgU1ZHIGRvY3VtZW50Lg0KICAgICAg
Ly8NCiAgICAgIC8vIFRoZSBleHBlY3RlZEFkdmFuY2VzIGFycmF5IGhvbGRzIHRoZSBleHBlY3Rl
ZCBhZHZhbmNlIHZhbHVlIGZvciBlYWNoDQogICAgICAvLyBjaGFyYWN0ZXIsIGFuZCBleHBlY3Rl
ZEtlcm5pbmcgaG9sZHMgdGhlIChuZWdhdGl2ZSkga2VybmluZyBmb3IgZWFjaA0KICAgICAgLy8g
Y2hhcmFjdGVyLiAgZ2V0UG9zaXRpb25PZkNoYXIoKSByZXR1cm5zIHRoZSBhY3R1YWwgeCBjb29y
ZGluYXRlIGZvciB0aGUNCiAgICAgIC8vIGdseXBoLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZl
biBjaGFyYWN0ZXIsIGFuZCBpZiBtdWx0aXBsZSBjaGFyYWN0ZXJzDQogICAgICAvLyBjb3JyZXNw
b25kIHRvIHRoZSBzYW1lIGdseXBoLCB0aGUgc2FtZSBwb3NpdGlvbiB2YWx1ZSBpcyByZXR1cm5l
ZCBmb3INCiAgICAgIC8vIGVhY2ggb2YgdGhvc2UgY2hhcmFjdGVycy4NCiAgICAgIC8vDQogICAg
ICAvLyBIZXJlIGFyZSB0aGUgcmVhc29uaW5ncyBmb3IgdGhlIGFkdmFuY2Uva2VybmluZyB2YWx1
ZXMuICBOb3RlIHRoYXQgZm9yDQogICAgICAvLyBhIGdpdmVuIGNoYXJhY3RlciBhdCBpbmRleCBp
LCB0aGUgZXhwZWN0ZWQgcG9zaXRpb24gaXMNCiAgICAgIC8vIHN1bShleHBlY3RlZEFkdmFuY2Vz
WzA6aS0xXSArIGV4cGVjdGVkS2VybmluZ1swOmktMV0pLg0KICAgICAgLy8NCiAgICAgIC8vIGNo
YXIgICAgIGFkdmFuY2UgIGtlcm5pbmcgIHJlYXNvbmluZw0KICAgICAgLy8gLS0tLS0tLSAgLS0t
LS0tLSAgLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAgICAgIC8vIEEgICAgICAgIDEwMDAwICAgIDAgICAgICAgIE5vcm1hbCBjaGFy
YWN0ZXIgbWFwcGluZyB0byBhIHNpbmdsZSBnbHlwaC4NCiAgICAgIC8vIEIgICAgICAgIDAgICAg
ICAgIDAgICAgICAgIEZpcnN0IGNoYXJhY3RlciBvZiBhIHR3byBjaGFyYWN0ZXIgZ2x5cGgsIHNv
IHRoZQ0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBwb3NpdGlv
biBpc24ndCBhZHZhbmNlZCB1bnRpbCB0aGUgc2Vjb25kDQogICAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyYWN0ZXIuDQogICAgICAvLyBDICAgICAgICAyMDAgICAgICAwICAg
ICAgICBTZWNvbmQgY2hhcmFjdGVyIG9mIGEgdHdvIGNoYXJhY3RlciBnbHlwaCwgc28gbm93DQog
ICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcG9zaXRpb24gaXMgYWR2YW5j
ZWQuDQogICAgICAvLyBCICAgICAgICAzMDAgICAgICAwICAgICAgICBBbHRob3VnaCB0aGVyZSBp
cyBhIGdseXBoIGZvciAiQkMiIGluIHRoZSBmb250LA0KICAgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXQgYXBwZWFycyBhZnRlciB0aGUgZ2x5cGggZm9yICJCIiwgc28gdGhlIHNp
bmdsZQ0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIGdseXBo
IGZvciAiQiIgc2hvdWxkIGJlIGNob3NlbiBpbnN0ZWFkLg0KICAgICAgLy8gRCAgICAgICAgMTEw
MCAgICAgMCAgICAgICAgTm9ybWFsIGNoYXJhY3RlciBtYXBwaW5nIHRvIGEgc2luZ2xlIGdseXBo
Lg0KICAgICAgLy8gQSAgICAgICAgMTAwMDAgICAgMjAwICAgICAgS2VybmluZyBvZiAtMjAwIGlz
IHNwZWNpZmllZCBpbiB0aGUgZm9udCBiZXR3ZWVuDQogICAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGUgIkEiIGFuZCAiRUUiIGdseXBocy4NCiAgICAgIC8vIEUgICAgICAgIDAg
ICAgICAgIDAgICAgICAgIFRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSB0d28gY2hhcmFjdGVyIGds
eXBoICJFRSIuDQogICAgICAvLyBFICAgICAgICAxMzAwICAgICAwICAgICAgICBUaGUgc2Vjb25k
IGNoYXJhY3RlciBvZiBhIHR3byBjaGFyYWN0ZXIgZ2x5cGguDQogICAgICAvLyBVICAgICAgICAw
ICAgICAgICAwICAgICAgICBUaGlzIGlzIGEgZ2x5cGggZm9yIHRoZSBzaXggY2hhcmFjdGVycyAi
VSswMDQ2IiwNCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGhhcHBl
biB0byBsb29rIGxpa2UgYSB2YWxpZCB1bmljb2RlIHJhbmdlLg0KICAgICAgLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGhpcyB0ZXN0cyB0aGF0IHRoZSA8Z2x5cGggdW5pY29kZT0iIj4g
aW4gdGhlDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250IG1hdGNoZXMg
ZXhhY3Qgc3RyaW5ncyByYXRoZXIgdGhhbiBhIHJhbmdlLA0KICAgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXMgdXNlZCBpbiB0aGUga2VybmluZyBlbGVtZW50cy4NCiAgICAgIC8v
ICsgICAgICAgIDAgICAgICAgIDAgICAgICAgIFNlY29uZCBjaGFyYWN0ZXIgb2Ygc2l4IGNoYXJh
Y3RlciBnbHlwaC4NCiAgICAgIC8vIDAgICAgICAgIDAgICAgICAgIDAgICAgICAgIFRoaXJkIGNo
YXJhY3RlciBvZiBzaXggY2hhcmFjdGVyIGdseXBoLg0KICAgICAgLy8gMCAgICAgICAgMCAgICAg
ICAgMCAgICAgICAgRm91cnRoIGNoYXJhY3RlciBvZiBzaXggY2hhcmFjdGVyIGdseXBoLg0KICAg
ICAgLy8gNCAgICAgICAgMCAgICAgICAgMCAgICAgICAgRmlmdGggY2hhcmFjdGVyIG9mIHNpeCBj
aGFyYWN0ZXIgZ2x5cGguDQogICAgICAvLyA2ICAgICAgICAxNzAwICAgICAwICAgICAgICBTaXh0
aCBjaGFyYWN0ZXIgb2Ygc2l4IGNoYXJhY3RlciBnbHlwaC4NCiAgICAgIC8vIFUgICAgICAgIDAg
ICAgICAgIDAgICAgICAgIFRoZSBzYW1lIHNpeCBjaGFyYWN0ZXIgZ2x5cGggdGhhdCBsb29rcyBs
aWtlIGENCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGUgcmFuZ2Uu
ICBPbmUgb2YgdGhlIGtlcm5pbmcgZWxlbWVudHMgaGFzDQogICAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1MT0iVSswMDQ2IiB1Mj0iVSswMDQ2Iiwgd2hpY2ggc2hvdWxkbid0IG1h
dGNoDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBiZWNhdXNlIHRo
b3NlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkDQogICAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcyBVbmljb2RlIHJhbmdlcyBpZiB0aGV5IGFyZSwgYW5kIG5vcm1hbA0KICAg
ICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5ncyBvdGhlcndpc2UuICBUaHVz
IHRoZXJlIHNob3VsZCBiZSBubw0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
a2VybmluZyBiZXR3ZWVuIHRoZXNlIHR3byBnbHlwaHMuDQogICAgICAvLyBHICAgICAgICAyMzAw
ICAgICAyMDAgICAgICBLZXJuaW5nIGlzIGJldHdlZW4gdGhpcyBjaGFyYWN0ZXIgYW5kIHRoZSBu
ZXh0DQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRyIsIHNpbmNlIHRoZXJl
IGlzIGFuIDxoa2Vybj4gZWxlbWVudCB0aGF0DQogICAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2VzIGEgVW5pY29kZSByYW5nZSBvbiBpdHMgdTE9IiIgYXR0cmlidXRlDQogICAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYSBnbHlwaCBuYW1lIG9uIGl0cyBn
Mj0iIiBhdHRyaWJ1dGUgd2hpY2gNCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvdGggbWF0Y2ggIkciLg0KICAgICAgLy8gRyAgICAgICAgMjMwMCAgICAgMCAgICAgICAgTm9y
bWFsIGNoYXJhY3RlciB3aXRoIGtlcm5pbmcgYmVmb3JlIGl0Lg0KICAgICAgLy8gSCAgICAgICAg
MzEwMCAgICAgMCAgICAgICAgQSBnbHlwaCB3aXRoIGdyYXBoaWNhbCBjb250ZW50IGRlc2NyaWJp
bmcgdGhlDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCwgcmF0aGVy
IHRoYW4gYSBkPSIiIGF0dHJpYnV0ZS4NCiAgICAgIC8vIEkgICAgICAgIDQzMDAgICAgIDAgICAg
ICAgIEdseXBocyBhcmUgY2hlY2tlZCBpbiBkb2N1bWVudCBvcmRlciBmb3Igb25lDQogICAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG1hdGNoZXMsIGJ1dCB0aGUgZmlyc3Qg
Z2x5cGggd2l0aA0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZT0i
SSIgYWxzbyBoYXMgbGFuZz0iemgiLCB3aGljaCBkaXNxdWFsaWZpZXMNCiAgICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGl0LiAgVGh1cyB0aGUgc2Vjb25kIGdseXBoIHdpdGggdW5p
Y29kZT0iSSINCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNob3Nlbi4N
CiAgICAgIC8vIEkgICAgICAgIDQxMDAgICAgIDAgICAgICAgIFNpbmNlIHRoaXMgSSBoYXMgeG1s
Omxhbmc9InpoIiBvbiBpdCBpbiB0aGUgdGV4dCwNCiAgICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoZSBmaXJzdCBnbHlwaCB3aXRoIGxhbmc9InpoIiBtYXRjaGVzLg0KICAgICAg
Ly8gSiAgICAgICAgNDcwMCAgICAgLTQ3MDAgICAgQSBub3JtYWwgZ2x5cGggd2l0aCBrZXJuaW5n
IGJldHdlZW4gdGhlICJKIiBhbmQgdGhlDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0IGdseXBoICJBIiBlcXVhbCB0byB0aGUgYWR2YW5jZSBvZiB0aGUgIkoiDQogICAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCwgc28gdGhlIHBvc2l0aW9uIHNo
b3VsZCBzdGF5IHRoZSBzYW1lLg0KICAgICAgLy8gQSAgICAgICAgMTAwMDAgICAgMCAgICAgICAg
Tm9ybWFsIGdseXBoIHdpdGgga2VybmluZyBiZWZvcmUgaXQuDQogICAgICAvLyBLICAgICAgICA1
OTAwICAgICAwICAgICAgICBUaGUgZmlyc3QgZ2x5cGggd2l0aCB1bmljb2RlPSJLIiBkb2VzIG5v
dCBtYXRjaCwNCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmNlIGl0IGhh
cyBvcmllbnRhdGlvbj0idiIsIHNvIHRoZSBzZWNvbmQNCiAgICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdseXBoIHdpdGggdW5pY29kZT0iSyIgaXMgY2hvc2VuLg0KICAgICAgLy8g
PHNwYz4gICAgNjEwMCAgICAgMCAgICAgICAgVGhlIHNwYWNlIGNoYXJhY3RlciBzaG91bGQgc2Vs
ZWN0IHRoZSBnbHlwaCB3aXRoDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bmljb2RlPSIgIiwgZGVzcGl0ZSBpdCBoYXZpbmcgYSBtaXNsZWFkaW5nDQogICAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbHlwaC1uYW1lPSJMIi4NCiAgICAgIC8vIEwgICAgICAg
IDY3MDAgICAgIDAgICAgICAgIFRoZSAiTCIgY2hhcmFjdGVyIHNob3VsZCBzZWxlY3QgdGhlIGds
eXBoIHdpdGgNCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGU9IiAi
LCBkZXNwaXRlIGl0IGhhdmluZyBhIG1pc2xlYWRpbmcNCiAgICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdseXBoLW5hbWU9InNwYWNldiIuDQogICAgICAvLyBBICAgICAgICAyOTAw
ICAgICAwICAgICAgICBBbiA8YWx0R2x5cGg+IGVsZW1lbnQgaXMgdXNlZCB0byBzZWxlY3QgdGhl
DQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBmb3IgVSsxMDA4NSBp
bnN0ZWFkIG9mIHRoZSBvbmUgZm9yICJBIi4NCiAgICAgIC8vIFUrMTAwODUgIDI5MDAgICAgIDAg
ICAgICAgIFRlc3RzIGdseXBoIHNlbGVjdGlvbiB3aXRoIGEgbm9uLXBsYW5lLTANCiAgICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlci4NCiAgICAgIC8vIEEgICAgICAg
IDEwMDAwICAgIDAgICAgICAgIEEgZmluYWwgbm9ybWFsIGNoYXJhY3Rlci4NCiAgICAgIC8vDQog
ICAgICAvLyBJbiBhZGRpdGlvbiwgdGhlIHNjcmlwdCB0ZXN0cyB0aGUgdmFsdWUgcmV0dXJuZWQg
YnkNCiAgICAgIC8vIFNWR1RleHRDb250ZW50RWxlbWVudC5nZXROdW1iZXJPZkNoYXJzKCksIHdo
aWNoIGluIHRoaXMgY2FzZSBzaG91bGQgYmUgMzQuDQogICAgICAvLyBJZiBpdCByZXR1cm5lZCAz
MywgdGhlbiBpdCBpbmNvcnJlY3RseSBjb3VudGVkIFVuaWNvZGUgY2hhcmFjdGVycyBpbnN0ZWFk
DQogICAgICAvLyBvZiBVVEYtMTYgY29kZXBvaW50cyAocHJvYmFibHkpLg0KICAgICAgLy8NCiAg
ICAgIC8vIFNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mb250cy5odG1sIGZvciBhIGRl
c2NyaXB0aW9uIG9mIHRoZSBnbHlwaA0KICAgICAgLy8gbWF0Y2hpbmcgcnVsZXMsIGFuZCBodHRw
Oi8vd3d3LnczLm9yZy9UUi9TVkcxMS90ZXh0Lmh0bWwjRE9NSW50ZXJmYWNlcw0KICAgICAgLy8g
Zm9yIGEgZGVzY3JpcHRpb24gb2YgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigpIGFuZCBnZXROdW1i
ZXJPZkNoYXJzKCkuDQogICAgICAvLw0KICAgICAgLy8gTm90ZSBhbHNvIHRoYXQgdGhlIHRlc3Qg
dXNlcyBET01JbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpIHRvIGNyZWF0ZQ0KICAgICAg
Ly8gdGhlIFNWRyBkb2N1bWVudC4gIFRoaXMgc2VlbXMgdG8gY2F1c2UgYnJvd3NlcnMgdHJvdWJs
ZSBmb3IgdGhlIFNWRyBET00NCiAgICAgIC8vIGludGVyZmFjZXMsIHNpbmNlIHRoZSBkb2N1bWVu
dCBpc24ndCBiZWluZyAicmVuZGVyZWQiIGFzIGl0IG1pZ2h0IGJlDQogICAgICAvLyBpZiBpdCB3
ZXJlIGluIGFuIDxpZnJhbWU+LiAgQ2hhbmdpbmcgdGhlIHRlc3QgdG8gdXNlIGFuIDxpZnJhbWU+
IHdpbGwNCiAgICAgIC8vIGF0IGxlYXN0IGxldCB5b3Ugc2VlIHRoZSBtYWluIHBhcnQgb2YgdGhl
IHRlc3QgcnVubmluZy4NCg0KICAgICAgdmFyIE5TID0geyANCiAgICAgICAgc3ZnOiAnaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmcnLA0KICAgICAgICB4bWw6ICdodHRwOi8vd3d3LnczLm9yZy9Y
TUwvMTk5OC9uYW1lc3BhY2UnLA0KICAgICAgICB4bGluazogJ2h0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsnDQogICAgICB9Ow0KDQogICAgICB2YXIgZG9jID0ga3VuZ0Z1RGVhdGhHcmlwLmNo
aWxkTm9kZXNbMV0uY29udGVudERvY3VtZW50Ow0KICAgICAgd2hpbGUgKGRvYy5oYXNDaGlsZE5v
ZGVzKCkpDQogICAgICAgIGRvYy5yZW1vdmVDaGlsZChkb2MuZmlyc3RDaGlsZCk7DQogICAgICBk
b2MuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnROUyhOUy5zdmcsICJzdmc6c3ZnIikpOw0K
DQogICAgICB2YXIgZSA9IGZ1bmN0aW9uIChuLCBhcywgY3MpIHsNCiAgICAgICAgdmFyIGVsdCA9
IGRvYy5jcmVhdGVFbGVtZW50TlMoTlMuc3ZnLCBuKTsNCiAgICAgICAgaWYgKGFzKSB7DQogICAg
ICAgICAgZm9yICh2YXIgYW4gaW4gYXMpIHsNCiAgICAgICAgICAgIHZhciBpZHggPSBhbi5pbmRl
eE9mKCc6Jyk7DQogICAgICAgICAgICB2YXIgbnMgPSBudWxsOw0KICAgICAgICAgICAgaWYgKGlk
eCAhPSAtMSkNCiAgICAgICAgICAgICAgbnMgPSBOU1thbi5zdWJzdHJpbmcoMCwgaWR4KV07DQog
ICAgICAgICAgICBlbHQuc2V0QXR0cmlidXRlTlMobnMsIGFuLCBhc1thbl0pOw0KICAgICAgICAg
IH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoY3MpIHsNCiAgICAgICAgICBmb3IgKHZhciBpIGlu
IGNzKSB7DQogICAgICAgICAgICB2YXIgYyA9IGNzW2ldOw0KICAgICAgICAgICAgZWx0LmFwcGVu
ZENoaWxkKHR5cGVvZiBjID09ICdzdHJpbmcnID8gZG9jLmNyZWF0ZVRleHROb2RlKGMpIDogYyk7
DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBlbHQ7DQogICAgICB9DQoN
Ci8qIEVSUk9SIE1PRElGSUVEIA0KICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGls
ZChlKCdmb250JywgeyAnaG9yaXotYWR2LXgnOiAnMTAwMDAnfSwgW2UoJ2ZvbnQtZmFjZScsIHsg
J2ZvbnQtZmFtaWx5JzogJ0hDbCcsICd1bml0cy1wZXItZW0nOiAnMTAwJywgJ2FzY2VudCc6ICcx
MDAwJywgJ2Rlc2NlbnQnOiAnNTAwJ30pLCBlKCdtaXNzaW5nLWdseXBoJywgbnVsbCwgW2UoJ3Bh
dGgnLCB7ICdkJzogJ00xMDAsMCBoODAwIHYtMTAwIGgtODAwIHonfSldKSwgZSgnZ2x5cGgnLCB7
ICd1bmljb2RlJzogJ0EnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6J30pLCBlKCdn
bHlwaCcsIHsgJ3VuaWNvZGUnOiAnQkMnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6
JywgJ2hvcml6LWFkdi14JzogJzIwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0InLCAn
ZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzMwMCd9KSwg
ZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0MnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEw
MCB6JywgJ2hvcml6LWFkdi14JzogJzUwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0JE
JywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICc3MDAn
fSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdEJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAg
aC0xMDAgeicsICdob3Jpei1hZHYteCc6ICcxMTAwJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUn
OiAnRUUnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14Jzog
JzEzMDAnLCAgJ2dseXBoLW5hbWUnOiAnZ3JhcGVmcnVpdCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmlj
b2RlJzogJ1UrMDA0NicsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXot
YWR2LXgnOiAnMTcwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0YnLCAnZCc6ICdNMTAw
LDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzE5MDAnfSksIGUoJ2dseXBo
JywgeyAndW5pY29kZSc6ICdHJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdo
b3Jpei1hZHYteCc6ICcyMzAwJywgJ2dseXBoLW5hbWUnOiAnZ2VlJ30pLCBlKCdnbHlwaCcsIHsg
J3VuaWNvZGUnOiAnXHVEODAwXHVEQzg1JywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAg
eicsICdob3Jpei1hZHYteCc6ICcyOTAwJywgJ2lkJzogJ2FzdHJhbCd9KSwgZSgnZ2x5cGgnLCB7
ICd1bmljb2RlJzogJ0gnLCAnaG9yaXotYWR2LXgnOiAnMzEwMCd9LCBbZSgncGF0aCcsIHsgJ2Qn
OiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeid9KV0pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUn
OiAnSScsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAn
NDEwMCcsICdsYW5nJzogJ3poJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnSScsICdkJzog
J00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnNDMwMCd9KSwgZSgn
Z2x5cGgnLCB7ICd1bmljb2RlJzogJ0onLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6
JywgJ2hvcml6LWFkdi14JzogJzQ3MDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdLJywg
J2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICc1MzAwJywg
J29yaWVudGF0aW9uJzogJ3YnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdLJywgJ2QnOiAn
TTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICc1OTAwJ30pLCBlKCdn
bHlwaCcsIHsgJ3VuaWNvZGUnOiAnICcsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHon
LCAnaG9yaXotYWR2LXgnOiAnNjEwMCcsICdnbHlwaC1uYW1lJzogJ0wnfSksIGUoJ2dseXBoJywg
eyAndW5pY29kZSc6ICdMJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jp
ei1hZHYteCc6ICc2NzAwJywgJ2dseXBoLW5hbWUnOiAnc3BhY2UnfSksIGUoJ2hrZXJuJywgeyAn
dTEnOiAnQScsICd1Mic6ICdFRScsICdrJzogJzEwMDAnfSksIGUoJ2hrZXJuJywgeyAndTEnOiAn
QScsICdnMic6ICdncmFwZWZydWl0JywgJ2snOiAnLTIwMCd9KSwgZSgnaGtlcm4nLCB7ICd1MSc6
ICdVKzAwNDYnLCAndTInOiAnVSswMDQ2JywgJ2snOiAnLTIwMCd9KSwgZSgnaGtlcm4nLCB7ICd1
MSc6ICdVKzAwNDctMDA0NycsICdnMic6ICdnZWUnLCAnayc6ICctMjAwJ30pLCBlKCdoa2Vybics
IHsgJ3UxJzogJ0onLCAndTInOiAnQScsICdrJzogJzQ3MDAnfSldKSk7DQoqLw0KICAgICAgZG9j
LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChlKCd0ZXh0JywgeyAneSc6ICcxMDAnLCAnZm9u
dC1mYW1pbHknOiAnSENsJywgJ2ZvbnQtc2l6ZSc6ICcxMDBweCcsICdsZXR0ZXItc3BhY2luZyc6
ICcwcHgnLCAnd29yZC1zcGFjaW5nJzogJzBweCd9LCBbJ0FCQ0JEQUVFVSswMDQ2VSswMDQ2R0dI
SScsIGUoJ3RzcGFuJywgeyAneG1sOmxhbmcnOiAnemgnfSwgWydJJ10pLCAnSkFLIEwnLCBlKCdh
bHRHbHlwaCcsIHsgJ3hsaW5rOmhyZWYnOiAnI2FzdHJhbCd9LCBbJ0EnXSksICdcdUQ4MDBcdURD
ODVBJ10pKTsNCg0KICAgICAgdmFyIHQgPSBkb2MuZG9jdW1lbnRFbGVtZW50Lmxhc3RDaGlsZDsN
Cg0KICAgICAgdmFyIGNoYXJhY3RlckRlc2NyaXB0aW9ucyA9IFsNCiAgICAgICAgImEgbm9ybWFs
IGNoYXJhY3RlciIsDQogICAgICAgICJ0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgdHdvLWNoYXJh
Y3RlciBnbHlwaCIsDQogICAgICAgICJ0aGUgc2Vjb25kIGNoYXJhY3RlciBvZiBhIHR3by1jaGFy
YWN0ZXIgZ2x5cGgiLA0KICAgICAgICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aGljaCBzaG91bGRu
J3QgYmUgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIHR3by1jaGFyYWN0ZXIgZ2x5cGgiLA0KICAg
ICAgICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aGljaCBzaG91bGRuJ3QgYmUgdGhlIHNlY29uZCBj
aGFyYWN0ZXIgb2YgYSB0d28tY2hhcmFjdGVyIGdseXBoIiwNCiAgICAgICAgImEgbm9ybWFsIGNo
YXJhY3Rlciwgd2hpY2ggaGFzIHNvbWUga2VybmluZyBhZnRlciBpdCIsDQogICAgICAgICJ0aGUg
Zmlyc3QgY2hhcmFjdGVyIG9mIGEgdHdvLWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFzIHNvbWUg
a2VybmluZyBiZWZvcmUgaXQiLA0KICAgICAgICAidGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgYSB0
d28tY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXMgc29tZSBrZXJuaW5nIGJlZm9yZSBpdCIsDQog
ICAgICAgICJ0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgc2l4LWNoYXJhY3RlciBnbHlwaCwgd2hp
Y2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFuZ2Ut
c3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGFmdGVyIGl0LCBidXQgdGhpcyBnbHlwaCBkb2Vz
IG5vdCIsDQogICAgICAgICJ0aGUgc2Vjb25kIGNoYXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIg
Z2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5nZSwgd2hlcmUg
dGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBhZnRlciBpdCwgYnV0IHRoaXMg
Z2x5cGggZG9lcyBub3QiLA0KICAgICAgICAidGhlIHRoaXJkIGNoYXJhY3RlciBvZiBhIHNpeC1j
aGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5n
ZSwgd2hlcmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBhZnRlciBpdCwg
YnV0IHRoaXMgZ2x5cGggZG9lcyBub3QiLA0KICAgICAgICAidGhlIGZvdXJ0aCBjaGFyYWN0ZXIg
b2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVu
aWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcg
YWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwNCiAgICAgICAgInRoZSBmaWZ0aCBj
aGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5zIHRvIGxvb2sg
bGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQgZ2x5cGggaGFz
IGtlcm5pbmcgYWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwNCiAgICAgICAgInRo
ZSBzaXh0aCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5z
IHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQg
Z2x5cGggaGFzIGtlcm5pbmcgYWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwNCiAg
ICAgICAgInRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGlj
aCBoYXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1z
cGVjaWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcgYmVmb3JlIGl0LCBidXQgdGhpcyBnbHlwaCBkb2Vz
IG5vdCIsDQogICAgICAgICJ0aGUgc2Vjb25kIGNoYXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIg
Z2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgVW5pY29kZSByYW5nZSwgd2hlcmUg
dGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2VybmluZyBiZWZvcmUgaXQsIGJ1dCB0aGlz
IGdseXBoIGRvZXMgbm90IiwNCiAgICAgICAgInRoZSB0aGlyZCBjaGFyYWN0ZXIgb2YgYSBzaXgt
Y2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFu
Z2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcgYmVmb3JlIGl0
LCBidXQgdGhpcyBnbHlwaCBkb2VzIG5vdCIsDQogICAgICAgICJ0aGUgZm91cnRoIGNoYXJhY3Rl
ciBvZiBhIHNpeC1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtlIGEg
VW5pY29kZSByYW5nZSwgd2hlcmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2Vybmlu
ZyBiZWZvcmUgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwNCiAgICAgICAgInRoZSBmaWZ0
aCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBwZW5zIHRvIGxv
b2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQgZ2x5cGgg
aGFzIGtlcm5pbmcgYmVmb3JlIGl0LCBidXQgdGhpcyBnbHlwaCBkb2VzIG5vdCIsDQogICAgICAg
ICJ0aGUgc2l4dGggY2hhcmFjdGVyIG9mIGEgc2l4LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFw
cGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lm
aWVkIGdseXBoIGhhcyBrZXJuaW5nIGJlZm9yZSBpdCwgYnV0IHRoaXMgZ2x5cGggZG9lcyBub3Qi
LA0KICAgICAgICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aGljaCBoYXMgc29tZSBrZXJuaW5nIGFm
dGVyIGl0IHRoYXQgaXMgc3BlY2lmaWVkIGJ5IGdseXBoIG5hbWUiLA0KICAgICAgICAiYSBub3Jt
YWwgY2hhcmFjdGVyLCB3aGljaCBoYXMgc29tZSBrZXJuaW5nIGJlZm9yZSBpdCB0aGF0IGlzIHNw
ZWNpZmllZCBieSBnbHlwaCBuYW1lIiwNCiAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hv
c2UgZ2x5cGggaXMgZ2l2ZW4gYnkgY2hpbGQgZ3JhcGhpY2FsIGNvbnRlbnQgb2YgdGhlIDxnbHlw
aD4gZWxlbWVudCIsDQogICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdob3NlIGdseXBoIHNo
b3VsZCBub3QgbWF0Y2ggdGhlIG9uZSB3aXRoIGEgbGFuZz1cIlwiIGF0dHJpYnV0ZSBvbiBpdCIs
DQogICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdob3NlIGdseXBoIHNob3VsZCBtYXRjaCB0
aGUgb25lIHdpdGggYSBsYW5nPVwiXCIgYXR0cmlidXRlIG9uIGl0IiwNCiAgICAgICAgImEgbm9y
bWFsIGNoYXJhY3Rlciwgd2hpY2ggaGFzIHNvbWUga2VybmluZyBhZnRlciBpdCB0aGF0IGlzIGVx
dWFsIHRvIHRoZSBhZHZhbmNlIG9mIHRoZSBjaGFyYWN0ZXIiLA0KICAgICAgICAiYSBub3JtYWwg
Y2hhcmFjdGVyLCB3aGljaCBoYXMgc29tZSBrZXJuaW5nIGJlZm9yZSBpdCB0aGF0IGlzIGVxdWFs
IHRvIHRoZSBhZHZhbmNlIG9mIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIiLA0KICAgICAgICAiYSBu
b3JtYWwgY2hhcmFjdGVyLCB3aG9zZSBnbHlwaCBzaG91bGQgbm90IG1hdGNoIHRoZSBvbmUgd2l0
aCBhbiBvcmllbnRhdGlvbj1cInZcIiBhdHRyaWJ1dGUgb24gaXQiLA0KICAgICAgICAiYSBzcGFj
ZSBjaGFyYWN0ZXIsIHdoaWNoIGhhcyBhIG1pc2xlYWRpbmcgZ2x5cGgtbmFtZT1cIlwiIGF0dHJp
YnV0ZSIsDQogICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdoaWNoIGhhcyBhIG1pc2xlYWRp
bmcgZ2x5cGgtbmFtZT1cIlwiIGF0dHJpYnV0ZSIsDQogICAgICAgICJhIG5vcm1hbCBjaGFyYWN0
ZXIsIHdob3NlIGdseXBoIGlzIGNob3NlbiB0byBiZSBhbm90aGVyIGJ5IHVzaW5nIDxhbHRHbHlw
aD4iLA0KICAgICAgICAiYSBjaGFyYWN0ZXIgbm90IGluIFBsYW5lIDAgKGhpZ2ggc3Vycm9nYXRl
IHBhaXIpIiwNCiAgICAgICAgImEgY2hhcmFjdGVyIG5vdCBpbiBQbGFuZSAwIChsb3cgc3Vycm9n
YXRlIHBhaXIpIiwNCiAgICAgICAgImEgbm9ybWFsIGNoYXJhY3RlciIsDQogICAgICBdOw0KDQog
ICAgICB2YXIgZXhwZWN0ZWRBZHZhbmNlcyA9IFsNCiAgICAgICAgMTAwMDAsICAgICAgIC8vIEEN
CiAgICAgICAgMCwgICAgICAgICAgIC8vIEJDIFswXQ0KICAgICAgICAyMDAsICAgICAgICAgLy8g
QkMgWzFdDQogICAgICAgIDMwMCwgICAgICAgICAvLyBCDQogICAgICAgIDExMDAsICAgICAgICAv
LyBEDQogICAgICAgIDEwMDAwLCAgICAgICAvLyBBDQogICAgICAgIDAsICAgICAgICAgICAvLyBF
RSBbMF0NCiAgICAgICAgMTMwMCwgICAgICAgIC8vIEVFIFsxXQ0KICAgICAgICAwLCAgICAgICAg
ICAgLy8gVSswMDQ2IFswXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFsxXQ0KICAg
ICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFsyXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8g
VSswMDQ2IFszXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFs0XQ0KICAgICAgICAx
NzAwLCAgICAgICAgLy8gVSswMDQ2IFs1XQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2
IFswXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFsxXQ0KICAgICAgICAwLCAgICAg
ICAgICAgLy8gVSswMDQ2IFsyXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFszXQ0K
ICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFs0XQ0KICAgICAgICAxNzAwLCAgICAgICAg
Ly8gVSswMDQ2IFs1XQ0KICAgICAgICAyMzAwLCAgICAgICAgLy8gRw0KICAgICAgICAyMzAwLCAg
ICAgICAgLy8gRw0KICAgICAgICAzMTAwLCAgICAgICAgLy8gSA0KICAgICAgICA0MzAwLCAgICAg
ICAgLy8gSQ0KICAgICAgICA0MTAwLCAgICAgICAgLy8gSSAoemgpDQogICAgICAgIDQ3MDAsICAg
ICAgICAvLyBKDQogICAgICAgIDEwMDAwLCAgICAgICAvLyBBDQogICAgICAgIDU5MDAsICAgICAg
ICAvLyBLDQogICAgICAgIDYxMDAsICAgICAgICAvLyA8c3BhY2U+DQogICAgICAgIDY3MDAsICAg
ICAgICAvLyBMDQogICAgICAgIDI5MDAsICAgICAgICAvLyBBICh1c2luZyAmI3gxMDA4NTsgYWx0
R2x5cGgpDQogICAgICAgIDAsICAgICAgICAgICAvLyAmI3gxMDA4NTsgaGlnaCBzdXJyb2dhdGUg
cGFpcg0KICAgICAgICAyOTAwLCAgICAgICAgLy8gJiN4MTAwODU7IGxvdyBzdXJyb2dhdGUgcGFp
cg0KICAgICAgICAxMDAwMCwgICAgICAgLy8gQQ0KICAgICAgXTsNCg0KICAgICAgdmFyIGV4cGVj
dGVkS2VybmluZyA9IFsNCiAgICAgICAgMCwgICAgICAgICAgIC8vIEENCiAgICAgICAgMCwgICAg
ICAgICAgIC8vIEJDIFswXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gQkMgWzFdDQogICAgICAg
IDAsICAgICAgICAgICAvLyBCDQogICAgICAgIDAsICAgICAgICAgICAvLyBEDQogICAgICAgIDIw
MCwgICAgICAgICAvLyBBDQogICAgICAgIDAsICAgICAgICAgICAvLyBFRSBbMF0NCiAgICAgICAg
MCwgICAgICAgICAgIC8vIEVFIFsxXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFsw
XQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFsxXQ0KICAgICAgICAwLCAgICAgICAg
ICAgLy8gVSswMDQ2IFsyXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFszXQ0KICAg
ICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFs0XQ0KICAgICAgICAwLCAgICAgICAgICAgLy8g
VSswMDQ2IFs1XQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFswXQ0KICAgICAgICAw
LCAgICAgICAgICAgLy8gVSswMDQ2IFsxXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2
IFsyXQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFszXQ0KICAgICAgICAwLCAgICAg
ICAgICAgLy8gVSswMDQ2IFs0XQ0KICAgICAgICAwLCAgICAgICAgICAgLy8gVSswMDQ2IFs1XQ0K
ICAgICAgICAyMDAsICAgICAgICAgLy8gRw0KICAgICAgICAwLCAgICAgICAgICAgLy8gRw0KICAg
ICAgICAwLCAgICAgICAgICAgLy8gSA0KICAgICAgICAwLCAgICAgICAgICAgLy8gSQ0KICAgICAg
ICAwLCAgICAgICAgICAgLy8gSSAoemgpDQogICAgICAgIC00NzAwLCAgICAgICAvLyBKDQogICAg
ICAgIDAsICAgICAgICAgICAvLyBBDQogICAgICAgIDAsICAgICAgICAgICAvLyBLDQogICAgICAg
IDAsICAgICAgICAgICAvLyA8c3BhY2U+DQogICAgICAgIDAsICAgICAgICAgICAvLyBMDQogICAg
ICAgIDAsICAgICAgICAgICAvLyBBICh1c2luZyAmI3gxMDA4NTsgYWx0R2x5cGgpDQogICAgICAg
IDAsICAgICAgICAgICAvLyAmI3gxMDA4NTsgaGlnaCBzdXJyb2dhdGUgcGFpcg0KICAgICAgICAw
LCAgICAgICAgICAgLy8gJiN4MTAwODU7IGxvdyBzdXJyb2dhdGUgcGFpcg0KICAgICAgICAwLCAg
ICAgICAgICAgLy8gQQ0KICAgICAgXTsNCg0KICAgICAgYXNzZXJ0RXF1YWxzKHQuZ2V0TnVtYmVy
T2ZDaGFycygpLCBleHBlY3RlZEFkdmFuY2VzLmxlbmd0aCwgJ1NWR1NWR1RleHRFbGVtZW50Lmdl
dE51bWJlck9mQ2hhcnMoKSBpbmNvcnJlY3QnKTsNCg0KICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b25zID0gWzBdOw0KICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZEFkdmFuY2VzLmxl
bmd0aDsgaSsrKQ0KICAgICAgICBleHBlY3RlZFBvc2l0aW9ucy5wdXNoKGV4cGVjdGVkUG9zaXRp
b25zW2ldICsgZXhwZWN0ZWRBZHZhbmNlc1tpXSArIGV4cGVjdGVkS2VybmluZ1tpXSk7DQoNCiAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbnMgPSBbXTsNCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dC5nZXROdW1iZXJPZkNoYXJzKCk7IGkrKykNCiAgICAgICAgYWN0dWFsUG9zaXRpb25zLnB1c2go
dC5nZXRTdGFydFBvc2l0aW9uT2ZDaGFyKGkpLngpOw0KICAgICAgYWN0dWFsUG9zaXRpb25zLnB1
c2godC5nZXRFbmRQb3NpdGlvbk9mQ2hhcih0LmdldE51bWJlck9mQ2hhcnMoKSAtIDEpLngpOw0K
DQogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkUG9zaXRpb25zLmxlbmd0aDsgaSsr
KSB7DQogICAgICAgIGlmIChleHBlY3RlZFBvc2l0aW9uc1tpXSAhPSBhY3R1YWxQb3NpdGlvbnNb
aV0pIHsNCiAgICAgICAgICB2YXIgcyA9ICJjaGFyYWN0ZXIgcG9zaXRpb24gIiArIGkgKyAiLCB3
aGljaCBpcyAiOw0KICAgICAgICAgIGlmIChpID09IDApIHsNCiAgICAgICAgICAgIHMgKz0gImJl
Zm9yZSAiICsgY2hhcmFjdGVyRGVzY3JpcHRpb25zWzBdOw0KICAgICAgICAgIH0gZWxzZSBpZiAo
aSA9PSBleHBlY3RlZFBvc2l0aW9ucy5sZW5ndGggLSAxKSB7DQogICAgICAgICAgICBzICs9ICJh
ZnRlciAiICsgY2hhcmFjdGVyRGVzY3JpcHRpb25zW2NoYXJhY3RlckRlc2NyaXB0aW9ucy5sZW5n
dGggLSAxXTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcyArPSAiYmV0d2VlbiAi
ICsgY2hhcmFjdGVyRGVzY3JpcHRpb25zW2kgLSAxXSArICIgYW5kICIgKyBjaGFyYWN0ZXJEZXNj
cmlwdGlvbnNbaV07DQogICAgICAgICAgfQ0KICAgICAgICAgIHMgKz0gIiwgaXMgIiArIGFjdHVh
bFBvc2l0aW9uc1tpXSArICIgYnV0IHNob3VsZCBiZSAiICsgZXhwZWN0ZWRQb3NpdGlvbnNbaV0g
KyAiLiI7DQogICAgICAgICAgZmFpbChzKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcmV0
dXJuIDU7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDgwOiByZW1v
dmUgdGhlIGlmcmFtZXMgYW5kIHRoZSBvYmplY3QNCiAgICAgIGFzc2VydCghKGt1bmdGdURlYXRo
R3JpcCA9PSBudWxsKSwgImt1bmdGdURlYXRoR3JpcCB3YXMgbnVsbCIpOw0KICAgICAgYXNzZXJ0
KCEoa3VuZ0Z1RGVhdGhHcmlwLnBhcmVudE5vZGUgPT0gbnVsbCksICJrdW5nRnVEZWF0aEdyaXAu
cGFyZW50Tm9kZSB3YXMgbnVsbCIpOw0KICAgICAga3VuZ0Z1RGVhdGhHcmlwLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoa3VuZ0Z1RGVhdGhHcmlwKTsNCiAgICAgIGt1bmdGdURlYXRoR3JpcCA9IG51
bGw7DQogICAgICAvLyBjaGVjayB0aGF0IHRoZSB4aHRtbCBmaWxlcyB3b3JrZWQgcmlnaHQNCiAg
ICAgIGFzc2VydChub3RpZmljYXRpb25zWyd4aHRtbC4xJ10sICJTY3JpcHQgaW4gWEhUTUwgZGlk
bid0IGV4ZWN1dGUiKTsNCiAgICAgIGFzc2VydCghbm90aWZpY2F0aW9uc1sneGh0bWwuMiddLCAi
WE1MIHdlbGwtZm9ybWVkbmVzcyBlcnJvciBkaWRuJ3Qgc3RvcCBzY3JpcHQgZnJvbSBleGVjdXRp
bmciKTsNCiAgICAgIGFzc2VydCghbm90aWZpY2F0aW9uc1sneGh0bWwuMyddLCAiU2NyaXB0IGV4
ZWN1dGVkIGRlc3BpdGUgaGF2aW5nIHdyb25nIG5hbWVzcGFjZSIpOw0KICAgICAgLy8gd2hpbGUg
d2UncmUgYXQgaXQsIGNoZWNrIHRoYXQgdGhlIGxpbmt0ZXN0IGlzIGxvYWRlZA0KICAgICAgLy8g
c2luY2UgdGhlIG90aGVyIGlmcmFtZXMgaGF2ZSBmb3JjaWJseSBsb2FkZWQgYnkgbm93LCB3ZSBh
c3N1bWUgdGhhdA0KICAgICAgLy8gdGhlcmUncyBubyB3YXkgdGhpcyBjYW4ndCBoYXZlIGxvYWRl
ZCBieSBub3cNCiAgICAgIC8vIChwcm9iYWJseSBhIHNhZmUgYmV0KQ0KICAgICAgdmFyIGEgPSBk
b2N1bWVudC5saW5rc1sxXTsNCiAgICAgIGFzc2VydCghKGEgPT0gbnVsbCksICJsaW5rdGVzdCB3
YXMgbnVsbCIpOw0KICAgICAgYXNzZXJ0KGEudGV4dENvbnRlbnQgPT0gIkxJTktURVNUIEZBSUxF
RCIsICJsaW5rdGVzdCBsaW5rIGNvdWxkbid0IGJlIGZvdW5kIik7DQogICAgICBpZiAoYS5oYXNB
dHRyaWJ1dGUoJ2NsYXNzJykpDQogICAgICAgIHJldHVybiAicmV0cnkiOyAvLyBsaW5rdGVzdCBv
bmxvYWQgZGlkbid0IGZpcmUgLS0gY291bGQgYmUgYSBuZXR3b3JraW5nIGlzc3VlLCBjaGVjayB0
aGF0IGZpcnN0DQogICAgICByZXR1cm4gNTsNCiAgICB9LA0KDQogICAgLy8gYnVja2V0IDY6IEVD
TUFTY3JpcHQNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDgxOiBsZW5ndGggb2Yg
YXJyYXlzIHdpdGggZWxpc2lvbnMgYXQgZW5kDQogICAgICB2YXIgdDEgPSBbLF07DQogICAgICB2
YXIgdDIgPSBbLCxdOw0KICAgICAgYXNzZXJ0RXF1YWxzKHQxLmxlbmd0aCwgMSwgIlssXSBkb2Vz
bid0IGhhdmUgbGVuZ3RoIDEiKTsNCiAgICAgIGFzc2VydEVxdWFscyh0Mi5sZW5ndGgsIDIsICJb
LCxdIGRvZXNuJ3QgaGF2ZSBsZW5ndGggMiIpOw0KICAgICAgcmV0dXJuIDY7DQogICAgfSwNCiAg
ICBmdW5jdGlvbiAoKSB7IA0KICAgICAgLy8gdGVzdCA4MjogbGVuZ3RoIG9mIGFycmF5cyB3aXRo
IGVsaXNpb25zIGluIHRoZSBtaWRkbGUNCiAgICAgIHZhciB0MyA9IFsnYScsICwgJ2MnXTsNCiAg
ICAgIGFzc2VydEVxdWFscyh0My5sZW5ndGgsIDMsICJbJ2EnLCwnYyddIGRvZXNuJ3QgaGF2ZSBs
ZW5ndGggMyIpOw0KICAgICAgYXNzZXJ0KDAgaW4gdDMsICJubyAwIGluIHQzIik7DQogICAgICBh
c3NlcnQoISgxIGluIHQzKSwgInVuZXhwZWN0ZWQgMSBpbiB0MyIpOw0KICAgICAgYXNzZXJ0KDIg
aW4gdDMsICJubyAyIGluIHQzIik7DQogICAgICBhc3NlcnRFcXVhbHModDNbMF0sICdhJywgInQz
WzBdIHdyb25nIik7DQogICAgICBhc3NlcnRFcXVhbHModDNbMl0sICdjJywgInQzWzJdIHdyb25n
Iik7DQogICAgICByZXR1cm4gNjsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8v
IHRlc3QgODM6IGFycmF5IG1ldGhvZHMNCiAgICAgIHZhciB4ID0gWydhJywgJ2InLCAnYyddOw0K
ICAgICAgYXNzZXJ0RXF1YWxzKHgudW5zaGlmdCgnQScsICdCJywgJ0MnKSwgNiwgImFycmF5LnVu
c2hpZnQoKSByZXR1cm5lZCB0aGUgd3JvbmcgdmFsdWUiKTsNCiAgICAgIHZhciBzID0geC5qb2lu
KHVuZGVmaW5lZCk7DQogICAgICBhc3NlcnRFcXVhbHMocywgJ0EsQixDLGEsYixjJywgImFycmF5
LmpvaW4odW5kZWZpbmVkKSB1c2VkIHdyb25nIHNlcGFyYXRvciIpOyAvLyBxdiAxNS40LjQuNToz
DQogICAgICByZXR1cm4gNjsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRl
c3QgODQ6IGNvbnZlcnRpbmcgbnVtYmVycyB0byBzdHJpbmdzDQogICAgICBhc3NlcnRFcXVhbHMo
KDAuMCkudG9GaXhlZCg0KSwgIjAuMDAwMCIsICJ0b0ZpeGVkKDQpIHdyb25nIGZvciAwIik7DQog
ICAgICBhc3NlcnRFcXVhbHMoKC0wLjApLnRvRml4ZWQoNCksICIwLjAwMDAiLCAidG9GaXhlZCg0
KSB3cm9uZyBmb3IgLTAiKTsNCiAgICAgIGFzc2VydEVxdWFscygoMC4wMDAwNikudG9GaXhlZCg0
KSwgIjAuMDAwMSIsICJ0b0ZpeGVkKDQpIHdyb25nIGZvciAwLjAwMDA2Iik7DQogICAgICBhc3Nl
cnRFcXVhbHMoKC0wLjAwMDA2KS50b0ZpeGVkKDQpLCAiLTAuMDAwMSIsICJ0b0ZpeGVkKDQpIHdy
b25nIGZvciAtMC4wMDAwNiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKCgwLjApLnRvRXhwb25lbnRp
YWwoNCksICIwLjAwMDBlKzAiLCAidG9FeHBvbmVudGlhbCg0KSB3cm9uZyBmb3IgMCIpOw0KICAg
ICAgYXNzZXJ0RXF1YWxzKCgtMC4wKS50b0V4cG9uZW50aWFsKDQpLCAiMC4wMDAwZSswIiwgInRv
RXhwb25lbnRpYWwoNCkgd3JvbmcgZm9yIC0wIik7DQogICAgICB2YXIgeCA9IDdlLTQ7DQogICAg
ICBhc3NlcnRFcXVhbHMoeC50b1ByZWNpc2lvbih1bmRlZmluZWQpLCB4LnRvU3RyaW5nKHVuZGVm
aW5lZCksICJ0b1ByZWNpc2lvbih1bmRlZmluZWQpIHdhcyB3cm9uZyIpOw0KICAgICAgcmV0dXJu
IDY7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDg1OiBzdHJpbmdz
IGFuZCBzdHJpbmctcmVsYXRlZCBvcGVyYXRpb25zDQogICAgICAvLyBzdWJzdHIoKSBhbmQgbmVn
YXRpdmUgbnVtYmVycw0KICAgICAgYXNzZXJ0RXF1YWxzKCJzY2F0aGluZyIuc3Vic3RyKC03LCAz
KSwgImNhdCIsICJzdWJzdHIoKSB3cm9uZyB3aXRoIG5lZ2F0aXZlIG51bWJlcnMiKTsNCiAgICAg
IHJldHVybiA2Ow0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCA4Njog
RGF0ZSB0ZXN0cyAtLSBtZXRob2RzIHBhc3NlZCBubyBhcmd1bWVudHMNCiAgICAgIHZhciBkID0g
bmV3IERhdGUoKTsNCiAgICAgIGFzc2VydChpc05hTihkLnNldE1pbGxpc2Vjb25kcygpKSwgImNh
bGxpbmcgc2V0TWlsbGlzZWNvbmRzKCkgd2l0aCBubyBhcmd1bWVudHMgZGlkbid0IHJlc3VsdCBp
biBOYU4iKTsNCiAgICAgIGFzc2VydChpc05hTihkKSwgImRhdGUgd2Fzbid0IG1hZGUgTmFOIik7
DQogICAgICBhc3NlcnQoaXNOYU4oZC5nZXREYXkoKSksICJkYXRlIHdhc24ndCBtYWRlIE5hTiIp
Ow0KICAgICAgcmV0dXJuIDY7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0
ZXN0IDg3OiBEYXRlIHRlc3RzIC0tIHllYXJzDQogICAgICB2YXIgZDEgPSBuZXcgRGF0ZShEYXRl
LlVUQyg5OS45LCA2KSk7DQogICAgICBhc3NlcnRFcXVhbHMoZDEuZ2V0VVRDRnVsbFllYXIoKSwg
MTk5OSwgIkRhdGUuVVRDKCkgZGlkbid0IGRvIHByb3BlciAxOTAwIHllYXIgb2Zmc2V0dGluZyIp
Ow0KICAgICAgdmFyIGQyID0gbmV3IERhdGUoOTguOSwgNik7DQogICAgICBhc3NlcnRFcXVhbHMo
ZDIuZ2V0RnVsbFllYXIoKSwgMTk5OCwgIm5ldyBEYXRlKCkgZGlkbid0IGRvIHByb3BlciAxOTAw
IHllYXIgb2Zmc2V0dGluZyIpOw0KICAgICAgcmV0dXJuIDY7DQogICAgfSwNCiAgICBmdW5jdGlv
biAoKSB7DQogICAgICAvLyB0ZXN0IDg4OiBFUzMgc2VjdGlvbiA3LjY6MyAodW5pY29kZSBlc2Nh
cGVzIGNhbid0IGJlIHVzZWQgdG8gcHV0IG5vbi1pZGVudGlmaWVyIGNoYXJhY3RlcnMgaW50byBp
ZGVudGlmaWVycykNCiAgICAgIC8vIGFuZCB0aGVyZSdzIG5vIG90aGVyIHBsYWNlIGZvciB0aGVt
IGluIHRoZSBzeW50YXggKG90aGVyIHRoYW4gc3RyaW5ncywgb2YgY291cnNlKQ0KICAgICAgdmFy
IG9rID0gZmFsc2U7DQogICAgICB0cnkgew0KICAgICAgICBldmFsKCJ2YXIgdGVzdCA9IHsgfTtc
bnRlc3QuaT0gMDtcbnRlc3QuaVxcdTAwMmI9IDE7XG50ZXN0Lmk7XG4iKTsNCiAgICAgIH0gY2F0
Y2ggKGUpIHsNCiAgICAgICAgb2sgPSB0cnVlOw0KICAgICAgfQ0KICAgICAgYXNzZXJ0KG9rLCAi
XFx1MDAyYiB3YXMgbm90IGNvbnNpZGVyZWQgYSBwYXJzZSBlcnJvciBpbiBzY3JpcHQiKTsNCiAg
ICAgIHJldHVybiA2Ow0KICAgIH0sDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gdGVzdCA4
OTogUmVndWxhciBFeHByZXNzaW9ucw0KICAgICAgdmFyIG9rID0gdHJ1ZTsNCiAgICAgIC8vIGVt
cHR5IGNsYXNzZXMgaW4gcmVnZXhwcw0KICAgICAgdHJ5IHsNCiAgICAgICAgZXZhbCgiL1RBW10p
XS8uZXhlYygnVEFdJykiKTsNCiAgICAgICAgLy8gSlMgcmVnZXhwcyBhcmVuJ3QgbGlrZSBQZXJs
IHJlZ2V4cHMsIGlmIHRoZWlyIGNoYXJhY3Rlcg0KICAgICAgICAvLyBjbGFzc2VzIHN0YXJ0IHdp
dGggYSBdIHRoYXQgbWVhbnMgdGhleSdyZSBlbXB0eS4gU28gdGhpcw0KICAgICAgICAvLyBpcyBh
IHN5bnRheCBlcnJvcjsgaWYgd2UgZ2V0IGhlcmUgaXQncyBhIGJ1Zy4NCiAgICAgICAgb2sgPSBm
YWxzZTsNCiAgICAgIH0gY2F0Y2ggKGUpIHsgfQ0KICAgICAgYXNzZXJ0KG9rLCAib3JwaGFuZWQg
YnJhY2tldCBub3QgY29uc2lkZXJlZCBwYXJzZSBlcnJvciBpbiByZWd1bGFyIGV4cHJlc3Npb24g
bGl0ZXJhbCIpOw0KICAgICAgdHJ5IHsNCiAgICAgICAgaWYgKGV2YWwoIi9bXS8uZXhlYygnJyki
KSkNCiAgICAgICAgICBvayA9IGZhbHNlOw0KICAgICAgfSBjYXRjaCAoZSkgew0KICAgICAgICBv
ayA9IGZhbHNlOw0KICAgICAgfQ0KICAgICAgYXNzZXJ0KG9rLCAiL1tdLyBlaXRoZXIgZmFpbGVk
IHRvIHBhcnNlIG9yIG1hdGNoZWQgc29tZXRoaW5nIik7DQogICAgICByZXR1cm4gNjsNCiAgICB9
LA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgOTA6IFJlZ3VsYXIgRXhwcmVzc2lv
bnMNCiAgICAgIC8vIG5vdCBiYWNrIHJlZmVyZW5jZXMuDQogICAgICBhc3NlcnQoISgvKDEpXDAo
MikvLnRlc3QoIjEyIikpLCAiTlVMIGluIHJlZ2V4cCBpbmNvcnJlY3RseSBpZ25vcmVkIik7DQog
ICAgICBhc3NlcnQoKC8oMSlcMCgyKS8udGVzdCgiMSIgKyAiXDAiICsgIjIiKSksICJOVUwgaW4g
cmVnZXhwIGRpZG4ndCBtYXRjaCBjb3JyZWN0bHkiKTsNCiAgICAgIGFzc2VydCghKC8oMSlcMCgy
KS8udGVzdCgiMVwwMiIpKSwgIm9jdGFsIDIgdW5leHBlY3RlZGx5IG1hdGNoZWQgTlVMIik7DQog
ICAgICBhc3NlcnRFcXVhbHMobnVsbEluUmVnZXhwQXJndW1lbnRSZXN1bHQsICJwYXNzZWQiLCAi
ZmFpbGVkIC8vLnRlc3QoKSBjaGVjayIpOyAvLyBub3RoaW5nIHRvIHNlZSBoZXJlLCBtb3ZlIGFs
b25nIG5vdw0KICAgICAgLy8gYmFjayByZWZlcmVuY2UgdG8gZnV0dXJlIGNhcHR1cmUNCiAgICAg
IHZhciB4ID0gLyhcMykoXDEpKGEpLy5leGVjKCdjYXQnKTsgLy8gdGhlIFwzIG1hdGNoZXMgdGhl
IGVtcHR5IHN0cmluZywgcXYuIEVTMzoxNS4xMC4yLjkNCiAgICAgIGFzc2VydCh4LCAiLyhcXDMp
KFxcMSkoYSkvIGZhaWxlZCB0byBtYXRjaCAnY2F0JyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHgu
bGVuZ3RoLCA0LCAiLyhcXDMpKFxcMSkoYSkvIGZhaWxlZCB0byByZXR1cm4gZm91ciBjb21wb25l
bnRzIik7DQogICAgICBhc3NlcnRFcXVhbHMoeFswXSwgImEiLCAiLyhcXDMpKFxcMSkoYSkvIGZh
aWxlZCB0byBmaW5kICdhJyBpbiAnY2F0JyIpOw0KICAgICAgYXNzZXJ0KHhbMV0gPT09ICIiLCAi
LyhcXDMpKFxcMSkoYSkvIGZhaWxlZCB0byBmaW5kICcnIGluICdjYXQnIGFzIGZpcnN0IHBhcnQi
KTsNCiAgICAgIGFzc2VydCh4WzJdID09PSAiIiwgIi8oXFwzKShcXDEpKGEpLyBmYWlsZWQgdG8g
ZmluZCAnJyBpbiAnY2F0JyBhcyBzZWNvbmQgcGFydCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHhb
M10sICJhIiwgIi8oXFwzKShcXDEpKGEpLyBmYWlsZWQgdG8gZmluZCAnYScgaW4gJ2NhdCcgYXMg
dGhpcmQgcGFydCIpOw0KICAgICAgLy8gbmVnYXRpdmUgbG9va2FoZWFkDQogICAgICB4ID0gLyg/
ISh0ZXh0KSkodGUudCkvLmV4ZWMoInRleHQgdGVzdGluZyIpOw0KICAgICAgYXNzZXJ0RXF1YWxz
KHgubGVuZ3RoLCAzLCAibmVnYXRpdmUgbG9va2FoZWFkIHRlc3QgZmFpbGVkIHRvIHJldHVybiB0
aGUgcmlnaHQgbnVtYmVyIG9mIGJpdHMiKTsNCiAgICAgIGFzc2VydEVxdWFscyh4WzBdLCAidGVz
dCIsICJuZWdhdGl2ZSBsb29rYWhlYWQgdGVzdCBmYWlsZWQgdG8gZmluZCB0aGUgcmlnaHQgdGV4
dCIpOw0KICAgICAgYXNzZXJ0KHhbMV0gPT09IHVuZGVmaW5lZCwgIm5lZ2F0aXZlIGxvb2thaGVh
ZCB0ZXN0IGZhaWxlZCB0byByZXR1cm4gdW5kZWZpbmVkIGZvciBuZWdhdGl2ZSBsb29rYWhlYWQg
Y2FwdHVyZSIpOw0KICAgICAgYXNzZXJ0KHhbMl0gPT09ICJ0ZXN0IiwgIm5lZ2F0aXZlIGxvb2th
aGVhZCB0ZXN0IGZhaWxlZCB0byBmaW5kIHRoZSByaWdodCBzZWNvbmQgY2FwdHVyZSIpOw0KICAg
ICAgcmV0dXJuIDY7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDkx
OiBjaGVjayB0aGF0IHByb3BlcnRpZXMgYXJlIGVudW1lcmFibGUgYnkgZGVmYXVsdA0KICAgICAg
dmFyIHRlc3QgPSB7DQogICAgICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbigpIHsgcmV0dXJuIDE7
IH0sDQogICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuIDI7IH0sDQogICAgICAg
IHRvTG9jYWxlU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuIDM7IH0sDQogICAgICAgIHZhbHVl
T2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gNDsgfSwNCiAgICAgICAgaGFzT3duUHJvcGVydHk6IGZ1
bmN0aW9uKCkgeyByZXR1cm4gNTsgfSwNCiAgICAgICAgaXNQcm90b3R5cGVPZjogZnVuY3Rpb24o
KSB7IHJldHVybiA2OyB9LA0KICAgICAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZTogZnVuY3Rpb24o
KSB7IHJldHVybiA3OyB9LA0KICAgICAgICBwcm90b3R5cGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4g
ODsgfSwNCiAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbigpIHsgcmV0dXJuIDk7IH0sDQogICAgICAg
IHVuaXF1ZTogZnVuY3Rpb24oKSB7IHJldHVybiAxMDsgfQ0KICAgICAgfTsNCiAgICAgIHZhciBy
ZXN1bHRzID0gW107DQogICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0ZXN0KQ0KICAgICAgICBy
ZXN1bHRzLnB1c2goW3Rlc3RbcHJvcGVydHldKCksIHByb3BlcnR5XSk7DQogICAgICByZXN1bHRz
LnNvcnQoZnVuY3Rpb24oYSwgYikgew0KICAgICAgICBpZiAoYVswXSA8IGJbMF0pIHJldHVybiAt
MTsNCiAgICAgICAgaWYgKGFbMF0gPiBiWzBdKSByZXR1cm4gMTsNCiAgICAgICAgcmV0dXJuIDA7
DQogICAgICB9KTsNCiAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRzLmxlbmd0aCwgMTAsICJtaXNz
aW5nIHByb3BlcnRpZXMiKTsNCiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCAxMDsg
aW5kZXggKz0gMSkNCiAgICAgICAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNbaW5kZXhdWzBdLCBpbmRl
eCsxLCAib3JkZXIgd3JvbmcgYXQgcmVzdWx0c1siK2luZGV4KyJdID09ICIpOw0KICAgICAgdmFy
IGluZGV4ID0gMDsNCiAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRzW2luZGV4KytdWzFdLCAiY29u
c3RydWN0b3IiLCAiZmFpbGVkIHRvIGZpbmQgY29uc3RydWN0b3IgaW4gZXhwZWN0ZWQgcG9zaXRp
b24iKTsNCiAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRzW2luZGV4KytdWzFdLCAidG9TdHJpbmci
LCAiZmFpbGVkIHRvIGZpbmQgdG9TdHJpbmcgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsNCiAgICAg
IGFzc2VydEVxdWFscyhyZXN1bHRzW2luZGV4KytdWzFdLCAidG9Mb2NhbGVTdHJpbmciLCAiZmFp
bGVkIHRvIGZpbmQgdG9Mb2NhbGVTdHJpbmcgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsNCiAgICAg
IGFzc2VydEVxdWFscyhyZXN1bHRzW2luZGV4KytdWzFdLCAidmFsdWVPZiIsICJmYWlsZWQgdG8g
ZmluZCB2YWx1ZU9mIGluIGV4cGVjdGVkIHBvc2l0aW9uIik7DQogICAgICBhc3NlcnRFcXVhbHMo
cmVzdWx0c1tpbmRleCsrXVsxXSwgImhhc093blByb3BlcnR5IiwgImZhaWxlZCB0byBmaW5kIGhh
c093blByb3BlcnR5IGluIGV4cGVjdGVkIHBvc2l0aW9uIik7DQogICAgICBhc3NlcnRFcXVhbHMo
cmVzdWx0c1tpbmRleCsrXVsxXSwgImlzUHJvdG90eXBlT2YiLCAiZmFpbGVkIHRvIGZpbmQgaXNQ
cm90b3R5cGVPZiBpbiBleHBlY3RlZCBwb3NpdGlvbiIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHJl
c3VsdHNbaW5kZXgrK11bMV0sICJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsICJmYWlsZWQgdG8gZmlu
ZCBwcm9wZXJ0eUlzRW51bWVyYWJsZSBpbiBleHBlY3RlZCBwb3NpdGlvbiIpOw0KICAgICAgYXNz
ZXJ0RXF1YWxzKHJlc3VsdHNbaW5kZXgrK11bMV0sICJwcm90b3R5cGUiLCAiZmFpbGVkIHRvIGZp
bmQgcHJvdG90eXBlIGluIGV4cGVjdGVkIHBvc2l0aW9uIik7DQogICAgICBhc3NlcnRFcXVhbHMo
cmVzdWx0c1tpbmRleCsrXVsxXSwgImxlbmd0aCIsICJmYWlsZWQgdG8gZmluZCBsZW5ndGggaW4g
ZXhwZWN0ZWQgcG9zaXRpb24iKTsNCiAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRzW2luZGV4Kytd
WzFdLCAidW5pcXVlIiwgImZhaWxlZCB0byBmaW5kIHVuaXF1ZSBpbiBleHBlY3RlZCBwb3NpdGlv
biIpOw0KICAgICAgcmV0dXJuIDY7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAv
LyB0ZXN0IDkyOiBpbnRlcm5hbCBwcm9wZXJ0aWVzIG9mIEZ1bmN0aW9uIG9iamVjdHMNCiAgICAg
IC8vIGNvbnN0cnVjdG9yIGlzIG5vdCBSZWFkT25seQ0KICAgICAgdmFyIGYxID0gZnVuY3Rpb24g
KCkgeyAxIH07DQogICAgICBmMS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAiaGVsbG8gd29ybGQi
Ow0KICAgICAgdmFyIGYxaSA9IG5ldyBmMSgpOw0KICAgICAgYXNzZXJ0KGYxaS5jb25zdHJ1Y3Rv
ciA9PT0gImhlbGxvIHdvcmxkIiwgIkZ1bmN0aW9uIG9iamVjdCdzIHByb3RvdHlwZSdzIGNvbnN0
cnVjdG9yIHdhcyBSZWFkT25seSIpOw0KICAgICAgLy8gY29uc3RydWN0b3IgaXMgRG9udEVudW0g
KGluZGVlZCwgbm8gcHJvcGVydGllcyBhdCBhbGwgb24gYSBuZXcgRnVuY3Rpb24gb2JqZWN0KQ0K
ICAgICAgdmFyIGYyID0gZnVuY3Rpb24gKCkgeyAyIH07DQogICAgICB2YXIgZjJpID0gbmV3IGYy
KCk7DQogICAgICB2YXIgY291bnQgPSAwOw0KICAgICAgZm9yICh2YXIgcHJvcGVydHkgaW4gZjJp
KSB7DQogICAgICAgIGFzc2VydChwcm9wZXJ0eSAhPSAiY29uc3RydWN0b3IiLCAiRnVuY3Rpb24g
b2JqZWN0J3MgcHJvdG90eXBlJ3MgY29uc3RydWN0b3Igd2FzIG5vdCBEb250RW51bSIpOw0KICAg
ICAgICBjb3VudCArPSAxOw0KICAgICAgfQ0KICAgICAgYXNzZXJ0RXF1YWxzKGNvdW50LCAwLCAi
RnVuY3Rpb24gb2JqZWN0IGhhZCB1bmV4cGVjdGVkIHByb3BlcnRpZXMiKTsNCiAgICAgIC8vIGNv
bnN0cnVjdG9yIGlzIG5vdCBEb250RGVsZXRlDQogICAgICB2YXIgZjMgPSBmdW5jdGlvbiAoYSwg
YikgeyAzIH07DQogICAgICBkZWxldGUgZjMucHJvdG90eXBlLmNvbnN0cnVjdG9yOw0KICAgICAg
dmFyIGYzaSA9IG5ldyBmMygpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGYzaS5jb25zdHJ1Y3Rvciwg
T2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgIkZ1bmN0aW9uIG9iamVjdCdzIHByb3RvdHlw
ZSdzIGNvbnN0cnVjdG9yIHdhcyBEb250RGVsZXRlIChvciBnb3QgbWFnaWNhbGx5IHJlcGxhY2Vk
KSIpOw0KICAgICAgcmV0dXJuIDY7DQogICAgfSwNCiAgICBmdW5jdGlvbiAoKSB7DQogICAgICAv
LyB0ZXN0IDkzOiBGdW5jdGlvbkV4cHJlc3Npb24gc2VtYW50aWNzDQogICAgICB2YXIgZnVuY3Rl
c3Q7DQogICAgICB2YXIgdmFydGVzdCA9IDA7DQogICAgICB2YXIgdmFsdWUgPSAoZnVuY3Rpb24g
ZnVuY3Rlc3QoYXJnKSB7DQogICAgICAgIGlmIChhcmcpDQogICAgICAgICAgcmV0dXJuIDE7DQog
ICAgICAgIHZhcnRlc3QgPSAxOw0KICAgICAgICBmdW5jdGVzdCA9IGZ1bmN0aW9uIChhcmcpIHsg
cmV0dXJuIDI7IH07IC8vIHRoaXMgbGluZSBkb2VzIG5vdGhpbmcgYXMgJ2Z1bmN0ZXN0JyBpcyBS
ZWFkT25seSBoZXJlDQogICAgICAgIHJldHVybiBmdW5jdGVzdCh0cnVlKTsgLy8gdGhpcyBpcyB0
aGVyZWZvcmUgdGFpbCByZWN1cnNpb24gYW5kIHJldHVybnMgMQ0KICAgICAgfSkoZmFsc2UpOw0K
ICAgICAgYXNzZXJ0RXF1YWxzKHZhcnRlc3QsIDEsICJydWxlcyBpbiAxMC4xLjQgbm90IGZvbGxv
d2VkIGluIEZ1bmN0aW9uQm9keSIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHZhbHVlLCAxLCAic2Vt
YW50aWNzIG9mIEZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gSWRlbnRpZmllciAuLi4gbm90
IGZvbGxvd2VkIik7DQogICAgICBhc3NlcnQoIWZ1bmN0ZXN0LCAiUHJvcGVydHkgaW4gc3RlcCA0
IG9mIEZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gSWRlbnRpZmllciAuLi4gbGVha2VkIHRv
IHBhcmVudCBzY29wZSIpOw0KICAgICAgcmV0dXJuIDY7DQogICAgfSwNCiAgICBmdW5jdGlvbiAo
KSB7DQogICAgICAvLyB0ZXN0IDk0OiBleGNlcHRpb24gc2NvcGUNCiAgICAgIHZhciB0ZXN0ID0g
J3Bhc3MnOw0KICAgICAgdHJ5IHsNCiAgICAgICAgdGhyb3cgJ2ZhaWwnOw0KICAgICAgfSBjYXRj
aCAodGVzdCkgew0KICAgICAgICB0ZXN0ICs9ICdpbmcnOw0KICAgICAgfQ0KICAgICAgYXNzZXJ0
RXF1YWxzKHRlc3QsICdwYXNzJywgJ291dGVyIHNjb3BlIHBvaXNvbmVkIGJ5IGV4Y2VwdGlvbiBj
YXRjaHt9IGJsb2NrJyk7DQogICAgICByZXR1cm4gNjsNCiAgICB9LA0KICAgIGZ1bmN0aW9uICgp
IHsNCiAgICAgIC8vIHRlc3QgOTU6IHR5cGVzIG9mIGV4cHJlc3Npb25zDQogICAgICB2YXIgYSA9
IFtdOyB2YXIgczsNCiAgICAgIHMgPSBhLmxlbmd0aCA9ICIyMTQ3NDgzNjQ4IjsNCiAgICAgIGFz
c2VydEVxdWFscyh0eXBlb2YgcywgInN0cmluZyIsICJ0eXBlIG9mIHxcIjIxNDc0ODM2NDhcInwg
aXMgbm90IHN0cmluZyIpOw0KICAgICAgcmV0dXJuIDY7DQogICAgfSwNCiAgICBmdW5jdGlvbiAo
KSB7DQogICAgICAvLyB0ZXN0IDk2OiBlbmNvZGVVUkkoKSBhbmQgZW5jb2RlVVJJQ29tcG9uZW50
KCkgYW5kIG51bGwgYnl0ZXMNCiAgICAgIGFzc2VydEVxdWFscyhlbmNvZGVVUklDb21wb25lbnQo
U3RyaW5nLmZyb21DaGFyQ29kZSgwKSksICclMDAnLCAiZW5jb2RlVVJJQ29tcG9uZW50IGZhaWxl
ZCB0byBlbmNvZGUgVSswMDAwIik7DQogICAgICBhc3NlcnRFcXVhbHMoZW5jb2RlVVJJKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMCkpLCAnJTAwJywgImVuY29kZVVSSSBmYWlsZWQgdG8gZW5jb2RlIFUr
MDAwMCIpOw0KICAgICAgcmV0dXJuIDY7DQogICAgfSwNCg0KICAgIC8vIFVSSXMNCiAgICBmdW5j
dGlvbiAoKSB7DQogICAgICAvLyB0ZXN0IDk3OiBkYXRhOiBVUkkgcGFyc2luZw0KICAgICAgYXNz
ZXJ0RXF1YWxzKGQxLCAib25lIiwgImRhdGE6IGZhaWxlZCBhcyBlc2NhcGVkIik7DQogICAgICBh
c3NlcnRFcXVhbHMoZDIsICJ0d28iLCAiZGF0YTogZmFpbGVkIGFzIGJhc2U2NCIpOw0KICAgICAg
YXNzZXJ0RXF1YWxzKGQzLCAidGhyZWUiLCAiZGF0YTogZmFpbGVkIGFzIGJhc2U2NCBlc2NhcGVk
Iik7DQogICAgICBhc3NlcnRFcXVhbHMoZDQsICJmb3VyIiwgImRhdGE6IGZhaWxlZCBhcyBiYXNl
NjQgd2l0aCBzcGFjZXMiKTsNCiAgICAgIGFzc2VydEVxdWFscyhkNSwgImZpdmUncyIsICJkYXRh
OiBmYWlsZWQgd2l0aCBiYWNrc2xhc2giKTsNCiAgICAgIHJldHVybiA3Ow0KICAgIH0sDQoNCiAg
ICAvLyBYSFRNTA0KICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgIC8vIHRlc3QgOTg6IFhIVE1MIGFu
ZCB0aGUgRE9NDQogICAgICAvLyAoc3BlY2lhbCB0ZXN0KQ0KICAgICAgdmFyIGRvY3R5cGUgPSBk
b2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoImh0bWwiLCAiLS8vVzND
Ly9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iLCAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwx
L0RURC94aHRtbDEtc3RyaWN0LmR0ZCIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKGRvY3R5cGUub3du
ZXJEb2N1bWVudCwgbnVsbCwgImRvY3R5cGUncyBvd25lckRvY3VtZW50IHdhcyB3cm9uZyBhZnRl
ciBjcmVhdGlvbiIpOw0KICAgICAgdmFyIGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNy
ZWF0ZURvY3VtZW50KCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgImh0bWwiLCBkb2N0
eXBlKTsNCiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJoZWFkIikpOw0KICAgICAg
ZG9jLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgImJvZHkiKSk7DQogICAgICB2YXIgdCA9IGRvYy5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAidGl0bGUiKTsN
CiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZCh0KTsNCiAg
ICAgIC8vIG9rIHdlIGhhdmUgYSBjb25mb3JtaW5nIFhIVE1MMSBkb2MgaW4gfGRvY3wgbm93Lg0K
ICAgICAgYXNzZXJ0RXF1YWxzKGRvY3R5cGUub3duZXJEb2N1bWVudCwgZG9jLCAiZG9jdHlwZSdz
IG93bmVyRG9jdW1lbnQgZGlkbid0IGNoYW5nZSB3aGVuIGl0IHdhcyBhc3NpZ25lZCB0byBhbm90
aGVyIGRvY3VtZW50Iik7DQogICAgICBhc3NlcnRFcXVhbHMoZG9jLnRpdGxlLCAiIiwgImRvY3Vt
ZW50IGhhZCB1bmV4cGVjdGVkIHRpdGxlIik7DQogICAgICB0LnRleHRDb250ZW50ID0gIlNwYXJy
b3ciOw0KICAgICAgYXNzZXJ0RXF1YWxzKGRvYy50aXRsZSwgIlNwYXJyb3ciLCAiZG9jdW1lbnQu
dGl0bGUgZGlkIG5vdCB1cGRhdGUgZHluYW1pY2FsbHkiKTsNCiAgICAgIGRvYy5ib2R5LmFwcGVu
ZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi
LCAiZm9ybSIpKTsNCiAgICAgIGFzc2VydEVxdWFscyhkb2MuZm9ybXMubGVuZ3RoLCAxLCAiZG9j
dW1lbnQuZm9ybXMgbm90IHVwZGF0ZWQgYWZ0ZXIgaW5zZXJ0aW5nIGEgZm9ybSIpOw0KICAgICAg
cmV0dXJuIDc7DQogICAgfSwNCg0KICAgIC8vIFNhbml0eQ0KICAgIGZ1bmN0aW9uICgpIHsNCiAg
ICAgIC8vIHRlc3QgOTk6IGNoZWNrIGZvciB0aGUgd2VpcmRlc3QgYnVnIGV2ZXINCiAgICAgIHZh
ciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KICAgICAgYS5zZXRBdHRyaWJ1dGUo
J2hyZWYnLCAnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8nKTsNCiAgICAgIGEuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3d3dy5leGFtcGxlLmNvbScpKTsNCiAgICAgIGEuaHJl
ZiA9ICdodHRwOi8vaGl4aWUuY2gvJzsNCiAgICAgIGFzc2VydEVxdWFscyhhLmZpcnN0Q2hpbGQu
ZGF0YSwgInd3dy5leGFtcGxlLmNvbSIsICJzYW5pdHkgZGlkIG5vdCBwcmV2YWlsIik7DQogICAg
ICBhLmhyZWYgPSAnaHR0cDovL2RhbW93bW93LmNvbS8nOw0KICAgICAgYXNzZXJ0RXF1YWxzKGEu
Zmlyc3RDaGlsZC5kYXRhLCAid3d3LmV4YW1wbGUuY29tIiwgImZpbmFsIHRlc3QgZmFpbGVkIik7
DQogICAgICByZXR1cm4gNzsNCiAgICB9DQoNCiAgXTsNCiAgdmFyIGxvZyA9ICcnOw0KICB2YXIg
ZGVsYXkgPSAxMDsNCiAgdmFyIHNjb3JlID0gMCwgaW5kZXggPSAwLCByZXRyeSA9IDAsIGVycm9y
cyA9IDA7DQogIGZ1bmN0aW9uIHVwZGF0ZSgpIHsNCiAgICB2YXIgc3BhbiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzY29yZScpOyAvLyBub3QgY2FjaGVkIGJ5IEpTDQogICAgc3Bhbi5uZXh0
U2libGluZy5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7IC8vIG5vLW9wIGFmdGVyIGZpcnN0IGxv
b3ANCiAgICBzcGFuLm5leHRTaWJsaW5nLm5leHRTaWJsaW5nLmZpcnN0Q2hpbGQuZGF0YSA9IHRl
c3RzLmxlbmd0aDsgLy8gbm8tb3AgYWZ0ZXIgZmlyc3QgbG9vcA0KICAgIGlmIChpbmRleCA8IHRl
c3RzLmxlbmd0aCkgew0KICAgICAgdmFyIHplcm9QYWRkZWRJbmRleCA9IGluZGV4IDwgMTAgPyAn
MCcgKyBpbmRleCA6IGluZGV4Ow0KICAgICAgdHJ5IHsNCiAgICAgICAgdmFyIGJlZm9yZVRlc3Qg
PSBuZXcgRGF0ZSgpOw0KICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdHNbaW5kZXhdKCk7DQogICAg
ICAgIHZhciBlbGFwc2VkVGVzdCA9IG5ldyBEYXRlKCkgLSBiZWZvcmVUZXN0Ow0KICAgICAgICBp
ZiAocmVzdWx0ID09ICJyZXRyeSIpIHsNCiAgICAgICAgICAvLyBzb21lIHRlc3RzIHVzZXMgdGhp
cyBtYWdpY2FsIG1lY2hhbmlzbSB0byB3YWl0IGZvciBzdXBwb3J0IGZpbGVzIHRvIGxvYWQNCiAg
ICAgICAgICAvLyB3ZSB3aWxsIGdpdmUgdGhpcyB0ZXN0IDUwMCBhdHRlbXB0cyAoNTAwMG1zKSBi
ZWZvcmUgYWJvcnRpbmcNCiAgICAgICAgICByZXRyeSArPSAxOw0KICAgICAgICAgIGlmIChyZXRy
eSA8IDUwMCkgew0KICAgICAgICAgICAgc2V0VGltZW91dCh1cGRhdGUsIGRlbGF5KTsNCiAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgICB9DQogICAgICAgICAgZmFpbCgidGltZW91dCAtLSBj
b3VsZCBiZSBhIG5ldHdvcmtpbmcgaXNzdWUiKTsNCiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQp
IHsNCiAgICAgICAgICB2YXIgYnVja2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tl
dCcgKyByZXN1bHQpOw0KICAgICAgICAgIGlmIChidWNrZXQpDQogICAgICAgICAgICBidWNrZXQu
Y2xhc3NOYW1lICs9ICdQJzsNCiAgICAgICAgICBzY29yZSArPSAxOw0KICAgICAgICAgIGlmIChy
ZXRyeSA+IDApIHsNCiAgICAgICAgICAgIGVycm9ycyArPSAxOw0KICAgICAgICAgICAgbG9nICs9
ICJUZXN0ICIgKyB6ZXJvUGFkZGVkSW5kZXggKyAiIHBhc3NlZCwgYnV0IHRvb2sgIiArIHJldHJ5
ICsgIiBhdHRlbXB0cyAobGVzcyB0aGFuIHBlcmZlY3QpLlxuIjsNCiAgICAgICAgICB9IGVsc2Ug
aWYgKGVsYXBzZWRUZXN0ID4gMzMpIHsgLy8gMzBmcHMNCiAgICAgICAgICAgIGVycm9ycyArPSAx
Ow0KICAgICAgICAgICAgbG9nICs9ICJUZXN0ICIgKyB6ZXJvUGFkZGVkSW5kZXggKyAiIHBhc3Nl
ZCwgYnV0IHRvb2sgIiArIGVsYXBzZWRUZXN0ICsgIm1zIChsZXNzIHRoYW4gMzBmcHMpXG4iOw0K
ICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBmYWlsKCJubyBlcnJvciBt
ZXNzYWdlIik7DQogICAgICAgIH0NCiAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgdmFyIHM7
DQogICAgICAgIGlmIChlLm1lc3NhZ2UpDQogICAgICAgICAgcyA9IGUubWVzc2FnZS5yZXBsYWNl
KC9ccyskLywgIiIpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgcyA9IGU7DQogICAgICAgIGVy
cm9ycyArPSAxOw0KICAgICAgICBsb2cgKz0gIlRlc3QgIiArIHplcm9QYWRkZWRJbmRleCArICIg
ZmFpbGVkOiAiICsgcyArICJcbiI7DQogICAgICB9Ow0KICAgICAgcmV0cnkgPSAwOw0KICAgICAg
aW5kZXggKz0gMTsNCiAgICAgIHNwYW4uZmlyc3RDaGlsZC5kYXRhID0gc2NvcmU7DQogICAgICBz
ZXRUaW1lb3V0KHVwZGF0ZSwgZGVsYXkpOw0KICAgIH0gZWxzZSB7DQogICAgICB2YXIgZW5kVGlt
ZSA9IG5ldyBEYXRlKCk7DQogICAgICB2YXIgZWxhcHNlZFRpbWUgPSAoKGVuZFRpbWUgLSBzdGFy
dFRpbWUpIC0gKGRlbGF5ICogdGVzdHMubGVuZ3RoKSkgLyAxMDAwOw0KICAgICAgbG9nICs9ICJU
b3RhbCBlbGFwc2VkIHRpbWU6ICIgKyBlbGFwc2VkVGltZS50b0ZpeGVkKDIpICsgInMiOw0KICAg
ICAgaWYgKGVycm9ycyA9PSAwKQ0KICAgICAgICBsb2cgKz0gIlxuTm8gSlMgZXJyb3JzIGFuZCBu
byB0aW1pbmcgaXNzdWVzLlxuV2FzIHRoZSByZW5kZXJpbmcgcGl4ZWwtZm9yLXBpeGVsIHBlcmZl
Y3QgdG9vPyI7DQogICAgfQ0KICB9DQogIGZ1bmN0aW9uIHJlcG9ydChldmVudCkgew0KICAgIC8v
IGZvciBkZWJ1Z2dpbmcgZWl0aGVyIGNsaWNrIHRoZSAiQSIgaW4gIkFjaWQzIiAodG8gZ2V0IGFu
IGFsZXJ0KSBvciBzaGlmdC1jbGljayBpdCAodG8gZ2V0IGEgcmVwb3J0KQ0KICAgIGlmIChldmVu
dC5zaGlmdEtleSkgew0KICAgICAgdmFyIHcgPSB3aW5kb3cub3BlbigpOw0KICAgICAgdy5kb2N1
bWVudC53cml0ZSgnPHByZT5GYWlsZWQgJyArICh0ZXN0cy5sZW5ndGggLSBzY29yZSkgKyAnIG9m
ICcgKyB0ZXN0cy5sZW5ndGggKyAnIHRlc3RzLlxuJyArDQogICAgICAgICAgICAgICAgICAgICAg
IGxvZy5yZXBsYWNlKC8mL2csJyZhbXA7JykucmVwbGFjZShSZWdFeHAoJzwnLCAnZycpLCAnJmx0
OycpLnJlcGxhY2UoJ1wwJywgJ1xcMCcpICsNCiAgICAgICAgICAgICAgICAgICAgICAgJzxcL3By
ZT4nKTsNCiAgICAgIHcuZG9jdW1lbnQuY2xvc2UoKTsNCiAgICB9IGVsc2Ugew0KICAgICAgYWxl
cnQoJ0ZhaWxlZCAnICsgKHRlc3RzLmxlbmd0aCAtIHNjb3JlKSArICcgdGVzdCcgKyAoc2NvcmUg
PT0gMSA/ICcnIDogJ3MnKSArICcuXG4nICsgbG9nKQ0KICAgIH0NCiAgfQ0KIDwvc2NyaXB0Pg0K
IDxib2R5IG9ubG9hZD0idXBkYXRlKCkgIC8qIHRoaXMgYXR0cmlidXRlJ3MgdmFsdWUgaXMgdGVz
dGVkIGluIG9uZSBvZiB0aGUgdGVzdHMgKi8gIj4NCiAgPGgxIG9uY2xpY2s9InJlcG9ydChldmVu
dCkiPkFjaWQzPC9oMT4NCiAgPGRpdiBjbGFzcz0iYnVja2V0cyINCiAgID48cCBpZD0iYnVja2V0
MSIgY2xhc3M9InoiPjwvcA0KICAgPjxwIGlkPSJidWNrZXQyIiBjbGFzcz0ieiI+PC9wDQogICA+
PHAgaWQ9ImJ1Y2tldDMiIGNsYXNzPSJ6Ij48L3ANCiAgID48cCBpZD0iYnVja2V0NCIgY2xhc3M9
InoiPjwvcA0KICAgPjxwIGlkPSJidWNrZXQ1IiBjbGFzcz0ieiI+PC9wDQogICA+PHAgaWQ9ImJ1
Y2tldDYiIGNsYXNzPSJ6Ij48L3A+DQogIDwvZGl2Pg0KICA8cCBpZD0icmVzdWx0Ij48c3BhbiBp
ZD0ic2NvcmUiPkpTPC9zcGFuPjxzcGFuIGlkPSJzbGFzaCIgY2xhc3M9ImhpZGRlbiI+Lzwvc3Bh
bj48c3Bhbj4/PC9zcGFuPjwvcD4NCiAgPCEtLSBUaGUgZm9sbG93aW5nIGxpbmUgaXMgdXNlZCBp
biBhIG51bWJlciBvZiB0aGUgdGVzdHMuIEl0IGlzIGRvbmUgdXNpbmcgZG9jdW1lbnQud3JpdGUo
KSB0byBzaWRlc3RlcCBjb21wbGFpbnRzIG9mIHZhbGlkaXR5LiAtLT4NCiAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPmRvY3VtZW50LndyaXRlKCc8bWFwIG5hbWU9IiI+PGFyZWEgaHJl
Zj0iIiBzaGFwZT0icmVjdCIgY29vcmRzPSIyLDIsNCw0IiBhbHQ9IjxcJz4iPjxpZnJhbWUgc3Jj
PSJlbXB0eS5wbmciPkZBSUw8XC9pZnJhbWU+PGlmcmFtZSBzcmM9ImVtcHR5LnR4dCI+RkFJTDxc
L2lmcmFtZT48aWZyYW1lIHNyYz0iZW1wdHkuaHRtbCIgaWQ9InNlbGVjdG9ycyI+PFwvaWZyYW1l
Pjxmb3JtIGFjdGlvbj0iIiBuYW1lPSJmb3JtIj48aW5wdXQgdHlwZT1ISURERU4+PFwvZm9ybT48
dGFibGU+PHRyPjx0ZD48cD48XC90Ym9keT4gPFwvdGFibGU+PFwvbWFwPicpOzwvc2NyaXB0Pg0K
ICA8cCBpZD0iaW5zdHJ1Y3Rpb25zIj5UbyBwYXNzIHRoZSB0ZXN0LDxzcGFuPjwvc3Bhbj4gYSBi
cm93c2VyIG11c3QgdXNlIGl0cyBkZWZhdWx0IHNldHRpbmdzLCB0aGUgYW5pbWF0aW9uIGhhcyB0
byBiZSBzbW9vdGgsIHRoZSBzY29yZSBoYXMgdG8gZW5kIG9uIDEwMC8xMDAsIGFuZCB0aGUgZmlu
YWwgcGFnZSBoYXMgdG8gbG9vayBleGFjdGx5LCBwaXhlbCBmb3IgcGl4ZWwsIGxpa2UgPGEgaHJl
Zj0iaHR0cDovL2FjaWQzLmFjaWR0ZXN0cy5vcmcvcmVmZXJlbmNlLmh0bWwiPnRoaXMgcmVmZXJl
bmNlIHJlbmRlcmluZzwvYT4uPC9wPg0KICA8cCBpZD0icmVtb3ZlLWxhc3QtY2hpbGQtdGVzdCI+
U2NyaXB0aW5nIG11c3QgYmUgZW5hYmxlZCB0byB1c2UgdGhpcyB0ZXN0LjwvcD4NCiA8L2JvZHk+
DQo8L2h0bWw+DQoNCjwhLS0gVGhpcyBkb2N1bWVudCBzYXZlZCBmcm9tIGh0dHA6Ly9hY2lkMy5h
Y2lkdGVzdHMub3JnLyAtLT4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>20550</attachid>
            <date>2008-04-15 05:39:40 -0700</date>
            <delta_ts>2008-04-15 05:39:40 -0700</delta_ts>
            <desc>part of test 64 that makes WebKitGtk and WebKitQt crash</desc>
            <filename>a3test64.htm</filename>
            <type>text/html</type>
            <size>15944</size>
            <attacher name="wellofsouls">wellofsouls</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDov
L3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+DQo8aHRtbD4NCiA8dGl0bGU+VGhlIEFj
aWQzIFRlc3Q8L3RpdGxlPg0KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgdmFy
IHN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7DQogPC9zY3JpcHQ+DQogPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4NCg0KICAvKiBzZXQgc29tZSBiYXNpYyBzdHlsZXMgc28gdGhhdCB3ZSBjYW4gZ2V0IHJl
bGlhYmx5IGV4YWN0IHJlc3VsdHMgKi8NCiAgKiB7IG1hcmdpbjogMDsgYm9yZGVyOiAxcHggYmx1
ZTsgcGFkZGluZzogMDsgYm9yZGVyLXNwYWNpbmc6IDA7IGZvbnQ6IGluaGVyaXQ7IGxpbmUtaGVp
Z2h0OiAxLjI7IGNvbG9yOiBpbmhlcml0OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfQ0KICA6
bGluaywgOnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgfQ0KDQogIC8qIGhlYWRlciBhbmQgZ2VuZXJh
bCBsYXlvdXQgKi8NCiAgaHRtbCB7IGZvbnQ6IDIwcHggQXJpYWwsIHNhbnMtc2VyaWY7IGJvcmRl
cjogMmNtIHNvbGlkIGdyYXk7IHdpZHRoOiAzMmVtOyBtYXJnaW46IDFlbTsgfQ0KICA6cm9vdCB7
IGJhY2tncm91bmQ6IHNpbHZlcjsgY29sb3I6IGJsYWNrOyBib3JkZXItd2lkdGg6IDAgMC4yZW0g
MC4yZW0gMDsgfSAvKiBsZWZ0IGFuZCB0b3AgY29udGVudCBlZGdlczogMSoyMHB4ID0gMjBweCAq
Lw0KICBib2R5IHsgcGFkZGluZzogMmVtIDJlbSAwOyBiYWNrZ3JvdW5kOiB1cmwoYWNpZDNtb2Rf
ZmlsZXMvZ2lmMDAwMDAucG5nKSBuby1yZXBlYXQgOTkuODM5MjI4MyUgMXB4IHdoaXRlOyBib3Jk
ZXI6IHNvbGlkIDFweCBibGFjazsgbWFyZ2luOiAtMC4yZW0gMCAwIC0wLjJlbTsgfSAvKiBsZWZ0
IGFuZCB0b3AgY29udGVudCBlZGdlczogMjBweC0wLjIqMjBweCsxcHgrMioyMHB4ID0gNTdweCAq
Lw0KICBoMTpmaXJzdC1jaGlsZCB7IGN1cnNvcjogaGVscDsgZm9udC1zaXplOiA1ZW07IGZvbnQt
d2VpZ2h0OiBib2xkZXI7IG1hcmdpbi1ib3R0b206IC0wLjRlbTsgdGV4dC1zaGFkb3c6IHJnYmEo
MTkyLCAxOTIsIDE5MiwgMS4wKSAzcHggM3B4OyB9IC8qIChsZWZ0OjU3cHgsIHRvcDo1N3B4KSAq
Lw0KICAjcmVzdWx0IHsgZm9udC13ZWlnaHQ6IGJvbGRlcjsgd2lkdGg6IDUuNjhlbTsgdGV4dC1h
bGlnbjogcmlnaHQ7IH0NCiAgI3Jlc3VsdCB7IGZvbnQtc2l6ZTogNWVtOyBtYXJnaW46IC0yLjE5
ZW0gMCAwOyB9IC8qIChyaWdodDo1N3B4KzUuMio1KjIwcHggPSA1NzdweCwgdG9wOjU3cHgrMS4y
KjUqMjBweC0wLjQqNSoyMHB4KzFweCsxKjQwcHgrMSo0MHB4KzFweCsyKjQwcHgrMTUwcHgtMi4x
OSo1KjIwcHggPSAyMzBweCkgKi8NCiAgLmhpZGRlbiB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQ0K
ICAjc2xhc2ggeyBjb2xvcjogcmVkOyBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDEuMCk7IH0NCiAg
I2luc3RydWN0aW9ucyB7IG1hcmdpbi10b3A6IDA7IGZvbnQtc2l6ZTogMC44ZW07IGNvbG9yOiBn
cmF5OyBjb2xvcjogLWFjaWQzLWJvZ3VzOyBoZWlnaHQ6IDYuMTI1ZW07IH0gLyogKGxlZnQ6NTdw
eCwgdG9wOjIzMHB4KzEuMio1KjIwKzAgPSAzNTBweCkgKi8NCiAgI2luc3RydWN0aW9ucyB7IG1h
cmdpbi1yaWdodDogLTIwcHg7IHBhZGRpbmctcmlnaHQ6IDIwcHg7IGJhY2tncm91bmQ6IHVybChh
Y2lkM21vZF9maWxlcy9naWYwMDAwMC5wbmcpIG5vLXJlcGVhdCB0b3AgcmlnaHQ7IH0NCiAgI2lu
c3RydWN0aW9ucyBzcGFuIHsgZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMjBweDsgbWFyZ2luLXJpZ2h0
OiAtMjBweDsgYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDogMjBweDsgfQ0KICBAZm9udC1mYWNl
IHsgZm9udC1mYW1pbHk6ICJBY2lkQWhlbVRlc3QiOyBzcmM6IHVybChhY2lkM21vZF9maWxlcy9m
b250MDAwMC50dGYpOyB9DQogIG1hcDo6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MThweDsgbGVmdDogNjM4cHg7IGNvbnRlbnQ6ICJYIjsgYmFja2dyb3VuZDogZnVjaHNpYTsgY29s
b3I6IHdoaXRlOyBmb250OiAyMHB4LzEgQWNpZEFoZW1UZXN0OyB9DQogIGlmcmFtZSB7IGZsb2F0
OiBsZWZ0OyBoZWlnaHQ6IDA7IHdpZHRoOiAwOyB9IC8qIGhpZGUgaWZyYW1lcyBidXQgZG9uJ3Qg
bWFrZSB0aGVtIGRpc3BsYXk6IG5vbmUgKi8NCiAgb2JqZWN0IHsgcG9zaXRpb246IGZpeGVkOyBs
ZWZ0OiAxMzAuNXB4OyB0b3A6IDg0LjNweDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH0gLyog
c2hvdyBvYmplY3RzIGlmIHRoZXkgaGF2ZSBjb250ZW50ICovDQogIC5yZW1vdmVkIHsgcG9zaXRp
b246IGFic29sdXRlOyB0b3A6IDgwcHg7IGxlZnQ6IDM4MHB4OyBoZWlnaHQ6IDEwMHB4OyB3aWR0
aDogMTAwcHg7IG9wYWNpdHk6IDA7IH0NCg0KICAvKiBzZXQgdGhlIGxpbmUgaGVpZ2h0IG9mIHRo
ZSBsaW5lIG9mIGNvbG91cmVkIGJveGVzIHNvIHdlIGNhbiBhZGQgdGhlbSB3aXRob3V0IHRoZSBs
YXlvdXQgY2hhbmdpbmcgaGVpZ2h0ICovDQogIC5idWNrZXRzIHsgZm9udDogMC8wIEFyaWFsLCBz
YW5zLXNlcmlmOyB9DQogIC5idWNrZXRzIHsgcGFkZGluZzogMCAwIDE1MHB4IDNweDsgfQ0KDQog
IC8qIHRoZSBuZXh0IHR3byBydWxlcyBnaXZlIHRoZSBzaXggY29sb3VyZWQgYmxvY2tzIHRoZWly
IGRlZmF1bHQgc3R5bGVzICh0aGV5IG1hdGNoIHRoZSBzYW1lIGVsZW1lbnRzKTsgdGhlIHRoaXJk
IGhpZGVzIHRoZW0gKi8NCiAgOmZpcnN0LWNoaWxkICsgKiAuYnVja2V0cyBwIHsgZGlzcGxheTog
aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogMmVtOyBib3JkZXI6IDJlbSBkb3R0ZWQgcmVk
OyBwYWRkaW5nOiAxLjBlbSAwIDEuMGVtIDJlbTsgfQ0KICAqICsgKiA+ICogPiBwIHsgbWFyZ2lu
OiAwOyBib3JkZXI6IDFweCBzb2xpZCAhIGltcG9ydGFudDsgfQ0KICAueiB7IHZpc2liaWxpdHk6
IGhpZGRlbjsgfSAvKiBvbmx5IG1hdGNoZXMgdGhlIGJ1Y2tldHMgd2l0aCBubyBzY29yZSAqLw0K
DQogIC8qIHNpemVzIGZvciB0aGUgc2l4IGJ1Y2tldHMgKi8NCiAgI2J1Y2tldDEgeyBmb250LXNp
emU6IDIwcHg7IG1hcmdpbi1sZWZ0OiAwLjJlbTsgcGFkZGluZy1sZWZ0OiAxLjNlbTsgcGFkZGlu
Zy1yaWdodDogMS4zZW07IG1hcmdpbi1yaWdodDogMC4wMDAxcHg7IH0NCiAgI2J1Y2tldDIgeyBm
b250LXNpemU6IDI0cHg7IG1hcmdpbi1sZWZ0OiAwLjM3NWVtOyBwYWRkaW5nLWxlZnQ6IDMwcHg7
IHBhZGRpbmctcmlnaHQ6IDMycHg7IG1hcmdpbi1yaWdodDogMnB4OyB9DQogICNidWNrZXQzIHsg
Zm9udC1zaXplOiAyOHB4OyBtYXJnaW4tbGVmdDogOC45OTk5cHg7IHBhZGRpbmctbGVmdDogMTdw
eDsgcGFkZGluZy1yaWdodDogNTVweDsgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9DQogICNidWNrZXQ0
IHsgZm9udC1zaXplOiAzMnB4OyBtYXJnaW4tbGVmdDogMDsgcGFkZGluZy1sZWZ0OiA4NHB4OyBw
YWRkaW5nLXJpZ2h0OiAwOyBtYXJnaW4tcmlnaHQ6IDA7IH0NCiAgI2J1Y2tldDUgeyBmb250LXNp
emU6IDM2cHg7IG1hcmdpbi1sZWZ0OiAxM3B4OyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmln
aHQ6IDk0cHg7IG1hcmdpbi1yaWdodDogMjVweDsgfQ0KICAjYnVja2V0NiB7IGZvbnQtc2l6ZTog
NDBweDsgbWFyZ2luLWxlZnQ6IC0xMHB4OyBwYWRkaW5nLWxlZnQ6IDEwNHB4OyBwYWRkaW5nLXJp
Z2h0OiAtMTBweDsgfQ0KDQogIC8qIGNvbG91cnMgZm9yIHRoZW0gKi8NCiAgLnosIC56UCwgLnpQ
UCwgLnpQUFAsIC56UFBQUCwgLnpQUFBQUCB7IGJhY2tncm91bmQ6IGJsYWNrOyB9DQogIC56UFBQ
UFBQLCAuelBQUFBQUFAsIC56UFBQUFBQUFAsIC56UFBQUFBQUFAsIC56UFBQUFBQUFBQLA0KICAu
elBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBncmV5OyB9DQogIC56UFBQUFBQUFBQUFAsIC56UFBQ
UFBQUFBQUFBQLCAuelBQUFBQUFBQUFBQUFAsDQogIC56UFBQUFBQUFBQUFBQUFAsIC56UFBQUFBQ
UFBQUFBQUFBQIHsgYmFja2dyb3VuZDogc2lsdmVyOyB9DQogICNidWNrZXQxLnpQUFBQUFBQUFBQ
UFBQUFBQIHsgYmFja2dyb3VuZDogcmVkOyB9DQogICNidWNrZXQyLnpQUFBQUFBQUFBQUFBQUFBQ
IHsgYmFja2dyb3VuZDogb3JhbmdlOyB9DQogICNidWNrZXQzLnpQUFBQUFBQUFBQUFBQUFBQIHsg
YmFja2dyb3VuZDogeWVsbG93OyB9DQogICNidWNrZXQ0LnpQUFBQUFBQUFBQUFBQUFBQIHsgYmFj
a2dyb3VuZDogbGltZTsgfQ0KICAjYnVja2V0NS56UFBQUFBQUFBQUFBQUFBQUCB7IGJhY2tncm91
bmQ6IGJsdWU7IH0NCiAgI2J1Y2tldDYuelBQUFBQUFBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBw
dXJwbGU7IH0NCg0KICAvKiBUaGUgbGluZS1oZWlnaHQgZm9yIHRoZSAuYnVja2V0IGRpdiBpcyB3
b3JrZWQgb3V0IGFzIGZvbGxvd3M6DQogICAqDQogICAqIFRoZSBkaXYuYnVja2V0IGVsZW1lbnQg
aGFzIGEgbGluZSBib3ggd2l0aCBhIGZldw0KICAgKiBpbmxpbmUtYmxvY2tzLiBFYWNoIGlubGlu
ZS1ibG9jayBjb25zaXN0cyBvZjoNCiAgICoNCiAgICogICAgIDIuMGVtIHZlcnRpY2FsLWFsaWdu
IGZyb20gYmFzZWxpbmUgdG8gYm90dG9tIG9mIGlubGluZS1ibG9jaw0KICAgKiAgICAgMXB4IGJv
dHRvbSBib3JkZXINCiAgICogICAgIDEuMGVtIGJvdHRvbSBwYWRkaW5nDQogICAqICAgICAxLjBl
bSB0b3AgcGFkZGluZw0KICAgKiAgICAgMXB4IHRvcCBib3JkZXINCiAgICoNCiAgICogVGhlIGJp
Z2dlc3QgaW5saW5lLWJsb2NrIGhhcyBmb250LXNpemU6IDQwcHguDQogICAqDQogICAqIFRodXMg
dGhlIGRpc3RhbmNlIGZyb20gdGhlIGJhc2VsaW5lIHRvIHRoZSB0b3Agb2YgdGhlIGJpZ2dlc3QN
CiAgICogaW5saW5lLWJsb2NrIGlzICgyZW0rMWVtKzFlbSkqMmVtKjIwcHgrMnB4ID0gMTYycHgu
DQogICAqDQogICAqIFRoZSBsaW5lIGJveCBpdHNlbGYgaGFzIG5vIG90aGVyIGNvbnRlbnRzLCBh
bmQgaXRzIHN0cnV0IGhhcyB6ZXJvDQogICAqIGhlaWdodCBhbmQgdGhlcmUgaXMgbm8gaGFsZi1s
ZWFkaW5nLCBzbyB0aGUgaGVpZ2h0IG9mIHRoZQ0KICAgKiBkaXYuYnVja2V0IGlzIDE2MnB4Lg0K
ICAgKg0KICAgKiAoV2h5IHVzZSBsaW5lLWhlaWdodDowIGFuZCBmb250LXNpemU6MD8gV2VsbDoN
CiAgICoNCiAgICogVGhlIGRpdi5idWNrZXQgbGluZSBib3ggd291bGQgaGF2ZSBhIGhlaWdodCB0
aGF0IGlzIHRoZSBtYXhpbXVtDQogICAqIG9mIHRoZSBmb2xsb3dpbmcgdHdvIHN1bXM6DQogICAq
DQogICAqICAxOiBoYWxmLWxlYWRpbmcgKyBmb250IGRlc2NlbnQgYXQgMWVtICsgZm9udCBhc2Nl
bnQgYXQgMWVtICsgaGFsZi1sZWFkaW5nDQogICAqICAyOiBoYWxmLWxlYWRpbmcgKyBmb250IGRl
c2NlbnQgYXQgMWVtICsgMTYycHggDQogICAqDQogICAqIE5vdyB0aGUgaGFsZi1sZWFkaW5nIGlz
IChsaW5lLWhlaWdodCAtIChmb250LWFzY2VudCArIGZvbnQtZGVzY2VudCkpLzIsIHNvIHRoYXQg
aXMgcmVhbGx5Og0KICAgKg0KICAgKiAgMTogKGxpbmUtaGVpZ2h0IC0gKGZvbnQtYXNjZW50ICsg
Zm9udC1kZXNjZW50KSkvMiArIGZvbnQgZGVzY2VudCArIGZvbnQgYXNjZW50ICsgKGxpbmUtaGVp
Z2h0IC0gKGZvbnQtYXNjZW50ICsgZm9udC1kZXNjZW50KSkvMg0KICAgKiAgMjogKGxpbmUtaGVp
Z2h0IC0gKGZvbnQtYXNjZW50ICsgZm9udC1kZXNjZW50KSkvMiArIGZvbnQgZGVzY2VudCArIDE2
MnB4DQogICAqDQogICAqIFdoaWNoIHNpbXBsaWZ5IHRvOg0KICAgKg0KICAgKiAgMTogbGluZS1o
ZWlnaHQNCiAgICogIDI6IGxpbmUtaGVpZ2h0LzIgKyAoZm9udCBkZXNjZW50IC0gZm9udC1hc2Nl
bnQpLzIgKyAxNjJweA0KICAgKg0KICAgKiBTbyBpZiB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24g
aXMgdHJ1ZToNCiAgICoNCiAgICogICAgbGluZS1oZWlnaHQgPiBsaW5lLWhlaWdodC8yICsgKGZv
bnQgZGVzY2VudCAtIGZvbnQtYXNjZW50KS8yICsgMTYycHgNCiAgICoNCiAgICogVGhhdCBpcywg
aWYgdGhpcyBpcyB0cnVlOg0KICAgKg0KICAgKiAgICBsaW5lLWhlaWdodCA+IGZvbnQgZGVzY2Vu
dCAtIGZvbnQtYXNjZW50ICsgMzI0cHgNCiAgICoNCiAgICogLi4udGhlbiB0aGUgbGluZS1oZWln
aHQgbWF0dGVycywgb3RoZXJ3aXNlIHRoZSBmb250IGRvZXMuIE5vdGUNCiAgICogdGhhdCBmb250
IGRlc2NlbnQgLSBmb250LWFzY2VudCB3aWxsIGJlIGluIHRoZSByZWdpb24gb2YNCiAgICogMTBw
eC0zMHB4ICh3aXRoIEFoZW0sIGV4YWN0bHkgMTJweCkuIEhvd2V2ZXIsIGlmIHdlIG1ha2UgdGhl
DQogICAqIGxpbmUtaGVpZ2h0IGJpZywgdGhlbiB0aGUgX3Bvc2l0aW9uaW5nXyBvZiB0aGUgaW5s
aW5lLWJsb2NrcyB3aWxsDQogICAqIGRlcGVuZCBvbiB0aGUgZm9udCBkZXNjZW50LCBzaW5jZSB0
aGF0IGlzIHdoYXQgd2lsbCBkZWNpZGUgdGhlDQogICAqIGRpc3RhbmNlIGZyb20gdGhlIGJvdHRv
bSBvZiB0aGUgbGluZSBib3ggdG8gdGhlIGJhc2VsaW5lIG9mIHRoZQ0KICAgKiBibG9jayAoc2lu
Y2UgdGhlIGJhc2VsaW5lIGlzIHNldCBieSB0aGUgc3RydXQpLg0KICAgKg0KICAgKiBIb3dldmVy
LCBpbiBBY2lkMiBhIGRlcGVuZGVuY3kgb24gdGhlIGZvbnQgbWV0cmljcyB3YXMgaW50cm9kdWNl
ZA0KICAgKiBhbmQgdGhpcyBjYXVzZWQgYWxsIGtpbmRzIG9mIHByb2JsZW1zLiBBbmQgd2UgY2Fu
J3QgcmVxdWlyZSBBaGVtDQogICAqIGluIHRoZSBBY2lkIHRlc3RzLCBzaW5jZSBpdCdzIHVubGlr
ZWx5IG1vc3QgcGVvcGxlIHdpbGwgaGF2ZSBpdA0KICAgKiBpbnN0YWxsZWQuDQogICAqDQogICAq
IFdoYXQgd2Ugd2FudCBpcyBmb3IgdGhlIGZvbnQgdG8gbm90IG1hdHRlciwgYW5kIHRoZSBiYXNl
bGluZSB0bw0KICAgKiBiZSBhcyBoaWdoIGFzIHBvc3NpYmxlLiBXZSBjYW4gZG8gdGhhdCBieSBz
YXlpbmcgdGhhdCB0aGUgZm9udA0KICAgKiBhbmQgdGhlIGxpbmUtaGVpZ2h0IGFyZSB6ZXJvLg0K
ICAgKg0KICAgKiBPbmUgd29yZCBvZiB3YXJuaW5nLiBJZiB5b3VyIGJyb3dzZXIgaGFzIGEgbWlu
aW11bSBmb250IHNpemUgZmVhdHVyZQ0KICAgKiB0aGF0IGZvcmNlcyBmb250IHNpemVzIHVwIGV2
ZW4gd2hlbiB0aGVyZSBpcyBubyB0ZXh0LCB5b3Ugd2lsbCBuZWVkDQogICAqIHRvIGRpc2FibGUg
aXQgYmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0Lg0KICAgKg0KICAgKi8NCg0KICAvKiBydWxlcyBz
cGVjaWZpYyB0byB0aGUgdGVzdHMgYmVsb3cgKi8NCiAgI2luc3RydWN0aW9uczpsYXN0LWNoaWxk
IHsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3aGl0ZS1zcGFjZTogeC1ib2d1czsgfQ0KICAjbGlu
a3Rlc3Q6bGluayB7IGRpc3BsYXk6IGJsb2NrOyBjb2xvcjogcmVkOyB0ZXh0LWFsaWduOiBjZW50
ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KICAjbGlua3Rlc3QucGVuZGluZywgI2xpbmt0
ZXN0OnZpc2l0ZWQgeyBkaXNwbGF5OiBub25lOyB9DQogICNcIHsgY29sb3I6IHRyYW5zcGFyZW50
OyBjb2xvcjogaHNsYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDEwcHg7IGxl
ZnQ6IDEwcHg7IGZvbnQ6IDQwcHggQXJpYWwsIHNhbnMtc2VyaWY7IH0NCiAgI1wgICNyZXN1bHQs
ICNcICAjc2NvcmUgeyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTAlOyBsZWZ0OiAxMCU7IHdpZHRo
OiA0ZW07IHotaW5kZXg6IDE7IGNvbG9yOiB5ZWxsb3c7IGZvbnQtc2l6ZTogNTBweDsgYmFja2dy
b3VuZDogZnVjaHNpYTsgYm9yZGVyOiBzb2xpZCAxZW0gcHVycGxlOyB9DQogPC9zdHlsZT4NCg0K
IDwhLS0gcGFydCBvZiB0aGUgSFRUUCB0ZXN0cyAtLT4NCiA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9ImFjaWQzbW9kX2ZpbGVzL2VtcHR5MDAwLmh0bSI+PCEtLSB0ZXh0L2h0bWwgZmlsZSAo
c2hvdWxkIGJlIGlnbm9yZWQsIDxoMT4gd2lsbCBnbyByZWQgaWYgaXQgaXNuJ3QpIC0tPg0KDQog
PCEtLSB0aGUgbmV4dCBmaXZlIHNjcmlwdCBibG9ja3MgYXJlIHBhcnQgb2Ygb25lIG9mIHRoZSB0
ZXN0cyAtLT4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogIHZhciBkMSA9ICJm
YWlsIjsNCiAgdmFyIGQyID0gImZhaWwiOw0KICB2YXIgZDMgPSAiZmFpbCI7DQogIHZhciBkNCA9
ICJmYWlsIjsNCiAgdmFyIGQ1ID0gImZhaWwiOw0KIDwvc2NyaXB0Pg0KIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFjaWQzbW9kX2ZpbGVzL2phdmFzY3JpLmpzIj48L3Njcmlw
dD4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhY2lkM21vZF9maWxlcy9q
YXZhc2Nyai5qcyI+PC9zY3JpcHQ+DQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iYWNpZDNtb2RfZmlsZXMvamF2YXNjcmsuanMiPjwvc2NyaXB0Pg0KIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFjaWQzbW9kX2ZpbGVzL2phdmFzY3JsLmpzIj48L3Njcmlw
dD4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhY2lkM21vZF9maWxlcy9q
YXZhc2NybS5qcyI+PC9zY3JpcHQ+DQoNCiA8IS0tIHBhcnQgb2YgdGhlIEpTIHJlZ2V4cCBhbmQg
XDAgdmFsdWUgdGVzdHMgdGVzdCAtLT4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
DQogIHZhciBudWxsSW5SZWdleHBBcmd1bWVudFJlc3VsdCA9IDAgPCAvc2NyaXB0Ly50ZXN0KCdc
MHNjcmlwdCcpID8gInBhc3NlZCIgOiAiZmFpbGVkIjsNCiA8L3NjcmlwdD4NCg0KIDwhLS0gbWFp
biB0ZXN0IGJvZHkgLS0+DQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICB2YXIg
bm90aWZpY2F0aW9ucyA9IHt9Ow0KICBmdW5jdGlvbiBub3RpZnkoZmlsZSkgew0KICAgIC8vIHVz
ZWQgaW4gY3Jvc3MtZmlsZSB0ZXN0cw0KICAgIG5vdGlmaWNhdGlvbnNbZmlsZV0gPSAxOw0KICB9
DQogIGZ1bmN0aW9uIGZhaWwobWVzc2FnZSkgew0KICAgIHRocm93IHsgbWVzc2FnZTogbWVzc2Fn
ZSB9Ow0KICB9DQogIGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHsNCiAgICBp
ZiAoIWNvbmRpdGlvbikNCiAgICAgIGZhaWwobWVzc2FnZSk7DQogIH0NCiAgZnVuY3Rpb24gYXNz
ZXJ0RXF1YWxzKGV4cHJlc3Npb24sIHZhbHVlLCBtZXNzYWdlKSB7DQogICAgaWYgKGV4cHJlc3Np
b24gIT0gdmFsdWUpIHsNCiAgICAgIGV4cHJlc3Npb24gPSAoIiIrZXhwcmVzc2lvbikucmVwbGFj
ZSgvW1xyXG5dKy9nLCAiXFxuIik7DQogICAgICB2YWx1ZSA9ICgiIit2YWx1ZSkucmVwbGFjZSgv
XHI/XG4vZywgIlxcbiIpOw0KICAgICAgZmFpbCgiZXhwZWN0ZWQgJyIgKyB2YWx1ZSArICInIGJ1
dCBnb3QgJyIgKyBleHByZXNzaW9uICsgIicgLSAiICsgbWVzc2FnZSk7DQogICAgfQ0KICB9DQog
IGZ1bmN0aW9uIGdldFRlc3REb2N1bWVudCgpIHsNCiAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNlbGVjdG9ycyIpOw0KICAgIHZhciBkb2MgPSBpZnJhbWUuY29udGVu
dERvY3VtZW50Ow0KICAgIGZvciAodmFyIGkgPSBkb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9k
ZXMubGVuZ3RoLTE7IGkgPj0gMDsgaSAtPSAxKQ0KICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5y
ZW1vdmVDaGlsZChkb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXNbaV0pOw0KICAgIGRvYy5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnQoJ2hlYWQnKSk7DQog
ICAgZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVF
bGVtZW50KCd0aXRsZScpKTsNCiAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRv
Yy5jcmVhdGVFbGVtZW50KCdib2R5JykpOw0KICAgIHJldHVybiBkb2M7DQogIH0NCiAgZnVuY3Rp
b24gc2VsZWN0b3JUZXN0KHRlc3Rlcikgew0KICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQo
KTsNCiAgICB2YXIgc3R5bGUgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsNCiAgICBzdHls
ZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIiogeyB6LWluZGV4OiAwOyBwb3NpdGlv
bjogYWJzb2x1dGU7IH1cbiIpKTsNCiAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQu
YXBwZW5kQ2hpbGQoc3R5bGUpOw0KICAgIHZhciBydWxlQ291bnQgPSAwOw0KICAgIHRlc3Rlcihk
b2MsIGZ1bmN0aW9uIChzZWxlY3Rvcikgew0KICAgICAgICBydWxlQ291bnQgKz0gMTsNCiAgICAg
ICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHNlbGVjdG9yICsgIiB7IHot
aW5kZXg6ICIgKyBydWxlQ291bnQgKyAiOyB9XG4iKSk7DQogICAgICAgIHJldHVybiBydWxlQ291
bnQ7DQogICAgICB9LCBmdW5jdGlvbihub2RlLCBydWxlLCBtZXNzYWdlKSB7DQogICAgICAgIHZh
ciB2YWx1ZSA9IGRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsICIiKS56SW5k
ZXg7DQogICAgICAgIGFzc2VydCh2YWx1ZSAhPSAnYXV0bycsICJ1bmRlcmx5aW5nIHByb2JsZW1z
IHByZXZlbnQgdGhpcyB0ZXN0IGZyb20gcnVubmluZyBwcm9wZXJseSIpOw0KICAgICAgICBhc3Nl
cnRFcXVhbHModmFsdWUsIHJ1bGUsIG1lc3NhZ2UpOw0KICAgIH0pOw0KICB9DQogIHZhciBrdW5n
RnVEZWF0aEdyaXAgPSBudWxsOyAvLyB1c2VkIHRvIGhvbGQgdGhpbmdzIGZyb20gdGVzdCB0byB0
ZXN0DQogIHZhciB0ZXN0cyA9IFsNCg0KICAgDQogICAgZnVuY3Rpb24gKCkgew0KICAgICAgLy8g
dGVzdCA2NDogbW9yZSBhdHRyaWJ1dGUgdGVzdHMNCiAgICAgIC8vIG5vbi1leGlzdGVudCBhdHRy
aWJ1dGVzDQogICAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsNCiAg
ICAgIGFzc2VydCghKCdUV1Z2ZHl3Z2JXVjNMaTR1JyBpbiB0ZXN0KSwgIlRXVnZkeXdnYldWM0xp
NHUgdW5leHBlY3RlZGx5IGZvdW5kIik7DQogICAgICBhc3NlcnRFcXVhbHModGVzdC5UV1Z2ZHl3
Z2JXVjNMaTR1LCB1bmRlZmluZWQsICIuVFdWdmR5d2diV1YzTGk0dSB3YXNuJ3QgdW5kZWZpbmVk
Iik7DQogICAgICBhc3NlcnRFcXVhbHModGVzdFsnVFdWdmR5d2diV1YzTGk0dSddLCB1bmRlZmlu
ZWQsICJbJ1RXVnZkeXdnYldWM0xpNHUnXSB3YXNuJ3QgdW5kZWZpbmVkIik7DQogICAgICB0ZXN0
LnNldEF0dHJpYnV0ZSgnVFdWdmR5d2diV1YzTGk0dScsICd3b29mJyk7DQogICAgICBhc3NlcnQo
ISgnVFdWdmR5d2diV1YzTGk0dScgaW4gdGVzdCksICJUV1Z2ZHl3Z2JXVjNMaTR1IHVuZXhwZWN0
ZWRseSBmb3VuZCBhZnRlciBzZXR0aW5nIik7DQogICAgICBhc3NlcnRFcXVhbHModGVzdC5UV1Z2
ZHl3Z2JXVjNMaTR1LCB1bmRlZmluZWQsICIuVFdWdmR5d2diV1YzTGk0dSB3YXNuJ3QgdW5kZWZp
bmVkIGFmdGVyIHNldHRpbmciKTsNCiAgICAgIGFzc2VydEVxdWFscyh0ZXN0WydUV1Z2ZHl3Z2JX
VjNMaTR1J10sIHVuZGVmaW5lZCwgIlsnVFdWdmR5d2diV1YzTGk0dSddIHdhc24ndCB1bmRlZmlu
ZWQgYWZ0ZXIgc2V0dGluZyIpOw0KICAgICAgYXNzZXJ0RXF1YWxzKHRlc3QuZ2V0QXR0cmlidXRl
KCdUV1Z2ZHl3Z2JXVjNMaTR1JyksICd3b29mJywgIlRXVnZkeXdnYldWM0xpNHUgaGFzIHdyb25n
IHZhbHVlIGFmdGVyIHNldHRpbmciKTsgDQogICAgICByZXR1cm4gNDsNCiAgICB9DQogIF07DQog
IHZhciBsb2cgPSAnJzsNCiAgdmFyIGRlbGF5ID0gMTA7DQogIHZhciBzY29yZSA9IDAsIGluZGV4
ID0gMCwgcmV0cnkgPSAwLCBlcnJvcnMgPSAwOw0KICBmdW5jdGlvbiB1cGRhdGUoKSB7DQogICAg
dmFyIHNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmUnKTsgLy8gbm90IGNhY2hl
ZCBieSBKUw0KICAgIHNwYW4ubmV4dFNpYmxpbmcucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpOyAv
LyBuby1vcCBhZnRlciBmaXJzdCBsb29wDQogICAgc3Bhbi5uZXh0U2libGluZy5uZXh0U2libGlu
Zy5maXJzdENoaWxkLmRhdGEgPSB0ZXN0cy5sZW5ndGg7IC8vIG5vLW9wIGFmdGVyIGZpcnN0IGxv
b3ANCiAgICBpZiAoaW5kZXggPCB0ZXN0cy5sZW5ndGgpIHsNCiAgICAgIHZhciB6ZXJvUGFkZGVk
SW5kZXggPSBpbmRleCA8IDEwID8gJzAnICsgaW5kZXggOiBpbmRleDsNCiAgICAgIHRyeSB7DQog
ICAgICAgIHZhciBiZWZvcmVUZXN0ID0gbmV3IERhdGUoKTsNCiAgICAgICAgdmFyIHJlc3VsdCA9
IHRlc3RzW2luZGV4XSgpOw0KICAgICAgICB2YXIgZWxhcHNlZFRlc3QgPSBuZXcgRGF0ZSgpIC0g
YmVmb3JlVGVzdDsNCiAgICAgICAgaWYgKHJlc3VsdCA9PSAicmV0cnkiKSB7DQogICAgICAgICAg
Ly8gc29tZSB0ZXN0cyB1c2VzIHRoaXMgbWFnaWNhbCBtZWNoYW5pc20gdG8gd2FpdCBmb3Igc3Vw
cG9ydCBmaWxlcyB0byBsb2FkDQogICAgICAgICAgLy8gd2Ugd2lsbCBnaXZlIHRoaXMgdGVzdCA1
MDAgYXR0ZW1wdHMgKDUwMDBtcykgYmVmb3JlIGFib3J0aW5nDQogICAgICAgICAgcmV0cnkgKz0g
MTsNCiAgICAgICAgICBpZiAocmV0cnkgPCA1MDApIHsNCiAgICAgICAgICAgIHNldFRpbWVvdXQo
dXBkYXRlLCBkZWxheSk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgfQ0KICAgICAg
ICAgIGZhaWwoInRpbWVvdXQgLS0gY291bGQgYmUgYSBuZXR3b3JraW5nIGlzc3VlIik7DQogICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0KSB7DQogICAgICAgICAgdmFyIGJ1Y2tldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdidWNrZXQnICsgcmVzdWx0KTsNCiAgICAgICAgICBpZiAoYnVja2V0
KQ0KICAgICAgICAgICAgYnVja2V0LmNsYXNzTmFtZSArPSAnUCc7DQogICAgICAgICAgc2NvcmUg
Kz0gMTsNCiAgICAgICAgICBpZiAocmV0cnkgPiAwKSB7DQogICAgICAgICAgICBlcnJvcnMgKz0g
MTsNCiAgICAgICAgICAgIGxvZyArPSAiVGVzdCAiICsgemVyb1BhZGRlZEluZGV4ICsgIiBwYXNz
ZWQsIGJ1dCB0b29rICIgKyByZXRyeSArICIgYXR0ZW1wdHMgKGxlc3MgdGhhbiBwZXJmZWN0KS5c
biI7DQogICAgICAgICAgfSBlbHNlIGlmIChlbGFwc2VkVGVzdCA+IDMzKSB7IC8vIDMwZnBzDQog
ICAgICAgICAgICBlcnJvcnMgKz0gMTsNCiAgICAgICAgICAgIGxvZyArPSAiVGVzdCAiICsgemVy
b1BhZGRlZEluZGV4ICsgIiBwYXNzZWQsIGJ1dCB0b29rICIgKyBlbGFwc2VkVGVzdCArICJtcyAo
bGVzcyB0aGFuIDMwZnBzKVxuIjsNCiAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAg
ICAgICAgZmFpbCgibm8gZXJyb3IgbWVzc2FnZSIpOw0KICAgICAgICB9DQogICAgICB9IGNhdGNo
IChlKSB7DQogICAgICAgIHZhciBzOw0KICAgICAgICBpZiAoZS5tZXNzYWdlKQ0KICAgICAgICAg
IHMgPSBlLm1lc3NhZ2UucmVwbGFjZSgvXHMrJC8sICIiKTsNCiAgICAgICAgZWxzZQ0KICAgICAg
ICAgIHMgPSBlOw0KICAgICAgICBlcnJvcnMgKz0gMTsNCiAgICAgICAgbG9nICs9ICJUZXN0ICIg
KyB6ZXJvUGFkZGVkSW5kZXggKyAiIGZhaWxlZDogIiArIHMgKyAiXG4iOw0KICAgICAgfTsNCiAg
ICAgIHJldHJ5ID0gMDsNCiAgICAgIGluZGV4ICs9IDE7DQogICAgICBzcGFuLmZpcnN0Q2hpbGQu
ZGF0YSA9IHNjb3JlOw0KICAgICAgc2V0VGltZW91dCh1cGRhdGUsIGRlbGF5KTsNCiAgICB9IGVs
c2Ugew0KICAgICAgdmFyIGVuZFRpbWUgPSBuZXcgRGF0ZSgpOw0KICAgICAgdmFyIGVsYXBzZWRU
aW1lID0gKChlbmRUaW1lIC0gc3RhcnRUaW1lKSAtIChkZWxheSAqIHRlc3RzLmxlbmd0aCkpIC8g
MTAwMDsNCiAgICAgIGxvZyArPSAiVG90YWwgZWxhcHNlZCB0aW1lOiAiICsgZWxhcHNlZFRpbWUu
dG9GaXhlZCgyKSArICJzIjsNCiAgICAgIGlmIChlcnJvcnMgPT0gMCkNCiAgICAgICAgbG9nICs9
ICJcbk5vIEpTIGVycm9ycyBhbmQgbm8gdGltaW5nIGlzc3Vlcy5cbldhcyB0aGUgcmVuZGVyaW5n
IHBpeGVsLWZvci1waXhlbCBwZXJmZWN0IHRvbz8iOw0KICAgIH0NCiAgfQ0KICBmdW5jdGlvbiBy
ZXBvcnQoZXZlbnQpIHsNCiAgICAvLyBmb3IgZGVidWdnaW5nIGVpdGhlciBjbGljayB0aGUgIkEi
IGluICJBY2lkMyIgKHRvIGdldCBhbiBhbGVydCkgb3Igc2hpZnQtY2xpY2sgaXQgKHRvIGdldCBh
IHJlcG9ydCkNCiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHsNCiAgICAgIHZhciB3ID0gd2luZG93
Lm9wZW4oKTsNCiAgICAgIHcuZG9jdW1lbnQud3JpdGUoJzxwcmU+RmFpbGVkICcgKyAodGVzdHMu
bGVuZ3RoIC0gc2NvcmUpICsgJyBvZiAnICsgdGVzdHMubGVuZ3RoICsgJyB0ZXN0cy5cbicgKw0K
ICAgICAgICAgICAgICAgICAgICAgICBsb2cucmVwbGFjZSgvJi9nLCcmYW1wOycpLnJlcGxhY2Uo
UmVnRXhwKCc8JywgJ2cnKSwgJyZsdDsnKS5yZXBsYWNlKCdcMCcsICdcXDAnKSArDQogICAgICAg
ICAgICAgICAgICAgICAgICc8XC9wcmU+Jyk7DQogICAgICB3LmRvY3VtZW50LmNsb3NlKCk7DQog
ICAgfSBlbHNlIHsNCiAgICAgIGFsZXJ0KCdGYWlsZWQgJyArICh0ZXN0cy5sZW5ndGggLSBzY29y
ZSkgKyAnIHRlc3QnICsgKHNjb3JlID09IDEgPyAnJyA6ICdzJykgKyAnLlxuJyArIGxvZykNCiAg
ICB9DQogIH0NCiA8L3NjcmlwdD4NCiA8Ym9keSBvbmxvYWQ9InVwZGF0ZSgpICAvKiB0aGlzIGF0
dHJpYnV0ZSdzIHZhbHVlIGlzIHRlc3RlZCBpbiBvbmUgb2YgdGhlIHRlc3RzICovICI+DQogIDxo
MSBvbmNsaWNrPSJyZXBvcnQoZXZlbnQpIj5BY2lkMzwvaDE+DQogIDxkaXYgY2xhc3M9ImJ1Y2tl
dHMiDQogICA+PHAgaWQ9ImJ1Y2tldDEiIGNsYXNzPSJ6Ij48L3ANCiAgID48cCBpZD0iYnVja2V0
MiIgY2xhc3M9InoiPjwvcA0KICAgPjxwIGlkPSJidWNrZXQzIiBjbGFzcz0ieiI+PC9wDQogICA+
PHAgaWQ9ImJ1Y2tldDQiIGNsYXNzPSJ6Ij48L3ANCiAgID48cCBpZD0iYnVja2V0NSIgY2xhc3M9
InoiPjwvcA0KICAgPjxwIGlkPSJidWNrZXQ2IiBjbGFzcz0ieiI+PC9wPg0KICA8L2Rpdj4NCiAg
PHAgaWQ9InJlc3VsdCI+PHNwYW4gaWQ9InNjb3JlIj5KUzwvc3Bhbj48c3BhbiBpZD0ic2xhc2gi
IGNsYXNzPSJoaWRkZW4iPi88L3NwYW4+PHNwYW4+Pzwvc3Bhbj48L3A+DQogIDwhLS0gVGhlIGZv
bGxvd2luZyBsaW5lIGlzIHVzZWQgaW4gYSBudW1iZXIgb2YgdGhlIHRlc3RzLiBJdCBpcyBkb25l
IHVzaW5nIGRvY3VtZW50LndyaXRlKCkgdG8gc2lkZXN0ZXAgY29tcGxhaW50cyBvZiB2YWxpZGl0
eS4gLS0+DQogIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5kb2N1bWVudC53cml0ZSgn
PG1hcCBuYW1lPSIiPjxhcmVhIGhyZWY9IiIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMiwyLDQsNCIg
YWx0PSI8XCc+Ij48aWZyYW1lIHNyYz0iZW1wdHkucG5nIj5GQUlMPFwvaWZyYW1lPjxpZnJhbWUg
c3JjPSJlbXB0eS50eHQiPkZBSUw8XC9pZnJhbWU+PGlmcmFtZSBzcmM9ImVtcHR5Lmh0bWwiIGlk
PSJzZWxlY3RvcnMiPjxcL2lmcmFtZT48Zm9ybSBhY3Rpb249IiIgbmFtZT0iZm9ybSI+PGlucHV0
IHR5cGU9SElEREVOPjxcL2Zvcm0+PHRhYmxlPjx0cj48dGQ+PHA+PFwvdGJvZHk+IDxcL3RhYmxl
PjxcL21hcD4nKTs8L3NjcmlwdD4NCiAgPHAgaWQ9Imluc3RydWN0aW9ucyI+VG8gcGFzcyB0aGUg
dGVzdCw8c3Bhbj48L3NwYW4+IGEgYnJvd3NlciBtdXN0IHVzZSBpdHMgZGVmYXVsdCBzZXR0aW5n
cywgdGhlIGFuaW1hdGlvbiBoYXMgdG8gYmUgc21vb3RoLCB0aGUgc2NvcmUgaGFzIHRvIGVuZCBv
biAxMDAvMTAwLCBhbmQgdGhlIGZpbmFsIHBhZ2UgaGFzIHRvIGxvb2sgZXhhY3RseSwgcGl4ZWwg
Zm9yIHBpeGVsLCBsaWtlIDxhIGhyZWY9Imh0dHA6Ly9hY2lkMy5hY2lkdGVzdHMub3JnL3JlZmVy
ZW5jZS5odG1sIj50aGlzIHJlZmVyZW5jZSByZW5kZXJpbmc8L2E+LjwvcD4NCiAgPHAgaWQ9InJl
bW92ZS1sYXN0LWNoaWxkLXRlc3QiPlNjcmlwdGluZyBtdXN0IGJlIGVuYWJsZWQgdG8gdXNlIHRo
aXMgdGVzdC48L3A+DQogPC9ib2R5Pg0KPC9odG1sPg0KDQo8IS0tIFRoaXMgZG9jdW1lbnQgc2F2
ZWQgZnJvbSBodHRwOi8vYWNpZDMuYWNpZHRlc3RzLm9yZy8gLS0+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>20551</attachid>
            <date>2008-04-15 05:40:38 -0700</date>
            <delta_ts>2008-04-15 05:40:38 -0700</delta_ts>
            <desc>part of test 79 that makes WebKitGtk crash</desc>
            <filename>a3test79.htm</filename>
            <type>text/html</type>
            <size>26719</size>
            <attacher name="wellofsouls">wellofsouls</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDov
L3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+DQo8aHRtbD4NCiA8dGl0bGU+VGhlIEFj
aWQzIFRlc3Q8L3RpdGxlPg0KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgdmFy
IHN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7DQogPC9zY3JpcHQ+DQogPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4NCg0KICAvKiBzZXQgc29tZSBiYXNpYyBzdHlsZXMgc28gdGhhdCB3ZSBjYW4gZ2V0IHJl
bGlhYmx5IGV4YWN0IHJlc3VsdHMgKi8NCiAgKiB7IG1hcmdpbjogMDsgYm9yZGVyOiAxcHggYmx1
ZTsgcGFkZGluZzogMDsgYm9yZGVyLXNwYWNpbmc6IDA7IGZvbnQ6IGluaGVyaXQ7IGxpbmUtaGVp
Z2h0OiAxLjI7IGNvbG9yOiBpbmhlcml0OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfQ0KICA6
bGluaywgOnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgfQ0KDQogIC8qIGhlYWRlciBhbmQgZ2VuZXJh
bCBsYXlvdXQgKi8NCiAgaHRtbCB7IGZvbnQ6IDIwcHggQXJpYWwsIHNhbnMtc2VyaWY7IGJvcmRl
cjogMmNtIHNvbGlkIGdyYXk7IHdpZHRoOiAzMmVtOyBtYXJnaW46IDFlbTsgfQ0KICA6cm9vdCB7
IGJhY2tncm91bmQ6IHNpbHZlcjsgY29sb3I6IGJsYWNrOyBib3JkZXItd2lkdGg6IDAgMC4yZW0g
MC4yZW0gMDsgfSAvKiBsZWZ0IGFuZCB0b3AgY29udGVudCBlZGdlczogMSoyMHB4ID0gMjBweCAq
Lw0KICBib2R5IHsgcGFkZGluZzogMmVtIDJlbSAwOyBiYWNrZ3JvdW5kOiB1cmwoYWNpZDNtb2Rf
ZmlsZXMvZ2lmMDAwMDAucG5nKSBuby1yZXBlYXQgOTkuODM5MjI4MyUgMXB4IHdoaXRlOyBib3Jk
ZXI6IHNvbGlkIDFweCBibGFjazsgbWFyZ2luOiAtMC4yZW0gMCAwIC0wLjJlbTsgfSAvKiBsZWZ0
IGFuZCB0b3AgY29udGVudCBlZGdlczogMjBweC0wLjIqMjBweCsxcHgrMioyMHB4ID0gNTdweCAq
Lw0KICBoMTpmaXJzdC1jaGlsZCB7IGN1cnNvcjogaGVscDsgZm9udC1zaXplOiA1ZW07IGZvbnQt
d2VpZ2h0OiBib2xkZXI7IG1hcmdpbi1ib3R0b206IC0wLjRlbTsgdGV4dC1zaGFkb3c6IHJnYmEo
MTkyLCAxOTIsIDE5MiwgMS4wKSAzcHggM3B4OyB9IC8qIChsZWZ0OjU3cHgsIHRvcDo1N3B4KSAq
Lw0KICAjcmVzdWx0IHsgZm9udC13ZWlnaHQ6IGJvbGRlcjsgd2lkdGg6IDUuNjhlbTsgdGV4dC1h
bGlnbjogcmlnaHQ7IH0NCiAgI3Jlc3VsdCB7IGZvbnQtc2l6ZTogNWVtOyBtYXJnaW46IC0yLjE5
ZW0gMCAwOyB9IC8qIChyaWdodDo1N3B4KzUuMio1KjIwcHggPSA1NzdweCwgdG9wOjU3cHgrMS4y
KjUqMjBweC0wLjQqNSoyMHB4KzFweCsxKjQwcHgrMSo0MHB4KzFweCsyKjQwcHgrMTUwcHgtMi4x
OSo1KjIwcHggPSAyMzBweCkgKi8NCiAgLmhpZGRlbiB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQ0K
ICAjc2xhc2ggeyBjb2xvcjogcmVkOyBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDEuMCk7IH0NCiAg
I2luc3RydWN0aW9ucyB7IG1hcmdpbi10b3A6IDA7IGZvbnQtc2l6ZTogMC44ZW07IGNvbG9yOiBn
cmF5OyBjb2xvcjogLWFjaWQzLWJvZ3VzOyBoZWlnaHQ6IDYuMTI1ZW07IH0gLyogKGxlZnQ6NTdw
eCwgdG9wOjIzMHB4KzEuMio1KjIwKzAgPSAzNTBweCkgKi8NCiAgI2luc3RydWN0aW9ucyB7IG1h
cmdpbi1yaWdodDogLTIwcHg7IHBhZGRpbmctcmlnaHQ6IDIwcHg7IGJhY2tncm91bmQ6IHVybChh
Y2lkM21vZF9maWxlcy9naWYwMDAwMC5wbmcpIG5vLXJlcGVhdCB0b3AgcmlnaHQ7IH0NCiAgI2lu
c3RydWN0aW9ucyBzcGFuIHsgZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMjBweDsgbWFyZ2luLXJpZ2h0
OiAtMjBweDsgYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDogMjBweDsgfQ0KICBAZm9udC1mYWNl
IHsgZm9udC1mYW1pbHk6ICJBY2lkQWhlbVRlc3QiOyBzcmM6IHVybChhY2lkM21vZF9maWxlcy9m
b250MDAwMC50dGYpOyB9DQogIG1hcDo6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDog
MThweDsgbGVmdDogNjM4cHg7IGNvbnRlbnQ6ICJYIjsgYmFja2dyb3VuZDogZnVjaHNpYTsgY29s
b3I6IHdoaXRlOyBmb250OiAyMHB4LzEgQWNpZEFoZW1UZXN0OyB9DQogIGlmcmFtZSB7IGZsb2F0
OiBsZWZ0OyBoZWlnaHQ6IDA7IHdpZHRoOiAwOyB9IC8qIGhpZGUgaWZyYW1lcyBidXQgZG9uJ3Qg
bWFrZSB0aGVtIGRpc3BsYXk6IG5vbmUgKi8NCiAgb2JqZWN0IHsgcG9zaXRpb246IGZpeGVkOyBs
ZWZ0OiAxMzAuNXB4OyB0b3A6IDg0LjNweDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH0gLyog
c2hvdyBvYmplY3RzIGlmIHRoZXkgaGF2ZSBjb250ZW50ICovDQogIC5yZW1vdmVkIHsgcG9zaXRp
b246IGFic29sdXRlOyB0b3A6IDgwcHg7IGxlZnQ6IDM4MHB4OyBoZWlnaHQ6IDEwMHB4OyB3aWR0
aDogMTAwcHg7IG9wYWNpdHk6IDA7IH0NCg0KICAvKiBzZXQgdGhlIGxpbmUgaGVpZ2h0IG9mIHRo
ZSBsaW5lIG9mIGNvbG91cmVkIGJveGVzIHNvIHdlIGNhbiBhZGQgdGhlbSB3aXRob3V0IHRoZSBs
YXlvdXQgY2hhbmdpbmcgaGVpZ2h0ICovDQogIC5idWNrZXRzIHsgZm9udDogMC8wIEFyaWFsLCBz
YW5zLXNlcmlmOyB9DQogIC5idWNrZXRzIHsgcGFkZGluZzogMCAwIDE1MHB4IDNweDsgfQ0KDQog
IC8qIHRoZSBuZXh0IHR3byBydWxlcyBnaXZlIHRoZSBzaXggY29sb3VyZWQgYmxvY2tzIHRoZWly
IGRlZmF1bHQgc3R5bGVzICh0aGV5IG1hdGNoIHRoZSBzYW1lIGVsZW1lbnRzKTsgdGhlIHRoaXJk
IGhpZGVzIHRoZW0gKi8NCiAgOmZpcnN0LWNoaWxkICsgKiAuYnVja2V0cyBwIHsgZGlzcGxheTog
aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogMmVtOyBib3JkZXI6IDJlbSBkb3R0ZWQgcmVk
OyBwYWRkaW5nOiAxLjBlbSAwIDEuMGVtIDJlbTsgfQ0KICAqICsgKiA+ICogPiBwIHsgbWFyZ2lu
OiAwOyBib3JkZXI6IDFweCBzb2xpZCAhIGltcG9ydGFudDsgfQ0KICAueiB7IHZpc2liaWxpdHk6
IGhpZGRlbjsgfSAvKiBvbmx5IG1hdGNoZXMgdGhlIGJ1Y2tldHMgd2l0aCBubyBzY29yZSAqLw0K
DQogIC8qIHNpemVzIGZvciB0aGUgc2l4IGJ1Y2tldHMgKi8NCiAgI2J1Y2tldDEgeyBmb250LXNp
emU6IDIwcHg7IG1hcmdpbi1sZWZ0OiAwLjJlbTsgcGFkZGluZy1sZWZ0OiAxLjNlbTsgcGFkZGlu
Zy1yaWdodDogMS4zZW07IG1hcmdpbi1yaWdodDogMC4wMDAxcHg7IH0NCiAgI2J1Y2tldDIgeyBm
b250LXNpemU6IDI0cHg7IG1hcmdpbi1sZWZ0OiAwLjM3NWVtOyBwYWRkaW5nLWxlZnQ6IDMwcHg7
IHBhZGRpbmctcmlnaHQ6IDMycHg7IG1hcmdpbi1yaWdodDogMnB4OyB9DQogICNidWNrZXQzIHsg
Zm9udC1zaXplOiAyOHB4OyBtYXJnaW4tbGVmdDogOC45OTk5cHg7IHBhZGRpbmctbGVmdDogMTdw
eDsgcGFkZGluZy1yaWdodDogNTVweDsgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9DQogICNidWNrZXQ0
IHsgZm9udC1zaXplOiAzMnB4OyBtYXJnaW4tbGVmdDogMDsgcGFkZGluZy1sZWZ0OiA4NHB4OyBw
YWRkaW5nLXJpZ2h0OiAwOyBtYXJnaW4tcmlnaHQ6IDA7IH0NCiAgI2J1Y2tldDUgeyBmb250LXNp
emU6IDM2cHg7IG1hcmdpbi1sZWZ0OiAxM3B4OyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmln
aHQ6IDk0cHg7IG1hcmdpbi1yaWdodDogMjVweDsgfQ0KICAjYnVja2V0NiB7IGZvbnQtc2l6ZTog
NDBweDsgbWFyZ2luLWxlZnQ6IC0xMHB4OyBwYWRkaW5nLWxlZnQ6IDEwNHB4OyBwYWRkaW5nLXJp
Z2h0OiAtMTBweDsgfQ0KDQogIC8qIGNvbG91cnMgZm9yIHRoZW0gKi8NCiAgLnosIC56UCwgLnpQ
UCwgLnpQUFAsIC56UFBQUCwgLnpQUFBQUCB7IGJhY2tncm91bmQ6IGJsYWNrOyB9DQogIC56UFBQ
UFBQLCAuelBQUFBQUFAsIC56UFBQUFBQUFAsIC56UFBQUFBQUFAsIC56UFBQUFBQUFBQLA0KICAu
elBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBncmV5OyB9DQogIC56UFBQUFBQUFBQUFAsIC56UFBQ
UFBQUFBQUFBQLCAuelBQUFBQUFBQUFBQUFAsDQogIC56UFBQUFBQUFBQUFBQUFAsIC56UFBQUFBQ
UFBQUFBQUFBQIHsgYmFja2dyb3VuZDogc2lsdmVyOyB9DQogICNidWNrZXQxLnpQUFBQUFBQUFBQ
UFBQUFBQIHsgYmFja2dyb3VuZDogcmVkOyB9DQogICNidWNrZXQyLnpQUFBQUFBQUFBQUFBQUFBQ
IHsgYmFja2dyb3VuZDogb3JhbmdlOyB9DQogICNidWNrZXQzLnpQUFBQUFBQUFBQUFBQUFBQIHsg
YmFja2dyb3VuZDogeWVsbG93OyB9DQogICNidWNrZXQ0LnpQUFBQUFBQUFBQUFBQUFBQIHsgYmFj
a2dyb3VuZDogbGltZTsgfQ0KICAjYnVja2V0NS56UFBQUFBQUFBQUFBQUFBQUCB7IGJhY2tncm91
bmQ6IGJsdWU7IH0NCiAgI2J1Y2tldDYuelBQUFBQUFBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBw
dXJwbGU7IH0NCg0KICAvKiBUaGUgbGluZS1oZWlnaHQgZm9yIHRoZSAuYnVja2V0IGRpdiBpcyB3
b3JrZWQgb3V0IGFzIGZvbGxvd3M6DQogICAqDQogICAqIFRoZSBkaXYuYnVja2V0IGVsZW1lbnQg
aGFzIGEgbGluZSBib3ggd2l0aCBhIGZldw0KICAgKiBpbmxpbmUtYmxvY2tzLiBFYWNoIGlubGlu
ZS1ibG9jayBjb25zaXN0cyBvZjoNCiAgICoNCiAgICogICAgIDIuMGVtIHZlcnRpY2FsLWFsaWdu
IGZyb20gYmFzZWxpbmUgdG8gYm90dG9tIG9mIGlubGluZS1ibG9jaw0KICAgKiAgICAgMXB4IGJv
dHRvbSBib3JkZXINCiAgICogICAgIDEuMGVtIGJvdHRvbSBwYWRkaW5nDQogICAqICAgICAxLjBl
bSB0b3AgcGFkZGluZw0KICAgKiAgICAgMXB4IHRvcCBib3JkZXINCiAgICoNCiAgICogVGhlIGJp
Z2dlc3QgaW5saW5lLWJsb2NrIGhhcyBmb250LXNpemU6IDQwcHguDQogICAqDQogICAqIFRodXMg
dGhlIGRpc3RhbmNlIGZyb20gdGhlIGJhc2VsaW5lIHRvIHRoZSB0b3Agb2YgdGhlIGJpZ2dlc3QN
CiAgICogaW5saW5lLWJsb2NrIGlzICgyZW0rMWVtKzFlbSkqMmVtKjIwcHgrMnB4ID0gMTYycHgu
DQogICAqDQogICAqIFRoZSBsaW5lIGJveCBpdHNlbGYgaGFzIG5vIG90aGVyIGNvbnRlbnRzLCBh
bmQgaXRzIHN0cnV0IGhhcyB6ZXJvDQogICAqIGhlaWdodCBhbmQgdGhlcmUgaXMgbm8gaGFsZi1s
ZWFkaW5nLCBzbyB0aGUgaGVpZ2h0IG9mIHRoZQ0KICAgKiBkaXYuYnVja2V0IGlzIDE2MnB4Lg0K
ICAgKg0KICAgKiAoV2h5IHVzZSBsaW5lLWhlaWdodDowIGFuZCBmb250LXNpemU6MD8gV2VsbDoN
CiAgICoNCiAgICogVGhlIGRpdi5idWNrZXQgbGluZSBib3ggd291bGQgaGF2ZSBhIGhlaWdodCB0
aGF0IGlzIHRoZSBtYXhpbXVtDQogICAqIG9mIHRoZSBmb2xsb3dpbmcgdHdvIHN1bXM6DQogICAq
DQogICAqICAxOiBoYWxmLWxlYWRpbmcgKyBmb250IGRlc2NlbnQgYXQgMWVtICsgZm9udCBhc2Nl
bnQgYXQgMWVtICsgaGFsZi1sZWFkaW5nDQogICAqICAyOiBoYWxmLWxlYWRpbmcgKyBmb250IGRl
c2NlbnQgYXQgMWVtICsgMTYycHggDQogICAqDQogICAqIE5vdyB0aGUgaGFsZi1sZWFkaW5nIGlz
IChsaW5lLWhlaWdodCAtIChmb250LWFzY2VudCArIGZvbnQtZGVzY2VudCkpLzIsIHNvIHRoYXQg
aXMgcmVhbGx5Og0KICAgKg0KICAgKiAgMTogKGxpbmUtaGVpZ2h0IC0gKGZvbnQtYXNjZW50ICsg
Zm9udC1kZXNjZW50KSkvMiArIGZvbnQgZGVzY2VudCArIGZvbnQgYXNjZW50ICsgKGxpbmUtaGVp
Z2h0IC0gKGZvbnQtYXNjZW50ICsgZm9udC1kZXNjZW50KSkvMg0KICAgKiAgMjogKGxpbmUtaGVp
Z2h0IC0gKGZvbnQtYXNjZW50ICsgZm9udC1kZXNjZW50KSkvMiArIGZvbnQgZGVzY2VudCArIDE2
MnB4DQogICAqDQogICAqIFdoaWNoIHNpbXBsaWZ5IHRvOg0KICAgKg0KICAgKiAgMTogbGluZS1o
ZWlnaHQNCiAgICogIDI6IGxpbmUtaGVpZ2h0LzIgKyAoZm9udCBkZXNjZW50IC0gZm9udC1hc2Nl
bnQpLzIgKyAxNjJweA0KICAgKg0KICAgKiBTbyBpZiB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24g
aXMgdHJ1ZToNCiAgICoNCiAgICogICAgbGluZS1oZWlnaHQgPiBsaW5lLWhlaWdodC8yICsgKGZv
bnQgZGVzY2VudCAtIGZvbnQtYXNjZW50KS8yICsgMTYycHgNCiAgICoNCiAgICogVGhhdCBpcywg
aWYgdGhpcyBpcyB0cnVlOg0KICAgKg0KICAgKiAgICBsaW5lLWhlaWdodCA+IGZvbnQgZGVzY2Vu
dCAtIGZvbnQtYXNjZW50ICsgMzI0cHgNCiAgICoNCiAgICogLi4udGhlbiB0aGUgbGluZS1oZWln
aHQgbWF0dGVycywgb3RoZXJ3aXNlIHRoZSBmb250IGRvZXMuIE5vdGUNCiAgICogdGhhdCBmb250
IGRlc2NlbnQgLSBmb250LWFzY2VudCB3aWxsIGJlIGluIHRoZSByZWdpb24gb2YNCiAgICogMTBw
eC0zMHB4ICh3aXRoIEFoZW0sIGV4YWN0bHkgMTJweCkuIEhvd2V2ZXIsIGlmIHdlIG1ha2UgdGhl
DQogICAqIGxpbmUtaGVpZ2h0IGJpZywgdGhlbiB0aGUgX3Bvc2l0aW9uaW5nXyBvZiB0aGUgaW5s
aW5lLWJsb2NrcyB3aWxsDQogICAqIGRlcGVuZCBvbiB0aGUgZm9udCBkZXNjZW50LCBzaW5jZSB0
aGF0IGlzIHdoYXQgd2lsbCBkZWNpZGUgdGhlDQogICAqIGRpc3RhbmNlIGZyb20gdGhlIGJvdHRv
bSBvZiB0aGUgbGluZSBib3ggdG8gdGhlIGJhc2VsaW5lIG9mIHRoZQ0KICAgKiBibG9jayAoc2lu
Y2UgdGhlIGJhc2VsaW5lIGlzIHNldCBieSB0aGUgc3RydXQpLg0KICAgKg0KICAgKiBIb3dldmVy
LCBpbiBBY2lkMiBhIGRlcGVuZGVuY3kgb24gdGhlIGZvbnQgbWV0cmljcyB3YXMgaW50cm9kdWNl
ZA0KICAgKiBhbmQgdGhpcyBjYXVzZWQgYWxsIGtpbmRzIG9mIHByb2JsZW1zLiBBbmQgd2UgY2Fu
J3QgcmVxdWlyZSBBaGVtDQogICAqIGluIHRoZSBBY2lkIHRlc3RzLCBzaW5jZSBpdCdzIHVubGlr
ZWx5IG1vc3QgcGVvcGxlIHdpbGwgaGF2ZSBpdA0KICAgKiBpbnN0YWxsZWQuDQogICAqDQogICAq
IFdoYXQgd2Ugd2FudCBpcyBmb3IgdGhlIGZvbnQgdG8gbm90IG1hdHRlciwgYW5kIHRoZSBiYXNl
bGluZSB0bw0KICAgKiBiZSBhcyBoaWdoIGFzIHBvc3NpYmxlLiBXZSBjYW4gZG8gdGhhdCBieSBz
YXlpbmcgdGhhdCB0aGUgZm9udA0KICAgKiBhbmQgdGhlIGxpbmUtaGVpZ2h0IGFyZSB6ZXJvLg0K
ICAgKg0KICAgKiBPbmUgd29yZCBvZiB3YXJuaW5nLiBJZiB5b3VyIGJyb3dzZXIgaGFzIGEgbWlu
aW11bSBmb250IHNpemUgZmVhdHVyZQ0KICAgKiB0aGF0IGZvcmNlcyBmb250IHNpemVzIHVwIGV2
ZW4gd2hlbiB0aGVyZSBpcyBubyB0ZXh0LCB5b3Ugd2lsbCBuZWVkDQogICAqIHRvIGRpc2FibGUg
aXQgYmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0Lg0KICAgKg0KICAgKi8NCg0KICAvKiBydWxlcyBz
cGVjaWZpYyB0byB0aGUgdGVzdHMgYmVsb3cgKi8NCiAgI2luc3RydWN0aW9uczpsYXN0LWNoaWxk
IHsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3aGl0ZS1zcGFjZTogeC1ib2d1czsgfQ0KICAjbGlu
a3Rlc3Q6bGluayB7IGRpc3BsYXk6IGJsb2NrOyBjb2xvcjogcmVkOyB0ZXh0LWFsaWduOiBjZW50
ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KICAjbGlua3Rlc3QucGVuZGluZywgI2xpbmt0
ZXN0OnZpc2l0ZWQgeyBkaXNwbGF5OiBub25lOyB9DQogICNcIHsgY29sb3I6IHRyYW5zcGFyZW50
OyBjb2xvcjogaHNsYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDEwcHg7IGxl
ZnQ6IDEwcHg7IGZvbnQ6IDQwcHggQXJpYWwsIHNhbnMtc2VyaWY7IH0NCiAgI1wgICNyZXN1bHQs
ICNcICAjc2NvcmUgeyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTAlOyBsZWZ0OiAxMCU7IHdpZHRo
OiA0ZW07IHotaW5kZXg6IDE7IGNvbG9yOiB5ZWxsb3c7IGZvbnQtc2l6ZTogNTBweDsgYmFja2dy
b3VuZDogZnVjaHNpYTsgYm9yZGVyOiBzb2xpZCAxZW0gcHVycGxlOyB9DQogPC9zdHlsZT4NCg0K
IDwhLS0gcGFydCBvZiB0aGUgSFRUUCB0ZXN0cyAtLT4NCiA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9ImFjaWQzbW9kX2ZpbGVzL2VtcHR5MDAwLmh0bSI+PCEtLSB0ZXh0L2h0bWwgZmlsZSAo
c2hvdWxkIGJlIGlnbm9yZWQsIDxoMT4gd2lsbCBnbyByZWQgaWYgaXQgaXNuJ3QpIC0tPg0KDQog
PCEtLSB0aGUgbmV4dCBmaXZlIHNjcmlwdCBibG9ja3MgYXJlIHBhcnQgb2Ygb25lIG9mIHRoZSB0
ZXN0cyAtLT4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogIHZhciBkMSA9ICJm
YWlsIjsNCiAgdmFyIGQyID0gImZhaWwiOw0KICB2YXIgZDMgPSAiZmFpbCI7DQogIHZhciBkNCA9
ICJmYWlsIjsNCiAgdmFyIGQ1ID0gImZhaWwiOw0KIDwvc2NyaXB0Pg0KIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFjaWQzbW9kX2ZpbGVzL2phdmFzY3JpLmpzIj48L3Njcmlw
dD4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhY2lkM21vZF9maWxlcy9q
YXZhc2Nyai5qcyI+PC9zY3JpcHQ+DQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iYWNpZDNtb2RfZmlsZXMvamF2YXNjcmsuanMiPjwvc2NyaXB0Pg0KIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFjaWQzbW9kX2ZpbGVzL2phdmFzY3JsLmpzIj48L3Njcmlw
dD4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhY2lkM21vZF9maWxlcy9q
YXZhc2NybS5qcyI+PC9zY3JpcHQ+DQoNCiA8IS0tIHBhcnQgb2YgdGhlIEpTIHJlZ2V4cCBhbmQg
XDAgdmFsdWUgdGVzdHMgdGVzdCAtLT4NCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
DQogIHZhciBudWxsSW5SZWdleHBBcmd1bWVudFJlc3VsdCA9IDAgPCAvc2NyaXB0Ly50ZXN0KCdc
MHNjcmlwdCcpID8gInBhc3NlZCIgOiAiZmFpbGVkIjsNCiA8L3NjcmlwdD4NCg0KIDwhLS0gbWFp
biB0ZXN0IGJvZHkgLS0+DQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICB2YXIg
bm90aWZpY2F0aW9ucyA9IHt9Ow0KICBmdW5jdGlvbiBub3RpZnkoZmlsZSkgew0KICAgIC8vIHVz
ZWQgaW4gY3Jvc3MtZmlsZSB0ZXN0cw0KICAgIG5vdGlmaWNhdGlvbnNbZmlsZV0gPSAxOw0KICB9
DQogIGZ1bmN0aW9uIGZhaWwobWVzc2FnZSkgew0KICAgIHRocm93IHsgbWVzc2FnZTogbWVzc2Fn
ZSB9Ow0KICB9DQogIGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHsNCiAgICBp
ZiAoIWNvbmRpdGlvbikNCiAgICAgIGZhaWwobWVzc2FnZSk7DQogIH0NCiAgZnVuY3Rpb24gYXNz
ZXJ0RXF1YWxzKGV4cHJlc3Npb24sIHZhbHVlLCBtZXNzYWdlKSB7DQogICAgaWYgKGV4cHJlc3Np
b24gIT0gdmFsdWUpIHsNCiAgICAgIGV4cHJlc3Npb24gPSAoIiIrZXhwcmVzc2lvbikucmVwbGFj
ZSgvW1xyXG5dKy9nLCAiXFxuIik7DQogICAgICB2YWx1ZSA9ICgiIit2YWx1ZSkucmVwbGFjZSgv
XHI/XG4vZywgIlxcbiIpOw0KICAgICAgZmFpbCgiZXhwZWN0ZWQgJyIgKyB2YWx1ZSArICInIGJ1
dCBnb3QgJyIgKyBleHByZXNzaW9uICsgIicgLSAiICsgbWVzc2FnZSk7DQogICAgfQ0KICB9DQog
IGZ1bmN0aW9uIGdldFRlc3REb2N1bWVudCgpIHsNCiAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNlbGVjdG9ycyIpOw0KICAgIHZhciBkb2MgPSBpZnJhbWUuY29udGVu
dERvY3VtZW50Ow0KICAgIGZvciAodmFyIGkgPSBkb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9k
ZXMubGVuZ3RoLTE7IGkgPj0gMDsgaSAtPSAxKQ0KICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5y
ZW1vdmVDaGlsZChkb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXNbaV0pOw0KICAgIGRvYy5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnQoJ2hlYWQnKSk7DQog
ICAgZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVF
bGVtZW50KCd0aXRsZScpKTsNCiAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRv
Yy5jcmVhdGVFbGVtZW50KCdib2R5JykpOw0KICAgIHJldHVybiBkb2M7DQogIH0NCiAgZnVuY3Rp
b24gc2VsZWN0b3JUZXN0KHRlc3Rlcikgew0KICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQo
KTsNCiAgICB2YXIgc3R5bGUgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsNCiAgICBzdHls
ZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIiogeyB6LWluZGV4OiAwOyBwb3NpdGlv
bjogYWJzb2x1dGU7IH1cbiIpKTsNCiAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQu
YXBwZW5kQ2hpbGQoc3R5bGUpOw0KICAgIHZhciBydWxlQ291bnQgPSAwOw0KICAgIHRlc3Rlcihk
b2MsIGZ1bmN0aW9uIChzZWxlY3Rvcikgew0KICAgICAgICBydWxlQ291bnQgKz0gMTsNCiAgICAg
ICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHNlbGVjdG9yICsgIiB7IHot
aW5kZXg6ICIgKyBydWxlQ291bnQgKyAiOyB9XG4iKSk7DQogICAgICAgIHJldHVybiBydWxlQ291
bnQ7DQogICAgICB9LCBmdW5jdGlvbihub2RlLCBydWxlLCBtZXNzYWdlKSB7DQogICAgICAgIHZh
ciB2YWx1ZSA9IGRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsICIiKS56SW5k
ZXg7DQogICAgICAgIGFzc2VydCh2YWx1ZSAhPSAnYXV0bycsICJ1bmRlcmx5aW5nIHByb2JsZW1z
IHByZXZlbnQgdGhpcyB0ZXN0IGZyb20gcnVubmluZyBwcm9wZXJseSIpOw0KICAgICAgICBhc3Nl
cnRFcXVhbHModmFsdWUsIHJ1bGUsIG1lc3NhZ2UpOw0KICAgIH0pOw0KICB9DQogIHZhciBrdW5n
RnVEZWF0aEdyaXAgPSBudWxsOyAvLyB1c2VkIHRvIGhvbGQgdGhpbmdzIGZyb20gdGVzdCB0byB0
ZXN0DQogIHZhciB0ZXN0cyA9IFsNCg0KICAgICAgICBmdW5jdGlvbiAoKSB7DQogICAgICAvLyB0
ZXN0IDc5OiBhIGdpYW50IHRlc3QgZm9yIDxzdmc6Zm9udD4sIGZyb20gQ2FtZXJvbiBNY0Nvcm1h
Y2sNCiAgICAgIC8vIFRoaXMgdGVzdHMgdmFyaW91cyBmZWF0dXJlcyBvZiBTVkcgZm9udHMgZnJv
bSBTVkcgMS4xLiAgSXQgY29uc2lzdHMgb2YNCiAgICAgIC8vIGEgPHRleHQ+IGVsZW1lbnQgd2l0
aCAzMyBjaGFyYWN0ZXJzLCBzdHlsZWQgdXNpbmcgYW4gU1ZHIGZvbnQgdGhhdCBoYXMNCiAgICAg
IC8vIGRpZmZlcmVudCBhZHZhbmNlIHZhbHVlcyBmb3IgZWFjaCBnbHlwaC4gIFRoZSBzY3JpcHQg
dXNlcw0KICAgICAgLy8gU1ZHVGV4dEVsZW1lbnRDb250ZW50LmdldFN0YXJ0UG9zaXRpb25PZkNo
YXIoKSB0byBkZXRlcm1pbmUgd2hlcmUgdGhlDQogICAgICAvLyBnbHlwaCBjb3JyZXNwb25kaW5n
IHRvIGVhY2ggY2hhcmFjdGVyIHdhcyBwbGFjZWQsIGFuZCB0aHVzIHRvIHdvcmsgb3V0DQogICAg
ICAvLyB3aGV0aGVyIHRoZSBTVkcgZm9udCB3YXMgdXNlZCBjb3JyZWN0bHkuDQogICAgICAvLw0K
ICAgICAgLy8gVGhlIGZvbnQgdXNlcyAxMDAgdW5pdHMgcGVyIGVtLCBhbmQgdGhlIHRleHQgaXMg
c2V0IGluIDEwMHB4LiAgU2luY2UNCiAgICAgIC8vIGZvbnQtc2l6ZSBnaXZlcyB0aGUgc2l6ZSBv
ZiB0aGUgZW0gYm94DQogICAgICAvLyAoaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvdGV4dC5o
dG1sI0RPTUludGVyZmFjZXMpLCB0aGUgc2NhbGUgb2YgdGhlDQogICAgICAvLyBjb29yZGluYXRl
IHN5c3RlbSBmb3IgdGhlIGdseXBocyBpcyB0aGUgc2FtZSBhcyB0aGUgU1ZHIGRvY3VtZW50Lg0K
ICAgICAgLy8NCiAgICAgIC8vIFRoZSBleHBlY3RlZEFkdmFuY2VzIGFycmF5IGhvbGRzIHRoZSBl
eHBlY3RlZCBhZHZhbmNlIHZhbHVlIGZvciBlYWNoDQogICAgICAvLyBjaGFyYWN0ZXIsIGFuZCBl
eHBlY3RlZEtlcm5pbmcgaG9sZHMgdGhlIChuZWdhdGl2ZSkga2VybmluZyBmb3IgZWFjaA0KICAg
ICAgLy8gY2hhcmFjdGVyLiAgZ2V0UG9zaXRpb25PZkNoYXIoKSByZXR1cm5zIHRoZSBhY3R1YWwg
eCBjb29yZGluYXRlIGZvciB0aGUNCiAgICAgIC8vIGdseXBoLCBjb3JyZXNwb25kaW5nIHRvIHRo
ZSBnaXZlbiBjaGFyYWN0ZXIsIGFuZCBpZiBtdWx0aXBsZSBjaGFyYWN0ZXJzDQogICAgICAvLyBj
b3JyZXNwb25kIHRvIHRoZSBzYW1lIGdseXBoLCB0aGUgc2FtZSBwb3NpdGlvbiB2YWx1ZSBpcyBy
ZXR1cm5lZCBmb3INCiAgICAgIC8vIGVhY2ggb2YgdGhvc2UgY2hhcmFjdGVycy4NCiAgICAgIC8v
DQogICAgICAvLyBIZXJlIGFyZSB0aGUgcmVhc29uaW5ncyBmb3IgdGhlIGFkdmFuY2Uva2Vybmlu
ZyB2YWx1ZXMuICBOb3RlIHRoYXQgZm9yDQogICAgICAvLyBhIGdpdmVuIGNoYXJhY3RlciBhdCBp
bmRleCBpLCB0aGUgZXhwZWN0ZWQgcG9zaXRpb24gaXMNCiAgICAgIC8vIHN1bShleHBlY3RlZEFk
dmFuY2VzWzA6aS0xXSArIGV4cGVjdGVkS2VybmluZ1swOmktMV0pLg0KICAgICAgLy8NCiAgICAg
IC8vIGNoYXIgICAgIGFkdmFuY2UgIGtlcm5pbmcgIHJlYXNvbmluZw0KICAgICAgLy8gLS0tLS0t
LSAgLS0tLS0tLSAgLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAgICAgIC8vIEEgICAgICAgIDEwMDAwICAgIDAgICAgICAgIE5vcm1h
bCBjaGFyYWN0ZXIgbWFwcGluZyB0byBhIHNpbmdsZSBnbHlwaC4NCiAgICAgIC8vIEIgICAgICAg
IDAgICAgICAgIDAgICAgICAgIEZpcnN0IGNoYXJhY3RlciBvZiBhIHR3byBjaGFyYWN0ZXIgZ2x5
cGgsIHNvIHRoZQ0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBw
b3NpdGlvbiBpc24ndCBhZHZhbmNlZCB1bnRpbCB0aGUgc2Vjb25kDQogICAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIuDQogICAgICAvLyBDICAgICAgICAyMDAgICAg
ICAwICAgICAgICBTZWNvbmQgY2hhcmFjdGVyIG9mIGEgdHdvIGNoYXJhY3RlciBnbHlwaCwgc28g
bm93DQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcG9zaXRpb24gaXMg
YWR2YW5jZWQuDQogICAgICAvLyBCICAgICAgICAzMDAgICAgICAwICAgICAgICBBbHRob3VnaCB0
aGVyZSBpcyBhIGdseXBoIGZvciAiQkMiIGluIHRoZSBmb250LA0KICAgICAgLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXQgYXBwZWFycyBhZnRlciB0aGUgZ2x5cGggZm9yICJCIiwgc28g
dGhlIHNpbmdsZQ0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVy
IGdseXBoIGZvciAiQiIgc2hvdWxkIGJlIGNob3NlbiBpbnN0ZWFkLg0KICAgICAgLy8gRCAgICAg
ICAgMTEwMCAgICAgMCAgICAgICAgTm9ybWFsIGNoYXJhY3RlciBtYXBwaW5nIHRvIGEgc2luZ2xl
IGdseXBoLg0KICAgICAgLy8gQSAgICAgICAgMTAwMDAgICAgMjAwICAgICAgS2VybmluZyBvZiAt
MjAwIGlzIHNwZWNpZmllZCBpbiB0aGUgZm9udCBiZXR3ZWVuDQogICAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGUgIkEiIGFuZCAiRUUiIGdseXBocy4NCiAgICAgIC8vIEUgICAg
ICAgIDAgICAgICAgIDAgICAgICAgIFRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSB0d28gY2hhcmFj
dGVyIGdseXBoICJFRSIuDQogICAgICAvLyBFICAgICAgICAxMzAwICAgICAwICAgICAgICBUaGUg
c2Vjb25kIGNoYXJhY3RlciBvZiBhIHR3byBjaGFyYWN0ZXIgZ2x5cGguDQogICAgICAvLyBVICAg
ICAgICAwICAgICAgICAwICAgICAgICBUaGlzIGlzIGEgZ2x5cGggZm9yIHRoZSBzaXggY2hhcmFj
dGVycyAiVSswMDQ2IiwNCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNo
IGhhcHBlbiB0byBsb29rIGxpa2UgYSB2YWxpZCB1bmljb2RlIHJhbmdlLg0KICAgICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0ZXN0cyB0aGF0IHRoZSA8Z2x5cGggdW5pY29k
ZT0iIj4gaW4gdGhlDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250IG1h
dGNoZXMgZXhhY3Qgc3RyaW5ncyByYXRoZXIgdGhhbiBhIHJhbmdlLA0KICAgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXMgdXNlZCBpbiB0aGUga2VybmluZyBlbGVtZW50cy4NCiAg
ICAgIC8vICsgICAgICAgIDAgICAgICAgIDAgICAgICAgIFNlY29uZCBjaGFyYWN0ZXIgb2Ygc2l4
IGNoYXJhY3RlciBnbHlwaC4NCiAgICAgIC8vIDAgICAgICAgIDAgICAgICAgIDAgICAgICAgIFRo
aXJkIGNoYXJhY3RlciBvZiBzaXggY2hhcmFjdGVyIGdseXBoLg0KICAgICAgLy8gMCAgICAgICAg
MCAgICAgICAgMCAgICAgICAgRm91cnRoIGNoYXJhY3RlciBvZiBzaXggY2hhcmFjdGVyIGdseXBo
Lg0KICAgICAgLy8gNCAgICAgICAgMCAgICAgICAgMCAgICAgICAgRmlmdGggY2hhcmFjdGVyIG9m
IHNpeCBjaGFyYWN0ZXIgZ2x5cGguDQogICAgICAvLyA2ICAgICAgICAxNzAwICAgICAwICAgICAg
ICBTaXh0aCBjaGFyYWN0ZXIgb2Ygc2l4IGNoYXJhY3RlciBnbHlwaC4NCiAgICAgIC8vIFUgICAg
ICAgIDAgICAgICAgIDAgICAgICAgIFRoZSBzYW1lIHNpeCBjaGFyYWN0ZXIgZ2x5cGggdGhhdCBs
b29rcyBsaWtlIGENCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGUg
cmFuZ2UuICBPbmUgb2YgdGhlIGtlcm5pbmcgZWxlbWVudHMgaGFzDQogICAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1MT0iVSswMDQ2IiB1Mj0iVSswMDQ2Iiwgd2hpY2ggc2hvdWxk
bid0IG1hdGNoDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBiZWNh
dXNlIHRob3NlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkDQogICAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcyBVbmljb2RlIHJhbmdlcyBpZiB0aGV5IGFyZSwgYW5kIG5vcm1h
bA0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5ncyBvdGhlcndpc2Uu
ICBUaHVzIHRoZXJlIHNob3VsZCBiZSBubw0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2VybmluZyBiZXR3ZWVuIHRoZXNlIHR3byBnbHlwaHMuDQogICAgICAvLyBHICAgICAg
ICAyMzAwICAgICAyMDAgICAgICBLZXJuaW5nIGlzIGJldHdlZW4gdGhpcyBjaGFyYWN0ZXIgYW5k
IHRoZSBuZXh0DQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRyIsIHNpbmNl
IHRoZXJlIGlzIGFuIDxoa2Vybj4gZWxlbWVudCB0aGF0DQogICAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1c2VzIGEgVW5pY29kZSByYW5nZSBvbiBpdHMgdTE9IiIgYXR0cmlidXRl
DQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYSBnbHlwaCBuYW1lIG9u
IGl0cyBnMj0iIiBhdHRyaWJ1dGUgd2hpY2gNCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvdGggbWF0Y2ggIkciLg0KICAgICAgLy8gRyAgICAgICAgMjMwMCAgICAgMCAgICAg
ICAgTm9ybWFsIGNoYXJhY3RlciB3aXRoIGtlcm5pbmcgYmVmb3JlIGl0Lg0KICAgICAgLy8gSCAg
ICAgICAgMzEwMCAgICAgMCAgICAgICAgQSBnbHlwaCB3aXRoIGdyYXBoaWNhbCBjb250ZW50IGRl
c2NyaWJpbmcgdGhlDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCwg
cmF0aGVyIHRoYW4gYSBkPSIiIGF0dHJpYnV0ZS4NCiAgICAgIC8vIEkgICAgICAgIDQzMDAgICAg
IDAgICAgICAgIEdseXBocyBhcmUgY2hlY2tlZCBpbiBkb2N1bWVudCBvcmRlciBmb3Igb25lDQog
ICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG1hdGNoZXMsIGJ1dCB0aGUg
Zmlyc3QgZ2x5cGggd2l0aA0KICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5p
Y29kZT0iSSIgYWxzbyBoYXMgbGFuZz0iemgiLCB3aGljaCBkaXNxdWFsaWZpZXMNCiAgICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LiAgVGh1cyB0aGUgc2Vjb25kIGdseXBoIHdp
dGggdW5pY29kZT0iSSINCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNo
b3Nlbi4NCiAgICAgIC8vIEkgICAgICAgIDQxMDAgICAgIDAgICAgICAgIFNpbmNlIHRoaXMgSSBo
YXMgeG1sOmxhbmc9InpoIiBvbiBpdCBpbiB0aGUgdGV4dCwNCiAgICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBnbHlwaCB3aXRoIGxhbmc9InpoIiBtYXRjaGVzLg0K
ICAgICAgLy8gSiAgICAgICAgNDcwMCAgICAgLTQ3MDAgICAgQSBub3JtYWwgZ2x5cGggd2l0aCBr
ZXJuaW5nIGJldHdlZW4gdGhlICJKIiBhbmQgdGhlDQogICAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXh0IGdseXBoICJBIiBlcXVhbCB0byB0aGUgYWR2YW5jZSBvZiB0aGUgIkoi
DQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCwgc28gdGhlIHBvc2l0
aW9uIHNob3VsZCBzdGF5IHRoZSBzYW1lLg0KICAgICAgLy8gQSAgICAgICAgMTAwMDAgICAgMCAg
ICAgICAgTm9ybWFsIGdseXBoIHdpdGgga2VybmluZyBiZWZvcmUgaXQuDQogICAgICAvLyBLICAg
ICAgICA1OTAwICAgICAwICAgICAgICBUaGUgZmlyc3QgZ2x5cGggd2l0aCB1bmljb2RlPSJLIiBk
b2VzIG5vdCBtYXRjaCwNCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmNl
IGl0IGhhcyBvcmllbnRhdGlvbj0idiIsIHNvIHRoZSBzZWNvbmQNCiAgICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdseXBoIHdpdGggdW5pY29kZT0iSyIgaXMgY2hvc2VuLg0KICAg
ICAgLy8gPHNwYz4gICAgNjEwMCAgICAgMCAgICAgICAgVGhlIHNwYWNlIGNoYXJhY3RlciBzaG91
bGQgc2VsZWN0IHRoZSBnbHlwaCB3aXRoDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bmljb2RlPSIgIiwgZGVzcGl0ZSBpdCBoYXZpbmcgYSBtaXNsZWFkaW5nDQogICAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaC1uYW1lPSJMIi4NCiAgICAgIC8vIEwg
ICAgICAgIDY3MDAgICAgIDAgICAgICAgIFRoZSAiTCIgY2hhcmFjdGVyIHNob3VsZCBzZWxlY3Qg
dGhlIGdseXBoIHdpdGgNCiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNv
ZGU9IiAiLCBkZXNwaXRlIGl0IGhhdmluZyBhIG1pc2xlYWRpbmcNCiAgICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdseXBoLW5hbWU9InNwYWNldiIuDQogICAgICAvLyBBICAgICAg
ICAyOTAwICAgICAwICAgICAgICBBbiA8YWx0R2x5cGg+IGVsZW1lbnQgaXMgdXNlZCB0byBzZWxl
Y3QgdGhlDQogICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBmb3IgVSsx
MDA4NSBpbnN0ZWFkIG9mIHRoZSBvbmUgZm9yICJBIi4NCiAgICAgIC8vIFUrMTAwODUgIDI5MDAg
ICAgIDAgICAgICAgIFRlc3RzIGdseXBoIHNlbGVjdGlvbiB3aXRoIGEgbm9uLXBsYW5lLTANCiAg
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlci4NCiAgICAgIC8vIEEg
ICAgICAgIDEwMDAwICAgIDAgICAgICAgIEEgZmluYWwgbm9ybWFsIGNoYXJhY3Rlci4NCiAgICAg
IC8vDQogICAgICAvLyBJbiBhZGRpdGlvbiwgdGhlIHNjcmlwdCB0ZXN0cyB0aGUgdmFsdWUgcmV0
dXJuZWQgYnkNCiAgICAgIC8vIFNWR1RleHRDb250ZW50RWxlbWVudC5nZXROdW1iZXJPZkNoYXJz
KCksIHdoaWNoIGluIHRoaXMgY2FzZSBzaG91bGQgYmUgMzQuDQogICAgICAvLyBJZiBpdCByZXR1
cm5lZCAzMywgdGhlbiBpdCBpbmNvcnJlY3RseSBjb3VudGVkIFVuaWNvZGUgY2hhcmFjdGVycyBp
bnN0ZWFkDQogICAgICAvLyBvZiBVVEYtMTYgY29kZXBvaW50cyAocHJvYmFibHkpLg0KICAgICAg
Ly8NCiAgICAgIC8vIFNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mb250cy5odG1sIGZv
ciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBnbHlwaA0KICAgICAgLy8gbWF0Y2hpbmcgcnVsZXMsIGFu
ZCBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS90ZXh0Lmh0bWwjRE9NSW50ZXJmYWNlcw0KICAg
ICAgLy8gZm9yIGEgZGVzY3JpcHRpb24gb2YgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigpIGFuZCBn
ZXROdW1iZXJPZkNoYXJzKCkuDQogICAgICAvLw0KICAgICAgLy8gTm90ZSBhbHNvIHRoYXQgdGhl
IHRlc3QgdXNlcyBET01JbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpIHRvIGNyZWF0ZQ0K
ICAgICAgLy8gdGhlIFNWRyBkb2N1bWVudC4gIFRoaXMgc2VlbXMgdG8gY2F1c2UgYnJvd3NlcnMg
dHJvdWJsZSBmb3IgdGhlIFNWRyBET00NCiAgICAgIC8vIGludGVyZmFjZXMsIHNpbmNlIHRoZSBk
b2N1bWVudCBpc24ndCBiZWluZyAicmVuZGVyZWQiIGFzIGl0IG1pZ2h0IGJlDQogICAgICAvLyBp
ZiBpdCB3ZXJlIGluIGFuIDxpZnJhbWU+LiAgQ2hhbmdpbmcgdGhlIHRlc3QgdG8gdXNlIGFuIDxp
ZnJhbWU+IHdpbGwNCiAgICAgIC8vIGF0IGxlYXN0IGxldCB5b3Ugc2VlIHRoZSBtYWluIHBhcnQg
b2YgdGhlIHRlc3QgcnVubmluZy4NCgkNCgl2YXIga3VuZ0Z1RGVhdGhHcmlwID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgncCcpOw0KICAgICAga3VuZ0Z1RGVhdGhHcmlwLmNsYXNzTmFtZSA9ICdy
ZW1vdmVkJzsNCiAgICAgIHZhciBpZnJhbWUsIG9iamVjdDsNCiAgICAgLy8gb2JqZWN0IGlmcmFt
ZQ0KICAgICAgb2JqZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2JqZWN0Jyk7DQogICAg
ICBvYmplY3Qub25sb2FkID0gZnVuY3Rpb24gKCkgeyBrdW5nRnVEZWF0aEdyaXAudGl0bGUgKz0g
JzInIH07DQogICAgICBvYmplY3QuZGF0YSA9ICJzdmcueG1sIjsNCiAgICAgIGt1bmdGdURlYXRo
R3JpcC5hcHBlbmRDaGlsZChvYmplY3QpOw0KICAgICAgLy8gYWRkIHRoZSBsb3QgdG8gdGhlIGRv
Y3VtZW50DQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXAnKVswXS5hcHBl
bmRDaGlsZChrdW5nRnVEZWF0aEdyaXApOyANCglhbGVydChrdW5nRnVEZWF0aEdyaXApOw0KDQog
ICAgICB2YXIgTlMgPSB7IA0KICAgICAgICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZycsDQogICAgICAgIHhtbDogJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScs
DQogICAgICAgIHhsaW5rOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycNCiAgICAgIH07
DQoNCiAgICAgIHZhciBkb2MgPSBrdW5nRnVEZWF0aEdyaXAuY2hpbGROb2Rlc1swXS5jb250ZW50
RG9jdW1lbnQ7DQoNCiAgICAgIHdoaWxlIChkb2MuaGFzQ2hpbGROb2RlcygpKQ0KICAgICAgICBk
b2MucmVtb3ZlQ2hpbGQoZG9jLmZpcnN0Q2hpbGQpOw0KICAgICAgZG9jLmFwcGVuZENoaWxkKGRv
Yy5jcmVhdGVFbGVtZW50TlMoTlMuc3ZnLCAic3ZnOnN2ZyIpKTsNCg0KICAgICAgdmFyIGUgPSBm
dW5jdGlvbiAobiwgYXMsIGNzKSB7DQogICAgICAgIHZhciBlbHQgPSBkb2MuY3JlYXRlRWxlbWVu
dE5TKE5TLnN2Zywgbik7DQogICAgICAgIGlmIChhcykgew0KICAgICAgICAgIGZvciAodmFyIGFu
IGluIGFzKSB7DQogICAgICAgICAgICB2YXIgaWR4ID0gYW4uaW5kZXhPZignOicpOw0KICAgICAg
ICAgICAgdmFyIG5zID0gbnVsbDsNCiAgICAgICAgICAgIGlmIChpZHggIT0gLTEpDQogICAgICAg
ICAgICAgIG5zID0gTlNbYW4uc3Vic3RyaW5nKDAsIGlkeCldOw0KICAgICAgICAgICAgZWx0LnNl
dEF0dHJpYnV0ZU5TKG5zLCBhbiwgYXNbYW5dKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICAgICAgaWYgKGNzKSB7DQogICAgICAgICAgZm9yICh2YXIgaSBpbiBjcykgew0KICAgICAgICAg
ICAgdmFyIGMgPSBjc1tpXTsNCiAgICAgICAgICAgIGVsdC5hcHBlbmRDaGlsZCh0eXBlb2YgYyA9
PSAnc3RyaW5nJyA/IGRvYy5jcmVhdGVUZXh0Tm9kZShjKSA6IGMpOw0KICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KICAgICAgICByZXR1cm4gZWx0Ow0KICAgICAgfQ0KDQogICAgICBkb2MuZG9jdW1l
bnRFbGVtZW50LmFwcGVuZENoaWxkKGUoJ2ZvbnQnLCB7ICdob3Jpei1hZHYteCc6ICcxMDAwMCd9
LCBbZSgnZm9udC1mYWNlJywgeyAnZm9udC1mYW1pbHknOiAnSENsJywgJ3VuaXRzLXBlci1lbSc6
ICcxMDAnLCAnYXNjZW50JzogJzEwMDAnLCAnZGVzY2VudCc6ICc1MDAnfSksIGUoJ21pc3Npbmct
Z2x5cGgnLCBudWxsLCBbZSgncGF0aCcsIHsgJ2QnOiAnTTEwMCwwIGg4MDAgdi0xMDAgaC04MDAg
eid9KV0pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnQScsICdkJzogJ00xMDAsMCBoMTAwIHYt
MTAwIGgtMTAwIHonfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdCQycsICdkJzogJ00xMDAs
MCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnMjAwJ30pLCBlKCdnbHlwaCcs
IHsgJ3VuaWNvZGUnOiAnQicsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9y
aXotYWR2LXgnOiAnMzAwJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnQycsICdkJzogJ00x
MDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnNTAwJ30pLCBlKCdnbHlw
aCcsIHsgJ3VuaWNvZGUnOiAnQkQnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6Jywg
J2hvcml6LWFkdi14JzogJzcwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0QnLCAnZCc6
ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzExMDAnfSksIGUo
J2dseXBoJywgeyAndW5pY29kZSc6ICdFRScsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAw
IHonLCAnaG9yaXotYWR2LXgnOiAnMTMwMCcsICAnZ2x5cGgtbmFtZSc6ICdncmFwZWZydWl0J30p
LCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnVSswMDQ2JywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0x
MDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICcxNzAwJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNv
ZGUnOiAnRicsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgn
OiAnMTkwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0cnLCAnZCc6ICdNMTAwLDAgaDEw
MCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzIzMDAnLCAnZ2x5cGgtbmFtZSc6ICdn
ZWUnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdcdUQ4MDBcdURDODUnLCAnZCc6ICdNMTAw
LDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzI5MDAnLCAnaWQnOiAnYXN0
cmFsJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnSCcsICdob3Jpei1hZHYteCc6ICczMTAw
J30sIFtlKCdwYXRoJywgeyAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6J30pXSksIGUo
J2dseXBoJywgeyAndW5pY29kZSc6ICdJJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAg
eicsICdob3Jpei1hZHYteCc6ICc0MTAwJywgJ2xhbmcnOiAnemgnfSksIGUoJ2dseXBoJywgeyAn
dW5pY29kZSc6ICdJJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1h
ZHYteCc6ICc0MzAwJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnSicsICdkJzogJ00xMDAs
MCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnNDcwMCd9KSwgZSgnZ2x5cGgn
LCB7ICd1bmljb2RlJzogJ0snLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hv
cml6LWFkdi14JzogJzUzMDAnLCAnb3JpZW50YXRpb24nOiAndid9KSwgZSgnZ2x5cGgnLCB7ICd1
bmljb2RlJzogJ0snLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFk
di14JzogJzU5MDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICcgJywgJ2QnOiAnTTEwMCww
IGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICc2MTAwJywgJ2dseXBoLW5hbWUn
OiAnTCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0wnLCAnZCc6ICdNMTAwLDAgaDEwMCB2
LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzY3MDAnLCAnZ2x5cGgtbmFtZSc6ICdzcGFj
ZSd9KSwgZSgnaGtlcm4nLCB7ICd1MSc6ICdBJywgJ3UyJzogJ0VFJywgJ2snOiAnMTAwMCd9KSwg
ZSgnaGtlcm4nLCB7ICd1MSc6ICdBJywgJ2cyJzogJ2dyYXBlZnJ1aXQnLCAnayc6ICctMjAwJ30p
LCBlKCdoa2VybicsIHsgJ3UxJzogJ1UrMDA0NicsICd1Mic6ICdVKzAwNDYnLCAnayc6ICctMjAw
J30pLCBlKCdoa2VybicsIHsgJ3UxJzogJ1UrMDA0Ny0wMDQ3JywgJ2cyJzogJ2dlZScsICdrJzog
Jy0yMDAnfSksIGUoJ2hrZXJuJywgeyAndTEnOiAnSicsICd1Mic6ICdBJywgJ2snOiAnNDcwMCd9
KV0pKTsNCiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZSgndGV4dCcsIHsg
J3knOiAnMTAwJywgJ2ZvbnQtZmFtaWx5JzogJ0hDbCcsICdmb250LXNpemUnOiAnMTAwcHgnLCAn
bGV0dGVyLXNwYWNpbmcnOiAnMHB4JywgJ3dvcmQtc3BhY2luZyc6ICcwcHgnfSwgWydBQkNCREFF
RVUrMDA0NlUrMDA0NkdHSEknLCBlKCd0c3BhbicsIHsgJ3htbDpsYW5nJzogJ3poJ30sIFsnSSdd
KSwgJ0pBSyBMJywgZSgnYWx0R2x5cGgnLCB7ICd4bGluazpocmVmJzogJyNhc3RyYWwnfSwgWydB
J10pLCAnXHVEODAwXHVEQzg1QSddKSk7DQoNCiAgICAgIHJldHVybiA1Ow0KICAgIH0NCiAgXTsN
CiAgdmFyIGxvZyA9ICcnOw0KICB2YXIgZGVsYXkgPSAxMDsNCiAgdmFyIHNjb3JlID0gMCwgaW5k
ZXggPSAwLCByZXRyeSA9IDAsIGVycm9ycyA9IDA7DQogIGZ1bmN0aW9uIHVwZGF0ZSgpIHsNCiAg
ICB2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZScpOyAvLyBub3QgY2Fj
aGVkIGJ5IEpTDQogICAgc3Bhbi5uZXh0U2libGluZy5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7
IC8vIG5vLW9wIGFmdGVyIGZpcnN0IGxvb3ANCiAgICBzcGFuLm5leHRTaWJsaW5nLm5leHRTaWJs
aW5nLmZpcnN0Q2hpbGQuZGF0YSA9IHRlc3RzLmxlbmd0aDsgLy8gbm8tb3AgYWZ0ZXIgZmlyc3Qg
bG9vcA0KICAgIGlmIChpbmRleCA8IHRlc3RzLmxlbmd0aCkgew0KICAgICAgdmFyIHplcm9QYWRk
ZWRJbmRleCA9IGluZGV4IDwgMTAgPyAnMCcgKyBpbmRleCA6IGluZGV4Ow0KICAgICAgdHJ5IHsN
CiAgICAgICAgdmFyIGJlZm9yZVRlc3QgPSBuZXcgRGF0ZSgpOw0KICAgICAgICB2YXIgcmVzdWx0
ID0gdGVzdHNbaW5kZXhdKCk7DQogICAgICAgIHZhciBlbGFwc2VkVGVzdCA9IG5ldyBEYXRlKCkg
LSBiZWZvcmVUZXN0Ow0KICAgICAgICBpZiAocmVzdWx0ID09ICJyZXRyeSIpIHsNCiAgICAgICAg
ICAvLyBzb21lIHRlc3RzIHVzZXMgdGhpcyBtYWdpY2FsIG1lY2hhbmlzbSB0byB3YWl0IGZvciBz
dXBwb3J0IGZpbGVzIHRvIGxvYWQNCiAgICAgICAgICAvLyB3ZSB3aWxsIGdpdmUgdGhpcyB0ZXN0
IDUwMCBhdHRlbXB0cyAoNTAwMG1zKSBiZWZvcmUgYWJvcnRpbmcNCiAgICAgICAgICByZXRyeSAr
PSAxOw0KICAgICAgICAgIGlmIChyZXRyeSA8IDUwMCkgew0KICAgICAgICAgICAgc2V0VGltZW91
dCh1cGRhdGUsIGRlbGF5KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICB9DQogICAg
ICAgICAgZmFpbCgidGltZW91dCAtLSBjb3VsZCBiZSBhIG5ldHdvcmtpbmcgaXNzdWUiKTsNCiAg
ICAgICAgfSBlbHNlIGlmIChyZXN1bHQpIHsNCiAgICAgICAgICB2YXIgYnVja2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldCcgKyByZXN1bHQpOw0KICAgICAgICAgIGlmIChidWNr
ZXQpDQogICAgICAgICAgICBidWNrZXQuY2xhc3NOYW1lICs9ICdQJzsNCiAgICAgICAgICBzY29y
ZSArPSAxOw0KICAgICAgICAgIGlmIChyZXRyeSA+IDApIHsNCiAgICAgICAgICAgIGVycm9ycyAr
PSAxOw0KICAgICAgICAgICAgbG9nICs9ICJUZXN0ICIgKyB6ZXJvUGFkZGVkSW5kZXggKyAiIHBh
c3NlZCwgYnV0IHRvb2sgIiArIHJldHJ5ICsgIiBhdHRlbXB0cyAobGVzcyB0aGFuIHBlcmZlY3Qp
LlxuIjsNCiAgICAgICAgICB9IGVsc2UgaWYgKGVsYXBzZWRUZXN0ID4gMzMpIHsgLy8gMzBmcHMN
CiAgICAgICAgICAgIGVycm9ycyArPSAxOw0KICAgICAgICAgICAgbG9nICs9ICJUZXN0ICIgKyB6
ZXJvUGFkZGVkSW5kZXggKyAiIHBhc3NlZCwgYnV0IHRvb2sgIiArIGVsYXBzZWRUZXN0ICsgIm1z
IChsZXNzIHRoYW4gMzBmcHMpXG4iOw0KICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICBmYWlsKCJubyBlcnJvciBtZXNzYWdlIik7DQogICAgICAgIH0NCiAgICAgIH0gY2F0
Y2ggKGUpIHsNCiAgICAgICAgdmFyIHM7DQogICAgICAgIGlmIChlLm1lc3NhZ2UpDQogICAgICAg
ICAgcyA9IGUubWVzc2FnZS5yZXBsYWNlKC9ccyskLywgIiIpOw0KICAgICAgICBlbHNlDQogICAg
ICAgICAgcyA9IGU7DQogICAgICAgIGVycm9ycyArPSAxOw0KICAgICAgICBsb2cgKz0gIlRlc3Qg
IiArIHplcm9QYWRkZWRJbmRleCArICIgZmFpbGVkOiAiICsgcyArICJcbiI7DQogICAgICB9Ow0K
ICAgICAgcmV0cnkgPSAwOw0KICAgICAgaW5kZXggKz0gMTsNCiAgICAgIHNwYW4uZmlyc3RDaGls
ZC5kYXRhID0gc2NvcmU7DQogICAgICBzZXRUaW1lb3V0KHVwZGF0ZSwgZGVsYXkpOw0KICAgIH0g
ZWxzZSB7DQogICAgICB2YXIgZW5kVGltZSA9IG5ldyBEYXRlKCk7DQogICAgICB2YXIgZWxhcHNl
ZFRpbWUgPSAoKGVuZFRpbWUgLSBzdGFydFRpbWUpIC0gKGRlbGF5ICogdGVzdHMubGVuZ3RoKSkg
LyAxMDAwOw0KICAgICAgbG9nICs9ICJUb3RhbCBlbGFwc2VkIHRpbWU6ICIgKyBlbGFwc2VkVGlt
ZS50b0ZpeGVkKDIpICsgInMiOw0KICAgICAgaWYgKGVycm9ycyA9PSAwKQ0KICAgICAgICBsb2cg
Kz0gIlxuTm8gSlMgZXJyb3JzIGFuZCBubyB0aW1pbmcgaXNzdWVzLlxuV2FzIHRoZSByZW5kZXJp
bmcgcGl4ZWwtZm9yLXBpeGVsIHBlcmZlY3QgdG9vPyI7DQogICAgfQ0KICB9DQogIGZ1bmN0aW9u
IHJlcG9ydChldmVudCkgew0KICAgIC8vIGZvciBkZWJ1Z2dpbmcgZWl0aGVyIGNsaWNrIHRoZSAi
QSIgaW4gIkFjaWQzIiAodG8gZ2V0IGFuIGFsZXJ0KSBvciBzaGlmdC1jbGljayBpdCAodG8gZ2V0
IGEgcmVwb3J0KQ0KICAgIGlmIChldmVudC5zaGlmdEtleSkgew0KICAgICAgdmFyIHcgPSB3aW5k
b3cub3BlbigpOw0KICAgICAgdy5kb2N1bWVudC53cml0ZSgnPHByZT5GYWlsZWQgJyArICh0ZXN0
cy5sZW5ndGggLSBzY29yZSkgKyAnIG9mICcgKyB0ZXN0cy5sZW5ndGggKyAnIHRlc3RzLlxuJyAr
DQogICAgICAgICAgICAgICAgICAgICAgIGxvZy5yZXBsYWNlKC8mL2csJyZhbXA7JykucmVwbGFj
ZShSZWdFeHAoJzwnLCAnZycpLCAnJmx0OycpLnJlcGxhY2UoJ1wwJywgJ1xcMCcpICsNCiAgICAg
ICAgICAgICAgICAgICAgICAgJzxcL3ByZT4nKTsNCiAgICAgIHcuZG9jdW1lbnQuY2xvc2UoKTsN
CiAgICB9IGVsc2Ugew0KICAgICAgYWxlcnQoJ0ZhaWxlZCAnICsgKHRlc3RzLmxlbmd0aCAtIHNj
b3JlKSArICcgdGVzdCcgKyAoc2NvcmUgPT0gMSA/ICcnIDogJ3MnKSArICcuXG4nICsgbG9nKQ0K
ICAgIH0NCiAgfQ0KIDwvc2NyaXB0Pg0KIDxib2R5IG9ubG9hZD0idXBkYXRlKCkgIC8qIHRoaXMg
YXR0cmlidXRlJ3MgdmFsdWUgaXMgdGVzdGVkIGluIG9uZSBvZiB0aGUgdGVzdHMgKi8gIj4NCiAg
PGgxIG9uY2xpY2s9InJlcG9ydChldmVudCkiPkFjaWQzPC9oMT4NCiAgPGRpdiBjbGFzcz0iYnVj
a2V0cyINCiAgID48cCBpZD0iYnVja2V0MSIgY2xhc3M9InoiPjwvcA0KICAgPjxwIGlkPSJidWNr
ZXQyIiBjbGFzcz0ieiI+PC9wDQogICA+PHAgaWQ9ImJ1Y2tldDMiIGNsYXNzPSJ6Ij48L3ANCiAg
ID48cCBpZD0iYnVja2V0NCIgY2xhc3M9InoiPjwvcA0KICAgPjxwIGlkPSJidWNrZXQ1IiBjbGFz
cz0ieiI+PC9wDQogICA+PHAgaWQ9ImJ1Y2tldDYiIGNsYXNzPSJ6Ij48L3A+DQogIDwvZGl2Pg0K
ICA8cCBpZD0icmVzdWx0Ij48c3BhbiBpZD0ic2NvcmUiPkpTPC9zcGFuPjxzcGFuIGlkPSJzbGFz
aCIgY2xhc3M9ImhpZGRlbiI+Lzwvc3Bhbj48c3Bhbj4/PC9zcGFuPjwvcD4NCiAgPCEtLSBUaGUg
Zm9sbG93aW5nIGxpbmUgaXMgdXNlZCBpbiBhIG51bWJlciBvZiB0aGUgdGVzdHMuIEl0IGlzIGRv
bmUgdXNpbmcgZG9jdW1lbnQud3JpdGUoKSB0byBzaWRlc3RlcCBjb21wbGFpbnRzIG9mIHZhbGlk
aXR5LiAtLT4NCiAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmRvY3VtZW50LndyaXRl
KCc8bWFwIG5hbWU9IiI+PGFyZWEgaHJlZj0iIiBzaGFwZT0icmVjdCIgY29vcmRzPSIyLDIsNCw0
IiBhbHQ9IjxcJz4iPjxpZnJhbWUgc3JjPSJlbXB0eS5wbmciPkZBSUw8XC9pZnJhbWU+PGlmcmFt
ZSBzcmM9ImVtcHR5LnR4dCI+RkFJTDxcL2lmcmFtZT48aWZyYW1lIHNyYz0iZW1wdHkuaHRtbCIg
aWQ9InNlbGVjdG9ycyI+PFwvaWZyYW1lPjxmb3JtIGFjdGlvbj0iIiBuYW1lPSJmb3JtIj48aW5w
dXQgdHlwZT1ISURERU4+PFwvZm9ybT48dGFibGU+PHRyPjx0ZD48cD48XC90Ym9keT4gPFwvdGFi
bGU+PFwvbWFwPicpOzwvc2NyaXB0Pg0KICA8cCBpZD0iaW5zdHJ1Y3Rpb25zIj5UbyBwYXNzIHRo
ZSB0ZXN0LDxzcGFuPjwvc3Bhbj4gYSBicm93c2VyIG11c3QgdXNlIGl0cyBkZWZhdWx0IHNldHRp
bmdzLCB0aGUgYW5pbWF0aW9uIGhhcyB0byBiZSBzbW9vdGgsIHRoZSBzY29yZSBoYXMgdG8gZW5k
IG9uIDEwMC8xMDAsIGFuZCB0aGUgZmluYWwgcGFnZSBoYXMgdG8gbG9vayBleGFjdGx5LCBwaXhl
bCBmb3IgcGl4ZWwsIGxpa2UgPGEgaHJlZj0iaHR0cDovL2FjaWQzLmFjaWR0ZXN0cy5vcmcvcmVm
ZXJlbmNlLmh0bWwiPnRoaXMgcmVmZXJlbmNlIHJlbmRlcmluZzwvYT4uPC9wPg0KICA8cCBpZD0i
cmVtb3ZlLWxhc3QtY2hpbGQtdGVzdCI+U2NyaXB0aW5nIG11c3QgYmUgZW5hYmxlZCB0byB1c2Ug
dGhpcyB0ZXN0LjwvcD4NCiA8L2JvZHk+DQo8L2h0bWw+DQoNCjwhLS0gVGhpcyBkb2N1bWVudCBz
YXZlZCBmcm9tIGh0dHA6Ly9hY2lkMy5hY2lkdGVzdHMub3JnLyAtLT4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>20552</attachid>
            <date>2008-04-15 05:42:05 -0700</date>
            <delta_ts>2008-04-15 05:42:05 -0700</delta_ts>
            <desc>the svg.xml that&apos;s needed for test 79</desc>
            <filename>svg.xml</filename>
            <type>text/xml</type>
            <size>385</size>
            <attacher name="wellofsouls">wellofsouls</attacher>
            
              <data encoding="base64">PD94bWwtc3R5bGVzaGVldCBocmVmPSJkYXRhOnRleHQvY3NzLHRleHQlN0Jmb250LWZhbWlseSUz
QUFDSUQzc3ZnZm9udCU3RCI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMCIg
aGVpZ2h0PSIxMDAiPjxkZWZzPjxmb250LWZhY2UgZm9udC1mYW1pbHk9IkFDSUQzc3ZnZm9udCI+
PGZvbnQtZmFjZS1zcmM+PGZvbnQtZmFjZS11cmkgeGxpbms6aHJlZj0iZm9udC5zdmcjbWluaSIv
PjwvZm9udC1mYWNlLXNyYz48L2ZvbnQtZmFjZT48cGF0aCBpZD0icGF0aCIgZD0iTTAgMGwwIDQy
bDE2IDE2bDQ3MTEgMCIvPjwvZGVmcz48dGV4dD5YPC90ZXh0Pjwvc3ZnPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21431</attachid>
            <date>2008-05-30 07:11:29 -0700</date>
            <delta_ts>2008-05-30 07:11:29 -0700</delta_ts>
            <desc>log of debug message</desc>
            <filename>webkitgtk-acid3.log</filename>
            <type>text/plain</type>
            <size>5663</size>
            <attacher name="Audren Cezar">audrencezar</attacher>
            
              <data encoding="base64">VU5JTVBMRU1FTlRFRDogCihXZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDo5
MCBXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkpClVOSU1QTEVNRU5URUQ6IAooV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6NjMxIHZpcnR1
YWwgdm9pZCBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVk
KCkpClVOSU1QTEVNRU5URUQ6IAooV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHA6NDAyIHZpcnR1YWwgYm9vbCBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpoYXNXZWJWaWV3KCkgY29uc3QpClVOSU1QTEVNRU5URUQ6IAooV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6NDU3IHZpcnR1YWwgdm9pZCBXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRDb3BpZXNPblNjcm9sbCgpKQpVTklNUExFTUVOVEVEOiAK
KFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOjYzOCB2
aXJ0dWFsIHZvaWQgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFyZUZvckRhdGFTb3Vy
Y2VSZXBsYWNlbWVudCgpKQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOjQwOCB2aXJ0dWFsIGJvb2wgV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6aGFzRnJhbWVWaWV3KCkgY29uc3QpClVOSU1QTEVNRU5URUQ6IAooV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOjE1NiB2aXJ0dWFsIHZv
aWQgV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkpClVOSU1Q
TEVNRU5URUQ6IAooV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHA6MzU3IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6Om92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QpClVOSU1QTEVNRU5URUQ6IAooV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6NDE5IHZpcnR1YWwgdm9p
ZCBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRDb21wbGV0ZWQoKSkKVU5JTVBM
RU1FTlRFRDogCihXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcDo0NTIgdmlydHVhbCB2b2lkIFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5
b3V0Rm9yTm9uSFRNTCgpKQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoyNjQgdmlydHVhbCB2b2lkIFdlYktpdDo6Q2hyb21lQ2xp
ZW50OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSkKVU5JTVBMRU1F
TlRFRDogCihXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cDo1NzAgdmlydHVhbCB2b2lkIFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGlj
eUNoZWNrKCkpClVOSU1QTEVNRU5URUQ6IAooV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHA6NTU1IFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9u
YXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqLCBXZWJL
aXROZXR3b3JrUmVxdWVzdCopKQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOjU5NSB2aXJ0dWFsIGJvb2wgV2ViS2l0OjpG
cmFtZUxvYWRlckNsaWVudDo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdCkKVU5JTVBMRU1FTlRFRDogCihXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoyMTEgdmlydHVhbCB2b2lkIFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGxvbmcgdW5z
aWduZWQgaW50LCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpKQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOjIwNiB2aXJ0dWFsIHZvaWQgV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBsb25nIHVuc2lnbmVkIGludCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpKQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOjYwNyB2aXJ0dWFsIGJvb2wg
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hl
bWUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJikgY29uc3QpClVOSU1QTEVNRU5URUQ6IAooV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6NTYwIHZpcnR1YWwg
dm9pZCBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkp
ClVOSU1QTEVNRU5URUQ6IAooV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHA6NjAxIHZpcnR1YWwgYm9vbCBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpj
YW5TaG93TUlNRVR5cGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJikgY29uc3QpClVOSU1QTEVNRU5U
RUQ6IAooV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6
NTE0IHZpcnR1YWwgdm9pZCBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxD
bG9zZSgpKQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOjQ0MiB2aXJ0dWFsIHZvaWQgV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6bWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikpClVOSU1Q
TEVNRU5URUQ6IAooV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHA6NzU3IHZpcnR1YWwgdm9pZCBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5KGNvbnN0IFdlYkNvcmU6OktVUkwmKSkKVU5JTVBMRU1FTlRFRDogCihXZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDo1ODUgdmlydHVh
bCB2b2lkIFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGFuZ2VUaXRsZShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopKQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwOjU2MSB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3dpbmRvd19vYmpl
Y3RfY2xlYXJlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqLCBPcGFxdWVKU0NvbnRl
eHQqLCBPcGFxdWVKU1ZhbHVlKikpClVOSU1QTEVNRU5URUQ6IAooV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6NjQ5IHZpcnR1YWwgdm9pZCBXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgbG9uZyB1bnNpZ25lZCBpbnQsIGludCkpClVOSU1QTEVNRU5U
RUQ6IAooV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6
NjU0IHZpcnR1YWwgdm9pZCBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZp
bmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBsb25nIHVuc2lnbmVkIGludCkp
ClVOSU1QTEVNRU5URUQ6IAooV2ViQ29yZS9wYWdlL2d0ay9GcmFtZUd0ay5jcHA6NTMgdm9pZCBX
ZWJDb3JlOjpGcmFtZTo6Y2xlYXJQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKSkKVU5JTVBMRU1FTlRF
RDogCihXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6NDE1IHZpcnR1YWwg
dm9pZCBXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6c3lzdGVtRm9udChpbnQsIFdlYkNvcmU6OkZv
bnREZXNjcmlwdGlvbiYpIGNvbnN0KQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOjU1NSB2aXJ0dWFsIHZvaWQgV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSkKVU5J
TVBMRU1FTlRFRDogCihXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcDo1NzUgdmlydHVhbCB2b2lkIFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTG9hZE1haW5SZXNvdXJjZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopKQpVTklNUExF
TUVOVEVEOiAKKFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwOjU5NSB2b2lkIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
aGFkb3coY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGludCwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
KSkKVU5JTVBMRU1FTlRFRDogCihXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcDo2MDAgdm9pZCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNs
ZWFyUGxhdGZvcm1TaGFkb3coKSkKVU5JTVBMRU1FTlRFRDogCihXZWJDb3JlL3BsYXRmb3JtL2d0
ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDozMjYgV2ViQ29yZTo6U3RyaW5nIFdlYkNvcmU6Omlt
YWdlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
KQpVTklNUExFTUVOVEVEOiAKKFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwOjQ4OSB2aXJ0dWFsIHZvaWQgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSkKVU5JTVBMRU1FTlRFRDogCihXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHA6NDkgaW50IFdlYkNvcmU6OnNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50KFdlYkNvcmU6OldpZGdldCopKQpVTklNUExFTUVOVEVEOiAKKFdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOjUwNCB2aXJ0
dWFsIHZvaWQgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBkb3VibGUsIGRvdWJsZSkpCkFTU0VS
VElPTiBGQUlMRUQ6ICFtX2RlbGV0aW9uSGFzQmVndW4KKC4vSmF2YVNjcmlwdENvcmUvd3RmL1Jl
ZkNvdW50ZWQuaDo0MSB2b2lkIFdURjo6UmVmQ291bnRlZDxUPjo6cmVmKCkgW3dpdGggVCA9IFdl
YkNvcmU6OlN0cmluZ0ltcGxdKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>