<?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>21712</bug_id>
          
          <creation_ts>2008-10-17 11:40:25 -0700</creation_ts>
          <short_desc>Indent on li creates new ol instead of merging with existing ol, numbering incorrect.</short_desc>
          <delta_ts>2009-07-20 16:19:56 -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>HTML Editing</component>
          <version>525.x (Safari 3.1)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.mozilla.org/editor/midasdemo/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>rniwa</cc>
    
    <cc>sullivan</cc>
    
    <cc>wsanders</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>95761</commentid>
    <comment_count>0</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2008-10-17 11:40:25 -0700</bug_when>
    <thetext>Repro steps:
1. Type one&lt;enter&gt;two&lt;enter&gt;three&lt;enter&gt;four
2. Select all, click on ordered list
3. Select &quot;two&quot; and &quot;three&quot; and click indent, forming a sublist.
4. Select &quot;three&quot; and click outdent, joining three back with the outer list.
5. Select &quot;three&quot; and click indent, bringing three back into the sublist.

Result: Instead of add &quot;there&quot; into the ol that &quot;two&quot; is in, a new ol is created, so both &quot;two&quot; and &quot;three&quot; are numbered 1.
1. one
  1. two
  1. three
2. four

Expected result: &quot;three&quot; would be the second li in the same ol as &quot;two&quot;
Works as expected in IE, FF 3

Incorrect result also seen in Chrome.

Alternate repro steps:
1. Type one&lt;enter&gt;two&lt;enter&gt;three&lt;enter&gt;four
2. Select all, click on ordered list
3. Select &quot;two&quot;and click indent, forming a sublist.
4. Select &quot;three&quot; and click indent

Result: &quot;three&quot; and &quot;two&quot; are both numbered 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127402</commentid>
    <comment_count>1</comment_count>
      <attachid>31661</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-22 11:29:26 -0700</bug_when>
    <thetext>Created attachment 31661
demonstrates the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127428</commentid>
    <comment_count>2</comment_count>
      <attachid>31668</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-22 12:52:47 -0700</bug_when>
    <thetext>Created attachment 31668
produces unexpected behavior in Firefox

I&apos;m currently making a patch for this bug.  And I&apos;ll be posting in the next half an hour or so but there is a slight compilation about this fix.  The attachment tests what happens if we indented a list item that is sandwiched between two nested lists.  While I expected the result to be one big nested list with three items, Firefox combined the indented item to the previous list, and left the third list alone; i.e. of the three lists produced by indentation, Firefox combined the first two.  For consistency, my patch would produce the exact result Firefox produces.  It is also the case that combining all lists requires much more code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127441</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-06-22 13:59:20 -0700</bug_when>
    <thetext>Firefox&apos;s behavior in the second test case is clearly wrong. It would be best to try and fix both these cases in the same patch if possible. I&apos;m not familiar with the indent code, but I imagine the more involved fix for the second patch would also fix the first patch.

You might also want to file the Firefox bug at bugzilla.mozilla.org.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127545</commentid>
    <comment_count>4</comment_count>
      <attachid>31700</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-22 19:03:31 -0700</bug_when>
    <thetext>Created attachment 31700
The patch for IndentOutdentCommand with 10 tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127646</commentid>
    <comment_count>5</comment_count>
      <attachid>31700</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-23 10:33:12 -0700</bug_when>
    <thetext>Comment on attachment 31700
The patch for IndentOutdentCommand with 10 tests

Thanks for tackling this!

&gt; +            Element* enclosingListItem = static_cast&lt;Element*&gt;(enclosingListChild(endOfCurrentParagraph.deepEquivalent().node()));

It&apos;s dangerous to do a typecast. You have to have some reason to know the type is correct. If enclosingListChild guarantees it returns an Element*, then your patch should change the function&apos;s return type. If it does not guarantee that, then you need a type check before casting to Element*. Or it&apos;s possible that enclosingListChild doesn&apos;t always return an Element*, but for some reason you know that in this case it does.

&gt; +            Element* previousListItem = enclosingListItem-&gt;previousElementSibling();
&gt; +            Element* nextListItem = enclosingListItem-&gt;nextElementSibling();

These element sibling functions will skip over intervening text nodes. That means there could be an arbitrary amount of text, perhaps multiple pages of text, between these list items. In that case, the behavior of this code seems incorrect; list items will hop across text when indenting. You should make a test case like this and I think then you&apos;ll see this code needs to be changed.

&gt; +            QualifiedName listTag = listNode-&gt;tagQName();

It&apos;s more efficient to have this local be a const QualifiedName&amp;.

&gt; +                appendNode(listItem, (Element*)previousListItem);

The typecast here is currently unnecessary. Please remove it. But probably to fix the issues above you&apos;ll change the code further. Also, it should be static_cast, not a C++-style cast.

&gt; +                newListNode = (Element*)previousListItem;

Ditto.

&gt; +            }
&gt; +            else if (nextListItem &amp;&amp; nextListItem-&gt;hasTagName(listTag)) {

The else should be on the same line with the closing brace.

&gt; +                insertNodeAt(listItem, Position((Element*)nextListItem, 0));

Unnecessary typecast.

&gt; +                newListNode = (Element*)nextListItem;

Ditto.

&gt; +            }
&gt; +            else {

The else should be on the same line with the closing brace.

I&apos;m also not entirely certain we want this editing behavior in all contexts. I guess we probably do. Someone here at Apple should check to make sure we want this behavior in Apple&apos;s Mail application.

review- because of the issues mentioned above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127873</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-24 01:58:45 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 31700 [review])
&gt; Thanks for tackling this!

You&apos;re welcome

&gt; &gt; +            Element* enclosingListItem = static_cast&lt;Element*&gt;(enclosingListChild(endOfCurrentParagraph.deepEquivalent().node()));
&gt; 
&gt; It&apos;s dangerous to do a typecast. You have to have some reason to know the type
&gt; is correct. If enclosingListChild guarantees it returns an Element*, then your
&gt; patch should change the function&apos;s return type. If it does not guarantee that,
&gt; then you need a type check before casting to Element*. Or it&apos;s possible that
&gt; enclosingListChild doesn&apos;t always return an Element*, but for some reason you
&gt; know that in this case it does.

Yes, enclosingListChild always returns a pointer to a HTMLElement.
I&apos;ll change the prototype &amp; def. of the function.


&gt; &gt; +            Element* previousListItem = enclosingListItem-&gt;previousElementSibling();
&gt; &gt; +            Element* nextListItem = enclosingListItem-&gt;nextElementSibling();
&gt; 
&gt; These element sibling functions will skip over intervening text nodes. That
&gt; means there could be an arbitrary amount of text, perhaps multiple pages of
&gt; text, between these list items. In that case, the behavior of this code seems
&gt; incorrect; list items will hop across text when indenting. You should make a
&gt; test case like this and I think then you&apos;ll see this code needs to be changed.

Yes, you&apos;re right.  But I noticed that the nextSibling of the current list item is a text node,
and I need to somehow skip empty text nodes around it.
Since LI node is always in a list node, I thought it&apos;s safe to assume that there is no text in the same level.
But if you have a better of dealing (skipping empty text nodes), please let me know.

&gt; &gt; +            QualifiedName listTag = listNode-&gt;tagQName();
&gt; 
&gt; It&apos;s more efficient to have this local be a const QualifiedName&amp;.

Thank you to point that out.
Unnecessary Element* casts are removed &amp; coding style is enforced (as far as I concerned).

&gt; I&apos;m also not entirely certain we want this editing behavior in all contexts. I
&gt; guess we probably do. Someone here at Apple should check to make sure we want
&gt; this behavior in Apple&apos;s Mail application.

I&apos;ll really appreciate if you can get consensus ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128284</commentid>
    <comment_count>7</comment_count>
      <attachid>31878</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-25 14:59:04 -0700</bug_when>
    <thetext>Created attachment 31878
fixes the problem with indenting nested lists

This patch modifies the behavior of WebKit when indenting lists so as to merge nested lists together when they&apos;re immediately next to each other.  This patch also fixes the bug that when indenting a list, the id of a parent list is copied to the nested list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128293</commentid>
    <comment_count>8</comment_count>
      <attachid>31878</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-25 15:15:52 -0700</bug_when>
    <thetext>Comment on attachment 31878
fixes the problem with indenting nested lists

too complicated.  We talked in person.  There has to be a simpler solution to this.  Have julie look at this with you.  Style violations in the patch as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128621</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-26 18:36:40 -0700</bug_when>
    <thetext>See also https://bugs.webkit.org/show_bug.cgi?id=26762
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128721</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-28 01:10:55 -0700</bug_when>
    <thetext>This bug has been solved almost completely in the changeset 45316.
http://trac.webkit.org/changeset/45316

There are some edge cases in which WebKit behaves inappropriately but I suggest to file new bugs for those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128892</commentid>
    <comment_count>11</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2009-06-29 14:34:03 -0700</bug_when>
    <thetext>The original bug is fixed, but I&apos;m filing a follow up on selection behavior issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128894</commentid>
    <comment_count>12</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2009-06-29 14:34:57 -0700</bug_when>
    <thetext>*** Bug 24865 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130117</commentid>
    <comment_count>13</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2009-07-06 20:13:46 -0700</bug_when>
    <thetext>*** Bug 18105 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130119</commentid>
    <comment_count>14</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2009-07-06 20:14:55 -0700</bug_when>
    <thetext>*** Bug 18023 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31661</attachid>
            <date>2009-06-22 11:29:26 -0700</date>
            <delta_ts>2009-06-22 11:29:26 -0700</delta_ts>
            <desc>demonstrates the bug</desc>
            <filename>21712.html</filename>
            <type>text/html</type>
            <size>945</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+CjxvbCBpZD0idGVzdCI+
CjxsaT5vbmU8L2xpPgo8b2w+PGxpPnR3bzwvbGk+PC9vbD4KPGxpIGlkPSJ0ZXN0MyI+dGhyZWU8
L2xpPgo8bGk+Zm91cjwvbGk+Cjwvb2w+CjwvZGl2PgoKPHVsPgo8bGk+T3JpZ2luYWw6PHNwYW4g
aWQ9ImMxIj48L3NwYW4+PC9saT4KPGxpPkFmdGVyIDFzdCBpbmRlbnQ6PHNwYW4gaWQ9ImMyIj48
L3NwYW4+PC9saT4KPGxpPkFmdGVyIDJuZCBpbmRlbnQ6PHNwYW4gaWQ9ImMzIj48L3NwYW4+PC9s
aT4KPC91bD4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCnZhciBlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKdmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzEnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOwoKciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Ci8q
ci5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MicpKTsKcy5yZW1vdmVB
bGxSYW5nZXMoKTsKcy5hZGRSYW5nZShyKTsKZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluZGVudCIs
IGZhbHNlLCAiIik7CiovCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMicpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CgpyLnNlbGVjdE5vZGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QzJykpOwpzLnJlbW92ZUFsbFJhbmdlcygpOwpzLmFk
ZFJhbmdlKHIpOwpkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5kZW50IiwgZmFsc2UsICIiKTsKCmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMycpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGUuaW5uZXJIVE1MKSk7Cgo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31668</attachid>
            <date>2009-06-22 12:52:47 -0700</date>
            <delta_ts>2009-06-22 12:52:47 -0700</delta_ts>
            <desc>produces unexpected behavior in Firefox</desc>
            <filename>indent-nested-lists-3.html</filename>
            <type>text/html</type>
            <size>811</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGlkPSJkaXYiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+CjxvbD4K
PGxpPm9uZTwvbGk+CjxvbD48bGk+dHdvPC9saT48L29sPgo8bGkgaWQ9InRlc3QiPnRocmVlPC9s
aT4KPG9sPjxsaT5mb3VyPC9saT48L29sPgo8L29sPgo8L2Rpdj4KCjx1bD4KPGxpPkJlZm9yZTo8
c3BhbiBpZD0iYzEiPjwvc3Bhbj48L2xpPgo8bGk+QWZ0ZXI6PHNwYW4gaWQ9ImMyIj48L3NwYW4+
PC9saT4KPC91bD4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCmlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0
aW5nQ2FsbGJhY2tzKCk7CiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cn0K
CnZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2Jyk7Cgpkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYzEnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkaXYu
aW5uZXJIVE1MKSk7Cgp2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKdmFyIHIgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOwpyLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3QnKSk7CnMucmVtb3ZlQWxsUmFuZ2VzKCk7CnMuYWRkUmFuZ2Uocik7CmRvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIpOwoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2MyJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGl2LmlubmVySFRNTCkp
OwoKPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31700</attachid>
            <date>2009-06-22 19:03:31 -0700</date>
            <delta_ts>2009-06-25 14:59:04 -0700</delta_ts>
            <desc>The patch for IndentOutdentCommand with 10 tests</desc>
            <filename>fix21712</filename>
            <type>text/plain</type>
            <size>33831</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDk2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDktMDYtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
ZXMgdGhlIGJ1ZyAyMTcxMi4gIEluZGVudE91dGRlbnRDb21tYW5kIGRpZG4ndCBoYW5kbGUgaW5k
ZW50aW5nIGEgbGlzdCBpdGVtIGJldHdlZW4gbmVzdGVkIGxpc3RzLgorICAgICAgICBUaGlzIHBh
dGNoIGZpeGVzIEluZGVudE91dGRlbnRDb21tYW5kIHNvIHRoYXQgdGhlIHJlc3VsdCBvZiBpbmRl
bnRpbmcvb3V0ZGVudGluZyBhIGxpc3QgaXRlbQorICAgICAgICBiZXR3ZWVuIG5lc3RlZCBsaXN0
cyB3b3VsZCBhZ3JlZSB3aXRoIG91ciBleHBlY3RhdGlvbi4gIEluIHBhcnRpY3VsYXIsIHdoZW4g
aW5kZW50ZWQvb3V0ZGVudGVkCisgICAgICAgIGxpc3QgaXRlbSBpcyBpbW1lZGlhdGVseSBuZXh0
IHRvIGFub3RoZXIgbGlzdCwgaXQgY29tYmluZXMgdGhlIGxpc3QuCisKKyAgICAgICAgVGhlIHNl
dmVyYWwgdGVzdHMgY2FzZXMgYXJlIGFkZGVkIHRvIHZlcmlmeSB0aGUgY29ycmVjdCBiZWhhdmlv
ci4KKworICAgICAgICBUZXN0czogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxp
c3RzLTEuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVz
dGVkLWxpc3RzLTIuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9pbmRl
bnQtbmVzdGVkLWxpc3RzLTMuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFu
ZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTQuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVj
Q29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGlu
Zy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTYuaHRtbAorICAgICAgICAgICAgICAg
ZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0xLmh0bWwKKyAgICAgICAg
ICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMi5odG1sCisg
ICAgICAgICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTMu
aHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1s
aXN0cy00Lmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0ZGVudENvbW1hbmQ6OmluZGVudFJlZ2lvbik6
CisKIDIwMDktMDYtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0
ZGVudENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHAJKHJldmlzaW9uIDQ0NTUyKQorKysgV2ViQ29yZS9lZGl0aW5nL0luZGVu
dE91dGRlbnRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDE0ICsxNDUsNDMgQEAg
dm9pZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uKAogICAgICAgICAgICAgaW5z
ZXJ0aW9uUG9pbnQgPSBwbGFjZWhvbGRlcjsKICAgICAgICAgICAgIG5ld0Jsb2NrcXVvdGUgPSAw
OwogICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGxpc3RJdGVtID0gY3JlYXRlTGlzdEl0ZW1F
bGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICAgICAgRWxlbWVudCogZW5jbG9zaW5nTGlzdEl0
ZW0gPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZW5jbG9zaW5nTGlzdENoaWxkKGVuZE9mQ3VycmVu
dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSkpOworICAgICAgICAgICAgRWxlbWVu
dCogcHJldmlvdXNMaXN0SXRlbSA9IGVuY2xvc2luZ0xpc3RJdGVtLT5wcmV2aW91c0VsZW1lbnRT
aWJsaW5nKCk7CisgICAgICAgICAgICBFbGVtZW50KiBuZXh0TGlzdEl0ZW0gPSBlbmNsb3NpbmdM
aXN0SXRlbS0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAgICAgICAgICBRdWFsaWZpZWROYW1l
IGxpc3RUYWcgPSBsaXN0Tm9kZS0+dGFnUU5hbWUoKTsKKwogICAgICAgICAgICAgaWYgKGxpc3RO
b2RlID09IHByZXZpb3VzTGlzdE5vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcHJldmlv
dXMgcGFyYWdyYXBoIHdhcyBpbnNpZGUgdGhlIHNhbWUgbGlzdCwgc28gYWRkIHRoaXMgbGlzdCBp
dGVtIHRvIHRoZSBsaXN0IHdlIGFscmVhZHkgY3JlYXRlZAogICAgICAgICAgICAgICAgIGFwcGVu
ZE5vZGUobGlzdEl0ZW0sIG5ld0xpc3ROb2RlKTsKICAgICAgICAgICAgICAgICBhcHBlbmROb2Rl
KHBsYWNlaG9sZGVyLCBsaXN0SXRlbSk7Ci0gICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAg
ICAgICAgICAgLy8gSWYgZW5jbG9zaW5nTGlzdEl0ZW0gaXMgdGhlIGxhc3QgaXRlbSBpbiBzZWxl
Y3Rpb24gYW5kIGZvbGxvd2VkIGJ5IGFub3RoZXIgbmVzdGVkIGxpc3QsCisgICAgICAgICAgICAg
ICAgLy8gYXBwZW5kIHRoZSBsaXN0IHRoYXQgZm9sbG93cyBlbmNsb3NpbmdMaXN0SXRlbSB0byBu
ZXh0TGlzdEl0ZW0uCisgICAgICAgICAgICAgICAgaWYgKGVuZE9mTmV4dFBhcmFncmFwaCA9PSBl
bmRBZnRlclNlbGVjdGlvbiAmJiBuZXh0TGlzdEl0ZW0gJiYgbmV4dExpc3RJdGVtLT5oYXNUYWdO
YW1lKHByZXZpb3VzTGlzdEl0ZW0tPnRhZ1FOYW1lKCkpKQorICAgICAgICAgICAgICAgICAgICBt
ZXJnZUlkZW50aWNhbEVsZW1lbnRzKHByZXZpb3VzTGlzdEl0ZW0sIG5leHRMaXN0SXRlbSk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzTGlzdEl0ZW0gJiYgcHJldmlvdXNMaXN0SXRl
bS0+aGFzVGFnTmFtZShsaXN0VGFnKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBwcmV2aW91
cyBsaXN0IGl0ZW0gY29udGFpbmVkIGFub3RoZXIgbGlzdAorICAgICAgICAgICAgICAgIGFwcGVu
ZE5vZGUobGlzdEl0ZW0sIChFbGVtZW50KilwcmV2aW91c0xpc3RJdGVtKTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBsaXN0SXRlbSk7CisgICAgICAgICAgICAgICAg
bmV3TGlzdE5vZGUgPSAoRWxlbWVudCopcHJldmlvdXNMaXN0SXRlbTsKKyAgICAgICAgICAgICAg
ICBwcmV2aW91c0xpc3ROb2RlID0gbGlzdE5vZGU7CisKKyAgICAgICAgICAgICAgICAvLyBJZiBl
bmNsb3NpbmdMaXN0SXRlbSBpcyB0aGUgbGFzdCBpdGVtIGluIHNlbGVjdGlvbiBhbmQgZm9sbG93
ZWQgYnkgYW5vdGhlciBuZXN0ZWQgbGlzdCwKKyAgICAgICAgICAgICAgICAvLyBhcHBlbmQgdGhl
IGxpc3QgdGhhdCBmb2xsb3dzIGVuY2xvc2luZ0xpc3RJdGVtIHRvIG5leHRMaXN0SXRlbS4KKyAg
ICAgICAgICAgICAgICBpZiAoZW5kT2ZOZXh0UGFyYWdyYXBoID09IGVuZEFmdGVyU2VsZWN0aW9u
ICYmIG5leHRMaXN0SXRlbSAmJiBuZXh0TGlzdEl0ZW0tPmhhc1RhZ05hbWUocHJldmlvdXNMaXN0
SXRlbS0+dGFnUU5hbWUoKSkpCisgICAgICAgICAgICAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxl
bWVudHMocHJldmlvdXNMaXN0SXRlbSwgbmV4dExpc3RJdGVtKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgaWYgKG5leHRMaXN0SXRlbSAmJiBuZXh0TGlzdEl0ZW0tPmhhc1RhZ05h
bWUobGlzdFRhZykpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBsaXN0IGl0ZW0gY29u
dGFpbmVkIGFub3RoZXIgbGlzdAorICAgICAgICAgICAgICAgIGluc2VydE5vZGVBdChsaXN0SXRl
bSwgUG9zaXRpb24oKEVsZW1lbnQqKW5leHRMaXN0SXRlbSwgMCkpOworICAgICAgICAgICAgICAg
IGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIGxpc3RJdGVtKTsKKyAgICAgICAgICAgICAgICBuZXdM
aXN0Tm9kZSA9IChFbGVtZW50KiluZXh0TGlzdEl0ZW07CisgICAgICAgICAgICAgICAgcHJldmlv
dXNMaXN0Tm9kZSA9IGxpc3ROb2RlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIGxpc3QgZWxlbWVudCwgaW5zZXJ0IGl0IGJl
Zm9yZSB0aGUgY3VycmVudCBwYXJhZ3JhcGgsIGFuZCBtb3ZlIHRoZSBwYXJhZ3JhcGggaW50byBp
dC4KICAgICAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmVkTGlzdCA9IGxpc3ROb2Rl
LT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRO
b2RlQmVmb3JlKGNsb25lZExpc3QsIGVuY2xvc2luZ0xpc3RDaGlsZChlbmRPZkN1cnJlbnRQYXJh
Z3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRO
b2RlQmVmb3JlKGNsb25lZExpc3QsIGVuY2xvc2luZ0xpc3RJdGVtKTsKICAgICAgICAgICAgICAg
ICBhcHBlbmROb2RlKGxpc3RJdGVtLCBjbG9uZWRMaXN0KTsKICAgICAgICAgICAgICAgICBhcHBl
bmROb2RlKHBsYWNlaG9sZGVyLCBsaXN0SXRlbSk7CiAgICAgICAgICAgICAgICAgbmV3TGlzdE5v
ZGUgPSBjbG9uZWRMaXN0OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ5NjgpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wNi0yMiAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyB0aGUgYnVnIDIxNzEyLiAgSW5kZW50T3V0
ZGVudENvbW1hbmQgZGlkbid0IGhhbmRsZSBpbmRlbnRpbmcgYSBsaXN0IGl0ZW0gYmV0d2VlbiBu
ZXN0ZWQgbGlzdHMuCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgSW5kZW50T3V0ZGVudENvbW1h
bmQgc28gdGhhdCB0aGUgcmVzdWx0IG9mIGluZGVudGluZy9vdXRkZW50aW5nIGEgbGlzdCBpdGVt
CisgICAgICAgIGJldHdlZW4gbmVzdGVkIGxpc3RzIHdvdWxkIGFncmVlIHdpdGggb3VyIGV4cGVj
dGF0aW9uLiAgSW4gcGFydGljdWxhciwgd2hlbiBpbmRlbnRlZC9vdXRkZW50ZWQKKyAgICAgICAg
bGlzdCBpdGVtIGlzIGltbWVkaWF0ZWx5IG5leHQgdG8gYW5vdGhlciBsaXN0LCBpdCBjb21iaW5l
cyB0aGUgbGlzdC4KKworICAgICAgICBUaGUgc2V2ZXJhbCB0ZXN0cyBjYXNlcyBhcmUgYWRkZWQg
dG8gdmVyaWZ5IHRoZSBjb3JyZWN0IGJlaGF2aW9yLgorCisgICAgICAgICogZWRpdGluZy9leGVj
Q29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50
LW5lc3RlZC1saXN0cy0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1h
bmQvaW5kZW50LW5lc3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0
ZWQtbGlzdHMtNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1uZXN0ZWQtbGlzdHMtNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy01Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy02LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxp
c3RzLTYuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50
LW5lc3RlZC1saXN0cy0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9l
eGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0xLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlz
dHMtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQt
bmVzdGVkLWxpc3RzLTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4
ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy00LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0
cy00Lmh0bWw6IEFkZGVkLgorCiAyMDA5LTA2LTIyICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQt
bmVzdGVkLWxpc3RzLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdp
bkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDkgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAor
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5F
ZGl0aW5nTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01S
YW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBMSSA+IE9MID4g
T0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gTEkgPiBP
TCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlk
Q2hhbmdlTm90aWZpY2F0aW9uCitUaGlzIHRlc3RzIGluZGVudGluZyAidGhyZWUiLiBZb3Ugc2hv
dWxkIHNlZSBudW1iZXJzIDEgYW5kIDIgYmVmb3JlICJ0aHJlZSIgYW5kICJmb3VyIiByZXNwZWN0
aXZlbHkuCitvbmUKK3R3bwordGhyZWUKK2ZvdXIKK0JlZm9yZTogPGxpPm9uZTwvbGk+IDxsaT50
d288L2xpPiA8bGkgaWQ9InRlc3QiPnRocmVlPC9saT4gPG9sPjxsaT5mb3VyPC9saT48L29sPgor
QWZ0ZXI6IDxsaT5vbmU8L2xpPiA8bGk+dHdvPC9saT4gPG9sPjxsaT50aHJlZTwvbGk+PGxpPmZv
dXI8L2xpPjwvb2w+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVu
dC1uZXN0ZWQtbGlzdHMtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0xLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxib2R5PgorPGRpdj4KK1Ro
aXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIuICBZb3Ugc2hvdWxkIHNlZSBudW1iZXJzIDEgYW5k
IDIgYmVmb3JlICJ0aHJlZSIgYW5kICJmb3VyIiByZXNwZWN0aXZlbHkuCis8b2wgaWQ9ImUiIGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4KKzxsaT50d288L2xpPgorPGxpIGlk
PSJ0ZXN0Ij50aHJlZTwvbGk+Cis8b2w+PGxpPmZvdXI8L2xpPjwvb2w+Cis8L29sPgorPC9kaXY+
CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRl
cjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNl
bGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJh
bmdlcygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBm
YWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0yLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2luZGVudC1uZXN0ZWQtbGlzdHMtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdE
aWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJ
ID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQg
PiBMSSA+IE9MID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpO
U1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldl
YlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIu
IFlvdSBzaG91bGQgc2VlIG51bWJlcnMgMSBhbmQgMiBiZWZvcmUgInR3byIgYW5kICJ0aHJlZSIg
cmVzcGVjdGl2ZWx5Lgorb25lCit0d28KK3RocmVlCitmb3VyCitCZWZvcmU6IDxsaT5vbmU8L2xp
PiA8b2w+PGxpPnR3bzwvbGk+PC9vbD4gPGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+IDxsaT5mb3Vy
PC9saT4KK0FmdGVyOiA8bGk+b25lPC9saT4gPG9sPjxsaT50d288L2xpPjxsaT50aHJlZTwvbGk+
PC9vbD4gPGxpPmZvdXI8L2xpPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3Rz
LTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8Ym9keT4KKzxk
aXY+CitUaGlzIHRlc3RzIGluZGVudGluZyAidGhyZWUiLiAgWW91IHNob3VsZCBzZWUgbnVtYmVy
cyAxIGFuZCAyIGJlZm9yZSAidHdvIiBhbmQgInRocmVlIiByZXNwZWN0aXZlbHkuCis8b2wgaWQ9
ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4KKzxvbD48bGk+dHdvPC9s
aT48L29sPgorPGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+Cis8bGk+Zm91cjwvbGk+Cis8L29sPgor
PC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMxIj48L3NwYW4+PC9saT4KKzxs
aT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91bD4KKworPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3ZhciBlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKwordmFyIHMg
PSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92
ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRl
bnQiLCBmYWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0
cy0zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJl
Z2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gTEkgPiBP
TCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IExJ
ID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIi4gWW91
IHNob3VsZCBzZWUgMSwgMiwgYW5kIDMgYmVmb3JlICJ0d28iLCAidGhyZWUiLCBhbmQgImZvdXIi
IHJlc3BlY3RpdmVseS4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8bGk+b25lPC9s
aT4gPG9sPjxsaT50d288L2xpPjwvb2w+IDxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPiA8b2w+PGxp
PmZvdXI8L2xpPjwvb2w+CitBZnRlcjogPGxpPm9uZTwvbGk+IDxvbD48bGk+dHdvPC9saT48bGk+
dGhyZWU8L2xpPjxsaT5mb3VyPC9saT48L29sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVz
dGVkLWxpc3RzLTMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8
Ym9keT4KKzxkaXYgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KK1RoaXMgdGVzdHMgaW5kZW50aW5n
ICJ0aHJlZSIuIFlvdSBzaG91bGQgc2VlIDEsIDIsIGFuZCAzIGJlZm9yZSAidHdvIiwgInRocmVl
IiwgYW5kICJmb3VyIiByZXNwZWN0aXZlbHkuCis8b2wgaWQ9ImRpdiI+Cis8bGk+b25lPC9saT4K
KzxvbD48bGk+dHdvPC9saT48L29sPgorPGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+Cis8b2w+PGxp
PmZvdXI8L2xpPjwvb2w+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4g
aWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xp
PgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVk
aXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Cit9CisKK3ZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2Jyk7CisKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjMScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKGRpdi5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2
YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShy
KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIpOworCitkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShkaXYuaW5uZXJIVE1MKSk7CisKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0
cy00LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy00LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNSBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAxMSBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3Rp
ZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxs
KSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJID4gT0wgPiBPTCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBMSSA+IE9MID4gT0wgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIgYW5kICJmb3VyIi4gWW91IHNo
b3VsZCBzZWUgMSB0aHJvdWdoIDQgaW4gb3JkZXIgYmVmb3JlIG51bWJlcnMgInR3byIgdGhyb3Vn
aCAiZml2ZSIuCitvbmUKK3R3bwordGhyZWUKK2ZvdXIKK2ZpdmUKK0JlZm9yZTogPGxpPm9uZTwv
bGk+IDxvbD48bGk+dHdvPC9saT48L29sPiA8bGkgaWQ9InRlc3QxIj50aHJlZTwvbGk+IDxsaSBp
ZD0idGVzdDIiPmZvdXI8L2xpPiA8b2w+PGxpPmZpdmU8L2xpPjwvb2w+CitBZnRlcjogPGxpPm9u
ZTwvbGk+IDxvbD48bGk+dHdvPC9saT48bGk+dGhyZWU8L2xpPjxsaT5mb3VyPC9saT48bGk+Zml2
ZTwvbGk+PC9vbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50
LW5lc3RlZC1saXN0cy00Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy00Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2PgorVGhp
cyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIiBhbmQgImZvdXIiLiAgWW91IHNob3VsZCBzZWUgMSB0
aHJvdWdoIDQgaW4gb3JkZXIgYmVmb3JlIG51bWJlcnMgInR3byIgdGhyb3VnaCAiZml2ZSIuCis8
b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4KKzxvbD48bGk+
dHdvPC9saT48L29sPgorPGxpIGlkPSJ0ZXN0MSI+dGhyZWU8L2xpPgorPGxpIGlkPSJ0ZXN0MiI+
Zm91cjwvbGk+Cis8b2w+PGxpPmZpdmU8L2xpPjwvb2w+Cis8L29sPgorPC9kaXY+CisKKzx1bD4K
KzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBp
ZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7Cit2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNldFN0YXJ0KGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MScpLDApOworci5zZXRFbmQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3QyJyksMSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5n
ZShyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIpOworCitkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy01LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlz
dHMtNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0lu
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gOSBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3Rp
ZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxs
KSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJID4gT0wgPiBPTCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBMSSA+IE9MID4gT0wgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIuIFlvdSBzaG91bGQgc2VlIDEs
IDIsIGFuZCB0aGVuIGEgYnVsbGV0IGJlZm9yZSBudW1iZXJzICJ0d28iLCAidGhyZWUiLCBhbmQg
ImZvdXIiIHJlc3BlY3RpdmVseS4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8bGk+
b25lPC9saT4gPG9sPjxsaT50d288L2xpPjwvb2w+IDxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPiA8
dWw+PGxpPmZvdXI8L2xpPjwvdWw+CitBZnRlcjogPGxpPm9uZTwvbGk+IDxvbD48bGk+dHdvPC9s
aT48bGk+dGhyZWU8L2xpPjwvb2w+IDx1bD48bGk+Zm91cjwvbGk+PC91bD4KSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy01Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVk
LWxpc3RzLTUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy01Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzggQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2PgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcgInRocmVl
Ii4gIFlvdSBzaG91bGQgc2VlIDEsIDIsIGFuZCB0aGVuIGEgYnVsbGV0IGJlZm9yZSBudW1iZXJz
ICJ0d28iLCAidGhyZWUiLCBhbmQgImZvdXIiIHJlc3BlY3RpdmVseS4KKzxvbCBpZD0iZSIgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIj4KKzxsaT5vbmU8L2xpPgorPG9sPjxsaT50d288L2xpPjwvb2w+
Cis8bGkgaWQ9InRlc3QiPnRocmVlPC9saT4KKzx1bD48bGk+Zm91cjwvbGk+PC91bD4KKzwvb2w+
Cis8L2Rpdj4KKworPHVsPgorPGxpPkJlZm9yZTo8c3BhbiBpZD0iYzEiPjwvc3Bhbj48L2xpPgor
PGxpPkFmdGVyOjxzcGFuIGlkPSJjMiI+PC9zcGFuPjwvbGk+Cis8L3VsPgorCis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKwordmFyIGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZScpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzEnKS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCit2YXIg
cyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKK3Iuc2VsZWN0Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpKTsKK3MucmVt
b3ZlQWxsUmFuZ2VzKCk7CitzLmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
ZGVudCIsIGZhbHNlLCAiIik7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMicpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKKzwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxp
c3RzLTYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy02LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy02
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorRURJVElORyBERUxF
R0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgT0wgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mIE9MID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6
V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0
ZXh0ID4gTEkgPiBPTCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBv
ZiAjdGV4dCA+IExJID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcg
InRocmVlIi4gWW91IHNob3VsZCBzZWUgYSBidWxsZXQgdGhlbiAxIGFuZCAyIGJlZm9yZSBudW1i
ZXJzICJ0d28iLCAidGhyZWUiLCBhbmQgImZvdXIiIHJlc3BlY3RpdmVseS4KK29uZQordHdvCit0
aHJlZQorZm91cgorQmVmb3JlOiA8bGk+b25lPC9saT4gPHVsPjxsaT50d288L2xpPjwvdWw+IDxs
aSBpZD0idGVzdCI+dGhyZWU8L2xpPiA8b2w+PGxpPmZvdXI8L2xpPjwvb2w+CitBZnRlcjogPGxp
Pm9uZTwvbGk+IDx1bD48bGk+dHdvPC9saT48L3VsPiA8b2w+PGxpPnRocmVlPC9saT48bGk+Zm91
cjwvbGk+PC9vbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50
LW5lc3RlZC1saXN0cy02Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTYuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy02Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2PgorVGhp
cyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIi4gIFlvdSBzaG91bGQgc2VlIGEgYnVsbGV0IHRoZW4g
MSBhbmQgMiBiZWZvcmUgbnVtYmVycyAidHdvIiwgInRocmVlIiwgYW5kICJmb3VyIiByZXNwZWN0
aXZlbHkuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4K
Kzx1bD48bGk+dHdvPC9saT48L3VsPgorPGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+Cis8b2w+PGxp
PmZvdXI8L2xpPjwvb2w+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4g
aWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xp
PgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVk
aXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
ZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKK2Rv
Y3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlu
bmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0xLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NyBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJID4gT0wgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0
ZXN0cyBvdXRkZW50aW5nICJ0aHJlZSIuIFlvdSBzaG91bGQgc2VlIDIgYW5kIDMgYmVmb3JlICJ0
aHJlZSIgYW5kICJmb3VyIiByZXNwZWN0aXZlbHkuCitvbmUKK3R3bwordGhyZWUKK2ZvdXIKK0Jl
Zm9yZTogPGxpPm9uZTwvbGk+IDxvbD48bGk+dHdvPC9saT4gPGxpIGlkPSJ0ZXN0Ij50aHJlZTwv
bGk+PC9vbD4gPGxpPmZvdXI8L2xpPgorQWZ0ZXI6IDxsaT5vbmU8L2xpPiA8b2w+PGxpPnR3bzwv
bGk+IDwvb2w+PGxpPnRocmVlPC9saT4gPGxpPmZvdXI8L2xpPgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0xLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0
cy0xLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L291dGRlbnQtbmVzdGVkLWxpc3RzLTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBA
QAorPGh0bWw+Cis8Ym9keT4KKzxkaXY+CitUaGlzIHRlc3RzIG91dGRlbnRpbmcgInRocmVlIi4g
IFlvdSBzaG91bGQgc2VlIDIgYW5kIDMgYmVmb3JlICJ0aHJlZSIgYW5kICJmb3VyIiByZXNwZWN0
aXZlbHkuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4K
KzxvbD48bGk+dHdvPC9saT4KKzxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPjwvb2w+Cis8bGk+Zm91
cjwvbGk+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMxIj48
L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91bD4K
KworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxs
YmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3Zh
ciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhU
TUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJPdXRkZW50IiwgZmFsc2UsICIiKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2MyJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwp
KTsKKworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291
dGRlbnQtbmVzdGVkLWxpc3RzLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRl
bnQtbmVzdGVkLWxpc3RzLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgT0wg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCitFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgI3RleHQgPiBMSSA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMyBvZiAjdGV4dCA+IExJID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1RoaXMgdGVzdHMgb3V0
ZGVudGluZyAib25lIi4gWW91IHNlZSAxIGJlZm9yZSAib25lIiBidXQgMSBhbmQgMiBiZWZvcmUg
InR3byIgYW5kICJ0aHJlZSIgcmVzcGVjdGl2ZWx5Lgorb25lCit0d28KK3RocmVlCitmb3VyCitC
ZWZvcmU6IDxvbD48bGkgaWQ9InRlc3QiPm9uZTwvbGk+IDxsaT50d288L2xpPiA8bGk+dGhyZWU8
L2xpPjwvb2w+IDxsaT5mb3VyPC9saT4KK0FmdGVyOiA8bGk+b25lPC9saT48b2w+IDxsaT50d288
L2xpPiA8bGk+dGhyZWU8L2xpPjwvb2w+IDxsaT5mb3VyPC9saT4KSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlz
dHMtMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9vdXRkZW50LW5lc3RlZC1saXN0cy0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzgg
QEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2PgorVGhpcyB0ZXN0cyBvdXRkZW50aW5nICJvbmUiLiAg
WW91IHNlZSAxIGJlZm9yZSAib25lIiBidXQgMSBhbmQgMiBiZWZvcmUgInR3byIgYW5kICJ0aHJl
ZSIgcmVzcGVjdGl2ZWx5LgorPG9sIGlkPSJlIiBjb250ZW50ZWRpdGFibGU9InRydWUiPgorPG9s
PjxsaSBpZD0idGVzdCI+b25lPC9saT4KKzxsaT50d288L2xpPgorPGxpPnRocmVlPC9saT48L29s
PgorPGxpPmZvdXI8L2xpPgorPC9vbD4KKzwvZGl2PgorCis8dWw+Cis8bGk+QmVmb3JlOjxzcGFu
IGlkPSJjMSI+PC9zcGFuPjwvbGk+Cis8bGk+QWZ0ZXI6PHNwYW4gaWQ9ImMyIj48L3NwYW4+PC9s
aT4KKzwvdWw+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworfQorCit2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlJyk7CisKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjMScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KGUuaW5uZXJIVE1MKSk7CisKK3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOwordmFyIHIg
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0ZXN0JykpOworcy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7Citk
b2N1bWVudC5leGVjQ29tbWFuZCgiT3V0ZGVudCIsIGZhbHNlLCAiIik7CisKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjMicpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUu
aW5uZXJIVE1MKSk7CisKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNCBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byA1IG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNh
dGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBMSSA+IE9MID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3Rp
bGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitUaGlz
IHRlc3RzIG91dGRlbnRpbmcgInR3byIuIFlvdSBzaG91bGQgc2VlIDEgYmVmb3JlICJvbmUiLCAi
dHdvIiwgYW5kICJ0aHJlZSIgYnV0IDIgYmVmb3JlICJmb3VyIi4KK29uZQordHdvCit0aHJlZQor
Zm91cgorQmVmb3JlOiA8b2w+PGxpPm9uZTwvbGk+IDxsaSBpZD0idGVzdCI+dHdvPC9saT4gPGxp
PnRocmVlPC9saT48L29sPiA8bGk+Zm91cjwvbGk+CitBZnRlcjogPG9sPjxsaT5vbmU8L2xpPiA8
L29sPjxsaT50d288L2xpPjxvbD4gPGxpPnRocmVlPC9saT48L29sPiA8bGk+Zm91cjwvbGk+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3Rz
LTMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291
dGRlbnQtbmVzdGVkLWxpc3RzLTMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxib2R5PgorPGRpdj4KK1RoaXMgdGVzdHMgb3V0
ZGVudGluZyAidHdvIi4gIFlvdSBzaG91bGQgc2VlIDEgYmVmb3JlICJvbmUiLCAidHdvIiwgYW5k
ICJ0aHJlZSIgYnV0IDIgYmVmb3JlICJmb3VyIi4KKzxvbCBpZD0iZSIgY29udGVudGVkaXRhYmxl
PSJ0cnVlIj4KKzxvbD48bGk+b25lPC9saT4KKzxsaSBpZD0idGVzdCI+dHdvPC9saT4KKzxsaT50
aHJlZTwvbGk+PC9vbD4KKzxsaT5mb3VyPC9saT4KKzwvb2w+Cis8L2Rpdj4KKworPHVsPgorPGxp
PkJlZm9yZTo8c3BhbiBpZD0iYzEiPjwvc3Bhbj48L2xpPgorPGxpPkFmdGVyOjxzcGFuIGlkPSJj
MiI+PC9zcGFuPjwvbGk+Cis8L3VsPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK30KKwordmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZScp
OworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzEnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKK3ZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2VsZWN0Tm9kZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpKTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7CitzLmFk
ZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk91dGRlbnQiLCBmYWxzZSwgIiIpOwor
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtNC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5l
c3RlZC1saXN0cy00LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtNC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2lu
RWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDMgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlm
aWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwp
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBMSSA+IE9MID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitU
aGlzIHRlc3RzIG91dGRlbnRpbmcgb3JkZXJlZCBsaXN0cyB0aGF0IGNvbnRhaW5zIGFuIHVub3Jk
ZXJlZC1saXN0LiBZb3Ugc2hvdWxkIHNlZSAxIHRocm91Z2ggMyBiZWZvcmUgbnVtYmVycyAidHdv
IiB0aHJvdWdoICJmb3VyIi4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8b2w+PGxp
Pm9uZTwvbGk+IDxsaSBpZD0ic3RhcnQiPnR3bzwvbGk+PC9vbD4gPHVsPjxsaT50aHJlZTwvbGk+
PC91bD4gPG9sPjxsaSBpZD0iZW5kIj5mb3VyPC9saT48L29sPgorQWZ0ZXI6IDxvbD48bGk+b25l
PC9saT4gPC9vbD48bGk+dHdvPC9saT4gPGxpPnRocmVlPC9saT4gPGxpPmZvdXI8L2xpPgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy00
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRk
ZW50LW5lc3RlZC1saXN0cy00Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzOSBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgY29udGVudGVkaXRhYmxlPSJ0
cnVlIj4KK1RoaXMgdGVzdHMgb3V0ZGVudGluZyBvcmRlcmVkIGxpc3RzIHRoYXQgY29udGFpbnMg
YW4gdW5vcmRlcmVkLWxpc3QuICBZb3Ugc2hvdWxkIHNlZSAxIHRocm91Z2ggMyBiZWZvcmUgbnVt
YmVycyAidHdvIiB0aHJvdWdoICJmb3VyIi4KKzxvbCBpZD0iZSI+Cis8b2w+PGxpPm9uZTwvbGk+
Cis8bGkgaWQ9InN0YXJ0Ij50d288L2xpPjwvb2w+Cis8dWw+PGxpPnRocmVlPC9saT48L3VsPgor
PG9sPjxsaSBpZD0iZW5kIj5mb3VyPC9saT48L29sPgorPC9vbD4KKzwvZGl2PgorCis8dWw+Cis8
bGk+QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9zcGFuPjwvbGk+Cis8bGk+QWZ0ZXI6PHNwYW4gaWQ9
ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
Jyk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMScpLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKK3ZhciBzID0gd2luZG93LmdldFNlbGVj
dGlvbigpOwordmFyIHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5zZXRTdGFydChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhcnQnKSwwKTsKK3Iuc2V0RW5kKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdlbmQnKSwxKTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7CitzLmFkZFJhbmdlKHIp
OworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk91dGRlbnQiLCBmYWxzZSwgIiIpOworCitkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4K
</data>
<flag name="review"
          id="16300"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31878</attachid>
            <date>2009-06-25 14:59:04 -0700</date>
            <delta_ts>2009-06-25 15:15:52 -0700</delta_ts>
            <desc>fixes the problem with indenting nested lists</desc>
            <filename>fix21712b</filename>
            <type>text/plain</type>
            <size>53280</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTE5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDYtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzEyCisKKyAgICAgICAgSW5k
ZW50T3V0ZGVudENvbW1hbmQgZGlkbid0IGhhbmRsZSBpbmRlbnRpbmcgYSBsaXN0IGl0ZW0gYmV0
d2VlbiBuZXN0ZWQgbGlzdHMuCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgSW5kZW50T3V0ZGVu
dENvbW1hbmQgc3VjaCB0aGF0IHRoZSBmb2xsb3dpbmcgYmVoYXZpb3IgaXMgb2J0YWluZWQ6CisK
KyAgICAgICAgMS4gSW5kZW50ZWQgbGlzdCBpcyBtZXJnZWQgd2l0aCBsaXN0cyBvZiB0aGUgc2Ft
ZSB0eXBlIChvbCBvciB1bCkgdGhhdCBpbW1lZGlhdGVseSBmb2xsb3dzIG9yIHByb2NlZWRzIHRo
ZSBpbmRlbnRlZCBsaXN0CisgICAgICAgIDIuIExpc3RzIGFyZSBvbmx5IG1lcmdlZCBvbmx5IGlm
IG5vZGVzIGJldHdlZW4gdHdvIGxpc3RzIGFyZSBjb25zaXN0aW5nIGVudGlyZWx5IG9mIHdoaXRl
IHNwYWNlcy4KKyAgICAgICAgMy4gV2hlbiBtZXJnaW5nIGxpc3RzLCBhbnkgbm9uLWJsb2NrIGVs
ZW1lbnRzIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93cyBhIGxpc3QgaXRlbSB3aWxsIGJlIGFwcGVu
ZGVkIGludG8gdGhlIGxpc3QgaXRlbSB0aGF0IGltbWVkaWF0ZWx5IHByZWNlZGVzCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0xLmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0x
MC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQt
bGlzdHMtMi5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1u
ZXN0ZWQtbGlzdHMtMy5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1uZXN0ZWQtbGlzdHMtNC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2V4ZWNDb21t
YW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2V4
ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNi5odG1sCisgICAgICAgICAgICAgICBlZGl0
aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNy5odG1sCisgICAgICAgICAgICAg
ICBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtOC5odG1sCisgICAgICAg
ICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtOS5odG1sCisg
ICAgICAgICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTEu
aHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1s
aXN0cy0yLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1u
ZXN0ZWQtbGlzdHMtMy5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL291
dGRlbnQtbmVzdGVkLWxpc3RzLTQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6
aW5kZW50UmVnaW9uKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmVuY2xvc2luZ0xpc3RDaGlsZCk6CisgICAgICAgICogZWRpdGluZy9odG1s
ZWRpdGluZy5oOgorCiAyMDA5LTA2LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCShyZXZpc2lvbiA0NTE4MCkKKysrIFdl
YkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnNlcnRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUg
IlJhbmdlLmgiCiAjaW5jbHVkZSAiU3BsaXRFbGVtZW50Q29tbWFuZC5oIgorI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5o
IgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKQEAgLTE0MSwyMyArMTQyLDEwNiBAQCB2b2lk
IEluZGVudE91dGRlbnRDb21tYW5kOjppbmRlbnRSZWdpb24oCiAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBsaXN0Tm9kZSA9IGVuY2xvc2luZ0xpc3QoZW5kT2ZDdXJyZW50UGFyYWdyYXBoLmRlZXBF
cXVpdmFsZW50KCkubm9kZSgpKTsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGluc2VydGlvblBv
aW50OwogICAgICAgICBpZiAobGlzdE5vZGUpIHsKKyAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBuZXdMaXN0SXRlbTsvLyBuZXcgbGlzdCBpdGVtIHRvIHdoaWNoIHRoZSBjb250ZW50IG9mIGN1
cnJlbnRMaXN0SXRlbSBpcyBjb3BpZWQKKyAgICAgICAgICAgIEVsZW1lbnQqIGN1cnJlbnRMaXN0
SXRlbTsvLyBjdXJyZW50IGxpc3RlIGl0ZW0gZnJvbSB3aGljaCB0aGUgY29udGVudCBpcyBjb3Bp
ZWQKKyAgICAgICAgICAgIEVsZW1lbnQqIHByZXZpb3VzTGlzdCA9IDA7Ly8gbGlzdCBub2RlIHRo
YXQgaW1tZWRpYXRlbHkgcHJjZWVkcyB0aGUgY3VycmVudCBsaXN0IGl0ZW0KKyAgICAgICAgICAg
IEVsZW1lbnQqIG5leHRMaXN0ID0gMDsvLyBsaXN0IG5vZGUgdGhhdCBpbW1lZGlhdGVseSBmb2xs
b3dzIHRoZSBjdXJyZW50IGxpc3QgaXRlbQogICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBs
YWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICAgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbGlzdFRhZyA9IGxpc3ROb2RlLT50YWdRTmFtZSgpOworCisg
ICAgICAgICAgICBjdXJyZW50TGlzdEl0ZW0gPSBlbmNsb3NpbmdMaXN0Q2hpbGQoZW5kT2ZDdXJy
ZW50UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChj
dXJyZW50TGlzdEl0ZW0gJiYgIWN1cnJlbnRMaXN0SXRlbS0+aGFzVGFnTmFtZShsaVRhZykpIGN1
cnJlbnRMaXN0SXRlbSA9IDA7CiAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHBsYWNlaG9s
ZGVyOwogICAgICAgICAgICAgbmV3QmxvY2txdW90ZSA9IDA7Ci0gICAgICAgICAgICBSZWZQdHI8
RWxlbWVudD4gbGlzdEl0ZW0gPSBjcmVhdGVMaXN0SXRlbUVsZW1lbnQoZG9jdW1lbnQoKSk7CisK
KyAgICAgICAgICAgIGlmICghY3VycmVudExpc3RJdGVtKSBuZXdMaXN0SXRlbSA9IGNyZWF0ZUxp
c3RJdGVtRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIG5ld0xpc3RJdGVtID0gY3VycmVudExpc3RJdGVtLT5jbG9uZUVsZW1lbnRXaXRob3V0
Q2hpbGRyZW4oKTsKKworICAgICAgICAgICAgICAgIC8vIEZpbmQgcHJldmlvdXNMaXN0LCB0aGUg
bGlzdCBub2RlIHRoYXQgaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIGN1cnJlbnRMaXN0SXRlbQor
ICAgICAgICAgICAgICAgIC8vIFRoZSBub2RlIG11c3QgYmUgb2YgbGlzdFRhZywgYW5kIHRoZXJl
IHNob3VsZCBub3QgYmUgYW55IHZpc2libGUgbm9kZXMgYmV0d2VlbiBjdXJyZW50TGlzdEl0ZW0g
YW5kIHByZXZpb3VzTGlzdAorICAgICAgICAgICAgICAgIHByZXZpb3VzTGlzdCA9IGN1cnJlbnRM
aXN0SXRlbS0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworICAgICAgICAgICAgICAgIGlmIChw
cmV2aW91c0xpc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0NvbnRlbnRFZGl0YWJs
ZShwcmV2aW91c0xpc3QpKSBwcmV2aW91c0xpc3QgPSAwOworICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmICghcHJldmlvdXNMaXN0LT5oYXNUYWdOYW1lKGxpc3RUYWcpKSBwcmV2aW91c0xpc3Qg
PSAwOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyUHJldmlvdXNMaXN0ID0gcG9zaXRpb25BZnRl
ck5vZGUocHJldmlvdXNMaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbkJlZm9yZUN1cnJlbnRMSSA9IHBvc2l0aW9uQmVmb3JlTm9kZShjdXJyZW50
TGlzdEl0ZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJQcmV2
aW91c0xpc3QgIT0gcG9zaXRpb25CZWZvcmVDdXJyZW50TEkpIHByZXZpb3VzTGlzdCA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBGaW5kIG5leHRMaXN0LCB0aGUgbGlzdCBub2RlIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93
cyB0aGUgY3VycmVudExpc3RJdGVtCisgICAgICAgICAgICAgICAgLy8gVGhlIG5vZGUgbXVzdCBi
ZSBvZiBsaXN0VGFnLCBhbmQgdGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgdmlzaWJsZSBub2RlcyBi
ZXR3ZWVuIGN1cnJlbnRMaXN0SXRlbSBhbmQgbmV4dExpc3QKKyAgICAgICAgICAgICAgICBuZXh0
TGlzdCA9IGN1cnJlbnRMaXN0SXRlbS0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAgICAgICAg
ICAgICAgaWYgKG5leHRMaXN0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNDb250ZW50
RWRpdGFibGUobmV4dExpc3QpKSBuZXh0TGlzdCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKCFuZXh0TGlzdC0+aGFzVGFnTmFtZShsaXN0VGFnKSkgbmV4dExpc3QgPSAwOworICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudExJID0gcG9zaXRpb25BZnRlck5vZGUoY3VycmVu
dExpc3RJdGVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkJlZm9yZU5leHRMaXN0ID0gcG9zaXRpb25CZWZvcmVOb2RlKG5leHRMaXN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbkFmdGVyQ3VycmVudExJICE9IHBvc2l0aW9u
QmVmb3JlTmV4dExpc3QpIG5leHRMaXN0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGxpc3ROb2Rl
ID09IHByZXZpb3VzTGlzdE5vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcHJldmlvdXMg
cGFyYWdyYXBoIHdhcyBpbnNpZGUgdGhlIHNhbWUgbGlzdCwgc28gYWRkIHRoaXMgbGlzdCBpdGVt
IHRvIHRoZSBsaXN0IHdlIGFscmVhZHkgY3JlYXRlZAotICAgICAgICAgICAgICAgIGFwcGVuZE5v
ZGUobGlzdEl0ZW0sIG5ld0xpc3ROb2RlKTsKLSAgICAgICAgICAgICAgICBhcHBlbmROb2RlKHBs
YWNlaG9sZGVyLCBsaXN0SXRlbSk7CisgICAgICAgICAgICAgICAgYXBwZW5kTm9kZShuZXdMaXN0
SXRlbSwgbmV3TGlzdE5vZGUpOworICAgICAgICAgICAgICAgIGFwcGVuZE5vZGUocGxhY2Vob2xk
ZXIsIG5ld0xpc3RJdGVtKTsKKworICAgICAgICAgICAgICAgIC8vIElmIGN1cnJlbnRMaXN0SXRl
bSBpcyB0aGUgbGFzdCBpdGVtIGluIHNlbGVjdGlvbiBhbmQgZm9sbG93ZWQgYnkgYW5vdGhlciBu
ZXN0ZWQgbGlzdCwgbWVyZ2UgdGhlIGxpc3RzCisgICAgICAgICAgICAgICAgaWYgKGVuZE9mTmV4
dFBhcmFncmFwaCA9PSBlbmRBZnRlclNlbGVjdGlvbiAmJiBuZXh0TGlzdCkKKyAgICAgICAgICAg
ICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhuZXdMaXN0Tm9kZSwgbmV4dExpc3QpOyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNMaXN0KSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhlIHByZXZpb3VzIGxpc3QgaXRlbSBjb250YWluZWQgYW5vdGhl
ciBsaXN0CisgICAgICAgICAgICAgICAgYXBwZW5kTm9kZShuZXdMaXN0SXRlbSwgcHJldmlvdXNM
aXN0KTsKKyAgICAgICAgICAgICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBuZXdMaXN0SXRl
bSk7CisgICAgICAgICAgICAgICAgbmV3TGlzdE5vZGUgPSBwcmV2aW91c0xpc3Q7CisgICAgICAg
ICAgICAgICAgcHJldmlvdXNMaXN0Tm9kZSA9IGxpc3ROb2RlOworCisgICAgICAgICAgICAgICAg
Ly8gV2hlbiBpbmRlbnRpbmcgZXhhY3RseSBvbmUgbGlzdCBpdGVtIHByZWNlZGVkIGJ5IGEgbmVz
dGVkIGxpc3QgYW5kIGZvbGxvd2VkIGJ5IGFub3RoZXIgbmVzdGVkIGxpc3QsIG1lcmdlIGFsbCB0
aGUgbGlzdHMKKyAgICAgICAgICAgICAgICBpZiAoZW5kT2ZOZXh0UGFyYWdyYXBoID09IGVuZEFm
dGVyU2VsZWN0aW9uICYmIG5leHRMaXN0KQorICAgICAgICAgICAgICAgICAgICBtZXJnZUlkZW50
aWNhbEVsZW1lbnRzKG5ld0xpc3ROb2RlLCBuZXh0TGlzdCk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKG5leHRMaXN0KSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIG5leHQgbGlzdCBpdGVtIGNv
bnRhaW5lZCBhbm90aGVyIGxpc3QKKyAgICAgICAgICAgICAgICBpbnNlcnROb2RlQXQobmV3TGlz
dEl0ZW0sIFBvc2l0aW9uKG5leHRMaXN0LCAwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kTm9k
ZShwbGFjZWhvbGRlciwgbmV3TGlzdEl0ZW0pOworICAgICAgICAgICAgICAgIG5ld0xpc3ROb2Rl
ID0gbmV4dExpc3Q7CisgICAgICAgICAgICAgICAgcHJldmlvdXNMaXN0Tm9kZSA9IGxpc3ROb2Rl
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBDbG9uZSB0aGUgbGlz
dCBlbGVtZW50LCBpbnNlcnQgaXQgYmVmb3JlIHRoZSBjdXJyZW50IHBhcmFncmFwaCwgYW5kIG1v
dmUgdGhlIHBhcmFncmFwaCBpbnRvIGl0LgotICAgICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBjbG9uZWRMaXN0ID0gbGlzdE5vZGUtPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwot
ICAgICAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoY2xvbmVkTGlzdCwgZW5jbG9zaW5nTGlz
dENoaWxkKGVuZE9mQ3VycmVudFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSkpOwot
ICAgICAgICAgICAgICAgIGFwcGVuZE5vZGUobGlzdEl0ZW0sIGNsb25lZExpc3QpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIGxpc3RJdGVtKTsKLSAgICAgICAgICAg
ICAgICBuZXdMaXN0Tm9kZSA9IGNsb25lZExpc3Q7CisgICAgICAgICAgICAgICAgLy8gQ3JlYXRl
IG5ldyBsaXN0IGVsZW1lbnQsIGluc2VydCBpdCBiZWZvcmUgdGhlIGN1cnJlbnQgcGFyYWdyYXBo
LCBhbmQgbW92ZSB0aGUgcGFyYWdyYXBoIGludG8gaXQuCisgICAgICAgICAgICAgICAgbmV3TGlz
dE5vZGUgPSBsaXN0VGFnID09IG9sVGFnPyBjcmVhdGVPcmRlcmVkTGlzdEVsZW1lbnQoZG9jdW1l
bnQoKSkgOiBjcmVhdGVVbm9yZGVyZWRMaXN0RWxlbWVudChkb2N1bWVudCgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY3VycmVudExpc3RJdGVtKSBpbnNlcnROb2RlQmVmb3JlKG5ld0xpc3ROb2Rl
LCBjdXJyZW50TGlzdEl0ZW0pOworICAgICAgICAgICAgICAgIGVsc2UgaW5zZXJ0Tm9kZUJlZm9y
ZShuZXdMaXN0Tm9kZSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9k
ZSgpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmROb2RlKG5ld0xpc3RJdGVtLCBuZXdMaXN0Tm9k
ZSk7CisgICAgICAgICAgICAgICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlciwgbmV3TGlzdEl0ZW0p
OwogICAgICAgICAgICAgICAgIHByZXZpb3VzTGlzdE5vZGUgPSBsaXN0Tm9kZTsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGN1cnJlbnRMaXN0SXRlbSkgeworICAgICAgICAgICAg
ICAgIC8vIEFwcGVuZCBhbGwgbm9kZXMgYWZ0ZXIgY3VycmVudExpc3RJdGVtIGFuZCBuZXh0IGJs
b2NrIGl0ZW0gdG8gY3VycmVudExpc3RJdGVtCisgICAgICAgICAgICAgICAgTm9kZSogbiA9IGN1
cnJlbnRMaXN0SXRlbS0+bmV4dFNpYmxpbmcoKTsKKworICAgICAgICAgICAgICAgIC8vIFNraXAg
YWxsIHdoaXRlc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcKKyAgICAgICAgICAgICAgICB3aGlsZSAo
biAmJiBuLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkgJiYgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0
YSo+KG4pLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpIG4gPSBuLT5uZXh0U2libGluZygpOwor
CisgICAgICAgICAgICAgICAgaWYgKG4gJiYgbiAhPSBuZXh0TGlzdCAmJiAhbi0+aXNCbG9ja0Zs
b3coKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbnl0aGluZyBvdGhl
ciB0aGFuIHdoaXRlc3BhY2UsIHRoZW4gYXBwZW5kIHRoZW0KKyAgICAgICAgICAgICAgICAgICAg
Ly8gQnV0IHdlIHNob3VsZCBhcHBlbmQgd2hpdGVzcGFjZXMgYXQgdGhlIGJlZ2lubmluZyBhcyB3
ZWxsLgorICAgICAgICAgICAgICAgICAgICBuID0gY3VycmVudExpc3RJdGVtLT5uZXh0U2libGlu
ZygpOworCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuICYmIG4gIT0gbmV4dExpc3QgJiYg
IW4tPmlzQmxvY2tGbG93KCkgJiYgaXNDb250ZW50RWRpdGFibGUobikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgICAgICAgICAgICAgICAgICBO
b2RlKiBuZXh0Tm9kZSA9IG4tPm5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdMaXN0SXRlbS0+YXBwZW5kQ2hpbGQobiwgZWMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbiA9IG5leHROb2RlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBlbmRPZk5leHRQYXJhZ3JhcGggPSBlbmRPZlBhcmFn
cmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgubmV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW5kQWZ0ZXJTZWxlY3Rpb24gPSBlbmRPZlBhcmFncmFwaChlbmRPZlBhcmFncmFwaChlbmRPZlNl
bGVjdGlvbikubmV4dCgpKTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChuZXdCbG9ja3F1b3RlKQogICAgICAg
ICAgICAgLy8gVGhlIHByZXZpb3VzIHBhcmFncmFwaCB3YXMgcHV0IGludG8gYSBuZXcgYmxvY2tx
dW90ZSwgc28gbW92ZSB0aGlzIHBhcmFncmFwaCB0aGVyZSBhcyB3ZWxsCiAgICAgICAgICAgICBp
bnNlcnRpb25Qb2ludCA9IHByZXBhcmVCbG9ja3F1b3RlTGV2ZWxGb3JJbnNlcnRpb24oZW5kT2ZD
dXJyZW50UGFyYWdyYXBoLCBuZXdCbG9ja3F1b3RlKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcAkocmV2aXNpb24gNDUxODApCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NjUsNyArNjY1LDcgQEAgSFRNTEVsZW1lbnQqIGVuY2xvc2lu
Z0xpc3QoTm9kZSogbm9kZSkKICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogZW5jbG9zaW5nTGlz
dENoaWxkKE5vZGUgKm5vZGUpCitIVE1MRWxlbWVudCogZW5jbG9zaW5nTGlzdENoaWxkKE5vZGUg
Km5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTY3Niw3ICs2
NzYsNyBAQCBOb2RlKiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSAqbm9kZSkKICAgICAvLyBGSVhN
RTogVGhpcyBmdW5jdGlvbiBpcyBpbmFwcHJvcHJpYXRlbHkgbmFtZWQgaWYgaXQgc3RhcnRzIHdp
dGggbm9kZSBpbnN0ZWFkIG9mIG5vZGUtPnBhcmVudE5vZGUoKQogICAgIGZvciAoTm9kZSogbiA9
IG5vZGU7IG4gJiYgbi0+cGFyZW50Tm9kZSgpOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7CiAgICAg
ICAgIGlmIChuLT5oYXNUYWdOYW1lKGxpVGFnKSB8fCBpc0xpc3RFbGVtZW50KG4tPnBhcmVudE5v
ZGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxIVE1MRWxlbWVudCo+KG4pOwogICAgICAgICBpZiAobiA9PSByb290IHx8IGlzVGFibGVD
ZWxsKG4pKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmgJKHJldmlzaW9uIDQ1MTgwKQorKysgV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBOb2RlKiBlbmNsb3NpbmdBbmNob3JF
bGVtZW50KGNvbnN0IFBvc2l0CiBib29sIGlzTGlzdEVsZW1lbnQoTm9kZSopOwogSFRNTEVsZW1l
bnQqIGVuY2xvc2luZ0xpc3QoTm9kZSopOwogSFRNTEVsZW1lbnQqIG91dGVybW9zdEVuY2xvc2lu
Z0xpc3QoTm9kZSopOwotTm9kZSogZW5jbG9zaW5nTGlzdENoaWxkKE5vZGUqKTsKK0hUTUxFbGVt
ZW50KiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSopOwogTm9kZSogaGlnaGVzdEFuY2VzdG9yKE5v
ZGUqKTsKIGJvb2wgaXNUYWJsZUVsZW1lbnQoTm9kZSopOwogYm9vbCBpc1RhYmxlQ2VsbChjb25z
dCBOb2RlKik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NTE5NSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDA5LTA2LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTcxMgorCisgICAgICAgIEluZGVudE91dGRlbnRDb21tYW5kIGRpZG4ndCBoYW5kbGUgaW5k
ZW50aW5nIGEgbGlzdCBpdGVtIGJldHdlZW4gbmVzdGVkIGxpc3RzLgorICAgICAgICBUaGlzIHBh
dGNoIGZpeGVzIEluZGVudE91dGRlbnRDb21tYW5kIHN1Y2ggdGhhdCB0aGUgZm9sbG93aW5nIGJl
aGF2aW9yIGlzIG9idGFpbmVkOgorCisgICAgICAgIDEuIEluZGVudGVkIGxpc3QgaXMgbWVyZ2Vk
IHdpdGggbGlzdHMgb2YgdGhlIHNhbWUgdHlwZSAob2wgb3IgdWwpIHRoYXQgaW1tZWRpYXRlbHkg
Zm9sbG93cyBvciBwcm9jZWVkcyB0aGUgaW5kZW50ZWQgbGlzdAorICAgICAgICAyLiBMaXN0cyBh
cmUgb25seSBtZXJnZWQgb25seSBpZiBub2RlcyBiZXR3ZWVuIHR3byBsaXN0cyBhcmUgY29uc2lz
dGluZyBlbnRpcmVseSBvZiB3aGl0ZSBzcGFjZXMuCisgICAgICAgIDMuIFdoZW4gbWVyZ2luZyBs
aXN0cywgYW55IG5vbi1ibG9jayBlbGVtZW50cyB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MgYSBs
aXN0IGl0ZW0gd2lsbCBiZSBhcHBlbmRlZCBpbnRvIHRoZSBsaXN0IGl0ZW0gdGhhdCBpbW1lZGlh
dGVseSBwcmVjZWRlcworCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVz
dGVkLWxpc3RzLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWND
b21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMTAtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMTAu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVk
LWxpc3RzLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21t
YW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0zLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0
cy00LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9p
bmRlbnQtbmVzdGVkLWxpc3RzLTQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVj
Q29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50
LW5lc3RlZC1saXN0cy02Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1h
bmQvaW5kZW50LW5lc3RlZC1saXN0cy03LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTgtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0
ZWQtbGlzdHMtOC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1uZXN0ZWQtbGlzdHMtOS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy05Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQt
bGlzdHMtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRl
bnQtbmVzdGVkLWxpc3RzLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1s
aXN0cy0zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVu
dC1uZXN0ZWQtbGlzdHMtNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
ZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtNC5odG1sOiBBZGRlZC4KKwogMjAwOS0w
Ni0yNSAgU2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0xLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMt
MS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gOSBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJID4gT0wgPiBPTCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBMSSA+IE9MID4gT0wgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmlj
YXRpb24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIuIFlvdSBzaG91bGQgc2VlIG51bWJl
cnMgMSBhbmQgMiBiZWZvcmUgInRocmVlIiBhbmQgImZvdXIiIHJlc3BlY3RpdmVseS4KK29uZQor
dHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8bGk+b25lPC9saT4gPGxpPnR3bzwvbGk+IDxsaSBp
ZD0idGVzdCI+dGhyZWU8L2xpPiA8b2w+PGxpPmZvdXI8L2xpPjwvb2w+CitBZnRlcjogPGxpPm9u
ZTwvbGk+IDxsaT50d288L2xpPiA8b2w+PGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+PGxpPmZvdXI8
L2xpPjwvb2w+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1u
ZXN0ZWQtbGlzdHMtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0xLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxib2R5PgorPGRpdj4KK1RoaXMg
dGVzdHMgaW5kZW50aW5nICJ0aHJlZSIuICBZb3Ugc2hvdWxkIHNlZSBudW1iZXJzIDEgYW5kIDIg
YmVmb3JlICJ0aHJlZSIgYW5kICJmb3VyIiByZXNwZWN0aXZlbHkuCis8b2wgaWQ9ImUiIGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4KKzxsaT50d288L2xpPgorPGxpIGlkPSJ0
ZXN0Ij50aHJlZTwvbGk+Cis8b2w+PGxpPmZvdXI8L2xpPjwvb2w+Cis8L29sPgorPC9kaXY+CisK
Kzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8
c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVj
dE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJhbmdl
cygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxz
ZSwgIiIpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0yLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1uZXN0ZWQtbGlzdHMtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRC
ZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJID4g
T0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBM
SSA+IE9MID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZp
ZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIuIFlv
dSBzaG91bGQgc2VlIG51bWJlcnMgMSBhbmQgMiBiZWZvcmUgInR3byIgYW5kICJ0aHJlZSIgcmVz
cGVjdGl2ZWx5Lgorb25lCit0d28KK3RocmVlCitmb3VyCitCZWZvcmU6IDxsaT5vbmU8L2xpPiA8
b2w+PGxpPnR3bzwvbGk+PC9vbD4gPGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+IDxsaT5mb3VyPC9s
aT4KK0FmdGVyOiA8bGk+b25lPC9saT4gPG9sPjxsaT50d288L2xpPjxsaSBpZD0idGVzdCI+dGhy
ZWU8L2xpPjwvb2w+IDxsaT5mb3VyPC9saT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTIuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3Rl
ZC1saXN0cy0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGJv
ZHk+Cis8ZGl2PgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIi4gIFlvdSBzaG91bGQgc2Vl
IG51bWJlcnMgMSBhbmQgMiBiZWZvcmUgInR3byIgYW5kICJ0aHJlZSIgcmVzcGVjdGl2ZWx5Lgor
PG9sIGlkPSJlIiBjb250ZW50ZWRpdGFibGU9InRydWUiPgorPGxpPm9uZTwvbGk+Cis8b2w+PGxp
PnR3bzwvbGk+PC9vbD4KKzxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPgorPGxpPmZvdXI8L2xpPgor
PC9vbD4KKzwvZGl2PgorCis8dWw+Cis8bGk+QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9zcGFuPjwv
bGk+Cis8bGk+QWZ0ZXI6PHNwYW4gaWQ9ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdlJyk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
MScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisK
K3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOwordmFyIHIgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpOworci5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0JykpOwor
cy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFu
ZCgiSW5kZW50IiwgZmFsc2UsICIiKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MyJyku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKworPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0
ZWQtbGlzdHMtMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxp
c3RzLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZp
ZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgor
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+
IExJID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3Rl
eHQgPiBMSSA+IE9MID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0
eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
OldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJl
ZSIuIFlvdSBzaG91bGQgc2VlIDEsIDIsIGFuZCAzIGJlZm9yZSAidHdvIiwgInRocmVlIiwgYW5k
ICJmb3VyIiByZXNwZWN0aXZlbHkuCitvbmUKK3R3bwordGhyZWUKK2ZvdXIKK0JlZm9yZTogPGxp
Pm9uZTwvbGk+IDxvbD48bGk+dHdvPC9saT48L29sPiA8bGkgaWQ9InRlc3QiPnRocmVlPC9saT4g
PG9sPjxsaT5mb3VyPC9saT48L29sPgorQWZ0ZXI6IDxsaT5vbmU8L2xpPiA8b2w+PGxpPnR3bzwv
bGk+PGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+PGxpPmZvdXI8L2xpPjwvb2w+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3Rl
ZC1saXN0cy0zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM4IEBACis8aHRtbD4KKzxib2R5PgorPGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUiPgorVGhp
cyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIi4gWW91IHNob3VsZCBzZWUgMSwgMiwgYW5kIDMgYmVm
b3JlICJ0d28iLCAidGhyZWUiLCBhbmQgImZvdXIiIHJlc3BlY3RpdmVseS4KKzxvbCBpZD0iZGl2
Ij4KKzxsaT5vbmU8L2xpPgorPG9sPjxsaT50d288L2xpPjwvb2w+Cis8bGkgaWQ9InRlc3QiPnRo
cmVlPC9saT4KKzxvbD48bGk+Zm91cjwvbGk+PC9vbD4KKzwvb2w+Cis8L2Rpdj4KKworPHVsPgor
PGxpPkJlZm9yZTo8c3BhbiBpZD0iYzEiPjwvc3Bhbj48L2xpPgorPGxpPkFmdGVyOjxzcGFuIGlk
PSJjMiI+PC9zcGFuPjwvbGk+Cis8L3VsPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK30KKwordmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkaXYnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoZGl2LmlubmVySFRNTCkpOworCit2YXIgcyA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKK3ZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2VsZWN0
Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpKTsKK3MucmVtb3ZlQWxsUmFuZ2Vz
KCk7CitzLmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluZGVudCIsIGZhbHNl
LCAiIik7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMicpLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKGRpdi5pbm5lckhUTUwpKTsKKworPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9p
bmRlbnQtbmVzdGVkLWxpc3RzLTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBPTCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0Rp
ZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gTEkg
PiBPTCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiAjdGV4dCA+
IExJID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIiBh
bmQgImZvdXIiLiBZb3Ugc2hvdWxkIHNlZSAxIHRocm91Z2ggNCBpbiBvcmRlciBiZWZvcmUgbnVt
YmVycyAidHdvIiB0aHJvdWdoICJmaXZlIi4KK29uZQordHdvCit0aHJlZQorZm91cgorZml2ZQor
QmVmb3JlOiA8bGk+b25lPC9saT4gPG9sPjxsaT50d288L2xpPjwvb2w+IDxsaSBpZD0idGVzdDEi
PnRocmVlPC9saT4gPGxpIGlkPSJ0ZXN0MiI+Zm91cjwvbGk+IDxvbD48bGk+Zml2ZTwvbGk+PC9v
bD4KK0FmdGVyOiA8bGk+b25lPC9saT4gPG9sPjxsaT50d288L2xpPjxsaSBpZD0idGVzdDEiPnRo
cmVlPC9saT48bGkgaWQ9InRlc3QyIj5mb3VyPC9saT48bGk+Zml2ZTwvbGk+PC9vbD4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy00Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQt
bmVzdGVkLWxpc3RzLTQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy00Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDAgQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2PgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcg
InRocmVlIiBhbmQgImZvdXIiLiAgWW91IHNob3VsZCBzZWUgMSB0aHJvdWdoIDQgaW4gb3JkZXIg
YmVmb3JlIG51bWJlcnMgInR3byIgdGhyb3VnaCAiZml2ZSIuCis8b2wgaWQ9ImUiIGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4KKzxvbD48bGk+dHdvPC9saT48L29sPgorPGxp
IGlkPSJ0ZXN0MSI+dGhyZWU8L2xpPgorPGxpIGlkPSJ0ZXN0MiI+Zm91cjwvbGk+Cis8b2w+PGxp
PmZpdmU8L2xpPjwvb2w+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4g
aWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xp
PgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVk
aXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
ZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNldFN0YXJ0KGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0ZXN0MScpLDApOworci5zZXRFbmQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qy
JyksMSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkp
OworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5k
ZW50LW5lc3RlZC1saXN0cy01LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1u
ZXN0ZWQtbGlzdHMtNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAK
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBvZiBPTCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
QmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiAjdGV4dCA+IExJID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDUgb2YgI3RleHQgPiBMSSA+IE9MID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1RoaXMgdGVz
dHMgaW5kZW50aW5nICJ0aHJlZSIuIFlvdSBzaG91bGQgc2VlIDEsIDIsIGFuZCB0aGVuIGEgYnVs
bGV0IGJlZm9yZSBudW1iZXJzICJ0d28iLCAidGhyZWUiLCBhbmQgImZvdXIiIHJlc3BlY3RpdmVs
eS4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8bGk+b25lPC9saT4gPG9sPjxsaT50
d288L2xpPjwvb2w+IDxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPiA8dWw+PGxpPmZvdXI8L2xpPjwv
dWw+CitBZnRlcjogPGxpPm9uZTwvbGk+IDxvbD48bGk+dHdvPC9saT48bGkgaWQ9InRlc3QiPnRo
cmVlPC9saT48L29sPiA8dWw+PGxpPmZvdXI8L2xpPjwvdWw+CkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy01
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1uZXN0ZWQtbGlzdHMtNS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8
aHRtbD4KKzxib2R5PgorPGRpdj4KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIuICBZb3Ug
c2hvdWxkIHNlZSAxLCAyLCBhbmQgdGhlbiBhIGJ1bGxldCBiZWZvcmUgbnVtYmVycyAidHdvIiwg
InRocmVlIiwgYW5kICJmb3VyIiByZXNwZWN0aXZlbHkuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4KKzxvbD48bGk+dHdvPC9saT48L29sPgorPGxpIGlk
PSJ0ZXN0Ij50aHJlZTwvbGk+Cis8dWw+PGxpPmZvdXI8L2xpPjwvdWw+Cis8L29sPgorPC9kaXY+
CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRl
cjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNl
bGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJh
bmdlcygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBm
YWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy02LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2luZGVudC1uZXN0ZWQtbGlzdHMtNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdE
aWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJ
ID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQg
PiBMSSA+IE9MID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpO
U1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldl
YlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIu
IFlvdSBzaG91bGQgc2VlIGEgYnVsbGV0IHRoZW4gMSBhbmQgMiBiZWZvcmUgbnVtYmVycyAidHdv
IiwgInRocmVlIiwgYW5kICJmb3VyIiByZXNwZWN0aXZlbHkuCitvbmUKK3R3bwordGhyZWUKK2Zv
dXIKK0JlZm9yZTogPGxpPm9uZTwvbGk+IDx1bD48bGk+dHdvPC9saT48L3VsPiA8bGkgaWQ9InRl
c3QiPnRocmVlPC9saT4gPG9sPjxsaT5mb3VyPC9saT48L29sPgorQWZ0ZXI6IDxsaT5vbmU8L2xp
PiA8dWw+PGxpPnR3bzwvbGk+PC91bD4gPG9sPjxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPjxsaT5m
b3VyPC9saT48L29sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRl
bnQtbmVzdGVkLWxpc3RzLTYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNi5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTYuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXY+CitU
aGlzIHRlc3RzIGluZGVudGluZyAidGhyZWUiLiAgWW91IHNob3VsZCBzZWUgYSBidWxsZXQgdGhl
biAxIGFuZCAyIGJlZm9yZSBudW1iZXJzICJ0d28iLCAidGhyZWUiLCBhbmQgImZvdXIiIHJlc3Bl
Y3RpdmVseS4KKzxvbCBpZD0iZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KKzxsaT5vbmU8L2xp
PgorPHVsPjxsaT50d288L2xpPjwvdWw+Cis8bGkgaWQ9InRlc3QiPnRocmVlPC9saT4KKzxvbD48
bGk+Zm91cjwvbGk+PC9vbD4KKzwvb2w+Cis8L2Rpdj4KKworPHVsPgorPGxpPkJlZm9yZTo8c3Bh
biBpZD0iYzEiPjwvc3Bhbj48L2xpPgorPGxpPkFmdGVyOjxzcGFuIGlkPSJjMiI+PC9zcGFuPjwv
bGk+Cis8L3VsPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
RWRpdGluZ0NhbGxiYWNrcygpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK30KKwordmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZScpOworCitkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYzEnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShlLmlubmVySFRNTCkpOworCit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciBy
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2VsZWN0Tm9kZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdCcpKTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7CitzLmFkZFJhbmdlKHIpOwor
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluZGVudCIsIGZhbHNlLCAiIik7CisKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjMicpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUu
aW5uZXJIVE1MKSk7CisKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy03LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvaW5kZW50LW5lc3RlZC1saXN0cy03LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNiBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAx
MSBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJID4gT0wgPiBPTCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBMSSA+IE9MID4gT0wgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRp
b24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIgYW5kICJmb3VyIi4gWW91IHNob3VsZCBz
ZWUgMSBiZWZvcmUgInR3byIsICJ0aHJlZSIsIGFuZCAiZml2ZSIgYnV0IDIgYmVmb3JlICJmb3Vy
Ii4gTmVpdGhlciAidHdvIiBub3IgImZpdmUiIHNob3VsZCBiZSB0aGUgcGFydCBvZiBuZXcgbmVz
dGVkIGxpc3Qgc2luY2UgdGhlcmUgaXMgdGV4dCBiZXR3ZWVuICJ0d28iIGFuZCAidGhyZWUiLCBh
bmQgImZpdmUiIGlzIHVub3JkZXJlZC4KK29uZQordHdvCithYWEKK3RocmVlCitmb3VyCitmaXZl
CitCZWZvcmU6IDxsaT5vbmU8L2xpPiA8b2w+PGxpPnR3bzwvbGk+PC9vbD4gYWFhIDxsaSBpZD0i
dGVzdDMiPnRocmVlPC9saT4gPGxpIGlkPSJ0ZXN0NCI+Zm91cjwvbGk+IDx1bD48bGk+Zml2ZTwv
bGk+PC91bD4KK0FmdGVyOiA8bGk+b25lPC9saT4gPG9sPjxsaT50d288L2xpPjwvb2w+IGFhYSA8
b2w+PGxpIGlkPSJ0ZXN0MyI+dGhyZWU8L2xpPjxsaSBpZD0idGVzdDQiPmZvdXI8L2xpPjwvb2w+
IDx1bD48bGk+Zml2ZTwvbGk+PC91bD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy03Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTcuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1s
aXN0cy03Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGJvZHk+
Cis8ZGl2PgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIiBhbmQgImZvdXIiLiAgWW91IHNo
b3VsZCBzZWUgMSBiZWZvcmUgInR3byIsICJ0aHJlZSIsIGFuZCAiZml2ZSIgYnV0IDIgYmVmb3Jl
ICJmb3VyIi4KK05laXRoZXIgInR3byIgbm9yICJmaXZlIiBzaG91bGQgYmUgdGhlIHBhcnQgb2Yg
bmV3IG5lc3RlZCBsaXN0IHNpbmNlIHRoZXJlIGlzIHRleHQgYmV0d2VlbiAidHdvIiBhbmQgInRo
cmVlIiwgYW5kICJmaXZlIiBpcyB1bm9yZGVyZWQuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJs
ZT0idHJ1ZSI+Cis8bGk+b25lPC9saT4KKzxvbD48bGk+dHdvPC9saT48L29sPgorYWFhCis8bGkg
aWQ9InRlc3QzIj50aHJlZTwvbGk+Cis8bGkgaWQ9InRlc3Q0Ij5mb3VyPC9saT4KKzx1bD48bGk+
Zml2ZTwvbGk+PC91bD4KKzwvb2w+Cis8L2Rpdj4KKworPHVsPgorPGxpPkJlZm9yZTo8c3BhbiBp
ZD0iYzEiPjwvc3Bhbj48L2xpPgorPGxpPkFmdGVyOjxzcGFuIGlkPSJjMiI+PC9zcGFuPjwvbGk+
Cis8L3VsPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRp
dGluZ0NhbGxiYWNrcygpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K30KKwordmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZScpOworCitkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYzEnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShl
LmlubmVySFRNTCkpOworCit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciByID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2V0U3RhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Rlc3QzJyksMCk7CityLnNldEVuZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDQn
KSwxKTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7CitzLmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkluZGVudCIsIGZhbHNlLCAiIik7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjMicpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7
CisKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRl
bnQtbmVzdGVkLWxpc3RzLTgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy04LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5l
c3RlZC1saXN0cy04LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAor
RURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mIE9MID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRC
ZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mICN0ZXh0ID4gTEkgPiBPTCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMyBvZiAjdGV4dCA+IExJID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0
cyBpbmRlbnRpbmcgInR3byIuIFlvdSBzaG91bGQgc2VlIDEgYmVmb3JlIG51bWJlcnMgIm9uZSIg
dGhyb3VnaCAidGhyZWUiIHNpbmNlICJvbmUiIGFuZCAidGhyZWUiIGFyZSBOT1QgY29udGVudGVk
aXRhYmxlLiBJbiBhZGRpdGlvbiwgImhlbGxvIHdvcmxkIiBtdXN0IGFwcGVhciBpbiB0aGUgc2Ft
ZSBsaXN0IGl0ZW0gYXMgInR3byIuCitvbmUKK3R3bworaGVsbG8gd29ybGQKK3RocmVlCitCZWZv
cmU6IDxvbCBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj48bGk+b25lPC9saT48L29sPiA8bGkgaWQ9
InRlc3QiPnR3bzwvbGk+IDxiPmhlbGxvPC9iPiB3b3JsZCA8b2wgY29udGVudGVkaXRhYmxlPSJm
YWxzZSI+PGxpPnRocmVlPC9saT48L29sPgorQWZ0ZXI6IDxvbCBjb250ZW50ZWRpdGFibGU9ImZh
bHNlIj48bGk+b25lPC9saT48L29sPiA8b2w+PGxpIGlkPSJ0ZXN0Ij50d288YnI+IDxiPmhlbGxv
PC9iPiB3b3JsZCA8L2xpPjwvb2w+PG9sIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiPjxsaT50aHJl
ZTwvbGk+PC9vbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50
LW5lc3RlZC1saXN0cy04Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTguaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy04Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2PgorVGhp
cyB0ZXN0cyBpbmRlbnRpbmcgInR3byIuICBZb3Ugc2hvdWxkIHNlZSAxIGJlZm9yZSBudW1iZXJz
ICJvbmUiIHRocm91Z2ggInRocmVlIiBzaW5jZSAib25lIiBhbmQgInRocmVlIiBhcmUgTk9UIGNv
bnRlbnRlZGl0YWJsZS4KK0luIGFkZGl0aW9uLCAiaGVsbG8gd29ybGQiIG11c3QgYXBwZWFyIGlu
IHRoZSBzYW1lIGxpc3QgaXRlbSBhcyAidHdvIi4KKzxvbCBpZD0iZSIgY29udGVudGVkaXRhYmxl
PSJ0cnVlIj4KKzxvbCBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj48bGk+b25lPC9saT48L29sPgor
PGxpIGlkPSJ0ZXN0Ij50d288L2xpPiA8Yj5oZWxsbzwvYj4gd29ybGQKKzxvbCBjb250ZW50ZWRp
dGFibGU9ImZhbHNlIj48bGk+dGhyZWU8L2xpPjwvb2w+Cis8L29sPgorPC9kaXY+CisKKzx1bD4K
KzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBp
ZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7Cit2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOwor
cy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIp
OworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy05LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1u
ZXN0ZWQtbGlzdHMtOS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtOS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2lu
RWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMTEgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAor
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5F
ZGl0aW5nTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01S
YW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBMSSA+IE9MID4g
T0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gTEkgPiBP
TCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlk
Q2hhbmdlTm90aWZpY2F0aW9uCitUaGlzIHRlc3RzIGluZGVudGluZyAidHdvIi4gWW91IHNob3Vs
ZCBzZWUgMSBiZWZvcmUgbnVtYmVycyAib25lIiB0aHJvdWdoICJ0aHJlZSIgc2luY2UgIm9uZSIg
YW5kICJ3b3JsZCIgYXJlIE5PVCBjb250ZW50ZWRpdGFibGUuIEluIGFkZGl0aW9uLCAiaGVsbG8i
IG11c3QgYXBwZWFyIGluIHRoZSBzYW1lIGxpc3QgaXRlbSBhcyAidHdvIiBhbmQgIndvcmxkIiBt
dXN0IGFwcGVhciBvbiB0aGUgc2FtZSBsZXZlbCBhcyAiZm91ciIKK29uZQordHdvCitoZWxsbwor
d29ybGQKK3RocmVlCitmb3VyCitCZWZvcmU6IDxvbCBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj48
bGk+b25lPC9saT48L29sPiA8bGkgaWQ9InRlc3QiPnR3bzwvbGk+IGhlbGxvIDxzcGFuIGNvbnRl
bnRlZGl0YWJsZT0iZmFsc2UiPndvcmxkPC9zcGFuPiA8b2w+PGxpPnRocmVlPC9saT48L29sPiA8
bGk+Zm91cjwvbGk+CitBZnRlcjogPG9sIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiPjxsaT5vbmU8
L2xpPjwvb2w+IDxvbD48bGkgaWQ9InRlc3QiPnR3bzxicj4gaGVsbG8gPC9saT48L29sPjxzcGFu
IGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiPndvcmxkPC9zcGFuPiA8b2w+PGxpPnRocmVlPC9saT48
L29sPiA8bGk+Zm91cjwvbGk+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2luZGVudC1uZXN0ZWQtbGlzdHMtOS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy05Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMt
OS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACis8aHRtbD4KKzxib2R5PgorPGRp
dj4KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0d28iLiAgWW91IHNob3VsZCBzZWUgMSBiZWZvcmUg
bnVtYmVycyAib25lIiB0aHJvdWdoICJ0aHJlZSIgc2luY2UgIm9uZSIgYW5kICJ3b3JsZCIgYXJl
IE5PVCBjb250ZW50ZWRpdGFibGUuCitJbiBhZGRpdGlvbiwgImhlbGxvIiBtdXN0IGFwcGVhciBp
biB0aGUgc2FtZSBsaXN0IGl0ZW0gYXMgInR3byIgYW5kICJ3b3JsZCIgbXVzdCBhcHBlYXIgb24g
dGhlIHNhbWUgbGV2ZWwgYXMgImZvdXIiCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSI+Cis8b2wgY29udGVudGVkaXRhYmxlPSJmYWxzZSI+PGxpPm9uZTwvbGk+PC9vbD4KKzxsaSBp
ZD0idGVzdCI+dHdvPC9saT4gaGVsbG8gPHNwYW4gY29udGVudGVkaXRhYmxlPSJmYWxzZSI+d29y
bGQ8L3NwYW4+Cis8b2w+PGxpPnRocmVlPC9saT48L29sPgorPGxpPmZvdXI8L2xpPgorPC9vbD4K
KzwvZGl2PgorCis8dWw+Cis8bGk+QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9zcGFuPjwvbGk+Cis8
bGk+QWZ0ZXI6PHNwYW4gaWQ9ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdlJyk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMScpLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKK3ZhciBz
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOwordmFyIHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
Oworci5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0JykpOworcy5yZW1v
dmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5k
ZW50IiwgZmFsc2UsICIiKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MyJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKworPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlz
dHMtMTAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0xMC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMt
MTAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBPTCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDkgb2YgT0wgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGlu
ZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
I3RleHQgPiBMSSA+IE9MID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAz
IG9mICN0ZXh0ID4gTEkgPiBPTCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitUaGlzIHRlc3RzIGluZGVudGlu
ZyAib25lIi4gWW91IHNob3VsZCBzZWUgMSBiZWZvcmUgbnVtYmVycyAib25lIiBhbmQgInR3byIg
c2luY2UgdGhlcmUgaXMgYSBibG9jayBlbGVtZW50ICJ3ZWJraXQiLiBJbiBhZGRpdGlvbiwgImhl
bGxvIHdvcmxkIiBtdXN0IGFwcGVhciBpbiB0aGUgc2FtZSBsaXN0IGl0ZW0gYXMgInR3byIgYW5k
ICJ3ZWJraXQiIG11c3QgYXBwZWFyIG9uIHRoZSBzYW1lIGxldmVsIGFzICJ0d28iLgorb25lCito
ZWxsbyB3b3JsZAord2Via2l0Cit0d28KK0JlZm9yZTogPGxpIGlkPSJ0ZXN0Ij5vbmU8L2xpPiBo
ZWxsbyA8Yj53b3JsZDwvYj4gPGRpdj53ZWJraXQ8L2Rpdj4gPGxpPnR3bzwvbGk+CitBZnRlcjog
PG9sPjxsaSBpZD0idGVzdCI+b25lPGJyPiBoZWxsbyA8Yj53b3JsZDwvYj4gPC9saT48L29sPjxk
aXY+d2Via2l0PC9kaXY+IDxsaT50d288L2xpPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTEwLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTEwLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1u
ZXN0ZWQtbGlzdHMtMTAuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+
Cis8Ym9keT4KKzxkaXY+CitUaGlzIHRlc3RzIGluZGVudGluZyAib25lIi4gIFlvdSBzaG91bGQg
c2VlIDEgYmVmb3JlIG51bWJlcnMgIm9uZSIgYW5kICJ0d28iIHNpbmNlIHRoZXJlIGlzIGEgYmxv
Y2sgZWxlbWVudCAid2Via2l0Ii4KK0luIGFkZGl0aW9uLCAiaGVsbG8gd29ybGQiIG11c3QgYXBw
ZWFyIGluIHRoZSBzYW1lIGxpc3QgaXRlbSBhcyAidHdvIiBhbmQgIndlYmtpdCIgbXVzdCBhcHBl
YXIgb24gdGhlIHNhbWUgbGV2ZWwgYXMgInR3byIuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJs
ZT0idHJ1ZSI+Cis8bGkgaWQ9InRlc3QiPm9uZTwvbGk+IGhlbGxvIDxiPndvcmxkPC9iPiA8ZGl2
PndlYmtpdDwvZGl2PgorPGxpPnR3bzwvbGk+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5C
ZWZvcmU6PHNwYW4gaWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIi
Pjwvc3Bhbj48L2xpPgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKTsK
KworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7Cit2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRS
YW5nZShyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIpOworCitk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3Rl
ZC1saXN0cy0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRp
dGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gNyBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRp
bmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdl
OihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IExJID4gT0wgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgorVGhpcyB0ZXN0cyBvdXRkZW50aW5nICJ0aHJlZSIuIFlvdSBzaG91bGQgc2VlIDIgYW5k
IDMgYmVmb3JlICJ0aHJlZSIgYW5kICJmb3VyIiByZXNwZWN0aXZlbHkuCitvbmUKK3R3bwordGhy
ZWUKK2ZvdXIKK0JlZm9yZTogPGxpPm9uZTwvbGk+IDxvbD48bGk+dHdvPC9saT4gPGxpIGlkPSJ0
ZXN0Ij50aHJlZTwvbGk+PC9vbD4gPGxpPmZvdXI8L2xpPgorQWZ0ZXI6IDxsaT5vbmU8L2xpPiA8
b2w+PGxpPnR3bzwvbGk+IDwvb2w+PGxpPnRocmVlPC9saT4gPGxpPmZvdXI8L2xpPgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0xLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50
LW5lc3RlZC1saXN0cy0xLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTEuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzOCBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXY+CitUaGlzIHRlc3RzIG91dGRlbnRp
bmcgInRocmVlIi4gIFlvdSBzaG91bGQgc2VlIDIgYW5kIDMgYmVmb3JlICJ0aHJlZSIgYW5kICJm
b3VyIiByZXNwZWN0aXZlbHkuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8
bGk+b25lPC9saT4KKzxvbD48bGk+dHdvPC9saT4KKzxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPjwv
b2w+Cis8bGk+Zm91cjwvbGk+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNw
YW4gaWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48
L2xpPgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKTsKKworZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIg
ciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsK
K2RvY3VtZW50LmV4ZWNDb21tYW5kKCJPdXRkZW50IiwgZmFsc2UsICIiKTsKKworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2MyJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
ZS5pbm5lckhUTUwpKTsKKworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMt
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE0IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRP
TVJhbmdlOnJhbmdlIGZyb20gMCBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDUgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBMSSA+IE9MID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IExJID4gT0wgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBz
dGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1Ro
aXMgdGVzdHMgb3V0ZGVudGluZyAib25lIi4gWW91IHNlZSAxIGJlZm9yZSAib25lIiBidXQgMSBh
bmQgMiBiZWZvcmUgInR3byIgYW5kICJ0aHJlZSIgcmVzcGVjdGl2ZWx5Lgorb25lCit0d28KK3Ro
cmVlCitmb3VyCitCZWZvcmU6IDxvbD48bGkgaWQ9InRlc3QiPm9uZTwvbGk+IDxsaT50d288L2xp
PiA8bGk+dGhyZWU8L2xpPjwvb2w+IDxsaT5mb3VyPC9saT4KK0FmdGVyOiA8bGk+b25lPC9saT48
b2w+IDxsaT50d288L2xpPiA8bGk+dGhyZWU8L2xpPjwvb2w+IDxsaT5mb3VyPC9saT4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVu
dC1uZXN0ZWQtbGlzdHMtMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0yLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2PgorVGhpcyB0ZXN0cyBvdXRkZW50
aW5nICJvbmUiLiAgWW91IHNlZSAxIGJlZm9yZSAib25lIiBidXQgMSBhbmQgMiBiZWZvcmUgInR3
byIgYW5kICJ0aHJlZSIgcmVzcGVjdGl2ZWx5LgorPG9sIGlkPSJlIiBjb250ZW50ZWRpdGFibGU9
InRydWUiPgorPG9sPjxsaSBpZD0idGVzdCI+b25lPC9saT4KKzxsaT50d288L2xpPgorPGxpPnRo
cmVlPC9saT48L29sPgorPGxpPmZvdXI8L2xpPgorPC9vbD4KKzwvZGl2PgorCis8dWw+Cis8bGk+
QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9zcGFuPjwvbGk+Cis8bGk+QWZ0ZXI6PHNwYW4gaWQ9ImMy
Ij48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworfQorCit2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlJyk7
CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKK3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlv
bigpOwordmFyIHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5zZWxlY3ROb2RlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0JykpOworcy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRk
UmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiT3V0ZGVudCIsIGZhbHNlLCAiIik7CisK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMicpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVz
dGVkLWxpc3RzLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5F
ZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byA1IG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRp
dGluZ05vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBMSSA+IE9MID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgor
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZp
Y2F0aW9uCitUaGlzIHRlc3RzIG91dGRlbnRpbmcgInR3byIuIFlvdSBzaG91bGQgc2VlIDEgYmVm
b3JlICJvbmUiLCAidHdvIiwgYW5kICJ0aHJlZSIgYnV0IDIgYmVmb3JlICJmb3VyIi4KK29uZQor
dHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8b2w+PGxpPm9uZTwvbGk+IDxsaSBpZD0idGVzdCI+
dHdvPC9saT4gPGxpPnRocmVlPC9saT48L29sPiA8bGk+Zm91cjwvbGk+CitBZnRlcjogPG9sPjxs
aT5vbmU8L2xpPiA8L29sPjxsaT50d288L2xpPjxvbD4gPGxpPnRocmVlPC9saT48L29sPiA8bGk+
Zm91cjwvbGk+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQt
bmVzdGVkLWxpc3RzLTMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTMuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxib2R5PgorPGRpdj4KK1Ro
aXMgdGVzdHMgb3V0ZGVudGluZyAidHdvIi4gIFlvdSBzaG91bGQgc2VlIDEgYmVmb3JlICJvbmUi
LCAidHdvIiwgYW5kICJ0aHJlZSIgYnV0IDIgYmVmb3JlICJmb3VyIi4KKzxvbCBpZD0iZSIgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIj4KKzxvbD48bGk+b25lPC9saT4KKzxsaSBpZD0idGVzdCI+dHdv
PC9saT4KKzxsaT50aHJlZTwvbGk+PC9vbD4KKzxsaT5mb3VyPC9saT4KKzwvb2w+Cis8L2Rpdj4K
KworPHVsPgorPGxpPkJlZm9yZTo8c3BhbiBpZD0iYzEiPjwvc3Bhbj48L2xpPgorPGxpPkFmdGVy
OjxzcGFuIGlkPSJjMiI+PC9zcGFuPjwvbGk+Cis8L3VsPgorCis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKwordmFyIGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZScpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzEnKS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCit2YXIgcyA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24oKTsKK3ZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2Vs
ZWN0Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpKTsKK3MucmVtb3ZlQWxsUmFu
Z2VzKCk7CitzLmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk91dGRlbnQiLCBm
YWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtNC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9vdXRkZW50LW5lc3RlZC1saXN0cy00LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtNC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6
IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2lu
RWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gTEkgPiBPTCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBMSSA+IE9MID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90
aWZpY2F0aW9uCitUaGlzIHRlc3RzIG91dGRlbnRpbmcgb3JkZXJlZCBsaXN0cyB0aGF0IGNvbnRh
aW5zIGFuIHVub3JkZXJlZC1saXN0LiBZb3Ugc2hvdWxkIHNlZSAxIHRocm91Z2ggMyBiZWZvcmUg
bnVtYmVycyAidHdvIiB0aHJvdWdoICJmb3VyIi4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVm
b3JlOiA8b2w+PGxpPm9uZTwvbGk+IDxsaSBpZD0ic3RhcnQiPnR3bzwvbGk+PC9vbD4gPHVsPjxs
aT50aHJlZTwvbGk+PC91bD4gPG9sPjxsaSBpZD0iZW5kIj5mb3VyPC9saT48L29sPgorQWZ0ZXI6
IDxvbD48bGk+b25lPC9saT4gPC9vbD48bGk+dHdvPC9saT4gPGxpPnRocmVlPC9saT4gPGxpPmZv
dXI8L2xpPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5l
c3RlZC1saXN0cy00Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy00Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgY29udGVu
dGVkaXRhYmxlPSJ0cnVlIj4KK1RoaXMgdGVzdHMgb3V0ZGVudGluZyBvcmRlcmVkIGxpc3RzIHRo
YXQgY29udGFpbnMgYW4gdW5vcmRlcmVkLWxpc3QuICBZb3Ugc2hvdWxkIHNlZSAxIHRocm91Z2gg
MyBiZWZvcmUgbnVtYmVycyAidHdvIiB0aHJvdWdoICJmb3VyIi4KKzxvbCBpZD0iZSI+Cis8b2w+
PGxpPm9uZTwvbGk+Cis8bGkgaWQ9InN0YXJ0Ij50d288L2xpPjwvb2w+Cis8dWw+PGxpPnRocmVl
PC9saT48L3VsPgorPG9sPjxsaSBpZD0iZW5kIj5mb3VyPC9saT48L29sPgorPC9vbD4KKzwvZGl2
PgorCis8dWw+Cis8bGk+QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9zcGFuPjwvbGk+Cis8bGk+QWZ0
ZXI6PHNwYW4gaWQ9ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdlJyk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMScpLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKK3ZhciBzID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOwordmFyIHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5z
ZXRTdGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhcnQnKSwwKTsKK3Iuc2V0RW5kKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbmQnKSwxKTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7Citz
LmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk91dGRlbnQiLCBmYWxzZSwgIiIp
OworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4K
</data>
<flag name="review"
          id="16438"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>