<?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>78493</bug_id>
          
          <creation_ts>2012-02-13 06:35:47 -0800</creation_ts>
          <short_desc>[CSSRegions][CSSOM] Implement Element.getRegionFlowRanges</short_desc>
          <delta_ts>2012-09-13 00:50:44 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66643</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Raul Hudea">rhudea</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>mihnea</cc>
    
    <cc>ojan</cc>
    
    <cc>stearns</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>555232</commentid>
    <comment_count>0</comment_count>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-02-13 06:35:47 -0800</bug_when>
    <thetext>Implement the Element.getRegionsFlowRanges extension from http://dev.w3.org/csswg/css3-regions/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686986</commentid>
    <comment_count>1</comment_count>
      <attachid>156424</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-08-03 11:26:25 -0700</bug_when>
    <thetext>Created attachment 156424
Current work (still lots of fprintf&apos;s)

This is the current status for this:
- the patch is still in its infancy (no tests in this one)
- the idea behind is to do walk the RenderFlowThread in order to find the RenderObjects that starts and ends this region (it uses an identical AnchorType as the Position, in order to be able have things like BeforeAnchor, BeforeChildren, InAnchor (for text)..)
- after this RenderObject boundary is found, then it tries to map it over the DOM tree and create extra Ranges when a hole is found (for example a node inside a content node is also a content node =&gt; those nodes are siblings in the RenderTree).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708718</commentid>
    <comment_count>2</comment_count>
      <attachid>161495</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-08-30 09:36:45 -0700</bug_when>
    <thetext>Created attachment 161495
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708775</commentid>
    <comment_count>3</comment_count>
      <attachid>161495</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-30 10:11:12 -0700</bug_when>
    <thetext>Comment on attachment 161495
patch

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

r-. Comments below.

&gt; Source/WebCore/rendering/RenderBlock.cpp:7189
&gt; +    // slower path without layout state
&gt; +    LayoutUnit offsetTop;
&gt; +    const RenderBlock* currBlock = this;

Can you put in a FIXME above this code that it doesn&apos;t work for columns or pages? Right now nothing works outside of layout, but with your change, only regions will work outside of layout. That&apos;s actually fine, since the new columns and pages are written using regions and will work with this new code you&apos;ve put in, but I&apos;d at least like a FIXME for now that it doesn&apos;t work with the current columns and pages code.

Something like;

// FIXME: This is a slower path that doesn&apos;t use layout state and relies on getting your logical top inside the enclosing flow thread. It doesn&apos;t
// work with columns or pages currently, but it should once they have been switched over to using flow threads.

Also, I&apos;d like to see an ASSERT added to prevent anyone from calling this outside of layout for anything but regions. You can do this by adding:

ASSERT(currBlock-&gt;inRenderFlowThread());

before your loop. You could also just go ahead and bail with a return value of ZERO_LAYOUT_UNIT if currBlock isn&apos;t inside a render flow thread (following the assert).

&gt; Source/WebCore/rendering/RenderBlock.cpp:7192
&gt; +        offsetTop += currBlock-&gt;logicalTop();

This isn&apos;t correct. You have to account for changes in writing mode as you crawl up containing blocks. You&apos;re going to need to add isWritingModeRoot checks and do flipping as needed in order to get the correct offset.

You&apos;re going to need some additional tests here. Embed a few orthogonal writing mode objects inside your regions so that you are testing this, e.g., put a vertical-rl object inside a horizontal-tb flow thread etc. They don&apos;t paginate and just move atomically, but they should still work correctly as far as knowing what region they&apos;re in.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:-792
&gt; -

Random whitespace change. Please revert this.

&gt; Source/WebCore/rendering/RenderNamedFlowThread.cpp:378
&gt; +    LayoutRect regionRect(region-&gt;flowThreadPortionRect());

I would prefer you call the local flowThreadPortionRect and not regionRect.

Ultimately we&apos;re probably going to move to adopt CSS3 Fragmentation&apos;s terminology and start calling these fragmentRects, but for now let&apos;s keep using flowThreadPortion.

&gt; Source/WebCore/rendering/RenderNamedFlowThread.cpp:387
&gt; +        logicalTopForRegion = logicalTopForBox(isHorizontalWritingMode(), regionRect);

I think this would be a useful method to put on RenderRegion itself. I can see this being used by others, and I think there are even existing places in the code that grab this value that would benefit from such a helper.

Something like:

LayoutUnit RenderRegion::logicalTopForFlowThreadContent() const { return flowThread()-&gt;isHorizontalWritingMode() ? flowThreadPortionRect().y() : flowThreadPortionRect().x(); }

If you look around you&apos;ll see we do the above in other places in the code too.

&gt; Source/WebCore/rendering/RenderNamedFlowThread.cpp:393
&gt; +        logicalBottomForRegion = logicalBottomForBox(isHorizontalWritingMode(), regionRect);

LayoutUnit RenderRegion::logicalBottomForFlowThreadContent() const { return flowThread()-&gt;isHorizontalWritingMode() ? flowThreadPortionRect().maxY() : flowThreadPortionRect().maxX(); }

&gt; Source/WebCore/rendering/RenderNamedFlowThread.cpp:439
&gt; +            LayoutUnit logicalTopForRenderer = logicalTopForBox(isHorizontalWritingMode(), boundingBox);
&gt; +            LayoutUnit logicalBottomForRenderer = logicalBottomForBox(isHorizontalWritingMode(), boundingBox);

RenderRegion::logicalTopOfFlowThreadContentRect(const LayoutRect&amp; rect) const;
RenderRegion::logicalBottomOfFlowThreadContentRect(const LayoutRect&amp; rect) const;

Could even implement the previous helpers I suggested and have them call these, passing in the flowThreadPortionRect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713244</commentid>
    <comment_count>4</comment_count>
      <attachid>162493</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-06 06:34:46 -0700</bug_when>
    <thetext>Created attachment 162493
Address reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713256</commentid>
    <comment_count>5</comment_count>
      <attachid>162499</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-06 06:43:51 -0700</bug_when>
    <thetext>Created attachment 162499
Removed duplicate changelog entry (from the patch above)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713295</commentid>
    <comment_count>6</comment_count>
      <attachid>162499</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-06 08:11:57 -0700</bug_when>
    <thetext>Comment on attachment 162499
Removed duplicate changelog entry (from the patch above)

Attachment 162499 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13761983</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713303</commentid>
    <comment_count>7</comment_count>
      <attachid>162511</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-06 08:17:32 -0700</bug_when>
    <thetext>Created attachment 162511
Make the qt bot happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716203</commentid>
    <comment_count>8</comment_count>
      <attachid>162511</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-10 10:06:16 -0700</bug_when>
    <thetext>Comment on attachment 162511
Make the qt bot happy

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

Looks good. Just minor nits. I would possibly think about that writing mode section, since it feels like that could be simplified to me, but if you fix the other issues I pointed out that&apos;s good enough for a +.

&gt; Source/WebCore/rendering/RenderBlock.cpp:7220
&gt; +        if (containerBlock-&gt;style()-&gt;writingMode() != currentBlock-&gt;style()-&gt;writingMode()) {

You can use the method isWritingModeRoot() here. That&apos;s cleaner than having to compare the writing mode styles.

&gt; Source/WebCore/rendering/RenderBlock.cpp:7231
&gt; +            if (containerBlock-&gt;style()-&gt;isFlippedBlocksWritingMode()) {
&gt; +                if (containerBlock-&gt;isHorizontalWritingMode())
&gt; +                    blockRect.setY(currentBlock-&gt;height() - blockRect.maxY());
&gt; +                else
&gt; +                    blockRect.setX(currentBlock-&gt;width() - blockRect.maxX());
&gt; +            }
&gt; +            currentBlock-&gt;flipForWritingMode(blockRect);
&gt; +        }
&gt; +        blockRect.moveBy(currentBlockLocation);

I think this is correct, but it feels kind of convoluted to me. I think it could be simplified, but I won&apos;t hold up review for it.

&gt; Source/WebCore/rendering/RenderBlock.cpp:7234
&gt; +    return currentBlock-&gt;isHorizontalWritingMode() ? blockRect.y().toInt() : blockRect.x().toInt();

You should not be returning toInt() here, should you? Your function is returning a LayoutUnit, which means you don&apos;t need to be converting to int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716212</commentid>
    <comment_count>9</comment_count>
      <attachid>162511</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-10 10:10:59 -0700</bug_when>
    <thetext>Comment on attachment 162511
Make the qt bot happy

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

&gt; Source/WebCore/dom/Element.idl:147
&gt;          // CSS Regions API
&gt;          readonly attribute DOMString webkitRegionOverset;
&gt; +        sequence&lt;Range&gt; webkitGetRegionFlowRanges();

Is there no ENABLE macro for regions?  These DOM APIs shouldn&apos;t be enabled by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716338</commentid>
    <comment_count>10</comment_count>
      <attachid>163176</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-10 12:06:45 -0700</bug_when>
    <thetext>Created attachment 163176
Remove the copy-pasted toInt()

- As discussed on IRC, the isWritingModeRoot is using the parent style writing mode, while here is needed the container&apos;s one
- For now, I would like to leave the writing mode code as is. If there were a function like flipForWritingModeForBlock(RenderBlock*, LayoutRect&amp;) the code would be just:

   container-&gt;flipForWritingModeForBlock(currentBlock, rect);
   currentBlock-&gt;flipForWritingMode(rect);

  In the worst case, you need to do two flips.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716354</commentid>
    <comment_count>11</comment_count>
      <attachid>163179</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-10 12:21:24 -0700</bug_when>
    <thetext>Created attachment 163179
Addresses Adam&apos;s comment about visibility on IDL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716360</commentid>
    <comment_count>12</comment_count>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-10 12:25:58 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 162511 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162511&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.idl:147
&gt; &gt;          // CSS Regions API
&gt; &gt;          readonly attribute DOMString webkitRegionOverset;
&gt; &gt; +        sequence&lt;Range&gt; webkitGetRegionFlowRanges();
&gt; 
&gt; Is there no ENABLE macro for regions?  These DOM APIs shouldn&apos;t be enabled by default.

I made the webkitGetRegionFlowRanges not visible if CSS_REGIONS is not enable, but for the others I&apos;ve added a new bug to make sure every Regions API is validated: https://bugs.webkit.org/show_bug.cgi?id=96300

Thanks for catching that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716368</commentid>
    <comment_count>13</comment_count>
      <attachid>163179</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-10 12:38:19 -0700</bug_when>
    <thetext>Comment on attachment 163179
Addresses Adam&apos;s comment about visibility on IDL

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

&gt; Source/WebCore/dom/Element.idl:147
&gt; +        [Conditional=CSS_REGIONS] sequence&lt;Range&gt; webkitGetRegionFlowRanges();

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718637</commentid>
    <comment_count>14</comment_count>
      <attachid>163179</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-12 13:03:54 -0700</bug_when>
    <thetext>Comment on attachment 163179
Addresses Adam&apos;s comment about visibility on IDL

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718642</commentid>
    <comment_count>15</comment_count>
      <attachid>163179</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 13:05:50 -0700</bug_when>
    <thetext>Comment on attachment 163179
Addresses Adam&apos;s comment about visibility on IDL

Rejecting attachment 163179 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ile Source/WebCore/rendering/RenderNamedFlowThread.h
patching file Source/WebCore/rendering/RenderRegion.cpp
Hunk #3 succeeded at 542 with fuzz 1 (offset 40 lines).
patching file Source/WebCore/rendering/RenderRegion.h
Hunk #2 FAILED at 98.
1 out of 2 hunks FAILED -- saving rejects to file Source/WebCore/rendering/RenderRegion.h.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;David Hyatt&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/13825755</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719054</commentid>
    <comment_count>16</comment_count>
      <attachid>163777</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-12 22:31:46 -0700</bug_when>
    <thetext>Created attachment 163777
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719077</commentid>
    <comment_count>17</comment_count>
      <attachid>163785</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-12 23:06:25 -0700</bug_when>
    <thetext>Created attachment 163785
Fix the reviewer name in rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719080</commentid>
    <comment_count>18</comment_count>
      <attachid>163785</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 23:13:00 -0700</bug_when>
    <thetext>Comment on attachment 163785
Fix the reviewer name in rebased patch

Rejecting attachment 163785 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
rBox.cpp
patching file Source/WebCore/rendering/RenderNamedFlowThread.cpp
patching file Source/WebCore/rendering/RenderNamedFlowThread.h
patching file Source/WebCore/rendering/RenderRegion.cpp
Hunk #3 FAILED at 542.
1 out of 3 hunks FAILED -- saving rejects to file Source/WebCore/rendering/RenderRegion.cpp.rej
patching file Source/WebCore/rendering/RenderRegion.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/13841222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719129</commentid>
    <comment_count>19</comment_count>
      <attachid>163794</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-09-13 00:08:30 -0700</bug_when>
    <thetext>Created attachment 163794
Some extraspace manages to enter somehow in the previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719136</commentid>
    <comment_count>20</comment_count>
      <attachid>163794</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2012-09-13 00:15:14 -0700</bug_when>
    <thetext>Comment on attachment 163794
Some extraspace manages to enter somehow in the previous patch

One more round :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719170</commentid>
    <comment_count>21</comment_count>
      <attachid>163794</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 00:50:39 -0700</bug_when>
    <thetext>Comment on attachment 163794
Some extraspace manages to enter somehow in the previous patch

Clearing flags on attachment: 163794

Committed r128416: &lt;http://trac.webkit.org/changeset/128416&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719171</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 00:50:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156424</attachid>
            <date>2012-08-03 11:26:25 -0700</date>
            <delta_ts>2012-08-30 09:36:45 -0700</delta_ts>
            <desc>Current work (still lots of fprintf&apos;s)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>45576</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlYjE3MzNiLi44NGQ2OGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC02MSw2ICs2MSw4IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRl
eHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVy
LmgiCisjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCisjaW5jbHVkZSAiUmVuZGVy
TGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCkBAIC0xOTc3LDYgKzE5NzksMjAgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyZmxvdygpIGNvbnN0CiAg
ICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwogfQogCitWZWN0b3I8UmVmUHRyPFJhbmdlPiA+IEVs
ZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoRXhjZXB0aW9uQ29kZSYpIGNvbnN0Cit7
CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPiA+IHJhbmdlT2JqZWN0czsKKyAgICBpZiAoZG9j
dW1lbnQoKS0+Y3NzUmVnaW9uc0VuYWJsZWQoKSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCkt
PmlzUmVuZGVyUmVnaW9uKCkpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSB0b1Jl
bmRlclJlZ2lvbihyZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKQor
ICAgICAgICAgICAgcmVnaW9uLT5nZXRSYW5nZXMocmFuZ2VPYmplY3RzKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmFuZ2VPYmplY3RzOworfQorCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBFbGVtZW50
OjpmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMGMzMzhkNi4uMjYzYTBhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC00MjAsNiArNDIwLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlRm9yUmVuZGVyZXIoKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
d2Via2l0UmVnaW9uT3ZlcmZsb3coKSBjb25zdDsKKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPiA+
IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNJRCgpIGNvbnN0OwogICAgIGJvb2wgaGFzQ2xhc3MoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmlkbAppbmRleCBmZGY2ZjM2Li5lMmViNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
CkBAIC0xNDEsNiArMTQxLDggQEAgbW9kdWxlIGNvcmUgewogCiAgICAgICAgIC8vIENTUyBSZWdp
b25zIEFQSQogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdFJlZ2lv
bk92ZXJmbG93OworICAgICAgICBzZXF1ZW5jZTxSYW5nZT4gd2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmICFkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAg
Ly8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggYzc2ZWUwOC4uZDJlYTMzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0xMDYsNiArMTA2LDcgQEAg
cHVibGljOgogICAgIFJlbmRlclJlZ2lvbiogbWFwRnJvbUZsb3dUb1JlZ2lvbihUcmFuc2Zvcm1T
dGF0ZSYpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRl
ckJveCopOworICAgIHZvaWQgcmVtb3ZlUGFnaW5hdGlvbkJyZWFrKFJlbmRlck9iamVjdCopOwog
ICAgIGJvb2wgbG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhjb25zdCBSZW5kZXJCbG9jayos
IExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CiAKICAgICBMYXlv
dXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGhPZkZpcnN0UmVnaW9uKCkgY29uc3Q7CkBAIC0xMTQs
MTAgKzExNSwxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgUmVuZGVyUmVnaW9uKiBmaXJzdFJlZ2lv
bigpIGNvbnN0OwogICAgIFJlbmRlclJlZ2lvbiogbGFzdFJlZ2lvbigpIGNvbnN0OworICAgIFJl
bmRlclJlZ2lvbiogcHJldmlvdXNSZWdpb24oY29uc3QgUmVuZGVyUmVnaW9uKikgY29uc3Q7CiAK
ICAgICB2b2lkIHNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIExheW91dFVu
aXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CiAgICAgdm9pZCBnZXRSZWdpb25S
YW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qJiBzdGFydFJlZ2lvbiwg
UmVuZGVyUmVnaW9uKiYgZW5kUmVnaW9uKSBjb25zdDsKIAorICAgIHZvaWQgc2V0UmVnaW9uUmFu
Z2VGb3JPYmplY3QoY29uc3QgUmVuZGVyT2JqZWN0KiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RQYWdlLCBMYXlvdXRVbml0IGhlaWdodCk7CisgICAgdm9pZCBnZXRSZWdp
b25SYW5nZUZvck9iamVjdChjb25zdCBSZW5kZXJPYmplY3QqLCBSZW5kZXJSZWdpb24qJiBzdGFy
dFJlZ2lvbiwgUmVuZGVyUmVnaW9uKiYgZW5kUmVnaW9uKSBjb25zdDsKKyAgICB2b2lkIHNldFRl
eHRSYW5nZUZvcklubGluZVRleHRCb3goY29uc3QgUmVuZGVyVGV4dCosIGNvbnN0IElubGluZVRl
eHRCb3gqLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOworICAg
IExheW91dFVuaXQgZ2V0T2Zmc2V0Rm9yT2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCopOworCiAg
ICAgdm9pZCBjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lv
biogb2xkU3RhcnRSZWdpb24gPSAwLCBjb25zdCBSZW5kZXJSZWdpb24qIG9sZEVuZFJlZ2lvbiA9
IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlclJl
Z2lvbiogbmV3U3RhcnRSZWdpb24gPSAwLCBjb25zdCBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lv
biA9IDApOwpAQCAtMTQ5LDcgKzE1Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgewogICAgICAg
ICAgICAgc2V0UmFuZ2Uoc3RhcnQsIGVuZCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAg
ICAgdm9pZCBzZXRSYW5nZShSZW5kZXJSZWdpb24qIHN0YXJ0LCBSZW5kZXJSZWdpb24qIGVuZCkK
ICAgICAgICAgewogICAgICAgICAgICAgbV9zdGFydFJlZ2lvbiA9IHN0YXJ0OwpAQCAtMTY1LDkg
KzE3MiwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKIAogICAgIC8vIEEgbWFwcyBmcm9tIFJlbmRl
ckJveAotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb25S
YW5nZT4gUmVuZGVyUmVnaW9uUmFuZ2VNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJl
bmRlck9iamVjdCosIFJlbmRlclJlZ2lvblJhbmdlPiBSZW5kZXJSZWdpb25SYW5nZU1hcDsKICAg
ICBSZW5kZXJSZWdpb25SYW5nZU1hcCBtX3JlZ2lvblJhbmdlTWFwOwogCisgICAgdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IFJlbmRlclRleHQqLCBSZW5kZXJSZWdpb25SYW5nZT4gUmVuZGVyUmVnaW9u
VGV4dFJhbmdlTWFwOworICAgIFJlbmRlclJlZ2lvblRleHRSYW5nZU1hcCBtX3JlZ2lvblRleHRS
YW5nZU1hcDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBMYXlv
dXRVbml0PiBSZW5kZXJSZWdpb25PZmZzZXRNYXA7CisgICAgUmVuZGVyUmVnaW9uT2Zmc2V0TWFw
IG1fb2Zmc2V0TWFwOworCiAgICAgYm9vbCBtX2hhc1ZhbGlkUmVnaW9uczsKICAgICBib29sIG1f
cmVnaW9uc0ludmFsaWRhdGVkOwogICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2Fs
V2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuY3BwCmluZGV4IDIyN2FmN2QuLjVlNmY4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yNyw4ICsyNywxMyBA
QAogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogCiAjaW5jbHVkZSAiRmxvd1Ro
cmVhZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAi
UG9zaXRpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJS
ZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dC5o
IgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzAxLDQgKzMwNiw2MjEgQEAgdm9pZCBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyRmxvd1RocmVhZDo6d2lsbEJl
RGVzdHJveWVkKCk7CiB9CiAKK1Bhc3NPd25QdHI8UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5k
ZXJPYmplY3RJbnRlcnZhbD4gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjppbnRlcnZhbEZvclJlbmRl
ck9iamVjdChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgTGF5b3V0VW5pdCBvZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25zdAoreworICAgIGlmIChvYmplY3QtPmlzUmVuZGVy
SW5saW5lKCkpIHsKKyAgICAgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveCA9IHRvUmVuZGVySW5s
aW5lKG9iamVjdCktPmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgYm91bmRpbmdCb3gubW92
ZSgwLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICJcbkludGVydmFsOiAlLjBmIC0tICUuMGZcbiIsIGJvdW5kaW5nQm94LnkoKS50b0Zs
b2F0KCksIGJvdW5kaW5nQm94Lm1heFkoKS50b0Zsb2F0KCkpOworICAgICAgICBvYmplY3QtPnNo
b3dSZW5kZXJPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OlJlbmRlck9iamVjdEludGVydmFsKGJvdW5kaW5nQm94LnkoKSwgYm91bmRp
bmdCb3gubWF4WSgpLCBSYW5nZURhdGEob2JqZWN0LCBOVUxMKSkpOworICAgIH0KKyAgICBlbHNl
IGlmIChvYmplY3QtPmlzVGV4dCgpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlclRleHQqIHJlbmRl
clRleHQgPSB0b1JlbmRlclRleHQob2JqZWN0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBib3VuZGlu
Z0JveCA9IHJlbmRlclRleHQtPmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgYm91bmRpbmdC
b3gubW92ZSgwLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJcbkludGVydmFsOiAlLjBmIC0tICUuMGZcbiIsIGJvdW5kaW5nQm94Lnko
KS50b0Zsb2F0KCksIGJvdW5kaW5nQm94Lm1heFkoKS50b0Zsb2F0KCkpOworICAgICAgICBvYmpl
Y3QtPnNob3dSZW5kZXJPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck9iamVjdEludGVydmFsKGJvdW5kaW5nQm94LnkoKSwg
Ym91bmRpbmdCb3gubWF4WSgpLCBSYW5nZURhdGEob2JqZWN0LCBOVUxMKSkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIEFTU0VSVChvYmplY3QtPmlzQm94KCkpOworICAgICAgICBjb25zdCBSZW5k
ZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KG9iamVjdCk7CisgICAgICAgIExheW91dFJlY3QgYm91
bmRpbmdCb3ggPSBib3gtPmZyYW1lUmVjdCgpOworICAgICAgICBib3VuZGluZ0JveC5tb3ZlKDAs
IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOworICAgICAgICBpZiAoYm94LT5pc1Jl
bFBvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmUoYm94LT5yZWxhdGl2
ZVBvc2l0aW9uTG9naWNhbE9mZnNldCgpKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbklu
dGVydmFsOiAlLjBmIC0tICUuMGZcbiIsIGJvdW5kaW5nQm94LnkoKS50b0Zsb2F0KCksIGJvdW5k
aW5nQm94Lm1heFkoKS50b0Zsb2F0KCkpOworICAgICAgICBvYmplY3QtPnNob3dSZW5kZXJPYmpl
Y3QoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OlJlbmRlck9iamVjdEludGVydmFsKGJvdW5kaW5nQm94LnkoKSwgYm91bmRpbmdCb3gubWF4WSgp
LCBSYW5nZURhdGEob2JqZWN0LCBOVUxMKSkpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpzZXRTdGFydChjb25zdCBSZW5kZXJP
YmplY3QqIG9iaiwgaW50IHBvcywgQW5jaG9yVHlwZSBhbmNob3IpCit7CisgICAgbV9zdGFydCA9
IG9iajsKKyAgICBtX3N0YXJ0UG9zaXRpb24gPSBwb3M7CisgICAgbV9zdGFydEFuY2hvciA9IGFu
Y2hvcjsKK30KKwordm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5k
YXJ5OjpzZXRFbmQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmosIGludCBwb3MsIEFuY2hvclR5cGUg
YW5jaG9yKQoreworICAgIG1fZW5kID0gb2JqOworICAgIG1fZW5kUG9zaXRpb24gPSBwb3M7Cisg
ICAgbV9lbmRBbmNob3IgPSBhbmNob3I7Cit9CisKK3ZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6c2V0U3RhcnQoUmVuZGVyT2JqZWN0SW50ZXJ2YWwqIGlu
dGVydmFsLCBpbnQgcG9zLCBBbmNob3JUeXBlIGFuY2hvcikKK3sKKyAgICBtX3N0YXJ0ID0gaW50
ZXJ2YWwtPmRhdGEoKS5tX29iamVjdDsKKyAgICBtX3N0YXJ0TG93ID0gaW50ZXJ2YWwtPmxvdygp
OworICAgIG1fc3RhcnRIaWdoID0gaW50ZXJ2YWwtPmhpZ2goKTsKKyAgICBtX3N0YXJ0UG9zaXRp
b24gPSBwb3M7CisgICAgbV9zdGFydEFuY2hvciA9IGFuY2hvcjsKK30KKwordm9pZCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpzZXRFbmQoUmVuZGVyT2JqZWN0
SW50ZXJ2YWwqIGludGVydmFsLCBpbnQgcG9zLCBBbmNob3JUeXBlIGFuY2hvcikKK3sKKyAgICBt
X2VuZCA9IGludGVydmFsLT5kYXRhKCkubV9vYmplY3Q7CisgICAgbV9lbmRQb3NpdGlvbiA9IHBv
czsKKyAgICBtX2VuZEFuY2hvciA9IGFuY2hvcjsKKyAgICBtX2VuZExvdyA9IGludGVydmFsLT5s
b3coKTsKKyAgICBtX2VuZEhpZ2ggPSBpbnRlcnZhbC0+aGlnaCgpOworfQorCitzdGF0aWMgUG9z
aXRpb246OkFuY2hvclR5cGUgY29udmVydFRvUG9zaXRpb25BbmNob3JUeXBlKFJlbmRlck5hbWVk
Rmxvd1RocmVhZDo6Q3VycmVudFJhbmdlQm91bmRhcnk6OkFuY2hvclR5cGUgdHlwZSkgeworICAg
IHN3aXRjaCh0eXBlKSB7CisgICAgICAgIGNhc2UgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJy
ZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yOgorICAgICAgICAgICAg
cmV0dXJuIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I7CisgICAgICAgIGNhc2Ug
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc0Jl
Zm9yZUFuY2hvcjoKKyAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9y
ZUFuY2hvcjsKKyAgICAgICAgY2FzZSBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5n
ZUJvdW5kYXJ5OjpQb3NpdGlvbklzQWZ0ZXJBbmNob3I6CisgICAgICAgICAgICByZXR1cm4gUG9z
aXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcjsKKyAgICAgICAgY2FzZSBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW46
CisgICAgICAgICAgICByZXR1cm4gUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjsK
KyAgICAgICAgY2FzZSBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5
OjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoKKyAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbjo6
UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW47CisgICAgfQorfQorCit2b2lkIFJlbmRlck5hbWVkRmxv
d1RocmVhZDo6Y3JlYXRlUmFuZ2VzRnJvbVJhbmdlQm91bmRhcnkoQ3VycmVudFJhbmdlQm91bmRh
cnkmIGJvdW5kYXJ5LCBWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JnJhbmdlcywgY29uc3QgUmVuZGVy
T2JqZWN0KiBjdXJyZW50KSBjb25zdAoreworCisgICAgaWYgKGN1cnJlbnQgPT0gYm91bmRhcnku
bV9lbmQgJiYgIWN1cnJlbnQtPmlzQW5vbnltb3VzQmxvY2soKSkgeworICAgICAgICBpZiAoIWJv
dW5kYXJ5Lm1fc3RhcnQpIHsKKyAgICAgICAgICAgIGJvdW5kYXJ5Lm1fc3RhcnQgPSBjdXJyZW50
OworICAgICAgICB9CisgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IGJvdW5kYXJ5Lm1fc3RhcnQt
Pm5vZGUoKSA7CisgICAgICAgIE5vZGUqIGVuZE5vZGUgPSBjdXJyZW50LT5ub2RlKCk7CisgICAg
ICAgIGJvb2wgc3RhcnRJc1RleHQgPSBzdGFydE5vZGUtPmlzVGV4dE5vZGUoKSAmJiBib3VuZGFy
eS5tX3N0YXJ0QW5jaG9yID09IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Q3VycmVudFJhbmdlQm91
bmRhcnk6OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsKKyAgICAgICAgYm9vbCBlbmRJc1RleHQg
PSBlbmROb2RlLT5pc1RleHROb2RlKCkgJiYgYm91bmRhcnkubV9lbmRBbmNob3IgPT0gUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc09mZnNldElu
QW5jaG9yOworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzdGFy
dE5vZGUtPmRvY3VtZW50KCksCisgICAgICAgICAgICBzdGFydElzVGV4dCA/IFBvc2l0aW9uKHRv
VGV4dChzdGFydE5vZGUpLCBib3VuZGFyeS5tX3N0YXJ0UG9zaXRpb24pIDogUG9zaXRpb24oc3Rh
cnROb2RlLCBjb252ZXJ0VG9Qb3NpdGlvbkFuY2hvclR5cGUoYm91bmRhcnkubV9zdGFydEFuY2hv
cikpLAorICAgICAgICAgICAgZW5kSXNUZXh0ID8gUG9zaXRpb24odG9UZXh0KGVuZE5vZGUpLCBi
b3VuZGFyeS5tX2VuZFBvc2l0aW9uKSA6IFBvc2l0aW9uKGVuZE5vZGUsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpICk7CisgICAgICAgIHJhbmdlcy5hcHBlbmQocmFuZ2UpOworICAg
ICAgICBib3VuZGFyeS5tX2VuZCA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBm
b3IgKGNvbnN0IFJlbmRlck9iamVjdCogY2hpbGQgPSBjdXJyZW50LT5maXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIC8vIHRoZSByZW5k
ZXJlciBtdXN0IGhhdmUgdGhlIHNhbWUgcHJldmlvdXMgc2libGluZyBhbmQgcGFyZW50CisgICAg
ICAgIGlmIChjaGlsZC0+aXNBbm9ueW1vdXNCbG9jaygpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIC8vIAorICAgICAgICBpZiAoIWJvdW5kYXJ5Lm1fc3RhcnQpIHsKKyAgICAgICAg
ICAgIGJvdW5kYXJ5Lm1fc3RhcnQgPSBjaGlsZDsKKyAgICAgICAgfQorICAgICAgICBSZW5kZXJP
YmplY3QqIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKTsKKyAgICAgICAgd2hpbGUgKHBhcmVudCAm
JiBwYXJlbnQtPmlzQW5vbnltb3VzQmxvY2soKSkKKyAgICAgICAgICAgIHBhcmVudCA9IHBhcmVu
dC0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIFJlbmRlck9iamVjdCogc2libGluZyA9IGNo
aWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgd2hpbGUoc2libGluZyAmJiBzaWJsaW5n
LT5pc0Fub255bW91c0Jsb2NrKCkpCisgICAgICAgICAgICBzaWJsaW5nID0gc2libGluZy0+bmV4
dEluUHJlT3JkZXIoKTsKKyAgICAgICAgYm9vbCBzYW1lUGFyZW50ID0gY2hpbGQtPm5vZGUoKS0+
cGFyZW50RWxlbWVudCgpID09IChwYXJlbnQgPyBwYXJlbnQtPm5vZGUoKSA6IDApOworICAgICAg
ICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBjaGlsZC0+bm9kZSgpLT5wcmV2aW91c1NpYmxpbmco
KTsKKyAgICAgICAgd2hpbGUgKHByZXZpb3VzU2libGluZyAmJiBwcmV2aW91c1NpYmxpbmctPmlz
VGV4dE5vZGUoKSAmJiB0b1RleHQocHJldmlvdXNTaWJsaW5nKS0+Y29udGFpbnNPbmx5V2hpdGVz
cGFjZSgpKQorICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nLT5w
cmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgYm9vbCBzYW1lU2libGluZyA9IHByZXZpb3VzU2li
bGluZyA9PSAoc2libGluZyA/ICBzaWJsaW5nLT5ub2RlKCkgOiAwKTsKKyAgICAgICAgaWYgKCFz
YW1lUGFyZW50ICYmIHBhcmVudCA9PSB0aGlzKQorICAgICAgICAgICAgc2FtZVBhcmVudCA9IHRy
dWU7CisgICAgICAgIGlmICghc2FtZVNpYmxpbmcgJiZwYXJlbnQgPT0gdGhpcyAmJiAhc2libGlu
ZykKKyAgICAgICAgICAgICAgICBzYW1lU2libGluZyA9IHRydWU7CisgICAgICAgIGlmICghc2Ft
ZVBhcmVudCB8fCAhc2FtZVNpYmxpbmcpIHsKKyAgICAgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9
IGJvdW5kYXJ5Lm1fc3RhcnQtPm5vZGUoKTsKKyAgICAgICAgICAgIE5vZGUqIGVuZE5vZGUgPSBj
aGlsZC0+bm9kZSgpOworICAgICAgICAgICAgYm9vbCBzdGFydElzVGV4dCA9IHN0YXJ0Tm9kZS0+
aXNUZXh0Tm9kZSgpICYmIGJvdW5kYXJ5Lm1fc3RhcnRBbmNob3IgPT0gQ3VycmVudFJhbmdlQm91
bmRhcnk6OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsKKyAgICAgICAgICAgIGJvb2wgZW5kSXNU
ZXh0ID0gZW5kTm9kZS0+aXNUZXh0Tm9kZSgpICYmIGJvdW5kYXJ5Lm1fZW5kQW5jaG9yID09IEN1
cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I7CisgICAgICAgICAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzdGFydE5vZGUtPmRvY3VtZW50
KCksCisgICAgICAgICAgICAgICAgc3RhcnRJc1RleHQgPyBQb3NpdGlvbih0b1RleHQoc3RhcnRO
b2RlKSwgYm91bmRhcnkubV9zdGFydFBvc2l0aW9uKSA6IFBvc2l0aW9uKHN0YXJ0Tm9kZSwgY29u
dmVydFRvUG9zaXRpb25BbmNob3JUeXBlKGJvdW5kYXJ5Lm1fc3RhcnRBbmNob3IpKSwKKyAgICAg
ICAgICAgICAgICBlbmRJc1RleHQgPyBQb3NpdGlvbih0b1RleHQoZW5kTm9kZSksIGJvdW5kYXJ5
Lm1fZW5kUG9zaXRpb24pIDogUG9zaXRpb24oZW5kTm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNB
ZnRlckFuY2hvcikgKTsKKyAgICAgICAgICAgIGJvdW5kYXJ5Lm1fc3RhcnQgPSAwOworICAgICAg
ICAgICAgYm91bmRhcnkubV9lbmRQb3NpdGlvbiA9IDA7CisgICAgICAgICAgICBib3VuZGFyeS5t
X3N0YXJ0QW5jaG9yID0gQ3VycmVudFJhbmdlQm91bmRhcnk6OlBvc2l0aW9uSXNCZWZvcmVBbmNo
b3I7CisgICAgICAgICAgICByYW5nZXMuYXBwZW5kKHJhbmdlKTsKKyAgICAgICAgfQorICAgICAg
ICBjcmVhdGVSYW5nZXNGcm9tUmFuZ2VCb3VuZGFyeShib3VuZGFyeSwgcmFuZ2VzLCBjaGlsZCk7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBmaW5kVGV4dEJyZWFrKFJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6UmVuZGVyT2JqZWN0SW50ZXJ2YWwqIG9iamVjdCwKKyAgICBjb25zdCBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OlJlbmRlck9iamVjdEludGVydmFsJiByZWdpb24sCisgICAgY29uc3QgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJPYmplY3RJbnRlcnZhbE1hcCYgaW50ZXJ2YWxNYXAs
CisgICAgaW50JiBzdGFydCwgaW50JiBlbmQpIHsKKyAgICBpZiAoIW9iamVjdC0+ZGF0YSgpLm1f
b2JqZWN0LT5pc1RleHQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OlJlbmRlck9iamVjdEludGVydmFsPiBpbnRlcnZhbHM7CisgICAgY29uc3Qg
UmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChvYmplY3QtPmRhdGEoKS5tX29i
amVjdCk7CisgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSByZW5kZXJUZXh0LT5maXJzdFRl
eHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICAgICAgLy8gZmlu
ZCBjb250YWluaW5nIGJsb2NrIGZvciB0aGlzIGJveAorICAgICAgICBjb25zdCBSZW5kZXJPYmpl
Y3QqIGNiID0gYm94LT5yb290KCktPmJsb2NrKCk7CisgICAgICAgIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6UmVuZGVyT2JqZWN0SW50ZXJ2YWxNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW50ZXJ2
YWxNYXAuZmluZChjYik7CisgICAgICAgIEFTU0VSVChpdCAhPSBpbnRlcnZhbE1hcC5lbmQoKSk7
CisgICAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyT2JqZWN0SW50ZXJ2YWwqIGlu
dGVydmFsRm9yQ29udGFpbmluZ0Jsb2NrID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgTGF5
b3V0UmVjdCByKGJveC0+Y2FsY3VsYXRlQm91bmRhcmllcygpKTsgLy8gbG9naWNhbAorICAgICAg
ICByLm1vdmUoMCwgaW50ZXJ2YWxGb3JDb250YWluaW5nQmxvY2stPmxvdygpKTsKKyAgICAgICAg
aW50ZXJ2YWxzLmFwcGVuZChSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck9iamVjdEludGVy
dmFsKHIueSgpLCByLm1heFkoKSwgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSYW5nZURhdGEocmVu
ZGVyVGV4dCwgYm94KSkpOworICAgIH0KKyAgICBib29sIGZvdW5kU3RhcnQgPSBmYWxzZTsKKyAg
ICBmb3IgKFZlY3RvcjxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck9iamVjdEludGVydmFs
Pjo6aXRlcmF0b3IgaXRlciA9IGludGVydmFscy5iZWdpbigpOyBpdGVyICE9IGludGVydmFscy5l
bmQoKTsgKytpdGVyKSB7CisgICAgICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVu
ZGVyT2JqZWN0SW50ZXJ2YWwmIGJveEludGVydmFsID0gKml0ZXI7CisgICAgICAgIGlmIChib3hJ
bnRlcnZhbC5pc0NvbnRhaW5lZEluKHJlZ2lvbikpIHsKKyAgICAgICAgICAgIGlmICghZm91bmRT
dGFydCkgeworICAgICAgICAgICAgICAgIHN0YXJ0ID0gYm94SW50ZXJ2YWwuZGF0YSgpLm1fdGV4
dEJveC0+c3RhcnQoKTsKKyAgICAgICAgICAgICAgICBmb3VuZFN0YXJ0ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVuZCA9IGJveEludGVydmFsLmRhdGEoKS5tX3RleHRCb3gt
PnN0YXJ0KCkgKyBib3hJbnRlcnZhbC5kYXRhKCkubV90ZXh0Qm94LT5sZW4oKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworc3RhdGljIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Q3VycmVudFJhbmdl
Qm91bmRhcnk6OkFuY2hvclR5cGUgZ2V0QW5jaG9yVHlwZUZvclN0YXJ0KAorICAgIFJlbmRlck5h
bWVkRmxvd1RocmVhZDo6UmVuZGVyT2JqZWN0SW50ZXJ2YWwqIG9iamVjdCwKKyAgICBjb25zdCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck9iamVjdEludGVydmFsJiByZWdpb24sCisgICAg
Y29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJPYmplY3RJbnRlcnZhbE1hcCYgaW50
ZXJ2YWxNYXAsCisgICAgaW50JiBzdGFydCwgaW50JiBlbmQpCit7CisgICAgc3RhcnQgPSAwOwor
ICAgIGVuZCA9IDA7CisgICAgaWYgKG9iamVjdC0+aXNCZWxvdyhyZWdpb24pKQorICAgICAgICBy
ZXR1cm4gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRp
b25Jc0FmdGVyQW5jaG9yOworICAgIGlmIChvYmplY3QtPmludGVyc2VjdHNMb3dPZihyZWdpb24p
KSB7CisgICAgICAgIGlmIChvYmplY3QtPmRhdGEoKS5tX29iamVjdC0+aXNUZXh0KCkpIHsKKyAg
ICAgICAgICAgIGZpbmRUZXh0QnJlYWsob2JqZWN0LCByZWdpb24sIGludGVydmFsTWFwLCBzdGFy
dCwgZW5kKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVGV4dFNwbGl0OiBzdGFydDog
JWQgLSBlbmQ6ICVkIC0tICVzIFxuIiwgc3RhcnQsIGVuZCwgb2JqZWN0LT50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6
Q3VycmVudFJhbmdlQm91bmRhcnk6OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJl
bnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW47CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKG9iamVjdC0+aW50ZXJzZWN0c0hpZ2hPZihyZWdpb24pICYmIG9iamVjdC0+
ZGF0YSgpLm1fb2JqZWN0LT5pc1RleHQoKSkgeworICAgICAgICBmaW5kVGV4dEJyZWFrKG9iamVj
dCwgcmVnaW9uLCBpbnRlcnZhbE1hcCwgc3RhcnQsIGVuZCk7CisgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiVGV4dFNwbGl0OiBzdGFydDogJWQgLSBlbmQ6ICVkIC0tICVzIFxuIiwgc3RhcnQsIGVu
ZCwgb2JqZWN0LT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yOworICAgIH0KKyAgICAvL2lmIChvYmplY3QuaXNDb250YWluZWQocmVnaW9uKSB8
fCBvYmplY3QuaW50ZXJzZWN0c0hpZ2gocmVnaW9uKSB8fCBvYmplY3QuaXNBYm92ZShyZWdpb24p
KQorICAgIHJldHVybiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5
OjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yOworfQorCitzdGF0aWMgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6QW5jaG9yVHlwZSBnZXRBbmNob3JUeXBlRm9yRW5k
KAorICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyT2JqZWN0SW50ZXJ2YWwqIG9iamVj
dCwKKyAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck9iamVjdEludGVydmFs
JiByZWdpb24sCisgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJPYmplY3RJ
bnRlcnZhbE1hcCYgaW50ZXJ2YWxNYXAsCisgICAgaW50JiBzdGFydCwgaW50JiBlbmQpCit7Cisg
ICAgc3RhcnQgPSAwOworICAgIGVuZCA9IDA7CisgICAgaWYgKG9iamVjdC0+aXNBYm92ZShyZWdp
b24pKQorICAgICAgICByZXR1cm4gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VC
b3VuZGFyeTo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcjsKKyAgICBpZiAob2JqZWN0LT5pbnRlcnNl
Y3RzSGlnaE9mKHJlZ2lvbikpIHsKKyAgICAgICAgaWYgKG9iamVjdC0+ZGF0YSgpLm1fb2JqZWN0
LT5pc1RleHQoKSkgeworICAgICAgICAgICAgZmluZFRleHRCcmVhayhvYmplY3QsIHJlZ2lvbiwg
aW50ZXJ2YWxNYXAsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJU
ZXh0U3BsaXQ6IHN0YXJ0OiAlZCAtIGVuZDogJWQgLS0gJXMgXG4iLCBzdGFydCwgZW5kLCBvYmpl
Y3QtPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc09mZnNldElu
QW5jaG9yOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIFJlbmRlck5hbWVk
Rmxvd1RocmVhZDo6Q3VycmVudFJhbmdlQm91bmRhcnk6OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVu
OworICAgICAgICB9CisgICAgfQorICAgIGlmIChvYmplY3QtPmludGVyc2VjdHNMb3dPZihyZWdp
b24pICYmIG9iamVjdC0+ZGF0YSgpLm1fb2JqZWN0LT5pc1RleHQoKSl7CisgICAgICAgIGZpbmRU
ZXh0QnJlYWsob2JqZWN0LCByZWdpb24sIGludGVydmFsTWFwLCBzdGFydCwgZW5kKTsKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJUZXh0U3BsaXQ6IHN0YXJ0OiAlZCAtIGVuZDogJWQgLS0gJXMg
XG4iLCBzdGFydCwgZW5kLCBvYmplY3QtPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIHJldHVybiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3I7CisgICAgfQorICAgIC8vaWYgKG9iamVjdC5pc0NvbnRh
aW5lZChyZWdpb24pIHx8IG9iamVjdC5pbnRlcnNlY3RzTG93KHJlZ2lvbikgfHwgb2JqZWN0Lmlz
QmVsb3cocmVnaW9uKSkKKyAgICByZXR1cm4gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50
UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yOworfQorCit2b2lkIFJlbmRlck5h
bWVkRmxvd1RocmVhZDo6dXBkYXRlQm91bmRhcnlJZk5lZWRlZChDdXJyZW50UmFuZ2VCb3VuZGFy
eSYgYm91bmRhcnksICBSZW5kZXJPYmplY3RJbnRlcnZhbCogb2JqZWN0LCAKKyAgICBjb25zdCBS
ZW5kZXJPYmplY3RJbnRlcnZhbCYgcmVnaW9uLCBjb25zdCBSZW5kZXJPYmplY3RJbnRlcnZhbE1h
cCYgaW50ZXJ2YWxNYXApIGNvbnN0Cit7CisgICAgaW50IHN0YXJ0UG9zID0gMCwgZW5kUG9zID0g
MDsKKyAgICBDdXJyZW50UmFuZ2VCb3VuZGFyeTo6QW5jaG9yVHlwZSBhbmNob3JUeXBlOworCisg
ICAgaWYgKCFib3VuZGFyeS5tX3N0YXJ0KSB7CisgICAgICAgIGlmIChvYmplY3QtPmlzQmVsb3co
cmVnaW9uKSB8fCBvYmplY3QtPmlzQWJvdmUocmVnaW9uKSkgeworICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJTS0lQIE9iamVjdCAlcyAtLS0gIFJlZ2lvbiAlc1xuIiwgb2JqZWN0LT50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZ2lvbi50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFuY2hvclR5cGUgPSBnZXRB
bmNob3JUeXBlRm9yU3RhcnQob2JqZWN0LCByZWdpb24sIGludGVydmFsTWFwLCBzdGFydFBvcywg
ZW5kUG9zKTsKKyAgICAgICAgYm91bmRhcnkuc2V0U3RhcnQob2JqZWN0LCBzdGFydFBvcywgYW5j
aG9yVHlwZSk7CisgICAgICAgIGFuY2hvclR5cGUgPSBnZXRBbmNob3JUeXBlRm9yRW5kKG9iamVj
dCwgcmVnaW9uLCBpbnRlcnZhbE1hcCwgc3RhcnRQb3MsIGVuZFBvcyk7CisgICAgICAgIGJvdW5k
YXJ5LnNldEVuZChvYmplY3QsIDAsIEN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQWZ0
ZXJBbmNob3IpOworICAgIH0KKworICAgIGZwcmludGYoc3RkZXJyLCAiT2JqZWN0ICVzIC0tLSAg
UmVnaW9uICVzXG4iLCBvYmplY3QtPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgCisgICAgICAg
IHJlZ2lvbi50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGZwcmludGYoc3RkZXJyLCAi
QmVmb3JlOiBzdGFydDogWyglLjBmLCAlLjBmKSwgJXAgJXNdICAtLS0tICBlbmQgWyglLjBmLCAl
LjBmKSwgJXAgJXNdXG4iLCAKKyAgICAgICAgICAgIGJvdW5kYXJ5Lm1fc3RhcnRMb3cudG9GbG9h
dCgpLCBib3VuZGFyeS5tX3N0YXJ0SGlnaC50b0Zsb2F0KCksIGJvdW5kYXJ5Lm1fc3RhcnQsIGJv
dW5kYXJ5Lm1fc3RhcnQgPyBib3VuZGFyeS5tX3N0YXJ0LT5yZW5kZXJOYW1lKCkgOiAiIiwKKyAg
ICAgICAgICAgIGJvdW5kYXJ5Lm1fZW5kTG93LnRvRmxvYXQoKSwgYm91bmRhcnkubV9lbmRIaWdo
LnRvRmxvYXQoKSwgYm91bmRhcnkubV9lbmQsIGJvdW5kYXJ5Lm1fZW5kID8gYm91bmRhcnkubV9l
bmQtPnJlbmRlck5hbWUoKSA6ICIiKTsKKyAgICAvLyAKKyAgICAgUmVuZGVyT2JqZWN0SW50ZXJ2
YWwgc3RhcnQoYm91bmRhcnkubV9zdGFydExvdywgYm91bmRhcnkubV9zdGFydEhpZ2gsIAorICAg
ICAgICAgICAgUmFuZ2VEYXRhKGJvdW5kYXJ5Lm1fc3RhcnQsIE5VTEwpKTsKKyAgICAgUmVuZGVy
T2JqZWN0SW50ZXJ2YWwgZW5kKGJvdW5kYXJ5Lm1fZW5kTG93LCBib3VuZGFyeS5tX2VuZEhpZ2gs
IAorICAgICAgICAgICBSYW5nZURhdGEoYm91bmRhcnkubV9lbmQsIE5VTEwpKTsKKworICAgICBi
b29sIGlzRGVzY2VuZGFudE9mU3RhcnQgPSBvYmplY3QtPmRhdGEoKS5tX29iamVjdC0+aXNEZXNj
ZW5kYW50T2YoYm91bmRhcnkubV9zdGFydCkgCisgICAgICAgICAgICAmJiAhb2JqZWN0LT5kYXRh
KCkubV9vYmplY3QtPmlzRmxvYXRpbmcoKTsKKworICAgICBpZiAoc3RhcnQuaXNCZWxvdyhyZWdp
b24pKSB7CisgICAgICAgIC8vIHNob3VsZCBub3QgYmUgYSBjaGlsZCBvZiBzdGFydAorICAgICAg
ICBpZiAoIWlzRGVzY2VuZGFudE9mU3RhcnQpIHsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmlu
dGVyc2VjdHNIaWdoT2Yoc3RhcnQpIHx8IG9iamVjdC0+aXNBYm92ZShzdGFydCkpIHsKKyAgICAg
ICAgICAgICAgICBhbmNob3JUeXBlID0gZ2V0QW5jaG9yVHlwZUZvclN0YXJ0KG9iamVjdCwgcmVn
aW9uLCBpbnRlcnZhbE1hcCwgc3RhcnRQb3MsIGVuZFBvcyk7CisgICAgICAgICAgICAgICAgYm91
bmRhcnkuc2V0U3RhcnQob2JqZWN0LCBzdGFydFBvcywgYW5jaG9yVHlwZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChzdGFydC5pbnRlcnNlY3RzTG93T2YocmVn
aW9uKSkgeworICAgICAgICBpZiAoaXNEZXNjZW5kYW50T2ZTdGFydCkgeworICAgICAgICAgICAg
YW5jaG9yVHlwZSA9IGdldEFuY2hvclR5cGVGb3JTdGFydChvYmplY3QsIHJlZ2lvbiwgaW50ZXJ2
YWxNYXAsIHN0YXJ0UG9zLCBlbmRQb3MpOworICAgICAgICAgICAgYm91bmRhcnkuc2V0U3RhcnQo
b2JqZWN0LCBzdGFydFBvcywgYW5jaG9yVHlwZSk7CisgICAgICAgIH0KKworICAgICB9IGVsc2Ug
aWYgKHN0YXJ0LmlzQ29udGFpbmVkSW4ocmVnaW9uKSB8fCBzdGFydC5pbnRlcnNlY3RzSGlnaE9m
KHJlZ2lvbikpIHsKKyAgICAgICAgaWYgKCFpc0Rlc2NlbmRhbnRPZlN0YXJ0KSB7CisgICAgICAg
ICAgICBpZiAob2JqZWN0LT5pbnRlcnNlY3RzTG93T2Yoc3RhcnQpCisgICAgICAgICAgICAgICAg
fHwgKG9iamVjdC0+aXNCZWxvdyhzdGFydCkgJiYgKG9iamVjdC0+aW50ZXJzZWN0c0xvd09mKHJl
Z2lvbikgfHwgb2JqZWN0LT5pc0NvbnRhaW5lZEluKHJlZ2lvbikpKSApIHsKKyAgICAgICAgICAg
ICAgICBhbmNob3JUeXBlID0gZ2V0QW5jaG9yVHlwZUZvclN0YXJ0KG9iamVjdCwgcmVnaW9uLCBp
bnRlcnZhbE1hcCwgc3RhcnRQb3MsIGVuZFBvcyk7CisgICAgICAgICAgICAgICAgYm91bmRhcnku
c2V0U3RhcnQob2JqZWN0LCBzdGFydFBvcywgYW5jaG9yVHlwZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChzdGFydC5pc0Fib3ZlKHJlZ2lvbikpIHsKKyAgICAg
ICAgaWYgKCFpc0Rlc2NlbmRhbnRPZlN0YXJ0KSB7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5p
c0JlbG93KHN0YXJ0KSB8fCBvYmplY3QtPmludGVyc2VjdHNMb3dPZihzdGFydCkpIHsKKyAgICAg
ICAgICAgICAgICBhbmNob3JUeXBlID0gZ2V0QW5jaG9yVHlwZUZvclN0YXJ0KG9iamVjdCwgcmVn
aW9uLCBpbnRlcnZhbE1hcCwgc3RhcnRQb3MsIGVuZFBvcyk7CisgICAgICAgICAgICAgICAgYm91
bmRhcnkuc2V0U3RhcnQob2JqZWN0LCBzdGFydFBvcywgYW5jaG9yVHlwZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgfQorCisgICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZFbmQgPSBv
YmplY3QtPmRhdGEoKS5tX29iamVjdC0+aXNEZXNjZW5kYW50T2YoYm91bmRhcnkubV9lbmQpIAor
ICAgICAgICAmJiAhb2JqZWN0LT5kYXRhKCkubV9vYmplY3QtPmlzRmxvYXRpbmcoKTsKKworICAg
ICBpZiAoZW5kLmlzQWJvdmUocmVnaW9uKSkgeworICAgICAgICAvLyBzaG91bGQgbm90IGJlIGEg
Y2hpbGQgb2YgZW5kCisgICAgICAgIGlmICghaXNEZXNjZW5kYW50T2ZFbmQpIHsKKyAgICAgICAg
ICAgIGlmIChvYmplY3QtPmludGVyc2VjdHNMb3dPZihlbmQpIHx8IG9iamVjdC0+aXNCZWxvdyhl
bmQpKSB7CisgICAgICAgICAgICAgICAgYW5jaG9yVHlwZSA9IGdldEFuY2hvclR5cGVGb3JFbmQo
b2JqZWN0LCByZWdpb24sIGludGVydmFsTWFwLCBzdGFydFBvcywgZW5kUG9zKTsKKyAgICAgICAg
ICAgICAgICBib3VuZGFyeS5zZXRFbmQob2JqZWN0LCBlbmRQb3MsIGFuY2hvclR5cGUpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChlbmQuaW50ZXJzZWN0c0hpZ2hP
ZihyZWdpb24pKSB7CisgICAgICAgIGlmIChpc0Rlc2NlbmRhbnRPZkVuZCkgeworICAgICAgICAg
ICAgYW5jaG9yVHlwZSA9IGdldEFuY2hvclR5cGVGb3JFbmQob2JqZWN0LCByZWdpb24sIGludGVy
dmFsTWFwLCBzdGFydFBvcywgZW5kUG9zKTsKKyAgICAgICAgICAgIGJvdW5kYXJ5LnNldEVuZChv
YmplY3QsIGVuZFBvcywgYW5jaG9yVHlwZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGVu
ZC5pc0NvbnRhaW5lZEluKHJlZ2lvbikpIHsKKyAgICAgICAgaWYgKCFpc0Rlc2NlbmRhbnRPZkVu
ZCkgeworICAgICAgICAgICAgaWYgKG9iamVjdC0+aW50ZXJzZWN0c0hpZ2hPZihlbmQpCisgICAg
ICAgICAgICAgICAgfHwgKG9iamVjdC0+aXNBYm92ZShlbmQpICYmIChvYmplY3QtPmludGVyc2Vj
dHNIaWdoT2YocmVnaW9uKSB8fCBvYmplY3QtPmlzQ29udGFpbmVkSW4ocmVnaW9uKSkpCisgICAg
ICAgICAgICAgICAgfHwgKm9iamVjdCA9PSBlbmQpIHsKKyAgICAgICAgICAgICAgICBhbmNob3JU
eXBlID0gZ2V0QW5jaG9yVHlwZUZvckVuZChvYmplY3QsIHJlZ2lvbiwgaW50ZXJ2YWxNYXAsIHN0
YXJ0UG9zLCBlbmRQb3MpOworICAgICAgICAgICAgICAgIGJvdW5kYXJ5LnNldEVuZChvYmplY3Qs
IGVuZFBvcywgYW5jaG9yVHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVs
c2UgaWYgKGVuZC5pbnRlcnNlY3RzTG93T2YocmVnaW9uKSkgeworICAgICAgICBpZiAoIWlzRGVz
Y2VuZGFudE9mRW5kKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pc0Fib3ZlKGVuZCkgfHwg
b2JqZWN0LT5pbnRlcnNlY3RzSGlnaE9mKGVuZCkgfHwgKm9iamVjdCA9PSBlbmQpIHsKKyAgICAg
ICAgICAgICAgICBhbmNob3JUeXBlID0gZ2V0QW5jaG9yVHlwZUZvckVuZChvYmplY3QsIHJlZ2lv
biwgaW50ZXJ2YWxNYXAsIHN0YXJ0UG9zLCBlbmRQb3MpOworICAgICAgICAgICAgICAgIGJvdW5k
YXJ5LnNldEVuZChvYmplY3QsIGVuZFBvcywgYW5jaG9yVHlwZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGVuZC5pc0JlbG93KHJlZ2lvbikpIHsKKyAgICAgICAg
aWYgKCFpc0Rlc2NlbmRhbnRPZkVuZCkgeworICAgICAgICAgICAgaWYgKG9iamVjdC0+aXNBYm92
ZShlbmQpIHx8IG9iamVjdC0+aW50ZXJzZWN0c0hpZ2hPZihlbmQpIHx8ICpvYmplY3QgPT0gZW5k
KSB7CisgICAgICAgICAgICAgICAgYW5jaG9yVHlwZSA9IGdldEFuY2hvclR5cGVGb3JFbmQob2Jq
ZWN0LCByZWdpb24sIGludGVydmFsTWFwLCBzdGFydFBvcywgZW5kUG9zKTsKKyAgICAgICAgICAg
ICAgICBib3VuZGFyeS5zZXRFbmQob2JqZWN0LCBlbmRQb3MsIGFuY2hvclR5cGUpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZnByaW50ZihzdGRlcnIsICJBZnRlcjog
c3RhcnQ6IFsoJS4wZiwgJS4wZiksICVwICVzXSAgLS0tLSAgZW5kIFsoJS4wZiwgJS4wZiksICVw
ICVzXVxuIiwgCisgICAgICAgICAgICBib3VuZGFyeS5tX3N0YXJ0TG93LnRvRmxvYXQoKSwgYm91
bmRhcnkubV9zdGFydEhpZ2gudG9GbG9hdCgpLCBib3VuZGFyeS5tX3N0YXJ0LCBib3VuZGFyeS5t
X3N0YXJ0ID8gYm91bmRhcnkubV9zdGFydC0+cmVuZGVyTmFtZSgpIDogIiIsCisgICAgICAgICAg
ICBib3VuZGFyeS5tX2VuZExvdy50b0Zsb2F0KCksIGJvdW5kYXJ5Lm1fZW5kSGlnaC50b0Zsb2F0
KCksIGJvdW5kYXJ5Lm1fZW5kLCBib3VuZGFyeS5tX2VuZCA/IGJvdW5kYXJ5Lm1fZW5kLT5yZW5k
ZXJOYW1lKCkgOiAiIik7Cit9CisKK3ZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjb21wdXRl
Qm91bmRhcnkoY29uc3QgUmVuZGVyT2JqZWN0SW50ZXJ2YWwqIG9iamVjdEludGVydmFsCisgICAg
LCBjb25zdCBSZW5kZXJPYmplY3RJbnRlcnZhbCYgcmVnaW9uSW50ZXJ2YWwKKyAgICAsIEN1cnJl
bnRSYW5nZUJvdW5kYXJ5JiBib3VuZGFyeQorICAgICwgUmVuZGVyT2JqZWN0SW50ZXJ2YWxNYXAm
IGludGVydmFsTWFwCisgICAgLCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIHBvc2l0aW9u
ZWRPYmplY3RzKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0ID0gb2Jq
ZWN0SW50ZXJ2YWwtPmRhdGEoKS5tX29iamVjdDsKKyAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVj
dCogY2hpbGQgPSBvYmplY3QtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSkgeworICAgICAgICAgICAgcG9zaXRpb25lZE9iamVjdHMuYXBwZW5kKGNoaWxkKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdElu
dGVydmFsKiBpbnRlcnZhbEZvckNoaWxkID0gb2JqZWN0SW50ZXJ2YWw7CisgICAgICAgIGlmIChj
aGlsZC0+aXNJbmxpbmUoKSB8fCBjaGlsZC0+aXNUZXh0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IFJlbmRlck9iamVjdCogY2IgPSBjaGlsZC0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgICAg
ICBSZW5kZXJPYmplY3RJbnRlcnZhbE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnRlcnZhbE1h
cC5maW5kKGNiKTsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBpbnRlcnZhbE1hcC5lbmQoKSk7
CisgICAgICAgICAgICBpbnRlcnZhbEZvckNoaWxkID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAg
ICAgfQorICAgICAgICBPd25QdHI8UmVuZGVyT2JqZWN0SW50ZXJ2YWw+IGludGVydmFsID0gaW50
ZXJ2YWxGb3JSZW5kZXJPYmplY3QoY2hpbGQsIGludGVydmFsRm9yQ2hpbGQtPmxvdygpKTsKKyAg
ICAgICAgUmVuZGVyT2JqZWN0SW50ZXJ2YWwqIG5ld0ludGVydmFsID0gaW50ZXJ2YWwuZ2V0KCk7
CisgICAgICAgIGludGVydmFsTWFwLmFkZChjaGlsZCwgaW50ZXJ2YWwucmVsZWFzZSgpKTsKKyAg
ICAgICAgdXBkYXRlQm91bmRhcnlJZk5lZWRlZChib3VuZGFyeSwgbmV3SW50ZXJ2YWwsIHJlZ2lv
bkludGVydmFsLCBpbnRlcnZhbE1hcCk7CisgICAgICAgIGNvbXB1dGVCb3VuZGFyeShuZXdJbnRl
cnZhbCwgcmVnaW9uSW50ZXJ2YWwsIGJvdW5kYXJ5LCBpbnRlcnZhbE1hcCwgcG9zaXRpb25lZE9i
amVjdHMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcHJpbnRCb3VuZGFyeShjb25zdCBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5JiByYW5nZUJvdW5kYXJ5KQor
eworICAgIGZwcmludGYoc3RkZXJyLCAiXG5TVEFSVCAtIFJBTkdFXG4iKTsKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIlN0YXJ0IHBvczogJWQgYW5jaG9yOiAlcyAiLCByYW5nZUJvdW5kYXJ5Lm1fc3Rh
cnRQb3NpdGlvbiwgCisgICAgICAgIChyYW5nZUJvdW5kYXJ5Lm1fc3RhcnRBbmNob3IgPT0gUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yKSA/ICJJbkFuY2hvciIgOiAKKyAgICAgICAgKHJhbmdlQm91bmRhcnkubV9zdGFy
dEFuY2hvciA9PSBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yKSA/ICJCZWZvcmVBbmNob3IiIDogCisgICAgICAgIChyYW5n
ZUJvdW5kYXJ5Lm1fc3RhcnRBbmNob3IgPT0gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50
UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSA/ICJBZnRlckFuY2hvciIgOiAK
KyAgICAgICAgKHJhbmdlQm91bmRhcnkubV9zdGFydEFuY2hvciA9PSBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW4pID8g
IkJlZm9yZUNoaWxkcmVuIiA6ICJBZnRlckNoaWxkcmVuIgorICAgICAgICApOworICAgIHJhbmdl
Qm91bmRhcnkubV9zdGFydC0+c2hvd1JlbmRlck9iamVjdCgpOworICAgIGZwcmludGYoc3RkZXJy
LCAiRW5kIHBvczogJWQgYW5jaG9yOiAlcyAiLCByYW5nZUJvdW5kYXJ5Lm1fZW5kUG9zaXRpb24s
IAorICAgICAgICAocmFuZ2VCb3VuZGFyeS5tX2VuZEFuY2hvciA9PSBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpID8g
IkluQW5jaG9yIiA6IAorICAgICAgICAocmFuZ2VCb3VuZGFyeS5tX2VuZEFuY2hvciA9PSBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQmVmb3Jl
QW5jaG9yKSA/ICJCZWZvcmVBbmNob3IiIDogCisgICAgICAgIChyYW5nZUJvdW5kYXJ5Lm1fZW5k
QW5jaG9yID09IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Q3VycmVudFJhbmdlQm91bmRhcnk6OlBv
c2l0aW9uSXNBZnRlckFuY2hvcikgPyAiQWZ0ZXJBbmNob3IiIDogCisgICAgICAgIChyYW5nZUJv
dW5kYXJ5Lm1fZW5kQW5jaG9yID09IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Q3VycmVudFJhbmdl
Qm91bmRhcnk6OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbikgPyAiQmVmb3JlQ2hpbGRyZW4iIDog
IkFmdGVyQ2hpbGRyZW4iCisgICAgICAgICk7CisgICAgcmFuZ2VCb3VuZGFyeS5tX2VuZC0+c2hv
d1JlbmRlck9iamVjdCgpOworICAgIGZwcmludGYoc3RkZXJyLCAiRU5EIC0gUkFOR0VcblxuIik7
Cit9CisKK3N0YXRpYyBib29sIGlzQm91bmRhcnlFbmRJc05leHRJblByZU9yZGVyKGNvbnN0IFJl
bmRlck5hbWVkRmxvd1RocmVhZDo6Q3VycmVudFJhbmdlQm91bmRhcnkmIGJvdW5kYXJ5LCBjb25z
dCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4pCit7CisgICAgZm9yIChjb25zdCBXZWJDb3JlOjpS
ZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBib3VuZGFyeS5tX3N0YXJ0OyBjdXJyZW50IDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHRJblByZU9yZGVyKHN0YXlXaXRoaW4pKSB7CisgICAgICAgIGlmIChj
dXJyZW50ID09IGJvdW5kYXJ5Lm1fZW5kKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgaXNOb2RlSW5Db250ZW50Tm9k
ZXMoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBzdGF5V2l0
aGluKQoreworICAgIGZvciAoTmFtZWRGbG93Q29udGVudE5vZGVzOjpjb25zdF9pdGVyYXRvciBp
dCA9IHN0YXlXaXRoaW4tPmNvbnRlbnROb2RlcygpLmJlZ2luKCk7IGl0ICE9IHN0YXlXaXRoaW4t
PmNvbnRlbnROb2RlcygpLmVuZCgpOyArK2l0KSB7CisgICAgICAgIE5vZGUqIGNvbnRlbnROb2Rl
ID0gKml0OworICAgICAgICBpZiAoY29udGVudE5vZGUtPmNvbnRhaW5zKG5vZGUpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGlj
IE5vZGUqIHRyYXZlcnNlTm9kZVRyZWUoY29uc3QgTm9kZSogc3RhcnQsIGJvb2wgbmV4dEluUHJl
T3JkZXIsIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCogc3RheVdpdGhpbikKK3sKKyAgICBO
b2RlKiBub2RlID0gbmV4dEluUHJlT3JkZXIgPyBzdGFydC0+dHJhdmVyc2VOZXh0Tm9kZSgpIDog
c3RhcnQtPnRyYXZlcnNlUHJldmlvdXNOb2RlKCk7CisgICAgaWYgKG5vZGUgJiYgaXNOb2RlSW5D
b250ZW50Tm9kZXMobm9kZSwgc3RheVdpdGhpbikpCisgICAgICAgIHJldHVybiBub2RlOworICAg
IHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3QgUmVuZGVyT2JqZWN0KiBmaW5kVmFsaWRSZW5k
ZXJlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnQsIGJvb2wgaXNCZWZvcmVBbmNob3IsIGJv
b2wgaXNOZXh0SW5QcmVPcmRlcikKK3sKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gc3RhcnQ7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KHJlbmRlcmVyLT5ub2RlKCkpCisgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICB3aGlsZSAo
cmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5ub2RlKCkpIHsKKyAgICAgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0ICpuID0gaXNCZWZvcmVBbmNob3IgPyByZW5kZXJlci0+Zmlyc3RDaGlsZCgpIDogcmVuZGVy
ZXItPmxhc3RDaGlsZCgpOworICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgcmVuZGVyZXIgPSBuOworICAgIH0KKyAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
Pm5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgIC8vIHNlYXJjaCBhIG5lYXJi
eSByZW5kZXJlciB3aXRoIG5vZGUKKyAgICByZW5kZXJlciA9IGlzTmV4dEluUHJlT3JkZXIgPyBy
ZW5kZXJlci0+bmV4dEluUHJlT3JkZXIoKSA6IHJlbmRlcmVyLT5wcmV2aW91c0luUHJlT3JkZXIo
KTsKKyAgICB3aGlsZSAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5ub2RlKCkpCisgICAgICAgIGlz
TmV4dEluUHJlT3JkZXIgPyByZW5kZXJlci0+bmV4dEluUHJlT3JkZXIoKSA6IHJlbmRlcmVyLT5w
cmV2aW91c0luUHJlT3JkZXIoKTsKKyAgICBBU1NFUlQocmVuZGVyZXIgJiYgcmVuZGVyZXItPm5v
ZGUoKSk7CisgICAgcmV0dXJuIHJlbmRlcmVyOworfQorCit2b2lkIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0cywgY29u
c3QgUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0Cit7CisKKyAgICBmcHJpbnRmKHN0ZGVyciwg
IlxuRE9NIHRyZWVcbiIpOworICAgIHNob3dUcmVlRm9yVGhpcygpOworICAgIGZwcmludGYoc3Rk
ZXJyLCAiUmVuZGVyVFJFRVxuXG4iKTsKKyAgICBzaG93UmVuZGVyVHJlZUZvclRoaXMoKTsKKwor
ICAgIFJlbmRlck9iamVjdEludGVydmFsTWFwIHJlbmRlck9iamVjdEludGVydmFsTWFwOworICAg
IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBwb3NpdGlvbmVkT2JqZWN0czsKKyAgICBWZWN0
b3I8Q3VycmVudFJhbmdlQm91bmRhcnk+IGJvdW5kYXJpZXM7CisgICAgTGF5b3V0UmVjdCByZWdp
b25SZWN0KHJlZ2lvbi0+cmVnaW9uUmVjdCgpKTsKKyAgICBSZW5kZXJPYmplY3RJbnRlcnZhbCBy
ZWdpb25JbnRlcnZhbCgKKyAgICAgICAgcmVnaW9uLT5pc0ZpcnN0UmVnaW9uKCkgPyBNSU5fTEFZ
T1VUX1VOSVQgOiByZWdpb25SZWN0LnkoKSwKKyAgICAgICAgcmVnaW9uLT5pc0xhc3RSZWdpb24o
KSA/IE1BWF9MQVlPVVRfVU5JVCA6IHJlZ2lvblJlY3QubWF4WSgpLAorICAgICAgICBSYW5nZURh
dGEocmVnaW9uLCBOVUxMKSk7CisvLworICAgIHJlbmRlck9iamVjdEludGVydmFsTWFwLmFkZCh0
aGlzLCBpbnRlcnZhbEZvclJlbmRlck9iamVjdCh0aGlzLCAwKSk7CisgICAgZm9yIChjb25zdCBS
ZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBDdXJyZW50UmFuZ2VCb3VuZGFyeSBib3VuZGFyeTsK
KyAgICAgICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAgICAg
ICAgcG9zaXRpb25lZE9iamVjdHMuYXBwZW5kKGNoaWxkKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogY2IgPSBjaGlsZC0+Y29u
dGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIFJlbmRlck9iamVjdEludGVydmFsTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IHJlbmRlck9iamVjdEludGVydmFsTWFwLmZpbmQoY2IpOworICAgICAgICBB
U1NFUlQoaXQgIT0gcmVuZGVyT2JqZWN0SW50ZXJ2YWxNYXAuZW5kKCkpOworICAgICAgICBSZW5k
ZXJPYmplY3RJbnRlcnZhbCogaW50ZXJ2YWxGb3JDaGlsZCA9IGl0LT5zZWNvbmQuZ2V0KCk7Cisg
ICAgICAgIE93blB0cjxSZW5kZXJPYmplY3RJbnRlcnZhbD4gaW50ZXJ2YWwgPSBpbnRlcnZhbEZv
clJlbmRlck9iamVjdChjaGlsZCwgaW50ZXJ2YWxGb3JDaGlsZC0+bG93KCkpOworICAgICAgICBp
bnRlcnZhbEZvckNoaWxkID0gaW50ZXJ2YWwuZ2V0KCk7CisgICAgICAgIHJlbmRlck9iamVjdElu
dGVydmFsTWFwLmFkZChjaGlsZCwgaW50ZXJ2YWwucmVsZWFzZSgpKTsKKyAgICAgICAgdXBkYXRl
Qm91bmRhcnlJZk5lZWRlZChib3VuZGFyeSwgaW50ZXJ2YWxGb3JDaGlsZCwgcmVnaW9uSW50ZXJ2
YWwsIHJlbmRlck9iamVjdEludGVydmFsTWFwKTsKKyAgICAgICAgY29tcHV0ZUJvdW5kYXJ5KGlu
dGVydmFsRm9yQ2hpbGQsIHJlZ2lvbkludGVydmFsLCBib3VuZGFyeSwgcmVuZGVyT2JqZWN0SW50
ZXJ2YWxNYXAsIHBvc2l0aW9uZWRPYmplY3RzKTsKKyAgICAgICAgYm91bmRhcmllcy5hcHBlbmQo
Ym91bmRhcnkpOworICAgIH0KKworICAgIHdoaWxlICghcG9zaXRpb25lZE9iamVjdHMuaXNFbXB0
eSgpKSB7CisgICAgICAgIEN1cnJlbnRSYW5nZUJvdW5kYXJ5IGJvdW5kYXJ5OworCisgICAgICAg
IGNvbnN0IFJlbmRlck9iamVjdCogcG9zaXRpb25lZCA9IHBvc2l0aW9uZWRPYmplY3RzLmZpcnN0
KCk7CisgICAgICAgIHBvc2l0aW9uZWRPYmplY3RzLnJlbW92ZSgwKTsKKyAgICAgICAgUmVuZGVy
T2JqZWN0KiBjYiA9IHBvc2l0aW9uZWQtPmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICBSZW5k
ZXJPYmplY3RJbnRlcnZhbE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZW5kZXJPYmplY3RJbnRl
cnZhbE1hcC5maW5kKGNiKTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IHJlbmRlck9iamVjdEludGVy
dmFsTWFwLmVuZCgpKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0SW50ZXJ2YWwqIGludGVydmFsRm9y
Q2hpbGQgPSBpdC0+c2Vjb25kLmdldCgpOworICAgICAgICBPd25QdHI8UmVuZGVyT2JqZWN0SW50
ZXJ2YWw+IGludGVydmFsID0gaW50ZXJ2YWxGb3JSZW5kZXJPYmplY3QocG9zaXRpb25lZCwgaW50
ZXJ2YWxGb3JDaGlsZC0+bG93KCkpOworICAgICAgICBpbnRlcnZhbEZvckNoaWxkID0gaW50ZXJ2
YWwuZ2V0KCk7CisgICAgICAgIHJlbmRlck9iamVjdEludGVydmFsTWFwLmFkZChwb3NpdGlvbmVk
LCBpbnRlcnZhbC5yZWxlYXNlKCkpOworICAgICAgICB1cGRhdGVCb3VuZGFyeUlmTmVlZGVkKGJv
dW5kYXJ5LCBpbnRlcnZhbEZvckNoaWxkLCByZWdpb25JbnRlcnZhbCwgcmVuZGVyT2JqZWN0SW50
ZXJ2YWxNYXApOworICAgICAgICBjb21wdXRlQm91bmRhcnkoaW50ZXJ2YWxGb3JDaGlsZCwgcmVn
aW9uSW50ZXJ2YWwsIGJvdW5kYXJ5LCByZW5kZXJPYmplY3RJbnRlcnZhbE1hcCwgcG9zaXRpb25l
ZE9iamVjdHMpOworCisgICAgICAgIGJvdW5kYXJpZXMuYXBwZW5kKGJvdW5kYXJ5KTsKKyAgICB9
CisKKyAgICBmb3IgKFZlY3RvcjxDdXJyZW50UmFuZ2VCb3VuZGFyeT46Oml0ZXJhdG9yIGl0ZXIg
PSBib3VuZGFyaWVzLmJlZ2luKCk7IGl0ZXIgIT0gYm91bmRhcmllcy5lbmQoKTsgKytpdGVyKSB7
CisgICAgICAgIEN1cnJlbnRSYW5nZUJvdW5kYXJ5JiByYW5nZUJvdW5kYXJ5ID0gKml0ZXI7CisK
KyAgICAgICAgcHJpbnRCb3VuZGFyeShyYW5nZUJvdW5kYXJ5KTsKKworICAgICAgICBpZiAoIXJh
bmdlQm91bmRhcnkubV9zdGFydCB8fCAhcmFuZ2VCb3VuZGFyeS5tX2VuZCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIC8vIGlmIHN0YXJ0ID09IGVuZAorICAgICAgICBpZiAocmFu
Z2VCb3VuZGFyeS5tX3N0YXJ0ID09IHJhbmdlQm91bmRhcnkubV9lbmQpIHsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGU9IHJhbmdlQm91bmRhcnkubV9zdGFydC0+bm9kZSgpOworICAgICAgICAgICAg
aWYgKCFub2RlKSB7CisgICAgICAgICAgICAgICAgLy8gZmluZCBhIHZhbGlkIHN0YXJ0IG5vZGUK
KyAgICAgICAgICAgICAgICBib29sIGlzQmVmb3JlID0gcmFuZ2VCb3VuZGFyeS5tX3N0YXJ0QW5j
aG9yID09IEN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yIHx8IAor
ICAgICAgICAgICAgICAgICAgICByYW5nZUJvdW5kYXJ5Lm1fc3RhcnRBbmNob3IgPT0gQ3VycmVu
dFJhbmdlQm91bmRhcnk6OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjsKKyAgICAgICAgICAgICAg
ICBpZiAoIXJhbmdlQm91bmRhcnkubV9zdGFydC0+aXNUZXh0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmVuZGVyT2JqZWN0ICpyID0gZmluZFZhbGlkUmVuZGVyZXJlcihyYW5nZUJv
dW5kYXJ5Lm1fc3RhcnQsIGlzQmVmb3JlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgcmFu
Z2VCb3VuZGFyeS5tX3N0YXJ0ID0gcjsKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VCb3VuZGFy
eS5tX3N0YXJ0QW5jaG9yID0gaXNCZWZvcmUgPyBDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRp
b25Jc0JlZm9yZUFuY2hvciA6IEN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQWZ0ZXJB
bmNob3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIGZpbmQgYSB2YWxp
ZCBlbmQgbm9kZQorICAgICAgICAgICAgICAgIGlmICghcmFuZ2VCb3VuZGFyeS5tX2VuZC0+aXNU
ZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0JlZm9yZSA9IHJhbmdlQm91bmRh
cnkubV9lbmRBbmNob3IgPT0gQ3VycmVudFJhbmdlQm91bmRhcnk6OlBvc2l0aW9uSXNCZWZvcmVB
bmNob3IgfHwgCisgICAgICAgICAgICAgICAgICAgICAgICByYW5nZUJvdW5kYXJ5Lm1fZW5kQW5j
aG9yID09IEN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW47Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogciA9IGZpbmRWYWxpZFJlbmRl
cmVyZXIocmFuZ2VCb3VuZGFyeS5tX2VuZCwgaXNCZWZvcmUsIHRydWUpOworICAgICAgICAgICAg
ICAgICAgICByYW5nZUJvdW5kYXJ5Lm1fZW5kID0gcjsKKyAgICAgICAgICAgICAgICAgICAgcmFu
Z2VCb3VuZGFyeS5tX2VuZEFuY2hvciA9IGlzQmVmb3JlID8gQ3VycmVudFJhbmdlQm91bmRhcnk6
OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IgOiBDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25J
c0FmdGVyQW5jaG9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIE5vZGUqIHN0YXJ0Tm9kZSA9ICByYW5nZUJvdW5kYXJ5Lm1fc3RhcnQtPm5vZGUoKTsKKyAg
ICAgICAgICAgIE5vZGUqIGVuZE5vZGUgPSByYW5nZUJvdW5kYXJ5Lm1fZW5kLT5ub2RlKCk7Cisg
ICAgICAgICAgICBib29sIHN0YXJ0SXNUZXh0ID0gc3RhcnROb2RlLT5pc1RleHROb2RlKCkgJiYg
cmFuZ2VCb3VuZGFyeS5tX3N0YXJ0QW5jaG9yID09IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Q3Vy
cmVudFJhbmdlQm91bmRhcnk6OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsKKyAgICAgICAgICAg
IGJvb2wgZW5kSXNUZXh0ID0gZW5kTm9kZS0+aXNUZXh0Tm9kZSgpICYmIHJhbmdlQm91bmRhcnku
bV9lbmRBbmNob3IgPT0gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFy
eTo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yOworICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnROb2RlLT5kb2N1bWVudCgpLAorICAgICAgICAgICAg
ICAgIHN0YXJ0SXNUZXh0ID8gUG9zaXRpb24odG9UZXh0KHN0YXJ0Tm9kZSksIHJhbmdlQm91bmRh
cnkubV9zdGFydFBvc2l0aW9uKSA6IFBvc2l0aW9uKHN0YXJ0Tm9kZSwgY29udmVydFRvUG9zaXRp
b25BbmNob3JUeXBlKHJhbmdlQm91bmRhcnkubV9zdGFydEFuY2hvcikpLAorICAgICAgICAgICAg
ICAgIGVuZElzVGV4dCA/IFBvc2l0aW9uKHRvVGV4dChlbmROb2RlKSwgcmFuZ2VCb3VuZGFyeS5t
X2VuZFBvc2l0aW9uKSA6IFBvc2l0aW9uKGVuZE5vZGUsIGNvbnZlcnRUb1Bvc2l0aW9uQW5jaG9y
VHlwZShyYW5nZUJvdW5kYXJ5Lm1fZW5kQW5jaG9yKSkgKTsKKyAgICAgICAgICAgIHJhbmdlT2Jq
ZWN0cy5hcHBlbmQocmFuZ2UpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICBOb2RlICpzdGFydE5vZGUgPSAwOworICAgICAgICBOb2RlICpsYXN0VmFsaWROb2Rl
ID0gMDsKKyAgICAgICAgYm9vbCBpc0VuZE5leHRJblByZU9yZGVyID0gaXNCb3VuZGFyeUVuZElz
TmV4dEluUHJlT3JkZXIocmFuZ2VCb3VuZGFyeSwgdGhpcyk7CisgICAgICAgIGZvciAoY29uc3Qg
V2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gcmFuZ2VCb3VuZGFyeS5tX3N0YXJ0OyBj
dXJyZW50IDsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaXNFbmROZXh0SW5QcmVPcmRlciA/
IGN1cnJlbnQtPm5leHRJblByZU9yZGVyKHRoaXMpIDogY3VycmVudC0+cHJldmlvdXNJblByZU9y
ZGVyKHRoaXMpKSB7CisKKyAgICAgICAgICAgIGN1cnJlbnQtPnNob3dSZW5kZXJPYmplY3QoKTsK
KyAgICAgICAgICAgIGlmIChjdXJyZW50ID09IHJhbmdlQm91bmRhcnkubV9lbmQpIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydE5vZGUg
PyBzdGFydE5vZGUtPnJlbmRlcmVyKCkgOiByYW5nZUJvdW5kYXJ5Lm1fc3RhcnQ7CisgICAgICAg
ICAgICAgICAgaWYgKCFzdGFydFJlbmRlcmVyLT5pc1RleHQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQmVmb3JlID0gcmFuZ2VCb3VuZGFyeS5tX3N0YXJ0QW5jaG9yID09IEN1cnJl
bnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yIHx8IAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmFuZ2VCb3VuZGFyeS5tX3N0YXJ0QW5jaG9yID09IEN1cnJlbnRSYW5nZUJv
dW5kYXJ5OjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW47CisgICAgICAgICAgICAgICAgICAgIHN0
YXJ0UmVuZGVyZXIgPSBmaW5kVmFsaWRSZW5kZXJlcmVyKHN0YXJ0UmVuZGVyZXIsIGlzQmVmb3Jl
LCBpc0VuZE5leHRJblByZU9yZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VCb3VuZGFy
eS5tX3N0YXJ0QW5jaG9yID0gaXNCZWZvcmUgPyBDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRp
b25Jc0JlZm9yZUFuY2hvciA6IEN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQWZ0ZXJB
bmNob3I7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0UmVuZGVyZXItPm5v
ZGUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gcmFuZ2VCb3VuZGFyeS5tX2Vu
ZDsKKyAgICAgICAgICAgICAgICBpZiAoIWVuZFJlbmRlcmVyLT5pc1RleHQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQmVmb3JlID0gcmFuZ2VCb3VuZGFyeS5tX2VuZEFuY2hvciA9
PSBDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciB8fCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJhbmdlQm91bmRhcnkubV9lbmRBbmNob3IgPT0gQ3VycmVudFJh
bmdlQm91bmRhcnk6OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjsKKyAgICAgICAgICAgICAgICAg
ICAgZW5kUmVuZGVyZXIgPSBmaW5kVmFsaWRSZW5kZXJlcmVyKGVuZFJlbmRlcmVyLCBpc0JlZm9y
ZSwgaXNFbmROZXh0SW5QcmVPcmRlcik7CisgICAgICAgICAgICAgICAgICAgIHJhbmdlQm91bmRh
cnkubV9lbmRBbmNob3IgPSBpc0JlZm9yZSA/IEN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlv
bklzQmVmb3JlQW5jaG9yIDogQ3VycmVudFJhbmdlQm91bmRhcnk6OlBvc2l0aW9uSXNBZnRlckFu
Y2hvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgTm9kZSogbmV4dE5vZGUg
PSB0cmF2ZXJzZU5vZGVUcmVlKGxhc3RWYWxpZE5vZGUsIGlzRW5kTmV4dEluUHJlT3JkZXIsIHRo
aXMpOworICAgICAgICAgICAgICAgIE5vZGUqIG5leHROb2RlV2l0aFJlbmRlcmVyID0gbmV4dE5v
ZGU7CisgICAgICAgICAgICAgICAgLy8gc2tpcCBub2RlcyB3aXRob3V0IHJlbmRlcmVycworICAg
ICAgICAgICAgICAgIHdoaWxlIChuZXh0Tm9kZVdpdGhSZW5kZXJlciAmJiAhbmV4dE5vZGVXaXRo
UmVuZGVyZXItPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGVXaXRo
UmVuZGVyZXIgPSB0cmF2ZXJzZU5vZGVUcmVlKG5leHROb2RlV2l0aFJlbmRlcmVyLCBpc0VuZE5l
eHRJblByZU9yZGVyLCB0aGlzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
UmVuZGVyT2JqZWN0ICpyID0gbmV4dE5vZGVXaXRoUmVuZGVyZXIgPyBuZXh0Tm9kZVdpdGhSZW5k
ZXJlci0+cmVuZGVyZXIoKSA6IGxhc3RWYWxpZE5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGVuZFJlbmRlcmVyICE9IHIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gY2xv
c2UgdGhlIHJhbmdlCisgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RhcnRJc1RleHQgPSBzdGFy
dE5vZGUtPmlzVGV4dE5vZGUoKSAmJiByYW5nZUJvdW5kYXJ5Lm1fc3RhcnRBbmNob3IgPT0gUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzdGFydE5vZGUtPmRvY3VtZW50KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SXNUZXh0ID8gUG9zaXRpb24o
dG9UZXh0KHN0YXJ0Tm9kZSksIHJhbmdlQm91bmRhcnkubV9zdGFydFBvc2l0aW9uKSA6IFBvc2l0
aW9uKHN0YXJ0Tm9kZSwgY29udmVydFRvUG9zaXRpb25BbmNob3JUeXBlKHJhbmdlQm91bmRhcnku
bV9zdGFydEFuY2hvcikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQb3NpdGlvbihsYXN0VmFsaWROb2RlLCAgKHItPm5vZGUoKS0+cGFy
ZW50Tm9kZSgpID09IGxhc3RWYWxpZE5vZGUpID8gUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVD
aGlsZHJlbiA6IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpICk7CisgICAgICAgICAg
ICAgICAgICAgIHJhbmdlT2JqZWN0cy5hcHBlbmQocmFuZ2UpOworICAgICAgICAgICAgICAgICAg
ICAvLworICAgICAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBlbmRSZW5kZXJlci0+bm9kZSgp
OworICAgICAgICAgICAgICAgICAgICByYW5nZUJvdW5kYXJ5LnNldFN0YXJ0KGVuZFJlbmRlcmVy
LCAwLCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlv
bklzQmVmb3JlQW5jaG9yKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBs
YXN0VmFsaWROb2RlID0gZW5kUmVuZGVyZXItPm5vZGUoKTsKKworICAgICAgICAgICAgICAgIGJv
b2wgc3RhcnRJc1RleHQgPSBzdGFydE5vZGUtPmlzVGV4dE5vZGUoKSAmJiByYW5nZUJvdW5kYXJ5
Lm1fc3RhcnRBbmNob3IgPT0gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3Vu
ZGFyeTo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yOworICAgICAgICAgICAgICAgIGJvb2wgZW5k
SXNUZXh0ID0gbGFzdFZhbGlkTm9kZS0+aXNUZXh0Tm9kZSgpICYmIHJhbmdlQm91bmRhcnkubV9l
bmRBbmNob3IgPT0gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpDdXJyZW50UmFuZ2VCb3VuZGFyeTo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yOworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0Tm9kZS0+ZG9jdW1lbnQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgc3RhcnRJc1RleHQgPyBQb3NpdGlvbih0b1RleHQoc3RhcnROb2RlKSwgcmFuZ2VC
b3VuZGFyeS5tX3N0YXJ0UG9zaXRpb24pIDogUG9zaXRpb24oc3RhcnROb2RlLCBjb252ZXJ0VG9Q
b3NpdGlvbkFuY2hvclR5cGUocmFuZ2VCb3VuZGFyeS5tX3N0YXJ0QW5jaG9yKSksCisgICAgICAg
ICAgICAgICAgICAgIGVuZElzVGV4dCA/IFBvc2l0aW9uKHRvVGV4dChsYXN0VmFsaWROb2RlKSwg
cmFuZ2VCb3VuZGFyeS5tX2VuZFBvc2l0aW9uKSA6IFBvc2l0aW9uKGxhc3RWYWxpZE5vZGUsIGNv
bnZlcnRUb1Bvc2l0aW9uQW5jaG9yVHlwZShyYW5nZUJvdW5kYXJ5Lm1fZW5kQW5jaG9yKSkgKTsK
KyAgICAgICAgICAgICAgICByYW5nZU9iamVjdHMuYXBwZW5kKHJhbmdlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjdXJyZW50LT5u
b2RlKCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzQmVmb3JlID0gcmFuZ2VCb3VuZGFyeS5t
X3N0YXJ0QW5jaG9yID09IEN1cnJlbnRSYW5nZUJvdW5kYXJ5OjpQb3NpdGlvbklzQmVmb3JlQW5j
aG9yIAorICAgICAgICAgICAgICAgICAgICB8fCByYW5nZUJvdW5kYXJ5Lm1fc3RhcnRBbmNob3Ig
PT0gQ3VycmVudFJhbmdlQm91bmRhcnk6OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjsKKyAgICAg
ICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHIgPSBmaW5kVmFsaWRSZW5kZXJlcmVyKGN1
cnJlbnQsIGlzQmVmb3JlLCBpc0VuZE5leHRJblByZU9yZGVyKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXN0YXJ0Tm9kZSkgeworICAgICAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSByLT5ub2Rl
KCk7CisgICAgICAgICAgICAgICAgICAgIGxhc3RWYWxpZE5vZGUgPSBzdGFydE5vZGU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCFzdGFydE5vZGUpIHsKKyAgICAgICAgICAgICAgICBzdGFydE5vZGUg
PSBjdXJyZW50LT5ub2RlKCk7CisgICAgICAgICAgICAgICAgbGFzdFZhbGlkTm9kZSA9IHN0YXJ0
Tm9kZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgTm9kZSogbmV4dE5vZGUgPSB0cmF2ZXJzZU5vZGVUcmVlKGxhc3RWYWxpZE5vZGUsIGlz
RW5kTmV4dEluUHJlT3JkZXIsIHRoaXMpOworICAgICAgICAgICAgTm9kZSogbmV4dE5vZGVXaXRo
UmVuZGVyZXIgPSBuZXh0Tm9kZTsKKyAgICAgICAgICAgIC8vIHNraXAgbm9kZXMgd2l0aG91dCBy
ZW5kZXJlcnMKKyAgICAgICAgICAgIHdoaWxlIChuZXh0Tm9kZVdpdGhSZW5kZXJlciAmJiAhbmV4
dE5vZGVXaXRoUmVuZGVyZXItPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXh0Tm9k
ZVdpdGhSZW5kZXJlciA9IHRyYXZlcnNlTm9kZVRyZWUobmV4dE5vZGVXaXRoUmVuZGVyZXIsIGlz
RW5kTmV4dEluUHJlT3JkZXIsIHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgIGlmIChjdXJyZW50ICE9IG5leHROb2RlV2l0aFJlbmRlcmVyLT5yZW5kZXJl
cigpKSB7CisgICAgICAgICAgICAgICAgLy8gY2xvc2UgdGhlIHJhbmdlCisgICAgICAgICAgICAg
ICAgYm9vbCBzdGFydElzVGV4dCA9IHN0YXJ0Tm9kZS0+aXNUZXh0Tm9kZSgpICYmIHJhbmdlQm91
bmRhcnkubV9zdGFydEFuY2hvciA9PSBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OkN1cnJlbnRSYW5n
ZUJvdW5kYXJ5OjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I7CisgICAgICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnROb2RlLT5kb2N1bWVudCgpLAor
ICAgICAgICAgICAgICAgICAgICBzdGFydElzVGV4dCA/IFBvc2l0aW9uKHRvVGV4dChzdGFydE5v
ZGUpLCByYW5nZUJvdW5kYXJ5Lm1fc3RhcnRQb3NpdGlvbikgOiBQb3NpdGlvbihzdGFydE5vZGUs
IGNvbnZlcnRUb1Bvc2l0aW9uQW5jaG9yVHlwZShyYW5nZUJvdW5kYXJ5Lm1fc3RhcnRBbmNob3Ip
KSwKKyAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24obGFzdFZhbGlkTm9kZSwgUG9zaXRpb246
OlBvc2l0aW9uSXNBZnRlckFuY2hvcikgKTsKKyAgICAgICAgICAgICAgICByYW5nZU9iamVjdHMu
YXBwZW5kKHJhbmdlKTsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIHN0YXJ0
Tm9kZSA9IGN1cnJlbnQtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICByYW5nZUJvdW5kYXJ5LnNl
dFN0YXJ0KGN1cnJlbnQsIDAsIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Q3VycmVudFJhbmdlQm91
bmRhcnk6OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbGFzdFZhbGlkTm9kZSA9IGN1cnJlbnQtPm5vZGUoKTsKKyAgICAgICAgfQorICAgIH0KKwor
Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5oCmluZGV4IDVlMGQ5NjIuLjY2MzgzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDsKIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKK2NsYXNzIFJlbmRlclJlZ2lvbjsKIAogdHlwZWRl
ZiBMaXN0SGFzaFNldDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQqPiBSZW5kZXJOYW1lZEZsb3dUaHJl
YWRMaXN0OwogdHlwZWRlZiBIYXNoQ291bnRlZFNldDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQqPiBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWRDb3VudGVkU2V0OwpAQCAtNjksMTAgKzcwLDE2NyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgTmFtZWRGbG93Q29udGVudE5vZGVzJiBjb250ZW50Tm9kZXMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnROb2RlczsgfQogICAgIGJvb2wgaGFzQ29udGVudE5vZGUoTm9k
ZSogY29udGVudE5vZGUpIGNvbnN0IHsgQVNTRVJUKGNvbnRlbnROb2RlKTsgcmV0dXJuIG1fY29u
dGVudE5vZGVzLmNvbnRhaW5zKGNvbnRlbnROb2RlKTsgfQogCisgICAgdm9pZCBnZXRSYW5nZXMo
VmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIGNvbnN0OworCisg
ICAgc3RydWN0IFJhbmdlRGF0YSB7CisgICAgICAgIFJhbmdlRGF0YSgpCisgICAgICAgIDogbV9v
YmplY3QoMCkKKyAgICAgICAgLCBtX3RleHRCb3goMCkKKyAgICAgICAge30KKworICAgICAgICBS
YW5nZURhdGEoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IElubGluZVRleHRCb3gg
KnRleHRCb3gpCisgICAgICAgIDogbV9vYmplY3Qob2JqZWN0KQorICAgICAgICAsIG1fdGV4dEJv
eCh0ZXh0Qm94KQorICAgICAgICB7fTsKKyAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBtX29i
amVjdDsKKyAgICAgICAgY29uc3QgSW5saW5lVGV4dEJveCogbV90ZXh0Qm94OworICAgIH07CisK
KyAgICBjbGFzcyBSZW5kZXJPYmplY3RJbnRlcnZhbCB7CisgICAgcHVibGljOgorICAgICAgICAv
LyBDb25zdHJ1Y3RvciBmcm9tIHR3byBlbmRwb2ludHMgcGx1cyBleHBsaWNpdCB1c2VyIGRhdGEu
CisgICAgICAgIFJlbmRlck9iamVjdEludGVydmFsKGNvbnN0IExheW91dFVuaXQmIGxvdywgY29u
c3QgTGF5b3V0VW5pdCYgaGlnaCwgY29uc3QgUmFuZ2VEYXRhIGRhdGEpCisgICAgICAgICAgICA6
IG1fbG93KGxvdykKKyAgICAgICAgICAgICwgbV9oaWdoKGhpZ2gpCisgICAgICAgICAgICAsIG1f
ZGF0YShkYXRhKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBMYXlvdXRV
bml0JiBsb3coKSBjb25zdCB7IHJldHVybiBtX2xvdzsgfQorICAgICAgICBjb25zdCBMYXlvdXRV
bml0JiBoaWdoKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoOyB9CisgICAgICAgIGNvbnN0IFJhbmdl
RGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAgICAgIGJvb2wgb3Zl
cmxhcHMoY29uc3QgTGF5b3V0VW5pdCYgbG93LCBjb25zdCBMYXlvdXRVbml0JiBoaWdoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy0+aGlnaCgpIDwgbG93KQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChoaWdoIDwgdGhpcy0+bG93
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICBib29sIG92ZXJsYXBzKGNvbnN0IFJlbmRlck9iamVj
dEludGVydmFsJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG92
ZXJsYXBzKG90aGVyLmxvdygpLCBvdGhlci5oaWdoKCkpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaW50ZXJ2YWwgaXMgImxlc3MiIHRoYW4gdGhlIG90aGVy
LiBUaGUKKyAgICAgICAgLy8gY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb24gdGhlIGxvdyBlbmRw
b2ludHMgb2YgdGhlIGludGVydmFscy4KKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVu
ZGVyT2JqZWN0SW50ZXJ2YWwmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbG93KCkgPCBvdGhlci5sb3coKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIGludGVydmFsIGlzIHN0cmljdGx5IGVxdWFsIHRvIHRoZSBvdGhlciwK
KyAgICAgICAgLy8gaW5jbHVkaW5nIGNvbXBhcmlzb24gb2YgdGhlIHVzZXIgZGF0YS4KKyAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlck9iamVjdEludGVydmFsJiBvdGhlcikgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChsb3coKSA9PSBvdGhlci5sb3coKQor
ICAgICAgICAgICAgICAgICAgICAmJiBoaWdoKCkgPT0gb3RoZXIuaGlnaCgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgaXNCZWxvdyhjb25zdCBSZW5kZXJPYmplY3RJbnRlcnZhbCYgb3Ro
ZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBoaWdoKCkgPD0gb3RoZXIu
bG93KCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzQWJvdmUoY29uc3QgUmVuZGVyT2Jq
ZWN0SW50ZXJ2YWwmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bG93KCkgPj0gb3RoZXIuaGlnaCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc0NvbnRh
aW5lZEluKGNvbnN0IFJlbmRlck9iamVjdEludGVydmFsJiBvdGhlcikgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIChsb3coKSA+PSBvdGhlci5sb3coKQorICAgICAgICAgICAg
ICAgICAgICAmJiBoaWdoKCkgPD0gb3RoZXIuaGlnaCgpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgaW50ZXJzZWN0c0xvd09mKGNvbnN0IFJlbmRlck9iamVjdEludGVydmFsJiBvdGhlcikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChsb3coKSA8IG90aGVyLmxvdygp
IAorICAgICAgICAgICAgICAgICAgICAmJiBoaWdoKCkgPiBvdGhlci5sb3coKSk7CisgICAgICAg
IH0KKworICAgICAgICBib29sIGludGVyc2VjdHNIaWdoT2YoY29uc3QgUmVuZGVyT2JqZWN0SW50
ZXJ2YWwmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKGxvdygp
IDwgb3RoZXIuaGlnaCgpCisgICAgICAgICAgICAgICAgICAgICYmIGhpZ2goKSA+IG90aGVyLmhp
Z2goKSk7CisgICAgICAgIH0KKworICAgICNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFN1cHBv
cnQgZm9yIHByaW50aW5nIFBPREludGVydmFscy4KKyAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlsoIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6Om51bWJlcihsb3coKS50b0Zsb2F0KCkpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCIsICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIo
aGlnaCgpLnRvRmxvYXQoKSkpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiksICIpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiVzICVwKSIsIGRhdGEo
KS5tX29iamVjdC0+cmVuZGVyTmFtZSgpLCBkYXRhKCkubV9vYmplY3QpKTsKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJdIik7CisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworICAgICAgICB9CisgICAgI2VuZGlmCisKKyAgICBwcml2YXRlOgorICAgICAgICBjb25z
dCBMYXlvdXRVbml0IG1fbG93OworICAgICAgICBjb25zdCBMYXlvdXRVbml0IG1faGlnaDsKKyAg
ICAgICAgY29uc3QgUmFuZ2VEYXRhIG1fZGF0YTsKKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNo
TWFwPGNvbnN0IFJlbmRlck9iamVjdCosIE93blB0cjxSZW5kZXJPYmplY3RJbnRlcnZhbD4gPiBS
ZW5kZXJPYmplY3RJbnRlcnZhbE1hcDsKKworICAgIFBhc3NPd25QdHI8UmVuZGVyT2JqZWN0SW50
ZXJ2YWw+IGludGVydmFsRm9yUmVuZGVyT2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCosIExheW91
dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3Q7CisKKyAgICBzdHJ1
Y3QgQ3VycmVudFJhbmdlQm91bmRhcnkgeworICAgICAgICBlbnVtIEFuY2hvclR5cGUgeworICAg
ICAgICAgICAgUG9zaXRpb25Jc09mZnNldEluQW5jaG9yLAorICAgICAgICAgICAgUG9zaXRpb25J
c0JlZm9yZUFuY2hvciwKKyAgICAgICAgICAgIFBvc2l0aW9uSXNBZnRlckFuY2hvciwKKyAgICAg
ICAgICAgIFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbiwKKyAgICAgICAgICAgIFBvc2l0aW9uSXNB
ZnRlckNoaWxkcmVuCisgICAgICAgIH07CisgICAgICAgIEN1cnJlbnRSYW5nZUJvdW5kYXJ5KCkK
KyAgICAgICAgOiBtX3N0YXJ0KE5VTEwpCisgICAgICAgICwgbV9zdGFydFBvc2l0aW9uKDApCisg
ICAgICAgICwgbV9zdGFydEFuY2hvcihDdXJyZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc09m
ZnNldEluQW5jaG9yKQorICAgICAgICAsIG1fc3RhcnRMb3coTUlOX0xBWU9VVF9VTklUKQorICAg
ICAgICAsIG1fc3RhcnRIaWdoKE1BWF9MQVlPVVRfVU5JVCkKKyAgICAgICAgLCBtX2VuZChOVUxM
KQorICAgICAgICAsIG1fZW5kUG9zaXRpb24oMCkKKyAgICAgICAgLCBtX2VuZEFuY2hvcihDdXJy
ZW50UmFuZ2VCb3VuZGFyeTo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKQorICAgICAgICAsIG1f
ZW5kTG93KE1JTl9MQVlPVVRfVU5JVCkKKyAgICAgICAgLCBtX2VuZEhpZ2goTUFYX0xBWU9VVF9V
TklUKQorICAgICAgICB7fQorCisgICAgICAgIHZvaWQgc2V0U3RhcnQoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmosIGludCBwb3MsIEFuY2hvclR5cGUgYW5jaG9yKTsKKyAgICAgICAgdm9pZCBzZXRF
bmQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmosIGludCBwb3MsIEFuY2hvclR5cGUgYW5jaG9yKTsK
KworICAgICAgICB2b2lkIHNldFN0YXJ0KFJlbmRlck9iamVjdEludGVydmFsKiBpbnRlcnZhbCwg
aW50IHBvcywgQW5jaG9yVHlwZSBhbmNob3IpOworICAgICAgICB2b2lkIHNldEVuZChSZW5kZXJP
YmplY3RJbnRlcnZhbCogaW50ZXJ2YWwsIGludCBwb3MsIEFuY2hvclR5cGUgYW5jaG9yKTsKKwor
ICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIG1fc3RhcnQ7CisgICAgICAgIGludCBtX3N0YXJ0
UG9zaXRpb247CisgICAgICAgIEFuY2hvclR5cGUgbV9zdGFydEFuY2hvcjsKKyAgICAgICAgTGF5
b3V0VW5pdCBtX3N0YXJ0TG93OyAvLyByZWxhdGl2ZSB0byBzdGFydCBvZiBmbG93CisgICAgICAg
IExheW91dFVuaXQgbV9zdGFydEhpZ2g7CisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogbV9l
bmQ7CisgICAgICAgIGludCBtX2VuZFBvc2l0aW9uOworICAgICAgICBBbmNob3JUeXBlIG1fZW5k
QW5jaG9yOworICAgICAgICBMYXlvdXRVbml0IG1fZW5kTG93OworICAgICAgICBMYXlvdXRVbml0
IG1fZW5kSGlnaDsKKyAgICB9OworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxC
ZURlc3Ryb3llZCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgorCisgICAgdm9pZCBjcmVhdGVSYW5n
ZXNGcm9tUmFuZ2VCb3VuZGFyeShDdXJyZW50UmFuZ2VCb3VuZGFyeSYsIFZlY3RvcjxSZWZQdHI8
UmFuZ2U+ID4mLCBjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVC
b3VuZGFyeShjb25zdCBSZW5kZXJPYmplY3RJbnRlcnZhbCosIGNvbnN0IFJlbmRlck9iamVjdElu
dGVydmFsJiwgQ3VycmVudFJhbmdlQm91bmRhcnkmLCBSZW5kZXJPYmplY3RJbnRlcnZhbE1hcCYs
IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUJv
dW5kYXJ5SWZOZWVkZWQoQ3VycmVudFJhbmdlQm91bmRhcnkmLCBSZW5kZXJPYmplY3RJbnRlcnZh
bCosIGNvbnN0IFJlbmRlck9iamVjdEludGVydmFsJiwgY29uc3QgUmVuZGVyT2JqZWN0SW50ZXJ2
YWxNYXAmKSBjb25zdDsKKwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck5hbWVkRmxvd1RocmVhZCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161495</attachid>
            <date>2012-08-30 09:36:45 -0700</date>
            <delta_ts>2012-09-06 06:43:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>71913</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MTk0NzA1Li4xZGJlM2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMDgt
MzAgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJl
Z2lvbkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250
ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQt
bHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvcmVz
b3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0UmFuZ2VB
dCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOC0zMCAgQW5kcmVpIE9uZWEg
IDxvbmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVnaW9uc11BZGQgc3VwcG9ydCBmb3Ig
dGV4dC1zaGFkb3cgaW4gcmVnaW9uIHN0eWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNv
bHV0ZS1wb3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmNlOGNhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1wb3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NyBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBm
b3IgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVtZW50cworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAs
d3JhcHBlciwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZTQ3NDE1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sCkBA
IC0wLDAgKzEsMzQgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIC5ib3JkZXIg
eyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94MSB7IC13ZWJraXQtZmxvdy1pbnRv
OiBmbG93OyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOyB0b3A6IDI1cHg7IGxlZnQ6IDI1cHg7IH0KKyAgICAjcmVn
aW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAw
cHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogNTBweDsgfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3gxIj48L2Rpdj48L2Rpdj4KKyAgICA8ZGl2
IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgZGVidWcoIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246
OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGFic29sdXRlIHBvc2l0aW9uZWQgZWxlbWVudHMiKTsK
KyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7Cisg
ICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAid3JhcHBlciIsIDFdKTsKKworZnVu
Y3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKworICAgIGhpZGVS
ZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVu
dC1ub2Rlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mMGE2NzllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBSZWdpb246
OmdldFJlZ2lvbkZsb3dSYW5nZXMgd2l0aCBtdWx0aXBsZSBjb250ZW50IG5vZGVzCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRmxvdyB0ZXN0CitQQVNTIHJhbmdl
MS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLCN0ZXh0LDRdIGlzIGVxdWFsIHRv
IFt3cmFwcGVyLDAsI3RleHQsNF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAyCitQQVNTIEFycmF5
IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorUEFT
UyBBcnJheSBbd3JhcHBlcjIsMCx3cmFwcGVyMiwxXSBpcyBlcXVhbCB0byBbd3JhcHBlcjIsMCx3
cmFwcGVyMiwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWNvbnRlbnQtbm9kZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRlbnQtbm9kZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42NDE1MzE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1s
CkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAg
I3dyYXBwZXIgeyBmb250LXNpemU6IDUwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHgg
c29saWQgcmVkOyB9CisgICAgLmZsb3cgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQorICAg
IC5ibHVlIHtiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6
IDUwcHg7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDog
MjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lv
bjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiAxMjBw
eDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cisg
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBj
bGFzcz0iZmxvdyI+VGV4dCBub2RlLjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBj
bGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+
PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIyIj48ZGl2IGNsYXNzPSJmbG93IGJsdWUiPjwvZGl2
PjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBJbXBsZW1lbnQg
UmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIHdpdGggbXVsdGlwbGUgY29udGVudCBub2RlcyIp
OworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsK
KyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisK
KworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBl
ciIsIDAsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMik7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAi
d3JhcHBlciIsIDFdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAxKSwg
WyJ3cmFwcGVyMiIsIDAsICJ3cmFwcGVyMiIsIDFdKTsKKworCitmdW5jdGlvbiBoaWRlUmVnaW9u
c0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lv
bnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5v
bmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jZjMxYmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVn
aW9uRmxvd1JhbmdlcyBmb3IgZWxlbWVudHMgd2l0aCBkaXNwbGF5Om5vbmUgKFJhbmdlIHNob3Vs
ZCBub3QgYnJlYWsgcmFuZ2VzIGF0IGRpc3BsYXk6bm9uZSkKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisxCiszCis1CitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLHdy
YXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy1kaXNwbGF5LW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFjMmZjODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUuaHRtbApAQCAt
MCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFw
cGVyIHsgZm9udC1zaXplOiAyMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlk
IHJlZDsgfQorICAgIC5mbG93IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxO30KKyAgICAjd3Jh
cHBlciBwIHttYXJnaW46IDA7IHBhZGRpbmc6IDA7fQorICAgIC5ub25lIHtkaXNwbGF5OiBub25l
O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4
OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9Indy
YXBwZXIiPjxkaXYgY2xhc3M9ImZsb3ciPjxwPjE8L3A+PHAgY2xhc3M9Im5vbmUiPjI8L3A+PHA+
MzwvcD48cCBjbGFzcz0ibm9uZSI+NDwvcD48cD41PC9wPjwvZGl2PjwvZGl2PgorICA8ZGl2IGlk
PSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9u
KCJbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3Ig
ZWxlbWVudHMgd2l0aCBkaXNwbGF5Om5vbmUgKFJhbmdlIHNob3VsZCBub3QgYnJlYWsgcmFuZ2Vz
IGF0IGRpc3BsYXk6bm9uZSkiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24xIik7CisKKyAgICBkZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAgcmFuZ2Ux
ID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVh
dGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChy
YW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAid3JhcHBlciIsIDFdKTsKKworZnVuY3Rpb24gaGlk
ZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9u
MSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKworICAgIGhpZGVSZWdpb25zQW5k
Rmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1lbXB0eS1yZWdpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yNGFjNDQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMyBAQAorW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBSZWdpb246OmdldFJlZ2lv
bkZsb3dSYW5nZXMgZm9yIGVtcHR5IHJlZ2lvbnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMi5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dy
YXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVt
cHR5LXJlZ2lvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzY5
NTlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdp
b24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGJvZHkg
eyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDUw
cHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2JveCB7
IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTsgaGVpZ2h0OiA1MHB4OyBtYXJnaW4tdG9wOiA0MHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlfQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZy
b206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogMzBweDsgbGVmdDogMjBweDsgdG9wOiAy
NTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAy
NTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKyAgICAjcmVnaW9u
MyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7
IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9
ImJveCI+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwv
ZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBp
ZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlv
bigiW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9y
IGVtcHR5IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMCk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIndyYXBwZXIiLCAwLCAi
d3JhcHBlciIsIDFdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKK2Z1
bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7Cit9CisKKyAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZDQwMmIwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQyIEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2Vz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0VtcHR5IHJlZ2lv
bnMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMAorUEFT
UyByYW5nZTMubGVuZ3RoIGlzIDAKK0Zsb3cgYXJ0aWNsZQorUEFTUyByYW5nZTEubGVuZ3RoIGlz
IDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAs
Ym94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gx
LDFdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwxXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW2JveDEsMSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDEsd3JhcHBl
ciwxXQorQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVhdGVzIGFub255bW91cyBibG9jaykK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBp
cyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMl0KK1BB
U1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsd3JhcHBlciwxXSBpcyBl
cXVhbCB0byBbYm94MSwyLHdyYXBwZXIsMV0KK0luY3JlYXNlIGZvbnQgc2l6ZQorUEFTUyByYW5n
ZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRv
IFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkg
W2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdl
My5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRv
IFsjdGV4dCw1LHdyYXBwZXIsMV0KK01ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdp
bGwgbW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDIK
K1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDBdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94
MSwwXQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3Rl
eHQsNF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LGJveDEs
Ml0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW2JveDEsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFtib3gxLDAsYm94MSwxXQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZp
eGVkLXBvcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg3ZWFlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNyBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9u
Rmxvd1JhbmdlcyBmb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cworUEFTUyByYW5nZTEubGVu
Z3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3
cmFwcGVyLDAsd3JhcHBlciwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYjM3YTg1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy5odG1sCkBA
IC0wLDAgKzEsMzMgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIC5ib3JkZXIg
eyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94MSB7IC13ZWJraXQtZmxvdy1pbnRv
OiBmbG93OyBwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuOyB0b3A6IDI1cHg7IGxlZnQ6IDI1cHg7IH0KKyAgICAjcmVnaW9u
MSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7
IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogNTBweDsgfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8
ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3gxIj48L2Rpdj48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCisgICAgZGVidWcoIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246Omdl
dFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMiKTsKKyAgICB2
YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgcmFu
Z2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZh
bHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VB
dChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAid3JhcHBlciIsIDFdKTsKKworZnVuY3Rpb24g
aGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKyAgICBoaWRlUmVnaW9uc0Fu
ZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LWhvcml6LWJ0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44MWRhOGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIg
QEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9y
IGhvcml6b250YWwtYnQgbW9kZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQg
bm9kZS4KK0VtcHR5IHJlZ2lvbnMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMAorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDAKK0Zsb3cgYXJ0aWNsZQorUEFT
UyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVx
dWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1Mg
QXJyYXkgW2JveDEsMSxib3gxLDFdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwxXQorUEFTUyBy
YW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSx3cmFwcGVyLDFdIGlzIGVxdWFs
IHRvIFtib3gxLDEsd3JhcHBlciwxXQorQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVhdGVz
IGFub255bW91cyBibG9jaykKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3
cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFu
Z2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBb
Ym94MSwxLGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gx
LDIsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwyLHdyYXBwZXIsMV0KK0luY3JlYXNlIGZv
bnQgc2l6ZQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxi
b3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0
ZXh0LDRdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFw
cGVyLDFdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LHdyYXBwZXIsMV0KK01ha2UgY2hpbGQgYSBjb250
ZW50IG5vZGUsIHNvIGl0IHdpbGwgbW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMworUEFTUyBy
YW5nZTEubGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDBdIGlzIGVxdWFs
IHRvIFt3cmFwcGVyLDAsYm94MSwwXQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVx
dWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFsjdGV4dCw1LGJveDEsMl0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsYm94MSwyXQorUEFTUyBy
YW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMCxib3gxLDFdIGlzIGVxdWFsIHRv
IFtib3gxLDAsYm94MSwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmI3OThjMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sCkBAIC0wLDAg
KzEsMTA3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxz
dHlsZT4KKyAgICBodG1sIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7IH0K
KyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9u
dC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQor
ICAgICNhcnRpY2xlIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyBoZWlnaHQ6IDEzNXB4
OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94MSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3Jl
ZW47IGhlaWdodDogMTEwcHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3Vu
ZC1jb2xvcjogb3JhbmdlOyBoZWlnaHQ6IDEwcHg7IHBhZGRpbmc6IDVweDt9CisgICAgI3JlZ2lv
bjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4
OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDog
MzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDog
MjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzNTBweDt9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBp
ZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94
MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJi
b3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4K
KyAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBk
ZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgaG9yaXpvbnRhbC1idCBtb2RlIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb24zIik7CisKKyAgICBkZWJ1ZygiRW1wdHkgcmVnaW9ucyIpOwor
ICAgIHZhciByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMiA9
IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMi5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDApOworCisgICAgZGVidWcoIkZsb3cgYXJ0aWNsZSIpOworICAgIHZhciBhcnRpY2xlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFydGljbGUiKTsKKyAgICBhcnRpY2xlLnN0eWxlLndl
YmtpdEZsb3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxv
d1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAg
ICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEi
LCAxXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAxLCAid3JhcHBlciIsIDFdKTsK
KworICAgIGRlYnVnKCJBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3Vz
IGJsb2NrKSIpOworICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJU
ZXh0IG5vZGUuIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5hcHBlbmRD
aGlsZCh0ZXh0Tm9kZSk7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94
MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0pOwor
ICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdl
dFJhbmdlQXQocmFuZ2UzLCAwKSwgIFsiYm94MSIsIDIsICJ3cmFwcGVyIiwgMV0pOworCisgICAg
ZGVidWcoIkluY3JlYXNlIGZvbnQgc2l6ZSIpOworICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIndyYXBwZXIiKTsKKyAgICB3cmFwcGVyLnN0eWxlLmZvbnRTaXplID0g
IjQwcHgiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7
CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFu
Z2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZh
bHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VB
dChyYW5nZTMsIDApLCBbIiN0ZXh0IiwgNSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1Zygi
TWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0
byByZWdpb24zIik7CisgICAgdmFyIGJveDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94
MicpOworICAgIGJveDIuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAwXSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICBy
YW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRF
dmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5n
ZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSBy
ZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MywgMCksIFsiYm94MSIsIDAsICJib3gxIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0Fu
ZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAg
aGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1p
bmxpbmUtb25seS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYWNhMzRjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpn
ZXRSZWdpb25GbG93UmFuZ2VzIGZvciBpbmxpbmUgZWxlbWVudHMKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLHdyYXBwZXIs
MV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNhNDZjNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGlu
ZS1vbmx5Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBl
ci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3Bh
Y2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMjBweDsgfQorICAgIC5ib3JkZXIgeyBi
b3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjaW5saW5lT25seSB7IC13ZWJraXQtZmxvdy1p
bnRvOiBmbG93MTsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyBoZWlnaHQ6IDEzNXB4OyBw
YWRkaW5nOiAxMHB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsg
d2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAg
ICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdo
dDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+
PHNwYW4gaWQ9ImlubGluZU9ubHkiPjwvc3Bhbj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIg
Y2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIi
PjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBUZXN0IGZvciBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGlubGluZSBlbGVtZW50cyIpOworICAgIHZh
ciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIg
cmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisKKworICAgIGRl
YnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3
cmFwcGVyIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAwKTsKKworZnVu
Y3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30K
KworICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi45YzA1OTNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcy4gVGV4dCBicmVha3MgaW4gdHdvIHJlZ2lvbnMKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4
dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBl
ciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRl
eHQtdmVydC1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZWYxM2I4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtdmVydC1sci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jhbmdl
cyBpbiB2ZXJ0aWNhbC1ybCBtb2RlLiBUZXh0IGJyZWFrcyBpbnRvIHR3byByZWdpb25zCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRmxvdyB0ZXN0CitQQVNTIHJh
bmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLCN0ZXh0LDRdIGlzIGVxdWFs
IHRvIFt3cmFwcGVyLDAsI3RleHQsNF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRl
eHQtdmVydC1sci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTI1N2FkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtdmVydC1sci5odG1sCkBAIC0wLDAgKzEsNDkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
ICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IH0KKyAgICBib2R5
IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1
MHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gg
eyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93
LWZyb206IGZsb3cxOyB3aWR0aDogNzBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9w
OiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRo
OiA2MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2
IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3giPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRp
diBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdp
b25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgaW4gdmVydGljYWwtcmwg
bW9kZS4gVGV4dCBicmVha3MgaW50byB0d28gcmVnaW9ucyIpOworICAgIHZhciByZWdpb24xID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisKKworICAgIGRlYnVnKCJGbG93IHRl
c3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICIjdGV4dCIsIDRdKTsK
KyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworZnVu
Y3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30K
KworICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNl
ZTcyOWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQt
ZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogNTBweDsgfQor
ICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94IHsgLXdlYmtp
dC1mbG93LWludG86IGZsb3cxO30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBm
bG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7
fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7
IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3Jh
cHBlciI+PGRpdiBpZD0iYm94Ij5UZXh0IG5vZGUuPC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJl
Z2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0i
Ym9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gVGVz
dCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzLiBUZXh0IGJyZWFrcyBpbiB0d28gcmVn
aW9ucyIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24y
Iik7CisKKyAgICBkZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndy
YXBwZXIiLCAwLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRS
ZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIs
IDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0Iiwg
NSwgIndyYXBwZXIiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MzY5NmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQyIEBACitbQ1NTUmVnaW9uc10g
VGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1sciBtb2Rl
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9u
cworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNT
IHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxi
b3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEs
MV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQor
UEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVy
LDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQor
UEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlz
IGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BB
U1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFT
UyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVx
dWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdl
MS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8g
W3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
Ym94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2Uz
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8g
WyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2ls
bCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgor
UEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gx
LDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4
dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwy
XSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQor
UEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVy
dC1sci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdmVydC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNGVm
MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Vi
a2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHI7IH0KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3Vu
ZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNi
b3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDExMHB4OyBwYWRkaW5n
OiAxMHB4O30KKyAgICAjYm94MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lkdGg6IDEw
cHg7IHBhZGRpbmc6IDVweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxv
dzE7IHdpZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30K
KyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhl
aWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdl
YmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDog
MjBweDsgdG9wOiAzNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0aWNs
ZSI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+
CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJy
ZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9
ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRl
c3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVydGljYWwtbHIgbW9kZSIp
OworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsK
KyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7Cisg
ICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisg
ICAgZGVidWcoIkVtcHR5IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDApOworICAgIHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7CisgICAg
dmFyIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJGbG93IGFy
dGljbGUiKTsKKyAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRp
Y2xlIik7CisgICAgYXJ0aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIg
PSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJh
bmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
My5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwg
WyJib3gxIiwgMSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQgbm9kZSB0
byByZWdpb24yIChjcmVhdGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4dE5vZGUg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJib3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9u
Mi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDAp
LCBbImJveDEiLCAxLCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBbImJveDEi
LCAyLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNpemUiKTsK
KyAgICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVyIik7Cisg
ICAgd3JhcHBlci5zdHlsZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSByZWdpb24x
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCks
IFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gx
IiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIsIDUsICJ3
cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNv
IGl0IHdpbGwgbW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBib3gyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndlYmtpdEZs
b3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJi
b3gxIiwgMF0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJv
eDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEp
OworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwg
ImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94MSIsIDFd
KTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKK30KKworICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTJjOGEyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdmVydC1ybC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorW0NTU1JlZ2lvbnNdIFRl
c3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVydGljYWwtcmwgbW9kZQor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0VtcHR5IHJlZ2lvbnMK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMAorUEFTUyBy
YW5nZTMubGVuZ3RoIGlzIDAKK0Zsb3cgYXJ0aWNsZQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94
MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDFd
IGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwxXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BB
U1MgQXJyYXkgW2JveDEsMSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDEsd3JhcHBlciwx
XQorQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVhdGVzIGFub255bW91cyBibG9jaykKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBl
cXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNT
IEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMl0KK1BBU1Mg
cmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsd3JhcHBlciwxXSBpcyBlcXVh
bCB0byBbYm94MSwyLHdyYXBwZXIsMV0KK0luY3JlYXNlIGZvbnQgc2l6ZQorUEFTUyByYW5nZTEu
bGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3
cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2Jv
eDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMy5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFsj
dGV4dCw1LHdyYXBwZXIsMV0KK01ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdpbGwg
bW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDIKK1BB
U1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDBdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSww
XQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQs
NF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LGJveDEsMl0g
aXMgZXF1YWwgdG8gWyN0ZXh0LDUsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BB
U1MgQXJyYXkgW2JveDEsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFtib3gxLDAsYm94MSwxXQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQt
cmwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXZlcnQtcmwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDExNTRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtdmVydC1ybC5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBodG1sIHsgLXdlYmtp
dC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOyB9CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBt
b25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMzBweDsgfQorICAgIC5ib3Jk
ZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYXJ0aWNsZSB7IGJhY2tncm91bmQt
Y29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDEzNXB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94
MSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IHdpZHRoOiAxMTBweDsgcGFkZGluZzog
MTBweDt9CisgICAgI2JveDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7IHdpZHRoOiAxMHB4
OyBwYWRkaW5nOiA1cHg7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cx
OyB3aWR0aDogNzBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9Cisg
ICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWln
aHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKyAgICAjcmVnaW9uMyB7IC13ZWJr
aXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIw
cHg7IHRvcDogMzUwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImFydGljbGUi
PjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDIiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pgor
ICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVn
aW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjMiIGNsYXNzPSJi
b3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBUZXN0
IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRpY2FsLXJsIG1vZGUiKTsK
KyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7Cisg
ICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAg
IHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKworICAg
IGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5n
dGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworICAgIHZh
ciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKKyAgICBkZWJ1ZygiRmxvdyBhcnRp
Y2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJ0aWNs
ZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJh
bmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0g
cmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsi
Ym94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkFkZCB0ZXh0IG5vZGUgdG8g
cmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7CisgICAgdmFyIHRleHROb2RlID0g
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAgICByYW5nZTEgPSBy
ZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
Mi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwg
WyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRS
ZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIs
IDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCAgWyJib3gxIiwg
MiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5jcmVhc2UgZm9udCBzaXplIik7Cisg
ICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3JhcHBlciIpOworICAg
IHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Ux
Lmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBb
IndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIs
IDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiI3RleHQiLCA1LCAid3Jh
cHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBp
dCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAgICB2YXIgYm94MiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAgYm94Mi5zdHlsZS53ZWJraXRGbG93
SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94
MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gx
IiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJi
b3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMCwgImJveDEiLCAxXSk7
CisKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKK30KKworaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43ZjUyODVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMuaHRtbApAQCAtMCwwICsxLDEwNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZv
bnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMzBweDsg
fQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYXJ0aWNsZSB7
IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgaGVpZ2h0OiAxMzVweDsgcGFkZGluZzogMTBw
eDt9CisgICAgI2JveDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOyBoZWlnaHQ6IDEx
MHB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5n
ZTsgaGVpZ2h0OiAxMHB4OyBwYWRkaW5nOiA1cHg7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1m
bG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsg
dG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdp
ZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKyAgICAj
cmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6
IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzUwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxk
aXYgaWQ9ImFydGljbGUiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDIiPjwvZGl2PjwvZGl2
PjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4K
KyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJl
Z2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltD
U1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMuIik7CisgICAg
dmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZh
ciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICB2YXIg
cmVnaW9uMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIik7CisKKyAgICBkZWJ1
ZygiRW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
MCk7CisgICAgdmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFu
Z2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZh
bHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVidWcoIkZsb3cgYXJ0aWNsZSIp
OworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFydGljbGUiKTsK
KyAgICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEg
PSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJh
bmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lv
bjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAw
KSwgWyJib3gxIiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEi
LCAxLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQgdGV4dCBub2RlIHRvIHJlZ2lv
bjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImJveDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CisgICAgcmFuZ2UxID0gcmVnaW9u
MS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDAp
LCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94
MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgIFsiYm94MSIsIDIsICJ3
cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZvbnQgc2l6ZSIpOworICAgIHZh
ciB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndyYXBwZXIiKTsKKyAgICB3cmFw
cGVyLnN0eWxlLmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFw
cGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEp
OworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAi
I3RleHQiLCA0XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0ZXh0IiwgNSwgIndyYXBwZXIi
LCAxXSk7CisKKyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2ls
bCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAgdmFyIGJveDIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5bGUud2Via2l0Rmxvd0ludG8g
PSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAw
XSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MSIsIDEs
ICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAiYm94MSIs
IDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAsICJib3gxIiwgMV0pOworCitm
dW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVz
b3VyY2VzL2hlbHBlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVs
cGVyLmpzCmluZGV4IDlmZWIxYTEuLjFmOGUyYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVscGVyLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9yZXNvdXJjZXMvaGVscGVyLmpzCkBAIC0xNjAsMyArMTYwLDM5IEBAIGZ1bmN0aW9uIGFz
c2VydChleHByZXNzaW9uLCBmYWlsTWVzc2FnZSkKIHsKICAgICBleHByZXNzaW9uID8gbG9nUGFz
c01lc3NhZ2UoIiIpIDogbG9nRmFpbE1lc3NhZ2UoZmFpbE1lc3NhZ2UpOwogfQorCisvLyB1c2Vk
IGJ5IGdldFJlZ2lvbkZsb3dSYW5nZXMgdGVzdHMKK2Z1bmN0aW9uIGdldE5hbWUobm9kZSkgewor
ICBpZiAoIW5vZGUpIHJldHVybiAidW5kZWZpbmVkIjsKKyAgaWYgKG5vZGUubm9kZVR5cGUgPT0g
MykgLy8gVGV4dCBub2RlCisgICAgcmV0dXJuICIjdGV4dCI7CisgIC8vIGFsbCB0aGUgb3RoZXJz
IHNob3VsZCBoYXZlIGFuIGlkCisgIHJldHVybiBub2RlLmlkOworfQorCitmdW5jdGlvbiBnZXRS
YW5nZUF0KGFyclJhbmdlLCBpbmRleCkgeworICBpZiAoaW5kZXggPCBhcnJSYW5nZS5sZW5ndGgp
CisgICAgcmV0dXJuIFtnZXROYW1lKGFyclJhbmdlW2luZGV4XS5zdGFydENvbnRhaW5lciksIGFy
clJhbmdlW2luZGV4XS5zdGFydE9mZnNldCwgZ2V0TmFtZShhcnJSYW5nZVtpbmRleF0uZW5kQ29u
dGFpbmVyKSwgYXJyUmFuZ2VbaW5kZXhdLmVuZE9mZnNldF07CisgIHJldHVybiBudWxsOworfQor
CitmdW5jdGlvbiBjb21wYXJlQXJyYXlzKGN1cnJlbnQsIGV4cGVjdGVkKSB7CisgICAgdHJ5IHsK
KyAgICAgICAgaWYgKGN1cnJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgi
TnVsbCBvYmplY3QuIEV4cGVjdGVkIFsiICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdIHdhcyBu
dWxsIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJl
bnQubGVuZ3RoICE9PSBleHBlY3RlZC5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
IkFycmF5IGxlbmd0aCBkaWZmZXJzLiBFeHBlY3RlZCBbIiArIGV4cGVjdGVkLnRvU3RyaW5nKCkg
KyAiXSB3YXMgWyIgKyBjdXJyZW50LnRvU3RyaW5nKCkgKyAiXSIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VycmVudC5sZW5n
dGg7IGkrKykKKyAgICAgICAgICAgIGlmIChjdXJyZW50W2ldICE9PSBleHBlY3RlZFtpXSkgewor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkV4cGVjdGVkIFsiICArIGV4cGVjdGVkLnRvU3Ry
aW5nKCkgKyAiXS4gV2FzIFsiICsgY3VycmVudC50b1N0cmluZygpICsgIl0iKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAg
ICAgdGVzdEZhaWxlZChjdXJyZW50ICsgIiB0aHJldyBleGNlcHRpb24gIiArIGV4KTsKKyAgICB9
CisgICAgdGVzdFBhc3NlZCgiQXJyYXkgWyIgICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdIGlz
IGVxdWFsIHRvIFsiICsgY3VycmVudC50b1N0cmluZygpICsgIl0iKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjNzkzNzE0Li4wM2VkNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDgt
MzAgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGdldFJl
Z2lvbkZsb3dSYW5nZXMgZnVuY3Rpb24gZnJvbSB0aGUgQ1NTIFJlZ2lvbnMgc3BlYy4gSXQgaXMg
aW1wbGVtZW50ZWQgYnkgaXRlcmF0aW5nIG92ZXIgCisgICAgICAgIHRoZSBjb250ZW50IG5vZGVz
IGFuZCBmaWd1cmluZyBvdXQgd2hpY2ggbm9kZXMgaGF2ZSBib3VuZGluZ0JveCBpbnRlcnNlY3Rp
bmcgdGhlIHJlZ2lvbiBib3ggYW5kIGZpZ3VyaW5nIG91dAorICAgICAgICB0aGUgc3RhcnQgYW5k
IGVuZCBwb3NpdGlvbnMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0
eS1yZWdpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWZpeGVkLXBvcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4
dC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy12ZXJ0LWxyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLXZlcnQtcmwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMuaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmlkbDogYWRkZWQgdGhlIHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMgbWV0aG9kCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTogYWRkZWQgYSBzbG93
IHBhdGggdG8gZmluZCB0aGUgbG9naWNhbFRvcE9mRmlyc3RQYWdlIHdpdGhvdXQgTGF5b3V0U3Rh
dGUKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0NvbnRhaW5lZEluTm9kZXMpOiAKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6bG9naWNhbFRvcEZvckJveCk6IGdldCBsb2dpY2FsVG9wIGRlcGVuZGluZyBvbiB0aGUgd3Jp
dGUgbW9kZQorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbEJvdHRvbUZvckJveCk6IGdldCBsb2dp
Y2FsQm90dG9tIGRlcGVuZGluZyBvbiB0aGUgd3JpdGUgbW9kZQorICAgICAgICAoV2ViQ29yZTo6
Ym94SW50ZXJzZWN0c1JlZ2lvbik6IGRldGVjdHMgaWYgYSBib3ggaW50ZXJzZWN0cyBhIHJlZ2lv
bgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMpOiBy
ZXR1cm5zIGEgdmVjdG9yIG9mIFJhbmdlcyB0aGF0IGNvbnRhaW5zIE5vZGUgdGhhdCBhcmUgcGFy
dCBvZiBhIHJlZ2lvbiAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
Lmg6CisgICAgICAgIChSZW5kZXJOYW1lZEZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpnZXRS
YW5nZXMpOiBwcm94eSB0aGUgZ2V0UmFuZ2VzIGNhbGwgdG8gaXRzIG5hbWVkIGZsb3cgdGhyZWFk
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6
CisgICAgICAgIChSZW5kZXJSZWdpb24pOgorCiAyMDEyLTA4LTI5ICBEaXJrIFNjaHVsemUgIDxr
cml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVmYWN0b3IgV3JhcFNoYXBlIHRvIFNoYXBlL0Jh
c2ljU2hhcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2N2Q0MWM4Li45OGUwMjVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMDM4LDYgKzIwMzgsMjAgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0KCkgY29uc3QKICAgICByZXR1cm4gdW5k
ZWZpbmVkU3RhdGU7CiB9CiAKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4gRWxlbWVudDo6d2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdl
PiA+IHJhbmdlT2JqZWN0czsKKyAgICBpZiAoZG9jdW1lbnQoKS0+Y3NzUmVnaW9uc0VuYWJsZWQo
KSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyUmVnaW9uKCkpIHsKKyAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSB0b1JlbmRlclJlZ2lvbihyZW5kZXJlcigpKTsKKyAg
ICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcmVnaW9uLT5nZXRSYW5n
ZXMocmFuZ2VPYmplY3RzKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmFuZ2VPYmplY3RzOworfQor
CiAjaWZuZGVmIE5ERUJVRwogYm9vbCBFbGVtZW50OjpmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggNTY5NjRmMy4uN2UxZjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00MjYsNiArNDI2LDcg
QEAgcHVibGljOgogCiAgICAgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24oKSBjb25zdDsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHdlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdDsKKyAgICBW
ZWN0b3I8UmVmUHRyPFJhbmdlPiA+IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKSBjb25zdDsK
IAogICAgIGJvb2wgaGFzSUQoKSBjb25zdDsKICAgICBib29sIGhhc0NsYXNzKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwKaW5kZXggZmI2MGM3My4uNTFjMGY5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbApAQCAtMTQ0LDYgKzE0NCw3IEBAIG1vZHVsZSBjb3JlIHsKIAogICAgICAgICAvLyBD
U1MgUmVnaW9ucyBBUEkKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB3ZWJr
aXRSZWdpb25PdmVyc2V0OworICAgICAgICBzZXF1ZW5jZTxSYW5nZT4gd2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOwogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFM
QU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1
dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBhNmE5ZjJl
Li5kYjc3YWQyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTcxNzIsMjAgKzcxNzIsMjggQEAgYm9vbCBSZW5kZXJCbG9jazo6bGluZVdpZHRoRm9yUGFnaW5h
dGVkTGluZUNoYW5nZWQoUm9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3UKIAogTGF5b3V0VW5p
dCBSZW5kZXJCbG9jazo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0CiB7
Ci0gICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gd29yayB3aXRob3V0IGxheW91
dCBzdGF0ZS4gSXQncyBmaW5lIHRvIHVzZSB0aGUgbGF5b3V0IHN0YXRlIGFzIGEgY2FjaGUKLSAg
ICAvLyBmb3Igc3BlZWQsIGJ1dCB3ZSBuZWVkIGEgc2xvdyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdp
bGwgd2FsayB1cCB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbiBhbmQgZmlndXJlCi0gICAgLy8g
b3V0IG91ciBvZmZzZXQgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlLgogICAgIExheW91dFN0YXRl
KiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3RhdGUoKTsKLSAgICBpZiAoIWxheW91dFN0
YXRlIHx8ICFsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICAvLyBGSVhNRTogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHJlbmRlcmVyIGluIHRoZSBsYXlv
dXQgc3RhdGUgaXMgb3Vycywgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb21wdXRhdGlvbiB3aWxsIGJl
IG9mZi4KLSAgICAvLyBSaWdodCBub3cgdGhpcyBhc3NlcnQgZ2V0cyBoaXQgaW5zaWRlIGNvbXB1
dGVMb2dpY2FsSGVpZ2h0IGZvciBwZXJjZW50YWdlIG1hcmdpbnMsIHNpbmNlIHRoZXkncmUgY29t
cHV0ZWQgdXNpbmcKLSAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFjaCByZWdpb24u
IFVudGlsIHdlIHBhdGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQuCi0gICAgLy8g
QVNTRVJUKGxheW91dFN0YXRlLT5tX3JlbmRlcmVyID09IHRoaXMpOwotCi0gICAgTGF5b3V0U2l6
ZSBvZmZzZXREZWx0YSA9IGxheW91dFN0YXRlLT5tX2xheW91dE9mZnNldCAtIGxheW91dFN0YXRl
LT5tX3BhZ2VPZmZzZXQ7Ci0gICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBv
ZmZzZXREZWx0YS5oZWlnaHQoKSA6IG9mZnNldERlbHRhLndpZHRoKCk7CisgICAgaWYgKGxheW91
dFN0YXRlICYmICFsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSkKKyAgICAgICAgcmV0dXJuIFpF
Uk9fTEFZT1VUX1VOSVQ7CisgICAgaWYgKGxheW91dFN0YXRlKSB7CisgICAgICAgIC8vIEZJWE1F
OiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIgaW4gdGhlIGxheW91dCBzdGF0ZSBpcyBv
dXJzLCBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0aW9uIHdpbGwgYmUgb2ZmLgorICAgICAg
ICAvLyBSaWdodCBub3cgdGhpcyBhc3NlcnQgZ2V0cyBoaXQgaW5zaWRlIGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0IGZvciBwZXJjZW50YWdlIG1hcmdpbnMsIHNpbmNlIHRoZXkncmUgY29tcHV0ZWQgdXNp
bmcKKyAgICAgICAgLy8gd2lkdGhzIHdoaWNoIGNhbiB2YXJ5IGluIGVhY2ggcmVnaW9uLiBVbnRp
bCB3ZSBwYXRjaCB0aGF0LCB3ZSBjYW4ndCBoYXZlIHRoaXMgYXNzZXJ0LgorICAgICAgICAvLyBB
U1NFUlQobGF5b3V0U3RhdGUtPm1fcmVuZGVyZXIgPT0gdGhpcyk7CisKKyAgICAgICAgTGF5b3V0
U2l6ZSBvZmZzZXREZWx0YSA9IGxheW91dFN0YXRlLT5tX2xheW91dE9mZnNldCAtIGxheW91dFN0
YXRlLT5tX3BhZ2VPZmZzZXQ7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gb2Zmc2V0RGVsdGEuaGVpZ2h0KCkgOiBvZmZzZXREZWx0YS53aWR0aCgpOworICAgIH0K
KyAgICAvLyBzbG93ZXIgcGF0aCB3aXRob3V0IGxheW91dCBzdGF0ZQorICAgIExheW91dFVuaXQg
b2Zmc2V0VG9wOworICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjdXJyQmxvY2sgPSB0aGlzOworICAg
IGJvb2wgaXNQYWdpbmF0ZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAoY3VyckJsb2NrICYmICFjdXJy
QmxvY2stPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIG9mZnNldFRvcCArPSBjdXJy
QmxvY2stPmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgY3VyckJsb2NrID0gY3VyckJsb2NrLT5jb250
YWluaW5nQmxvY2soKTsKKyAgICAgICAgaXNQYWdpbmF0ZWQgPSBjdXJyQmxvY2sgJiYgY3VyckJs
b2NrLT5pc1JlbmRlckZsb3dUaHJlYWQoKTsKKyAgICB9OworICAgIHJldHVybiBpc1BhZ2luYXRl
ZCA/IG9mZnNldFRvcCA6IFpFUk9fTEFZT1VUX1VOSVQ7CiB9CiAKIFJlbmRlclJlZ2lvbiogUmVu
ZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCBibG9ja09mZnNldCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRl
eCBmZDMxYTBmLi4wMWRiMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCkBAIC03ODksNSArNzg5LDQgQEAgQ3VycmVudFJlbmRlckZsb3dUaHJl
YWRNYWludGFpbmVyOjp+Q3VycmVudFJlbmRlckZsb3dUaHJlYWRNYWludGFpbmVyKCkKICAgICB2
aWV3LT5mbG93VGhyZWFkQ29udHJvbGxlcigpLT5zZXRDdXJyZW50UmVuZGVyRmxvd1RocmVhZCgw
KTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IDJhOTEwMmUuLjk4NTcy
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuY3BwCkBAIC0yNyw4ICsyNywxMyBAQAogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oIgogCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJ
bmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiUG9zaXRpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJJ
bmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRl
ICJXZWJLaXROYW1lZEZsb3cuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzM5LDQgKzM0
NCwxODMgQEAgYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmlzTWFya2VkRm9yRGVzdHJ1Y3Rp
b24oKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0
TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsOwogfQogCitzdGF0aWMgYm9vbCBpc0NvbnRhaW5lZElu
Tm9kZXMoVmVjdG9yPE5vZGUqPiBvdGhlcnMsIE5vZGUqIG5vZGUpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvdGhlcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgTm9kZSogb3RoZXIg
PSBvdGhlcnMuYXQoaSk7CisgICAgICAgIGlmIChvdGhlci0+Y29udGFpbnMobm9kZSkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0
aWMgaW5saW5lIExheW91dFVuaXQgbG9naWNhbFRvcEZvckJveChib29sIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlLCBMYXlvdXRSZWN0IHJlY3QpCit7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlID8gcmVjdC55KCkgOiByZWN0LngoKTsKK30KKworc3RhdGljIGlubGluZSBMYXlv
dXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JCb3goYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZSwg
TGF5b3V0UmVjdCByZWN0KQoreworICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/
IHJlY3QubWF4WSgpIDogcmVjdC5tYXhYKCk7Cit9CisKK3N0YXRpYyBib29sIGJveEludGVyc2Vj
dHNSZWdpb24oTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yQm94LCBMYXlvdXRVbml0IGxvZ2ljYWxC
b3R0b21Gb3JCb3gsIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJlZ2lvbiwgTGF5b3V0VW5pdCBs
b2dpY2FsQm90dG9tRm9yUmVnaW9uKQoreworICAgIGJvb2wgcmVnaW9uSXNFbXB0eSA9IGxvZ2lj
YWxCb3R0b21Gb3JSZWdpb24gIT0gTUFYX0xBWU9VVF9VTklUICYmIGxvZ2ljYWxUb3BGb3JSZWdp
b24gIT0gTUlOX0xBWU9VVF9VTklUCisgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGxvZ2lj
YWxCb3R0b21Gb3JSZWdpb24gLSBsb2dpY2FsVG9wRm9yUmVnaW9uKSA8PSAwOworICAgIHJldHVy
biAgKGxvZ2ljYWxCb3R0b21Gb3JCb3ggLSBsb2dpY2FsVG9wRm9yQm94KSA+IDAKKyAgICAgICAg
ICAgICYmICFyZWdpb25Jc0VtcHR5CisgICAgICAgICAgICAmJiBsb2dpY2FsVG9wRm9yQm94IDwg
bG9naWNhbEJvdHRvbUZvclJlZ2lvbiAmJiBsb2dpY2FsVG9wRm9yUmVnaW9uIDwgbG9naWNhbEJv
dHRvbUZvckJveDsKK30KKwordm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyhW
ZWN0b3I8UmVmUHRyPFJhbmdlPiA+JiByYW5nZU9iamVjdHMsIGNvbnN0IFJlbmRlclJlZ2lvbiog
cmVnaW9uKSBjb25zdAoreworICAgIExheW91dFJlY3QgcmVnaW9uUmVjdChyZWdpb24tPmZsb3dU
aHJlYWRQb3J0aW9uUmVjdCgpKTsKKworICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJlZ2lv
bjsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb247CisKKyAgICAvLyBleHRl
bmQgdGhlIGZpcnN0IHJlZ2lvbiB0b3AgdG8gY29udGFpbiBldmVyeXRoaW5nIHVwIHRvIGl0cyBs
b2dpY2FsIGhlaWdodAorICAgIGlmIChyZWdpb24tPmlzRmlyc3RSZWdpb24oKSkKKyAgICAgICAg
bG9naWNhbFRvcEZvclJlZ2lvbiA9IE1JTl9MQVlPVVRfVU5JVDsKKyAgICBlbHNlCisgICAgICAg
IGxvZ2ljYWxUb3BGb3JSZWdpb24gPSBsb2dpY2FsVG9wRm9yQm94KGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCksIHJlZ2lvblJlY3QpOworCisgICAgLy8gZXh0ZW5kIHRoZSBsYXN0IHJlZ2lvbiB0
byBjb250YWluIGV2ZXJ5dGhpbmcgYWJvdmUgaXRzIHkoKQorICAgIGlmIChyZWdpb24tPmlzTGFz
dFJlZ2lvbigpKQorICAgICAgICBsb2dpY2FsQm90dG9tRm9yUmVnaW9uID0gTUFYX0xBWU9VVF9V
TklUOworICAgIGVsc2UKKyAgICAgICAgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiA9IGxvZ2ljYWxC
b3R0b21Gb3JCb3goaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgcmVnaW9uUmVjdCk7CisKKyAg
ICBWZWN0b3I8Tm9kZSo+IG5vZGVzOworICAgIC8vIGVsaW1pbmF0ZSB0aGUgY29udGVudE5vZGVz
IHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIG90aGVyIGNvbnRlbnROb2RlcworICAgIGZvciAoTmFt
ZWRGbG93Q29udGVudE5vZGVzOjpjb25zdF9pdGVyYXRvciBpdCA9IGNvbnRlbnROb2RlcygpLmJl
Z2luKCk7IGl0ICE9IGNvbnRlbnROb2RlcygpLmVuZCgpOyArK2l0KSB7CisgICAgICAgIE5vZGUq
IG5vZGUgPSAqaXQ7CisgICAgICAgIGlmICghaXNDb250YWluZWRJbk5vZGVzKG5vZGVzLCBub2Rl
KSkKKyAgICAgICAgICAgIG5vZGVzLmFwcGVuZChub2RlKTsKKyAgICB9CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5vZGVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIE5vZGUqIGNvbnRl
bnROb2RlID0gbm9kZXMuYXQoaSk7CisgICAgICAgIGlmICghY29udGVudE5vZGUtPnJlbmRlcmVy
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9y
ZWRFeGNlcHRpb247CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGNvbnRlbnROb2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgYm9vbCBmb3VuZFN0YXJ0UG9zaXRp
b24gPSBmYWxzZTsKKyAgICAgICAgYm9vbCBzdGFydHNBYm92ZVJlZ2lvbiA9IHRydWU7CisgICAg
ICAgIGJvb2wgZW5kc0JlbG93UmVnaW9uID0gdHJ1ZTsKKyAgICAgICAgYm9vbCBza2lwT3Zlck91
dHNpZGVOb2RlcyA9IGZhbHNlOworICAgICAgICBOb2RlKiBsYXN0RW5kTm9kZSA9IDA7CisKKyAg
ICAgICAgZm9yIChOb2RlKiBub2RlID0gY29udGVudE5vZGU7IG5vZGU7IG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHROb2RlKGNvbnRlbnROb2RlKSkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBpZiAoIXJlbmRlcmVy
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBMYXlvdXRSZWN0IGJv
dW5kaW5nQm94OworICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpKQor
ICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94ID0gdG9SZW5kZXJJbmxpbmUocmVuZGVyZXIpLT5s
aW5lc0JvdW5kaW5nQm94KCk7CisgICAgICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUZXh0
KCkpCisgICAgICAgICAgICAgICAgYm91bmRpbmdCb3ggPSB0b1JlbmRlclRleHQocmVuZGVyZXIp
LT5saW5lc0JvdW5kaW5nQm94KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBib3VuZGluZ0JveCA9ICB0b1JlbmRlckJveChyZW5kZXJlciktPmZyYW1lUmVjdCgpOworICAg
ICAgICAgICAgICAgIGlmICh0b1JlbmRlckJveChyZW5kZXJlciktPmlzUmVsUG9zaXRpb25lZCgp
KQorICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveC5tb3ZlKHRvUmVuZGVyQm94KHJlbmRl
cmVyKS0+cmVsYXRpdmVQb3NpdGlvbkxvZ2ljYWxPZmZzZXQoKSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIExheW91dFVuaXQgb2Zmc2V0VG9wID0gcmVuZGVyZXItPmNvbnRhaW5pbmdC
bG9jaygpLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCk7CisgICAgICAgICAgICBj
b25zdCBMYXlvdXRQb2ludCBsb2dpY2FsT2Zmc2V0RnJvbVRvcChpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gWkVST19MQVlPVVRfVU5JVCA6ICBvZmZzZXRUb3AsCisgICAgICAgICAgICAgICAg
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNldFRvcCA6IFpFUk9fTEFZT1VUX1VOSVQp
OworCisgICAgICAgICAgICBib3VuZGluZ0JveC5tb3ZlQnkobG9naWNhbE9mZnNldEZyb21Ub3Ap
OworCisgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JSZW5kZXJlciA9IGxvZ2lj
YWxUb3BGb3JCb3goaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgYm91bmRpbmdCb3gpOworICAg
ICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIgPSBsb2dpY2FsQm90
dG9tRm9yQm94KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCksIGJvdW5kaW5nQm94KTsKKworICAg
ICAgICAgICAgLy8gaWYgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGRv
ZXNuJ3QgaW50ZXJzZWN0IHRoZSByZWdpb24gYm94CisgICAgICAgICAgICAvLyBjbG9zZSB0aGUg
Y3VycmVudCByYW5nZSBvbmx5IGlmIHRoZSBzdGFydCBlbGVtZW50IGJlZ2FuIGluc2lkZSB0aGUg
cmVnaW9uLAorICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGp1c3QgbW92ZSB0aGUgc3RhcnQgcG9z
aXRpb24gYWZ0ZXIgdGhpcyBub2RlIGFuZCBrZWVwIHNraXBwaW5nIHRoZW0gdW50aWwgd2UgZm91
bmQgYSBwcm9wZXIgc3RhcnQgcG9zaXRpb24uCisgICAgICAgICAgICBpZiAoIWJveEludGVyc2Vj
dHNSZWdpb24obG9naWNhbFRvcEZvclJlbmRlcmVyLCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIs
IGxvZ2ljYWxUb3BGb3JSZWdpb24sIGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24pKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGZvdW5kU3RhcnRQb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoIXN0YXJ0c0Fib3ZlUmVnaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFu
Z2UtPmludGVyc2VjdHNOb2RlKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24pKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRFbmRCZWZvcmUobm9kZSwgaWdub3JlZEV4Y2VwdGlv
bik7CisgICAgICAgICAgICAgICAgICAgICAgICByYW5nZU9iamVjdHMuYXBwZW5kKHJhbmdlLT5j
bG9uZVJhbmdlKGlnbm9yZWRFeGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShjb250ZW50Tm9kZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydHNBYm92ZVJlZ2lvbiA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc2tpcE92ZXJPdXRzaWRlTm9kZXMg
PSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2tpcE92ZXJP
dXRzaWRlTm9kZXMpCisgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydEFmdGVyKG5v
ZGUsIGlnbm9yZWRFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIGZvdW5kU3RhcnRQb3NpdGlv
biA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBzdGFydCBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGxvZ2ljYWxUb3BG
b3JSZW5kZXJlciA8IGxvZ2ljYWxUb3BGb3JSZWdpb24gJiYgc3RhcnRzQWJvdmVSZWdpb24pIHsK
KyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzVGV4dCgpKSB7IC8vIFRleHQgY3Jvc3Nl
cyByZWdpb24gdG9wCisgICAgICAgICAgICAgICAgICAgIC8vIGZvciBUZXh0IGVsZW1lbnRzLCBq
dXN0IGZpbmQgdGhlIGxhc3QgdGV4dGJveCB0aGF0IGlzIGNvbnRhaW5lZCBpbnNpZGUgdGhlIHJl
Z2lvbiBhbmQgdXNlIGl0cyBzdGFydCgpIG9mZnNldCBhcyBzdGFydCBwb3NpdGlvbgorICAgICAg
ICAgICAgICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVu
ZGVyZXIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IHRl
eHRSZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0VG9wICsgYm94LT5sb2dpY2Fs
Qm90dG9tKCkgPCBsb2dpY2FsVG9wRm9yUmVnaW9uKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KFBv
c2l0aW9uKHRvVGV4dChub2RlKSwgYm94LT5zdGFydCgpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydHNBYm92ZVJlZ2lvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAv
LyBub2RlIGNyb3NzZXMgcmVnaW9uIHRvcAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYWxs
IGVsZW1lbnRzLCBleGNlcHQgVGV4dCwganVzdCBzZXQgdGhlIHN0YXJ0IHBvc2l0aW9uIHRvIGJl
IGJlZm9yZSB0aGVpciBjaGlsZHJlbgorICAgICAgICAgICAgICAgICAgICBzdGFydHNBYm92ZVJl
Z2lvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChQb3NpdGlv
bihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVuKSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9kZSBzdGFydHMgaW5zaWRlIHJlZ2lv
bgorICAgICAgICAgICAgICAgIC8vIGZvciBlbGVtZW50cyB0aGF0IHN0YXJ0IGluc2lkZSB0aGUg
cmVnaW9uLCBzZXQgdGhlIHN0YXJ0IHBvc2l0aW9uIHRvIGJlIGJlZm9yZSB0aGVtLiBJZiB3ZSBm
b3VuZCBvbmUsIHdlIHdpbGwganVzdCBza2lwIHRoZSBvdGhlcnMgdW50aWwKKyAgICAgICAgICAg
ICAgICAvLyB0aGUgcmFuZ2UgaXMgY2xvc2VkLgorICAgICAgICAgICAgICAgIGlmIChzdGFydHNB
Ym92ZVJlZ2lvbikgeworICAgICAgICAgICAgICAgICAgICBzdGFydHNBYm92ZVJlZ2lvbiA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnRCZWZvcmUobm9kZSwgaWdu
b3JlZEV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgc2tpcE92ZXJPdXRzaWRlTm9kZXMgID0gZmFsc2U7CisgICAgICAgICAgICBmb3VuZFN0
YXJ0UG9zaXRpb24gPSB0cnVlOworCisgICAgICAgICAgICAvLyBlbmQgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChsb2dpY2FsQm90dG9tRm9yUmVnaW9uIDwgbG9naWNhbEJvdHRvbUZvclJlbmRl
cmVyICYmIChlbmRzQmVsb3dSZWdpb24gfHwgKCFlbmRzQmVsb3dSZWdpb24gJiYgIW5vZGUtPmlz
RGVzY2VuZGFudE9mKGxhc3RFbmROb2RlKSkpKSB7CisgICAgICAgICAgICAgICAgLy8gZm9yIFRl
eHQgZWxlbWVudHMsIGp1c3QgZmluZCBqdXN0IGZpbmQgdGhlIGxhc3QgdGV4dGJveCB0aGF0IGlz
IGNvbnRhaW5lZCBpbnNpZGUgdGhlIHJlZ2lvbiBhbmQgdXNlIGl0cyBzdGFydCgpK2xlbigpIG9m
ZnNldCBhcyBlbmQgcG9zaXRpb24KKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzVGV4
dCgpKSB7IC8vIFRleHQgY3Jvc3NlcyByZWdpb24gYm90dG9tCisgICAgICAgICAgICAgICAgICAg
IFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcik7CisgICAg
ICAgICAgICAgICAgICAgIElubGluZVRleHRCb3gqIGxhc3RCb3g7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3go
KTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgob2Zmc2V0VG9wICsgYm94LT5sb2dpY2FsVG9wKCkpIDwgbG9naWNhbEJvdHRvbUZv
clJlZ2lvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCb3ggPSBib3g7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0RW5kKFBvc2l0aW9uKHRv
VGV4dChub2RlKSwgbGFzdEJveC0+c3RhcnQoKSArIGxhc3RCb3gtPmxlbigpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
bGFzdEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgY3Jv
c3NlcyByZWdpb24gYm90dG9tCisgICAgICAgICAgICAgICAgICAgIC8vIGZvciBhbGwgZWxlbWVu
dHMsIGV4Y2VwdCBUZXh0LCBqdXN0IHNldCB0aGUgc3RhcnQgcG9zaXRpb24gdG8gYmUgYWZ0ZXIg
dGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldEVuZChQb3NpdGlv
bihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW5kc0JlbG93UmVnaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbGFz
dEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7
IC8vIG5vZGUgZW5kcyBpbnNpZGUgcmVnaW9uCisgICAgICAgICAgICAgICAgLy8gZm9yIGVsZW1l
bnRzIHRoYXQgZW5kcyBpbnNpZGUgdGhlIHJlZ2lvbiwgc2V0IHRoZSBlbmQgcG9zaXRpb24gdG8g
YmUgYWZ0ZXIgdGhlbQorICAgICAgICAgICAgICAgIC8vIGFsbG93IHRoaXMgZW5kIHBvc2l0aW9u
IHRvIGJlIGNoYW5nZWQgb25seSBieSBvdGhlciBlbGVtZW50cyB0aGF0IGFyZSBub3QgZGVzY2Vu
ZGFudHMgb2YgdGhlIGN1cnJlbnQgZW5kIG5vZGUKKyAgICAgICAgICAgICAgICBpZiAoZW5kc0Jl
bG93UmVnaW9uIHx8ICghZW5kc0JlbG93UmVnaW9uICYmICFub2RlLT5pc0Rlc2NlbmRhbnRPZihs
YXN0RW5kTm9kZSkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRFbmRBZnRlcihu
b2RlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kc0JlbG93UmVn
aW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGxhc3RFbmROb2RlID0gbm9kZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZv
dW5kU3RhcnRQb3NpdGlvbiB8fCBza2lwT3Zlck91dHNpZGVOb2RlcykKKyAgICAgICAgICAgIHJh
bmdlT2JqZWN0cy5hcHBlbmQocmFuZ2UpOworICAgIH0KK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IDg1YzUyM2IuLjQ1
MTYyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IE5hbWVkRmxvd0Nv
bnRlbnROb2RlcyYgY29udGVudE5vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50Tm9kZXM7
IH0KICAgICBib29sIGhhc0NvbnRlbnROb2RlKE5vZGUqIGNvbnRlbnROb2RlKSBjb25zdCB7IEFT
U0VSVChjb250ZW50Tm9kZSk7IHJldHVybiBtX2NvbnRlbnROb2Rlcy5jb250YWlucyhjb250ZW50
Tm9kZSk7IH0KICAgICBib29sIGlzTWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdDsKKyAgICB2
b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JiwgY29uc3QgUmVuZGVyUmVnaW9u
KikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHNldE1hcmtGb3JEZXN0cnVjdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCBlMjJmMTk5
Li44Mjk2MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKICNp
bmNsdWRlICJSZW5kZXJCb3hSZWdpb25JbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtNDYwLDQgKzQ2MSwxMCBAQCB2
b2lkIFJlbmRlclJlZ2lvbjo6Y2xlYXJPYmplY3RTdHlsZUluUmVnaW9uKGNvbnN0IFJlbmRlck9i
amVjdCogb2JqZWN0KQogICAgICAgICBjbGVhck9iamVjdFN0eWxlSW5SZWdpb24oY2hpbGQpOwog
fQogCit2b2lkIFJlbmRlclJlZ2lvbjo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4m
IHJhbmdlT2JqZWN0cykgY29uc3QKK3sKKyAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG5hbWVk
RmxvdyA9IHZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xsZXIoKS0+ZW5zdXJlUmVuZGVyRmxvd1Ro
cmVhZFdpdGhOYW1lKHN0eWxlKCktPnJlZ2lvblRocmVhZCgpKTsKKyAgICBuYW1lZEZsb3ctPmdl
dFJhbmdlcyhyYW5nZU9iamVjdHMsIHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggYTllZGZjZS4uZjlk
MThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtMTAwLDcg
KzEwMCw5IEBAIHB1YmxpYzoKICAgICAvLyBoZWlnaHQgb2YgYSBzaW5nbGUgY29sdW1uIG9yIHBh
Z2UgaW4gdGhlIHNldC4KICAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxXaWR0aCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0
OwotICAgIAorCisgICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYpIGNv
bnN0OworCiAgICAgLy8gVGhpcyBtZXRob2QgcmVwcmVzZW50cyB0aGUgbG9naWNhbCBoZWlnaHQg
b2YgdGhlIGVudGlyZSBmbG93IHRocmVhZCBwb3J0aW9uIHVzZWQgYnkgdGhlIHJlZ2lvbiBvciBz
ZXQuCiAgICAgLy8gRm9yIFJlbmRlclJlZ2lvbnMgaXQgbWF0Y2hlcyBsb2dpY2FsUGFnaW5hdGlv
bkhlaWdodCgpLCBidXQgZm9yIHNldHMgaXQgaXMgdGhlIGhlaWdodCBvZiBhbGwgdGhlIHBhZ2Vz
CiAgICAgLy8gb3IgY29sdW1ucyBhZGRlZCB0b2dldGhlci4K
</data>
<flag name="review"
          id="172322"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="172323"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162493</attachid>
            <date>2012-09-06 06:34:46 -0700</date>
            <delta_ts>2012-09-06 06:43:51 -0700</delta_ts>
            <desc>Address reviewer comments</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>91370</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZjNjZDVmLi5kODBhOWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDkt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJl
Z2lvbkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250
ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQt
bHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGlu
Zy1tb2Rlcy1ybC1yYi1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3Jp
dGluZy1tb2Rlcy10Yi1ybC1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvcmVzb3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0
UmFuZ2VBdCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOS0wNiAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGhyZWUgWFNMVFByb2Nlc3Nv
ciBmdW5jdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSBbQ3VzdG9tXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uY2U4Y2FhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw3IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93
UmFuZ2VzIGZvciBhYnNvbHV0ZSBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dy
YXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDc0MTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9z
Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
LmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1m
bG93LWludG86IGZsb3c7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDog
NTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQor
ICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVp
Z2h0OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2Pgor
ICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9y
IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVt
ZW50cyIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0p
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisg
ICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYTY3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5v
ZGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50
IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyB3aXRoIG11bHRpcGxlIGNvbnRlbnQgbm9kZXMK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMg
ZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDIKK1BB
U1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVy
LDFdCitQQVNTIEFycmF5IFt3cmFwcGVyMiwwLHdyYXBwZXIyLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyMiwwLHdyYXBwZXIyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTUzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5v
ZGVzLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7
IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAuZmxvdyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93
MTt9CisgICAgLmJsdWUge2JhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDUwcHg7
IGhlaWdodDogNTBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAg
ICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWln
aHQ6IDEyMHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVy
Ij48ZGl2IGNsYXNzPSJmbG93Ij5UZXh0IG5vZGUuPC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJl
Z2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0i
Ym9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlcjIiPjxkaXYgY2xhc3M9ImZsb3cgYmx1
ZSI+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIElt
cGxlbWVudCBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgd2l0aCBtdWx0aXBsZSBjb250ZW50
IG5vZGVzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
MS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwg
WyJ3cmFwcGVyIiwgMCwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5n
dGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4
dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTIsIDEpLCBbIndyYXBwZXIyIiwgMCwgIndyYXBwZXIyIiwgMV0pOworCisKK2Z1bmN0aW9uIGhp
ZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBo
aWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRp
c3BsYXktbm9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMzFiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1tDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9u
OjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFu
Z2Ugc2hvdWxkIG5vdCBicmVhayByYW5nZXMgYXQgZGlzcGxheTpub25lKQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKzEKKzMKKzUKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyLDAsd3JhcHBlciwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1ub25lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMyZmM4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5o
dG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwv
c2NyaXB0PgorPHN0eWxlPgorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9Cisg
ICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDIwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAx
cHggc29saWQgcmVkOyB9CisgICAgLmZsb3cgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQor
ICAgICN3cmFwcGVyIHAge21hcmdpbjogMDsgcGFkZGluZzogMDt9CisgICAgLm5vbmUge2Rpc3Bs
YXk6IG5vbmU7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0
aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRp
diBpZD0id3JhcHBlciI+PGRpdiBjbGFzcz0iZmxvdyI+PHA+MTwvcD48cCBjbGFzcz0ibm9uZSI+
MjwvcD48cD4zPC9wPjxwIGNsYXNzPSJub25lIj40PC9wPjxwPjU8L3A+PC9kaXY+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVz
Y3JpcHRpb24oIltDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFu
Z2VzIGZvciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVh
ayByYW5nZXMgYXQgZGlzcGxheTpub25lKSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAg
ICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRS
YW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5j
dGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJl
Z2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1y
ZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjI0YWM0NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6
Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZW1wdHkgcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFu
Z2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVh
bCB0byBbd3JhcHBlciwwLHdyYXBwZXIsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHkt
cmVnaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZW1wdHktcmVnaW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmYzNjk1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLmh0bWwKQEAgLTAsMCArMSw1MiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQt
c2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAg
ICAjYm94IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxOyBoZWlnaHQ6IDUwcHg7IG1hcmdpbi10
b3A6IDQwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWV9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0
LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiAzMHB4OyBsZWZ0OiAyMHB4
OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsg
d2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAg
ICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdo
dDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+
PGRpdiBpZD0iYm94Ij48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2Pgor
ICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRl
c2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgZW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsid3JhcHBl
ciIsIDAsICJ3cmFwcGVyIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAw
KTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDAyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNDIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZs
b3dSYW5nZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1w
dHkgcmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBp
cyAwCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dy
YXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEs
MSx3cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3Vz
IGJsb2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxi
b3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94
MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVy
LDFdIGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQ
QVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMg
ZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BB
U1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMg
ZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwg
c28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2Jv
eDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0
LDUsYm94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxi
b3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZml4ZWQtcG9zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdlYWVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpn
ZXRSZWdpb25GbG93UmFuZ2VzIGZvciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJh
bmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzdhODUzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9z
Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
LmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1m
bG93LWludG86IGZsb3c7IHBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBw
eDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAg
ICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAg
IDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJl
Z2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyIp
OworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitm
dW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorICAgIGhpZGVS
ZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjgxZGE4ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1ob3Jpei1idC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0MiBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgaG9yaXpvbnRhbC1idCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BB
U1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRp
Y2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEs
MV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFd
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0g
aXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIg
KGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1Mg
QXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQor
UEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVx
dWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJy
YXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5j
cmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFti
b3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4
dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGls
ZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24z
CitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0g
aXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQs
NF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJd
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMg
ZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc5OGMxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwK
QEAgLTAsMCArMSwxMDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRh
bC1idDsgfQorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBw
ZXIgeyBmb250LXNpemU6IDMwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQg
cmVkOyB9CisgICAgI2FydGljbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdo
dDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjog
bGlnaHRncmVlbjsgaGVpZ2h0OiAxMTBweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7IGhlaWdodDogMTBweDsgcGFkZGluZzogNXB4O30KKyAg
ICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWln
aHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtp
dC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBw
eDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
ICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2
IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIg
Y2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIi
PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdp
b25GbG93UmFuZ2VzIGZvciBob3Jpem9udGFsLWJ0IG1vZGUiKTsKKyAgICB2YXIgcmVnaW9uMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdp
b25zIik7CisgICAgdmFyIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIg
cmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24z
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTMubGVuZ3RoIiwgMCk7CisKKyAgICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFy
dGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUu
c3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3
cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRS
ZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIs
IDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAx
LCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVy
IiwgMV0pOworCisgICAgZGVidWcoIkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBh
bm9ueW1vdXMgYmxvY2spIik7CisgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIp
LmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxv
d1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAg
ICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEi
LCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7
CisKKyAgICBkZWJ1ZygiSW5jcmVhc2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9u
dFNpemUgPSAiNDBweCI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94
MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsK
KyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAg
IGRlYnVnKCJNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSBy
ZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdib3gyJyk7CisgICAgYm94Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7Cisg
ICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0p
OworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJh
bmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVS
ZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9
CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2EzNGM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9u
bHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGlubGluZSBlbGVtZW50cworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAs
d3JhcHBlciwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2E0NmM3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtaW5saW5lLW9ubHkuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAyMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNpbmxpbmVPbmx5IHsgLXdlYmtp
dC1mbG93LWludG86IGZsb3cxOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDog
MTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206
IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBw
eDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBw
eDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3
cmFwcGVyIj48c3BhbiBpZD0iaW5saW5lT25seSI+PC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJy
ZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9
ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRl
c3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgaW5saW5lIGVsZW1lbnRzIik7
CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOwor
ICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKwor
CisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVy
IiwgMCwgIndyYXBwZXIiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDAp
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMDU5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdp
b25GbG93UmFuZ2VzLiBUZXh0IGJyZWFrcyBpbiB0d28gcmVnaW9ucworCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCwjdGV4dCw0XSBpcyBlcXVhbCB0byBbd3JhcHBl
ciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQs
NSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lZjEzYjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25G
bG93UmFuZ2VzIGluIHZlcnRpY2FsLXJsIG1vZGUuIFRleHQgYnJlYWtzIGludG8gdHdvIHJlZ2lv
bnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0g
aXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFw
cGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41MjU3YWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKQEAgLTAs
MCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgfQor
ICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250
LXNpemU6IDUwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9Cisg
ICAgI2JveCB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTt9CisgICAgI3JlZ2lvbjEgeyAtd2Vi
a2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAy
MHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93
MTsgd2lkdGg6IDYwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveCI+VGV4dCBub2RlLjwvZGl2PjwvZGl2
PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0i
cmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigi
W0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBpbiB2ZXJ0
aWNhbC1ybCBtb2RlLiBUZXh0IGJyZWFrcyBpbnRvIHR3byByZWdpb25zIik7CisgICAgdmFyIHJl
Z2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdp
b24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWco
IkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0
IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0p
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uM2VlNzI5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5
IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1
MHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gg
eyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93
LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9w
OiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRo
OiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2
IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3giPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRp
diBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdp
b25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMuIFRleHQgYnJlYWtzIGlu
IHR3byByZWdpb25zIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjIiKTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MCksIFsid3JhcHBlciIsIDAsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
I3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93
cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIp
LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dz
KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1s
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzNjk2
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NS
ZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRpY2Fs
LWxyIG1vZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitFbXB0
eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVuZ3RoIGlz
IDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFuZ2UxLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3Jh
cHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gx
LDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0
aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwx
LHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMg
YmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJv
eDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gx
LDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdyYXBwZXIs
MV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNpemUKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBl
cXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNT
IEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFT
UyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBl
cXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBz
byBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2UxLmxlbmd0
aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBbd3JhcHBl
ciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94
MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQs
NSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0
aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwwLGJv
eDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy12ZXJ0LWxyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjM0ZWYyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRt
bCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgfQorICAgIGJvZHkgeyBmb250
LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiAxMzVweDsgcGFkZGluZzogMTBweDt9
CisgICAgI2JveDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOyB3aWR0aDogMTEwcHg7
IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3
aWR0aDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDog
MjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDog
NjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lv
bjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDI1MHB4
OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlk
PSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rp
dj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxk
aXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24z
IiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1s
ciBtb2RlIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24z
Iik7CisKKyAgICBkZWJ1ZygiRW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAw
KTsKKyAgICB2YXIgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVidWco
IkZsb3cgYXJ0aWNsZSIpOworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImFydGljbGUiKTsKKyAgICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cx
IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAg
IHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UzID0g
cmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTMsIDApLCBbImJveDEiLCAxLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQgdGV4
dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZhciB0
ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIg
PSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJh
bmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
My5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwg
IFsiYm94MSIsIDIsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZvbnQg
c2l6ZSIpOworICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndyYXBw
ZXIiKTsKKyAgICB3cmFwcGVyLnN0eWxlLmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9u
Mi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDAp
LCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0ZXh0
IiwgNSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRlbnQg
bm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAgdmFy
IGJveDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5bGUu
d2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVy
IiwgMCwgImJveDEiLCAwXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MSksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3Rl
eHQiLCA1LCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAsICJi
b3gxIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0
eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmM4YTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQyIEBACitbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1y
bCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkg
cmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAw
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwx
LGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3
cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJs
b2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gx
LDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlz
IDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwy
XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFd
IGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNT
IHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBB
cnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1Mg
cmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1
YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28g
aXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGgg
aXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIs
MCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEs
MSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUs
Ym94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gx
LDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdmVydC1ybC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtdmVydC1ybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjYwMTE1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwg
eyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IH0KKyAgICBib2R5IHsgZm9udC1m
YW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9Cisg
ICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFj
a2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQor
ICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDExMHB4OyBw
YWRkaW5nOiAxMHB4O30KKyAgICAjYm94MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lk
dGg6IDEwcHg7IHBhZGRpbmc6IDVweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzE7IHdpZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1
MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYw
cHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24z
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsg
bGVmdDogMjBweDsgdG9wOiAzNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0i
YXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+
PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2
IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIg
Y2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lv
bnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVydGljYWwtcmwg
bW9kZSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24y
Iik7CisgICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIp
OworCisgICAgZGVidWcoIkVtcHR5IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9u
MS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UxLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7
CisgICAgdmFyIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJG
bG93IGFydGljbGUiKTsKKyAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJhcnRpY2xlIik7CisgICAgYXJ0aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7
CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICBy
YW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRF
dmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5n
ZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJl
Z2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2Uz
LCAwKSwgWyJib3gxIiwgMSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQg
bm9kZSB0byByZWdpb24yIChjcmVhdGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4
dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJib3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJh
bmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0g
cmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBb
ImJveDEiLCAyLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNp
emUiKTsKKyAgICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVy
Iik7CisgICAgd3JhcHBlci5zdHlsZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSBy
ZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
Mi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwg
WyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIs
IDUsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5v
ZGUsIHNvIGl0IHdpbGwgbW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBi
b3gyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndl
YmtpdEZsb3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
Mik7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMF0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEp
LCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0
IiwgNSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94
MSIsIDFdKTsKKworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0
eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCitoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDQwNjlmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmIt
bHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1vZGVzCitQQVNT
IHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIEFycmF5IFtib3gzLDEsYm94MywyXSBpcyBl
cXVhbCB0byBbYm94MywxLGJveDMsMl0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMl0KK1BBU1MgcmFu
Z2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsYm94MywxXSBpcyBlcXVhbCB0byBb
Ym94MSwyLGJveDMsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorSG9yaXpvbnRhbCBUQgorWAorVmVydGljYWwgTFJIb3Jpem9udGFsIEJUCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Njk4MmY5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy1ybC1yYi1sci5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0Pgor
PHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwgO30K
KyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9u
dC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQor
ICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOyB9CisgICAgI2JveDExIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6
IDMwcHg7IG1hcmdpbi1yaWdodDogNzBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ct
ZnJvbTogZmxvdzsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDQwMHB4OyAgfQorICAgICNyZWdpb24y
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA0MDBweDsg
IH0KKyAgICAjcmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogNDAwcHg7ICB9CisgICAgI2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9y
aXpvbnRhbC10YjsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6
IDQwMHB4O30KKyAgICAjYm94MjIgeyBoZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiB3aGl0ZTsgfQorICAgICNib3gzIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZl
cnRpY2FsLWxyOyAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTUwcHg7IGhl
aWdodDogNDAwcHg7fQorICAgICNib3g0IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250
YWwtYnQ7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogMjAw
cHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMjBweDt9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAg
IDwhLS1kaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rp
dj48ZGl2IGlkPSJib3gyIj5WZXJ0IFJMPC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydCBMUjwvZGl2
PjxkaXYgaWQ9ImJveDQiPkhvcml6b250YWwgQlQ8L2Rpdj48L2Rpdi0tPgorCisgICAgPGRpdiBp
ZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MTEiPjwvZGl2PjxkaXYgaWQ9
ImJveDIiPkhvcml6b250YWwgVEI8ZGl2IGlkPSJib3gyMiI+WDwvZGl2PjwvZGl2PjxkaXYgaWQ9
ImJveDMiPlZlcnRpY2FsIExSPGRpdiBpZD0iYm94NCI+SG9yaXpvbnRhbCBCVDwvZGl2PjwvZGl2
PjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2
PgorICAgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYg
aWQ9InJlZ2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6
Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgbWl4ZWQgdmVydGljYWwgbW9kZXMiKTsKKyAgICByZWdp
b24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByZWdpb24yID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICByZWdpb24zID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVu
Z3RoIiwgMik7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3Jh
cHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTEsIDEpLCBbImJveDMiLCAxLCAiYm94MyIsIDJdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
Ym94MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAx
KTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMiwg
ImJveDMiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmls
aXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXdyaXRpbmctbW9kZXMtdGItcmwtbHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTU5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRi
LXJsLWxyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gVGVzdCBm
b3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2Rlcwor
UEFTUyByYW5nZTEubGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlz
IGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyBBcnJheSBbYm94MywxLGJveDMsMl0g
aXMgZXF1YWwgdG8gW2JveDMsMSxib3gzLDJdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNT
IHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLGJveDMsMV0gaXMgZXF1YWwg
dG8gW2JveDEsMixib3gzLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK1ZlcnRpY2FsIFJMCitYCitWZXJ0aWNhbCBMUlkKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy10Yi1ybC1sci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNhYmRiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJs
LWxyLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQt
c2l6ZTogMzBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAg
ICAjYm94MSB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsgfQorICAgICNib3gxMSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDog
MzBweDsgbWFyZ2luLXRvcDogNzBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4OyAgfQorICAgICNyZWdpb24yIHsg
LXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDsgIH0K
KyAgICAjcmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogNDAwcHg7IGhl
aWdodDogMjAwcHg7ICB9CisgICAgI2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGlj
YWwtcmw7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7IGhlaWdodDogMTUwcHg7IHdpZHRoOiA0MDBw
eDt9CisgICAgI2JveDIyIHsgaGVpZ2h0OiAzMHB4OyB3aWR0aDogMzBweDsgYmFja2dyb3VuZC1j
b2xvcjogd2hpdGU7IH0KKyAgICAjYm94MyB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNh
bC1scjsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogNDAwcHg7IGhlaWdodDog
MTUwcHg7fQorICAgICNib3g0IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7
IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogNjBweDsgcG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDIwcHg7IGxlZnQ6IDIwcHg7fQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8IS0tZGl2
IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gxMSI+PC9kaXY+PGRpdiBp
ZD0iYm94MiI+VmVydCBSTDwvZGl2PjxkaXYgaWQ9ImJveDMiPlZlcnQgTFI8L2Rpdj48ZGl2IGlk
PSJib3g0Ij5Ib3Jpem9udGFsIEJUPC9kaXY+PC9kaXYtLT4KKworICAgIDxkaXYgaWQ9IndyYXBw
ZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5W
ZXJ0aWNhbCBSTDxkaXYgaWQ9ImJveDIyIj5YPC9kaXY+PC9kaXY+PGRpdiBpZD0iYm94MyI+VmVy
dGljYWwgTFI8ZGl2IGlkPSJib3g0Ij5ZPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgICAgPGRp
diBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9u
MiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRl
YnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZv
ciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcyIpOworICAgIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMSIpOworICAgIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMiIpOworICAgIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMyIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MyIsIDEsICJi
b3gzIiwgMl0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7
CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAyLCAiYm94MyIsIDFdKTsKKworZnVuY3Rp
b24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKK30KKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTI4
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy5odG1sCkBAIC0wLDAgKzEsMTA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3Vu
ZC1jb2xvcjogbGlnaHRibHVlOyBoZWlnaHQ6IDEzNXB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAj
Ym94MSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDogMTEwcHg7IHBhZGRp
bmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyBoZWlnaHQ6
IDEwcHg7IHBhZGRpbmc6IDVweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTog
ZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4
O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4
OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsg
LXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVm
dDogMjBweDsgdG9wOiAzNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0
aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9k
aXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlk
PSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xh
c3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNd
IFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jhbmdlcy4iKTsKKyAgICB2YXIgcmVnaW9u
MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSBy
ZWdpb25zIik7CisgICAgdmFyIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2
YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdp
b24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTMubGVuZ3RoIiwgMCk7CisKKyAgICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFy
IGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGlj
bGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
MS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwg
WyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEi
LCAxLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFw
cGVyIiwgMV0pOworCisgICAgZGVidWcoIkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRl
cyBhbm9ueW1vdXMgYmxvY2spIik7CisgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94
MSIpLmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBl
ciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJv
eDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2Vz
KCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBh
cmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAx
XSk7CisKKyAgICBkZWJ1ZygiSW5jcmVhc2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUu
Zm9udFNpemUgPSAiNDBweCI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAi
Ym94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29t
cGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRd
KTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKwor
ICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJv
bSByZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdib3gyJyk7CisgICAgYm94Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7
CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0Iiwg
NF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAg
IHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhp
ZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7
Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVs
cGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKaW5k
ZXggOWZlYjFhMS4uMWY4ZTJjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3Jlc291cmNlcy9oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291
cmNlcy9oZWxwZXIuanMKQEAgLTE2MCwzICsxNjAsMzkgQEAgZnVuY3Rpb24gYXNzZXJ0KGV4cHJl
c3Npb24sIGZhaWxNZXNzYWdlKQogewogICAgIGV4cHJlc3Npb24gPyBsb2dQYXNzTWVzc2FnZSgi
IikgOiBsb2dGYWlsTWVzc2FnZShmYWlsTWVzc2FnZSk7CiB9CisKKy8vIHVzZWQgYnkgZ2V0UmVn
aW9uRmxvd1JhbmdlcyB0ZXN0cworZnVuY3Rpb24gZ2V0TmFtZShub2RlKSB7CisgIGlmICghbm9k
ZSkgcmV0dXJuICJ1bmRlZmluZWQiOworICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBUZXh0
IG5vZGUKKyAgICByZXR1cm4gIiN0ZXh0IjsKKyAgLy8gYWxsIHRoZSBvdGhlcnMgc2hvdWxkIGhh
dmUgYW4gaWQKKyAgcmV0dXJuIG5vZGUuaWQ7Cit9CisKK2Z1bmN0aW9uIGdldFJhbmdlQXQoYXJy
UmFuZ2UsIGluZGV4KSB7CisgIGlmIChpbmRleCA8IGFyclJhbmdlLmxlbmd0aCkKKyAgICByZXR1
cm4gW2dldE5hbWUoYXJyUmFuZ2VbaW5kZXhdLnN0YXJ0Q29udGFpbmVyKSwgYXJyUmFuZ2VbaW5k
ZXhdLnN0YXJ0T2Zmc2V0LCBnZXROYW1lKGFyclJhbmdlW2luZGV4XS5lbmRDb250YWluZXIpLCBh
cnJSYW5nZVtpbmRleF0uZW5kT2Zmc2V0XTsKKyAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9u
IGNvbXBhcmVBcnJheXMoY3VycmVudCwgZXhwZWN0ZWQpIHsKKyAgICB0cnkgeworICAgICAgICBp
ZiAoY3VycmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJOdWxsIG9iamVj
dC4gRXhwZWN0ZWQgWyIgKyBleHBlY3RlZC50b1N0cmluZygpICsgIl0gd2FzIG51bGwiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudC5sZW5ndGgg
IT09IGV4cGVjdGVkLmxlbmd0aCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQXJyYXkgbGVu
Z3RoIGRpZmZlcnMuIEV4cGVjdGVkIFsiICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdIHdhcyBb
IiArIGN1cnJlbnQudG9TdHJpbmcoKSArICJdIik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgaWYgKGN1cnJlbnRbaV0gIT09IGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQgWyIgICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJd
LiBXYXMgWyIgKyBjdXJyZW50LnRvU3RyaW5nKCkgKyAiXSIpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICB0ZXN0RmFp
bGVkKGN1cnJlbnQgKyAiIHRocmV3IGV4Y2VwdGlvbiAiICsgZXgpOworICAgIH0KKyAgICB0ZXN0
UGFzc2VkKCJBcnJheSBbIiAgKyBleHBlY3RlZC50b1N0cmluZygpICsgIl0gaXMgZXF1YWwgdG8g
WyIgKyBjdXJyZW50LnRvU3RyaW5nKCkgKyAiXSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlOTQ5OGEu
LjkxZDZiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTItMDktMDYgIFJhdWwg
SHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25zXVtDU1NPTV0g
SW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGdldFJlZ2lvbkZsb3dS
YW5nZXMgZnVuY3Rpb24gZnJvbSB0aGUgQ1NTIFJlZ2lvbnMgc3BlYy4gSXQgaXMgaW1wbGVtZW50
ZWQgYnkgaXRlcmF0aW5nIG92ZXIgCisgICAgICAgIHRoZSBjb250ZW50IG5vZGVzIGFuZCBmaWd1
cmluZyBvdXQgd2hpY2ggbm9kZXMgaGF2ZSBib3VuZGluZ0JveCBpbnRlcnNlY3RpbmcgdGhlIHJl
Z2lvbiBib3ggYW5kIGZpZ3VyaW5nIG91dAorICAgICAgICB0aGUgc3RhcnQgYW5kIGVuZCBwb3Np
dGlvbnMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLWFic29sdXRlLXBvcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25z
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LWZpeGVkLXBvcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1ob3Jpei1idC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS5odG1sCisgICAgICAgICAgICAgICBmYXN0
L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LWxy
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXZlcnQtcmwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci5odG1sCisgICAgICAgICAgICAgICBmYXN0
L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLmh0
bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6IGFkZGVkIHRo
ZSB3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzIG1ldGhvZAorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZVN0
YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxkQXZvaWRpbmdGbG9hdHMpOiBVc2UgdGhlIGxvZ2ljYWxU
b3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UgKG9sZCBuYW1lKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Omhh
c05leHRQYWdlKTogVXNlIHRoZSBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QgaW5z
dGVhZCBvZiBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIChvbGQgbmFtZSkKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
KTogQWRkZWQgYSBzbG93ZXIgcGF0aCB3aGljaCB3b3JrcyB3aXRob3V0IExheW91dFN0YXRlCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6
IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAob2xkIG5hbWUpCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNocmlua0xv
Z2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMpOiBVc2UgdGhlIGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRD
b250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKG9s
ZCBuYW1lKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tBdmFp
bGFibGVMaW5lV2lkdGhJblJlZ2lvbik6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENv
bnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAob2xk
IG5hbWUpCisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UpOiBV
c2UgdGhlIGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKG9sZCBuYW1lKQorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDb250YWlu
ZWRJbk5vZGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Ym94SW50
ZXJzZWN0c1JlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OmdldFJhbmdlcyk6IHJldHVybnMgYSB2ZWN0b3Igb2YgUmFuZ2VzIHRoYXQgY29udGFpbnMgTm9k
ZSB0aGF0IGFyZSBwYXJ0IG9mIGEgcmVnaW9uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5oOgorICAgICAgICAoUmVuZGVyTmFtZWRGbG93VGhyZWFkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clJlZ2lvbjo6bG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KTogUmV0dXJucyB0aGUg
bG9naWNhbCB0b3Agb2YgYSByZWN0YW5nbGUgaW5zaWRlIHRoZSBmbG93IHRocmVhZCBjb250ZW50
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6bG9n
aWNhbEJvdHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0KTogUmV0dXJucyB0aGUgbG9naWNhbCBi
b3R0b20gb2YgYSByZWN0YW5nbGUgaW5zaWRlIHRoZSBmbG93IHRocmVhZCBjb250ZW50CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmdldFJhbmdlcyk6IHByb3h5IHRoZSBnZXRSYW5n
ZXMgY2FsbCB0byBpdHMgbmFtZWQgZmxvdyB0aHJlYWQKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmg6CisgICAgICAgIChSZW5kZXJSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQpOiBSZW5hbWVkIGZy
b20gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZQorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQpOiBSZXR1cm5zIHRo
ZSBsb2dpY2FsIGJvdHRvbSBvZiB0aGUgRmxvd1RocmVhZENvbnRlbnQgcmVjdAorCisyMDEyLTA4
LTMwICBSYXVsIEh1ZGVhICA8cmh1ZGVhQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTUmVnaW9u
c11bQ1NTT01dIEltcGxlbWVudCBFbGVtZW50LmdldFJlZ2lvbkZsb3dSYW5nZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDkzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBnZXRS
ZWdpb25GbG93UmFuZ2VzIGZ1bmN0aW9uIGZyb20gdGhlIENTUyBSZWdpb25zIHNwZWMuIEl0IGlz
IGltcGxlbWVudGVkIGJ5IGl0ZXJhdGluZyBvdmVyIAorICAgICAgICB0aGUgY29udGVudCBub2Rl
cyBhbmQgZmlndXJpbmcgb3V0IHdoaWNoIG5vZGVzIGhhdmUgYm91bmRpbmdCb3ggaW50ZXJzZWN0
aW5nIHRoZSByZWdpb24gYm94IGFuZCBmaWd1cmluZyBvdXQKKyAgICAgICAgdGhlIHN0YXJ0IGFu
ZCBlbmQgcG9zaXRpb25zLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1w
dHktcmVnaW9ucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRl
eHQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdmVydC1sci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LXJsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20v
RWxlbWVudC5pZGw6IGFkZGVkIHRoZSB3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzIG1ldGhvZAor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk6IGFkZGVkIGEgc2xv
dyBwYXRoIHRvIGZpbmQgdGhlIGxvZ2ljYWxUb3BPZkZpcnN0UGFnZSB3aXRob3V0IExheW91dFN0
YXRlCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aXNDb250YWluZWRJbk5vZGVzKTogCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmxvZ2ljYWxUb3BGb3JCb3gpOiBnZXQgbG9naWNhbFRvcCBkZXBlbmRpbmcgb24gdGhlIHdy
aXRlIG1vZGUKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxCb3R0b21Gb3JCb3gpOiBnZXQgbG9n
aWNhbEJvdHRvbSBkZXBlbmRpbmcgb24gdGhlIHdyaXRlIG1vZGUKKyAgICAgICAgKFdlYkNvcmU6
OmJveEludGVyc2VjdHNSZWdpb24pOiBkZXRlY3RzIGlmIGEgYm94IGludGVyc2VjdHMgYSByZWdp
b24KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFuZ2VzKTog
cmV0dXJucyBhIHZlY3RvciBvZiBSYW5nZXMgdGhhdCBjb250YWlucyBOb2RlIHRoYXQgYXJlIHBh
cnQgb2YgYSByZWdpb24gCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVh
ZC5oOgorICAgICAgICAoUmVuZGVyTmFtZWRGbG93VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6Z2V0
UmFuZ2VzKTogcHJveHkgdGhlIGdldFJhbmdlcyBjYWxsIHRvIGl0cyBuYW1lZCBmbG93IHRocmVh
ZAorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
OgorICAgICAgICAoUmVuZGVyUmVnaW9uKToKKwogMjAxMi0wOS0wNiAgRWxsaW90dCBTcHJlaG4g
IDxlc3ByZWhuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgbmV3IFY4RGVwZW5kZW50UmV0
YWluZWQgdGhhdCBhbGxvd3Mga2VlcGluZyBhIHY4OjpPYmplY3QgYWxpdmUgYXMgbG9uZyBhcyBh
bm90aGVyIHY4OjpPYmplY3QgaXMgYWxpdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAzYmFm
NjE0Li43NzVlYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMDQzLDYgKzIwNDMsMjAg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0KCkgY29u
c3QKICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiB9CiAKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+
ID4gRWxlbWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0Cit7CisgICAgZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBW
ZWN0b3I8UmVmUHRyPFJhbmdlPiA+IHJhbmdlT2JqZWN0czsKKyAgICBpZiAoZG9jdW1lbnQoKS0+
Y3NzUmVnaW9uc0VuYWJsZWQoKSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVy
UmVnaW9uKCkpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSB0b1JlbmRlclJlZ2lv
bihyZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAg
ICAgcmVnaW9uLT5nZXRSYW5nZXMocmFuZ2VPYmplY3RzKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmFuZ2VPYmplY3RzOworfQorCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBFbGVtZW50OjpmYXN0QXR0
cmlidXRlTG9va3VwQWxsb3dlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggOTAyNWZiNy4uMjgzNGE3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CkBAIC00MjYsNiArNDI2LDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyUmVnaW9uKiByZW5kZXJS
ZWdpb24oKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHdlYmtpdFJlZ2lvbk92ZXJz
ZXQoKSBjb25zdDsKKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPiA+IHdlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzSUQoKSBjb25zdDsKICAgICBib29sIGhh
c0NsYXNzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggZmI2MGM3My4uNTFjMGY5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMTQ0LDYgKzE0NCw3IEBAIG1vZHVsZSBjb3Jl
IHsKIAogICAgICAgICAvLyBDU1MgUmVnaW9ucyBBUEkKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyB3ZWJraXRSZWdpb25PdmVyc2V0OworICAgICAgICBzZXF1ZW5jZTxSYW5n
ZT4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0Vf
T0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBo
YW5kbGVyIERPTSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAppbmRleCAxMDIxNmJjLi4wMDgxZmQxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKQEAgLTIyMzIsNyArMjIzMiw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxv
Y2s6OmNvbXB1dGVTdGFydFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRzKGNvbnN0
IFJlCiAKICAgICBMYXlvdXRVbml0IGJsb2NrT2Zmc2V0ID0gbG9naWNhbFRvcEZvckNoaWxkKGNo
aWxkKTsKICAgICBpZiAocmVnaW9uKQotICAgICAgICBibG9ja09mZnNldCA9IG1heChibG9ja09m
ZnNldCwgYmxvY2tPZmZzZXQgKyAocmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CisgICAgICAgIGJsb2Nr
T2Zmc2V0ID0gbWF4KGJsb2NrT2Zmc2V0LCBibG9ja09mZnNldCArIChyZWdpb24tPmxvZ2ljYWxU
b3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFn
ZSkpOwogCiAgICAgTGF5b3V0VW5pdCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0Rm9yTGluZShibG9j
a09mZnNldCwgZmFsc2UsIHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwg
bG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CiAKQEAgLTY4OTYsNyArNjg5Niw3IEBAIGJv
b2wgUmVuZGVyQmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgUGFn
ZUJvdW5kYXJ5UnVsZSBwYWdlQm91CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAocmVn
aW9uLT5pc0xhc3RSZWdpb24oKSkKICAgICAgICAgcmV0dXJuIHJlZ2lvbi0+aXNSZW5kZXJSZWdp
b25TZXQoKSB8fCByZWdpb24tPnN0eWxlKCktPnJlZ2lvbk92ZXJmbG93KCkgPT0gQnJlYWtSZWdp
b25PdmVyZmxvdwotICAgICAgICAgICAgfHwgKHBhZ2VCb3VuZGFyeVJ1bGUgPT0gSW5jbHVkZVBh
Z2VCb3VuZGFyeSAmJiBwYWdlT2Zmc2V0ID09IHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSgpKTsKKyAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlSdWxlID09IEluY2x1
ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzE4NywyMCArNzE4
Nyw1MSBAQCBib29sIFJlbmRlckJsb2NrOjpsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5lQ2hhbmdl
ZChSb290SW5saW5lQm94KiByb290Qm94LCBMYXlvdQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2Nr
OjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3QKIHsKLSAgICAvLyBGSVhN
RTogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byB3b3JrIHdpdGhvdXQgbGF5b3V0IHN0YXRlLiBJdCdz
IGZpbmUgdG8gdXNlIHRoZSBsYXlvdXQgc3RhdGUgYXMgYSBjYWNoZQotICAgIC8vIGZvciBzcGVl
ZCwgYnV0IHdlIG5lZWQgYSBzbG93IGltcGxlbWVudGF0aW9uIHRoYXQgd2lsbCB3YWxrIHVwIHRo
ZSBjb250YWluaW5nIGJsb2NrIGNoYWluIGFuZCBmaWd1cmUKLSAgICAvLyBvdXQgb3VyIG9mZnNl
dCBmcm9tIHRoZSB0b3Agb2YgdGhlIHBhZ2UuCiAgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRl
ID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpOwotICAgIGlmICghbGF5b3V0U3RhdGUgfHwgIWxheW91
dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobGF5b3V0
U3RhdGUgJiYgIWxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQorICAgICAgICByZXR1cm4gWkVS
T19MQVlPVVRfVU5JVDsKKyAgICBpZiAobGF5b3V0U3RhdGUpIHsKKyAgICAgICAgLy8gRklYTUU6
IFNhbml0eSBjaGVjayB0aGF0IHRoZSByZW5kZXJlciBpbiB0aGUgbGF5b3V0IHN0YXRlIGlzIG91
cnMsIHNpbmNlIG90aGVyd2lzZSB0aGUgY29tcHV0YXRpb24gd2lsbCBiZSBvZmYuCisgICAgICAg
IC8vIFJpZ2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxvZ2ljYWxI
ZWlnaHQgZm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRlZCB1c2lu
ZworICAgICAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFjaCByZWdpb24uIFVudGls
IHdlIHBhdGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQuCisgICAgICAgIC8vIEFT
U0VSVChsYXlvdXRTdGF0ZS0+bV9yZW5kZXJlciA9PSB0aGlzKTsKIAotICAgIC8vIEZJWE1FOiBT
YW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIgaW4gdGhlIGxheW91dCBzdGF0ZSBpcyBvdXJz
LCBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0aW9uIHdpbGwgYmUgb2ZmLgotICAgIC8vIFJp
Z2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxvZ2ljYWxIZWlnaHQg
Zm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRlZCB1c2luZwotICAg
IC8vIHdpZHRocyB3aGljaCBjYW4gdmFyeSBpbiBlYWNoIHJlZ2lvbi4gVW50aWwgd2UgcGF0Y2gg
dGhhdCwgd2UgY2FuJ3QgaGF2ZSB0aGlzIGFzc2VydC4KLSAgICAvLyBBU1NFUlQobGF5b3V0U3Rh
dGUtPm1fcmVuZGVyZXIgPT0gdGhpcyk7CisgICAgICAgIExheW91dFNpemUgb2Zmc2V0RGVsdGEg
PSBsYXlvdXRTdGF0ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdlT2Zmc2V0
OworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNldERlbHRh
LmhlaWdodCgpIDogb2Zmc2V0RGVsdGEud2lkdGgoKTsKKyAgICB9CisgICAgLy8gRklYTUU6IFJp
Z2h0IG5vdywgdGhpcyBhc3NlcnQgaXMgaGl0IG91dHNpZGUgbGF5b3V0LCBmcm9tIGxvZ2ljYWxM
ZWZ0U2VsZWN0aW9uT2Zmc2V0IGluIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludCAoY2FsbGVk
IGZyb20gRnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCkuCisgICAgLy8gQVNTRVJUKGluUmVuZGVy
Rmxvd1RocmVhZCgpKTsKIAotICAgIExheW91dFNpemUgb2Zmc2V0RGVsdGEgPSBsYXlvdXRTdGF0
ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdlT2Zmc2V0OwotICAgIHJldHVy
biBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RGVsdGEuaGVpZ2h0KCkgOiBvZmZz
ZXREZWx0YS53aWR0aCgpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgc2xvd2VyIHBhdGggdGhh
dCBkb2Vzbid0IHVzZSBsYXlvdXQgc3RhdGUgYW5kIHJlbGllcyBvbiBnZXR0aW5nIHlvdXIgbG9n
aWNhbCB0b3AgaW5zaWRlIHRoZSBlbmNsb3NpbmcgZmxvdyB0aHJlYWQuIEl0IGRvZXNuJ3QKKyAg
ICAvLyB3b3JrIHdpdGggY29sdW1ucyBvciBwYWdlcyBjdXJyZW50bHksIGJ1dCBpdCBzaG91bGQg
b25jZSB0aGV5IGhhdmUgYmVlbiBzd2l0Y2hlZCBvdmVyIHRvIHVzaW5nIGZsb3cgdGhyZWFkcy4K
KyAgICBpZiAoIWluUmVuZGVyRmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVST19MQVlP
VVRfVU5JVDsKKworICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjdXJyZW50QmxvY2sgPSB0aGlzOwor
ICAgIExheW91dFJlY3QgYmxvY2tSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsKKworICAg
IHdoaWxlIChjdXJyZW50QmxvY2sgJiYgIWN1cnJlbnRCbG9jay0+aXNSZW5kZXJGbG93VGhyZWFk
KCkpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lckJsb2NrID0gY3VycmVudEJsb2Nr
LT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5lckJsb2NrKTsKKyAg
ICAgICAgaWYgKCFjb250YWluZXJCbG9jaykKKyAgICAgICAgICAgIHJldHVybiBaRVJPX0xBWU9V
VF9VTklUOworICAgICAgICBMYXlvdXRQb2ludCBjdXJyZW50QmxvY2tMb2NhdGlvbiA9IGN1cnJl
bnRCbG9jay0+bG9jYXRpb24oKTsKKworICAgICAgICBpZiAoY29udGFpbmVyQmxvY2stPnN0eWxl
KCktPndyaXRpbmdNb2RlKCkgIT0gY3VycmVudEJsb2NrLT5zdHlsZSgpLT53cml0aW5nTW9kZSgp
KSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgYmxvY2sgcmVjdCBpbiBjb250
YWluZXIgY29vcmRpbmF0ZXMKKyAgICAgICAgICAgIC8vIGFuZCB3ZSBoYXZlIHRvIHRha2UgaW50
byBhY2NvdW50IGJvdGggdGhlIGNvbnRhaW5lciBhbmQgY3VycmVudCBibG9jayBmbGlwcGluZyBt
b2RlcworICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgpLT5pc0ZsaXBwZWRC
bG9ja3NXcml0aW5nTW9kZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJsb2Nr
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAgICAgICAgICAgICBibG9ja1Jl
Y3Quc2V0WShjdXJyZW50QmxvY2stPmhlaWdodCgpIC0gYmxvY2tSZWN0Lm1heFkoKSk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBibG9ja1JlY3Quc2V0WChjdXJy
ZW50QmxvY2stPndpZHRoKCkgLSBibG9ja1JlY3QubWF4WCgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGN1cnJlbnRCbG9jay0+ZmxpcEZvcldyaXRpbmdNb2RlKGJsb2NrUmVjdCk7Cisg
ICAgICAgIH0KKyAgICAgICAgYmxvY2tSZWN0Lm1vdmVCeShjdXJyZW50QmxvY2tMb2NhdGlvbik7
CisgICAgICAgIGN1cnJlbnRCbG9jayA9IGNvbnRhaW5lckJsb2NrOworICAgIH07CisgICAgcmV0
dXJuIGN1cnJlbnRCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGJsb2NrUmVjdC55
KCkudG9JbnQoKSA6IGJsb2NrUmVjdC54KCkudG9JbnQoKTsKIH0KIAogUmVuZGVyUmVnaW9uKiBS
ZW5kZXJCbG9jazo6cmVnaW9uQXRCbG9ja09mZnNldChMYXlvdXRVbml0IGJsb2NrT2Zmc2V0KSBj
b25zdApAQCAtNzI0OCw5ICs3Mjc5LDkgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJCbG9jazo6Y2xh
bXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKICAgICBS
ZW5kZXJSZWdpb24qIGVuZFJlZ2lvbjsKICAgICBlbmNsb3NpbmdSZW5kZXJGbG93VGhyZWFkKCkt
PmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogICAg
IAotICAgIGlmIChzdGFydFJlZ2lvbiAmJiByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZG
aXJzdFBhZ2UoKSA8IHN0YXJ0UmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
KCkpCisgICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJl
YWRDb250ZW50KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50
KCkpCiAgICAgICAgIHJldHVybiBzdGFydFJlZ2lvbjsKLSAgICBpZiAoZW5kUmVnaW9uICYmIHJl
Z2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpID4gZW5kUmVnaW9uLT5vZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpCisgICAgaWYgKGVuZFJlZ2lvbiAmJiByZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpID4gZW5kUmVnaW9uLT5sb2dpY2Fs
VG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGVuZFJlZ2lvbjsKICAg
ICAKICAgICByZXR1cm4gcmVnaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAppbmRleCBjOGNhN2M4Li4yMWRlNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcApAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OnNocmlu
a0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMoTGF5b3V0VW5pdCBjaGlsZE1hcmdpblN0YXIKICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BQb3NpdGlvbiA9IGxvZ2ljYWxUb3AoKTsKICAgICBMYXlv
dXRVbml0IGFkanVzdGVkUGFnZU9mZnNldEZvckNvbnRhaW5pbmdCbG9jayA9IG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UgLSBsb2dpY2FsVG9wKCk7CiAgICAgaWYgKHJlZ2lvbikgewot
ICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24gPSByZWdpb24g
PyByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSAtIG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9VVF9VTklUOworICAgICAgICBMYXlvdXRV
bml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24gPSByZWdpb24gPyByZWdpb24tPmxvZ2lj
YWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgICAgIGxvZ2ljYWxUb3BQb3NpdGlvbiA9IG1h
eChsb2dpY2FsVG9wUG9zaXRpb24sIGxvZ2ljYWxUb3BQb3NpdGlvbiArIG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZSZWdpb24pOwogICAgICAgICBjb250YWluaW5nQmxvY2tSZWdpb24gPSBjYi0+Y2xh
bXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwogICAgIH0KQEAgLTEyMTksNyArMTIxOSw3
IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tBdmFpbGFibGVMaW5lV2lk
dGhJblJlZ2lvbihSZW5kZXJSZWdpb24qIHJlCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wUG9z
aXRpb24gPSBsb2dpY2FsVG9wKCk7CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RlZFBhZ2VPZmZzZXRG
b3JDb250YWluaW5nQmxvY2sgPSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIC0gbG9n
aWNhbFRvcCgpOwogICAgIGlmIChyZWdpb24pIHsKLSAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRG
cm9tTG9naWNhbFRvcE9mUmVnaW9uID0gcmVnaW9uID8gcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIDogWkVS
T19MQVlPVVRfVU5JVDsKKyAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9m
UmVnaW9uID0gcmVnaW9uID8gcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQo
KSAtIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9VVF9VTklUOwog
ICAgICAgICBsb2dpY2FsVG9wUG9zaXRpb24gPSBtYXgobG9naWNhbFRvcFBvc2l0aW9uLCBsb2dp
Y2FsVG9wUG9zaXRpb24gKyBvZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVnaW9uKTsKICAgICAgICAg
Y29udGFpbmluZ0Jsb2NrUmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVn
aW9uKTsKICAgICB9CkBAIC0yNTA1LDcgKzI1MDUsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5s
aW5lU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2FsUmln
aAogICAgICAgICAgICAgICAgIGlmIChyZWdpb24gJiYgY3Vyci0+aXNSZW5kZXJCbG9jaygpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjYiA9IHRvUmVuZGVyQmxv
Y2soY3Vycik7CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRB
bmRFbmRSZWdpb25zKHJlZ2lvbik7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlckJveFJlZ2lv
bkluZm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94UmVnaW9uSW5mbyhyZWdpb24sIHJlZ2lvbi0+
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
UmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJl
Z2lvbiwgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChib3hJbmZvKQogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
UG9zaXRpb24gKz0gYm94SW5mby0+bG9naWNhbExlZnQoKTsKICAgICAgICAgICAgICAgICB9CkBA
IC0yNTI0LDcgKzI1MjQsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5saW5lU3RhdGljRGlzdGFu
Y2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2FsUmlnaAogICAgICAgICAgICAg
ICAgIGlmIChyZWdpb24gJiYgY3Vyci0+aXNSZW5kZXJCbG9jaygpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogY2IgPSB0b1JlbmRlckJsb2NrKGN1cnIpOwogICAg
ICAgICAgICAgICAgICAgICAgcmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMo
cmVnaW9uKTsKLSAgICAgICAgICAgICAgICAgICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIGJveElu
Zm8gPSBjYi0+cmVuZGVyQm94UmVnaW9uSW5mbyhyZWdpb24sIHJlZ2lvbi0+b2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgIFJlbmRlckJveFJl
Z2lvbkluZm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94UmVnaW9uSW5mbyhyZWdpb24sIHJlZ2lv
bi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpOwogICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJveEluZm8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyICE9IGNv
bnRhaW5lckJsb2NrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY1Bvc2l0aW9u
IC09IGNiLT5sb2dpY2FsV2lkdGgoKSAtIChib3hJbmZvLT5sb2dpY2FsTGVmdCgpICsgYm94SW5m
by0+bG9naWNhbFdpZHRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmNwcAppbmRleCA0ZTgzY2NhLi41NGZlZDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAt
MjcsOCArMjcsMTMgQEAKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKIAogI2lu
Y2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgorI2luY2x1ZGUgIlBvc2l0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyUmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRG
bG93LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5Myw0ICszOTgsMTcxIEBAIGJvb2wg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjppc01hcmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gbV9uYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxv
d1N0YXRlTnVsbDsKIH0KIAorc3RhdGljIGJvb2wgaXNDb250YWluZWRJbk5vZGVzKFZlY3RvcjxO
b2RlKj4gb3RoZXJzLCBOb2RlKiBub2RlKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b3RoZXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIE5vZGUqIG90aGVyID0gb3RoZXJzLmF0KGkp
OworICAgICAgICBpZiAob3RoZXItPmNvbnRhaW5zKG5vZGUpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgYm94SW50
ZXJzZWN0c1JlZ2lvbihMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JCb3gsIExheW91dFVuaXQgbG9n
aWNhbEJvdHRvbUZvckJveCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yUmVnaW9uLCBMYXlvdXRV
bml0IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24pCit7CisgICAgYm9vbCByZWdpb25Jc0VtcHR5ID0g
bG9naWNhbEJvdHRvbUZvclJlZ2lvbiAhPSBNQVhfTEFZT1VUX1VOSVQgJiYgbG9naWNhbFRvcEZv
clJlZ2lvbiAhPSBNSU5fTEFZT1VUX1VOSVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiAo
bG9naWNhbEJvdHRvbUZvclJlZ2lvbiAtIGxvZ2ljYWxUb3BGb3JSZWdpb24pIDw9IDA7CisgICAg
cmV0dXJuICAobG9naWNhbEJvdHRvbUZvckJveCAtIGxvZ2ljYWxUb3BGb3JCb3gpID4gMAorICAg
ICAgICAgICAgJiYgIXJlZ2lvbklzRW1wdHkKKyAgICAgICAgICAgICYmIGxvZ2ljYWxUb3BGb3JC
b3ggPCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uICYmIGxvZ2ljYWxUb3BGb3JSZWdpb24gPCBsb2dp
Y2FsQm90dG9tRm9yQm94OworfQorCit2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFu
Z2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0cywgY29uc3QgUmVuZGVyUmVn
aW9uKiByZWdpb24pIGNvbnN0Cit7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yUmVnaW9u
OworICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvclJlZ2lvbjsKKworICAgIC8vIGV4dGVu
ZCB0aGUgZmlyc3QgcmVnaW9uIHRvcCB0byBjb250YWluIGV2ZXJ5dGhpbmcgdXAgdG8gaXRzIGxv
Z2ljYWwgaGVpZ2h0CisgICAgaWYgKHJlZ2lvbi0+aXNGaXJzdFJlZ2lvbigpKQorICAgICAgICBs
b2dpY2FsVG9wRm9yUmVnaW9uID0gTUlOX0xBWU9VVF9VTklUOworICAgIGVsc2UKKyAgICAgICAg
bG9naWNhbFRvcEZvclJlZ2lvbiA9ICByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29u
dGVudCgpOworCisgICAgLy8gZXh0ZW5kIHRoZSBsYXN0IHJlZ2lvbiB0byBjb250YWluIGV2ZXJ5
dGhpbmcgYWJvdmUgaXRzIHkoKQorICAgIGlmIChyZWdpb24tPmlzTGFzdFJlZ2lvbigpKQorICAg
ICAgICBsb2dpY2FsQm90dG9tRm9yUmVnaW9uID0gTUFYX0xBWU9VVF9VTklUOworICAgIGVsc2UK
KyAgICAgICAgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiA9IHJlZ2lvbi0+bG9naWNhbEJvdHRvbUZv
ckZsb3dUaHJlYWRDb250ZW50KCk7CisKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVzOworICAgIC8v
IGVsaW1pbmF0ZSB0aGUgY29udGVudE5vZGVzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIG90aGVy
IGNvbnRlbnROb2RlcworICAgIGZvciAoTmFtZWRGbG93Q29udGVudE5vZGVzOjpjb25zdF9pdGVy
YXRvciBpdCA9IGNvbnRlbnROb2RlcygpLmJlZ2luKCk7IGl0ICE9IGNvbnRlbnROb2RlcygpLmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSAqaXQ7CisgICAgICAgIGlmICghaXND
b250YWluZWRJbk5vZGVzKG5vZGVzLCBub2RlKSkKKyAgICAgICAgICAgIG5vZGVzLmFwcGVuZChu
b2RlKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGVzLnNpemUoKTsg
aSsrKSB7CisgICAgICAgIE5vZGUqIGNvbnRlbnROb2RlID0gbm9kZXMuYXQoaSk7CisgICAgICAg
IGlmICghY29udGVudE5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CisgICAgICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGNvbnRlbnROb2RlLT5kb2N1bWVudCgpKTsKKyAg
ICAgICAgYm9vbCBmb3VuZFN0YXJ0UG9zaXRpb24gPSBmYWxzZTsKKyAgICAgICAgYm9vbCBzdGFy
dHNBYm92ZVJlZ2lvbiA9IHRydWU7CisgICAgICAgIGJvb2wgZW5kc0JlbG93UmVnaW9uID0gdHJ1
ZTsKKyAgICAgICAgYm9vbCBza2lwT3Zlck91dHNpZGVOb2RlcyA9IGZhbHNlOworICAgICAgICBO
b2RlKiBsYXN0RW5kTm9kZSA9IDA7CisKKyAgICAgICAgZm9yIChOb2RlKiBub2RlID0gY29udGVu
dE5vZGU7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGNvbnRlbnROb2RlKSkg
eworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
CisgICAgICAgICAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94OworICAgICAgICAgICAgaWYgKHJl
bmRlcmVyLT5pc1JlbmRlcklubGluZSgpKQorICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94ID0g
dG9SZW5kZXJJbmxpbmUocmVuZGVyZXIpLT5saW5lc0JvdW5kaW5nQm94KCk7CisgICAgICAgICAg
ICBlbHNlIGlmIChyZW5kZXJlci0+aXNUZXh0KCkpCisgICAgICAgICAgICAgICAgYm91bmRpbmdC
b3ggPSB0b1JlbmRlclRleHQocmVuZGVyZXIpLT5saW5lc0JvdW5kaW5nQm94KCk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBib3VuZGluZ0JveCA9ICB0b1JlbmRlckJveChy
ZW5kZXJlciktPmZyYW1lUmVjdCgpOworICAgICAgICAgICAgICAgIGlmICh0b1JlbmRlckJveChy
ZW5kZXJlciktPmlzUmVsUG9zaXRpb25lZCgpKQorICAgICAgICAgICAgICAgICAgICBib3VuZGlu
Z0JveC5tb3ZlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+cmVsYXRpdmVQb3NpdGlvbkxvZ2ljYWxP
ZmZzZXQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExheW91dFVuaXQgb2Zmc2V0
VG9wID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCk7CisgICAgICAgICAgICBjb25zdCBMYXlvdXRQb2ludCBsb2dpY2FsT2Zmc2V0
RnJvbVRvcChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gWkVST19MQVlPVVRfVU5JVCA6ICBv
ZmZzZXRUb3AsCisgICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9m
ZnNldFRvcCA6IFpFUk9fTEFZT1VUX1VOSVQpOworCisgICAgICAgICAgICBib3VuZGluZ0JveC5t
b3ZlQnkobG9naWNhbE9mZnNldEZyb21Ub3ApOworCisgICAgICAgICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxUb3BGb3JSZW5kZXJlciA9IHJlZ2lvbi0+bG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRl
bnRSZWN0KGJvdW5kaW5nQm94KTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRv
bUZvclJlbmRlcmVyID0gcmVnaW9uLT5sb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJl
Y3QoYm91bmRpbmdCb3gpOworCisgICAgICAgICAgICAvLyBpZiB0aGUgYm91bmRpbmcgYm94IG9m
IHRoZSBjdXJyZW50IGVsZW1lbnQgZG9lc24ndCBpbnRlcnNlY3QgdGhlIHJlZ2lvbiBib3gKKyAg
ICAgICAgICAgIC8vIGNsb3NlIHRoZSBjdXJyZW50IHJhbmdlIG9ubHkgaWYgdGhlIHN0YXJ0IGVs
ZW1lbnQgYmVnYW4gaW5zaWRlIHRoZSByZWdpb24sCisgICAgICAgICAgICAvLyBvdGhlcndpc2Ug
anVzdCBtb3ZlIHRoZSBzdGFydCBwb3NpdGlvbiBhZnRlciB0aGlzIG5vZGUgYW5kIGtlZXAgc2tp
cHBpbmcgdGhlbSB1bnRpbCB3ZSBmb3VuZCBhIHByb3BlciBzdGFydCBwb3NpdGlvbi4KKyAgICAg
ICAgICAgIGlmICghYm94SW50ZXJzZWN0c1JlZ2lvbihsb2dpY2FsVG9wRm9yUmVuZGVyZXIsIGxv
Z2ljYWxCb3R0b21Gb3JSZW5kZXJlciwgbG9naWNhbFRvcEZvclJlZ2lvbiwgbG9naWNhbEJvdHRv
bUZvclJlZ2lvbikpIHsKKyAgICAgICAgICAgICAgICBpZiAoZm91bmRTdGFydFBvc2l0aW9uKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICghc3RhcnRzQWJvdmVSZWdpb24pIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChyYW5nZS0+aW50ZXJzZWN0c05vZGUobm9kZSwgaWdub3JlZEV4
Y2VwdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldEVuZEJlZm9y
ZShub2RlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdl
T2JqZWN0cy5hcHBlbmQocmFuZ2UtPmNsb25lUmFuZ2UoaWdub3JlZEV4Y2VwdGlvbikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGNvbnRlbnROb2RlLT5k
b2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0c0Fib3ZlUmVnaW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBza2lwT3Zlck91dHNpZGVOb2RlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGlmIChza2lwT3Zlck91dHNpZGVOb2RlcykKKyAgICAgICAgICAgICAgICAgICAg
cmFuZ2UtPnNldFN0YXJ0QWZ0ZXIobm9kZSwgaWdub3JlZEV4Y2VwdGlvbik7CisgICAgICAgICAg
ICAgICAgZm91bmRTdGFydFBvc2l0aW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHN0YXJ0IHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAobG9naWNhbFRvcEZvclJlbmRlcmVyIDwgbG9naWNhbFRvcEZvclJlZ2lvbiAm
JiBzdGFydHNBYm92ZVJlZ2lvbikgeworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNU
ZXh0KCkpIHsgLy8gVGV4dCBjcm9zc2VzIHJlZ2lvbiB0b3AKKyAgICAgICAgICAgICAgICAgICAg
Ly8gZm9yIFRleHQgZWxlbWVudHMsIGp1c3QgZmluZCB0aGUgbGFzdCB0ZXh0Ym94IHRoYXQgaXMg
Y29udGFpbmVkIGluc2lkZSB0aGUgcmVnaW9uIGFuZCB1c2UgaXRzIHN0YXJ0KCkgb2Zmc2V0IGFz
IHN0YXJ0IHBvc2l0aW9uCisgICAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5k
ZXJlciA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcik7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
SW5saW5lVGV4dEJveCogYm94ID0gdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3goKTsgYm94OyBi
b3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv
ZmZzZXRUb3AgKyBib3gtPmxvZ2ljYWxCb3R0b20oKSA8IGxvZ2ljYWxUb3BGb3JSZWdpb24pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICByYW5nZS0+c2V0U3RhcnQoUG9zaXRpb24odG9UZXh0KG5vZGUpLCBib3gtPnN0YXJ0KCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0c0Fib3ZlUmVnaW9uID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgY3Jvc3NlcyByZWdpb24gdG9wCisgICAgICAg
ICAgICAgICAgICAgIC8vIGZvciBhbGwgZWxlbWVudHMsIGV4Y2VwdCBUZXh0LCBqdXN0IHNldCB0
aGUgc3RhcnQgcG9zaXRpb24gdG8gYmUgYmVmb3JlIHRoZWlyIGNoaWxkcmVuCisgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0c0Fib3ZlUmVnaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
cmFuZ2UtPnNldFN0YXJ0KFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3Jl
Q2hpbGRyZW4pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeyAvLyBu
b2RlIHN0YXJ0cyBpbnNpZGUgcmVnaW9uCisgICAgICAgICAgICAgICAgLy8gZm9yIGVsZW1lbnRz
IHRoYXQgc3RhcnQgaW5zaWRlIHRoZSByZWdpb24sIHNldCB0aGUgc3RhcnQgcG9zaXRpb24gdG8g
YmUgYmVmb3JlIHRoZW0uIElmIHdlIGZvdW5kIG9uZSwgd2Ugd2lsbCBqdXN0IHNraXAgdGhlIG90
aGVycyB1bnRpbAorICAgICAgICAgICAgICAgIC8vIHRoZSByYW5nZSBpcyBjbG9zZWQuCisgICAg
ICAgICAgICAgICAgaWYgKHN0YXJ0c0Fib3ZlUmVnaW9uKSB7CisgICAgICAgICAgICAgICAgICAg
IHN0YXJ0c0Fib3ZlUmVnaW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5z
ZXRTdGFydEJlZm9yZShub2RlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBza2lwT3Zlck91dHNpZGVOb2RlcyAgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGZvdW5kU3RhcnRQb3NpdGlvbiA9IHRydWU7CisKKyAgICAgICAgICAg
IC8vIGVuZCBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24g
PCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIgJiYgKGVuZHNCZWxvd1JlZ2lvbiB8fCAoIWVuZHNC
ZWxvd1JlZ2lvbiAmJiAhbm9kZS0+aXNEZXNjZW5kYW50T2YobGFzdEVuZE5vZGUpKSkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBmb3IgVGV4dCBlbGVtZW50cywganVzdCBmaW5kIGp1c3QgZmluZCB0
aGUgbGFzdCB0ZXh0Ym94IHRoYXQgaXMgY29udGFpbmVkIGluc2lkZSB0aGUgcmVnaW9uIGFuZCB1
c2UgaXRzIHN0YXJ0KCkrbGVuKCkgb2Zmc2V0IGFzIGVuZCBwb3NpdGlvbgorICAgICAgICAgICAg
ICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkpIHsgLy8gVGV4dCBjcm9zc2VzIHJlZ2lvbiBib3R0
b20KKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gdG9SZW5k
ZXJUZXh0KHJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICAgICAgSW5saW5lVGV4dEJveCogbGFz
dEJveDsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0
UmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvZmZzZXRUb3AgKyBib3gtPmxvZ2ljYWxU
b3AoKSkgPCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGFzdEJveCA9IGJveDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJh
bmdlLT5zZXRFbmQoUG9zaXRpb24odG9UZXh0KG5vZGUpLCBsYXN0Qm94LT5zdGFydCgpICsgbGFz
dEJveC0+bGVuKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVuZHNCZWxvd1JlZ2lvbiA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsgLy8gbm9kZSBjcm9zc2VzIHJlZ2lvbiBib3R0b20KKyAgICAgICAgICAgICAg
ICAgICAgLy8gZm9yIGFsbCBlbGVtZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0IHRoZSBzdGFy
dCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVpciBjaGlsZHJlbgorICAgICAgICAgICAgICAgICAg
ICByYW5nZS0+c2V0RW5kKFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJD
aGlsZHJlbikpOworICAgICAgICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9kZSBlbmRzIGluc2lkZSByZWdpb24KKyAgICAg
ICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBlbmRzIGluc2lkZSB0aGUgcmVnaW9uLCBz
ZXQgdGhlIGVuZCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVtCisgICAgICAgICAgICAgICAgLy8g
YWxsb3cgdGhpcyBlbmQgcG9zaXRpb24gdG8gYmUgY2hhbmdlZCBvbmx5IGJ5IG90aGVyIGVsZW1l
bnRzIHRoYXQgYXJlIG5vdCBkZXNjZW5kYW50cyBvZiB0aGUgY3VycmVudCBlbmQgbm9kZQorICAg
ICAgICAgICAgICAgIGlmIChlbmRzQmVsb3dSZWdpb24gfHwgKCFlbmRzQmVsb3dSZWdpb24gJiYg
IW5vZGUtPmlzRGVzY2VuZGFudE9mKGxhc3RFbmROb2RlKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmFuZ2UtPnNldEVuZEFmdGVyKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24pOworICAgICAgICAg
ICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
bGFzdEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAoZm91bmRTdGFydFBvc2l0aW9uIHx8IHNraXBPdmVyT3V0c2lk
ZU5vZGVzKQorICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZSk7CisgICAgfQor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgKaW5kZXggYThiOGI1MS4uMzE5OTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgTmFtZWRGbG93Q29udGVudE5vZGVzJiBjb250ZW50Tm9kZXMoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnROb2RlczsgfQogICAgIGJvb2wgaGFzQ29udGVudE5vZGUoTm9kZSog
Y29udGVudE5vZGUpIGNvbnN0IHsgQVNTRVJUKGNvbnRlbnROb2RlKTsgcmV0dXJuIG1fY29udGVu
dE5vZGVzLmNvbnRhaW5zKGNvbnRlbnROb2RlKTsgfQogICAgIGJvb2wgaXNNYXJrZWRGb3JEZXN0
cnVjdGlvbigpIGNvbnN0OworICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+
ID4mLCBjb25zdCBSZW5kZXJSZWdpb24qKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQg
c2V0TWFya0ZvckRlc3RydWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uY3BwCmluZGV4IDgwYzg0OGIuLjhmMjkzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIK
KyNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveFJlZ2lvbkluZm8uaCIKICNp
bmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CkBAIC0zMjgsMTMgKzMyOSwxOCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6ZGVsZXRlQWxsUmVuZGVy
Qm94UmVnaW9uSW5mbygpCiAgICAgbV9yZW5kZXJCb3hSZWdpb25JbmZvLmNsZWFyKCk7CiB9CiAK
LUxheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
KCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wT2ZGbG93VGhyZWFk
Q29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
aXNWYWxpZCB8fCAhbV9mbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAobV9m
bG93VGhyZWFkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gZmxv
d1RocmVhZFBvcnRpb25SZWN0KCkueSgpOwotICAgIHJldHVybiBmbG93VGhyZWFkUG9ydGlvblJl
Y3QoKS54KCk7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgIWZsb3dUaHJlYWQoKSkKKyAgICAgICAg
cmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgcmV0dXJuIGZsb3dUaHJlYWQoKS0+aXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QueSgpIDogcmVjdC54KCk7Cit9CisKK0xheW91dFVu
aXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCB8fCAhZmxv
d1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICByZXR1cm4g
Zmxvd1RocmVhZCgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVjdC5tYXhZKCkgOiBy
ZWN0Lm1heFgoKTsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246OnNldFJlZ2lvbk9iamVjdHNSZWdp
b25TdHlsZSgpCkBAIC00OTYsNCArNTAyLDEwIEBAIHZvaWQgUmVuZGVyUmVnaW9uOjpjbGVhck9i
amVjdFN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGNs
ZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihjaGlsZCk7CiB9CiAKK3ZvaWQgUmVuZGVyUmVnaW9uOjpn
ZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYgcmFuZ2VPYmplY3RzKSBjb25zdAorewor
ICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogbmFtZWRGbG93ID0gdmlldygpLT5mbG93VGhyZWFk
Q29udHJvbGxlcigpLT5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUoKS0+cmVn
aW9uVGhyZWFkKCkpOworICAgIG5hbWVkRmxvdy0+Z2V0UmFuZ2VzKHJhbmdlT2JqZWN0cywgdGhp
cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uaAppbmRleCA3YzliODdmLi41Mzc1OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC03OCw4ICs3OCw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZGVsZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygpOwogCi0gICAgTGF5b3V0VW5pdCBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3Q7Ci0KICAgICBib29sIGlzRmlyc3RS
ZWdpb24oKSBjb25zdDsKICAgICBib29sIGlzTGFzdFJlZ2lvbigpIGNvbnN0OwogCkBAIC0xMDAs
NyArOTgsMTQgQEAgcHVibGljOgogICAgIC8vIGhlaWdodCBvZiBhIHNpbmdsZSBjb2x1bW4gb3Ig
cGFnZSBpbiB0aGUgc2V0LgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbFdpZHRo
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29u
c3Q7Ci0gICAgCisKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50
UmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90
dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OworICAg
IExheW91dFVuaXQgbG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGZsb3dUaHJlYWRQb3J0aW9uUmVj
dCgpKTsgfTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JGbG93VGhyZWFkQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChm
bG93VGhyZWFkUG9ydGlvblJlY3QoKSk7IH07CisKKyAgICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8
UmVmUHRyPFJhbmdlPiA+JikgY29uc3Q7CisKICAgICAvLyBUaGlzIG1ldGhvZCByZXByZXNlbnRz
IHRoZSBsb2dpY2FsIGhlaWdodCBvZiB0aGUgZW50aXJlIGZsb3cgdGhyZWFkIHBvcnRpb24gdXNl
ZCBieSB0aGUgcmVnaW9uIG9yIHNldC4KICAgICAvLyBGb3IgUmVuZGVyUmVnaW9ucyBpdCBtYXRj
aGVzIGxvZ2ljYWxQYWdpbmF0aW9uSGVpZ2h0KCksIGJ1dCBmb3Igc2V0cyBpdCBpcyB0aGUgaGVp
Z2h0IG9mIGFsbCB0aGUgcGFnZXMKICAgICAvLyBvciBjb2x1bW5zIGFkZGVkIHRvZ2V0aGVyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162499</attachid>
            <date>2012-09-06 06:43:51 -0700</date>
            <delta_ts>2012-09-06 08:17:32 -0700</delta_ts>
            <desc>Removed duplicate changelog entry (from the patch above)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>88875</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZjNjZDVmLi5kODBhOWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDkt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJl
Z2lvbkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250
ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQt
bHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGlu
Zy1tb2Rlcy1ybC1yYi1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3Jp
dGluZy1tb2Rlcy10Yi1ybC1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvcmVzb3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0
UmFuZ2VBdCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOS0wNiAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGhyZWUgWFNMVFByb2Nlc3Nv
ciBmdW5jdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSBbQ3VzdG9tXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uY2U4Y2FhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw3IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93
UmFuZ2VzIGZvciBhYnNvbHV0ZSBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dy
YXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDc0MTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9z
Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
LmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1m
bG93LWludG86IGZsb3c7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDog
NTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQor
ICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVp
Z2h0OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2Pgor
ICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9y
IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVt
ZW50cyIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0p
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisg
ICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYTY3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5v
ZGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50
IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyB3aXRoIG11bHRpcGxlIGNvbnRlbnQgbm9kZXMK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMg
ZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDIKK1BB
U1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVy
LDFdCitQQVNTIEFycmF5IFt3cmFwcGVyMiwwLHdyYXBwZXIyLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyMiwwLHdyYXBwZXIyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTUzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5v
ZGVzLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7
IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAuZmxvdyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93
MTt9CisgICAgLmJsdWUge2JhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDUwcHg7
IGhlaWdodDogNTBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAg
ICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWln
aHQ6IDEyMHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVy
Ij48ZGl2IGNsYXNzPSJmbG93Ij5UZXh0IG5vZGUuPC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJl
Z2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0i
Ym9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlcjIiPjxkaXYgY2xhc3M9ImZsb3cgYmx1
ZSI+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIElt
cGxlbWVudCBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgd2l0aCBtdWx0aXBsZSBjb250ZW50
IG5vZGVzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
MS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwg
WyJ3cmFwcGVyIiwgMCwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5n
dGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4
dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTIsIDEpLCBbIndyYXBwZXIyIiwgMCwgIndyYXBwZXIyIiwgMV0pOworCisKK2Z1bmN0aW9uIGhp
ZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBo
aWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRp
c3BsYXktbm9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMzFiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1tDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9u
OjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFu
Z2Ugc2hvdWxkIG5vdCBicmVhayByYW5nZXMgYXQgZGlzcGxheTpub25lKQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKzEKKzMKKzUKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyLDAsd3JhcHBlciwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1ub25lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMyZmM4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5o
dG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwv
c2NyaXB0PgorPHN0eWxlPgorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9Cisg
ICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDIwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAx
cHggc29saWQgcmVkOyB9CisgICAgLmZsb3cgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQor
ICAgICN3cmFwcGVyIHAge21hcmdpbjogMDsgcGFkZGluZzogMDt9CisgICAgLm5vbmUge2Rpc3Bs
YXk6IG5vbmU7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0
aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRp
diBpZD0id3JhcHBlciI+PGRpdiBjbGFzcz0iZmxvdyI+PHA+MTwvcD48cCBjbGFzcz0ibm9uZSI+
MjwvcD48cD4zPC9wPjxwIGNsYXNzPSJub25lIj40PC9wPjxwPjU8L3A+PC9kaXY+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVz
Y3JpcHRpb24oIltDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFu
Z2VzIGZvciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVh
ayByYW5nZXMgYXQgZGlzcGxheTpub25lKSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAg
ICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRS
YW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5j
dGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJl
Z2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1y
ZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjI0YWM0NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6
Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZW1wdHkgcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFu
Z2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVh
bCB0byBbd3JhcHBlciwwLHdyYXBwZXIsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHkt
cmVnaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZW1wdHktcmVnaW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmYzNjk1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLmh0bWwKQEAgLTAsMCArMSw1MiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQt
c2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAg
ICAjYm94IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxOyBoZWlnaHQ6IDUwcHg7IG1hcmdpbi10
b3A6IDQwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWV9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0
LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiAzMHB4OyBsZWZ0OiAyMHB4
OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsg
d2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAg
ICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdo
dDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+
PGRpdiBpZD0iYm94Ij48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2Pgor
ICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRl
c2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgZW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsid3JhcHBl
ciIsIDAsICJ3cmFwcGVyIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAw
KTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDAyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNDIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZs
b3dSYW5nZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1w
dHkgcmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBp
cyAwCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dy
YXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEs
MSx3cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3Vz
IGJsb2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxi
b3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94
MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVy
LDFdIGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQ
QVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMg
ZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BB
U1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMg
ZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwg
c28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2Jv
eDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0
LDUsYm94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxi
b3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZml4ZWQtcG9zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdlYWVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpn
ZXRSZWdpb25GbG93UmFuZ2VzIGZvciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJh
bmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzdhODUzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9z
Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
LmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1m
bG93LWludG86IGZsb3c7IHBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBw
eDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAg
ICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAg
IDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJl
Z2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyIp
OworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitm
dW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorICAgIGhpZGVS
ZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjgxZGE4ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1ob3Jpei1idC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0MiBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgaG9yaXpvbnRhbC1idCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BB
U1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRp
Y2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEs
MV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFd
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0g
aXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIg
KGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1Mg
QXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQor
UEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVx
dWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJy
YXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5j
cmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFti
b3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4
dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGls
ZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24z
CitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0g
aXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQs
NF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJd
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMg
ZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc5OGMxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwK
QEAgLTAsMCArMSwxMDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRh
bC1idDsgfQorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBw
ZXIgeyBmb250LXNpemU6IDMwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQg
cmVkOyB9CisgICAgI2FydGljbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdo
dDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjog
bGlnaHRncmVlbjsgaGVpZ2h0OiAxMTBweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7IGhlaWdodDogMTBweDsgcGFkZGluZzogNXB4O30KKyAg
ICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWln
aHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtp
dC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBw
eDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
ICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2
IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIg
Y2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIi
PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdp
b25GbG93UmFuZ2VzIGZvciBob3Jpem9udGFsLWJ0IG1vZGUiKTsKKyAgICB2YXIgcmVnaW9uMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdp
b25zIik7CisgICAgdmFyIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIg
cmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24z
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTMubGVuZ3RoIiwgMCk7CisKKyAgICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFy
dGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUu
c3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3
cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRS
ZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIs
IDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAx
LCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVy
IiwgMV0pOworCisgICAgZGVidWcoIkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBh
bm9ueW1vdXMgYmxvY2spIik7CisgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIp
LmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxv
d1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAg
ICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEi
LCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7
CisKKyAgICBkZWJ1ZygiSW5jcmVhc2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9u
dFNpemUgPSAiNDBweCI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94
MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsK
KyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAg
IGRlYnVnKCJNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSBy
ZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdib3gyJyk7CisgICAgYm94Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7Cisg
ICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0p
OworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJh
bmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVS
ZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9
CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2EzNGM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9u
bHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGlubGluZSBlbGVtZW50cworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAs
d3JhcHBlciwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2E0NmM3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtaW5saW5lLW9ubHkuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAyMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNpbmxpbmVPbmx5IHsgLXdlYmtp
dC1mbG93LWludG86IGZsb3cxOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDog
MTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206
IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBw
eDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBw
eDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3
cmFwcGVyIj48c3BhbiBpZD0iaW5saW5lT25seSI+PC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJy
ZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9
ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRl
c3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgaW5saW5lIGVsZW1lbnRzIik7
CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOwor
ICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKwor
CisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVy
IiwgMCwgIndyYXBwZXIiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDAp
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMDU5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdp
b25GbG93UmFuZ2VzLiBUZXh0IGJyZWFrcyBpbiB0d28gcmVnaW9ucworCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCwjdGV4dCw0XSBpcyBlcXVhbCB0byBbd3JhcHBl
ciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQs
NSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lZjEzYjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25G
bG93UmFuZ2VzIGluIHZlcnRpY2FsLXJsIG1vZGUuIFRleHQgYnJlYWtzIGludG8gdHdvIHJlZ2lv
bnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0g
aXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFw
cGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41MjU3YWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKQEAgLTAs
MCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgfQor
ICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250
LXNpemU6IDUwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9Cisg
ICAgI2JveCB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTt9CisgICAgI3JlZ2lvbjEgeyAtd2Vi
a2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAy
MHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93
MTsgd2lkdGg6IDYwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveCI+VGV4dCBub2RlLjwvZGl2PjwvZGl2
PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0i
cmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigi
W0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBpbiB2ZXJ0
aWNhbC1ybCBtb2RlLiBUZXh0IGJyZWFrcyBpbnRvIHR3byByZWdpb25zIik7CisgICAgdmFyIHJl
Z2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdp
b24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWco
IkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0
IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0p
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uM2VlNzI5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5
IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1
MHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gg
eyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93
LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9w
OiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRo
OiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2
IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3giPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRp
diBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdp
b25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMuIFRleHQgYnJlYWtzIGlu
IHR3byByZWdpb25zIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjIiKTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MCksIFsid3JhcHBlciIsIDAsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
I3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93
cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIp
LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dz
KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1s
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzNjk2
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NS
ZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRpY2Fs
LWxyIG1vZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitFbXB0
eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVuZ3RoIGlz
IDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFuZ2UxLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3Jh
cHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gx
LDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0
aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwx
LHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMg
YmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJv
eDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gx
LDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdyYXBwZXIs
MV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNpemUKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBl
cXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNT
IEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFT
UyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBl
cXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBz
byBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2UxLmxlbmd0
aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBbd3JhcHBl
ciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94
MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQs
NSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0
aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwwLGJv
eDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy12ZXJ0LWxyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjM0ZWYyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRt
bCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgfQorICAgIGJvZHkgeyBmb250
LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiAxMzVweDsgcGFkZGluZzogMTBweDt9
CisgICAgI2JveDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOyB3aWR0aDogMTEwcHg7
IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3
aWR0aDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDog
MjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDog
NjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lv
bjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDI1MHB4
OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlk
PSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rp
dj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxk
aXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24z
IiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1s
ciBtb2RlIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24z
Iik7CisKKyAgICBkZWJ1ZygiRW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAw
KTsKKyAgICB2YXIgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVidWco
IkZsb3cgYXJ0aWNsZSIpOworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImFydGljbGUiKTsKKyAgICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cx
IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAg
IHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UzID0g
cmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTMsIDApLCBbImJveDEiLCAxLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQgdGV4
dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZhciB0
ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIg
PSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJh
bmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
My5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwg
IFsiYm94MSIsIDIsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZvbnQg
c2l6ZSIpOworICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndyYXBw
ZXIiKTsKKyAgICB3cmFwcGVyLnN0eWxlLmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9u
Mi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDAp
LCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0ZXh0
IiwgNSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRlbnQg
bm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAgdmFy
IGJveDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5bGUu
d2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVy
IiwgMCwgImJveDEiLCAwXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MSksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3Rl
eHQiLCA1LCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAsICJi
b3gxIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0
eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmM4YTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQyIEBACitbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1y
bCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkg
cmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAw
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwx
LGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3
cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJs
b2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gx
LDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlz
IDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwy
XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFd
IGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNT
IHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBB
cnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1Mg
cmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1
YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28g
aXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGgg
aXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIs
MCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEs
MSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUs
Ym94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gx
LDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdmVydC1ybC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtdmVydC1ybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjYwMTE1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwg
eyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IH0KKyAgICBib2R5IHsgZm9udC1m
YW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9Cisg
ICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFj
a2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQor
ICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDExMHB4OyBw
YWRkaW5nOiAxMHB4O30KKyAgICAjYm94MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lk
dGg6IDEwcHg7IHBhZGRpbmc6IDVweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzE7IHdpZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1
MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYw
cHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24z
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsg
bGVmdDogMjBweDsgdG9wOiAzNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0i
YXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+
PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2
IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIg
Y2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lv
bnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVydGljYWwtcmwg
bW9kZSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24y
Iik7CisgICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIp
OworCisgICAgZGVidWcoIkVtcHR5IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9u
MS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UxLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7
CisgICAgdmFyIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJG
bG93IGFydGljbGUiKTsKKyAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJhcnRpY2xlIik7CisgICAgYXJ0aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7
CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICBy
YW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRF
dmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5n
ZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJl
Z2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2Uz
LCAwKSwgWyJib3gxIiwgMSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQg
bm9kZSB0byByZWdpb24yIChjcmVhdGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4
dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJib3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJh
bmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0g
cmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBb
ImJveDEiLCAyLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNp
emUiKTsKKyAgICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVy
Iik7CisgICAgd3JhcHBlci5zdHlsZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSBy
ZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
Mi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwg
WyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIs
IDUsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5v
ZGUsIHNvIGl0IHdpbGwgbW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBi
b3gyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndl
YmtpdEZsb3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
Mik7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMF0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEp
LCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0
IiwgNSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94
MSIsIDFdKTsKKworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0
eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCitoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDQwNjlmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmIt
bHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1vZGVzCitQQVNT
IHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIEFycmF5IFtib3gzLDEsYm94MywyXSBpcyBl
cXVhbCB0byBbYm94MywxLGJveDMsMl0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMl0KK1BBU1MgcmFu
Z2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsYm94MywxXSBpcyBlcXVhbCB0byBb
Ym94MSwyLGJveDMsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorSG9yaXpvbnRhbCBUQgorWAorVmVydGljYWwgTFJIb3Jpem9udGFsIEJUCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Njk4MmY5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy1ybC1yYi1sci5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0Pgor
PHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwgO30K
KyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9u
dC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQor
ICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOyB9CisgICAgI2JveDExIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6
IDMwcHg7IG1hcmdpbi1yaWdodDogNzBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ct
ZnJvbTogZmxvdzsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDQwMHB4OyAgfQorICAgICNyZWdpb24y
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA0MDBweDsg
IH0KKyAgICAjcmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogNDAwcHg7ICB9CisgICAgI2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9y
aXpvbnRhbC10YjsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6
IDQwMHB4O30KKyAgICAjYm94MjIgeyBoZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiB3aGl0ZTsgfQorICAgICNib3gzIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZl
cnRpY2FsLWxyOyAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTUwcHg7IGhl
aWdodDogNDAwcHg7fQorICAgICNib3g0IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250
YWwtYnQ7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogMjAw
cHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMjBweDt9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAg
IDwhLS1kaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rp
dj48ZGl2IGlkPSJib3gyIj5WZXJ0IFJMPC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydCBMUjwvZGl2
PjxkaXYgaWQ9ImJveDQiPkhvcml6b250YWwgQlQ8L2Rpdj48L2Rpdi0tPgorCisgICAgPGRpdiBp
ZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MTEiPjwvZGl2PjxkaXYgaWQ9
ImJveDIiPkhvcml6b250YWwgVEI8ZGl2IGlkPSJib3gyMiI+WDwvZGl2PjwvZGl2PjxkaXYgaWQ9
ImJveDMiPlZlcnRpY2FsIExSPGRpdiBpZD0iYm94NCI+SG9yaXpvbnRhbCBCVDwvZGl2PjwvZGl2
PjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2
PgorICAgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYg
aWQ9InJlZ2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6
Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgbWl4ZWQgdmVydGljYWwgbW9kZXMiKTsKKyAgICByZWdp
b24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByZWdpb24yID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICByZWdpb24zID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVu
Z3RoIiwgMik7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3Jh
cHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTEsIDEpLCBbImJveDMiLCAxLCAiYm94MyIsIDJdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
Ym94MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAx
KTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMiwg
ImJveDMiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmls
aXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXdyaXRpbmctbW9kZXMtdGItcmwtbHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTU5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRi
LXJsLWxyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gVGVzdCBm
b3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2Rlcwor
UEFTUyByYW5nZTEubGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlz
IGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyBBcnJheSBbYm94MywxLGJveDMsMl0g
aXMgZXF1YWwgdG8gW2JveDMsMSxib3gzLDJdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNT
IHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLGJveDMsMV0gaXMgZXF1YWwg
dG8gW2JveDEsMixib3gzLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK1ZlcnRpY2FsIFJMCitYCitWZXJ0aWNhbCBMUlkKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy10Yi1ybC1sci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNhYmRiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJs
LWxyLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQt
c2l6ZTogMzBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAg
ICAjYm94MSB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsgfQorICAgICNib3gxMSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDog
MzBweDsgbWFyZ2luLXRvcDogNzBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4OyAgfQorICAgICNyZWdpb24yIHsg
LXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDsgIH0K
KyAgICAjcmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogNDAwcHg7IGhl
aWdodDogMjAwcHg7ICB9CisgICAgI2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGlj
YWwtcmw7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7IGhlaWdodDogMTUwcHg7IHdpZHRoOiA0MDBw
eDt9CisgICAgI2JveDIyIHsgaGVpZ2h0OiAzMHB4OyB3aWR0aDogMzBweDsgYmFja2dyb3VuZC1j
b2xvcjogd2hpdGU7IH0KKyAgICAjYm94MyB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNh
bC1scjsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogNDAwcHg7IGhlaWdodDog
MTUwcHg7fQorICAgICNib3g0IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7
IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogNjBweDsgcG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDIwcHg7IGxlZnQ6IDIwcHg7fQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8IS0tZGl2
IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gxMSI+PC9kaXY+PGRpdiBp
ZD0iYm94MiI+VmVydCBSTDwvZGl2PjxkaXYgaWQ9ImJveDMiPlZlcnQgTFI8L2Rpdj48ZGl2IGlk
PSJib3g0Ij5Ib3Jpem9udGFsIEJUPC9kaXY+PC9kaXYtLT4KKworICAgIDxkaXYgaWQ9IndyYXBw
ZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5W
ZXJ0aWNhbCBSTDxkaXYgaWQ9ImJveDIyIj5YPC9kaXY+PC9kaXY+PGRpdiBpZD0iYm94MyI+VmVy
dGljYWwgTFI8ZGl2IGlkPSJib3g0Ij5ZPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgICAgPGRp
diBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9u
MiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRl
YnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZv
ciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcyIpOworICAgIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMSIpOworICAgIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMiIpOworICAgIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMyIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MyIsIDEsICJi
b3gzIiwgMl0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7
CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAyLCAiYm94MyIsIDFdKTsKKworZnVuY3Rp
b24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKK30KKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTI4
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy5odG1sCkBAIC0wLDAgKzEsMTA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3Vu
ZC1jb2xvcjogbGlnaHRibHVlOyBoZWlnaHQ6IDEzNXB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAj
Ym94MSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDogMTEwcHg7IHBhZGRp
bmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyBoZWlnaHQ6
IDEwcHg7IHBhZGRpbmc6IDVweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTog
ZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4
O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4
OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsg
LXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVm
dDogMjBweDsgdG9wOiAzNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0
aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9k
aXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlk
PSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xh
c3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNd
IFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jhbmdlcy4iKTsKKyAgICB2YXIgcmVnaW9u
MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSBy
ZWdpb25zIik7CisgICAgdmFyIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2
YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdp
b24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTMubGVuZ3RoIiwgMCk7CisKKyAgICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFy
IGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGlj
bGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
MS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwg
WyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEi
LCAxLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFw
cGVyIiwgMV0pOworCisgICAgZGVidWcoIkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRl
cyBhbm9ueW1vdXMgYmxvY2spIik7CisgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94
MSIpLmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBl
ciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJv
eDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2Vz
KCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBh
cmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAx
XSk7CisKKyAgICBkZWJ1ZygiSW5jcmVhc2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUu
Zm9udFNpemUgPSAiNDBweCI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAi
Ym94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29t
cGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRd
KTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKwor
ICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJv
bSByZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdib3gyJyk7CisgICAgYm94Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7
CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0Iiwg
NF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAg
IHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhp
ZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7
Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVs
cGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKaW5k
ZXggOWZlYjFhMS4uMWY4ZTJjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3Jlc291cmNlcy9oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291
cmNlcy9oZWxwZXIuanMKQEAgLTE2MCwzICsxNjAsMzkgQEAgZnVuY3Rpb24gYXNzZXJ0KGV4cHJl
c3Npb24sIGZhaWxNZXNzYWdlKQogewogICAgIGV4cHJlc3Npb24gPyBsb2dQYXNzTWVzc2FnZSgi
IikgOiBsb2dGYWlsTWVzc2FnZShmYWlsTWVzc2FnZSk7CiB9CisKKy8vIHVzZWQgYnkgZ2V0UmVn
aW9uRmxvd1JhbmdlcyB0ZXN0cworZnVuY3Rpb24gZ2V0TmFtZShub2RlKSB7CisgIGlmICghbm9k
ZSkgcmV0dXJuICJ1bmRlZmluZWQiOworICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBUZXh0
IG5vZGUKKyAgICByZXR1cm4gIiN0ZXh0IjsKKyAgLy8gYWxsIHRoZSBvdGhlcnMgc2hvdWxkIGhh
dmUgYW4gaWQKKyAgcmV0dXJuIG5vZGUuaWQ7Cit9CisKK2Z1bmN0aW9uIGdldFJhbmdlQXQoYXJy
UmFuZ2UsIGluZGV4KSB7CisgIGlmIChpbmRleCA8IGFyclJhbmdlLmxlbmd0aCkKKyAgICByZXR1
cm4gW2dldE5hbWUoYXJyUmFuZ2VbaW5kZXhdLnN0YXJ0Q29udGFpbmVyKSwgYXJyUmFuZ2VbaW5k
ZXhdLnN0YXJ0T2Zmc2V0LCBnZXROYW1lKGFyclJhbmdlW2luZGV4XS5lbmRDb250YWluZXIpLCBh
cnJSYW5nZVtpbmRleF0uZW5kT2Zmc2V0XTsKKyAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9u
IGNvbXBhcmVBcnJheXMoY3VycmVudCwgZXhwZWN0ZWQpIHsKKyAgICB0cnkgeworICAgICAgICBp
ZiAoY3VycmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJOdWxsIG9iamVj
dC4gRXhwZWN0ZWQgWyIgKyBleHBlY3RlZC50b1N0cmluZygpICsgIl0gd2FzIG51bGwiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudC5sZW5ndGgg
IT09IGV4cGVjdGVkLmxlbmd0aCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQXJyYXkgbGVu
Z3RoIGRpZmZlcnMuIEV4cGVjdGVkIFsiICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdIHdhcyBb
IiArIGN1cnJlbnQudG9TdHJpbmcoKSArICJdIik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgaWYgKGN1cnJlbnRbaV0gIT09IGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQgWyIgICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJd
LiBXYXMgWyIgKyBjdXJyZW50LnRvU3RyaW5nKCkgKyAiXSIpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICB0ZXN0RmFp
bGVkKGN1cnJlbnQgKyAiIHRocmV3IGV4Y2VwdGlvbiAiICsgZXgpOworICAgIH0KKyAgICB0ZXN0
UGFzc2VkKCJBcnJheSBbIiAgKyBleHBlY3RlZC50b1N0cmluZygpICsgIl0gaXMgZXF1YWwgdG8g
WyIgKyBjdXJyZW50LnRvU3RyaW5nKCkgKyAiXSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlOTQ5OGEu
LjE1NDVjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMi0wOS0wNiAgUmF1bCBI
dWRlYSAgPHJodWRlYUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTU1JlZ2lvbnNdW0NTU09NXSBJ
bXBsZW1lbnQgRWxlbWVudC5nZXRSZWdpb25GbG93UmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZ2V0UmVnaW9uRmxvd1Jh
bmdlcyBmdW5jdGlvbiBmcm9tIHRoZSBDU1MgUmVnaW9ucyBzcGVjLiBJdCBpcyBpbXBsZW1lbnRl
ZCBieSBpdGVyYXRpbmcgb3ZlciAKKyAgICAgICAgdGhlIGNvbnRlbnQgbm9kZXMgYW5kIGZpZ3Vy
aW5nIG91dCB3aGljaCBub2RlcyBoYXZlIGJvdW5kaW5nQm94IGludGVyc2VjdGluZyB0aGUgcmVn
aW9uIGJveCBhbmQgZmlndXJpbmcgb3V0CisgICAgICAgIHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0
aW9ucy4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtYWJzb2x1dGUtcG9zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLWNvbnRlbnQtbm9kZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1ub25lLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMt
Zml4ZWQtcG9zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtdmVydC1sci5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMt
dmVydC1ybC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtdGItcmwtbHIuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMuaHRt
bAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6d2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDogYWRkZWQgdGhl
IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMgbWV0aG9kCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlU3Rh
cnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyk6IFVzZSB0aGUgbG9naWNhbFRv
cE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNO
ZXh0UGFnZSk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3Rl
YWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTog
QWRkZWQgYSBzbG93ZXIgcGF0aCB3aGljaCB3b3JrcyB3aXRob3V0IExheW91dFN0YXRlCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6IFVz
ZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2hyaW5rTG9naWNh
bFdpZHRoVG9Bdm9pZEZsb2F0cyk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRl
bnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1l
ZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrQXZhaWxhYmxl
TGluZVdpZHRoSW5SZWdpb24pOiBVc2UgdGhlIGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50
UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFtZWQp
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UpOiBVc2UgdGhl
IGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFtZWQpCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0NvbnRhaW5lZEluTm9k
ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpib3hJbnRlcnNlY3Rz
UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFu
Z2VzKTogcmV0dXJucyBhIHZlY3RvciBvZiBSYW5nZXMgdGhhdCBjb250YWlucyBOb2RlIHRoYXQg
YXJlIHBhcnQgb2YgYSByZWdpb24KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmg6CisgICAgICAgIChSZW5kZXJOYW1lZEZsb3dUaHJlYWQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9u
Ojpsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QpOiBSZXR1cm5zIHRoZSBsb2dpY2Fs
IHRvcCBvZiBhIHJlY3RhbmdsZSBpbnNpZGUgdGhlIGZsb3cgdGhyZWFkIGNvbnRlbnQKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90
dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QpOiBSZXR1cm5zIHRoZSBsb2dpY2FsIGJvdHRvbSBv
ZiBhIHJlY3RhbmdsZSBpbnNpZGUgdGhlIGZsb3cgdGhyZWFkIGNvbnRlbnQKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlZ2lvbjo6Z2V0UmFuZ2VzKTogcHJveHkgdGhlIGdldFJhbmdlcyBjYWxs
IHRvIGl0cyBuYW1lZCBmbG93IHRocmVhZAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdp
b24uaDoKKyAgICAgICAgKFJlbmRlclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
ZWdpb246OmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCk6IFJlbmFtZWQgZnJvbSBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdp
b246OmxvZ2ljYWxCb3R0b21Gb3JGbG93VGhyZWFkQ29udGVudCk6IFJldHVybnMgdGhlIGxvZ2lj
YWwgYm90dG9tIG9mIHRoZSBGbG93VGhyZWFkQ29udGVudCByZWN0CisKIDIwMTItMDktMDYgIEVs
bGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIG5ldyBW
OERlcGVuZGVudFJldGFpbmVkIHRoYXQgYWxsb3dzIGtlZXBpbmcgYSB2ODo6T2JqZWN0IGFsaXZl
IGFzIGxvbmcgYXMgYW5vdGhlciB2ODo6T2JqZWN0IGlzIGFsaXZlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggM2JhZjYxNC4uNzc1ZWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjA0
Myw2ICsyMDQzLDIwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6d2Via2l0UmVnaW9u
T3ZlcnNldCgpIGNvbnN0CiAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwogfQogCitWZWN0b3I8
UmVmUHRyPFJhbmdlPiA+IEVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKSBjb25z
dAoreworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworCisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiByYW5nZU9iamVjdHM7CisgICAgaWYg
KGRvY3VtZW50KCktPmNzc1JlZ2lvbnNFbmFibGVkKCkgJiYgcmVuZGVyZXIoKSAmJiByZW5kZXJl
cigpLT5pc1JlbmRlclJlZ2lvbigpKSB7CisgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0g
dG9SZW5kZXJSZWdpb24ocmVuZGVyZXIoKSk7CisgICAgICAgIGlmIChyZWdpb24tPmlzVmFsaWQo
KSkKKyAgICAgICAgICAgIHJlZ2lvbi0+Z2V0UmFuZ2VzKHJhbmdlT2JqZWN0cyk7CisgICAgfQor
CisgICAgcmV0dXJuIHJhbmdlT2JqZWN0czsKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgRWxl
bWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDkwMjVmYjcuLjI4MzRhNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtNDI2LDYgKzQyNiw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclJl
Z2lvbiogcmVuZGVyUmVnaW9uKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB3ZWJr
aXRSZWdpb25PdmVyc2V0KCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiB3ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3Q7CiAKICAgICBib29sIGhhc0lEKCkgY29uc3Q7
CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IGZi
NjBjNzMuLjUxYzBmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTE0NCw2ICsxNDQsNyBA
QCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gQ1NTIFJlZ2lvbnMgQVBJCiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0UmVnaW9uT3ZlcnNldDsKKyAgICAgICAg
c2VxdWVuY2U8UmFuZ2U+IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKIAogI2lmICFkZWZp
bmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAg
ICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMTAyMTZiYy4uMDA4MWZkMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yMjMyLDcgKzIyMzIsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJsb2NrOjpjb21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGlu
Z0Zsb2F0cyhjb25zdCBSZQogCiAgICAgTGF5b3V0VW5pdCBibG9ja09mZnNldCA9IGxvZ2ljYWxU
b3BGb3JDaGlsZChjaGlsZCk7CiAgICAgaWYgKHJlZ2lvbikKLSAgICAgICAgYmxvY2tPZmZzZXQg
PSBtYXgoYmxvY2tPZmZzZXQsIGJsb2NrT2Zmc2V0ICsgKHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkpOwor
ICAgICAgICBibG9ja09mZnNldCA9IG1heChibG9ja09mZnNldCwgYmxvY2tPZmZzZXQgKyAocmVn
aW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UpKTsKIAogICAgIExheW91dFVuaXQgc3RhcnRPZmYgPSBzdGFydE9mZnNl
dEZvckxpbmUoYmxvY2tPZmZzZXQsIGZhbHNlLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UsIGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkpOwogCkBAIC02ODk2LDcg
KzY4OTYsNyBAQCBib29sIFJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZShMYXlvdXRVbml0IGxvZ2lj
YWxPZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgcGFnZUJvdQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCiAgICAgICAgIHJldHVybiByZWdpb24t
PmlzUmVuZGVyUmVnaW9uU2V0KCkgfHwgcmVnaW9uLT5zdHlsZSgpLT5yZWdpb25PdmVyZmxvdygp
ID09IEJyZWFrUmVnaW9uT3ZlcmZsb3cKLSAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlSdWxl
ID09IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPm9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7CisgICAgICAgICAgICB8fCAocGFnZUJvdW5kYXJ5
UnVsZSA9PSBJbmNsdWRlUGFnZUJvdW5kYXJ5ICYmIHBhZ2VPZmZzZXQgPT0gcmVnaW9uLT5sb2dp
Y2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTcxODcsMjAgKzcxODcsNTEgQEAgYm9vbCBSZW5kZXJCbG9jazo6bGluZVdpZHRoRm9yUGFnaW5h
dGVkTGluZUNoYW5nZWQoUm9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3UKIAogTGF5b3V0VW5p
dCBSZW5kZXJCbG9jazo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0CiB7
Ci0gICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gd29yayB3aXRob3V0IGxheW91
dCBzdGF0ZS4gSXQncyBmaW5lIHRvIHVzZSB0aGUgbGF5b3V0IHN0YXRlIGFzIGEgY2FjaGUKLSAg
ICAvLyBmb3Igc3BlZWQsIGJ1dCB3ZSBuZWVkIGEgc2xvdyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdp
bGwgd2FsayB1cCB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbiBhbmQgZmlndXJlCi0gICAgLy8g
b3V0IG91ciBvZmZzZXQgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlLgogICAgIExheW91dFN0YXRl
KiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3RhdGUoKTsKLSAgICBpZiAoIWxheW91dFN0
YXRlIHx8ICFsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgaWYgKGxheW91dFN0YXRlICYmICFsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSkKKyAgICAg
ICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgaWYgKGxheW91dFN0YXRlKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIgaW4gdGhlIGxheW91
dCBzdGF0ZSBpcyBvdXJzLCBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0aW9uIHdpbGwgYmUg
b2ZmLgorICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBhc3NlcnQgZ2V0cyBoaXQgaW5zaWRlIGNv
bXB1dGVMb2dpY2FsSGVpZ2h0IGZvciBwZXJjZW50YWdlIG1hcmdpbnMsIHNpbmNlIHRoZXkncmUg
Y29tcHV0ZWQgdXNpbmcKKyAgICAgICAgLy8gd2lkdGhzIHdoaWNoIGNhbiB2YXJ5IGluIGVhY2gg
cmVnaW9uLiBVbnRpbCB3ZSBwYXRjaCB0aGF0LCB3ZSBjYW4ndCBoYXZlIHRoaXMgYXNzZXJ0Lgor
ICAgICAgICAvLyBBU1NFUlQobGF5b3V0U3RhdGUtPm1fcmVuZGVyZXIgPT0gdGhpcyk7CiAKLSAg
ICAvLyBGSVhNRTogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHJlbmRlcmVyIGluIHRoZSBsYXlvdXQg
c3RhdGUgaXMgb3Vycywgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb21wdXRhdGlvbiB3aWxsIGJlIG9m
Zi4KLSAgICAvLyBSaWdodCBub3cgdGhpcyBhc3NlcnQgZ2V0cyBoaXQgaW5zaWRlIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0IGZvciBwZXJjZW50YWdlIG1hcmdpbnMsIHNpbmNlIHRoZXkncmUgY29tcHV0
ZWQgdXNpbmcKLSAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFjaCByZWdpb24uIFVu
dGlsIHdlIHBhdGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQuCi0gICAgLy8gQVNT
RVJUKGxheW91dFN0YXRlLT5tX3JlbmRlcmVyID09IHRoaXMpOworICAgICAgICBMYXlvdXRTaXpl
IG9mZnNldERlbHRhID0gbGF5b3V0U3RhdGUtPm1fbGF5b3V0T2Zmc2V0IC0gbGF5b3V0U3RhdGUt
Pm1fcGFnZU9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBvZmZzZXREZWx0YS5oZWlnaHQoKSA6IG9mZnNldERlbHRhLndpZHRoKCk7CisgICAgfQorICAg
IC8vIEZJWE1FOiBSaWdodCBub3csIHRoaXMgYXNzZXJ0IGlzIGhpdCBvdXRzaWRlIGxheW91dCwg
ZnJvbSBsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldCBpbiBzZWxlY3Rpb25HYXBSZWN0c0ZvclJl
cGFpbnQgKGNhbGxlZCBmcm9tIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RBbGwpLgorICAgIC8vIEFT
U0VSVChpblJlbmRlckZsb3dUaHJlYWQoKSk7CiAKLSAgICBMYXlvdXRTaXplIG9mZnNldERlbHRh
ID0gbGF5b3V0U3RhdGUtPm1fbGF5b3V0T2Zmc2V0IC0gbGF5b3V0U3RhdGUtPm1fcGFnZU9mZnNl
dDsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNldERlbHRhLmhl
aWdodCgpIDogb2Zmc2V0RGVsdGEud2lkdGgoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHNs
b3dlciBwYXRoIHRoYXQgZG9lc24ndCB1c2UgbGF5b3V0IHN0YXRlIGFuZCByZWxpZXMgb24gZ2V0
dGluZyB5b3VyIGxvZ2ljYWwgdG9wIGluc2lkZSB0aGUgZW5jbG9zaW5nIGZsb3cgdGhyZWFkLiBJ
dCBkb2Vzbid0CisgICAgLy8gd29yayB3aXRoIGNvbHVtbnMgb3IgcGFnZXMgY3VycmVudGx5LCBi
dXQgaXQgc2hvdWxkIG9uY2UgdGhleSBoYXZlIGJlZW4gc3dpdGNoZWQgb3ZlciB0byB1c2luZyBm
bG93IHRocmVhZHMuCisgICAgaWYgKCFpblJlbmRlckZsb3dUaHJlYWQoKSkKKyAgICAgICAgcmV0
dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisKKyAgICBjb25zdCBSZW5kZXJCbG9jayogY3VycmVudEJs
b2NrID0gdGhpczsKKyAgICBMYXlvdXRSZWN0IGJsb2NrUmVjdCgwLCAwLCB3aWR0aCgpLCBoZWln
aHQoKSk7CisKKyAgICB3aGlsZSAoY3VycmVudEJsb2NrICYmICFjdXJyZW50QmxvY2stPmlzUmVu
ZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluZXJCbG9jayA9
IGN1cnJlbnRCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIEFTU0VSVChjb250YWlu
ZXJCbG9jayk7CisgICAgICAgIGlmICghY29udGFpbmVyQmxvY2spCisgICAgICAgICAgICByZXR1
cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICAgICAgTGF5b3V0UG9pbnQgY3VycmVudEJsb2NrTG9j
YXRpb24gPSBjdXJyZW50QmxvY2stPmxvY2F0aW9uKCk7CisKKyAgICAgICAgaWYgKGNvbnRhaW5l
ckJsb2NrLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpICE9IGN1cnJlbnRCbG9jay0+c3R5bGUoKS0+
d3JpdGluZ01vZGUoKSkgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBwdXQgdGhlIGJsb2Nr
IHJlY3QgaW4gY29udGFpbmVyIGNvb3JkaW5hdGVzCisgICAgICAgICAgICAvLyBhbmQgd2UgaGF2
ZSB0byB0YWtlIGludG8gYWNjb3VudCBib3RoIHRoZSBjb250YWluZXIgYW5kIGN1cnJlbnQgYmxv
Y2sgZmxpcHBpbmcgbW9kZXMKKyAgICAgICAgICAgIGlmIChjb250YWluZXJCbG9jay0+c3R5bGUo
KS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChj
b250YWluZXJCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYmxvY2tSZWN0LnNldFkoY3VycmVudEJsb2NrLT5oZWlnaHQoKSAtIGJsb2NrUmVjdC5t
YXhZKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tS
ZWN0LnNldFgoY3VycmVudEJsb2NrLT53aWR0aCgpIC0gYmxvY2tSZWN0Lm1heFgoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50QmxvY2stPmZsaXBGb3JXcml0aW5nTW9kZShi
bG9ja1JlY3QpOworICAgICAgICB9CisgICAgICAgIGJsb2NrUmVjdC5tb3ZlQnkoY3VycmVudEJs
b2NrTG9jYXRpb24pOworICAgICAgICBjdXJyZW50QmxvY2sgPSBjb250YWluZXJCbG9jazsKKyAg
ICB9OworICAgIHJldHVybiBjdXJyZW50QmxvY2stPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBibG9ja1JlY3QueSgpLnRvSW50KCkgOiBibG9ja1JlY3QueCgpLnRvSW50KCk7CiB9CiAKIFJl
bmRlclJlZ2lvbiogUmVuZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCBi
bG9ja09mZnNldCkgY29uc3QKQEAgLTcyNDgsOSArNzI3OSw5IEBAIFJlbmRlclJlZ2lvbiogUmVu
ZGVyQmxvY2s6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24p
IGNvbnN0CiAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb247CiAgICAgZW5jbG9zaW5nUmVuZGVy
Rmxvd1RocmVhZCgpLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5k
UmVnaW9uKTsKICAgICAKLSAgICBpZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5vZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgPCBzdGFydFJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpKQorICAgIGlmIChzdGFydFJlZ2lvbiAmJiByZWdpb24tPmxvZ2ljYWxU
b3BGb3JGbG93VGhyZWFkQ29udGVudCgpIDwgc3RhcnRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpKQogICAgICAgICByZXR1cm4gc3RhcnRSZWdpb247Ci0gICAgaWYgKGVu
ZFJlZ2lvbiAmJiByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSA+IGVu
ZFJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpKQorICAgIGlmIChlbmRS
ZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA+IGVuZFJl
Z2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBl
bmRSZWdpb247CiAgICAgCiAgICAgcmV0dXJuIHJlZ2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKaW5kZXggYzhjYTdjOC4uMjFkZTY2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIExheW91dFVuaXQgUmVu
ZGVyQm94OjpzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRN
YXJnaW5TdGFyCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wUG9zaXRpb24gPSBsb2dpY2FsVG9w
KCk7CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RlZFBhZ2VPZmZzZXRGb3JDb250YWluaW5nQmxvY2sg
PSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIC0gbG9naWNhbFRvcCgpOwogICAgIGlm
IChyZWdpb24pIHsKLSAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVn
aW9uID0gcmVnaW9uID8gcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkg
LSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIDogWkVST19MQVlPVVRfVU5JVDsKKyAg
ICAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVnaW9uID0gcmVnaW9uID8g
cmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9VVF9VTklUOwogICAgICAgICBsb2dpY2FsVG9w
UG9zaXRpb24gPSBtYXgobG9naWNhbFRvcFBvc2l0aW9uLCBsb2dpY2FsVG9wUG9zaXRpb24gKyBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVnaW9uKTsKICAgICAgICAgY29udGFpbmluZ0Jsb2NrUmVn
aW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVnaW9uKTsKICAgICB9CkBAIC0x
MjE5LDcgKzEyMTksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrQXZh
aWxhYmxlTGluZVdpZHRoSW5SZWdpb24oUmVuZGVyUmVnaW9uKiByZQogICAgIExheW91dFVuaXQg
bG9naWNhbFRvcFBvc2l0aW9uID0gbG9naWNhbFRvcCgpOwogICAgIExheW91dFVuaXQgYWRqdXN0
ZWRQYWdlT2Zmc2V0Rm9yQ29udGFpbmluZ0Jsb2NrID0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSAtIGxvZ2ljYWxUb3AoKTsKICAgICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIExheW91
dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+b2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgICAgIExheW91dFVuaXQgb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dU
aHJlYWRDb250ZW50KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIDogWkVST19M
QVlPVVRfVU5JVDsKICAgICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gbWF4KGxvZ2ljYWxUb3BQ
b3NpdGlvbiwgbG9naWNhbFRvcFBvc2l0aW9uICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lv
bik7CiAgICAgICAgIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRBbmRF
bmRSZWdpb25zKHJlZ2lvbik7CiAgICAgfQpAQCAtMjUwNSw3ICsyNTA1LDcgQEAgc3RhdGljIHZv
aWQgY29tcHV0ZUlubGluZVN0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9naWNhbExlZnQsIExlbmd0
aCYgbG9naWNhbFJpZ2gKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uICYmIGN1cnItPmlzUmVu
ZGVyQmxvY2soKSkgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogY2Ig
PSB0b1JlbmRlckJsb2NrKGN1cnIpOwogICAgICAgICAgICAgICAgICAgICByZWdpb24gPSBjYi0+
Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwotICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJCb3hSZWdpb25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8ocmVn
aW9uLCByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7CisgICAgICAg
ICAgICAgICAgICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94
UmVnaW9uSW5mbyhyZWdpb24sIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50
KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYm94SW5mbykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY1Bvc2l0aW9uICs9IGJveEluZm8tPmxvZ2ljYWxMZWZ0KCk7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMjUyNCw3ICsyNTI0LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUlubGlu
ZVN0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9naWNhbExlZnQsIExlbmd0aCYgbG9naWNhbFJpZ2gK
ICAgICAgICAgICAgICAgICBpZiAocmVnaW9uICYmIGN1cnItPmlzUmVuZGVyQmxvY2soKSkgewog
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyQmxvY2sqIGNiID0gdG9SZW5kZXJCbG9j
ayhjdXJyKTsKICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRB
bmRFbmRSZWdpb25zKHJlZ2lvbik7Ci0gICAgICAgICAgICAgICAgICAgICBSZW5kZXJCb3hSZWdp
b25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9uLCByZWdpb24t
Pm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJCb3hSZWdpb25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8o
cmVnaW9uLCByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgIGlmIChib3hJbmZvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY3VyciAhPSBjb250YWluZXJCbG9jaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNQb3NpdGlvbiAtPSBjYi0+bG9naWNhbFdpZHRoKCkgLSAoYm94SW5mby0+bG9naWNhbExl
ZnQoKSArIGJveEluZm8tPmxvZ2ljYWxXaWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggNGU4M2NjYS4uNTRmZWQ4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAKQEAgLTI3LDggKzI3LDEzIEBACiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgiCiAKICNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIklu
bGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlcklu
bGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUg
IldlYktpdE5hbWVkRmxvdy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOTMsNCArMzk4
LDE3MSBAQCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXRO
YW1lZEZsb3c6OkZsb3dTdGF0ZU51bGw7CiB9CiAKK3N0YXRpYyBib29sIGlzQ29udGFpbmVkSW5O
b2RlcyhWZWN0b3I8Tm9kZSo+IG90aGVycywgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG90aGVycy5zaXplKCk7IGkrKykgeworICAgICAgICBOb2RlKiBvdGhlciA9
IG90aGVycy5hdChpKTsKKyAgICAgICAgaWYgKG90aGVyLT5jb250YWlucyhub2RlKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp
YyBib29sIGJveEludGVyc2VjdHNSZWdpb24oTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yQm94LCBM
YXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JCb3gsIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJl
Z2lvbiwgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uKQoreworICAgIGJvb2wgcmVn
aW9uSXNFbXB0eSA9IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24gIT0gTUFYX0xBWU9VVF9VTklUICYm
IGxvZ2ljYWxUb3BGb3JSZWdpb24gIT0gTUlOX0xBWU9VVF9VTklUCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgKGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24gLSBsb2dpY2FsVG9wRm9yUmVnaW9u
KSA8PSAwOworICAgIHJldHVybiAgKGxvZ2ljYWxCb3R0b21Gb3JCb3ggLSBsb2dpY2FsVG9wRm9y
Qm94KSA+IDAKKyAgICAgICAgICAgICYmICFyZWdpb25Jc0VtcHR5CisgICAgICAgICAgICAmJiBs
b2dpY2FsVG9wRm9yQm94IDwgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiAmJiBsb2dpY2FsVG9wRm9y
UmVnaW9uIDwgbG9naWNhbEJvdHRvbUZvckJveDsKK30KKwordm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JiByYW5nZU9iamVjdHMsIGNv
bnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAoreworICAgIExheW91dFVuaXQgbG9naWNh
bFRvcEZvclJlZ2lvbjsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb247CisK
KyAgICAvLyBleHRlbmQgdGhlIGZpcnN0IHJlZ2lvbiB0b3AgdG8gY29udGFpbiBldmVyeXRoaW5n
IHVwIHRvIGl0cyBsb2dpY2FsIGhlaWdodAorICAgIGlmIChyZWdpb24tPmlzRmlyc3RSZWdpb24o
KSkKKyAgICAgICAgbG9naWNhbFRvcEZvclJlZ2lvbiA9IE1JTl9MQVlPVVRfVU5JVDsKKyAgICBl
bHNlCisgICAgICAgIGxvZ2ljYWxUb3BGb3JSZWdpb24gPSAgcmVnaW9uLT5sb2dpY2FsVG9wRm9y
Rmxvd1RocmVhZENvbnRlbnQoKTsKKworICAgIC8vIGV4dGVuZCB0aGUgbGFzdCByZWdpb24gdG8g
Y29udGFpbiBldmVyeXRoaW5nIGFib3ZlIGl0cyB5KCkKKyAgICBpZiAocmVnaW9uLT5pc0xhc3RS
ZWdpb24oKSkKKyAgICAgICAgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiA9IE1BWF9MQVlPVVRfVU5J
VDsKKyAgICBlbHNlCisgICAgICAgIGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24gPSByZWdpb24tPmxv
Z2ljYWxCb3R0b21Gb3JGbG93VGhyZWFkQ29udGVudCgpOworCisgICAgVmVjdG9yPE5vZGUqPiBu
b2RlczsKKyAgICAvLyBlbGltaW5hdGUgdGhlIGNvbnRlbnROb2RlcyB0aGF0IGFyZSBkZXNjZW5k
YW50cyBvZiBvdGhlciBjb250ZW50Tm9kZXMKKyAgICBmb3IgKE5hbWVkRmxvd0NvbnRlbnROb2Rl
czo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb250ZW50Tm9kZXMoKS5iZWdpbigpOyBpdCAhPSBjb250
ZW50Tm9kZXMoKS5lbmQoKTsgKytpdCkgeworICAgICAgICBOb2RlKiBub2RlID0gKml0OworICAg
ICAgICBpZiAoIWlzQ29udGFpbmVkSW5Ob2Rlcyhub2Rlcywgbm9kZSkpCisgICAgICAgICAgICBu
b2Rlcy5hcHBlbmQobm9kZSk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
b2Rlcy5zaXplKCk7IGkrKykgeworICAgICAgICBOb2RlKiBjb250ZW50Tm9kZSA9IG5vZGVzLmF0
KGkpOworICAgICAgICBpZiAoIWNvbnRlbnROb2RlLT5yZW5kZXJlcigpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOworICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShjb250ZW50Tm9kZS0+ZG9j
dW1lbnQoKSk7CisgICAgICAgIGJvb2wgZm91bmRTdGFydFBvc2l0aW9uID0gZmFsc2U7CisgICAg
ICAgIGJvb2wgc3RhcnRzQWJvdmVSZWdpb24gPSB0cnVlOworICAgICAgICBib29sIGVuZHNCZWxv
d1JlZ2lvbiA9IHRydWU7CisgICAgICAgIGJvb2wgc2tpcE92ZXJPdXRzaWRlTm9kZXMgPSBmYWxz
ZTsKKyAgICAgICAgTm9kZSogbGFzdEVuZE5vZGUgPSAwOworCisgICAgICAgIGZvciAoTm9kZSog
bm9kZSA9IGNvbnRlbnROb2RlOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShj
b250ZW50Tm9kZSkpIHsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveDsKKyAgICAg
ICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSkKKyAgICAgICAgICAgICAgICBi
b3VuZGluZ0JveCA9IHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKS0+bGluZXNCb3VuZGluZ0JveCgp
OworICAgICAgICAgICAgZWxzZSBpZiAocmVuZGVyZXItPmlzVGV4dCgpKQorICAgICAgICAgICAg
ICAgIGJvdW5kaW5nQm94ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKS0+bGluZXNCb3VuZGluZ0Jv
eCgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYm91bmRpbmdCb3ggPSAg
dG9SZW5kZXJCb3gocmVuZGVyZXIpLT5mcmFtZVJlY3QoKTsKKyAgICAgICAgICAgICAgICBpZiAo
dG9SZW5kZXJCb3gocmVuZGVyZXIpLT5pc1JlbFBvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYm91bmRpbmdCb3gubW92ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnJlbGF0aXZlUG9z
aXRpb25Mb2dpY2FsT2Zmc2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMYXlv
dXRVbml0IG9mZnNldFRvcCA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKS0+b2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpOworICAgICAgICAgICAgY29uc3QgTGF5b3V0UG9pbnQg
bG9naWNhbE9mZnNldEZyb21Ub3AoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IFpFUk9fTEFZ
T1VUX1VOSVQgOiAgb2Zmc2V0VG9wLAorICAgICAgICAgICAgICAgIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBvZmZzZXRUb3AgOiBaRVJPX0xBWU9VVF9VTklUKTsKKworICAgICAgICAgICAg
Ym91bmRpbmdCb3gubW92ZUJ5KGxvZ2ljYWxPZmZzZXRGcm9tVG9wKTsKKworICAgICAgICAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yUmVuZGVyZXIgPSByZWdpb24tPmxvZ2ljYWxUb3BPZkZs
b3dUaHJlYWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7CisgICAgICAgICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxCb3R0b21Gb3JSZW5kZXJlciA9IHJlZ2lvbi0+bG9naWNhbEJvdHRvbU9mRmxvd1Ro
cmVhZENvbnRlbnRSZWN0KGJvdW5kaW5nQm94KTsKKworICAgICAgICAgICAgLy8gaWYgdGhlIGJv
dW5kaW5nIGJveCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGRvZXNuJ3QgaW50ZXJzZWN0IHRoZSBy
ZWdpb24gYm94CisgICAgICAgICAgICAvLyBjbG9zZSB0aGUgY3VycmVudCByYW5nZSBvbmx5IGlm
IHRoZSBzdGFydCBlbGVtZW50IGJlZ2FuIGluc2lkZSB0aGUgcmVnaW9uLAorICAgICAgICAgICAg
Ly8gb3RoZXJ3aXNlIGp1c3QgbW92ZSB0aGUgc3RhcnQgcG9zaXRpb24gYWZ0ZXIgdGhpcyBub2Rl
IGFuZCBrZWVwIHNraXBwaW5nIHRoZW0gdW50aWwgd2UgZm91bmQgYSBwcm9wZXIgc3RhcnQgcG9z
aXRpb24uCisgICAgICAgICAgICBpZiAoIWJveEludGVyc2VjdHNSZWdpb24obG9naWNhbFRvcEZv
clJlbmRlcmVyLCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIsIGxvZ2ljYWxUb3BGb3JSZWdpb24s
IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24pKSB7CisgICAgICAgICAgICAgICAgaWYgKGZvdW5kU3Rh
cnRQb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0c0Fib3ZlUmVnaW9u
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2UtPmludGVyc2VjdHNOb2RlKG5v
ZGUsIGlnbm9yZWRFeGNlcHRpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdl
LT5zZXRFbmRCZWZvcmUobm9kZSwgaWdub3JlZEV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICByYW5nZU9iamVjdHMuYXBwZW5kKHJhbmdlLT5jbG9uZVJhbmdlKGlnbm9yZWRFeGNl
cHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShj
b250ZW50Tm9kZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHNB
Ym92ZVJlZ2lvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2tpcE92ZXJPdXRzaWRlTm9kZXMgPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2tpcE92ZXJPdXRzaWRlTm9kZXMpCisgICAgICAg
ICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydEFmdGVyKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24p
OworICAgICAgICAgICAgICAgIGZvdW5kU3RhcnRQb3NpdGlvbiA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBzdGFydCBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGxvZ2ljYWxUb3BGb3JSZW5kZXJlciA8IGxvZ2ljYWxU
b3BGb3JSZWdpb24gJiYgc3RhcnRzQWJvdmVSZWdpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAo
cmVuZGVyZXItPmlzVGV4dCgpKSB7IC8vIFRleHQgY3Jvc3NlcyByZWdpb24gdG9wCisgICAgICAg
ICAgICAgICAgICAgIC8vIGZvciBUZXh0IGVsZW1lbnRzLCBqdXN0IGZpbmQgdGhlIGxhc3QgdGV4
dGJveCB0aGF0IGlzIGNvbnRhaW5lZCBpbnNpZGUgdGhlIHJlZ2lvbiBhbmQgdXNlIGl0cyBzdGFy
dCgpIG9mZnNldCBhcyBzdGFydCBwb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICBSZW5kZXJU
ZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyZXIpOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IHRleHRSZW5kZXJlci0+Zmlyc3RUZXh0
Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob2Zmc2V0VG9wICsgYm94LT5sb2dpY2FsQm90dG9tKCkgPCBsb2dpY2FsVG9w
Rm9yUmVnaW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KFBvc2l0aW9uKHRvVGV4dChub2RlKSwg
Ym94LT5zdGFydCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHNBYm92ZVJlZ2lv
biA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBub2RlIGNyb3NzZXMgcmVnaW9u
IHRvcAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYWxsIGVsZW1lbnRzLCBleGNlcHQgVGV4
dCwganVzdCBzZXQgdGhlIHN0YXJ0IHBvc2l0aW9uIHRvIGJlIGJlZm9yZSB0aGVpciBjaGlsZHJl
bgorICAgICAgICAgICAgICAgICAgICBzdGFydHNBYm92ZVJlZ2lvbiA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUNoaWxkcmVuKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlIHsgLy8gbm9kZSBzdGFydHMgaW5zaWRlIHJlZ2lvbgorICAgICAgICAgICAgICAgIC8v
IGZvciBlbGVtZW50cyB0aGF0IHN0YXJ0IGluc2lkZSB0aGUgcmVnaW9uLCBzZXQgdGhlIHN0YXJ0
IHBvc2l0aW9uIHRvIGJlIGJlZm9yZSB0aGVtLiBJZiB3ZSBmb3VuZCBvbmUsIHdlIHdpbGwganVz
dCBza2lwIHRoZSBvdGhlcnMgdW50aWwKKyAgICAgICAgICAgICAgICAvLyB0aGUgcmFuZ2UgaXMg
Y2xvc2VkLgorICAgICAgICAgICAgICAgIGlmIChzdGFydHNBYm92ZVJlZ2lvbikgeworICAgICAg
ICAgICAgICAgICAgICBzdGFydHNBYm92ZVJlZ2lvbiA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICByYW5nZS0+c2V0U3RhcnRCZWZvcmUobm9kZSwgaWdub3JlZEV4Y2VwdGlvbik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgc2tpcE92ZXJPdXRzaWRl
Tm9kZXMgID0gZmFsc2U7CisgICAgICAgICAgICBmb3VuZFN0YXJ0UG9zaXRpb24gPSB0cnVlOwor
CisgICAgICAgICAgICAvLyBlbmQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChsb2dpY2FsQm90
dG9tRm9yUmVnaW9uIDwgbG9naWNhbEJvdHRvbUZvclJlbmRlcmVyICYmIChlbmRzQmVsb3dSZWdp
b24gfHwgKCFlbmRzQmVsb3dSZWdpb24gJiYgIW5vZGUtPmlzRGVzY2VuZGFudE9mKGxhc3RFbmRO
b2RlKSkpKSB7CisgICAgICAgICAgICAgICAgLy8gZm9yIFRleHQgZWxlbWVudHMsIGp1c3QgZmlu
ZCBqdXN0IGZpbmQgdGhlIGxhc3QgdGV4dGJveCB0aGF0IGlzIGNvbnRhaW5lZCBpbnNpZGUgdGhl
IHJlZ2lvbiBhbmQgdXNlIGl0cyBzdGFydCgpK2xlbigpIG9mZnNldCBhcyBlbmQgcG9zaXRpb24K
KyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzVGV4dCgpKSB7IC8vIFRleHQgY3Jvc3Nl
cyByZWdpb24gYm90dG9tCisgICAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5k
ZXJlciA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcik7CisgICAgICAgICAgICAgICAgICAgIElubGlu
ZVRleHRCb3gqIGxhc3RCb3g7CisgICAgICAgICAgICAgICAgICAgIGZvciAoSW5saW5lVGV4dEJv
eCogYm94ID0gdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5l
eHRUZXh0Qm94KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgob2Zmc2V0VG9wICsg
Ym94LT5sb2dpY2FsVG9wKCkpIDwgbG9naWNhbEJvdHRvbUZvclJlZ2lvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3RCb3ggPSBib3g7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICByYW5nZS0+c2V0RW5kKFBvc2l0aW9uKHRvVGV4dChub2RlKSwgbGFzdEJveC0+
c3RhcnQoKSArIGxhc3RCb3gtPmxlbigpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbmRzQmVsb3dS
ZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbGFzdEVuZE5vZGUgPSBub2RlOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgY3Jvc3NlcyByZWdpb24gYm90dG9tCisg
ICAgICAgICAgICAgICAgICAgIC8vIGZvciBhbGwgZWxlbWVudHMsIGV4Y2VwdCBUZXh0LCBqdXN0
IHNldCB0aGUgc3RhcnQgcG9zaXRpb24gdG8gYmUgYWZ0ZXIgdGhlaXIgY2hpbGRyZW4KKyAgICAg
ICAgICAgICAgICAgICAgcmFuZ2UtPnNldEVuZChQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0FmdGVyQ2hpbGRyZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kc0JlbG93UmVn
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbGFzdEVuZE5vZGUgPSBub2RlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgZW5kcyBpbnNpZGUg
cmVnaW9uCisgICAgICAgICAgICAgICAgLy8gZm9yIGVsZW1lbnRzIHRoYXQgZW5kcyBpbnNpZGUg
dGhlIHJlZ2lvbiwgc2V0IHRoZSBlbmQgcG9zaXRpb24gdG8gYmUgYWZ0ZXIgdGhlbQorICAgICAg
ICAgICAgICAgIC8vIGFsbG93IHRoaXMgZW5kIHBvc2l0aW9uIHRvIGJlIGNoYW5nZWQgb25seSBi
eSBvdGhlciBlbGVtZW50cyB0aGF0IGFyZSBub3QgZGVzY2VuZGFudHMgb2YgdGhlIGN1cnJlbnQg
ZW5kIG5vZGUKKyAgICAgICAgICAgICAgICBpZiAoZW5kc0JlbG93UmVnaW9uIHx8ICghZW5kc0Jl
bG93UmVnaW9uICYmICFub2RlLT5pc0Rlc2NlbmRhbnRPZihsYXN0RW5kTm9kZSkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRFbmRBZnRlcihub2RlLCBpZ25vcmVkRXhjZXB0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgZW5kc0JlbG93UmVnaW9uID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGxhc3RFbmROb2RlID0gbm9kZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZvdW5kU3RhcnRQb3NpdGlvbiB8fCBz
a2lwT3Zlck91dHNpZGVOb2RlcykKKyAgICAgICAgICAgIHJhbmdlT2JqZWN0cy5hcHBlbmQocmFu
Z2UpOworICAgIH0KK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IGE4YjhiNTEuLjMxOTkzMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKQEAgLTcwLDYgKzcw
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IE5hbWVkRmxvd0NvbnRlbnROb2RlcyYgY29udGVudE5v
ZGVzKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50Tm9kZXM7IH0KICAgICBib29sIGhhc0NvbnRl
bnROb2RlKE5vZGUqIGNvbnRlbnROb2RlKSBjb25zdCB7IEFTU0VSVChjb250ZW50Tm9kZSk7IHJl
dHVybiBtX2NvbnRlbnROb2Rlcy5jb250YWlucyhjb250ZW50Tm9kZSk7IH0KICAgICBib29sIGlz
TWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8
UmVmUHRyPFJhbmdlPiA+JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCA4MGM4NDhiLi44ZjI5Mzc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
UGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3hSZWdp
b25JbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgpAQCAtMzI4LDEzICszMjksMTggQEAgdm9pZCBSZW5kZXJSZWdpb246OmRl
bGV0ZUFsbFJlbmRlckJveFJlZ2lvbkluZm8oKQogICAgIG1fcmVuZGVyQm94UmVnaW9uSW5mby5j
bGVhcigpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlclJlZ2lvbjo6b2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlclJlZ2lvbjo6bG9naWNhbFRv
cE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2lzVmFsaWQgfHwgIW1fZmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgaWYgKG1fZmxvd1RocmVhZC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLnkoKTsKLSAgICByZXR1cm4gZmxvd1Ro
cmVhZFBvcnRpb25SZWN0KCkueCgpOworICAgIGlmICghbV9pc1ZhbGlkIHx8ICFmbG93VGhyZWFk
KCkpCisgICAgICAgIHJldHVybiBaRVJPX0xBWU9VVF9VTklUOworICAgIHJldHVybiBmbG93VGhy
ZWFkKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWN0LnkoKSA6IHJlY3QueCgpOwor
fQorCitMYXlvdXRVbml0IFJlbmRlclJlZ2lvbjo6bG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENv
bnRlbnRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lz
VmFsaWQgfHwgIWZsb3dUaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7
CisgICAgcmV0dXJuIGZsb3dUaHJlYWQoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJl
Y3QubWF4WSgpIDogcmVjdC5tYXhYKCk7CiB9CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjpzZXRSZWdp
b25PYmplY3RzUmVnaW9uU3R5bGUoKQpAQCAtNDk2LDQgKzUwMiwxMCBAQCB2b2lkIFJlbmRlclJl
Z2lvbjo6Y2xlYXJPYmplY3RTdHlsZUluUmVnaW9uKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0
KQogICAgICAgICBjbGVhck9iamVjdFN0eWxlSW5SZWdpb24oY2hpbGQpOwogfQogCit2b2lkIFJl
bmRlclJlZ2lvbjo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0
cykgY29uc3QKK3sKKyAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG5hbWVkRmxvdyA9IHZpZXco
KS0+Zmxvd1RocmVhZENvbnRyb2xsZXIoKS0+ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1l
KHN0eWxlKCktPnJlZ2lvblRocmVhZCgpKTsKKyAgICBuYW1lZEZsb3ctPmdldFJhbmdlcyhyYW5n
ZU9iamVjdHMsIHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggN2M5Yjg3Zi4uNTM3NThlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtNzgsOCArNzgsNiBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGRlbGV0ZUFsbFJlbmRlckJveFJlZ2lvbkluZm8oKTsKIAotICAgIExh
eW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0OwotCiAgICAg
Ym9vbCBpc0ZpcnN0UmVnaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0xhc3RSZWdpb24oKSBjb25z
dDsKIApAQCAtMTAwLDcgKzk4LDE0IEBAIHB1YmxpYzoKICAgICAvLyBoZWlnaHQgb2YgYSBzaW5n
bGUgY29sdW1uIG9yIHBhZ2UgaW4gdGhlIHNldC4KICAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFn
ZUxvZ2ljYWxXaWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNh
bEhlaWdodCgpIGNvbnN0OwotICAgIAorCisgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wT2ZGbG93
VGhyZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OworICAgIExheW91dFVu
aXQgbG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFJlY3Qm
KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdChmbG93VGhy
ZWFkUG9ydGlvblJlY3QoKSk7IH07CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yRmxv
d1RocmVhZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFk
Q29udGVudFJlY3QoZmxvd1RocmVhZFBvcnRpb25SZWN0KCkpOyB9OworCisgICAgdm9pZCBnZXRS
YW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYpIGNvbnN0OworCiAgICAgLy8gVGhpcyBtZXRo
b2QgcmVwcmVzZW50cyB0aGUgbG9naWNhbCBoZWlnaHQgb2YgdGhlIGVudGlyZSBmbG93IHRocmVh
ZCBwb3J0aW9uIHVzZWQgYnkgdGhlIHJlZ2lvbiBvciBzZXQuCiAgICAgLy8gRm9yIFJlbmRlclJl
Z2lvbnMgaXQgbWF0Y2hlcyBsb2dpY2FsUGFnaW5hdGlvbkhlaWdodCgpLCBidXQgZm9yIHNldHMg
aXQgaXMgdGhlIGhlaWdodCBvZiBhbGwgdGhlIHBhZ2VzCiAgICAgLy8gb3IgY29sdW1ucyBhZGRl
ZCB0b2dldGhlci4K
</data>
<flag name="commit-queue"
          id="173626"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162511</attachid>
            <date>2012-09-06 08:17:32 -0700</date>
            <delta_ts>2012-09-10 12:06:45 -0700</delta_ts>
            <desc>Make the qt bot happy</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>88963</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZjNjZDVmLi5kODBhOWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDkt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJl
Z2lvbkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250
ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQt
bHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGlu
Zy1tb2Rlcy1ybC1yYi1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3Jp
dGluZy1tb2Rlcy10Yi1ybC1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvcmVzb3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0
UmFuZ2VBdCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOS0wNiAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGhyZWUgWFNMVFByb2Nlc3Nv
ciBmdW5jdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSBbQ3VzdG9tXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uY2U4Y2FhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw3IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93
UmFuZ2VzIGZvciBhYnNvbHV0ZSBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dy
YXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDc0MTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9z
Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
LmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1m
bG93LWludG86IGZsb3c7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDog
NTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQor
ICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVp
Z2h0OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2Pgor
ICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9y
IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVt
ZW50cyIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0p
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisg
ICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYTY3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5v
ZGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50
IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyB3aXRoIG11bHRpcGxlIGNvbnRlbnQgbm9kZXMK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMg
ZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDIKK1BB
U1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVy
LDFdCitQQVNTIEFycmF5IFt3cmFwcGVyMiwwLHdyYXBwZXIyLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyMiwwLHdyYXBwZXIyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTUzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5v
ZGVzLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7
IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAuZmxvdyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93
MTt9CisgICAgLmJsdWUge2JhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDUwcHg7
IGhlaWdodDogNTBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAg
ICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWln
aHQ6IDEyMHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVy
Ij48ZGl2IGNsYXNzPSJmbG93Ij5UZXh0IG5vZGUuPC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJl
Z2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0i
Ym9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlcjIiPjxkaXYgY2xhc3M9ImZsb3cgYmx1
ZSI+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIElt
cGxlbWVudCBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgd2l0aCBtdWx0aXBsZSBjb250ZW50
IG5vZGVzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
MS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwg
WyJ3cmFwcGVyIiwgMCwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5n
dGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4
dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTIsIDEpLCBbIndyYXBwZXIyIiwgMCwgIndyYXBwZXIyIiwgMV0pOworCisKK2Z1bmN0aW9uIGhp
ZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBo
aWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRp
c3BsYXktbm9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMzFiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1tDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9u
OjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFu
Z2Ugc2hvdWxkIG5vdCBicmVhayByYW5nZXMgYXQgZGlzcGxheTpub25lKQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKzEKKzMKKzUKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyLDAsd3JhcHBlciwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1ub25lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMyZmM4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5o
dG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwv
c2NyaXB0PgorPHN0eWxlPgorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9Cisg
ICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDIwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAx
cHggc29saWQgcmVkOyB9CisgICAgLmZsb3cgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQor
ICAgICN3cmFwcGVyIHAge21hcmdpbjogMDsgcGFkZGluZzogMDt9CisgICAgLm5vbmUge2Rpc3Bs
YXk6IG5vbmU7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0
aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRp
diBpZD0id3JhcHBlciI+PGRpdiBjbGFzcz0iZmxvdyI+PHA+MTwvcD48cCBjbGFzcz0ibm9uZSI+
MjwvcD48cD4zPC9wPjxwIGNsYXNzPSJub25lIj40PC9wPjxwPjU8L3A+PC9kaXY+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVz
Y3JpcHRpb24oIltDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFu
Z2VzIGZvciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVh
ayByYW5nZXMgYXQgZGlzcGxheTpub25lKSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAg
ICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRS
YW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5j
dGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJl
Z2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1y
ZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjI0YWM0NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6
Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZW1wdHkgcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFu
Z2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVh
bCB0byBbd3JhcHBlciwwLHdyYXBwZXIsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHkt
cmVnaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZW1wdHktcmVnaW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmYzNjk1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLmh0bWwKQEAgLTAsMCArMSw1MiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQt
c2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAg
ICAjYm94IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxOyBoZWlnaHQ6IDUwcHg7IG1hcmdpbi10
b3A6IDQwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWV9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0
LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiAzMHB4OyBsZWZ0OiAyMHB4
OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsg
d2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAg
ICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdo
dDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+
PGRpdiBpZD0iYm94Ij48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2Pgor
ICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRl
c2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgZW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsid3JhcHBl
ciIsIDAsICJ3cmFwcGVyIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAw
KTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDAyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNDIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZs
b3dSYW5nZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1w
dHkgcmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBp
cyAwCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dy
YXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEs
MSx3cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3Vz
IGJsb2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxi
b3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94
MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVy
LDFdIGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQ
QVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMg
ZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BB
U1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMg
ZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwg
c28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2Jv
eDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0
LDUsYm94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxi
b3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZml4ZWQtcG9zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdlYWVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpn
ZXRSZWdpb25GbG93UmFuZ2VzIGZvciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJh
bmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzdhODUzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9z
Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
LmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1m
bG93LWludG86IGZsb3c7IHBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBw
eDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAg
ICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAg
IDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJl
Z2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyIp
OworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitm
dW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorICAgIGhpZGVS
ZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjgxZGE4ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1ob3Jpei1idC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0MiBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgaG9yaXpvbnRhbC1idCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BB
U1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRp
Y2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEs
MV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFd
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0g
aXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIg
KGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1Mg
QXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQor
UEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVx
dWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJy
YXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5j
cmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFti
b3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4
dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGls
ZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24z
CitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0g
aXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQs
NF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJd
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMg
ZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc5OGMxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwK
QEAgLTAsMCArMSwxMDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRh
bC1idDsgfQorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBw
ZXIgeyBmb250LXNpemU6IDMwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQg
cmVkOyB9CisgICAgI2FydGljbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdo
dDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjog
bGlnaHRncmVlbjsgaGVpZ2h0OiAxMTBweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7IGhlaWdodDogMTBweDsgcGFkZGluZzogNXB4O30KKyAg
ICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWln
aHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtp
dC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBw
eDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
ICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2
IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIg
Y2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIi
PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdp
b25GbG93UmFuZ2VzIGZvciBob3Jpem9udGFsLWJ0IG1vZGUiKTsKKyAgICB2YXIgcmVnaW9uMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdp
b25zIik7CisgICAgdmFyIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIg
cmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24z
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTMubGVuZ3RoIiwgMCk7CisKKyAgICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFy
dGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUu
c3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3
cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRS
ZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIs
IDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAx
LCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVy
IiwgMV0pOworCisgICAgZGVidWcoIkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBh
bm9ueW1vdXMgYmxvY2spIik7CisgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIp
LmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxv
d1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAg
ICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEi
LCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7
CisKKyAgICBkZWJ1ZygiSW5jcmVhc2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9u
dFNpemUgPSAiNDBweCI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94
MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsK
KyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAg
IGRlYnVnKCJNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSBy
ZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdib3gyJyk7CisgICAgYm94Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7Cisg
ICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0p
OworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJh
bmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVS
ZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9
CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2EzNGM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9u
bHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGlubGluZSBlbGVtZW50cworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAs
d3JhcHBlciwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2E0NmM3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtaW5saW5lLW9ubHkuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAyMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNpbmxpbmVPbmx5IHsgLXdlYmtp
dC1mbG93LWludG86IGZsb3cxOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDog
MTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206
IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBw
eDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBw
eDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3
cmFwcGVyIj48c3BhbiBpZD0iaW5saW5lT25seSI+PC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJy
ZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9
ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRl
c3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgaW5saW5lIGVsZW1lbnRzIik7
CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOwor
ICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKwor
CisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVy
IiwgMCwgIndyYXBwZXIiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDAp
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMDU5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdp
b25GbG93UmFuZ2VzLiBUZXh0IGJyZWFrcyBpbiB0d28gcmVnaW9ucworCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCwjdGV4dCw0XSBpcyBlcXVhbCB0byBbd3JhcHBl
ciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQs
NSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lZjEzYjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25G
bG93UmFuZ2VzIGluIHZlcnRpY2FsLXJsIG1vZGUuIFRleHQgYnJlYWtzIGludG8gdHdvIHJlZ2lv
bnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0g
aXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFw
cGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41MjU3YWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKQEAgLTAs
MCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgfQor
ICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250
LXNpemU6IDUwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9Cisg
ICAgI2JveCB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTt9CisgICAgI3JlZ2lvbjEgeyAtd2Vi
a2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAy
MHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93
MTsgd2lkdGg6IDYwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveCI+VGV4dCBub2RlLjwvZGl2PjwvZGl2
PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0i
cmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigi
W0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBpbiB2ZXJ0
aWNhbC1ybCBtb2RlLiBUZXh0IGJyZWFrcyBpbnRvIHR3byByZWdpb25zIik7CisgICAgdmFyIHJl
Z2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdp
b24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWco
IkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0
IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0p
OworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uM2VlNzI5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5
IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1
MHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gg
eyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93
LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9w
OiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRo
OiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2
IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3giPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRp
diBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdp
b25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMuIFRleHQgYnJlYWtzIGlu
IHR3byByZWdpb25zIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjIiKTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MCksIFsid3JhcHBlciIsIDAsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
I3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93
cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIp
LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dz
KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1s
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzNjk2
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NS
ZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRpY2Fs
LWxyIG1vZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitFbXB0
eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVuZ3RoIGlz
IDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFuZ2UxLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3Jh
cHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gx
LDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0
aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwx
LHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMg
YmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJv
eDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gx
LDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdyYXBwZXIs
MV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNpemUKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBl
cXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNT
IEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFT
UyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBl
cXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBz
byBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2UxLmxlbmd0
aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBbd3JhcHBl
ciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94
MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQs
NSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0
aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwwLGJv
eDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy12ZXJ0LWxyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjM0ZWYyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRt
bCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgfQorICAgIGJvZHkgeyBmb250
LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiAxMzVweDsgcGFkZGluZzogMTBweDt9
CisgICAgI2JveDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOyB3aWR0aDogMTEwcHg7
IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3
aWR0aDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDog
MjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDog
NjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lv
bjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDI1MHB4
OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlk
PSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rp
dj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxk
aXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24z
IiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1s
ciBtb2RlIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24z
Iik7CisKKyAgICBkZWJ1ZygiRW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAw
KTsKKyAgICB2YXIgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVidWco
IkZsb3cgYXJ0aWNsZSIpOworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImFydGljbGUiKTsKKyAgICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cx
IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAg
IHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UzID0g
cmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTMsIDApLCBbImJveDEiLCAxLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQgdGV4
dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZhciB0
ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIg
PSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJh
bmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
My5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwg
IFsiYm94MSIsIDIsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZvbnQg
c2l6ZSIpOworICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndyYXBw
ZXIiKTsKKyAgICB3cmFwcGVyLnN0eWxlLmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9u
Mi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDAp
LCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0ZXh0
IiwgNSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRlbnQg
bm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAgdmFy
IGJveDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5bGUu
d2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVy
IiwgMCwgImJveDEiLCAwXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MSksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3Rl
eHQiLCA1LCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAsICJi
b3gxIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0
eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmM4YTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQyIEBACitbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1y
bCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkg
cmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAw
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwx
LGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3
cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJs
b2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gx
LDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlz
IDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwy
XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFd
IGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNT
IHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBB
cnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1Mg
cmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1
YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28g
aXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGgg
aXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIs
MCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEs
MSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUs
Ym94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gx
LDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdmVydC1ybC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtdmVydC1ybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjYwMTE1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwg
eyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IH0KKyAgICBib2R5IHsgZm9udC1m
YW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9Cisg
ICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFj
a2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQor
ICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDExMHB4OyBw
YWRkaW5nOiAxMHB4O30KKyAgICAjYm94MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lk
dGg6IDEwcHg7IHBhZGRpbmc6IDVweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzE7IHdpZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1
MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYw
cHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24z
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsg
bGVmdDogMjBweDsgdG9wOiAzNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0i
YXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+
PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2
IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIg
Y2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lv
bnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVydGljYWwtcmwg
bW9kZSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24y
Iik7CisgICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIp
OworCisgICAgZGVidWcoIkVtcHR5IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9u
MS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UxLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7
CisgICAgdmFyIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJG
bG93IGFydGljbGUiKTsKKyAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJhcnRpY2xlIik7CisgICAgYXJ0aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7
CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICBy
YW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRF
dmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5n
ZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJl
Z2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2Uz
LCAwKSwgWyJib3gxIiwgMSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQg
bm9kZSB0byByZWdpb24yIChjcmVhdGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4
dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJib3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJh
bmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0g
cmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBb
ImJveDEiLCAyLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNp
emUiKTsKKyAgICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVy
Iik7CisgICAgd3JhcHBlci5zdHlsZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSBy
ZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
Mi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwg
WyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIs
IDUsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5v
ZGUsIHNvIGl0IHdpbGwgbW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBi
b3gyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndl
YmtpdEZsb3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
Mik7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMF0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEp
LCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0
IiwgNSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94
MSIsIDFdKTsKKworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0
eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCitoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDQwNjlmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmIt
bHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1vZGVzCitQQVNT
IHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIEFycmF5IFtib3gzLDEsYm94MywyXSBpcyBl
cXVhbCB0byBbYm94MywxLGJveDMsMl0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMl0KK1BBU1MgcmFu
Z2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsYm94MywxXSBpcyBlcXVhbCB0byBb
Ym94MSwyLGJveDMsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorSG9yaXpvbnRhbCBUQgorWAorVmVydGljYWwgTFJIb3Jpem9udGFsIEJUCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Njk4MmY5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy1ybC1yYi1sci5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0Pgor
PHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwgO30K
KyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9u
dC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQor
ICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOyB9CisgICAgI2JveDExIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6
IDMwcHg7IG1hcmdpbi1yaWdodDogNzBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ct
ZnJvbTogZmxvdzsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDQwMHB4OyAgfQorICAgICNyZWdpb24y
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA0MDBweDsg
IH0KKyAgICAjcmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogNDAwcHg7ICB9CisgICAgI2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9y
aXpvbnRhbC10YjsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6
IDQwMHB4O30KKyAgICAjYm94MjIgeyBoZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiB3aGl0ZTsgfQorICAgICNib3gzIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZl
cnRpY2FsLWxyOyAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTUwcHg7IGhl
aWdodDogNDAwcHg7fQorICAgICNib3g0IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250
YWwtYnQ7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogMjAw
cHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMjBweDt9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAg
IDwhLS1kaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rp
dj48ZGl2IGlkPSJib3gyIj5WZXJ0IFJMPC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydCBMUjwvZGl2
PjxkaXYgaWQ9ImJveDQiPkhvcml6b250YWwgQlQ8L2Rpdj48L2Rpdi0tPgorCisgICAgPGRpdiBp
ZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MTEiPjwvZGl2PjxkaXYgaWQ9
ImJveDIiPkhvcml6b250YWwgVEI8ZGl2IGlkPSJib3gyMiI+WDwvZGl2PjwvZGl2PjxkaXYgaWQ9
ImJveDMiPlZlcnRpY2FsIExSPGRpdiBpZD0iYm94NCI+SG9yaXpvbnRhbCBCVDwvZGl2PjwvZGl2
PjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2
PgorICAgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYg
aWQ9InJlZ2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6
Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgbWl4ZWQgdmVydGljYWwgbW9kZXMiKTsKKyAgICByZWdp
b24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByZWdpb24yID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICByZWdpb24zID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVu
Z3RoIiwgMik7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3Jh
cHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTEsIDEpLCBbImJveDMiLCAxLCAiYm94MyIsIDJdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
Ym94MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAx
KTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMiwg
ImJveDMiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmls
aXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXdyaXRpbmctbW9kZXMtdGItcmwtbHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTU5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRi
LXJsLWxyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gVGVzdCBm
b3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2Rlcwor
UEFTUyByYW5nZTEubGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlz
IGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyBBcnJheSBbYm94MywxLGJveDMsMl0g
aXMgZXF1YWwgdG8gW2JveDMsMSxib3gzLDJdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNT
IHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLGJveDMsMV0gaXMgZXF1YWwg
dG8gW2JveDEsMixib3gzLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK1ZlcnRpY2FsIFJMCitYCitWZXJ0aWNhbCBMUlkKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy10Yi1ybC1sci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNhYmRiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJs
LWxyLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQt
c2l6ZTogMzBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAg
ICAjYm94MSB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsgfQorICAgICNib3gxMSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDog
MzBweDsgbWFyZ2luLXRvcDogNzBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4OyAgfQorICAgICNyZWdpb24yIHsg
LXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDsgIH0K
KyAgICAjcmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogNDAwcHg7IGhl
aWdodDogMjAwcHg7ICB9CisgICAgI2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGlj
YWwtcmw7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7IGhlaWdodDogMTUwcHg7IHdpZHRoOiA0MDBw
eDt9CisgICAgI2JveDIyIHsgaGVpZ2h0OiAzMHB4OyB3aWR0aDogMzBweDsgYmFja2dyb3VuZC1j
b2xvcjogd2hpdGU7IH0KKyAgICAjYm94MyB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNh
bC1scjsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogNDAwcHg7IGhlaWdodDog
MTUwcHg7fQorICAgICNib3g0IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7
IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogNjBweDsgcG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDIwcHg7IGxlZnQ6IDIwcHg7fQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8IS0tZGl2
IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gxMSI+PC9kaXY+PGRpdiBp
ZD0iYm94MiI+VmVydCBSTDwvZGl2PjxkaXYgaWQ9ImJveDMiPlZlcnQgTFI8L2Rpdj48ZGl2IGlk
PSJib3g0Ij5Ib3Jpem9udGFsIEJUPC9kaXY+PC9kaXYtLT4KKworICAgIDxkaXYgaWQ9IndyYXBw
ZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5W
ZXJ0aWNhbCBSTDxkaXYgaWQ9ImJveDIyIj5YPC9kaXY+PC9kaXY+PGRpdiBpZD0iYm94MyI+VmVy
dGljYWwgTFI8ZGl2IGlkPSJib3g0Ij5ZPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgICAgPGRp
diBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9u
MiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRl
YnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZv
ciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcyIpOworICAgIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMSIpOworICAgIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMiIpOworICAgIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMyIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MyIsIDEsICJi
b3gzIiwgMl0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7
CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAyLCAiYm94MyIsIDFdKTsKKworZnVuY3Rp
b24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKK30KKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTI4
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy5odG1sCkBAIC0wLDAgKzEsMTA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3Vu
ZC1jb2xvcjogbGlnaHRibHVlOyBoZWlnaHQ6IDEzNXB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAj
Ym94MSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDogMTEwcHg7IHBhZGRp
bmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyBoZWlnaHQ6
IDEwcHg7IHBhZGRpbmc6IDVweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTog
ZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4
O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4
OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsg
LXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVm
dDogMjBweDsgdG9wOiAzNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0
aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9k
aXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlk
PSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xh
c3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNd
IFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jhbmdlcy4iKTsKKyAgICB2YXIgcmVnaW9u
MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSBy
ZWdpb25zIik7CisgICAgdmFyIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2
YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdp
b24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTMubGVuZ3RoIiwgMCk7CisKKyAgICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFy
IGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGlj
bGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
MS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwg
WyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEi
LCAxLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFw
cGVyIiwgMV0pOworCisgICAgZGVidWcoIkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRl
cyBhbm9ueW1vdXMgYmxvY2spIik7CisgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94
MSIpLmFwcGVuZENoaWxkKHRleHROb2RlKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBl
ciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJv
eDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2Vz
KCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBh
cmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAx
XSk7CisKKyAgICBkZWJ1ZygiSW5jcmVhc2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUu
Zm9udFNpemUgPSAiNDBweCI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAi
Ym94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29t
cGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRd
KTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKwor
ICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJv
bSByZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdib3gyJyk7CisgICAgYm94Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7
CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0Iiwg
NF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAg
IHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhp
ZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7
Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVs
cGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKaW5k
ZXggOWZlYjFhMS4uMWY4ZTJjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3Jlc291cmNlcy9oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291
cmNlcy9oZWxwZXIuanMKQEAgLTE2MCwzICsxNjAsMzkgQEAgZnVuY3Rpb24gYXNzZXJ0KGV4cHJl
c3Npb24sIGZhaWxNZXNzYWdlKQogewogICAgIGV4cHJlc3Npb24gPyBsb2dQYXNzTWVzc2FnZSgi
IikgOiBsb2dGYWlsTWVzc2FnZShmYWlsTWVzc2FnZSk7CiB9CisKKy8vIHVzZWQgYnkgZ2V0UmVn
aW9uRmxvd1JhbmdlcyB0ZXN0cworZnVuY3Rpb24gZ2V0TmFtZShub2RlKSB7CisgIGlmICghbm9k
ZSkgcmV0dXJuICJ1bmRlZmluZWQiOworICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBUZXh0
IG5vZGUKKyAgICByZXR1cm4gIiN0ZXh0IjsKKyAgLy8gYWxsIHRoZSBvdGhlcnMgc2hvdWxkIGhh
dmUgYW4gaWQKKyAgcmV0dXJuIG5vZGUuaWQ7Cit9CisKK2Z1bmN0aW9uIGdldFJhbmdlQXQoYXJy
UmFuZ2UsIGluZGV4KSB7CisgIGlmIChpbmRleCA8IGFyclJhbmdlLmxlbmd0aCkKKyAgICByZXR1
cm4gW2dldE5hbWUoYXJyUmFuZ2VbaW5kZXhdLnN0YXJ0Q29udGFpbmVyKSwgYXJyUmFuZ2VbaW5k
ZXhdLnN0YXJ0T2Zmc2V0LCBnZXROYW1lKGFyclJhbmdlW2luZGV4XS5lbmRDb250YWluZXIpLCBh
cnJSYW5nZVtpbmRleF0uZW5kT2Zmc2V0XTsKKyAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9u
IGNvbXBhcmVBcnJheXMoY3VycmVudCwgZXhwZWN0ZWQpIHsKKyAgICB0cnkgeworICAgICAgICBp
ZiAoY3VycmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJOdWxsIG9iamVj
dC4gRXhwZWN0ZWQgWyIgKyBleHBlY3RlZC50b1N0cmluZygpICsgIl0gd2FzIG51bGwiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudC5sZW5ndGgg
IT09IGV4cGVjdGVkLmxlbmd0aCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQXJyYXkgbGVu
Z3RoIGRpZmZlcnMuIEV4cGVjdGVkIFsiICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdIHdhcyBb
IiArIGN1cnJlbnQudG9TdHJpbmcoKSArICJdIik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKQor
ICAgICAgICAgICAgaWYgKGN1cnJlbnRbaV0gIT09IGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQgWyIgICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJd
LiBXYXMgWyIgKyBjdXJyZW50LnRvU3RyaW5nKCkgKyAiXSIpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICB0ZXN0RmFp
bGVkKGN1cnJlbnQgKyAiIHRocmV3IGV4Y2VwdGlvbiAiICsgZXgpOworICAgIH0KKyAgICB0ZXN0
UGFzc2VkKCJBcnJheSBbIiAgKyBleHBlY3RlZC50b1N0cmluZygpICsgIl0gaXMgZXF1YWwgdG8g
WyIgKyBjdXJyZW50LnRvU3RyaW5nKCkgKyAiXSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlOTQ5OGEu
LjE1NDVjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMi0wOS0wNiAgUmF1bCBI
dWRlYSAgPHJodWRlYUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTU1JlZ2lvbnNdW0NTU09NXSBJ
bXBsZW1lbnQgRWxlbWVudC5nZXRSZWdpb25GbG93UmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZ2V0UmVnaW9uRmxvd1Jh
bmdlcyBmdW5jdGlvbiBmcm9tIHRoZSBDU1MgUmVnaW9ucyBzcGVjLiBJdCBpcyBpbXBsZW1lbnRl
ZCBieSBpdGVyYXRpbmcgb3ZlciAKKyAgICAgICAgdGhlIGNvbnRlbnQgbm9kZXMgYW5kIGZpZ3Vy
aW5nIG91dCB3aGljaCBub2RlcyBoYXZlIGJvdW5kaW5nQm94IGludGVyc2VjdGluZyB0aGUgcmVn
aW9uIGJveCBhbmQgZmlndXJpbmcgb3V0CisgICAgICAgIHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0
aW9ucy4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtYWJzb2x1dGUtcG9zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLWNvbnRlbnQtbm9kZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1ub25lLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMt
Zml4ZWQtcG9zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtdmVydC1sci5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMt
dmVydC1ybC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtdGItcmwtbHIuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMuaHRt
bAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6d2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDogYWRkZWQgdGhl
IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMgbWV0aG9kCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlU3Rh
cnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyk6IFVzZSB0aGUgbG9naWNhbFRv
cE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNO
ZXh0UGFnZSk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3Rl
YWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTog
QWRkZWQgYSBzbG93ZXIgcGF0aCB3aGljaCB3b3JrcyB3aXRob3V0IExheW91dFN0YXRlCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6IFVz
ZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2hyaW5rTG9naWNh
bFdpZHRoVG9Bdm9pZEZsb2F0cyk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRl
bnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1l
ZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrQXZhaWxhYmxl
TGluZVdpZHRoSW5SZWdpb24pOiBVc2UgdGhlIGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50
UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFtZWQp
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UpOiBVc2UgdGhl
IGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFtZWQpCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0NvbnRhaW5lZEluTm9k
ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpib3hJbnRlcnNlY3Rz
UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFu
Z2VzKTogcmV0dXJucyBhIHZlY3RvciBvZiBSYW5nZXMgdGhhdCBjb250YWlucyBOb2RlIHRoYXQg
YXJlIHBhcnQgb2YgYSByZWdpb24KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmg6CisgICAgICAgIChSZW5kZXJOYW1lZEZsb3dUaHJlYWQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9u
Ojpsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QpOiBSZXR1cm5zIHRoZSBsb2dpY2Fs
IHRvcCBvZiBhIHJlY3RhbmdsZSBpbnNpZGUgdGhlIGZsb3cgdGhyZWFkIGNvbnRlbnQKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90
dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QpOiBSZXR1cm5zIHRoZSBsb2dpY2FsIGJvdHRvbSBv
ZiBhIHJlY3RhbmdsZSBpbnNpZGUgdGhlIGZsb3cgdGhyZWFkIGNvbnRlbnQKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlZ2lvbjo6Z2V0UmFuZ2VzKTogcHJveHkgdGhlIGdldFJhbmdlcyBjYWxs
IHRvIGl0cyBuYW1lZCBmbG93IHRocmVhZAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdp
b24uaDoKKyAgICAgICAgKFJlbmRlclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
ZWdpb246OmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCk6IFJlbmFtZWQgZnJvbSBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdp
b246OmxvZ2ljYWxCb3R0b21Gb3JGbG93VGhyZWFkQ29udGVudCk6IFJldHVybnMgdGhlIGxvZ2lj
YWwgYm90dG9tIG9mIHRoZSBGbG93VGhyZWFkQ29udGVudCByZWN0CisKIDIwMTItMDktMDYgIEVs
bGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIG5ldyBW
OERlcGVuZGVudFJldGFpbmVkIHRoYXQgYWxsb3dzIGtlZXBpbmcgYSB2ODo6T2JqZWN0IGFsaXZl
IGFzIGxvbmcgYXMgYW5vdGhlciB2ODo6T2JqZWN0IGlzIGFsaXZlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggM2JhZjYxNC4uNzc1ZWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjA0
Myw2ICsyMDQzLDIwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6d2Via2l0UmVnaW9u
T3ZlcnNldCgpIGNvbnN0CiAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwogfQogCitWZWN0b3I8
UmVmUHRyPFJhbmdlPiA+IEVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKSBjb25z
dAoreworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworCisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiByYW5nZU9iamVjdHM7CisgICAgaWYg
KGRvY3VtZW50KCktPmNzc1JlZ2lvbnNFbmFibGVkKCkgJiYgcmVuZGVyZXIoKSAmJiByZW5kZXJl
cigpLT5pc1JlbmRlclJlZ2lvbigpKSB7CisgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0g
dG9SZW5kZXJSZWdpb24ocmVuZGVyZXIoKSk7CisgICAgICAgIGlmIChyZWdpb24tPmlzVmFsaWQo
KSkKKyAgICAgICAgICAgIHJlZ2lvbi0+Z2V0UmFuZ2VzKHJhbmdlT2JqZWN0cyk7CisgICAgfQor
CisgICAgcmV0dXJuIHJhbmdlT2JqZWN0czsKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgRWxl
bWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDkwMjVmYjcuLjI4MzRhNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtNDI2LDYgKzQyNiw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclJl
Z2lvbiogcmVuZGVyUmVnaW9uKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB3ZWJr
aXRSZWdpb25PdmVyc2V0KCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiB3ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3Q7CiAKICAgICBib29sIGhhc0lEKCkgY29uc3Q7
CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IGZi
NjBjNzMuLjUxYzBmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTE0NCw2ICsxNDQsNyBA
QCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gQ1NTIFJlZ2lvbnMgQVBJCiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0UmVnaW9uT3ZlcnNldDsKKyAgICAgICAg
c2VxdWVuY2U8UmFuZ2U+IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKIAogI2lmICFkZWZp
bmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAg
ICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMTAyMTZiYy4uMDA4MWZkMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yMjMyLDcgKzIyMzIsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJsb2NrOjpjb21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGlu
Z0Zsb2F0cyhjb25zdCBSZQogCiAgICAgTGF5b3V0VW5pdCBibG9ja09mZnNldCA9IGxvZ2ljYWxU
b3BGb3JDaGlsZChjaGlsZCk7CiAgICAgaWYgKHJlZ2lvbikKLSAgICAgICAgYmxvY2tPZmZzZXQg
PSBtYXgoYmxvY2tPZmZzZXQsIGJsb2NrT2Zmc2V0ICsgKHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkpOwor
ICAgICAgICBibG9ja09mZnNldCA9IG1heChibG9ja09mZnNldCwgYmxvY2tPZmZzZXQgKyAocmVn
aW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UpKTsKIAogICAgIExheW91dFVuaXQgc3RhcnRPZmYgPSBzdGFydE9mZnNl
dEZvckxpbmUoYmxvY2tPZmZzZXQsIGZhbHNlLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UsIGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkpOwogCkBAIC02ODk2LDcg
KzY4OTYsNyBAQCBib29sIFJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZShMYXlvdXRVbml0IGxvZ2lj
YWxPZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgcGFnZUJvdQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCiAgICAgICAgIHJldHVybiByZWdpb24t
PmlzUmVuZGVyUmVnaW9uU2V0KCkgfHwgcmVnaW9uLT5zdHlsZSgpLT5yZWdpb25PdmVyZmxvdygp
ID09IEJyZWFrUmVnaW9uT3ZlcmZsb3cKLSAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlSdWxl
ID09IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPm9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7CisgICAgICAgICAgICB8fCAocGFnZUJvdW5kYXJ5
UnVsZSA9PSBJbmNsdWRlUGFnZUJvdW5kYXJ5ICYmIHBhZ2VPZmZzZXQgPT0gcmVnaW9uLT5sb2dp
Y2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTcxODcsMjAgKzcxODcsNTEgQEAgYm9vbCBSZW5kZXJCbG9jazo6bGluZVdpZHRoRm9yUGFnaW5h
dGVkTGluZUNoYW5nZWQoUm9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3UKIAogTGF5b3V0VW5p
dCBSZW5kZXJCbG9jazo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0CiB7
Ci0gICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gd29yayB3aXRob3V0IGxheW91
dCBzdGF0ZS4gSXQncyBmaW5lIHRvIHVzZSB0aGUgbGF5b3V0IHN0YXRlIGFzIGEgY2FjaGUKLSAg
ICAvLyBmb3Igc3BlZWQsIGJ1dCB3ZSBuZWVkIGEgc2xvdyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdp
bGwgd2FsayB1cCB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbiBhbmQgZmlndXJlCi0gICAgLy8g
b3V0IG91ciBvZmZzZXQgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlLgogICAgIExheW91dFN0YXRl
KiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3RhdGUoKTsKLSAgICBpZiAoIWxheW91dFN0
YXRlIHx8ICFsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgaWYgKGxheW91dFN0YXRlICYmICFsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSkKKyAgICAg
ICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgaWYgKGxheW91dFN0YXRlKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIgaW4gdGhlIGxheW91
dCBzdGF0ZSBpcyBvdXJzLCBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0aW9uIHdpbGwgYmUg
b2ZmLgorICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBhc3NlcnQgZ2V0cyBoaXQgaW5zaWRlIGNv
bXB1dGVMb2dpY2FsSGVpZ2h0IGZvciBwZXJjZW50YWdlIG1hcmdpbnMsIHNpbmNlIHRoZXkncmUg
Y29tcHV0ZWQgdXNpbmcKKyAgICAgICAgLy8gd2lkdGhzIHdoaWNoIGNhbiB2YXJ5IGluIGVhY2gg
cmVnaW9uLiBVbnRpbCB3ZSBwYXRjaCB0aGF0LCB3ZSBjYW4ndCBoYXZlIHRoaXMgYXNzZXJ0Lgor
ICAgICAgICAvLyBBU1NFUlQobGF5b3V0U3RhdGUtPm1fcmVuZGVyZXIgPT0gdGhpcyk7CiAKLSAg
ICAvLyBGSVhNRTogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHJlbmRlcmVyIGluIHRoZSBsYXlvdXQg
c3RhdGUgaXMgb3Vycywgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb21wdXRhdGlvbiB3aWxsIGJlIG9m
Zi4KLSAgICAvLyBSaWdodCBub3cgdGhpcyBhc3NlcnQgZ2V0cyBoaXQgaW5zaWRlIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0IGZvciBwZXJjZW50YWdlIG1hcmdpbnMsIHNpbmNlIHRoZXkncmUgY29tcHV0
ZWQgdXNpbmcKLSAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFjaCByZWdpb24uIFVu
dGlsIHdlIHBhdGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQuCi0gICAgLy8gQVNT
RVJUKGxheW91dFN0YXRlLT5tX3JlbmRlcmVyID09IHRoaXMpOworICAgICAgICBMYXlvdXRTaXpl
IG9mZnNldERlbHRhID0gbGF5b3V0U3RhdGUtPm1fbGF5b3V0T2Zmc2V0IC0gbGF5b3V0U3RhdGUt
Pm1fcGFnZU9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBvZmZzZXREZWx0YS5oZWlnaHQoKSA6IG9mZnNldERlbHRhLndpZHRoKCk7CisgICAgfQorICAg
IC8vIEZJWE1FOiBSaWdodCBub3csIHRoaXMgYXNzZXJ0IGlzIGhpdCBvdXRzaWRlIGxheW91dCwg
ZnJvbSBsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldCBpbiBzZWxlY3Rpb25HYXBSZWN0c0ZvclJl
cGFpbnQgKGNhbGxlZCBmcm9tIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RBbGwpLgorICAgIC8vIEFT
U0VSVChpblJlbmRlckZsb3dUaHJlYWQoKSk7CiAKLSAgICBMYXlvdXRTaXplIG9mZnNldERlbHRh
ID0gbGF5b3V0U3RhdGUtPm1fbGF5b3V0T2Zmc2V0IC0gbGF5b3V0U3RhdGUtPm1fcGFnZU9mZnNl
dDsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNldERlbHRhLmhl
aWdodCgpIDogb2Zmc2V0RGVsdGEud2lkdGgoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHNs
b3dlciBwYXRoIHRoYXQgZG9lc24ndCB1c2UgbGF5b3V0IHN0YXRlIGFuZCByZWxpZXMgb24gZ2V0
dGluZyB5b3VyIGxvZ2ljYWwgdG9wIGluc2lkZSB0aGUgZW5jbG9zaW5nIGZsb3cgdGhyZWFkLiBJ
dCBkb2Vzbid0CisgICAgLy8gd29yayB3aXRoIGNvbHVtbnMgb3IgcGFnZXMgY3VycmVudGx5LCBi
dXQgaXQgc2hvdWxkIG9uY2UgdGhleSBoYXZlIGJlZW4gc3dpdGNoZWQgb3ZlciB0byB1c2luZyBm
bG93IHRocmVhZHMuCisgICAgaWYgKCFpblJlbmRlckZsb3dUaHJlYWQoKSkKKyAgICAgICAgcmV0
dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisKKyAgICBjb25zdCBSZW5kZXJCbG9jayogY3VycmVudEJs
b2NrID0gdGhpczsKKyAgICBMYXlvdXRSZWN0IGJsb2NrUmVjdCgwLCAwLCB3aWR0aCgpLCBoZWln
aHQoKSk7CisKKyAgICB3aGlsZSAoY3VycmVudEJsb2NrICYmICFjdXJyZW50QmxvY2stPmlzUmVu
ZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluZXJCbG9jayA9
IGN1cnJlbnRCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIEFTU0VSVChjb250YWlu
ZXJCbG9jayk7CisgICAgICAgIGlmICghY29udGFpbmVyQmxvY2spCisgICAgICAgICAgICByZXR1
cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICAgICAgTGF5b3V0UG9pbnQgY3VycmVudEJsb2NrTG9j
YXRpb24gPSBjdXJyZW50QmxvY2stPmxvY2F0aW9uKCk7CisKKyAgICAgICAgaWYgKGNvbnRhaW5l
ckJsb2NrLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpICE9IGN1cnJlbnRCbG9jay0+c3R5bGUoKS0+
d3JpdGluZ01vZGUoKSkgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBwdXQgdGhlIGJsb2Nr
IHJlY3QgaW4gY29udGFpbmVyIGNvb3JkaW5hdGVzCisgICAgICAgICAgICAvLyBhbmQgd2UgaGF2
ZSB0byB0YWtlIGludG8gYWNjb3VudCBib3RoIHRoZSBjb250YWluZXIgYW5kIGN1cnJlbnQgYmxv
Y2sgZmxpcHBpbmcgbW9kZXMKKyAgICAgICAgICAgIGlmIChjb250YWluZXJCbG9jay0+c3R5bGUo
KS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChj
b250YWluZXJCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYmxvY2tSZWN0LnNldFkoY3VycmVudEJsb2NrLT5oZWlnaHQoKSAtIGJsb2NrUmVjdC5t
YXhZKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tS
ZWN0LnNldFgoY3VycmVudEJsb2NrLT53aWR0aCgpIC0gYmxvY2tSZWN0Lm1heFgoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50QmxvY2stPmZsaXBGb3JXcml0aW5nTW9kZShi
bG9ja1JlY3QpOworICAgICAgICB9CisgICAgICAgIGJsb2NrUmVjdC5tb3ZlQnkoY3VycmVudEJs
b2NrTG9jYXRpb24pOworICAgICAgICBjdXJyZW50QmxvY2sgPSBjb250YWluZXJCbG9jazsKKyAg
ICB9OworICAgIHJldHVybiBjdXJyZW50QmxvY2stPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBibG9ja1JlY3QueSgpLnRvSW50KCkgOiBibG9ja1JlY3QueCgpLnRvSW50KCk7CiB9CiAKIFJl
bmRlclJlZ2lvbiogUmVuZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCBi
bG9ja09mZnNldCkgY29uc3QKQEAgLTcyNDgsOSArNzI3OSw5IEBAIFJlbmRlclJlZ2lvbiogUmVu
ZGVyQmxvY2s6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24p
IGNvbnN0CiAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb247CiAgICAgZW5jbG9zaW5nUmVuZGVy
Rmxvd1RocmVhZCgpLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5k
UmVnaW9uKTsKICAgICAKLSAgICBpZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5vZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgPCBzdGFydFJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpKQorICAgIGlmIChzdGFydFJlZ2lvbiAmJiByZWdpb24tPmxvZ2ljYWxU
b3BGb3JGbG93VGhyZWFkQ29udGVudCgpIDwgc3RhcnRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpKQogICAgICAgICByZXR1cm4gc3RhcnRSZWdpb247Ci0gICAgaWYgKGVu
ZFJlZ2lvbiAmJiByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSA+IGVu
ZFJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpKQorICAgIGlmIChlbmRS
ZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA+IGVuZFJl
Z2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBl
bmRSZWdpb247CiAgICAgCiAgICAgcmV0dXJuIHJlZ2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKaW5kZXggYzhjYTdjOC4uMjFkZTY2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIExheW91dFVuaXQgUmVu
ZGVyQm94OjpzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRN
YXJnaW5TdGFyCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wUG9zaXRpb24gPSBsb2dpY2FsVG9w
KCk7CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RlZFBhZ2VPZmZzZXRGb3JDb250YWluaW5nQmxvY2sg
PSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIC0gbG9naWNhbFRvcCgpOwogICAgIGlm
IChyZWdpb24pIHsKLSAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVn
aW9uID0gcmVnaW9uID8gcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkg
LSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIDogWkVST19MQVlPVVRfVU5JVDsKKyAg
ICAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVnaW9uID0gcmVnaW9uID8g
cmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9VVF9VTklUOwogICAgICAgICBsb2dpY2FsVG9w
UG9zaXRpb24gPSBtYXgobG9naWNhbFRvcFBvc2l0aW9uLCBsb2dpY2FsVG9wUG9zaXRpb24gKyBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVnaW9uKTsKICAgICAgICAgY29udGFpbmluZ0Jsb2NrUmVn
aW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVnaW9uKTsKICAgICB9CkBAIC0x
MjE5LDcgKzEyMTksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrQXZh
aWxhYmxlTGluZVdpZHRoSW5SZWdpb24oUmVuZGVyUmVnaW9uKiByZQogICAgIExheW91dFVuaXQg
bG9naWNhbFRvcFBvc2l0aW9uID0gbG9naWNhbFRvcCgpOwogICAgIExheW91dFVuaXQgYWRqdXN0
ZWRQYWdlT2Zmc2V0Rm9yQ29udGFpbmluZ0Jsb2NrID0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSAtIGxvZ2ljYWxUb3AoKTsKICAgICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIExheW91
dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+b2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgICAgIExheW91dFVuaXQgb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dU
aHJlYWRDb250ZW50KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIDogWkVST19M
QVlPVVRfVU5JVDsKICAgICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gbWF4KGxvZ2ljYWxUb3BQ
b3NpdGlvbiwgbG9naWNhbFRvcFBvc2l0aW9uICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lv
bik7CiAgICAgICAgIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRBbmRF
bmRSZWdpb25zKHJlZ2lvbik7CiAgICAgfQpAQCAtMjUwNSw3ICsyNTA1LDcgQEAgc3RhdGljIHZv
aWQgY29tcHV0ZUlubGluZVN0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9naWNhbExlZnQsIExlbmd0
aCYgbG9naWNhbFJpZ2gKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uICYmIGN1cnItPmlzUmVu
ZGVyQmxvY2soKSkgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogY2Ig
PSB0b1JlbmRlckJsb2NrKGN1cnIpOwogICAgICAgICAgICAgICAgICAgICByZWdpb24gPSBjYi0+
Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwotICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJCb3hSZWdpb25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8ocmVn
aW9uLCByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7CisgICAgICAg
ICAgICAgICAgICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94
UmVnaW9uSW5mbyhyZWdpb24sIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50
KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYm94SW5mbykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY1Bvc2l0aW9uICs9IGJveEluZm8tPmxvZ2ljYWxMZWZ0KCk7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMjUyNCw3ICsyNTI0LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUlubGlu
ZVN0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9naWNhbExlZnQsIExlbmd0aCYgbG9naWNhbFJpZ2gK
ICAgICAgICAgICAgICAgICBpZiAocmVnaW9uICYmIGN1cnItPmlzUmVuZGVyQmxvY2soKSkgewog
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyQmxvY2sqIGNiID0gdG9SZW5kZXJCbG9j
ayhjdXJyKTsKICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRB
bmRFbmRSZWdpb25zKHJlZ2lvbik7Ci0gICAgICAgICAgICAgICAgICAgICBSZW5kZXJCb3hSZWdp
b25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9uLCByZWdpb24t
Pm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJCb3hSZWdpb25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8o
cmVnaW9uLCByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgIGlmIChib3hJbmZvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY3VyciAhPSBjb250YWluZXJCbG9jaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNQb3NpdGlvbiAtPSBjYi0+bG9naWNhbFdpZHRoKCkgLSAoYm94SW5mby0+bG9naWNhbExl
ZnQoKSArIGJveEluZm8tPmxvZ2ljYWxXaWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggNGU4M2NjYS4uMjYwNTNi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAKQEAgLTI3LDggKzI3LDEzIEBACiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgiCiAKICNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIklu
bGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlcklu
bGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUg
IldlYktpdE5hbWVkRmxvdy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOTMsNCArMzk4
LDE3MyBAQCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXRO
YW1lZEZsb3c6OkZsb3dTdGF0ZU51bGw7CiB9CiAKK3N0YXRpYyBib29sIGlzQ29udGFpbmVkSW5O
b2RlcyhWZWN0b3I8Tm9kZSo+IG90aGVycywgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG90aGVycy5zaXplKCk7IGkrKykgeworICAgICAgICBOb2RlKiBvdGhlciA9
IG90aGVycy5hdChpKTsKKyAgICAgICAgaWYgKG90aGVyLT5jb250YWlucyhub2RlKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp
YyBib29sIGJveEludGVyc2VjdHNSZWdpb24oTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yQm94LCBM
YXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JCb3gsIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJl
Z2lvbiwgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uKQoreworICAgIGJvb2wgcmVn
aW9uSXNFbXB0eSA9IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24gIT0gTUFYX0xBWU9VVF9VTklUICYm
IGxvZ2ljYWxUb3BGb3JSZWdpb24gIT0gTUlOX0xBWU9VVF9VTklUCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgKGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24gLSBsb2dpY2FsVG9wRm9yUmVnaW9u
KSA8PSAwOworICAgIHJldHVybiAgKGxvZ2ljYWxCb3R0b21Gb3JCb3ggLSBsb2dpY2FsVG9wRm9y
Qm94KSA+IDAKKyAgICAgICAgICAgICYmICFyZWdpb25Jc0VtcHR5CisgICAgICAgICAgICAmJiBs
b2dpY2FsVG9wRm9yQm94IDwgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiAmJiBsb2dpY2FsVG9wRm9y
UmVnaW9uIDwgbG9naWNhbEJvdHRvbUZvckJveDsKK30KKwordm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JiByYW5nZU9iamVjdHMsIGNv
bnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAoreworICAgIExheW91dFVuaXQgbG9naWNh
bFRvcEZvclJlZ2lvbjsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb247CisK
KyAgICAvLyBleHRlbmQgdGhlIGZpcnN0IHJlZ2lvbiB0b3AgdG8gY29udGFpbiBldmVyeXRoaW5n
IHVwIHRvIGl0cyBsb2dpY2FsIGhlaWdodAorICAgIGlmIChyZWdpb24tPmlzRmlyc3RSZWdpb24o
KSkKKyAgICAgICAgbG9naWNhbFRvcEZvclJlZ2lvbiA9IE1JTl9MQVlPVVRfVU5JVDsKKyAgICBl
bHNlCisgICAgICAgIGxvZ2ljYWxUb3BGb3JSZWdpb24gPSAgcmVnaW9uLT5sb2dpY2FsVG9wRm9y
Rmxvd1RocmVhZENvbnRlbnQoKTsKKworICAgIC8vIGV4dGVuZCB0aGUgbGFzdCByZWdpb24gdG8g
Y29udGFpbiBldmVyeXRoaW5nIGFib3ZlIGl0cyB5KCkKKyAgICBpZiAocmVnaW9uLT5pc0xhc3RS
ZWdpb24oKSkKKyAgICAgICAgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiA9IE1BWF9MQVlPVVRfVU5J
VDsKKyAgICBlbHNlCisgICAgICAgIGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24gPSByZWdpb24tPmxv
Z2ljYWxCb3R0b21Gb3JGbG93VGhyZWFkQ29udGVudCgpOworCisgICAgVmVjdG9yPE5vZGUqPiBu
b2RlczsKKyAgICAvLyBlbGltaW5hdGUgdGhlIGNvbnRlbnROb2RlcyB0aGF0IGFyZSBkZXNjZW5k
YW50cyBvZiBvdGhlciBjb250ZW50Tm9kZXMKKyAgICBmb3IgKE5hbWVkRmxvd0NvbnRlbnROb2Rl
czo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb250ZW50Tm9kZXMoKS5iZWdpbigpOyBpdCAhPSBjb250
ZW50Tm9kZXMoKS5lbmQoKTsgKytpdCkgeworICAgICAgICBOb2RlKiBub2RlID0gKml0OworICAg
ICAgICBpZiAoIWlzQ29udGFpbmVkSW5Ob2Rlcyhub2Rlcywgbm9kZSkpCisgICAgICAgICAgICBu
b2Rlcy5hcHBlbmQobm9kZSk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
b2Rlcy5zaXplKCk7IGkrKykgeworICAgICAgICBOb2RlKiBjb250ZW50Tm9kZSA9IG5vZGVzLmF0
KGkpOworICAgICAgICBpZiAoIWNvbnRlbnROb2RlLT5yZW5kZXJlcigpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOworICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShjb250ZW50Tm9kZS0+ZG9j
dW1lbnQoKSk7CisgICAgICAgIGJvb2wgZm91bmRTdGFydFBvc2l0aW9uID0gZmFsc2U7CisgICAg
ICAgIGJvb2wgc3RhcnRzQWJvdmVSZWdpb24gPSB0cnVlOworICAgICAgICBib29sIGVuZHNCZWxv
d1JlZ2lvbiA9IHRydWU7CisgICAgICAgIGJvb2wgc2tpcE92ZXJPdXRzaWRlTm9kZXMgPSBmYWxz
ZTsKKyAgICAgICAgTm9kZSogbGFzdEVuZE5vZGUgPSAwOworCisgICAgICAgIGZvciAoTm9kZSog
bm9kZSA9IGNvbnRlbnROb2RlOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShj
b250ZW50Tm9kZSkpIHsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveDsKKyAgICAg
ICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSkKKyAgICAgICAgICAgICAgICBi
b3VuZGluZ0JveCA9IHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKS0+bGluZXNCb3VuZGluZ0JveCgp
OworICAgICAgICAgICAgZWxzZSBpZiAocmVuZGVyZXItPmlzVGV4dCgpKQorICAgICAgICAgICAg
ICAgIGJvdW5kaW5nQm94ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKS0+bGluZXNCb3VuZGluZ0Jv
eCgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYm91bmRpbmdCb3ggPSAg
dG9SZW5kZXJCb3gocmVuZGVyZXIpLT5mcmFtZVJlY3QoKTsKKyAgICAgICAgICAgICAgICBpZiAo
dG9SZW5kZXJCb3gocmVuZGVyZXIpLT5pc1JlbFBvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYm91bmRpbmdCb3gubW92ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnJlbGF0aXZlUG9z
aXRpb25Mb2dpY2FsT2Zmc2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMYXlv
dXRVbml0IG9mZnNldFRvcCA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKS0+b2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpOworICAgICAgICAgICAgY29uc3QgTGF5b3V0UG9pbnQg
bG9naWNhbE9mZnNldEZyb21Ub3AoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IFpFUk9fTEFZ
T1VUX1VOSVQgOiAgb2Zmc2V0VG9wLAorICAgICAgICAgICAgICAgIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBvZmZzZXRUb3AgOiBaRVJPX0xBWU9VVF9VTklUKTsKKworICAgICAgICAgICAg
Ym91bmRpbmdCb3gubW92ZUJ5KGxvZ2ljYWxPZmZzZXRGcm9tVG9wKTsKKworICAgICAgICAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yUmVuZGVyZXIgPSByZWdpb24tPmxvZ2ljYWxUb3BPZkZs
b3dUaHJlYWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7CisgICAgICAgICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxCb3R0b21Gb3JSZW5kZXJlciA9IHJlZ2lvbi0+bG9naWNhbEJvdHRvbU9mRmxvd1Ro
cmVhZENvbnRlbnRSZWN0KGJvdW5kaW5nQm94KTsKKworICAgICAgICAgICAgLy8gaWYgdGhlIGJv
dW5kaW5nIGJveCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGRvZXNuJ3QgaW50ZXJzZWN0IHRoZSBy
ZWdpb24gYm94CisgICAgICAgICAgICAvLyBjbG9zZSB0aGUgY3VycmVudCByYW5nZSBvbmx5IGlm
IHRoZSBzdGFydCBlbGVtZW50IGJlZ2FuIGluc2lkZSB0aGUgcmVnaW9uLAorICAgICAgICAgICAg
Ly8gb3RoZXJ3aXNlIGp1c3QgbW92ZSB0aGUgc3RhcnQgcG9zaXRpb24gYWZ0ZXIgdGhpcyBub2Rl
IGFuZCBrZWVwIHNraXBwaW5nIHRoZW0gdW50aWwgd2UgZm91bmQgYSBwcm9wZXIgc3RhcnQgcG9z
aXRpb24uCisgICAgICAgICAgICBpZiAoIWJveEludGVyc2VjdHNSZWdpb24obG9naWNhbFRvcEZv
clJlbmRlcmVyLCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIsIGxvZ2ljYWxUb3BGb3JSZWdpb24s
IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24pKSB7CisgICAgICAgICAgICAgICAgaWYgKGZvdW5kU3Rh
cnRQb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0c0Fib3ZlUmVnaW9u
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2UtPmludGVyc2VjdHNOb2RlKG5v
ZGUsIGlnbm9yZWRFeGNlcHRpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdl
LT5zZXRFbmRCZWZvcmUobm9kZSwgaWdub3JlZEV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICByYW5nZU9iamVjdHMuYXBwZW5kKHJhbmdlLT5jbG9uZVJhbmdlKGlnbm9yZWRFeGNl
cHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShj
b250ZW50Tm9kZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHNB
Ym92ZVJlZ2lvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2tpcE92ZXJPdXRzaWRlTm9kZXMgPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2tpcE92ZXJPdXRzaWRlTm9kZXMpCisgICAgICAg
ICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydEFmdGVyKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24p
OworICAgICAgICAgICAgICAgIGZvdW5kU3RhcnRQb3NpdGlvbiA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBzdGFydCBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGxvZ2ljYWxUb3BGb3JSZW5kZXJlciA8IGxvZ2ljYWxU
b3BGb3JSZWdpb24gJiYgc3RhcnRzQWJvdmVSZWdpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAo
cmVuZGVyZXItPmlzVGV4dCgpKSB7IC8vIFRleHQgY3Jvc3NlcyByZWdpb24gdG9wCisgICAgICAg
ICAgICAgICAgICAgIC8vIGZvciBUZXh0IGVsZW1lbnRzLCBqdXN0IGZpbmQgdGhlIGxhc3QgdGV4
dGJveCB0aGF0IGlzIGNvbnRhaW5lZCBpbnNpZGUgdGhlIHJlZ2lvbiBhbmQgdXNlIGl0cyBzdGFy
dCgpIG9mZnNldCBhcyBzdGFydCBwb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICBSZW5kZXJU
ZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyZXIpOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IHRleHRSZW5kZXJlci0+Zmlyc3RUZXh0
Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob2Zmc2V0VG9wICsgYm94LT5sb2dpY2FsQm90dG9tKCkgPCBsb2dpY2FsVG9w
Rm9yUmVnaW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KFBvc2l0aW9uKHRvVGV4dChub2RlKSwg
Ym94LT5zdGFydCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHNBYm92ZVJlZ2lv
biA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBub2RlIGNyb3NzZXMgcmVnaW9u
IHRvcAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYWxsIGVsZW1lbnRzLCBleGNlcHQgVGV4
dCwganVzdCBzZXQgdGhlIHN0YXJ0IHBvc2l0aW9uIHRvIGJlIGJlZm9yZSB0aGVpciBjaGlsZHJl
bgorICAgICAgICAgICAgICAgICAgICBzdGFydHNBYm92ZVJlZ2lvbiA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUNoaWxkcmVuKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlIHsgLy8gbm9kZSBzdGFydHMgaW5zaWRlIHJlZ2lvbgorICAgICAgICAgICAgICAgIC8v
IGZvciBlbGVtZW50cyB0aGF0IHN0YXJ0IGluc2lkZSB0aGUgcmVnaW9uLCBzZXQgdGhlIHN0YXJ0
IHBvc2l0aW9uIHRvIGJlIGJlZm9yZSB0aGVtLiBJZiB3ZSBmb3VuZCBvbmUsIHdlIHdpbGwganVz
dCBza2lwIHRoZSBvdGhlcnMgdW50aWwKKyAgICAgICAgICAgICAgICAvLyB0aGUgcmFuZ2UgaXMg
Y2xvc2VkLgorICAgICAgICAgICAgICAgIGlmIChzdGFydHNBYm92ZVJlZ2lvbikgeworICAgICAg
ICAgICAgICAgICAgICBzdGFydHNBYm92ZVJlZ2lvbiA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICByYW5nZS0+c2V0U3RhcnRCZWZvcmUobm9kZSwgaWdub3JlZEV4Y2VwdGlvbik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgc2tpcE92ZXJPdXRzaWRl
Tm9kZXMgID0gZmFsc2U7CisgICAgICAgICAgICBmb3VuZFN0YXJ0UG9zaXRpb24gPSB0cnVlOwor
CisgICAgICAgICAgICAvLyBlbmQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChsb2dpY2FsQm90
dG9tRm9yUmVnaW9uIDwgbG9naWNhbEJvdHRvbUZvclJlbmRlcmVyICYmIChlbmRzQmVsb3dSZWdp
b24gfHwgKCFlbmRzQmVsb3dSZWdpb24gJiYgIW5vZGUtPmlzRGVzY2VuZGFudE9mKGxhc3RFbmRO
b2RlKSkpKSB7CisgICAgICAgICAgICAgICAgLy8gZm9yIFRleHQgZWxlbWVudHMsIGp1c3QgZmlu
ZCBqdXN0IGZpbmQgdGhlIGxhc3QgdGV4dGJveCB0aGF0IGlzIGNvbnRhaW5lZCBpbnNpZGUgdGhl
IHJlZ2lvbiBhbmQgdXNlIGl0cyBzdGFydCgpK2xlbigpIG9mZnNldCBhcyBlbmQgcG9zaXRpb24K
KyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzVGV4dCgpKSB7IC8vIFRleHQgY3Jvc3Nl
cyByZWdpb24gYm90dG9tCisgICAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5k
ZXJlciA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcik7CisgICAgICAgICAgICAgICAgICAgIElubGlu
ZVRleHRCb3gqIGxhc3RCb3ggPSAwOworICAgICAgICAgICAgICAgICAgICBmb3IgKElubGluZVRl
eHRCb3gqIGJveCA9IHRleHRSZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94
LT5uZXh0VGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG9mZnNldFRv
cCArIGJveC0+bG9naWNhbFRvcCgpKSA8IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0Qm94ID0gYm94OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGxhc3RCb3gpOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxhc3RCb3gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldEVuZChQ
b3NpdGlvbih0b1RleHQobm9kZSksIGxhc3RCb3gtPnN0YXJ0KCkgKyBsYXN0Qm94LT5sZW4oKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgZW5kc0JlbG93UmVnaW9uID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGxhc3RFbmROb2RlID0gbm9kZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAv
LyBub2RlIGNyb3NzZXMgcmVnaW9uIGJvdHRvbQorICAgICAgICAgICAgICAgICAgICAvLyBmb3Ig
YWxsIGVsZW1lbnRzLCBleGNlcHQgVGV4dCwganVzdCBzZXQgdGhlIHN0YXJ0IHBvc2l0aW9uIHRv
IGJlIGFmdGVyIHRoZWlyIGNoaWxkcmVuCisgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRF
bmQoUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVuZHNCZWxvd1JlZ2lvbiA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGxhc3RFbmROb2RlID0gbm9kZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UgeyAvLyBub2RlIGVuZHMgaW5zaWRlIHJlZ2lvbgorICAgICAgICAgICAgICAgIC8v
IGZvciBlbGVtZW50cyB0aGF0IGVuZHMgaW5zaWRlIHRoZSByZWdpb24sIHNldCB0aGUgZW5kIHBv
c2l0aW9uIHRvIGJlIGFmdGVyIHRoZW0KKyAgICAgICAgICAgICAgICAvLyBhbGxvdyB0aGlzIGVu
ZCBwb3NpdGlvbiB0byBiZSBjaGFuZ2VkIG9ubHkgYnkgb3RoZXIgZWxlbWVudHMgdGhhdCBhcmUg
bm90IGRlc2NlbmRhbnRzIG9mIHRoZSBjdXJyZW50IGVuZCBub2RlCisgICAgICAgICAgICAgICAg
aWYgKGVuZHNCZWxvd1JlZ2lvbiB8fCAoIWVuZHNCZWxvd1JlZ2lvbiAmJiAhbm9kZS0+aXNEZXNj
ZW5kYW50T2YobGFzdEVuZE5vZGUpKSkgeworICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0
RW5kQWZ0ZXIobm9kZSwgaWdub3JlZEV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGVu
ZHNCZWxvd1JlZ2lvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9
IG5vZGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGlmIChmb3VuZFN0YXJ0UG9zaXRpb24gfHwgc2tpcE92ZXJPdXRzaWRlTm9kZXMpCisgICAg
ICAgICAgICByYW5nZU9iamVjdHMuYXBwZW5kKHJhbmdlKTsKKyAgICB9Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAppbmRleCBh
OGI4YjUxLi4zMTk5MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBO
YW1lZEZsb3dDb250ZW50Tm9kZXMmIGNvbnRlbnROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudE5vZGVzOyB9CiAgICAgYm9vbCBoYXNDb250ZW50Tm9kZShOb2RlKiBjb250ZW50Tm9kZSkg
Y29uc3QgeyBBU1NFUlQoY29udGVudE5vZGUpOyByZXR1cm4gbV9jb250ZW50Tm9kZXMuY29udGFp
bnMoY29udGVudE5vZGUpOyB9CiAgICAgYm9vbCBpc01hcmtlZEZvckRlc3RydWN0aW9uKCkgY29u
c3Q7CisgICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYsIGNvbnN0IFJl
bmRlclJlZ2lvbiopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRNYXJrRm9yRGVz
dHJ1Y3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5k
ZXggODBjODQ4Yi4uOGYyOTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgorI2luY2x1ZGUgIlJh
bmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94UmVnaW9uSW5mby5oIgogI2luY2x1ZGUgIlJlbmRl
ck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTMyOCwxMyAr
MzI5LDE4IEBAIHZvaWQgUmVuZGVyUmVnaW9uOjpkZWxldGVBbGxSZW5kZXJCb3hSZWdpb25JbmZv
KCkKICAgICBtX3JlbmRlckJveFJlZ2lvbkluZm8uY2xlYXIoKTsKIH0KIAotTGF5b3V0VW5pdCBS
ZW5kZXJSZWdpb246Om9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25zdAorTGF5
b3V0VW5pdCBSZW5kZXJSZWdpb246OmxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdChj
b25zdCBMYXlvdXRSZWN0JiByZWN0KSBjb25zdAogewotICAgIGlmICghbV9pc1ZhbGlkIHx8ICFt
X2Zsb3dUaHJlYWQpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChtX2Zsb3dUaHJlYWQtPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBmbG93VGhyZWFkUG9ydGlv
blJlY3QoKS55KCk7Ci0gICAgcmV0dXJuIGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLngoKTsKKyAg
ICBpZiAoIW1faXNWYWxpZCB8fCAhZmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVST19M
QVlPVVRfVU5JVDsKKyAgICByZXR1cm4gZmxvd1RocmVhZCgpLT5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gcmVjdC55KCkgOiByZWN0LngoKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJSZWdp
b246OmxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRSZWN0
JiByZWN0KSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkIHx8ICFmbG93VGhyZWFkKCkpCisg
ICAgICAgIHJldHVybiBaRVJPX0xBWU9VVF9VTklUOworICAgIHJldHVybiBmbG93VGhyZWFkKCkt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWN0Lm1heFkoKSA6IHJlY3QubWF4WCgpOwog
fQogCiB2b2lkIFJlbmRlclJlZ2lvbjo6c2V0UmVnaW9uT2JqZWN0c1JlZ2lvblN0eWxlKCkKQEAg
LTQ5Niw0ICs1MDIsMTAgQEAgdm9pZCBSZW5kZXJSZWdpb246OmNsZWFyT2JqZWN0U3R5bGVJblJl
Z2lvbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKICAgICAgICAgY2xlYXJPYmplY3RTdHls
ZUluUmVnaW9uKGNoaWxkKTsKIH0KIAordm9pZCBSZW5kZXJSZWdpb246OmdldFJhbmdlcyhWZWN0
b3I8UmVmUHRyPFJhbmdlPiA+JiByYW5nZU9iamVjdHMpIGNvbnN0Cit7CisgICAgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKiBuYW1lZEZsb3cgPSB2aWV3KCktPmZsb3dUaHJlYWRDb250cm9sbGVyKCkt
PmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZSgpLT5yZWdpb25UaHJlYWQoKSk7
CisgICAgbmFtZWRGbG93LT5nZXRSYW5nZXMocmFuZ2VPYmplY3RzLCB0aGlzKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
CmluZGV4IDdjOWI4N2YuLjUzNzU4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmgKQEAgLTc4LDggKzc4LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZWxldGVBbGxS
ZW5kZXJCb3hSZWdpb25JbmZvKCk7CiAKLSAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UoKSBjb25zdDsKLQogICAgIGJvb2wgaXNGaXJzdFJlZ2lvbigpIGNvbnN0
OwogICAgIGJvb2wgaXNMYXN0UmVnaW9uKCkgY29uc3Q7CiAKQEAgLTEwMCw3ICs5OCwxNCBAQCBw
dWJsaWM6CiAgICAgLy8gaGVpZ2h0IG9mIGEgc2luZ2xlIGNvbHVtbiBvciBwYWdlIGluIHRoZSBz
ZXQuCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsV2lkdGgoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKLSAgICAKKwor
ICAgIExheW91dFVuaXQgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGNvbnN0IExh
eW91dFJlY3QmKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21PZkZsb3dUaHJl
YWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsVG9w
T2ZGbG93VGhyZWFkQ29udGVudFJlY3QoZmxvd1RocmVhZFBvcnRpb25SZWN0KCkpOyB9OworICAg
IExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGZsb3dUaHJlYWRQb3J0
aW9uUmVjdCgpKTsgfTsKKworICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+
ID4mKSBjb25zdDsKKwogICAgIC8vIFRoaXMgbWV0aG9kIHJlcHJlc2VudHMgdGhlIGxvZ2ljYWwg
aGVpZ2h0IG9mIHRoZSBlbnRpcmUgZmxvdyB0aHJlYWQgcG9ydGlvbiB1c2VkIGJ5IHRoZSByZWdp
b24gb3Igc2V0LgogICAgIC8vIEZvciBSZW5kZXJSZWdpb25zIGl0IG1hdGNoZXMgbG9naWNhbFBh
Z2luYXRpb25IZWlnaHQoKSwgYnV0IGZvciBzZXRzIGl0IGlzIHRoZSBoZWlnaHQgb2YgYWxsIHRo
ZSBwYWdlcwogICAgIC8vIG9yIGNvbHVtbnMgYWRkZWQgdG9nZXRoZXIuCg==
</data>
<flag name="review"
          id="173641"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="173642"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163176</attachid>
            <date>2012-09-10 12:06:45 -0700</date>
            <delta_ts>2012-09-10 12:21:24 -0700</delta_ts>
            <desc>Remove the copy-pasted toInt()</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>88902</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWRhNTU0Li43MWJmYTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDkt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJl
Z2lvbkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250
ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQt
bHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGlu
Zy1tb2Rlcy1ybC1yYi1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3Jp
dGluZy1tb2Rlcy10Yi1ybC1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvcmVzb3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0
UmFuZ2VBdCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOS0wNyAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICA8YXVkaW8+IGFuZCA8dmlkZW8+
IHNob3VsZCBzZW5kIERvIE5vdCBUcmFjayB3aGVuIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1w
b3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jZThjYWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lv
bkZsb3dSYW5nZXMgZm9yIGFic29sdXRlIHBvc2l0aW9uZWQgZWxlbWVudHMKK1BBU1MgcmFuZ2Ux
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVhbCB0
byBbd3JhcHBlciwwLHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NzQxNWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0
ZS1wb3MuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2JveDEgeyAtd2Vi
a2l0LWZsb3ctaW50bzogZmxvdzsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogNTBweDsgaGVp
Z2h0OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgdG9wOiAyNXB4OyBsZWZ0OiAyNXB4
OyB9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDEwMHB4
OyBoZWlnaHQ6IDEwMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDUw
cHg7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+CisgICAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PC9kaXY+PC9k
aXY+CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVz
dCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBhYnNvbHV0ZSBwb3NpdGlvbmVk
IGVsZW1lbnRzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIi
LCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9
CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWNvbnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBhNjc5ZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRl
bnQtbm9kZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1tDU1NSZWdpb25zXSBJbXBs
ZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIHdpdGggbXVsdGlwbGUgY29udGVudCBu
b2RlcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0Zsb3cgdGVz
dAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCwjdGV4dCw0
XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMg
MgorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LHdy
YXBwZXIsMV0KK1BBU1MgQXJyYXkgW3dyYXBwZXIyLDAsd3JhcHBlcjIsMV0gaXMgZXF1YWwgdG8g
W3dyYXBwZXIyLDAsd3JhcHBlcjIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQxNTMxNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRl
bnQtbm9kZXMuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9z
cGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1MHB4OyB9CisgICAgLmJvcmRlciB7
IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgIC5mbG93IHsgLXdlYmtpdC1mbG93LWludG86
IGZsb3cxO30KKyAgICAuYmx1ZSB7YmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDog
NTBweDsgaGVpZ2h0OiA1MHB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBm
bG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7
fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7
IGhlaWdodDogMTIwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9Indy
YXBwZXIiPjxkaXYgY2xhc3M9ImZsb3ciPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRpdiBp
ZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNs
YXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyMiI+PGRpdiBjbGFzcz0iZmxv
dyBibHVlIj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9u
c10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyB3aXRoIG11bHRpcGxlIGNv
bnRlbnQgbm9kZXMiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMiIpOworCisKKyAgICBkZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAgcmFuZ2UxID0gcmVn
aW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEs
IDApLCBbIndyYXBwZXIiLCAwLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Uy
Lmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBb
IiN0ZXh0IiwgNSwgIndyYXBwZXIiLCAxXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMiwgMSksIFsid3JhcHBlcjIiLCAwLCAid3JhcHBlcjIiLCAxXSk7CisKKworZnVuY3Rp
b24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKwor
ICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YzMWJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9u
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGVsZW1lbnRzIHdpdGggZGlzcGxheTpub25l
IChSYW5nZSBzaG91bGQgbm90IGJyZWFrIHJhbmdlcyBhdCBkaXNwbGF5Om5vbmUpCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworMQorMworNQorRmxvdyB0ZXN0CitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8g
W3dyYXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1ub25lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzJmYzg1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1u
b25lLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7
IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMjBweDsgfQorICAgIC5ib3JkZXIgeyBib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAuZmxvdyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93
MTt9CisgICAgI3dyYXBwZXIgcCB7bWFyZ2luOiAwOyBwYWRkaW5nOiAwO30KKyAgICAubm9uZSB7
ZGlzcGxheTogbm9uZTt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
ICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGNsYXNzPSJmbG93Ij48cD4xPC9wPjxwIGNsYXNzPSJu
b25lIj4yPC9wPjxwPjM8L3A+PHAgY2xhc3M9Im5vbmUiPjQ8L3A+PHA+NTwvcD48L2Rpdj48L2Rp
dj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBSZWdpb246OmdldFJlZ2lvbkZs
b3dSYW5nZXMgZm9yIGVsZW1lbnRzIHdpdGggZGlzcGxheTpub25lIChSYW5nZSBzaG91bGQgbm90
IGJyZWFrIHJhbmdlcyBhdCBkaXNwbGF5Om5vbmUpIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworCisgICAgZGVidWcoIkZsb3cgdGVzdCIp
OworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7CisK
K2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBo
aWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVt
cHR5LXJlZ2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRhYzQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1tDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVn
aW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBlbXB0eSByZWdpb25zCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworRmxvdyB0ZXN0CitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFT
UyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlz
IGVxdWFsIHRvIFt3cmFwcGVyLDAsd3JhcHBlciwxXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDAK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1l
bXB0eS1yZWdpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjM2OTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMuaHRtbApAQCAtMCwwICsx
LDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsg
Zm9udC1zaXplOiA1MHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsg
fQorICAgICNib3ggeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7IGhlaWdodDogNTBweDsgbWFy
Z2luLXRvcDogNDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZX0KKyAgICAjcmVnaW9uMSB7IC13
ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDMwcHg7IGxlZnQ6
IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZs
b3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9
CisgICAgI3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsg
aGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFw
cGVyIj48ZGl2IGlkPSJib3giPjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFz
cz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9k
aXY+CisgIDxkaXYgaWQ9InJlZ2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25G
bG93UmFuZ2VzIGZvciBlbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb24zIik7CisKKyAgICBkZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJ3
cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDApOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MDJiMDUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0MiBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVn
aW9uRmxvd1Jhbmdlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUu
CitFbXB0eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVu
Z3RoIGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFu
Z2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0
byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5
IFtib3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2Uz
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBb
Ym94MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9u
eW1vdXMgYmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBl
ciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEs
MSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdy
YXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNp
emUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwx
XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0
XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwx
XSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBu
b2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2Ux
Lmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBb
d3JhcHBlciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0
byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
I3RleHQsNSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2Uz
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94
MSwwLGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2VhZWNiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9z
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdp
b246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBp
cyBlcXVhbCB0byBbd3JhcHBlciwwLHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzN2E4NTMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhl
ZC1wb3MuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2JveDEgeyAtd2Vi
a2l0LWZsb3ctaW50bzogZmxvdzsgcG9zaXRpb246IGZpeGVkOyB3aWR0aDogNTBweDsgaGVpZ2h0
OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgdG9wOiAyNXB4OyBsZWZ0OiAyNXB4OyB9
CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDEwMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDUwcHg7
IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+CisgICAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PC9kaXY+PC9kaXY+
CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBm
b3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1l
bnRzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9u
MSIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7
CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisgICAg
aGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1o
b3Jpei1idC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODFkYThlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQyIEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25G
bG93UmFuZ2VzIGZvciBob3Jpem9udGFsLWJ0IG1vZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitUZXh0IG5vZGUuCitFbXB0eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMg
MAorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93
IGFydGljbGUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAs
Ym94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0
aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJv
eDEsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBl
ciwxXSBpcyBlcXVhbCB0byBbYm94MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVn
aW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQor
UEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gx
LDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0g
aXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwyLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFd
CitJbmNyZWFzZSBmb250IHNpemUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5
IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1Mg
cmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwg
dG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkg
WyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtl
IGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJl
Z2lvbjMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94
MSwwXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwj
dGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJv
eDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwx
XSBpcyBlcXVhbCB0byBbYm94MSwwLGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzk4YzFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQu
aHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jp
em9udGFsLWJ0OyB9CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAj
d3JhcHBlciB7IGZvbnQtc2l6ZTogMzBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBz
b2xpZCByZWQ7IH0KKyAgICAjYXJ0aWNsZSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsg
aGVpZ2h0OiAxMzVweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDEgeyBiYWNrZ3JvdW5kLWNv
bG9yOiBsaWdodGdyZWVuOyBoZWlnaHQ6IDExMHB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94
MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgaGVpZ2h0OiAxMHB4OyBwYWRkaW5nOiA1cHg7
fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7
IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAt
d2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0
OiAyMHB4OyB0b3A6IDMwMHB4O30KKyAgICAjcmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBm
bG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzUwcHg7
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImFydGljbGUiPjxkaXYgaWQ9ImJveDEi
PjxkaXYgaWQ9ImJveDIiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdp
b24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2Pgor
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246Omdl
dFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGhvcml6b250YWwtYnQgbW9kZSIpOworICAgIHZhciByZWdp
b24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9u
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lvbjMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkVtcHR5
IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOworICAg
IHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMyA9IHJl
Z2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJGbG93IGFydGljbGUiKTsKKyAgICB2
YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRpY2xlIik7CisgICAgYXJ0
aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9u
MS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDAp
LCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94
MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMSwgIndy
YXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVh
dGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJi
b3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFw
cGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEp
OworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAi
Ym94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29t
cGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBbImJveDEiLCAyLCAid3JhcHBlciIs
IDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNpemUiKTsKKyAgICB2YXIgd3JhcHBl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVyIik7CisgICAgd3JhcHBlci5zdHls
ZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAs
ICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgIiN0ZXh0Iiwg
NF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOwor
CisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdpbGwgbW92ZSBm
cm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBib3gyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cx
IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMF0pOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDEiLCAxLCAiI3RleHQi
LCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgImJveDEiLCAyXSk7Cisg
ICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94MSIsIDFdKTsKKworZnVuY3Rpb24g
aGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVu
IjsKK30KKworICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtaW5saW5lLW9ubHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYTM0YzQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxp
bmUtb25seS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorW0NTU1JlZ2lvbnNdIFRlc3Qg
Zm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgaW5saW5lIGVsZW1lbnRzCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworRmxvdyB0ZXN0CitQQVNTIHJhbmdlMS5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCx3cmFwcGVyLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUt
b25seS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYTQ2YzcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy1pbmxpbmUtb25seS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGJvZHkgeyBmb250LWZh
bWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDIwcHg7IH0KKyAg
ICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2lubGluZU9ubHkgeyAt
d2Via2l0LWZsb3ctaW50bzogZmxvdzE7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgaGVp
Z2h0OiAxMzVweDsgcGFkZGluZzogMTBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ct
ZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6
IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6
IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYg
aWQ9IndyYXBwZXIiPjxzcGFuIGlkPSJpbmxpbmVPbmx5Ij48L3NwYW4+PC9kaXY+CisgIDxkaXYg
aWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBj
bGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9u
c10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBpbmxpbmUgZWxlbWVu
dHMiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24x
Iik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIp
OworCisKKyAgICBkZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndy
YXBwZXIiLCAwLCAid3JhcHBlciIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3Ro
IiwgMCk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMwNTkzZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246Omdl
dFJlZ2lvbkZsb3dSYW5nZXMuIFRleHQgYnJlYWtzIGluIHR3byByZWdpb25zCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRmxvdyB0ZXN0CitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFt3
cmFwcGVyLDAsI3RleHQsNF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsj
dGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtdmVy
dC1sci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmVmMTNiOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJl
Z2lvbkZsb3dSYW5nZXMgaW4gdmVydGljYWwtcmwgbW9kZS4gVGV4dCBicmVha3MgaW50byB0d28g
cmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0Zsb3cg
dGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCwjdGV4
dCw0XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFsjdGV4dCw1
LHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtdmVydC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjUyNTdhZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRtbApA
QCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKyAgICBodG1sIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJs
OyB9CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7
IGZvbnQtc2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7
IH0KKyAgICAjYm94IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxO30KKyAgICAjcmVnaW9uMSB7
IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7IGhlaWdodDogMjUwcHg7IGxl
ZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206
IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBw
eDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94Ij5UZXh0IG5vZGUuPC9kaXY+
PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2
IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0
aW9uKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGlu
IHZlcnRpY2FsLXJsIG1vZGUuIFRleHQgYnJlYWtzIGludG8gdHdvIHJlZ2lvbnMiKTsKKyAgICB2
YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFy
IHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworCisKKyAgICBk
ZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAi
I3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgIndyYXBwZXIi
LCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zZWU3MjliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC5odG1sCkBAIC0wLDAgKzEsNDcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAg
IGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNp
emU6IDUwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAg
I2JveCB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0
LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4
OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsg
d2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cisg
IDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveCI+VGV4dCBub2RlLjwvZGl2PjwvZGl2Pgor
ICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVn
aW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NT
U1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jhbmdlcy4gVGV4dCBicmVh
a3MgaW4gdHdvIHJlZ2lvbnMiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVnaW9uMiIpOworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lv
bjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAw
KSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0Fu
ZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgIGhpZGVSZWdpb25zQW5k
Rmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12
ZXJ0LWxyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
NTM2OTZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAor
W0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVy
dGljYWwtbHIgbW9kZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4K
K0VtcHR5IHJlZ2lvbnMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMi5sZW5n
dGggaXMgMAorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDAKK0Zsb3cgYXJ0aWNsZQorUEFTUyByYW5n
ZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRv
IFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkg
W2JveDEsMSxib3gxLDFdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwxXQorUEFTUyByYW5nZTMu
bGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFti
b3gxLDEsd3JhcHBlciwxXQorQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVhdGVzIGFub255
bW91cyBibG9jaykKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVy
LDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwx
LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsd3Jh
cHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwyLHdyYXBwZXIsMV0KK0luY3JlYXNlIGZvbnQgc2l6
ZQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFd
IGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRd
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFd
IGlzIGVxdWFsIHRvIFsjdGV4dCw1LHdyYXBwZXIsMV0KK01ha2UgY2hpbGQgYSBjb250ZW50IG5v
ZGUsIHNvIGl0IHdpbGwgbW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMworUEFTUyByYW5nZTEu
bGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDBdIGlzIGVxdWFsIHRvIFt3
cmFwcGVyLDAsYm94MSwwXQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRv
IFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsj
dGV4dCw1LGJveDEsMl0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsYm94MSwyXQorUEFTUyByYW5nZTMu
bGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFtib3gx
LDAsYm94MSwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLXZlcnQtbHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42MzRlZjJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sCkBAIC0wLDAgKzEsMTA3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAg
ICBodG1sIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyB9CisgICAgYm9keSB7
IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMzBw
eDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYXJ0aWNs
ZSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDEzNXB4OyBwYWRkaW5nOiAx
MHB4O30KKyAgICAjYm94MSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IHdpZHRoOiAx
MTBweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFu
Z2U7IHdpZHRoOiAxMHB4OyBwYWRkaW5nOiA1cHg7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1m
bG93LWZyb206IGZsb3cxOyB3aWR0aDogNzBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsg
dG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdp
ZHRoOiA2MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKyAgICAj
cmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdodDog
MjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzUwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxk
aXYgaWQ9ImFydGljbGUiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDIiPjwvZGl2PjwvZGl2
PjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4K
KyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJl
Z2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltD
U1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRp
Y2FsLWxyIG1vZGUiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKKyAgICBk
ZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAi
ZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7
CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAgICByYW5n
ZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFs
dWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkFk
ZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7CisgICAg
dmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHROb2RlKTsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJh
bmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVn
aW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMs
IDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5jcmVhc2Ug
Zm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
d3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7CisgICAgcmFu
Z2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZh
bHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VB
dChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSBy
ZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsi
I3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEgY29u
dGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAg
ICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAgYm94Mi5z
dHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndy
YXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
Mi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwg
WyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwg
MCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhp
ZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZs
b3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVy
dC1ybC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUy
YzhhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tD
U1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRp
Y2FsLXJsIG1vZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitF
bXB0eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVuZ3Ro
IGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFuZ2Ux
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBb
d3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFti
b3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2UzLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94
MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1v
dXMgYmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciww
LGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxi
b3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdyYXBw
ZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNpemUK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBp
cyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQor
UEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBp
cyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBub2Rl
LCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2UxLmxl
bmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBbd3Jh
cHBlciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBb
Ym94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3Rl
eHQsNSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSww
LGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy12ZXJ0LXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LXJsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjAxMTU0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwuaHRtbApAQCAtMCwwICsxLDEwOCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
aHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgfQorICAgIGJvZHkgeyBm
b250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7
IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiAxMzVweDsgcGFkZGluZzogMTBw
eDt9CisgICAgI2JveDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOyB3aWR0aDogMTEw
cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3Jhbmdl
OyB3aWR0aDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxv
dy1mcm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRv
cDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0
aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3Jl
Z2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDI1
MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2
IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48
L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdp
b24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NT
UmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNh
bC1ybCBtb2RlIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24zIik7CisKKyAgICBkZWJ1ZygiRW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSBy
ZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTEubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgi
LCAwKTsKKyAgICB2YXIgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2Vz
KCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVi
dWcoIkZsb3cgYXJ0aWNsZSIpOworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImFydGljbGUiKTsKKyAgICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZs
b3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOwor
ICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdl
dFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2Uz
ID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVh
dGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChy
YW5nZTMsIDApLCBbImJveDEiLCAxLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQg
dGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZh
ciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Cisg
ICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5n
ZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFs
dWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lv
bjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAw
KSwgIFsiYm94MSIsIDIsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZv
bnQgc2l6ZSIpOworICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndy
YXBwZXIiKTsKKyAgICB3cmFwcGVyLnN0eWxlLmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVn
aW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIs
IDApLCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxl
bmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0
ZXh0IiwgNSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRl
bnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAg
dmFyIGJveDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5
bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5n
dGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFw
cGVyIiwgMCwgImJveDEiLCAwXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MSwgMSksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
I3RleHQiLCA1LCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAs
ICJib3gxIiwgMV0pOworCisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhp
ZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKK2hpZGVSZWdpb25zQW5kRmxvd3Mo
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1s
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDA2OWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1y
bC1yYi1sci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorW0NTU1JlZ2lvbnNdIFRlc3Qg
Zm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgbWl4ZWQgdmVydGljYWwgbW9kZXMK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBp
cyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgQXJyYXkgW2JveDMsMSxib3gzLDJd
IGlzIGVxdWFsIHRvIFtib3gzLDEsYm94MywyXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BB
U1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFT
UyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMixib3gzLDFdIGlzIGVxdWFs
IHRvIFtib3gxLDIsYm94MywxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitIb3Jpem9udGFsIFRCCitYCitWZXJ0aWNhbCBMUkhvcml6b250YWwgQlQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2OTgyZjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0
aW5nLW1vZGVzLXJsLXJiLWxyLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1y
bCA7fQorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIg
eyBmb250LXNpemU6IDMwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVk
OyB9CisgICAgI2JveDEgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47IH0KKyAgICAjYm94MTEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOyB3
aWR0aDogMzBweDsgbWFyZ2luLXJpZ2h0OiA3MHB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7IGhlaWdodDogNDAwcHg7ICB9CisgICAgI3Jl
Z2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDQw
MHB4OyAgfQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAy
MDBweDsgaGVpZ2h0OiA0MDBweDsgIH0KKyAgICAjYm94MiB7IC13ZWJraXQtd3JpdGluZy1tb2Rl
OiBob3Jpem9udGFsLXRiOyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyB3aWR0aDogMTUwcHg7IGhl
aWdodDogNDAwcHg7fQorICAgICNib3gyMiB7IGhlaWdodDogMzBweDsgd2lkdGg6IDMwcHg7IGJh
Y2tncm91bmQtY29sb3I6IHdoaXRlOyB9CisgICAgI2JveDMgeyAtd2Via2l0LXdyaXRpbmctbW9k
ZTogdmVydGljYWwtbHI7ICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiAxNTBw
eDsgaGVpZ2h0OiA0MDBweDt9CisgICAgI2JveDQgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9y
aXpvbnRhbC1idDsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyBoZWlnaHQ6IDYwcHg7IHdpZHRo
OiAyMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiAyMHB4O30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
CisgICAgPCEtLWRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MTEi
PjwvZGl2PjxkaXYgaWQ9ImJveDIiPlZlcnQgUkw8L2Rpdj48ZGl2IGlkPSJib3gzIj5WZXJ0IExS
PC9kaXY+PGRpdiBpZD0iYm94NCI+SG9yaXpvbnRhbCBCVDwvZGl2PjwvZGl2LS0+CisKKyAgICA8
ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gxMSI+PC9kaXY+PGRp
diBpZD0iYm94MiI+SG9yaXpvbnRhbCBUQjxkaXYgaWQ9ImJveDIyIj5YPC9kaXY+PC9kaXY+PGRp
diBpZD0iYm94MyI+VmVydGljYWwgTFI8ZGl2IGlkPSJib3g0Ij5Ib3Jpem9udGFsIEJUPC9kaXY+
PC9kaXY+PC9kaXY+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+
PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgICAg
PGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVn
aW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcyIpOworICAg
IHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHJlZ2lv
bjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHJlZ2lvbjMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
MS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwg
WyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMSwgMSksIFsiYm94MyIsIDEsICJib3gzIiwgMl0pOworICAgIHJhbmdlMiA9IHJlZ2lv
bjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAw
KSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEi
LCAyLCAiYm94MyIsIDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAi
aGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZp
c2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9u
MyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKyAgICBoaWRlUmVnaW9uc0FuZEZs
b3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtdGIt
cmwtbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlNTllMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9k
ZXMtdGItcmwtbHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1tDU1NSZWdpb25zXSBU
ZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1v
ZGVzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEs
MV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIEFycmF5IFtib3gzLDEsYm94
MywyXSBpcyBlcXVhbCB0byBbYm94MywxLGJveDMsMl0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMl0K
K1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsYm94MywxXSBpcyBl
cXVhbCB0byBbYm94MSwyLGJveDMsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorVmVydGljYWwgUkwKK1gKK1ZlcnRpY2FsIExSWQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0
aW5nLW1vZGVzLXRiLXJsLWxyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiZGIxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMt
dGItcmwtbHIuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsg
Zm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsg
fQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyB9CisgICAgI2JveDExIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgaGVp
Z2h0OiAzMHB4OyBtYXJnaW4tdG9wOiA3MHB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxv
dy1mcm9tOiBmbG93OyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAwcHg7ICB9CisgICAgI3JlZ2lv
bjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4
OyAgfQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiA0MDBw
eDsgaGVpZ2h0OiAyMDBweDsgIH0KKyAgICAjYm94MiB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2
ZXJ0aWNhbC1ybDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6
IDQwMHB4O30KKyAgICAjYm94MjIgeyBoZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiB3aGl0ZTsgfQorICAgICNib3gzIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZl
cnRpY2FsLWxyOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiA0MDBweDsgaGVp
Z2h0OiAxNTBweDt9CisgICAgI2JveDQgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRh
bC1idDsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyBoZWlnaHQ6IDYwcHg7IHdpZHRoOiA2MHB4
OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjBweDsgbGVmdDogMjBweDt9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDwh
LS1kaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rpdj48
ZGl2IGlkPSJib3gyIj5WZXJ0IFJMPC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydCBMUjwvZGl2Pjxk
aXYgaWQ9ImJveDQiPkhvcml6b250YWwgQlQ8L2Rpdj48L2Rpdi0tPgorCisgICAgPGRpdiBpZD0i
d3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MTEiPjwvZGl2PjxkaXYgaWQ9ImJv
eDIiPlZlcnRpY2FsIFJMPGRpdiBpZD0iYm94MjIiPlg8L2Rpdj48L2Rpdj48ZGl2IGlkPSJib3gz
Ij5WZXJ0aWNhbCBMUjxkaXYgaWQ9ImJveDQiPlk8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJy
ZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFz
cz0iYm9yZGVyIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgZGVidWcoIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5n
ZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1vZGVzIik7CisgICAgcmVnaW9uMSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24yIik7CisgICAgcmVnaW9uMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24zIik7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIs
IDFdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gzIiwg
MSwgImJveDMiLCAyXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIs
IDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDIsICJib3gzIiwgMV0pOworCitm
dW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOworfQorICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
N2Y1Mjg1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLmh0bWwKQEAgLTAsMCArMSwxMDYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGJvZHkgeyBmb250LWZh
bWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0KKyAg
ICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBiYWNr
Z3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQor
ICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgaGVpZ2h0OiAxMTBweDsg
cGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7IGhl
aWdodDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDog
MjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDog
MjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lv
bjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4
OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlk
PSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rp
dj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxk
aXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24z
IiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzLiIpOworICAgIHZhciBy
ZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVn
aW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lv
bjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkVt
cHR5IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOwor
ICAgIHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMyA9
IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJGbG93IGFydGljbGUiKTsKKyAg
ICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRpY2xlIik7CisgICAg
YXJ0aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVn
aW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEs
IDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
Ym94MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAx
KTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMSwg
IndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChj
cmVhdGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJib3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3
cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRS
ZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIs
IDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAx
LCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBbImJveDEiLCAyLCAid3JhcHBl
ciIsIDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNpemUiKTsKKyAgICB2YXIgd3Jh
cHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVyIik7CisgICAgd3JhcHBlci5z
dHlsZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxv
d1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAg
ICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgIiN0ZXh0
IiwgNF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0p
OworCisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdpbGwgbW92
ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBib3gyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZs
b3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMF0pOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDEiLCAxLCAiI3Rl
eHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2Vz
KCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBh
cmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgImJveDEiLCAyXSk7
CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94MSIsIDFdKTsKKworZnVuY3Rp
b24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKK30KKworICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNl
cy9oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVzb3VyY2VzL2hlbHBlci5q
cwppbmRleCA5ZmViMWExLi4xZjhlMmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvcmVzb3VyY2VzL2hlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
cmVzb3VyY2VzL2hlbHBlci5qcwpAQCAtMTYwLDMgKzE2MCwzOSBAQCBmdW5jdGlvbiBhc3NlcnQo
ZXhwcmVzc2lvbiwgZmFpbE1lc3NhZ2UpCiB7CiAgICAgZXhwcmVzc2lvbiA/IGxvZ1Bhc3NNZXNz
YWdlKCIiKSA6IGxvZ0ZhaWxNZXNzYWdlKGZhaWxNZXNzYWdlKTsKIH0KKworLy8gdXNlZCBieSBn
ZXRSZWdpb25GbG93UmFuZ2VzIHRlc3RzCitmdW5jdGlvbiBnZXROYW1lKG5vZGUpIHsKKyAgaWYg
KCFub2RlKSByZXR1cm4gInVuZGVmaW5lZCI7CisgIGlmIChub2RlLm5vZGVUeXBlID09IDMpIC8v
IFRleHQgbm9kZQorICAgIHJldHVybiAiI3RleHQiOworICAvLyBhbGwgdGhlIG90aGVycyBzaG91
bGQgaGF2ZSBhbiBpZAorICByZXR1cm4gbm9kZS5pZDsKK30KKworZnVuY3Rpb24gZ2V0UmFuZ2VB
dChhcnJSYW5nZSwgaW5kZXgpIHsKKyAgaWYgKGluZGV4IDwgYXJyUmFuZ2UubGVuZ3RoKQorICAg
IHJldHVybiBbZ2V0TmFtZShhcnJSYW5nZVtpbmRleF0uc3RhcnRDb250YWluZXIpLCBhcnJSYW5n
ZVtpbmRleF0uc3RhcnRPZmZzZXQsIGdldE5hbWUoYXJyUmFuZ2VbaW5kZXhdLmVuZENvbnRhaW5l
ciksIGFyclJhbmdlW2luZGV4XS5lbmRPZmZzZXRdOworICByZXR1cm4gbnVsbDsKK30KKworZnVu
Y3Rpb24gY29tcGFyZUFycmF5cyhjdXJyZW50LCBleHBlY3RlZCkgeworICAgIHRyeSB7CisgICAg
ICAgIGlmIChjdXJyZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIk51bGwg
b2JqZWN0LiBFeHBlY3RlZCBbIiArIGV4cGVjdGVkLnRvU3RyaW5nKCkgKyAiXSB3YXMgbnVsbCIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChjdXJyZW50Lmxl
bmd0aCAhPT0gZXhwZWN0ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJBcnJh
eSBsZW5ndGggZGlmZmVycy4gRXhwZWN0ZWQgWyIgKyBleHBlY3RlZC50b1N0cmluZygpICsgIl0g
d2FzIFsiICsgY3VycmVudC50b1N0cmluZygpICsgIl0iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1cnJlbnQubGVuZ3RoOyBp
KyspCisgICAgICAgICAgICBpZiAoY3VycmVudFtpXSAhPT0gZXhwZWN0ZWRbaV0pIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBbIiAgKyBleHBlY3RlZC50b1N0cmluZygp
ICsgIl0uIFdhcyBbIiArIGN1cnJlbnQudG9TdHJpbmcoKSArICJdIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIHRl
c3RGYWlsZWQoY3VycmVudCArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBleCk7CisgICAgfQorICAg
IHRlc3RQYXNzZWQoIkFycmF5IFsiICArIGV4cGVjdGVkLnRvU3RyaW5nKCkgKyAiXSBpcyBlcXVh
bCB0byBbIiArIGN1cnJlbnQudG9TdHJpbmcoKSArICJdIik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRj
ZThlZi4uYzVmZjhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTA2ICBS
YXVsIEh1ZGVhICA8cmh1ZGVhQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTUmVnaW9uc11bQ1NT
T01dIEltcGxlbWVudCBFbGVtZW50LmdldFJlZ2lvbkZsb3dSYW5nZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBnZXRSZWdpb25G
bG93UmFuZ2VzIGZ1bmN0aW9uIGZyb20gdGhlIENTUyBSZWdpb25zIHNwZWMuIEl0IGlzIGltcGxl
bWVudGVkIGJ5IGl0ZXJhdGluZyBvdmVyIAorICAgICAgICB0aGUgY29udGVudCBub2RlcyBhbmQg
ZmlndXJpbmcgb3V0IHdoaWNoIG5vZGVzIGhhdmUgYm91bmRpbmdCb3ggaW50ZXJzZWN0aW5nIHRo
ZSByZWdpb24gYm94IGFuZCBmaWd1cmluZyBvdXQKKyAgICAgICAgdGhlIHN0YXJ0IGFuZCBlbmQg
cG9zaXRpb25zLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVn
aW9ucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1maXhlZC1wb3MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdp
b24tZmxvdy1yYW5nZXMtaG9yaXotYnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVy
dC1sci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy12ZXJ0LXJsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1s
ci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOiBhZGRl
ZCB0aGUgd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcyBtZXRob2QKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1
dGVTdGFydFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRzKTogVXNlIHRoZSBsb2dp
Y2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QgaW5zdGVhZCBvZiBvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlIChyZW5hbWVkKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
Omhhc05leHRQYWdlKTogVXNlIHRoZSBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3Qg
aW5zdGVhZCBvZiBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIChyZW5hbWVkKQorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UpOiBBZGRlZCBhIHNsb3dlciBwYXRoIHdoaWNoIHdvcmtzIHdpdGhvdXQgTGF5b3V0U3RhdGUK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25z
KTogVXNlIHRoZSBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QgaW5zdGVhZCBvZiBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIChyZW5hbWVkKQorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzaHJpbmtM
b2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKTogVXNlIHRoZSBsb2dpY2FsVG9wT2ZGbG93VGhyZWFk
Q29udGVudFJlY3QgaW5zdGVhZCBvZiBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIChy
ZW5hbWVkKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tBdmFp
bGFibGVMaW5lV2lkdGhJblJlZ2lvbik6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENv
bnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVu
YW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZSk6IFVz
ZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ29udGFpbmVk
SW5Ob2Rlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJveEludGVy
c2VjdHNSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpn
ZXRSYW5nZXMpOiByZXR1cm5zIGEgdmVjdG9yIG9mIFJhbmdlcyB0aGF0IGNvbnRhaW5zIE5vZGUg
dGhhdCBhcmUgcGFydCBvZiBhIHJlZ2lvbgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKFJlbmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
ZWdpb246OmxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCk6IFJldHVybnMgdGhlIGxv
Z2ljYWwgdG9wIG9mIGEgcmVjdGFuZ2xlIGluc2lkZSB0aGUgZmxvdyB0aHJlYWQgY29udGVudAor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmxvZ2lj
YWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdCk6IFJldHVybnMgdGhlIGxvZ2ljYWwgYm90
dG9tIG9mIGEgcmVjdGFuZ2xlIGluc2lkZSB0aGUgZmxvdyB0aHJlYWQgY29udGVudAorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpnZXRSYW5nZXMpOiBwcm94eSB0aGUgZ2V0UmFuZ2Vz
IGNhbGwgdG8gaXRzIG5hbWVkIGZsb3cgdGhyZWFkCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5oOgorICAgICAgICAoUmVuZGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlZ2lvbjo6bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KTogUmVuYW1lZCBmcm9t
IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clJlZ2lvbjo6bG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KTogUmV0dXJucyB0aGUg
bG9naWNhbCBib3R0b20gb2YgdGhlIEZsb3dUaHJlYWRDb250ZW50IHJlY3QKKwogMjAxMi0wOS0w
NyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICA8YXVkaW8+IGFu
ZCA8dmlkZW8+IHNob3VsZCBzZW5kIERvIE5vdCBUcmFjayB3aGVuIGFwcHJvcHJpYXRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggNTM3MmMyMi4uOWViMjY1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtMjA0Myw2ICsyMDQzLDIwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6
d2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0CiAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwog
fQogCitWZWN0b3I8UmVmUHRyPFJhbmdlPiA+IEVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKSBjb25zdAoreworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOworCisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiByYW5nZU9iamVj
dHM7CisgICAgaWYgKGRvY3VtZW50KCktPmNzc1JlZ2lvbnNFbmFibGVkKCkgJiYgcmVuZGVyZXIo
KSAmJiByZW5kZXJlcigpLT5pc1JlbmRlclJlZ2lvbigpKSB7CisgICAgICAgIFJlbmRlclJlZ2lv
biogcmVnaW9uID0gdG9SZW5kZXJSZWdpb24ocmVuZGVyZXIoKSk7CisgICAgICAgIGlmIChyZWdp
b24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJlZ2lvbi0+Z2V0UmFuZ2VzKHJhbmdlT2JqZWN0
cyk7CisgICAgfQorCisgICAgcmV0dXJuIHJhbmdlT2JqZWN0czsKK30KKwogI2lmbmRlZiBOREVC
VUcKIGJvb2wgRWxlbWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGNlNTA1NDYuLjU2
OTg1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDI3LDYgKzQyNyw3IEBAIHB1YmxpYzoKIAog
ICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB3ZWJraXRSZWdpb25PdmVyc2V0KCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxS
YW5nZT4gPiB3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3Q7CiAKICAgICBib29sIGhh
c0lEKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCmluZGV4IGZiNjBjNzMuLjUxYzBmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTE0
NCw2ICsxNDQsNyBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gQ1NTIFJlZ2lvbnMgQVBJ
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0UmVnaW9uT3ZlcnNl
dDsKKyAgICAgICAgc2VxdWVuY2U8UmFuZ2U+IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
IAogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNU
SVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMTAyMTZiYy4uNDY2ODhjNiAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yMjMyLDcgKzIyMzIs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpjb21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9y
Q2hpbGRBdm9pZGluZ0Zsb2F0cyhjb25zdCBSZQogCiAgICAgTGF5b3V0VW5pdCBibG9ja09mZnNl
dCA9IGxvZ2ljYWxUb3BGb3JDaGlsZChjaGlsZCk7CiAgICAgaWYgKHJlZ2lvbikKLSAgICAgICAg
YmxvY2tPZmZzZXQgPSBtYXgoYmxvY2tPZmZzZXQsIGJsb2NrT2Zmc2V0ICsgKHJlZ2lvbi0+b2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSkpOworICAgICAgICBibG9ja09mZnNldCA9IG1heChibG9ja09mZnNldCwgYmxvY2tP
ZmZzZXQgKyAocmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpKTsKIAogICAgIExheW91dFVuaXQgc3RhcnRPZmYg
PSBzdGFydE9mZnNldEZvckxpbmUoYmxvY2tPZmZzZXQsIGZhbHNlLCByZWdpb24sIG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UsIGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkpOwog
CkBAIC02ODk2LDcgKzY4OTYsNyBAQCBib29sIFJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZShMYXlv
dXRVbml0IGxvZ2ljYWxPZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgcGFnZUJvdQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCiAgICAgICAgIHJl
dHVybiByZWdpb24tPmlzUmVuZGVyUmVnaW9uU2V0KCkgfHwgcmVnaW9uLT5zdHlsZSgpLT5yZWdp
b25PdmVyZmxvdygpID09IEJyZWFrUmVnaW9uT3ZlcmZsb3cKLSAgICAgICAgICAgIHx8IChwYWdl
Qm91bmRhcnlSdWxlID09IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdp
b24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7CisgICAgICAgICAgICB8fCAo
cGFnZUJvdW5kYXJ5UnVsZSA9PSBJbmNsdWRlUGFnZUJvdW5kYXJ5ICYmIHBhZ2VPZmZzZXQgPT0g
cmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTcxODcsMjAgKzcxODcsNTEgQEAgYm9vbCBSZW5kZXJCbG9jazo6bGluZVdp
ZHRoRm9yUGFnaW5hdGVkTGluZUNoYW5nZWQoUm9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3UK
IAogTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFn
ZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gd29yayB3
aXRob3V0IGxheW91dCBzdGF0ZS4gSXQncyBmaW5lIHRvIHVzZSB0aGUgbGF5b3V0IHN0YXRlIGFz
IGEgY2FjaGUKLSAgICAvLyBmb3Igc3BlZWQsIGJ1dCB3ZSBuZWVkIGEgc2xvdyBpbXBsZW1lbnRh
dGlvbiB0aGF0IHdpbGwgd2FsayB1cCB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbiBhbmQgZmln
dXJlCi0gICAgLy8gb3V0IG91ciBvZmZzZXQgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlLgogICAg
IExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3RhdGUoKTsKLSAgICBp
ZiAoIWxheW91dFN0YXRlIHx8ICFsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKGxheW91dFN0YXRlICYmICFsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0
ZWQoKSkKKyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgaWYgKGxheW91dFN0
YXRlKSB7CisgICAgICAgIC8vIEZJWE1FOiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIg
aW4gdGhlIGxheW91dCBzdGF0ZSBpcyBvdXJzLCBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0
aW9uIHdpbGwgYmUgb2ZmLgorICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBhc3NlcnQgZ2V0cyBo
aXQgaW5zaWRlIGNvbXB1dGVMb2dpY2FsSGVpZ2h0IGZvciBwZXJjZW50YWdlIG1hcmdpbnMsIHNp
bmNlIHRoZXkncmUgY29tcHV0ZWQgdXNpbmcKKyAgICAgICAgLy8gd2lkdGhzIHdoaWNoIGNhbiB2
YXJ5IGluIGVhY2ggcmVnaW9uLiBVbnRpbCB3ZSBwYXRjaCB0aGF0LCB3ZSBjYW4ndCBoYXZlIHRo
aXMgYXNzZXJ0LgorICAgICAgICAvLyBBU1NFUlQobGF5b3V0U3RhdGUtPm1fcmVuZGVyZXIgPT0g
dGhpcyk7CiAKLSAgICAvLyBGSVhNRTogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHJlbmRlcmVyIGlu
IHRoZSBsYXlvdXQgc3RhdGUgaXMgb3Vycywgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb21wdXRhdGlv
biB3aWxsIGJlIG9mZi4KLSAgICAvLyBSaWdodCBub3cgdGhpcyBhc3NlcnQgZ2V0cyBoaXQgaW5z
aWRlIGNvbXB1dGVMb2dpY2FsSGVpZ2h0IGZvciBwZXJjZW50YWdlIG1hcmdpbnMsIHNpbmNlIHRo
ZXkncmUgY29tcHV0ZWQgdXNpbmcKLSAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFj
aCByZWdpb24uIFVudGlsIHdlIHBhdGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQu
Ci0gICAgLy8gQVNTRVJUKGxheW91dFN0YXRlLT5tX3JlbmRlcmVyID09IHRoaXMpOworICAgICAg
ICBMYXlvdXRTaXplIG9mZnNldERlbHRhID0gbGF5b3V0U3RhdGUtPm1fbGF5b3V0T2Zmc2V0IC0g
bGF5b3V0U3RhdGUtPm1fcGFnZU9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBvZmZzZXREZWx0YS5oZWlnaHQoKSA6IG9mZnNldERlbHRhLndpZHRoKCk7
CisgICAgfQorICAgIC8vIEZJWE1FOiBSaWdodCBub3csIHRoaXMgYXNzZXJ0IGlzIGhpdCBvdXRz
aWRlIGxheW91dCwgZnJvbSBsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldCBpbiBzZWxlY3Rpb25H
YXBSZWN0c0ZvclJlcGFpbnQgKGNhbGxlZCBmcm9tIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RBbGwp
LgorICAgIC8vIEFTU0VSVChpblJlbmRlckZsb3dUaHJlYWQoKSk7CiAKLSAgICBMYXlvdXRTaXpl
IG9mZnNldERlbHRhID0gbGF5b3V0U3RhdGUtPm1fbGF5b3V0T2Zmc2V0IC0gbGF5b3V0U3RhdGUt
Pm1fcGFnZU9mZnNldDsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9m
ZnNldERlbHRhLmhlaWdodCgpIDogb2Zmc2V0RGVsdGEud2lkdGgoKTsKKyAgICAvLyBGSVhNRTog
VGhpcyBpcyBhIHNsb3dlciBwYXRoIHRoYXQgZG9lc24ndCB1c2UgbGF5b3V0IHN0YXRlIGFuZCBy
ZWxpZXMgb24gZ2V0dGluZyB5b3VyIGxvZ2ljYWwgdG9wIGluc2lkZSB0aGUgZW5jbG9zaW5nIGZs
b3cgdGhyZWFkLiBJdCBkb2Vzbid0CisgICAgLy8gd29yayB3aXRoIGNvbHVtbnMgb3IgcGFnZXMg
Y3VycmVudGx5LCBidXQgaXQgc2hvdWxkIG9uY2UgdGhleSBoYXZlIGJlZW4gc3dpdGNoZWQgb3Zl
ciB0byB1c2luZyBmbG93IHRocmVhZHMuCisgICAgaWYgKCFpblJlbmRlckZsb3dUaHJlYWQoKSkK
KyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisKKyAgICBjb25zdCBSZW5kZXJCbG9j
ayogY3VycmVudEJsb2NrID0gdGhpczsKKyAgICBMYXlvdXRSZWN0IGJsb2NrUmVjdCgwLCAwLCB3
aWR0aCgpLCBoZWlnaHQoKSk7CisKKyAgICB3aGlsZSAoY3VycmVudEJsb2NrICYmICFjdXJyZW50
QmxvY2stPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIFJlbmRlckJsb2NrKiBjb250
YWluZXJCbG9jayA9IGN1cnJlbnRCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIEFT
U0VSVChjb250YWluZXJCbG9jayk7CisgICAgICAgIGlmICghY29udGFpbmVyQmxvY2spCisgICAg
ICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICAgICAgTGF5b3V0UG9pbnQgY3Vy
cmVudEJsb2NrTG9jYXRpb24gPSBjdXJyZW50QmxvY2stPmxvY2F0aW9uKCk7CisKKyAgICAgICAg
aWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpICE9IGN1cnJlbnRCbG9j
ay0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSkgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBw
dXQgdGhlIGJsb2NrIHJlY3QgaW4gY29udGFpbmVyIGNvb3JkaW5hdGVzCisgICAgICAgICAgICAv
LyBhbmQgd2UgaGF2ZSB0byB0YWtlIGludG8gYWNjb3VudCBib3RoIHRoZSBjb250YWluZXIgYW5k
IGN1cnJlbnQgYmxvY2sgZmxpcHBpbmcgbW9kZXMKKyAgICAgICAgICAgIGlmIChjb250YWluZXJC
bG9jay0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChjb250YWluZXJCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgYmxvY2tSZWN0LnNldFkoY3VycmVudEJsb2NrLT5oZWlnaHQoKSAt
IGJsb2NrUmVjdC5tYXhZKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgYmxvY2tSZWN0LnNldFgoY3VycmVudEJsb2NrLT53aWR0aCgpIC0gYmxvY2tSZWN0Lm1h
eFgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50QmxvY2stPmZsaXBGb3JX
cml0aW5nTW9kZShibG9ja1JlY3QpOworICAgICAgICB9CisgICAgICAgIGJsb2NrUmVjdC5tb3Zl
QnkoY3VycmVudEJsb2NrTG9jYXRpb24pOworICAgICAgICBjdXJyZW50QmxvY2sgPSBjb250YWlu
ZXJCbG9jazsKKyAgICB9OworICAgIHJldHVybiBjdXJyZW50QmxvY2stPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBibG9ja1JlY3QueSgpIDogYmxvY2tSZWN0LngoKTsKIH0KIAogUmVuZGVy
UmVnaW9uKiBSZW5kZXJCbG9jazo6cmVnaW9uQXRCbG9ja09mZnNldChMYXlvdXRVbml0IGJsb2Nr
T2Zmc2V0KSBjb25zdApAQCAtNzI0OCw5ICs3Mjc5LDkgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJC
bG9jazo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29u
c3QKICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbjsKICAgICBlbmNsb3NpbmdSZW5kZXJGbG93
VGhyZWFkKCktPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdp
b24pOwogICAgIAotICAgIGlmIChzdGFydFJlZ2lvbiAmJiByZWdpb24tPm9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UoKSA8IHN0YXJ0UmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkpCisgICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZv
ckZsb3dUaHJlYWRDb250ZW50KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJl
YWRDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBzdGFydFJlZ2lvbjsKLSAgICBpZiAoZW5kUmVn
aW9uICYmIHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpID4gZW5kUmVn
aW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpCisgICAgaWYgKGVuZFJlZ2lv
biAmJiByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpID4gZW5kUmVnaW9u
LT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGVuZFJl
Z2lvbjsKICAgICAKICAgICByZXR1cm4gcmVnaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCA3OTJiOWMyLi5hMjlmMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OnNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMoTGF5b3V0VW5pdCBjaGlsZE1hcmdp
blN0YXIKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BQb3NpdGlvbiA9IGxvZ2ljYWxUb3AoKTsK
ICAgICBMYXlvdXRVbml0IGFkanVzdGVkUGFnZU9mZnNldEZvckNvbnRhaW5pbmdCbG9jayA9IG9m
ZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgLSBsb2dpY2FsVG9wKCk7CiAgICAgaWYgKHJl
Z2lvbikgewotICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24g
PSByZWdpb24gPyByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSAtIG9m
ZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9VVF9VTklUOworICAgICAg
ICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24gPSByZWdpb24gPyByZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgICAgIGxvZ2ljYWxUb3BQb3Np
dGlvbiA9IG1heChsb2dpY2FsVG9wUG9zaXRpb24sIGxvZ2ljYWxUb3BQb3NpdGlvbiArIG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24pOwogICAgICAgICBjb250YWluaW5nQmxvY2tSZWdpb24g
PSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwogICAgIH0KQEAgLTEyMTks
NyArMTIxOSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tBdmFpbGFi
bGVMaW5lV2lkdGhJblJlZ2lvbihSZW5kZXJSZWdpb24qIHJlCiAgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wUG9zaXRpb24gPSBsb2dpY2FsVG9wKCk7CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RlZFBh
Z2VPZmZzZXRGb3JDb250YWluaW5nQmxvY2sgPSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlIC0gbG9naWNhbFRvcCgpOwogICAgIGlmIChyZWdpb24pIHsKLSAgICAgICAgTGF5b3V0VW5p
dCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVnaW9uID0gcmVnaW9uID8gcmVnaW9uLT5vZmZzZXRG
cm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlIDogWkVST19MQVlPVVRfVU5JVDsKKyAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mUmVnaW9uID0gcmVnaW9uID8gcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVh
ZENvbnRlbnQoKSAtIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9V
VF9VTklUOwogICAgICAgICBsb2dpY2FsVG9wUG9zaXRpb24gPSBtYXgobG9naWNhbFRvcFBvc2l0
aW9uLCBsb2dpY2FsVG9wUG9zaXRpb24gKyBvZmZzZXRGcm9tTG9naWNhbFRvcE9mUmVnaW9uKTsK
ICAgICAgICAgY29udGFpbmluZ0Jsb2NrUmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJl
Z2lvbnMocmVnaW9uKTsKICAgICB9CkBAIC0yNDk3LDcgKzI0OTcsNyBAQCBzdGF0aWMgdm9pZCBj
b21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBs
b2dpY2FsUmlnaAogICAgICAgICAgICAgICAgIGlmIChyZWdpb24gJiYgY3Vyci0+aXNSZW5kZXJC
bG9jaygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjYiA9IHRv
UmVuZGVyQmxvY2soY3Vycik7CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbiA9IGNiLT5jbGFt
cFRvU3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbik7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRl
ckJveFJlZ2lvbkluZm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94UmVnaW9uSW5mbyhyZWdpb24s
IHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdp
b25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChib3hJbmZvKQogICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljUG9zaXRpb24gKz0gYm94SW5mby0+bG9naWNhbExlZnQoKTsKICAgICAgICAgICAg
ICAgICB9CkBAIC0yNTE2LDcgKzI1MTYsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5saW5lU3Rh
dGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2FsUmlnaAogICAg
ICAgICAgICAgICAgIGlmIChyZWdpb24gJiYgY3Vyci0+aXNSZW5kZXJCbG9jaygpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogY2IgPSB0b1JlbmRlckJsb2NrKGN1
cnIpOwogICAgICAgICAgICAgICAgICAgICAgcmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVu
ZFJlZ2lvbnMocmVnaW9uKTsKLSAgICAgICAgICAgICAgICAgICAgIFJlbmRlckJveFJlZ2lvbklu
Zm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94UmVnaW9uSW5mbyhyZWdpb24sIHJlZ2lvbi0+b2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgIFJl
bmRlckJveFJlZ2lvbkluZm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94UmVnaW9uSW5mbyhyZWdp
b24sIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpOwogICAgICAgICAg
ICAgICAgICAgICAgaWYgKGJveEluZm8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
dXJyICE9IGNvbnRhaW5lckJsb2NrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y1Bvc2l0aW9uIC09IGNiLT5sb2dpY2FsV2lkdGgoKSAtIChib3hJbmZvLT5sb2dpY2FsTGVmdCgp
ICsgYm94SW5mby0+bG9naWNhbFdpZHRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAppbmRleCA0ZTgzY2NhLi4yNjA1M2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmNwcApAQCAtMjcsOCArMjcsMTMgQEAKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQu
aCIKIAogI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5saW5l
VGV4dEJveC5oIgorI2luY2x1ZGUgIlBvc2l0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5l
LmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0TmFtZWRGbG93LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5Myw0ICszOTgsMTcz
IEBAIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjppc01hcmtlZEZvckRlc3RydWN0aW9uKCkg
Y29uc3QKICAgICByZXR1cm4gbV9uYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVk
Rmxvdzo6Rmxvd1N0YXRlTnVsbDsKIH0KIAorc3RhdGljIGJvb2wgaXNDb250YWluZWRJbk5vZGVz
KFZlY3RvcjxOb2RlKj4gb3RoZXJzLCBOb2RlKiBub2RlKQoreworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb3RoZXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIE5vZGUqIG90aGVyID0gb3Ro
ZXJzLmF0KGkpOworICAgICAgICBpZiAob3RoZXItPmNvbnRhaW5zKG5vZGUpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJv
b2wgYm94SW50ZXJzZWN0c1JlZ2lvbihMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JCb3gsIExheW91
dFVuaXQgbG9naWNhbEJvdHRvbUZvckJveCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yUmVnaW9u
LCBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24pCit7CisgICAgYm9vbCByZWdpb25J
c0VtcHR5ID0gbG9naWNhbEJvdHRvbUZvclJlZ2lvbiAhPSBNQVhfTEFZT1VUX1VOSVQgJiYgbG9n
aWNhbFRvcEZvclJlZ2lvbiAhPSBNSU5fTEFZT1VUX1VOSVQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAobG9naWNhbEJvdHRvbUZvclJlZ2lvbiAtIGxvZ2ljYWxUb3BGb3JSZWdpb24pIDw9
IDA7CisgICAgcmV0dXJuICAobG9naWNhbEJvdHRvbUZvckJveCAtIGxvZ2ljYWxUb3BGb3JCb3gp
ID4gMAorICAgICAgICAgICAgJiYgIXJlZ2lvbklzRW1wdHkKKyAgICAgICAgICAgICYmIGxvZ2lj
YWxUb3BGb3JCb3ggPCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uICYmIGxvZ2ljYWxUb3BGb3JSZWdp
b24gPCBsb2dpY2FsQm90dG9tRm9yQm94OworfQorCit2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0cywgY29uc3Qg
UmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0Cit7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
Rm9yUmVnaW9uOworICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvclJlZ2lvbjsKKworICAg
IC8vIGV4dGVuZCB0aGUgZmlyc3QgcmVnaW9uIHRvcCB0byBjb250YWluIGV2ZXJ5dGhpbmcgdXAg
dG8gaXRzIGxvZ2ljYWwgaGVpZ2h0CisgICAgaWYgKHJlZ2lvbi0+aXNGaXJzdFJlZ2lvbigpKQor
ICAgICAgICBsb2dpY2FsVG9wRm9yUmVnaW9uID0gTUlOX0xBWU9VVF9VTklUOworICAgIGVsc2UK
KyAgICAgICAgbG9naWNhbFRvcEZvclJlZ2lvbiA9ICByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpOworCisgICAgLy8gZXh0ZW5kIHRoZSBsYXN0IHJlZ2lvbiB0byBjb250
YWluIGV2ZXJ5dGhpbmcgYWJvdmUgaXRzIHkoKQorICAgIGlmIChyZWdpb24tPmlzTGFzdFJlZ2lv
bigpKQorICAgICAgICBsb2dpY2FsQm90dG9tRm9yUmVnaW9uID0gTUFYX0xBWU9VVF9VTklUOwor
ICAgIGVsc2UKKyAgICAgICAgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiA9IHJlZ2lvbi0+bG9naWNh
bEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCk7CisKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVz
OworICAgIC8vIGVsaW1pbmF0ZSB0aGUgY29udGVudE5vZGVzIHRoYXQgYXJlIGRlc2NlbmRhbnRz
IG9mIG90aGVyIGNvbnRlbnROb2RlcworICAgIGZvciAoTmFtZWRGbG93Q29udGVudE5vZGVzOjpj
b25zdF9pdGVyYXRvciBpdCA9IGNvbnRlbnROb2RlcygpLmJlZ2luKCk7IGl0ICE9IGNvbnRlbnRO
b2RlcygpLmVuZCgpOyArK2l0KSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSAqaXQ7CisgICAgICAg
IGlmICghaXNDb250YWluZWRJbk5vZGVzKG5vZGVzLCBub2RlKSkKKyAgICAgICAgICAgIG5vZGVz
LmFwcGVuZChub2RlKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGVz
LnNpemUoKTsgaSsrKSB7CisgICAgICAgIE5vZGUqIGNvbnRlbnROb2RlID0gbm9kZXMuYXQoaSk7
CisgICAgICAgIGlmICghY29udGVudE5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CisgICAgICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGNvbnRlbnROb2RlLT5kb2N1bWVu
dCgpKTsKKyAgICAgICAgYm9vbCBmb3VuZFN0YXJ0UG9zaXRpb24gPSBmYWxzZTsKKyAgICAgICAg
Ym9vbCBzdGFydHNBYm92ZVJlZ2lvbiA9IHRydWU7CisgICAgICAgIGJvb2wgZW5kc0JlbG93UmVn
aW9uID0gdHJ1ZTsKKyAgICAgICAgYm9vbCBza2lwT3Zlck91dHNpZGVOb2RlcyA9IGZhbHNlOwor
ICAgICAgICBOb2RlKiBsYXN0RW5kTm9kZSA9IDA7CisKKyAgICAgICAgZm9yIChOb2RlKiBub2Rl
ID0gY29udGVudE5vZGU7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGNvbnRl
bnROb2RlKSkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7CisgICAgICAgICAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94OworICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpKQorICAgICAgICAgICAgICAgIGJvdW5k
aW5nQm94ID0gdG9SZW5kZXJJbmxpbmUocmVuZGVyZXIpLT5saW5lc0JvdW5kaW5nQm94KCk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUZXh0KCkpCisgICAgICAgICAgICAgICAg
Ym91bmRpbmdCb3ggPSB0b1JlbmRlclRleHQocmVuZGVyZXIpLT5saW5lc0JvdW5kaW5nQm94KCk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBib3VuZGluZ0JveCA9ICB0b1Jl
bmRlckJveChyZW5kZXJlciktPmZyYW1lUmVjdCgpOworICAgICAgICAgICAgICAgIGlmICh0b1Jl
bmRlckJveChyZW5kZXJlciktPmlzUmVsUG9zaXRpb25lZCgpKQorICAgICAgICAgICAgICAgICAg
ICBib3VuZGluZ0JveC5tb3ZlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+cmVsYXRpdmVQb3NpdGlv
bkxvZ2ljYWxPZmZzZXQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExheW91dFVu
aXQgb2Zmc2V0VG9wID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpLT5vZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RQYWdlKCk7CisgICAgICAgICAgICBjb25zdCBMYXlvdXRQb2ludCBsb2dp
Y2FsT2Zmc2V0RnJvbVRvcChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gWkVST19MQVlPVVRf
VU5JVCA6ICBvZmZzZXRUb3AsCisgICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IG9mZnNldFRvcCA6IFpFUk9fTEFZT1VUX1VOSVQpOworCisgICAgICAgICAgICBib3Vu
ZGluZ0JveC5tb3ZlQnkobG9naWNhbE9mZnNldEZyb21Ub3ApOworCisgICAgICAgICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxUb3BGb3JSZW5kZXJlciA9IHJlZ2lvbi0+bG9naWNhbFRvcE9mRmxvd1Ro
cmVhZENvbnRlbnRSZWN0KGJvdW5kaW5nQm94KTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9n
aWNhbEJvdHRvbUZvclJlbmRlcmVyID0gcmVnaW9uLT5sb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFk
Q29udGVudFJlY3QoYm91bmRpbmdCb3gpOworCisgICAgICAgICAgICAvLyBpZiB0aGUgYm91bmRp
bmcgYm94IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgZG9lc24ndCBpbnRlcnNlY3QgdGhlIHJlZ2lv
biBib3gKKyAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBjdXJyZW50IHJhbmdlIG9ubHkgaWYgdGhl
IHN0YXJ0IGVsZW1lbnQgYmVnYW4gaW5zaWRlIHRoZSByZWdpb24sCisgICAgICAgICAgICAvLyBv
dGhlcndpc2UganVzdCBtb3ZlIHRoZSBzdGFydCBwb3NpdGlvbiBhZnRlciB0aGlzIG5vZGUgYW5k
IGtlZXAgc2tpcHBpbmcgdGhlbSB1bnRpbCB3ZSBmb3VuZCBhIHByb3BlciBzdGFydCBwb3NpdGlv
bi4KKyAgICAgICAgICAgIGlmICghYm94SW50ZXJzZWN0c1JlZ2lvbihsb2dpY2FsVG9wRm9yUmVu
ZGVyZXIsIGxvZ2ljYWxCb3R0b21Gb3JSZW5kZXJlciwgbG9naWNhbFRvcEZvclJlZ2lvbiwgbG9n
aWNhbEJvdHRvbUZvclJlZ2lvbikpIHsKKyAgICAgICAgICAgICAgICBpZiAoZm91bmRTdGFydFBv
c2l0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghc3RhcnRzQWJvdmVSZWdpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZS0+aW50ZXJzZWN0c05vZGUobm9kZSwg
aWdub3JlZEV4Y2VwdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNl
dEVuZEJlZm9yZShub2RlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJhbmdlT2JqZWN0cy5hcHBlbmQocmFuZ2UtPmNsb25lUmFuZ2UoaWdub3JlZEV4Y2VwdGlv
bikpOworICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGNvbnRl
bnROb2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0c0Fib3Zl
UmVnaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICBza2lwT3Zlck91dHNpZGVOb2RlcyA9IHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChza2lwT3Zlck91dHNpZGVOb2RlcykKKyAgICAgICAgICAg
ICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0QWZ0ZXIobm9kZSwgaWdub3JlZEV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICAgICAgZm91bmRTdGFydFBvc2l0aW9uID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHN0YXJ0IHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAobG9naWNhbFRvcEZvclJlbmRlcmVyIDwgbG9naWNhbFRvcEZv
clJlZ2lvbiAmJiBzdGFydHNBYm92ZVJlZ2lvbikgeworICAgICAgICAgICAgICAgIGlmIChyZW5k
ZXJlci0+aXNUZXh0KCkpIHsgLy8gVGV4dCBjcm9zc2VzIHJlZ2lvbiB0b3AKKyAgICAgICAgICAg
ICAgICAgICAgLy8gZm9yIFRleHQgZWxlbWVudHMsIGp1c3QgZmluZCB0aGUgbGFzdCB0ZXh0Ym94
IHRoYXQgaXMgY29udGFpbmVkIGluc2lkZSB0aGUgcmVnaW9uIGFuZCB1c2UgaXRzIHN0YXJ0KCkg
b2Zmc2V0IGFzIHN0YXJ0IHBvc2l0aW9uCisgICAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQq
IHRleHRSZW5kZXJlciA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcik7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3go
KTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChvZmZzZXRUb3AgKyBib3gtPmxvZ2ljYWxCb3R0b20oKSA8IGxvZ2ljYWxUb3BGb3JS
ZWdpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQoUG9zaXRpb24odG9UZXh0KG5vZGUpLCBib3gt
PnN0YXJ0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0c0Fib3ZlUmVnaW9uID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgY3Jvc3NlcyByZWdpb24gdG9w
CisgICAgICAgICAgICAgICAgICAgIC8vIGZvciBhbGwgZWxlbWVudHMsIGV4Y2VwdCBUZXh0LCBq
dXN0IHNldCB0aGUgc3RhcnQgcG9zaXRpb24gdG8gYmUgYmVmb3JlIHRoZWlyIGNoaWxkcmVuCisg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0c0Fib3ZlUmVnaW9uID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlv
bklzQmVmb3JlQ2hpbGRyZW4pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgeyAvLyBub2RlIHN0YXJ0cyBpbnNpZGUgcmVnaW9uCisgICAgICAgICAgICAgICAgLy8gZm9y
IGVsZW1lbnRzIHRoYXQgc3RhcnQgaW5zaWRlIHRoZSByZWdpb24sIHNldCB0aGUgc3RhcnQgcG9z
aXRpb24gdG8gYmUgYmVmb3JlIHRoZW0uIElmIHdlIGZvdW5kIG9uZSwgd2Ugd2lsbCBqdXN0IHNr
aXAgdGhlIG90aGVycyB1bnRpbAorICAgICAgICAgICAgICAgIC8vIHRoZSByYW5nZSBpcyBjbG9z
ZWQuCisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c0Fib3ZlUmVnaW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0c0Fib3ZlUmVnaW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IHJhbmdlLT5zZXRTdGFydEJlZm9yZShub2RlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBza2lwT3Zlck91dHNpZGVOb2Rl
cyAgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvdW5kU3RhcnRQb3NpdGlvbiA9IHRydWU7CisKKyAg
ICAgICAgICAgIC8vIGVuZCBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGxvZ2ljYWxCb3R0b21G
b3JSZWdpb24gPCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIgJiYgKGVuZHNCZWxvd1JlZ2lvbiB8
fCAoIWVuZHNCZWxvd1JlZ2lvbiAmJiAhbm9kZS0+aXNEZXNjZW5kYW50T2YobGFzdEVuZE5vZGUp
KSkpIHsKKyAgICAgICAgICAgICAgICAvLyBmb3IgVGV4dCBlbGVtZW50cywganVzdCBmaW5kIGp1
c3QgZmluZCB0aGUgbGFzdCB0ZXh0Ym94IHRoYXQgaXMgY29udGFpbmVkIGluc2lkZSB0aGUgcmVn
aW9uIGFuZCB1c2UgaXRzIHN0YXJ0KCkrbGVuKCkgb2Zmc2V0IGFzIGVuZCBwb3NpdGlvbgorICAg
ICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkpIHsgLy8gVGV4dCBjcm9zc2VzIHJl
Z2lvbiBib3R0b20KKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVy
ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICAgICAgSW5saW5lVGV4
dEJveCogbGFzdEJveCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZvciAoSW5saW5lVGV4dEJv
eCogYm94ID0gdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5l
eHRUZXh0Qm94KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgob2Zmc2V0VG9wICsg
Ym94LT5sb2dpY2FsVG9wKCkpIDwgbG9naWNhbEJvdHRvbUZvclJlZ2lvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3RCb3ggPSBib3g7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQobGFzdEJveCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGFzdEJveCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0RW5kKFBvc2l0
aW9uKHRvVGV4dChub2RlKSwgbGFzdEJveC0+c3RhcnQoKSArIGxhc3RCb3gtPmxlbigpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgbGFzdEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5v
ZGUgY3Jvc3NlcyByZWdpb24gYm90dG9tCisgICAgICAgICAgICAgICAgICAgIC8vIGZvciBhbGwg
ZWxlbWVudHMsIGV4Y2VwdCBUZXh0LCBqdXN0IHNldCB0aGUgc3RhcnQgcG9zaXRpb24gdG8gYmUg
YWZ0ZXIgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldEVuZChQ
b3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW5kc0JlbG93UmVnaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgbGFzdEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSB7IC8vIG5vZGUgZW5kcyBpbnNpZGUgcmVnaW9uCisgICAgICAgICAgICAgICAgLy8gZm9y
IGVsZW1lbnRzIHRoYXQgZW5kcyBpbnNpZGUgdGhlIHJlZ2lvbiwgc2V0IHRoZSBlbmQgcG9zaXRp
b24gdG8gYmUgYWZ0ZXIgdGhlbQorICAgICAgICAgICAgICAgIC8vIGFsbG93IHRoaXMgZW5kIHBv
c2l0aW9uIHRvIGJlIGNoYW5nZWQgb25seSBieSBvdGhlciBlbGVtZW50cyB0aGF0IGFyZSBub3Qg
ZGVzY2VuZGFudHMgb2YgdGhlIGN1cnJlbnQgZW5kIG5vZGUKKyAgICAgICAgICAgICAgICBpZiAo
ZW5kc0JlbG93UmVnaW9uIHx8ICghZW5kc0JlbG93UmVnaW9uICYmICFub2RlLT5pc0Rlc2NlbmRh
bnRPZihsYXN0RW5kTm9kZSkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRFbmRB
ZnRlcihub2RlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kc0Jl
bG93UmVnaW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGxhc3RFbmROb2RlID0gbm9k
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGZvdW5kU3RhcnRQb3NpdGlvbiB8fCBza2lwT3Zlck91dHNpZGVOb2RlcykKKyAgICAgICAg
ICAgIHJhbmdlT2JqZWN0cy5hcHBlbmQocmFuZ2UpOworICAgIH0KK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IGE4Yjhi
NTEuLjMxOTkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IE5hbWVk
Rmxvd0NvbnRlbnROb2RlcyYgY29udGVudE5vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
Tm9kZXM7IH0KICAgICBib29sIGhhc0NvbnRlbnROb2RlKE5vZGUqIGNvbnRlbnROb2RlKSBjb25z
dCB7IEFTU0VSVChjb250ZW50Tm9kZSk7IHJldHVybiBtX2NvbnRlbnROb2Rlcy5jb250YWlucyhj
b250ZW50Tm9kZSk7IH0KICAgICBib29sIGlzTWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdDsK
KyAgICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JiwgY29uc3QgUmVuZGVy
UmVnaW9uKikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHNldE1hcmtGb3JEZXN0cnVj
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCA4
MGM4NDhiLi44ZjI5Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUmFuZ2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJCb3hSZWdpb25JbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMzI4LDEzICszMjks
MTggQEAgdm9pZCBSZW5kZXJSZWdpb246OmRlbGV0ZUFsbFJlbmRlckJveFJlZ2lvbkluZm8oKQog
ICAgIG1fcmVuZGVyQm94UmVnaW9uSW5mby5jbGVhcigpOwogfQogCi1MYXlvdXRVbml0IFJlbmRl
clJlZ2lvbjo6b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0CitMYXlvdXRV
bml0IFJlbmRlclJlZ2lvbjo6bG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGNvbnN0
IExheW91dFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2lzVmFsaWQgfHwgIW1fZmxv
d1RocmVhZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG1fZmxvd1RocmVhZC0+aXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZsb3dUaHJlYWRQb3J0aW9uUmVj
dCgpLnkoKTsKLSAgICByZXR1cm4gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkueCgpOworICAgIGlm
ICghbV9pc1ZhbGlkIHx8ICFmbG93VGhyZWFkKCkpCisgICAgICAgIHJldHVybiBaRVJPX0xBWU9V
VF9VTklUOworICAgIHJldHVybiBmbG93VGhyZWFkKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyByZWN0LnkoKSA6IHJlY3QueCgpOworfQorCitMYXlvdXRVbml0IFJlbmRlclJlZ2lvbjo6
bG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgIWZsb3dUaHJlYWQoKSkKKyAgICAg
ICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgcmV0dXJuIGZsb3dUaHJlYWQoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QubWF4WSgpIDogcmVjdC5tYXhYKCk7CiB9CiAK
IHZvaWQgUmVuZGVyUmVnaW9uOjpzZXRSZWdpb25PYmplY3RzUmVnaW9uU3R5bGUoKQpAQCAtNDk2
LDQgKzUwMiwxMCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6Y2xlYXJPYmplY3RTdHlsZUluUmVnaW9u
KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogICAgICAgICBjbGVhck9iamVjdFN0eWxlSW5S
ZWdpb24oY2hpbGQpOwogfQogCit2b2lkIFJlbmRlclJlZ2lvbjo6Z2V0UmFuZ2VzKFZlY3RvcjxS
ZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0cykgY29uc3QKK3sKKyAgICBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQqIG5hbWVkRmxvdyA9IHZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xsZXIoKS0+ZW5z
dXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlKCktPnJlZ2lvblRocmVhZCgpKTsKKyAg
ICBuYW1lZEZsb3ctPmdldFJhbmdlcyhyYW5nZU9iamVjdHMsIHRoaXMpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5k
ZXggN2M5Yjg3Zi4uNTM3NThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uaApAQCAtNzgsOCArNzgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRlbGV0ZUFsbFJlbmRl
ckJveFJlZ2lvbkluZm8oKTsKIAotICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSgpIGNvbnN0OwotCiAgICAgYm9vbCBpc0ZpcnN0UmVnaW9uKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0xhc3RSZWdpb24oKSBjb25zdDsKIApAQCAtMTAwLDcgKzk4LDE0IEBAIHB1Ymxp
YzoKICAgICAvLyBoZWlnaHQgb2YgYSBzaW5nbGUgY29sdW1uIG9yIHBhZ2UgaW4gdGhlIHNldC4K
ICAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxXaWR0aCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OwotICAgIAorCisgICAg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYpIGNvbnN0OworICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENv
bnRlbnRSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGxvZ2lj
YWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxUb3BPZkZs
b3dUaHJlYWRDb250ZW50UmVjdChmbG93VGhyZWFkUG9ydGlvblJlY3QoKSk7IH07CisgICAgTGF5
b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKSBjb25zdCB7IHJldHVy
biBsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoZmxvd1RocmVhZFBvcnRpb25S
ZWN0KCkpOyB9OworCisgICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYp
IGNvbnN0OworCiAgICAgLy8gVGhpcyBtZXRob2QgcmVwcmVzZW50cyB0aGUgbG9naWNhbCBoZWln
aHQgb2YgdGhlIGVudGlyZSBmbG93IHRocmVhZCBwb3J0aW9uIHVzZWQgYnkgdGhlIHJlZ2lvbiBv
ciBzZXQuCiAgICAgLy8gRm9yIFJlbmRlclJlZ2lvbnMgaXQgbWF0Y2hlcyBsb2dpY2FsUGFnaW5h
dGlvbkhlaWdodCgpLCBidXQgZm9yIHNldHMgaXQgaXMgdGhlIGhlaWdodCBvZiBhbGwgdGhlIHBh
Z2VzCiAgICAgLy8gb3IgY29sdW1ucyBhZGRlZCB0b2dldGhlci4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163179</attachid>
            <date>2012-09-10 12:21:24 -0700</date>
            <delta_ts>2012-09-12 22:31:46 -0700</delta_ts>
            <desc>Addresses Adam&apos;s comment about visibility on IDL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>88928</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWRhNTU0Li43MWJmYTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDkt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJl
Z2lvbkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250
ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQt
bHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGlu
Zy1tb2Rlcy1ybC1yYi1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3Jp
dGluZy1tb2Rlcy10Yi1ybC1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvcmVzb3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0
UmFuZ2VBdCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOS0wNyAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICA8YXVkaW8+IGFuZCA8dmlkZW8+
IHNob3VsZCBzZW5kIERvIE5vdCBUcmFjayB3aGVuIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1w
b3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jZThjYWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lv
bkZsb3dSYW5nZXMgZm9yIGFic29sdXRlIHBvc2l0aW9uZWQgZWxlbWVudHMKK1BBU1MgcmFuZ2Ux
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVhbCB0
byBbd3JhcHBlciwwLHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NzQxNWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1hYnNvbHV0
ZS1wb3MuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2JveDEgeyAtd2Vi
a2l0LWZsb3ctaW50bzogZmxvdzsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogNTBweDsgaGVp
Z2h0OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgdG9wOiAyNXB4OyBsZWZ0OiAyNXB4
OyB9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDEwMHB4
OyBoZWlnaHQ6IDEwMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDUw
cHg7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+CisgICAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PC9kaXY+PC9k
aXY+CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVz
dCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBhYnNvbHV0ZSBwb3NpdGlvbmVk
IGVsZW1lbnRzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIi
LCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9
CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWNvbnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBhNjc5ZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRl
bnQtbm9kZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1tDU1NSZWdpb25zXSBJbXBs
ZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIHdpdGggbXVsdGlwbGUgY29udGVudCBu
b2RlcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0Zsb3cgdGVz
dAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCwjdGV4dCw0
XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMg
MgorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LHdy
YXBwZXIsMV0KK1BBU1MgQXJyYXkgW3dyYXBwZXIyLDAsd3JhcHBlcjIsMV0gaXMgZXF1YWwgdG8g
W3dyYXBwZXIyLDAsd3JhcHBlcjIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQxNTMxNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRl
bnQtbm9kZXMuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9z
cGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1MHB4OyB9CisgICAgLmJvcmRlciB7
IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgIC5mbG93IHsgLXdlYmtpdC1mbG93LWludG86
IGZsb3cxO30KKyAgICAuYmx1ZSB7YmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDog
NTBweDsgaGVpZ2h0OiA1MHB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBm
bG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7
fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7
IGhlaWdodDogMTIwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9Indy
YXBwZXIiPjxkaXYgY2xhc3M9ImZsb3ciPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRpdiBp
ZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNs
YXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyMiI+PGRpdiBjbGFzcz0iZmxv
dyBibHVlIj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9u
c10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyB3aXRoIG11bHRpcGxlIGNv
bnRlbnQgbm9kZXMiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMiIpOworCisKKyAgICBkZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAgcmFuZ2UxID0gcmVn
aW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEs
IDApLCBbIndyYXBwZXIiLCAwLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Uy
Lmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBb
IiN0ZXh0IiwgNSwgIndyYXBwZXIiLCAxXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMiwgMSksIFsid3JhcHBlcjIiLCAwLCAid3JhcHBlcjIiLCAxXSk7CisKKworZnVuY3Rp
b24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKwor
ICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YzMWJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9u
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBS
ZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGVsZW1lbnRzIHdpdGggZGlzcGxheTpub25l
IChSYW5nZSBzaG91bGQgbm90IGJyZWFrIHJhbmdlcyBhdCBkaXNwbGF5Om5vbmUpCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworMQorMworNQorRmxvdyB0ZXN0CitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8g
W3dyYXBwZXIsMCx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1ub25lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzJmYzg1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZGlzcGxheS1u
b25lLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7
IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMjBweDsgfQorICAgIC5ib3JkZXIgeyBib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAuZmxvdyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93
MTt9CisgICAgI3dyYXBwZXIgcCB7bWFyZ2luOiAwOyBwYWRkaW5nOiAwO30KKyAgICAubm9uZSB7
ZGlzcGxheTogbm9uZTt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
ICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGNsYXNzPSJmbG93Ij48cD4xPC9wPjxwIGNsYXNzPSJu
b25lIj4yPC9wPjxwPjM8L3A+PHAgY2xhc3M9Im5vbmUiPjQ8L3A+PHA+NTwvcD48L2Rpdj48L2Rp
dj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBSZWdpb246OmdldFJlZ2lvbkZs
b3dSYW5nZXMgZm9yIGVsZW1lbnRzIHdpdGggZGlzcGxheTpub25lIChSYW5nZSBzaG91bGQgbm90
IGJyZWFrIHJhbmdlcyBhdCBkaXNwbGF5Om5vbmUpIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworCisgICAgZGVidWcoIkZsb3cgdGVzdCIp
OworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7CisK
K2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBo
aWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVt
cHR5LXJlZ2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRhYzQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1tDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVn
aW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBlbXB0eSByZWdpb25zCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworRmxvdyB0ZXN0CitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFT
UyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3cmFwcGVyLDFdIGlz
IGVxdWFsIHRvIFt3cmFwcGVyLDAsd3JhcHBlciwxXQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDAK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1l
bXB0eS1yZWdpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjM2OTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMuaHRtbApAQCAtMCwwICsx
LDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsg
Zm9udC1zaXplOiA1MHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsg
fQorICAgICNib3ggeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7IGhlaWdodDogNTBweDsgbWFy
Z2luLXRvcDogNDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZX0KKyAgICAjcmVnaW9uMSB7IC13
ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDMwcHg7IGxlZnQ6
IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZs
b3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9
CisgICAgI3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsg
aGVpZ2h0OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFw
cGVyIj48ZGl2IGlkPSJib3giPjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFz
cz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9k
aXY+CisgIDxkaXYgaWQ9InJlZ2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25G
bG93UmFuZ2VzIGZvciBlbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb24zIik7CisKKyAgICBkZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJ3
cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDApOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MDJiMDUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0MiBAQAorW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVn
aW9uRmxvd1Jhbmdlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUu
CitFbXB0eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVu
Z3RoIGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFu
Z2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0
byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5
IFtib3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2Uz
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBb
Ym94MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9u
eW1vdXMgYmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBl
ciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEs
MSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdy
YXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNp
emUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwx
XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0
XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwx
XSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBu
b2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2Ux
Lmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBb
d3JhcHBlciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0
byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
I3RleHQsNSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2Uz
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94
MSwwLGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2VhZWNiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9z
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdp
b246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMKK1BB
U1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBp
cyBlcXVhbCB0byBbd3JhcHBlciwwLHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzN2E4NTMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhl
ZC1wb3MuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2JveDEgeyAtd2Vi
a2l0LWZsb3ctaW50bzogZmxvdzsgcG9zaXRpb246IGZpeGVkOyB3aWR0aDogNTBweDsgaGVpZ2h0
OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgdG9wOiAyNXB4OyBsZWZ0OiAyNXB4OyB9
CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDEwMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDUwcHg7
IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+CisgICAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PC9kaXY+PC9kaXY+
CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBm
b3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1l
bnRzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9u
MSIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7
CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisgICAg
aGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1o
b3Jpei1idC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODFkYThlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQyIEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25G
bG93UmFuZ2VzIGZvciBob3Jpem9udGFsLWJ0IG1vZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitUZXh0IG5vZGUuCitFbXB0eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMg
MAorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93
IGFydGljbGUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAs
Ym94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0
aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJv
eDEsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBl
ciwxXSBpcyBlcXVhbCB0byBbYm94MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVn
aW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQor
UEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gx
LDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0g
aXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwyLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFd
CitJbmNyZWFzZSBmb250IHNpemUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5
IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1Mg
cmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwg
dG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkg
WyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtl
IGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJl
Z2lvbjMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94
MSwwXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwj
dGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJv
eDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwx
XSBpcyBlcXVhbCB0byBbYm94MSwwLGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzk4YzFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQu
aHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jp
em9udGFsLWJ0OyB9CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAj
d3JhcHBlciB7IGZvbnQtc2l6ZTogMzBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBz
b2xpZCByZWQ7IH0KKyAgICAjYXJ0aWNsZSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsg
aGVpZ2h0OiAxMzVweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDEgeyBiYWNrZ3JvdW5kLWNv
bG9yOiBsaWdodGdyZWVuOyBoZWlnaHQ6IDExMHB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94
MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgaGVpZ2h0OiAxMHB4OyBwYWRkaW5nOiA1cHg7
fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7
IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAt
d2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0
OiAyMHB4OyB0b3A6IDMwMHB4O30KKyAgICAjcmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBm
bG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzUwcHg7
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImFydGljbGUiPjxkaXYgaWQ9ImJveDEi
PjxkaXYgaWQ9ImJveDIiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdp
b24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2Pgor
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246Omdl
dFJlZ2lvbkZsb3dSYW5nZXMgZm9yIGhvcml6b250YWwtYnQgbW9kZSIpOworICAgIHZhciByZWdp
b24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9u
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lvbjMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkVtcHR5
IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOworICAg
IHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMyA9IHJl
Z2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJGbG93IGFydGljbGUiKTsKKyAgICB2
YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRpY2xlIik7CisgICAgYXJ0
aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9u
MS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDAp
LCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94
MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMSwgIndy
YXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVh
dGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJi
b3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFw
cGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEp
OworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAi
Ym94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29t
cGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBbImJveDEiLCAyLCAid3JhcHBlciIs
IDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNpemUiKTsKKyAgICB2YXIgd3JhcHBl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVyIik7CisgICAgd3JhcHBlci5zdHls
ZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAs
ICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgIiN0ZXh0Iiwg
NF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOwor
CisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdpbGwgbW92ZSBm
cm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBib3gyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cx
IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMF0pOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDEiLCAxLCAiI3RleHQi
LCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgImJveDEiLCAyXSk7Cisg
ICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94MSIsIDFdKTsKKworZnVuY3Rpb24g
aGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVn
aW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVu
IjsKK30KKworICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtaW5saW5lLW9ubHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYTM0YzQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxp
bmUtb25seS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorW0NTU1JlZ2lvbnNdIFRlc3Qg
Zm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgaW5saW5lIGVsZW1lbnRzCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworRmxvdyB0ZXN0CitQQVNTIHJhbmdlMS5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCx3cmFwcGVyLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUt
b25seS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYTQ2YzcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy1pbmxpbmUtb25seS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGJvZHkgeyBmb250LWZh
bWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDIwcHg7IH0KKyAg
ICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2lubGluZU9ubHkgeyAt
d2Via2l0LWZsb3ctaW50bzogZmxvdzE7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgaGVp
Z2h0OiAxMzVweDsgcGFkZGluZzogMTBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ct
ZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6
IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6
IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYg
aWQ9IndyYXBwZXIiPjxzcGFuIGlkPSJpbmxpbmVPbmx5Ij48L3NwYW4+PC9kaXY+CisgIDxkaXYg
aWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBj
bGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9u
c10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBpbmxpbmUgZWxlbWVu
dHMiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24x
Iik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIp
OworCisKKyAgICBkZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndy
YXBwZXIiLCAwLCAid3JhcHBlciIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3Ro
IiwgMCk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMwNTkzZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246Omdl
dFJlZ2lvbkZsb3dSYW5nZXMuIFRleHQgYnJlYWtzIGluIHR3byByZWdpb25zCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRmxvdyB0ZXN0CitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFt3
cmFwcGVyLDAsI3RleHQsNF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsj
dGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtdmVy
dC1sci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmVmMTNiOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJl
Z2lvbkZsb3dSYW5nZXMgaW4gdmVydGljYWwtcmwgbW9kZS4gVGV4dCBicmVha3MgaW50byB0d28g
cmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4KK0Zsb3cg
dGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCwjdGV4
dCw0XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFsjdGV4dCw1
LHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQtdmVydC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjUyNTdhZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIuaHRtbApA
QCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKyAgICBodG1sIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJs
OyB9CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7
IGZvbnQtc2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7
IH0KKyAgICAjYm94IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxO30KKyAgICAjcmVnaW9uMSB7
IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7IGhlaWdodDogMjUwcHg7IGxl
ZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206
IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBw
eDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94Ij5UZXh0IG5vZGUuPC9kaXY+
PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2
IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0
aW9uKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGlu
IHZlcnRpY2FsLXJsIG1vZGUuIFRleHQgYnJlYWtzIGludG8gdHdvIHJlZ2lvbnMiKTsKKyAgICB2
YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFy
IHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworCisKKyAgICBk
ZWJ1ZygiRmxvdyB0ZXN0Iik7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAi
I3RleHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgIndyYXBwZXIi
LCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zZWU3MjliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC5odG1sCkBAIC0wLDAgKzEsNDcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAg
IGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNp
emU6IDUwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAg
I2JveCB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0
LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4
OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsg
d2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cisg
IDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveCI+VGV4dCBub2RlLjwvZGl2PjwvZGl2Pgor
ICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVn
aW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NT
U1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jhbmdlcy4gVGV4dCBicmVh
a3MgaW4gdHdvIHJlZ2lvbnMiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVnaW9uMiIpOworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lv
bjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAw
KSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0Fu
ZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgIGhpZGVSZWdpb25zQW5k
Rmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12
ZXJ0LWxyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
NTM2OTZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAor
W0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVy
dGljYWwtbHIgbW9kZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9kZS4K
K0VtcHR5IHJlZ2lvbnMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMi5sZW5n
dGggaXMgMAorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDAKK0Zsb3cgYXJ0aWNsZQorUEFTUyByYW5n
ZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRv
IFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkg
W2JveDEsMSxib3gxLDFdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwxXQorUEFTUyByYW5nZTMu
bGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFti
b3gxLDEsd3JhcHBlciwxXQorQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVhdGVzIGFub255
bW91cyBibG9jaykKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVy
LDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwx
LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsd3Jh
cHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwyLHdyYXBwZXIsMV0KK0luY3JlYXNlIGZvbnQgc2l6
ZQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFd
IGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRd
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFd
IGlzIGVxdWFsIHRvIFsjdGV4dCw1LHdyYXBwZXIsMV0KK01ha2UgY2hpbGQgYSBjb250ZW50IG5v
ZGUsIHNvIGl0IHdpbGwgbW92ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMworUEFTUyByYW5nZTEu
bGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDBdIGlzIGVxdWFsIHRvIFt3
cmFwcGVyLDAsYm94MSwwXQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRv
IFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsj
dGV4dCw1LGJveDEsMl0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsYm94MSwyXQorUEFTUyByYW5nZTMu
bGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFtib3gx
LDAsYm94MSwxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLXZlcnQtbHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42MzRlZjJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sCkBAIC0wLDAgKzEsMTA3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAg
ICBodG1sIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyB9CisgICAgYm9keSB7
IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMzBw
eDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYXJ0aWNs
ZSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDEzNXB4OyBwYWRkaW5nOiAx
MHB4O30KKyAgICAjYm94MSB7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IHdpZHRoOiAx
MTBweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFu
Z2U7IHdpZHRoOiAxMHB4OyBwYWRkaW5nOiA1cHg7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1m
bG93LWZyb206IGZsb3cxOyB3aWR0aDogNzBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsg
dG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdp
ZHRoOiA2MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKyAgICAj
cmVnaW9uMyB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdodDog
MjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzUwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxk
aXYgaWQ9ImFydGljbGUiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDIiPjwvZGl2PjwvZGl2
PjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4K
KyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJl
Z2lvbjMiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltD
U1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRp
Y2FsLWxyIG1vZGUiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKKyAgICBk
ZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAi
ZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7
CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAgICByYW5n
ZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFs
dWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkFk
ZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7CisgICAg
dmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHROb2RlKTsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJh
bmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVn
aW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMs
IDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5jcmVhc2Ug
Zm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
d3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7CisgICAgcmFu
Z2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZh
bHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VB
dChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSBy
ZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsi
I3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEgY29u
dGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAg
ICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAgYm94Mi5z
dHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndy
YXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
Mi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwg
WyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwg
MCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhp
ZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZs
b3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVy
dC1ybC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUy
YzhhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tD
U1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRp
Y2FsLXJsIG1vZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitF
bXB0eSByZWdpb25zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVuZ3Ro
IGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFuZ2Ux
Lmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBb
d3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFti
b3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2UzLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94
MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1v
dXMgYmxvY2spCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciww
LGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxi
b3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdyYXBw
ZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMix3cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNpemUK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBp
cyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQor
UEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBp
cyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBub2Rl
LCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2UxLmxl
bmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBbd3Jh
cHBlciwwLGJveDEsMF0KK1BBU1MgQXJyYXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBb
Ym94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3Rl
eHQsNSxib3gxLDJdIGlzIGVxdWFsIHRvIFsjdGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxl
bmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSww
LGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy12ZXJ0LXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LXJsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjAxMTU0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwuaHRtbApAQCAtMCwwICsxLDEwOCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAg
aHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgfQorICAgIGJvZHkgeyBm
b250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7
IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiAxMzVweDsgcGFkZGluZzogMTBw
eDt9CisgICAgI2JveDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOyB3aWR0aDogMTEw
cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3Jhbmdl
OyB3aWR0aDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxv
dy1mcm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRv
cDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0
aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3Jl
Z2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDI1
MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2
IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48
L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdp
b24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NT
UmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNh
bC1ybCBtb2RlIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24zIik7CisKKyAgICBkZWJ1ZygiRW1wdHkgcmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSBy
ZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTEubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgi
LCAwKTsKKyAgICB2YXIgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2Vz
KCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVi
dWcoIkZsb3cgYXJ0aWNsZSIpOworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImFydGljbGUiKTsKKyAgICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZs
b3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOwor
ICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdl
dFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2Uz
ID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVh
dGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChy
YW5nZTMsIDApLCBbImJveDEiLCAxLCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQg
dGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZh
ciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Cisg
ICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5n
ZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFs
dWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lv
bjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAw
KSwgIFsiYm94MSIsIDIsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZv
bnQgc2l6ZSIpOworICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndy
YXBwZXIiKTsKKyAgICB3cmFwcGVyLnN0eWxlLmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVn
aW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIs
IDApLCBbImJveDEiLCAxLCAiI3RleHQiLCA0XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxl
bmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0
ZXh0IiwgNSwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRl
bnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAg
dmFyIGJveDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5
bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5n
dGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFw
cGVyIiwgMCwgImJveDEiLCAwXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MSwgMSksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
I3RleHQiLCA1LCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAs
ICJib3gxIiwgMV0pOworCisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhp
ZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKK2hpZGVSZWdpb25zQW5kRmxvd3Mo
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1s
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDA2OWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1y
bC1yYi1sci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorW0NTU1JlZ2lvbnNdIFRlc3Qg
Zm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgbWl4ZWQgdmVydGljYWwgbW9kZXMK
K1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBp
cyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgQXJyYXkgW2JveDMsMSxib3gzLDJd
IGlzIGVxdWFsIHRvIFtib3gzLDEsYm94MywyXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BB
U1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFT
UyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMixib3gzLDFdIGlzIGVxdWFs
IHRvIFtib3gxLDIsYm94MywxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitIb3Jpem9udGFsIFRCCitYCitWZXJ0aWNhbCBMUkhvcml6b250YWwgQlQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2OTgyZjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0
aW5nLW1vZGVzLXJsLXJiLWxyLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1y
bCA7fQorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIg
eyBmb250LXNpemU6IDMwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVk
OyB9CisgICAgI2JveDEgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47IH0KKyAgICAjYm94MTEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOyB3
aWR0aDogMzBweDsgbWFyZ2luLXJpZ2h0OiA3MHB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7IGhlaWdodDogNDAwcHg7ICB9CisgICAgI3Jl
Z2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDQw
MHB4OyAgfQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAy
MDBweDsgaGVpZ2h0OiA0MDBweDsgIH0KKyAgICAjYm94MiB7IC13ZWJraXQtd3JpdGluZy1tb2Rl
OiBob3Jpem9udGFsLXRiOyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyB3aWR0aDogMTUwcHg7IGhl
aWdodDogNDAwcHg7fQorICAgICNib3gyMiB7IGhlaWdodDogMzBweDsgd2lkdGg6IDMwcHg7IGJh
Y2tncm91bmQtY29sb3I6IHdoaXRlOyB9CisgICAgI2JveDMgeyAtd2Via2l0LXdyaXRpbmctbW9k
ZTogdmVydGljYWwtbHI7ICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiAxNTBw
eDsgaGVpZ2h0OiA0MDBweDt9CisgICAgI2JveDQgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9y
aXpvbnRhbC1idDsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyBoZWlnaHQ6IDYwcHg7IHdpZHRo
OiAyMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiAyMHB4O30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
CisgICAgPCEtLWRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MTEi
PjwvZGl2PjxkaXYgaWQ9ImJveDIiPlZlcnQgUkw8L2Rpdj48ZGl2IGlkPSJib3gzIj5WZXJ0IExS
PC9kaXY+PGRpdiBpZD0iYm94NCI+SG9yaXpvbnRhbCBCVDwvZGl2PjwvZGl2LS0+CisKKyAgICA8
ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gxMSI+PC9kaXY+PGRp
diBpZD0iYm94MiI+SG9yaXpvbnRhbCBUQjxkaXYgaWQ9ImJveDIyIj5YPC9kaXY+PC9kaXY+PGRp
diBpZD0iYm94MyI+VmVydGljYWwgTFI8ZGl2IGlkPSJib3g0Ij5Ib3Jpem9udGFsIEJUPC9kaXY+
PC9kaXY+PC9kaXY+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+
PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgICAg
PGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVn
aW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcyIpOworICAg
IHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHJlZ2lv
bjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHJlZ2lvbjMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
MS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwg
WyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMSwgMSksIFsiYm94MyIsIDEsICJib3gzIiwgMl0pOworICAgIHJhbmdlMiA9IHJlZ2lv
bjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAw
KSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEi
LCAyLCAiYm94MyIsIDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAi
aGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZp
c2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9u
MyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKyAgICBoaWRlUmVnaW9uc0FuZEZs
b3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtdGIt
cmwtbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlNTllMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9k
ZXMtdGItcmwtbHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1tDU1NSZWdpb25zXSBU
ZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1v
ZGVzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEs
MV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIEFycmF5IFtib3gzLDEsYm94
MywyXSBpcyBlcXVhbCB0byBbYm94MywxLGJveDMsMl0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBlcXVhbCB0byBbYm94MSwxLGJveDEsMl0K
K1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDIsYm94MywxXSBpcyBl
cXVhbCB0byBbYm94MSwyLGJveDMsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorVmVydGljYWwgUkwKK1gKK1ZlcnRpY2FsIExSWQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0
aW5nLW1vZGVzLXRiLXJsLWxyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiZGIxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMt
dGItcmwtbHIuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsg
Zm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsg
fQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyB9CisgICAgI2JveDExIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgaGVp
Z2h0OiAzMHB4OyBtYXJnaW4tdG9wOiA3MHB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxv
dy1mcm9tOiBmbG93OyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAwcHg7ICB9CisgICAgI3JlZ2lv
bjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4
OyAgfQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiA0MDBw
eDsgaGVpZ2h0OiAyMDBweDsgIH0KKyAgICAjYm94MiB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2
ZXJ0aWNhbC1ybDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsgaGVpZ2h0OiAxNTBweDsgd2lkdGg6
IDQwMHB4O30KKyAgICAjYm94MjIgeyBoZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiB3aGl0ZTsgfQorICAgICNib3gzIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZl
cnRpY2FsLWxyOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IHdpZHRoOiA0MDBweDsgaGVp
Z2h0OiAxNTBweDt9CisgICAgI2JveDQgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRh
bC1idDsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyBoZWlnaHQ6IDYwcHg7IHdpZHRoOiA2MHB4
OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjBweDsgbGVmdDogMjBweDt9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDwh
LS1kaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rpdj48
ZGl2IGlkPSJib3gyIj5WZXJ0IFJMPC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydCBMUjwvZGl2Pjxk
aXYgaWQ9ImJveDQiPkhvcml6b250YWwgQlQ8L2Rpdj48L2Rpdi0tPgorCisgICAgPGRpdiBpZD0i
d3JhcHBlciI+PGRpdiBpZD0iYm94MSI+PGRpdiBpZD0iYm94MTEiPjwvZGl2PjxkaXYgaWQ9ImJv
eDIiPlZlcnRpY2FsIFJMPGRpdiBpZD0iYm94MjIiPlg8L2Rpdj48L2Rpdj48ZGl2IGlkPSJib3gz
Ij5WZXJ0aWNhbCBMUjxkaXYgaWQ9ImJveDQiPlk8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJy
ZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFz
cz0iYm9yZGVyIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgZGVidWcoIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5n
ZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1vZGVzIik7CisgICAgcmVnaW9uMSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24yIik7CisgICAgcmVnaW9uMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24zIik7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDIpOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIs
IDFdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAxKSwgWyJib3gzIiwg
MSwgImJveDMiLCAyXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIs
IDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDIsICJib3gzIiwgMV0pOworCitm
dW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOworfQorICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
N2Y1Mjg1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLmh0bWwKQEAgLTAsMCArMSwxMDYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGJvZHkgeyBmb250LWZh
bWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0KKyAg
ICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBiYWNr
Z3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQor
ICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgaGVpZ2h0OiAxMTBweDsg
cGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7IGhl
aWdodDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRvcDog
MjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDog
MjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lv
bjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4
OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlk
PSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rp
dj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxk
aXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24z
IiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzLiIpOworICAgIHZhciBy
ZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVn
aW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lv
bjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkVt
cHR5IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOwor
ICAgIHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMyA9
IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJGbG93IGFydGljbGUiKTsKKyAg
ICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRpY2xlIik7CisgICAg
YXJ0aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVn
aW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEs
IDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsi
Ym94MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAx
KTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMSwg
IndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChj
cmVhdGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJib3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3
cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRS
ZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIs
IDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAx
LCAiYm94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBbImJveDEiLCAyLCAid3JhcHBl
ciIsIDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNpemUiKTsKKyAgICB2YXIgd3Jh
cHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVyIik7CisgICAgd3JhcHBlci5z
dHlsZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIs
IDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxv
d1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAg
ICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgIiN0ZXh0
IiwgNF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0p
OworCisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdpbGwgbW92
ZSBmcm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBib3gyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZs
b3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMF0pOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDEiLCAxLCAiI3Rl
eHQiLCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2Vz
KCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBh
cmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgImJveDEiLCAyXSk7
CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94MSIsIDFdKTsKKworZnVuY3Rp
b24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKK30KKworICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNl
cy9oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVzb3VyY2VzL2hlbHBlci5q
cwppbmRleCA5ZmViMWExLi4xZjhlMmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvcmVzb3VyY2VzL2hlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
cmVzb3VyY2VzL2hlbHBlci5qcwpAQCAtMTYwLDMgKzE2MCwzOSBAQCBmdW5jdGlvbiBhc3NlcnQo
ZXhwcmVzc2lvbiwgZmFpbE1lc3NhZ2UpCiB7CiAgICAgZXhwcmVzc2lvbiA/IGxvZ1Bhc3NNZXNz
YWdlKCIiKSA6IGxvZ0ZhaWxNZXNzYWdlKGZhaWxNZXNzYWdlKTsKIH0KKworLy8gdXNlZCBieSBn
ZXRSZWdpb25GbG93UmFuZ2VzIHRlc3RzCitmdW5jdGlvbiBnZXROYW1lKG5vZGUpIHsKKyAgaWYg
KCFub2RlKSByZXR1cm4gInVuZGVmaW5lZCI7CisgIGlmIChub2RlLm5vZGVUeXBlID09IDMpIC8v
IFRleHQgbm9kZQorICAgIHJldHVybiAiI3RleHQiOworICAvLyBhbGwgdGhlIG90aGVycyBzaG91
bGQgaGF2ZSBhbiBpZAorICByZXR1cm4gbm9kZS5pZDsKK30KKworZnVuY3Rpb24gZ2V0UmFuZ2VB
dChhcnJSYW5nZSwgaW5kZXgpIHsKKyAgaWYgKGluZGV4IDwgYXJyUmFuZ2UubGVuZ3RoKQorICAg
IHJldHVybiBbZ2V0TmFtZShhcnJSYW5nZVtpbmRleF0uc3RhcnRDb250YWluZXIpLCBhcnJSYW5n
ZVtpbmRleF0uc3RhcnRPZmZzZXQsIGdldE5hbWUoYXJyUmFuZ2VbaW5kZXhdLmVuZENvbnRhaW5l
ciksIGFyclJhbmdlW2luZGV4XS5lbmRPZmZzZXRdOworICByZXR1cm4gbnVsbDsKK30KKworZnVu
Y3Rpb24gY29tcGFyZUFycmF5cyhjdXJyZW50LCBleHBlY3RlZCkgeworICAgIHRyeSB7CisgICAg
ICAgIGlmIChjdXJyZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIk51bGwg
b2JqZWN0LiBFeHBlY3RlZCBbIiArIGV4cGVjdGVkLnRvU3RyaW5nKCkgKyAiXSB3YXMgbnVsbCIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChjdXJyZW50Lmxl
bmd0aCAhPT0gZXhwZWN0ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJBcnJh
eSBsZW5ndGggZGlmZmVycy4gRXhwZWN0ZWQgWyIgKyBleHBlY3RlZC50b1N0cmluZygpICsgIl0g
d2FzIFsiICsgY3VycmVudC50b1N0cmluZygpICsgIl0iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1cnJlbnQubGVuZ3RoOyBp
KyspCisgICAgICAgICAgICBpZiAoY3VycmVudFtpXSAhPT0gZXhwZWN0ZWRbaV0pIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBbIiAgKyBleHBlY3RlZC50b1N0cmluZygp
ICsgIl0uIFdhcyBbIiArIGN1cnJlbnQudG9TdHJpbmcoKSArICJdIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIHRl
c3RGYWlsZWQoY3VycmVudCArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBleCk7CisgICAgfQorICAg
IHRlc3RQYXNzZWQoIkFycmF5IFsiICArIGV4cGVjdGVkLnRvU3RyaW5nKCkgKyAiXSBpcyBlcXVh
bCB0byBbIiArIGN1cnJlbnQudG9TdHJpbmcoKSArICJdIik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRj
ZThlZi4uYzVmZjhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTA2ICBS
YXVsIEh1ZGVhICA8cmh1ZGVhQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTUmVnaW9uc11bQ1NT
T01dIEltcGxlbWVudCBFbGVtZW50LmdldFJlZ2lvbkZsb3dSYW5nZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBnZXRSZWdpb25G
bG93UmFuZ2VzIGZ1bmN0aW9uIGZyb20gdGhlIENTUyBSZWdpb25zIHNwZWMuIEl0IGlzIGltcGxl
bWVudGVkIGJ5IGl0ZXJhdGluZyBvdmVyIAorICAgICAgICB0aGUgY29udGVudCBub2RlcyBhbmQg
ZmlndXJpbmcgb3V0IHdoaWNoIG5vZGVzIGhhdmUgYm91bmRpbmdCb3ggaW50ZXJzZWN0aW5nIHRo
ZSByZWdpb24gYm94IGFuZCBmaWd1cmluZyBvdXQKKyAgICAgICAgdGhlIHN0YXJ0IGFuZCBlbmQg
cG9zaXRpb25zLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVn
aW9ucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1maXhlZC1wb3MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdp
b24tZmxvdy1yYW5nZXMtaG9yaXotYnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXRleHQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVy
dC1sci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy12ZXJ0LXJsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1s
ci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOiBhZGRl
ZCB0aGUgd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcyBtZXRob2QKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1
dGVTdGFydFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRzKTogVXNlIHRoZSBsb2dp
Y2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QgaW5zdGVhZCBvZiBvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlIChyZW5hbWVkKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
Omhhc05leHRQYWdlKTogVXNlIHRoZSBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3Qg
aW5zdGVhZCBvZiBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIChyZW5hbWVkKQorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UpOiBBZGRlZCBhIHNsb3dlciBwYXRoIHdoaWNoIHdvcmtzIHdpdGhvdXQgTGF5b3V0U3RhdGUK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25z
KTogVXNlIHRoZSBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QgaW5zdGVhZCBvZiBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIChyZW5hbWVkKQorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzaHJpbmtM
b2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKTogVXNlIHRoZSBsb2dpY2FsVG9wT2ZGbG93VGhyZWFk
Q29udGVudFJlY3QgaW5zdGVhZCBvZiBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIChy
ZW5hbWVkKQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tBdmFp
bGFibGVMaW5lV2lkdGhJblJlZ2lvbik6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENv
bnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVu
YW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZSk6IFVz
ZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ29udGFpbmVk
SW5Ob2Rlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJveEludGVy
c2VjdHNSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpn
ZXRSYW5nZXMpOiByZXR1cm5zIGEgdmVjdG9yIG9mIFJhbmdlcyB0aGF0IGNvbnRhaW5zIE5vZGUg
dGhhdCBhcmUgcGFydCBvZiBhIHJlZ2lvbgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKFJlbmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
ZWdpb246OmxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCk6IFJldHVybnMgdGhlIGxv
Z2ljYWwgdG9wIG9mIGEgcmVjdGFuZ2xlIGluc2lkZSB0aGUgZmxvdyB0aHJlYWQgY29udGVudAor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmxvZ2lj
YWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdCk6IFJldHVybnMgdGhlIGxvZ2ljYWwgYm90
dG9tIG9mIGEgcmVjdGFuZ2xlIGluc2lkZSB0aGUgZmxvdyB0aHJlYWQgY29udGVudAorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpnZXRSYW5nZXMpOiBwcm94eSB0aGUgZ2V0UmFuZ2Vz
IGNhbGwgdG8gaXRzIG5hbWVkIGZsb3cgdGhyZWFkCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5oOgorICAgICAgICAoUmVuZGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlZ2lvbjo6bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KTogUmVuYW1lZCBmcm9t
IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clJlZ2lvbjo6bG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KTogUmV0dXJucyB0aGUg
bG9naWNhbCBib3R0b20gb2YgdGhlIEZsb3dUaHJlYWRDb250ZW50IHJlY3QKKwogMjAxMi0wOS0w
NyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICA8YXVkaW8+IGFu
ZCA8dmlkZW8+IHNob3VsZCBzZW5kIERvIE5vdCBUcmFjayB3aGVuIGFwcHJvcHJpYXRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggNTM3MmMyMi4uOWViMjY1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtMjA0Myw2ICsyMDQzLDIwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6
d2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0CiAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwog
fQogCitWZWN0b3I8UmVmUHRyPFJhbmdlPiA+IEVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKSBjb25zdAoreworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOworCisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiByYW5nZU9iamVj
dHM7CisgICAgaWYgKGRvY3VtZW50KCktPmNzc1JlZ2lvbnNFbmFibGVkKCkgJiYgcmVuZGVyZXIo
KSAmJiByZW5kZXJlcigpLT5pc1JlbmRlclJlZ2lvbigpKSB7CisgICAgICAgIFJlbmRlclJlZ2lv
biogcmVnaW9uID0gdG9SZW5kZXJSZWdpb24ocmVuZGVyZXIoKSk7CisgICAgICAgIGlmIChyZWdp
b24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJlZ2lvbi0+Z2V0UmFuZ2VzKHJhbmdlT2JqZWN0
cyk7CisgICAgfQorCisgICAgcmV0dXJuIHJhbmdlT2JqZWN0czsKK30KKwogI2lmbmRlZiBOREVC
VUcKIGJvb2wgRWxlbWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGNlNTA1NDYuLjU2
OTg1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDI3LDYgKzQyNyw3IEBAIHB1YmxpYzoKIAog
ICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB3ZWJraXRSZWdpb25PdmVyc2V0KCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxS
YW5nZT4gPiB3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3Q7CiAKICAgICBib29sIGhh
c0lEKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCmluZGV4IGZiNjBjNzMuLjMzYzExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTE0
NCw2ICsxNDQsNyBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gQ1NTIFJlZ2lvbnMgQVBJ
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0UmVnaW9uT3ZlcnNl
dDsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBzZXF1ZW5jZTxSYW5nZT4gd2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNU
SVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVy
IERPTSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApp
bmRleCAxMDIxNmJjLi40NjY4OGM2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTIyMzIsNyArMjIzMiw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmNv
bXB1dGVTdGFydFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRzKGNvbnN0IFJlCiAK
ICAgICBMYXlvdXRVbml0IGJsb2NrT2Zmc2V0ID0gbG9naWNhbFRvcEZvckNoaWxkKGNoaWxkKTsK
ICAgICBpZiAocmVnaW9uKQotICAgICAgICBibG9ja09mZnNldCA9IG1heChibG9ja09mZnNldCwg
YmxvY2tPZmZzZXQgKyAocmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkg
LSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CisgICAgICAgIGJsb2NrT2Zmc2V0
ID0gbWF4KGJsb2NrT2Zmc2V0LCBibG9ja09mZnNldCArIChyZWdpb24tPmxvZ2ljYWxUb3BGb3JG
bG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkpOwog
CiAgICAgTGF5b3V0VW5pdCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0Rm9yTGluZShibG9ja09mZnNl
dCwgZmFsc2UsIHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwgbG9naWNh
bEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CiAKQEAgLTY4OTYsNyArNjg5Niw3IEBAIGJvb2wgUmVu
ZGVyQmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgUGFnZUJvdW5k
YXJ5UnVsZSBwYWdlQm91CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAocmVnaW9uLT5p
c0xhc3RSZWdpb24oKSkKICAgICAgICAgcmV0dXJuIHJlZ2lvbi0+aXNSZW5kZXJSZWdpb25TZXQo
KSB8fCByZWdpb24tPnN0eWxlKCktPnJlZ2lvbk92ZXJmbG93KCkgPT0gQnJlYWtSZWdpb25PdmVy
ZmxvdwotICAgICAgICAgICAgfHwgKHBhZ2VCb3VuZGFyeVJ1bGUgPT0gSW5jbHVkZVBhZ2VCb3Vu
ZGFyeSAmJiBwYWdlT2Zmc2V0ID09IHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSgpKTsKKyAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlSdWxlID09IEluY2x1ZGVQYWdl
Qm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFk
Q29udGVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzE4NywyMCArNzE4Nyw1MSBA
QCBib29sIFJlbmRlckJsb2NrOjpsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5lQ2hhbmdlZChSb290
SW5saW5lQm94KiByb290Qm94LCBMYXlvdQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBuZWVkcyB0byB3b3JrIHdpdGhvdXQgbGF5b3V0IHN0YXRlLiBJdCdzIGZpbmUg
dG8gdXNlIHRoZSBsYXlvdXQgc3RhdGUgYXMgYSBjYWNoZQotICAgIC8vIGZvciBzcGVlZCwgYnV0
IHdlIG5lZWQgYSBzbG93IGltcGxlbWVudGF0aW9uIHRoYXQgd2lsbCB3YWxrIHVwIHRoZSBjb250
YWluaW5nIGJsb2NrIGNoYWluIGFuZCBmaWd1cmUKLSAgICAvLyBvdXQgb3VyIG9mZnNldCBmcm9t
IHRoZSB0b3Agb2YgdGhlIHBhZ2UuCiAgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlID0gdmll
dygpLT5sYXlvdXRTdGF0ZSgpOwotICAgIGlmICghbGF5b3V0U3RhdGUgfHwgIWxheW91dFN0YXRl
LT5pc1BhZ2luYXRlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobGF5b3V0U3RhdGUg
JiYgIWxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQorICAgICAgICByZXR1cm4gWkVST19MQVlP
VVRfVU5JVDsKKyAgICBpZiAobGF5b3V0U3RhdGUpIHsKKyAgICAgICAgLy8gRklYTUU6IFNhbml0
eSBjaGVjayB0aGF0IHRoZSByZW5kZXJlciBpbiB0aGUgbGF5b3V0IHN0YXRlIGlzIG91cnMsIHNp
bmNlIG90aGVyd2lzZSB0aGUgY29tcHV0YXRpb24gd2lsbCBiZSBvZmYuCisgICAgICAgIC8vIFJp
Z2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxvZ2ljYWxIZWlnaHQg
Zm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRlZCB1c2luZworICAg
ICAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFjaCByZWdpb24uIFVudGlsIHdlIHBh
dGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQuCisgICAgICAgIC8vIEFTU0VSVChs
YXlvdXRTdGF0ZS0+bV9yZW5kZXJlciA9PSB0aGlzKTsKIAotICAgIC8vIEZJWE1FOiBTYW5pdHkg
Y2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIgaW4gdGhlIGxheW91dCBzdGF0ZSBpcyBvdXJzLCBzaW5j
ZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0aW9uIHdpbGwgYmUgb2ZmLgotICAgIC8vIFJpZ2h0IG5v
dyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxvZ2ljYWxIZWlnaHQgZm9yIHBl
cmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRlZCB1c2luZwotICAgIC8vIHdp
ZHRocyB3aGljaCBjYW4gdmFyeSBpbiBlYWNoIHJlZ2lvbi4gVW50aWwgd2UgcGF0Y2ggdGhhdCwg
d2UgY2FuJ3QgaGF2ZSB0aGlzIGFzc2VydC4KLSAgICAvLyBBU1NFUlQobGF5b3V0U3RhdGUtPm1f
cmVuZGVyZXIgPT0gdGhpcyk7CisgICAgICAgIExheW91dFNpemUgb2Zmc2V0RGVsdGEgPSBsYXlv
dXRTdGF0ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdlT2Zmc2V0OworICAg
ICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNldERlbHRhLmhlaWdo
dCgpIDogb2Zmc2V0RGVsdGEud2lkdGgoKTsKKyAgICB9CisgICAgLy8gRklYTUU6IFJpZ2h0IG5v
dywgdGhpcyBhc3NlcnQgaXMgaGl0IG91dHNpZGUgbGF5b3V0LCBmcm9tIGxvZ2ljYWxMZWZ0U2Vs
ZWN0aW9uT2Zmc2V0IGluIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludCAoY2FsbGVkIGZyb20g
RnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCkuCisgICAgLy8gQVNTRVJUKGluUmVuZGVyRmxvd1Ro
cmVhZCgpKTsKIAotICAgIExheW91dFNpemUgb2Zmc2V0RGVsdGEgPSBsYXlvdXRTdGF0ZS0+bV9s
YXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdlT2Zmc2V0OwotICAgIHJldHVybiBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RGVsdGEuaGVpZ2h0KCkgOiBvZmZzZXREZWx0
YS53aWR0aCgpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgc2xvd2VyIHBhdGggdGhhdCBkb2Vz
bid0IHVzZSBsYXlvdXQgc3RhdGUgYW5kIHJlbGllcyBvbiBnZXR0aW5nIHlvdXIgbG9naWNhbCB0
b3AgaW5zaWRlIHRoZSBlbmNsb3NpbmcgZmxvdyB0aHJlYWQuIEl0IGRvZXNuJ3QKKyAgICAvLyB3
b3JrIHdpdGggY29sdW1ucyBvciBwYWdlcyBjdXJyZW50bHksIGJ1dCBpdCBzaG91bGQgb25jZSB0
aGV5IGhhdmUgYmVlbiBzd2l0Y2hlZCBvdmVyIHRvIHVzaW5nIGZsb3cgdGhyZWFkcy4KKyAgICBp
ZiAoIWluUmVuZGVyRmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5J
VDsKKworICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjdXJyZW50QmxvY2sgPSB0aGlzOworICAgIExh
eW91dFJlY3QgYmxvY2tSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsKKworICAgIHdoaWxl
IChjdXJyZW50QmxvY2sgJiYgIWN1cnJlbnRCbG9jay0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsK
KyAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lckJsb2NrID0gY3VycmVudEJsb2NrLT5jb250
YWluaW5nQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5lckJsb2NrKTsKKyAgICAgICAg
aWYgKCFjb250YWluZXJCbG9jaykKKyAgICAgICAgICAgIHJldHVybiBaRVJPX0xBWU9VVF9VTklU
OworICAgICAgICBMYXlvdXRQb2ludCBjdXJyZW50QmxvY2tMb2NhdGlvbiA9IGN1cnJlbnRCbG9j
ay0+bG9jYXRpb24oKTsKKworICAgICAgICBpZiAoY29udGFpbmVyQmxvY2stPnN0eWxlKCktPndy
aXRpbmdNb2RlKCkgIT0gY3VycmVudEJsb2NrLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKSB7Cisg
ICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgYmxvY2sgcmVjdCBpbiBjb250YWluZXIg
Y29vcmRpbmF0ZXMKKyAgICAgICAgICAgIC8vIGFuZCB3ZSBoYXZlIHRvIHRha2UgaW50byBhY2Nv
dW50IGJvdGggdGhlIGNvbnRhaW5lciBhbmQgY3VycmVudCBibG9jayBmbGlwcGluZyBtb2Rlcwor
ICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJsb2NrLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAgICAgICAgICAgICBibG9ja1JlY3Quc2V0
WShjdXJyZW50QmxvY2stPmhlaWdodCgpIC0gYmxvY2tSZWN0Lm1heFkoKSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBibG9ja1JlY3Quc2V0WChjdXJyZW50Qmxv
Y2stPndpZHRoKCkgLSBibG9ja1JlY3QubWF4WCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGN1cnJlbnRCbG9jay0+ZmxpcEZvcldyaXRpbmdNb2RlKGJsb2NrUmVjdCk7CisgICAgICAg
IH0KKyAgICAgICAgYmxvY2tSZWN0Lm1vdmVCeShjdXJyZW50QmxvY2tMb2NhdGlvbik7CisgICAg
ICAgIGN1cnJlbnRCbG9jayA9IGNvbnRhaW5lckJsb2NrOworICAgIH07CisgICAgcmV0dXJuIGN1
cnJlbnRCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGJsb2NrUmVjdC55KCkgOiBi
bG9ja1JlY3QueCgpOwogfQogCiBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2NrOjpyZWdpb25BdEJs
b2NrT2Zmc2V0KExheW91dFVuaXQgYmxvY2tPZmZzZXQpIGNvbnN0CkBAIC03MjQ4LDkgKzcyNzks
OSBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2NrOjpjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25z
KFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAogICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9u
OwogICAgIGVuY2xvc2luZ1JlbmRlckZsb3dUaHJlYWQoKS0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3go
dGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CiAgICAgCi0gICAgaWYgKHN0YXJ0UmVnaW9u
ICYmIHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIDwgc3RhcnRSZWdp
b24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSkKKyAgICBpZiAoc3RhcnRSZWdp
b24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA8IHN0YXJ0UmVn
aW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIHN0
YXJ0UmVnaW9uOwotICAgIGlmIChlbmRSZWdpb24gJiYgcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkgPiBlbmRSZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UoKSkKKyAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dU
aHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVu
dCgpKQogICAgICAgICByZXR1cm4gZW5kUmVnaW9uOwogICAgIAogICAgIHJldHVybiByZWdpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDc5MmI5YzIuLmEyOWYz
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMTU3LDcgKzEx
NTcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZs
b2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogICAgIExheW91dFVuaXQgbG9naWNhbFRv
cFBvc2l0aW9uID0gbG9naWNhbFRvcCgpOwogICAgIExheW91dFVuaXQgYWRqdXN0ZWRQYWdlT2Zm
c2V0Rm9yQ29udGFpbmluZ0Jsb2NrID0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAt
IGxvZ2ljYWxUb3AoKTsKICAgICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIExheW91dFVuaXQgb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+b2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSA6
IFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250
ZW50KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIDogWkVST19MQVlPVVRfVU5J
VDsKICAgICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gbWF4KGxvZ2ljYWxUb3BQb3NpdGlvbiwg
bG9naWNhbFRvcFBvc2l0aW9uICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbik7CiAgICAg
ICAgIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25z
KHJlZ2lvbik7CiAgICAgfQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lv
biogcmUKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BQb3NpdGlvbiA9IGxvZ2ljYWxUb3AoKTsK
ICAgICBMYXlvdXRVbml0IGFkanVzdGVkUGFnZU9mZnNldEZvckNvbnRhaW5pbmdCbG9jayA9IG9m
ZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgLSBsb2dpY2FsVG9wKCk7CiAgICAgaWYgKHJl
Z2lvbikgewotICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24g
PSByZWdpb24gPyByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSAtIG9m
ZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9VVF9VTklUOworICAgICAg
ICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24gPSByZWdpb24gPyByZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgICAgIGxvZ2ljYWxUb3BQb3Np
dGlvbiA9IG1heChsb2dpY2FsVG9wUG9zaXRpb24sIGxvZ2ljYWxUb3BQb3NpdGlvbiArIG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24pOwogICAgICAgICBjb250YWluaW5nQmxvY2tSZWdpb24g
PSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwogICAgIH0KQEAgLTI0OTcs
NyArMjQ5Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5n
dGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAgICAgICAgICAgaWYg
KHJlZ2lvbiAmJiBjdXJyLT5pc1JlbmRlckJsb2NrKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUmVuZGVyQmxvY2sqIGNiID0gdG9SZW5kZXJCbG9jayhjdXJyKTsKICAgICAgICAgICAg
ICAgICAgICAgcmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVnaW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9IGNiLT5y
ZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkpOworICAgICAgICAgICAgICAgICAgICBSZW5kZXJCb3hSZWdpb25JbmZvKiBi
b3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9uLCByZWdpb24tPmxvZ2ljYWxU
b3BGb3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJveElu
Zm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbiArPSBib3hJbmZvLT5s
b2dpY2FsTGVmdCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1MTYsNyArMjUxNiw3IEBAIHN0
YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxMZWZ0
LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiBjdXJy
LT5pc1JlbmRlckJsb2NrKCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJs
b2NrKiBjYiA9IHRvUmVuZGVyQmxvY2soY3Vycik7CiAgICAgICAgICAgICAgICAgICAgICByZWdp
b24gPSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwotICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdp
b25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkp
OworICAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9IGNi
LT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1Ro
cmVhZENvbnRlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoYm94SW5mbykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnIgIT0gY29udGFpbmVyQmxvY2spCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljUG9zaXRpb24gLT0gY2ItPmxvZ2ljYWxXaWR0aCgp
IC0gKGJveEluZm8tPmxvZ2ljYWxMZWZ0KCkgKyBib3hJbmZvLT5sb2dpY2FsV2lkdGgoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3Bw
CmluZGV4IDRlODNjY2EuLjI2MDUzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yNyw4ICsyNywxMyBAQAogI2luY2x1
ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiUG9zaXRpb24u
aCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIK
KyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1
ZGUgIlRleHQuaCIKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzkzLDQgKzM5OCwxNzMgQEAgYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OmlzTWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRmxvdy0+
Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsOwogfQogCitzdGF0
aWMgYm9vbCBpc0NvbnRhaW5lZEluTm9kZXMoVmVjdG9yPE5vZGUqPiBvdGhlcnMsIE5vZGUqIG5v
ZGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlcnMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgTm9kZSogb3RoZXIgPSBvdGhlcnMuYXQoaSk7CisgICAgICAgIGlmIChvdGhlci0+
Y29udGFpbnMobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBib3hJbnRlcnNlY3RzUmVnaW9uKExheW91dFVu
aXQgbG9naWNhbFRvcEZvckJveCwgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yQm94LCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3BGb3JSZWdpb24sIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvclJl
Z2lvbikKK3sKKyAgICBib29sIHJlZ2lvbklzRW1wdHkgPSBsb2dpY2FsQm90dG9tRm9yUmVnaW9u
ICE9IE1BWF9MQVlPVVRfVU5JVCAmJiBsb2dpY2FsVG9wRm9yUmVnaW9uICE9IE1JTl9MQVlPVVRf
VU5JVAorICAgICAgICAgICAgICAgICAgICAgICAgICYmIChsb2dpY2FsQm90dG9tRm9yUmVnaW9u
IC0gbG9naWNhbFRvcEZvclJlZ2lvbikgPD0gMDsKKyAgICByZXR1cm4gIChsb2dpY2FsQm90dG9t
Rm9yQm94IC0gbG9naWNhbFRvcEZvckJveCkgPiAwCisgICAgICAgICAgICAmJiAhcmVnaW9uSXNF
bXB0eQorICAgICAgICAgICAgJiYgbG9naWNhbFRvcEZvckJveCA8IGxvZ2ljYWxCb3R0b21Gb3JS
ZWdpb24gJiYgbG9naWNhbFRvcEZvclJlZ2lvbiA8IGxvZ2ljYWxCb3R0b21Gb3JCb3g7Cit9CisK
K3ZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5n
ZT4gPiYgcmFuZ2VPYmplY3RzLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKK3sK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JSZWdpb247CisgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsQm90dG9tRm9yUmVnaW9uOworCisgICAgLy8gZXh0ZW5kIHRoZSBmaXJzdCByZWdpb24gdG9w
IHRvIGNvbnRhaW4gZXZlcnl0aGluZyB1cCB0byBpdHMgbG9naWNhbCBoZWlnaHQKKyAgICBpZiAo
cmVnaW9uLT5pc0ZpcnN0UmVnaW9uKCkpCisgICAgICAgIGxvZ2ljYWxUb3BGb3JSZWdpb24gPSBN
SU5fTEFZT1VUX1VOSVQ7CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsVG9wRm9yUmVnaW9uID0g
IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCk7CisKKyAgICAvLyBleHRl
bmQgdGhlIGxhc3QgcmVnaW9uIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBhYm92ZSBpdHMgeSgpCisg
ICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCisgICAgICAgIGxvZ2ljYWxCb3R0b21Gb3JS
ZWdpb24gPSBNQVhfTEFZT1VUX1VOSVQ7CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsQm90dG9t
Rm9yUmVnaW9uID0gcmVnaW9uLT5sb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKTsK
KworICAgIFZlY3RvcjxOb2RlKj4gbm9kZXM7CisgICAgLy8gZWxpbWluYXRlIHRoZSBjb250ZW50
Tm9kZXMgdGhhdCBhcmUgZGVzY2VuZGFudHMgb2Ygb3RoZXIgY29udGVudE5vZGVzCisgICAgZm9y
IChOYW1lZEZsb3dDb250ZW50Tm9kZXM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29udGVudE5vZGVz
KCkuYmVnaW4oKTsgaXQgIT0gY29udGVudE5vZGVzKCkuZW5kKCk7ICsraXQpIHsKKyAgICAgICAg
Tm9kZSogbm9kZSA9ICppdDsKKyAgICAgICAgaWYgKCFpc0NvbnRhaW5lZEluTm9kZXMobm9kZXMs
IG5vZGUpKQorICAgICAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOworICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9kZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgTm9kZSog
Y29udGVudE5vZGUgPSBub2Rlcy5hdChpKTsKKyAgICAgICAgaWYgKCFjb250ZW50Tm9kZS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUg
aWdub3JlZEV4Y2VwdGlvbjsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpj
cmVhdGUoY29udGVudE5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICBib29sIGZvdW5kU3RhcnRQ
b3NpdGlvbiA9IGZhbHNlOworICAgICAgICBib29sIHN0YXJ0c0Fib3ZlUmVnaW9uID0gdHJ1ZTsK
KyAgICAgICAgYm9vbCBlbmRzQmVsb3dSZWdpb24gPSB0cnVlOworICAgICAgICBib29sIHNraXBP
dmVyT3V0c2lkZU5vZGVzID0gZmFsc2U7CisgICAgICAgIE5vZGUqIGxhc3RFbmROb2RlID0gMDsK
KworICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjb250ZW50Tm9kZTsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnRyYXZlcnNlTmV4dE5vZGUoY29udGVudE5vZGUpKSB7CisgICAgICAgICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmICghcmVu
ZGVyZXIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIExheW91dFJl
Y3QgYm91bmRpbmdCb3g7CisgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVySW5saW5l
KCkpCisgICAgICAgICAgICAgICAgYm91bmRpbmdCb3ggPSB0b1JlbmRlcklubGluZShyZW5kZXJl
ciktPmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5p
c1RleHQoKSkKKyAgICAgICAgICAgICAgICBib3VuZGluZ0JveCA9IHRvUmVuZGVyVGV4dChyZW5k
ZXJlciktPmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGJvdW5kaW5nQm94ID0gIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+ZnJhbWVSZWN0KCk7
CisgICAgICAgICAgICAgICAgaWYgKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+aXNSZWxQb3NpdGlv
bmVkKCkpCisgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmUodG9SZW5kZXJCb3go
cmVuZGVyZXIpLT5yZWxhdGl2ZVBvc2l0aW9uTG9naWNhbE9mZnNldCgpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRUb3AgPSByZW5kZXJlci0+Y29udGFp
bmluZ0Jsb2NrKCktPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKKyAgICAgICAg
ICAgIGNvbnN0IExheW91dFBvaW50IGxvZ2ljYWxPZmZzZXRGcm9tVG9wKGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBaRVJPX0xBWU9VVF9VTklUIDogIG9mZnNldFRvcCwKKyAgICAgICAgICAg
ICAgICBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0VG9wIDogWkVST19MQVlPVVRf
VU5JVCk7CisKKyAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmVCeShsb2dpY2FsT2Zmc2V0RnJv
bVRvcCk7CisKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJlbmRlcmVyID0g
cmVnaW9uLT5sb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoYm91bmRpbmdCb3gpOwor
ICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIgPSByZWdpb24t
PmxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7CisKKyAg
ICAgICAgICAgIC8vIGlmIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBk
b2Vzbid0IGludGVyc2VjdCB0aGUgcmVnaW9uIGJveAorICAgICAgICAgICAgLy8gY2xvc2UgdGhl
IGN1cnJlbnQgcmFuZ2Ugb25seSBpZiB0aGUgc3RhcnQgZWxlbWVudCBiZWdhbiBpbnNpZGUgdGhl
IHJlZ2lvbiwKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSBqdXN0IG1vdmUgdGhlIHN0YXJ0IHBv
c2l0aW9uIGFmdGVyIHRoaXMgbm9kZSBhbmQga2VlcCBza2lwcGluZyB0aGVtIHVudGlsIHdlIGZv
dW5kIGEgcHJvcGVyIHN0YXJ0IHBvc2l0aW9uLgorICAgICAgICAgICAgaWYgKCFib3hJbnRlcnNl
Y3RzUmVnaW9uKGxvZ2ljYWxUb3BGb3JSZW5kZXJlciwgbG9naWNhbEJvdHRvbUZvclJlbmRlcmVy
LCBsb2dpY2FsVG9wRm9yUmVnaW9uLCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uKSkgeworICAgICAg
ICAgICAgICAgIGlmIChmb3VuZFN0YXJ0UG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFzdGFydHNBYm92ZVJlZ2lvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJh
bmdlLT5pbnRlcnNlY3RzTm9kZShub2RlLCBpZ25vcmVkRXhjZXB0aW9uKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByYW5nZS0+c2V0RW5kQmVmb3JlKG5vZGUsIGlnbm9yZWRFeGNlcHRp
b24pOworICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZS0+
Y2xvbmVSYW5nZShpZ25vcmVkRXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoY29udGVudE5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNraXBPdmVyT3V0c2lkZU5vZGVz
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBPdmVy
T3V0c2lkZU5vZGVzKQorICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnRBZnRlcihu
b2RlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBmb3VuZFN0YXJ0UG9zaXRp
b24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gc3RhcnQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChsb2dpY2FsVG9w
Rm9yUmVuZGVyZXIgPCBsb2dpY2FsVG9wRm9yUmVnaW9uICYmIHN0YXJ0c0Fib3ZlUmVnaW9uKSB7
CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1RleHQoKSkgeyAvLyBUZXh0IGNyb3Nz
ZXMgcmVnaW9uIHRvcAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgVGV4dCBlbGVtZW50cywg
anVzdCBmaW5kIHRoZSBsYXN0IHRleHRib3ggdGhhdCBpcyBjb250YWluZWQgaW5zaWRlIHRoZSBy
ZWdpb24gYW5kIHVzZSBpdHMgc3RhcnQoKSBvZmZzZXQgYXMgc3RhcnQgcG9zaXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJl
bmRlcmVyKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0
ZXh0UmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3go
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFRvcCArIGJveC0+bG9naWNh
bEJvdHRvbSgpIDwgbG9naWNhbFRvcEZvclJlZ2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChQ
b3NpdGlvbih0b1RleHQobm9kZSksIGJveC0+c3RhcnQoKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsg
Ly8gbm9kZSBjcm9zc2VzIHJlZ2lvbiB0b3AKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGFs
bCBlbGVtZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0IHRoZSBzdGFydCBwb3NpdGlvbiB0byBi
ZSBiZWZvcmUgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVS
ZWdpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQoUG9zaXRp
b24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbikpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgc3RhcnRzIGluc2lkZSByZWdp
b24KKyAgICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBzdGFydCBpbnNpZGUgdGhl
IHJlZ2lvbiwgc2V0IHRoZSBzdGFydCBwb3NpdGlvbiB0byBiZSBiZWZvcmUgdGhlbS4gSWYgd2Ug
Zm91bmQgb25lLCB3ZSB3aWxsIGp1c3Qgc2tpcCB0aGUgb3RoZXJzIHVudGlsCisgICAgICAgICAg
ICAgICAgLy8gdGhlIHJhbmdlIGlzIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBpZiAoc3RhcnRz
QWJvdmVSZWdpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0QmVmb3JlKG5vZGUsIGln
bm9yZWRFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHNraXBPdmVyT3V0c2lkZU5vZGVzICA9IGZhbHNlOworICAgICAgICAgICAgZm91bmRT
dGFydFBvc2l0aW9uID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gZW5kIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAobG9naWNhbEJvdHRvbUZvclJlZ2lvbiA8IGxvZ2ljYWxCb3R0b21Gb3JSZW5k
ZXJlciAmJiAoZW5kc0JlbG93UmVnaW9uIHx8ICghZW5kc0JlbG93UmVnaW9uICYmICFub2RlLT5p
c0Rlc2NlbmRhbnRPZihsYXN0RW5kTm9kZSkpKSkgeworICAgICAgICAgICAgICAgIC8vIGZvciBU
ZXh0IGVsZW1lbnRzLCBqdXN0IGZpbmQganVzdCBmaW5kIHRoZSBsYXN0IHRleHRib3ggdGhhdCBp
cyBjb250YWluZWQgaW5zaWRlIHRoZSByZWdpb24gYW5kIHVzZSBpdHMgc3RhcnQoKStsZW4oKSBv
ZmZzZXQgYXMgZW5kIHBvc2l0aW9uCisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1Rl
eHQoKSkgeyAvLyBUZXh0IGNyb3NzZXMgcmVnaW9uIGJvdHRvbQorICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyZXIpOworICAg
ICAgICAgICAgICAgICAgICBJbmxpbmVUZXh0Qm94KiBsYXN0Qm94ID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVuZGVyZXItPmZpcnN0VGV4
dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKChvZmZzZXRUb3AgKyBib3gtPmxvZ2ljYWxUb3AoKSkgPCBsb2dpY2FsQm90
dG9tRm9yUmVnaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEJveCA9IGJv
eDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXN0Qm94KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Qm94KQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJhbmdlLT5zZXRFbmQoUG9zaXRpb24odG9UZXh0KG5vZGUpLCBsYXN0Qm94LT5zdGFy
dCgpICsgbGFzdEJveC0+bGVuKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVuZHNCZWxvd1JlZ2lv
biA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9kZSBjcm9zc2VzIHJlZ2lvbiBib3R0b20KKyAgICAg
ICAgICAgICAgICAgICAgLy8gZm9yIGFsbCBlbGVtZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0
IHRoZSBzdGFydCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVpciBjaGlsZHJlbgorICAgICAgICAg
ICAgICAgICAgICByYW5nZS0+c2V0RW5kKFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlv
bklzQWZ0ZXJDaGlsZHJlbikpOworICAgICAgICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9kZSBlbmRzIGluc2lkZSByZWdp
b24KKyAgICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBlbmRzIGluc2lkZSB0aGUg
cmVnaW9uLCBzZXQgdGhlIGVuZCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVtCisgICAgICAgICAg
ICAgICAgLy8gYWxsb3cgdGhpcyBlbmQgcG9zaXRpb24gdG8gYmUgY2hhbmdlZCBvbmx5IGJ5IG90
aGVyIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBkZXNjZW5kYW50cyBvZiB0aGUgY3VycmVudCBlbmQg
bm9kZQorICAgICAgICAgICAgICAgIGlmIChlbmRzQmVsb3dSZWdpb24gfHwgKCFlbmRzQmVsb3dS
ZWdpb24gJiYgIW5vZGUtPmlzRGVzY2VuZGFudE9mKGxhc3RFbmROb2RlKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmFuZ2UtPnNldEVuZEFmdGVyKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24pOwor
ICAgICAgICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgbGFzdEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZm91bmRTdGFydFBvc2l0aW9uIHx8IHNraXBP
dmVyT3V0c2lkZU5vZGVzKQorICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZSk7
CisgICAgfQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmgKaW5kZXggYThiOGI1MS4uMzE5OTMwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtNzAsNiArNzAsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgTmFtZWRGbG93Q29udGVudE5vZGVzJiBjb250ZW50Tm9kZXMo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnROb2RlczsgfQogICAgIGJvb2wgaGFzQ29udGVudE5v
ZGUoTm9kZSogY29udGVudE5vZGUpIGNvbnN0IHsgQVNTRVJUKGNvbnRlbnROb2RlKTsgcmV0dXJu
IG1fY29udGVudE5vZGVzLmNvbnRhaW5zKGNvbnRlbnROb2RlKTsgfQogICAgIGJvb2wgaXNNYXJr
ZWRGb3JEZXN0cnVjdGlvbigpIGNvbnN0OworICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQ
dHI8UmFuZ2U+ID4mLCBjb25zdCBSZW5kZXJSZWdpb24qKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIHZvaWQgc2V0TWFya0ZvckRlc3RydWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IDgwYzg0OGIuLjhmMjkzNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYWlu
dEluZm8uaCIKKyNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveFJlZ2lvbklu
Zm8uaCIKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCkBAIC0zMjgsMTMgKzMyOSwxOCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6ZGVsZXRl
QWxsUmVuZGVyQm94UmVnaW9uSW5mbygpCiAgICAgbV9yZW5kZXJCb3hSZWdpb25JbmZvLmNsZWFy
KCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wT2ZG
bG93VGhyZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1faXNWYWxpZCB8fCAhbV9mbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICBpZiAobV9mbG93VGhyZWFkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICBy
ZXR1cm4gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpOwotICAgIHJldHVybiBmbG93VGhyZWFk
UG9ydGlvblJlY3QoKS54KCk7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgIWZsb3dUaHJlYWQoKSkK
KyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgcmV0dXJuIGZsb3dUaHJlYWQo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QueSgpIDogcmVjdC54KCk7Cit9CisK
K0xheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVu
dFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxp
ZCB8fCAhZmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKKyAg
ICByZXR1cm4gZmxvd1RocmVhZCgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVjdC5t
YXhZKCkgOiByZWN0Lm1heFgoKTsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246OnNldFJlZ2lvbk9i
amVjdHNSZWdpb25TdHlsZSgpCkBAIC00OTYsNCArNTAyLDEwIEBAIHZvaWQgUmVuZGVyUmVnaW9u
OjpjbGVhck9iamVjdFN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAg
ICAgICAgIGNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihjaGlsZCk7CiB9CiAKK3ZvaWQgUmVuZGVy
UmVnaW9uOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYgcmFuZ2VPYmplY3RzKSBj
b25zdAoreworICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogbmFtZWRGbG93ID0gdmlldygpLT5m
bG93VGhyZWFkQ29udHJvbGxlcigpLT5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5
bGUoKS0+cmVnaW9uVGhyZWFkKCkpOworICAgIG5hbWVkRmxvdy0+Z2V0UmFuZ2VzKHJhbmdlT2Jq
ZWN0cywgdGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCA3YzliODdmLi41Mzc1OGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC03OCw4ICs3OCw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZGVsZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygpOwogCi0gICAgTGF5b3V0
VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3Q7Ci0KICAgICBib29s
IGlzRmlyc3RSZWdpb24oKSBjb25zdDsKICAgICBib29sIGlzTGFzdFJlZ2lvbigpIGNvbnN0Owog
CkBAIC0xMDAsNyArOTgsMTQgQEAgcHVibGljOgogICAgIC8vIGhlaWdodCBvZiBhIHNpbmdsZSBj
b2x1bW4gb3IgcGFnZSBpbiB0aGUgc2V0LgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbFdpZHRoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVp
Z2h0KCkgY29uc3Q7Ci0gICAgCisKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BPZkZsb3dUaHJl
YWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBs
b2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNv
bnN0OworICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGZsb3dUaHJlYWRQ
b3J0aW9uUmVjdCgpKTsgfTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JGbG93VGhy
ZWFkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250
ZW50UmVjdChmbG93VGhyZWFkUG9ydGlvblJlY3QoKSk7IH07CisKKyAgICB2b2lkIGdldFJhbmdl
cyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JikgY29uc3Q7CisKICAgICAvLyBUaGlzIG1ldGhvZCBy
ZXByZXNlbnRzIHRoZSBsb2dpY2FsIGhlaWdodCBvZiB0aGUgZW50aXJlIGZsb3cgdGhyZWFkIHBv
cnRpb24gdXNlZCBieSB0aGUgcmVnaW9uIG9yIHNldC4KICAgICAvLyBGb3IgUmVuZGVyUmVnaW9u
cyBpdCBtYXRjaGVzIGxvZ2ljYWxQYWdpbmF0aW9uSGVpZ2h0KCksIGJ1dCBmb3Igc2V0cyBpdCBp
cyB0aGUgaGVpZ2h0IG9mIGFsbCB0aGUgcGFnZXMKICAgICAvLyBvciBjb2x1bW5zIGFkZGVkIHRv
Z2V0aGVyLgo=
</data>
<flag name="review"
          id="174541"
          type_id="1"
          status="+"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="174542"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163777</attachid>
            <date>2012-09-12 22:31:46 -0700</date>
            <delta_ts>2012-09-12 23:06:25 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>88978</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNWM1M2NjLi5mZjQwNDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDkt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJl
Z2lvbkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250
ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXot
YnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQt
bHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGlu
Zy1tb2Rlcy1ybC1yYi1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3Jp
dGluZy1tb2Rlcy10Yi1ybC1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvcmVzb3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0
UmFuZ2VBdCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOS0xMiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgaGF2ZSBwcm9w
ZXJ0eSBidXR0ZXJmbGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U4Y2FhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBhYnNvbHV0ZSBw
b3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
d3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCx3cmFwcGVyLDFdCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJz
b2x1dGUtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy1hYnNvbHV0ZS1wb3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lNDc0MTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwKQEAgLTAsMCArMSwzNCBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4
IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IHBvc2l0
aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAgICNyZWdpb24xIHsgLXdlYmtp
dC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9Indy
YXBwZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxv
d1JhbmdlcyBmb3IgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVtZW50cyIpOworICAgIHZhciByZWdp
b24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByYW5nZTEgPSBy
ZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MSwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVn
aW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIiku
c3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93
cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LWNvbnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmYwYTY3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxv
d1JhbmdlcyB3aXRoIG11bHRpcGxlIGNvbnRlbnQgbm9kZXMKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwj
dGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3Jh
cHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitQQVNTIEFycmF5IFt3cmFw
cGVyMiwwLHdyYXBwZXIyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyMiwwLHdyYXBwZXIyLDFdCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29u
dGVudC1ub2Rlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjY0MTUzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwKQEAgLTAsMCArMSw1
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+
CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZv
bnQtc2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0K
KyAgICAuZmxvdyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTt9CisgICAgLmJsdWUge2JhY2tn
cm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDt9CisgICAg
I3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0
OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDEyMHB4OyBsZWZ0OiAyMHB4
OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGNsYXNzPSJmbG93Ij5U
ZXh0IG5vZGUuPC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIi
PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRp
diBpZD0id3JhcHBlcjIiPjxkaXYgY2xhc3M9ImZsb3cgYmx1ZSI+PC9kaXY+PC9kaXY+CisgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBSZWdpb246OmdldFJl
Z2lvbkZsb3dSYW5nZXMgd2l0aCBtdWx0aXBsZSBjb250ZW50IG5vZGVzIik7CisgICAgdmFyIHJl
Z2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdp
b24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWco
IkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0
IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0p
OworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDEpLCBbIndyYXBwZXIyIiwg
MCwgIndyYXBwZXIyIiwgMV0pOworCisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5
ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHls
ZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNw
bGF5LW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmNmMzFiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1tDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2Vz
IGZvciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVhayBy
YW5nZXMgYXQgZGlzcGxheTpub25lKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKzEK
KzMKKzUKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dy
YXBwZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsd3JhcHBlciwxXQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3Bs
YXktbm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZGlzcGxheS1ub25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMWMyZmM4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAg
IGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNp
emU6IDIwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAg
LmZsb3cgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQorICAgICN3cmFwcGVyIHAge21hcmdp
bjogMDsgcGFkZGluZzogMDt9CisgICAgLm5vbmUge2Rpc3BsYXk6IG5vbmU7fQorICAgICNyZWdp
b24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBw
eDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cisg
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBj
bGFzcz0iZmxvdyI+PHA+MTwvcD48cCBjbGFzcz0ibm9uZSI+MjwvcD48cD4zPC9wPjxwIGNsYXNz
PSJub25lIj40PC9wPjxwPjU8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNs
YXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25z
XSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBlbGVtZW50cyB3aXRo
IGRpc3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVhayByYW5nZXMgYXQgZGlzcGxheTpu
b25lKSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjEiKTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsi
d3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZs
b3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlz
aWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJl
Z2lvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0
YWM0NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEz
IEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBm
b3IgZW1wdHkgcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Zsb3cgdGVz
dAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNT
IEFycmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLHdyYXBw
ZXIsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNjk1OWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy1lbXB0eS1yZWdpb25zLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5
OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogNTBweDsgfQorICAgIC5i
b3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94IHsgLXdlYmtpdC1mbG93
LWludG86IGZsb3cxOyBoZWlnaHQ6IDUwcHg7IG1hcmdpbi10b3A6IDQwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGJsdWV9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdp
ZHRoOiAyNTBweDsgaGVpZ2h0OiAzMHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAj
cmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6
IDYwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1m
bG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsg
dG9wOiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94Ij48L2Rpdj48
L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYg
aWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBj
bGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9u
c10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZW1wdHkgcmVnaW9u
cyIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEi
KTsKKyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7
CisgICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOwor
CisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAwKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0p
OworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworZnVuY3Rpb24gaGlkZVJl
Z2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIp
LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30K
KworICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kNDAyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NS
ZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5n
ZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5n
dGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJh
eSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNT
IHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwg
dG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
Ym94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4
dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEu
bGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3
cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2Jv
eDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVu
Z3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gx
LDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxi
b3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0
LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3Jh
cHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20g
cmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBb
d3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFy
cmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyBy
YW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0
byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
Ym94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LWZpeGVkLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODdlYWVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZv
ciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCx3cmFw
cGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtZml4ZWQtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMzdhODUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwKQEAgLTAsMCArMSwzMyBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4
IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IHBvc2l0
aW9uOiBmaXhlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1m
bG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9IndyYXBw
ZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNs
YXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyIpOworICAgIHZhciByZWdpb24xID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByYW5nZTEgPSByZWdpb24x
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCks
IFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0Fu
ZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZGE4ZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93
LXJhbmdlcy1ob3Jpei1idC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorW0NTU1JlZ2lv
bnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgaG9yaXpvbnRhbC1i
dCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkg
cmVnaW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAw
CitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwx
LGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3
cmFwcGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJs
b2NrKQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gx
LDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlz
IDEKK1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwy
XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFd
IGlzIGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNT
IHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1
YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBB
cnJheSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1Mg
cmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1
YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28g
aXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGgg
aXMgMgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIs
MCxib3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEs
MSwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUs
Ym94MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gx
LDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtaG9yaXotYnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjc5OGMxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0
bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idDsgfQorICAgIGJvZHkgeyBm
b250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7
IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDogMTM1cHg7IHBhZGRpbmc6IDEw
cHg7fQorICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgaGVpZ2h0OiAx
MTBweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFu
Z2U7IGhlaWdodDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7
IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3
aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAg
I3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0
OiA2MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48
ZGl2IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rp
dj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+
CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJy
ZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJb
Q1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBob3Jp
em9udGFsLWJ0IG1vZGUiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxl
bmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKKyAg
ICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8g
PSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAx
XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7Cisg
ICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJh
eXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAgICBy
YW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRF
dmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5n
ZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWco
IkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7Cisg
ICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4iKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHROb2Rl
KTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAg
IHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0g
cmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5jcmVh
c2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIg
PSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJh
bmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdpb24z
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCks
IFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEg
Y29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMiKTsK
KyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAgYm94
Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Ux
Lmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBb
IndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lv
bjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAw
KSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gx
IiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0Fu
ZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5hY2EzNGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dS
YW5nZXMgZm9yIGlubGluZSBlbGVtZW50cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIs
MCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsd3JhcHBlciwxXQorUEFTUyByYW5n
ZTIubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4yM2E0NmM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbApA
QCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3
cmFwcGVyIHsgZm9udC1zaXplOiAyMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfQorICAgICNpbmxpbmVPbmx5IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxOyBi
YWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7
fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7
IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAt
d2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0
OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48c3BhbiBpZD0iaW5s
aW5lT25seSI+PC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVy
Ij48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVn
aW9uRmxvd1JhbmdlcyBmb3IgaW5saW5lIGVsZW1lbnRzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVz
dCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7
CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworCitmdW5jdGlvbiBoaWRlUmVn
aW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIiku
c3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJl
Z2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjljMDU5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitb
Q1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzLiBUZXh0IGJy
ZWFrcyBpbiB0d28gcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQg
bm9kZS4KK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dy
YXBwZXIsMCwjdGV4dCw0XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLCN0ZXh0LDRdCitQQVNTIHJh
bmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFs
IHRvIFsjdGV4dCw1LHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjEzYjhjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitbQ1NT
UmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGluIHZlcnRpY2Fs
LXJsIG1vZGUuIFRleHQgYnJlYWtzIGludG8gdHdvIHJlZ2lvbnMKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBp
cyAxCitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIs
MCwjdGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUs
d3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0
LXZlcnQtbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjU3YWQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24t
Zmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13
ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgfQorICAgIGJvZHkgeyBmb250LWZhbWls
eTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDUwcHg7IH0KKyAgICAu
Ym9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2JveCB7IC13ZWJraXQtZmxv
dy1pbnRvOiBmbG93MTt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7
IHdpZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAg
ICAjcmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdo
dDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIi
PjxkaXYgaWQ9ImJveCI+VGV4dCBub2RlLjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24x
IiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRl
ciI+PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9y
IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBpbiB2ZXJ0aWNhbC1ybCBtb2RlLiBUZXh0IGJy
ZWFrcyBpbnRvIHR3byByZWdpb25zIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJh
bmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9
IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UyLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVn
aW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIiku
c3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJl
Z2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlNzI5YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLXRleHQuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9z
cGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1MHB4OyB9CisgICAgLmJvcmRlciB7
IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3ggeyAtd2Via2l0LWZsb3ctaW50bzog
ZmxvdzE7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDog
MjUwcHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lv
bjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4
OyBsZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlk
PSJib3giPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9
ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2
PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246
OmdldFJlZ2lvbkZsb3dSYW5nZXMuIFRleHQgYnJlYWtzIGluIHR3byByZWdpb25zIik7CisgICAg
dmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZh
ciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworICAgIGRl
YnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICIj
dGV4dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29t
cGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIs
IDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAi
aGlkZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzNjk2YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdp
b246OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRpY2FsLWxyIG1vZGUKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitFbXB0eSByZWdpb25zCitQQVNTIHJhbmdl
MS5sZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0
aCBpcyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5
IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1Mg
cmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0
byBbYm94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFti
b3gxLDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0
IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spCitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dy
YXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwxLGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEs
Mix3cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNpemUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJv
eDEsMV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQs
NF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFw
cGVyLDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSBy
ZWdpb24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3
cmFwcGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMF0KK1BBU1MgQXJy
YXkgW2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJh
bmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSxib3gxLDJdIGlzIGVxdWFsIHRv
IFsjdGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFti
b3gxLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwwLGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LWxyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0ZWYyYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXZlcnQtbHIuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1t
b2RlOiB2ZXJ0aWNhbC1scjsgfQorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9
CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVy
OiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdo
dGJsdWU7IHdpZHRoOiAxMzVweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDEgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiBsaWdodGdyZWVuOyB3aWR0aDogMTEwcHg7IHBhZGRpbmc6IDEwcHg7fQorICAg
ICNib3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3aWR0aDogMTBweDsgcGFkZGluZzog
NXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDcw
cHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24y
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsg
bGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1
MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJi
b3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0i
cmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNz
PSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rp
dj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9u
OjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1sciBtb2RlIik7CisgICAgdmFyIHJl
Z2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdp
b24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICB2YXIgcmVnaW9u
MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIik7CisKKyAgICBkZWJ1ZygiRW1w
dHkgcmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMCk7Cisg
ICAgdmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UzID0g
cmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVidWcoIkZsb3cgYXJ0aWNsZSIpOworICAg
IHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFydGljbGUiKTsKKyAgICBh
cnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJi
b3gxIiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEp
OworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAxLCAi
d3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNy
ZWF0ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImJveDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndy
YXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJl
Z2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwg
MSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEs
ICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgIFsiYm94MSIsIDIsICJ3cmFwcGVy
IiwgMV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZvbnQgc2l6ZSIpOworICAgIHZhciB3cmFw
cGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndyYXBwZXIiKTsKKyAgICB3cmFwcGVyLnN0
eWxlLmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAx
KTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwg
MCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiI3RleHQi
LCA0XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0ZXh0IiwgNSwgIndyYXBwZXIiLCAxXSk7
CisKKyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3Zl
IGZyb20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAgdmFyIGJveDIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxv
dzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAwXSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MSIsIDEsICIjdGV4
dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAiYm94MSIsIDJdKTsK
KyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAsICJib3gxIiwgMV0pOworCitmdW5jdGlv
biBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmM4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQyIEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9u
OjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1ybCBtb2RlCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5nZTEu
bGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
d3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJh
bmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8g
W2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4dCBu
b2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEubGVu
Z3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEs
MSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDIs
d3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQor
UEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gx
LDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRd
IGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBl
ciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVn
aW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFycmF5
IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5n
ZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0byBb
I3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMTE1NGYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12
ZXJ0LXJsLmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxw
ZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9k
ZTogdmVydGljYWwtcmw7IH0KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQor
ICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjog
MXB4IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRi
bHVlOyB3aWR0aDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gxIHsgYmFja2dyb3Vu
ZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDExMHB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAj
Ym94MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lkdGg6IDEwcHg7IHBhZGRpbmc6IDVw
eDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA3MHB4
OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7
IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdodDogMjUwcHg7IGxl
ZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206
IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzNTBw
eDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0aWNsZSI+PGRpdiBpZD0iYm94
MSI+PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJl
Z2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0i
Ym9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+
CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6
Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVydGljYWwtcmwgbW9kZSIpOworICAgIHZhciByZWdp
b24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9u
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lvbjMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkVtcHR5
IHJlZ2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93
UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOworICAg
IHZhciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMyA9IHJl
Z2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJGbG93IGFydGljbGUiKTsKKyAgICB2
YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRpY2xlIik7CisgICAgYXJ0
aWNsZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9u
MS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDAp
LCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94
MSIsIDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMSwgIndy
YXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVh
dGVzIGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJi
b3gxIikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFw
cGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdp
b25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEp
OworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAi
Ym94MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29t
cGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBbImJveDEiLCAyLCAid3JhcHBlciIs
IDFdKTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNpemUiKTsKKyAgICB2YXIgd3JhcHBl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVyIik7CisgICAgd3JhcHBlci5zdHls
ZS5mb250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAs
ICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgIiN0ZXh0Iiwg
NF0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOwor
CisgICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdpbGwgbW92ZSBm
cm9tIHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBib3gyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cx
IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMF0pOworICAg
IGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDEiLCAxLCAiI3RleHQi
LCA0XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgImJveDEiLCAyXSk7Cisg
ICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94MSIsIDFdKTsKKworCitmdW5jdGlv
biBoaWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZWdpb24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworfQorCitoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1y
Yi1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQw
NjlmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTUgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dS
YW5nZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1vZGVzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgor
UEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gx
LDFdCitQQVNTIEFycmF5IFtib3gzLDEsYm94MywyXSBpcyBlcXVhbCB0byBbYm94MywxLGJveDMs
Ml0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBp
cyBlcXVhbCB0byBbYm94MSwxLGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNT
IEFycmF5IFtib3gxLDIsYm94MywxXSBpcyBlcXVhbCB0byBbYm94MSwyLGJveDMsMV0KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSG9yaXpvbnRhbCBU
QgorWAorVmVydGljYWwgTFJIb3Jpem9udGFsIEJUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmIt
bHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXdyaXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44Njk4MmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci5odG1sCkBA
IC0wLDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAt
d2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwgO30KKyAgICBib2R5IHsgZm9udC1mYW1p
bHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAg
LmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1m
bG93LWludG86IGZsb3c7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9CisgICAgI2JveDExIHsg
YmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDMwcHg7IG1hcmdpbi1yaWdodDog
NzBweDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDIw
MHB4OyBoZWlnaHQ6IDQwMHB4OyAgfQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206
IGZsb3c7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA0MDBweDsgIH0KKyAgICAjcmVnaW9uMyB7IC13
ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7IGhlaWdodDogNDAwcHg7ICB9Cisg
ICAgI2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC10YjsgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JleTsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDQwMHB4O30KKyAgICAjYm94MjIg
eyBoZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfQor
ICAgICNib3gzIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyAgYmFja2dyb3Vu
ZC1jb2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTUwcHg7IGhlaWdodDogNDAwcHg7fQorICAgICNi
b3g0IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7IGJhY2tncm91bmQtY29s
b3I6IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogMjAwcHg7IHBvc2l0aW9uOiBhYnNvbHV0
ZTsgdG9wOiAxMDBweDsgbGVmdDogMjBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cisg
ICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDwhLS1kaXYgaWQ9IndyYXBwZXIi
PjxkaXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5WZXJ0
IFJMPC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydCBMUjwvZGl2PjxkaXYgaWQ9ImJveDQiPkhvcml6
b250YWwgQlQ8L2Rpdj48L2Rpdi0tPgorCisgICAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0i
Ym94MSI+PGRpdiBpZD0iYm94MTEiPjwvZGl2PjxkaXYgaWQ9ImJveDIiPkhvcml6b250YWwgVEI8
ZGl2IGlkPSJib3gyMiI+WDwvZGl2PjwvZGl2PjxkaXYgaWQ9ImJveDMiPlZlcnRpY2FsIExSPGRp
diBpZD0iYm94NCI+SG9yaXpvbnRhbCBCVDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PgorICAgIDxk
aXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lv
bjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjMiIGNsYXNzPSJi
b3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBk
ZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBm
b3IgbWl4ZWQgdmVydGljYWwgbW9kZXMiKTsKKyAgICByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlZ2lvbjIiKTsKKyAgICByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjMiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0p
OworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDMiLCAxLCAi
Ym94MyIsIDJdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29t
cGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0p
OworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMiwgImJveDMiLCAxXSk7CisKK2Z1bmN0
aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhp
ZGRlbiI7Cit9CisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMt
dGItcmwtbHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmIzZTU5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25G
bG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcworUEFTUyByYW5nZTEubGVuZ3RoIGlz
IDIKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAs
Ym94MSwxXQorUEFTUyBBcnJheSBbYm94MywxLGJveDMsMl0gaXMgZXF1YWwgdG8gW2JveDMsMSxi
b3gzLDJdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEs
Ml0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQor
UEFTUyBBcnJheSBbYm94MSwyLGJveDMsMV0gaXMgZXF1YWwgdG8gW2JveDEsMixib3gzLDFdCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1ZlcnRpY2Fs
IFJMCitYCitWZXJ0aWNhbCBMUlkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1sci5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy10Yi1ybC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNh
YmRiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLmh0bWwKQEAgLTAsMCArMSw1
NyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5
OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMzBweDsgfQorICAgIC5i
b3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94MSB7IC13ZWJraXQtZmxv
dy1pbnRvOiBmbG93OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICNib3gxMSB7IGJh
Y2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDogMzBweDsgbWFyZ2luLXRvcDogNzBw
eDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDQwMHB4
OyBoZWlnaHQ6IDIwMHB4OyAgfQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZs
b3c7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDsgIH0KKyAgICAjcmVnaW9uMyB7IC13ZWJr
aXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAwcHg7ICB9CisgICAg
I2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IGJhY2tncm91bmQtY29s
b3I6IGdyZXk7IGhlaWdodDogMTUwcHg7IHdpZHRoOiA0MDBweDt9CisgICAgI2JveDIyIHsgaGVp
Z2h0OiAzMHB4OyB3aWR0aDogMzBweDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH0KKyAgICAj
Ym94MyB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgYmFja2dyb3VuZC1jb2xv
cjogbGlnaHRibHVlOyB3aWR0aDogNDAwcHg7IGhlaWdodDogMTUwcHg7fQorICAgICNib3g0IHsg
LXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7IGJhY2tncm91bmQtY29sb3I6IHll
bGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogNjBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDIwcHg7IGxlZnQ6IDIwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8IS0tZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlk
PSJib3gxIj48ZGl2IGlkPSJib3gxMSI+PC9kaXY+PGRpdiBpZD0iYm94MiI+VmVydCBSTDwvZGl2
PjxkaXYgaWQ9ImJveDMiPlZlcnQgTFI8L2Rpdj48ZGl2IGlkPSJib3g0Ij5Ib3Jpem9udGFsIEJU
PC9kaXY+PC9kaXYtLT4KKworICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjxk
aXYgaWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5WZXJ0aWNhbCBSTDxkaXYgaWQ9ImJv
eDIyIj5YPC9kaXY+PC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydGljYWwgTFI8ZGl2IGlkPSJib3g0
Ij5ZPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9
ImJvcmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9k
aXY+CisgICAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVz
dCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2Rl
cyIpOworICAgIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOwor
ICAgIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHJl
Z2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworICAgIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MyIsIDEsICJib3gzIiwgMl0pOworICAgIHJhbmdl
MiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9u
My53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDAp
LCBbImJveDEiLCAyLCAiYm94MyIsIDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93
cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIp
LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKyAgICBoaWRlUmVn
aW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTI4NWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sCkBA
IC0wLDAgKzEsMTA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3
cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyBo
ZWlnaHQ6IDEzNXB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94MSB7IGJhY2tncm91bmQtY29s
b3I6IGxpZ2h0Z3JlZW47IGhlaWdodDogMTEwcHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gy
IHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyBoZWlnaHQ6IDEwcHg7IHBhZGRpbmc6IDVweDt9
CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsg
aGVpZ2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13
ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6
IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZs
b3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzNTBweDt9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+
PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lv
bjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9y
ZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cisg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0
UmVnaW9uRmxvd1Jhbmdlcy4iKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJh
bmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Uy
Lmxlbmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisK
KyAgICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0lu
dG8gPSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jh
bmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBj
b21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEi
LCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7
CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVB
cnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAg
ICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRS
YW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVi
dWcoIkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7
CisgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4i
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHRO
b2RlKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOwor
ICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdl
dFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2Uz
ID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVh
dGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChy
YW5nZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5j
cmVhc2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7Cisg
ICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0
UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5n
ZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFs
dWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdp
b24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywg
MCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxk
IGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMi
KTsKKyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAg
Ym94Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9u
MS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFu
Z2UxLmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDAp
LCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJl
Z2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2Uy
LCAwKSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5s
ZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJi
b3gxIiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5
ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHls
ZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9u
c0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKaW5kZXggOWZlYjFhMS4uMWY4ZTJjNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKQEAgLTE2
MCwzICsxNjAsMzkgQEAgZnVuY3Rpb24gYXNzZXJ0KGV4cHJlc3Npb24sIGZhaWxNZXNzYWdlKQog
ewogICAgIGV4cHJlc3Npb24gPyBsb2dQYXNzTWVzc2FnZSgiIikgOiBsb2dGYWlsTWVzc2FnZShm
YWlsTWVzc2FnZSk7CiB9CisKKy8vIHVzZWQgYnkgZ2V0UmVnaW9uRmxvd1JhbmdlcyB0ZXN0cwor
ZnVuY3Rpb24gZ2V0TmFtZShub2RlKSB7CisgIGlmICghbm9kZSkgcmV0dXJuICJ1bmRlZmluZWQi
OworICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBUZXh0IG5vZGUKKyAgICByZXR1cm4gIiN0
ZXh0IjsKKyAgLy8gYWxsIHRoZSBvdGhlcnMgc2hvdWxkIGhhdmUgYW4gaWQKKyAgcmV0dXJuIG5v
ZGUuaWQ7Cit9CisKK2Z1bmN0aW9uIGdldFJhbmdlQXQoYXJyUmFuZ2UsIGluZGV4KSB7CisgIGlm
IChpbmRleCA8IGFyclJhbmdlLmxlbmd0aCkKKyAgICByZXR1cm4gW2dldE5hbWUoYXJyUmFuZ2Vb
aW5kZXhdLnN0YXJ0Q29udGFpbmVyKSwgYXJyUmFuZ2VbaW5kZXhdLnN0YXJ0T2Zmc2V0LCBnZXRO
YW1lKGFyclJhbmdlW2luZGV4XS5lbmRDb250YWluZXIpLCBhcnJSYW5nZVtpbmRleF0uZW5kT2Zm
c2V0XTsKKyAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9uIGNvbXBhcmVBcnJheXMoY3VycmVu
dCwgZXhwZWN0ZWQpIHsKKyAgICB0cnkgeworICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJOdWxsIG9iamVjdC4gRXhwZWN0ZWQgWyIgKyBleHBl
Y3RlZC50b1N0cmluZygpICsgIl0gd2FzIG51bGwiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY3VycmVudC5sZW5ndGggIT09IGV4cGVjdGVkLmxlbmd0aCkg
eworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQXJyYXkgbGVuZ3RoIGRpZmZlcnMuIEV4cGVjdGVk
IFsiICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdIHdhcyBbIiArIGN1cnJlbnQudG9TdHJpbmco
KSArICJdIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGN1cnJl
bnRbaV0gIT09IGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXhw
ZWN0ZWQgWyIgICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdLiBXYXMgWyIgKyBjdXJyZW50LnRv
U3RyaW5nKCkgKyAiXSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICB9IGNhdGNoIChleCkgeworICAgICAgICB0ZXN0RmFpbGVkKGN1cnJlbnQgKyAiIHRocmV3
IGV4Y2VwdGlvbiAiICsgZXgpOworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJBcnJheSBbIiAgKyBl
eHBlY3RlZC50b1N0cmluZygpICsgIl0gaXMgZXF1YWwgdG8gWyIgKyBjdXJyZW50LnRvU3RyaW5n
KCkgKyAiXSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ5MDE5YzMuLjI3YmMyODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MCBAQAorMjAxMi0wOS0wNiAgUmF1bCBIdWRlYSAgPHJodWRlYUBhZG9iZS5j
b20+CisKKyAgICAgICAgW0NTU1JlZ2lvbnNdW0NTU09NXSBJbXBsZW1lbnQgRWxlbWVudC5nZXRS
ZWdpb25GbG93UmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03ODQ5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCB0aGUgZ2V0UmVnaW9uRmxvd1JhbmdlcyBmdW5jdGlvbiBmcm9tIHRo
ZSBDU1MgUmVnaW9ucyBzcGVjLiBJdCBpcyBpbXBsZW1lbnRlZCBieSBpdGVyYXRpbmcgb3ZlciAK
KyAgICAgICAgdGhlIGNvbnRlbnQgbm9kZXMgYW5kIGZpZ3VyaW5nIG91dCB3aGljaCBub2RlcyBo
YXZlIGJvdW5kaW5nQm94IGludGVyc2VjdGluZyB0aGUgcmVnaW9uIGJveCBhbmQgZmlndXJpbmcg
b3V0CisgICAgICAgIHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucy4KKworICAgICAgICBUZXN0
czogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRl
bnQtbm9kZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtZGlzcGxheS1ub25lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlu
bGluZS1vbmx5Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLXRleHQtdmVydC1sci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVn
aW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVz
LXJsLXJiLWxyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtdGItcmwtbHIuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMuaHRtbAorCisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0R2V0UmVnaW9uRmxv
d1Jhbmdlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDogYWRkZWQgdGhlIHdlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMgbWV0aG9kCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hp
bGRBdm9pZGluZ0Zsb2F0cyk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRS
ZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZSk6IFVzZSB0aGUgbG9n
aWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTogQWRkZWQgYSBzbG93ZXIgcGF0aCB3
aGljaCB3b3JrcyB3aXRob3V0IExheW91dFN0YXRlCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxv
d1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyk6
IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlTGluZVdpZHRoSW5SZWdpb24pOiBV
c2UgdGhlIGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFtZWQpCisgICAgICAgIChXZWJDb3JlOjpj
b21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UpOiBVc2UgdGhlIGxvZ2ljYWxUb3BPZkZsb3dUaHJl
YWRDb250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2Ug
KHJlbmFtZWQpCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0NvbnRhaW5lZEluTm9kZXMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpib3hJbnRlcnNlY3RzUmVnaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFuZ2VzKTogcmV0dXJucyBhIHZlY3Rv
ciBvZiBSYW5nZXMgdGhhdCBjb250YWlucyBOb2RlIHRoYXQgYXJlIHBhcnQgb2YgYSByZWdpb24K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgIChS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wT2ZGbG93VGhy
ZWFkQ29udGVudFJlY3QpOiBSZXR1cm5zIHRoZSBsb2dpY2FsIHRvcCBvZiBhIHJlY3RhbmdsZSBp
bnNpZGUgdGhlIGZsb3cgdGhyZWFkIGNvbnRlbnQKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVu
dFJlY3QpOiBSZXR1cm5zIHRoZSBsb2dpY2FsIGJvdHRvbSBvZiBhIHJlY3RhbmdsZSBpbnNpZGUg
dGhlIGZsb3cgdGhyZWFkIGNvbnRlbnQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6
Z2V0UmFuZ2VzKTogcHJveHkgdGhlIGdldFJhbmdlcyBjYWxsIHRvIGl0cyBuYW1lZCBmbG93IHRo
cmVhZAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKFJlbmRl
clJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmxvZ2ljYWxUb3BGb3JG
bG93VGhyZWFkQ29udGVudCk6IFJlbmFtZWQgZnJvbSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RQYWdlCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmxvZ2ljYWxCb3R0b21Gb3JG
bG93VGhyZWFkQ29udGVudCk6IFJldHVybnMgdGhlIGxvZ2ljYWwgYm90dG9tIG9mIHRoZSBGbG93
VGhyZWFkQ29udGVudCByZWN0CisKIDIwMTItMDktMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgcHJvcGVydHkgYnV0dGVyZmxpZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAwYzgxNWQwLi4wZDQ0OGUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0yMDYyLDYgKzIwNjIsMjQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVt
ZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0KCkgY29uc3QKICAgICByZXR1cm4gdW5kZWZpbmVkU3Rh
dGU7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+
ID4gRWxlbWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0Cit7CisgICAgZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBW
ZWN0b3I8UmVmUHRyPFJhbmdlPiA+IHJhbmdlT2JqZWN0czsKKyAgICBpZiAoZG9jdW1lbnQoKS0+
Y3NzUmVnaW9uc0VuYWJsZWQoKSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVy
UmVnaW9uKCkpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSB0b1JlbmRlclJlZ2lv
bihyZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAg
ICAgcmVnaW9uLT5nZXRSYW5nZXMocmFuZ2VPYmplY3RzKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmFuZ2VPYmplY3RzOworfQorCisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgRWxlbWVu
dDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGNlNTA1NDYuLjhhMjhjZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtNDI3LDYgKzQyNyw5IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB3ZWJraXRS
ZWdpb25PdmVyc2V0KCkgY29uc3Q7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIFZlY3Rv
cjxSZWZQdHI8UmFuZ2U+ID4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0OworI2Vu
ZGlmCiAKICAgICBib29sIGhhc0lEKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IGZiNjBjNzMuLjMzYzExZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKQEAgLTE0NCw2ICsxNDQsNyBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAg
Ly8gQ1NTIFJlZ2lvbnMgQVBJCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
d2Via2l0UmVnaW9uT3ZlcnNldDsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBz
ZXF1ZW5jZTxSYW5nZT4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwogCiAjaWYgIWRlZmlu
ZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAg
ICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBjMmE0MDYxLi4xOThmMzdlIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTIyMzIsNyArMjIzMiw3IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5n
RmxvYXRzKGNvbnN0IFJlCiAKICAgICBMYXlvdXRVbml0IGJsb2NrT2Zmc2V0ID0gbG9naWNhbFRv
cEZvckNoaWxkKGNoaWxkKTsKICAgICBpZiAocmVnaW9uKQotICAgICAgICBibG9ja09mZnNldCA9
IG1heChibG9ja09mZnNldCwgYmxvY2tPZmZzZXQgKyAocmVnaW9uLT5vZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7Cisg
ICAgICAgIGJsb2NrT2Zmc2V0ID0gbWF4KGJsb2NrT2Zmc2V0LCBibG9ja09mZnNldCArIChyZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSkpOwogCiAgICAgTGF5b3V0VW5pdCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0
Rm9yTGluZShibG9ja09mZnNldCwgZmFsc2UsIHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSwgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CiAKQEAgLTY4OTYsNyAr
Njg5Niw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNh
bE9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSBwYWdlQm91CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAocmVnaW9uLT5pc0xhc3RSZWdpb24oKSkKICAgICAgICAgcmV0dXJuIHJlZ2lvbi0+
aXNSZW5kZXJSZWdpb25TZXQoKSB8fCByZWdpb24tPnN0eWxlKCktPnJlZ2lvbk92ZXJmbG93KCkg
PT0gQnJlYWtSZWdpb25PdmVyZmxvdwotICAgICAgICAgICAgfHwgKHBhZ2VCb3VuZGFyeVJ1bGUg
PT0gSW5jbHVkZVBhZ2VCb3VuZGFyeSAmJiBwYWdlT2Zmc2V0ID09IHJlZ2lvbi0+b2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpKTsKKyAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlS
dWxlID09IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPmxvZ2lj
YWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NzE4NywyMCArNzE4Nyw1MSBAQCBib29sIFJlbmRlckJsb2NrOjpsaW5lV2lkdGhGb3JQYWdpbmF0
ZWRMaW5lQ2hhbmdlZChSb290SW5saW5lQm94KiByb290Qm94LCBMYXlvdQogCiBMYXlvdXRVbml0
IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3QKIHsK
LSAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byB3b3JrIHdpdGhvdXQgbGF5b3V0
IHN0YXRlLiBJdCdzIGZpbmUgdG8gdXNlIHRoZSBsYXlvdXQgc3RhdGUgYXMgYSBjYWNoZQotICAg
IC8vIGZvciBzcGVlZCwgYnV0IHdlIG5lZWQgYSBzbG93IGltcGxlbWVudGF0aW9uIHRoYXQgd2ls
bCB3YWxrIHVwIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluIGFuZCBmaWd1cmUKLSAgICAvLyBv
dXQgb3VyIG9mZnNldCBmcm9tIHRoZSB0b3Agb2YgdGhlIHBhZ2UuCiAgICAgTGF5b3V0U3RhdGUq
IGxheW91dFN0YXRlID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpOwotICAgIGlmICghbGF5b3V0U3Rh
dGUgfHwgIWxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICBpZiAobGF5b3V0U3RhdGUgJiYgIWxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQorICAgICAg
ICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICBpZiAobGF5b3V0U3RhdGUpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFNhbml0eSBjaGVjayB0aGF0IHRoZSByZW5kZXJlciBpbiB0aGUgbGF5b3V0
IHN0YXRlIGlzIG91cnMsIHNpbmNlIG90aGVyd2lzZSB0aGUgY29tcHV0YXRpb24gd2lsbCBiZSBv
ZmYuCisgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29t
cHV0ZUxvZ2ljYWxIZWlnaHQgZm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBj
b21wdXRlZCB1c2luZworICAgICAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFjaCBy
ZWdpb24uIFVudGlsIHdlIHBhdGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQuCisg
ICAgICAgIC8vIEFTU0VSVChsYXlvdXRTdGF0ZS0+bV9yZW5kZXJlciA9PSB0aGlzKTsKIAotICAg
IC8vIEZJWE1FOiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIgaW4gdGhlIGxheW91dCBz
dGF0ZSBpcyBvdXJzLCBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0aW9uIHdpbGwgYmUgb2Zm
LgotICAgIC8vIFJpZ2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQgZm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRl
ZCB1c2luZwotICAgIC8vIHdpZHRocyB3aGljaCBjYW4gdmFyeSBpbiBlYWNoIHJlZ2lvbi4gVW50
aWwgd2UgcGF0Y2ggdGhhdCwgd2UgY2FuJ3QgaGF2ZSB0aGlzIGFzc2VydC4KLSAgICAvLyBBU1NF
UlQobGF5b3V0U3RhdGUtPm1fcmVuZGVyZXIgPT0gdGhpcyk7CisgICAgICAgIExheW91dFNpemUg
b2Zmc2V0RGVsdGEgPSBsYXlvdXRTdGF0ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+
bV9wYWdlT2Zmc2V0OworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IG9mZnNldERlbHRhLmhlaWdodCgpIDogb2Zmc2V0RGVsdGEud2lkdGgoKTsKKyAgICB9CisgICAg
Ly8gRklYTUU6IFJpZ2h0IG5vdywgdGhpcyBhc3NlcnQgaXMgaGl0IG91dHNpZGUgbGF5b3V0LCBm
cm9tIGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0IGluIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVw
YWludCAoY2FsbGVkIGZyb20gRnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCkuCisgICAgLy8gQVNT
RVJUKGluUmVuZGVyRmxvd1RocmVhZCgpKTsKIAotICAgIExheW91dFNpemUgb2Zmc2V0RGVsdGEg
PSBsYXlvdXRTdGF0ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdlT2Zmc2V0
OwotICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RGVsdGEuaGVp
Z2h0KCkgOiBvZmZzZXREZWx0YS53aWR0aCgpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgc2xv
d2VyIHBhdGggdGhhdCBkb2Vzbid0IHVzZSBsYXlvdXQgc3RhdGUgYW5kIHJlbGllcyBvbiBnZXR0
aW5nIHlvdXIgbG9naWNhbCB0b3AgaW5zaWRlIHRoZSBlbmNsb3NpbmcgZmxvdyB0aHJlYWQuIEl0
IGRvZXNuJ3QKKyAgICAvLyB3b3JrIHdpdGggY29sdW1ucyBvciBwYWdlcyBjdXJyZW50bHksIGJ1
dCBpdCBzaG91bGQgb25jZSB0aGV5IGhhdmUgYmVlbiBzd2l0Y2hlZCBvdmVyIHRvIHVzaW5nIGZs
b3cgdGhyZWFkcy4KKyAgICBpZiAoIWluUmVuZGVyRmxvd1RocmVhZCgpKQorICAgICAgICByZXR1
cm4gWkVST19MQVlPVVRfVU5JVDsKKworICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjdXJyZW50Qmxv
Y2sgPSB0aGlzOworICAgIExheW91dFJlY3QgYmxvY2tSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdo
dCgpKTsKKworICAgIHdoaWxlIChjdXJyZW50QmxvY2sgJiYgIWN1cnJlbnRCbG9jay0+aXNSZW5k
ZXJGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lckJsb2NrID0g
Y3VycmVudEJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5l
ckJsb2NrKTsKKyAgICAgICAgaWYgKCFjb250YWluZXJCbG9jaykKKyAgICAgICAgICAgIHJldHVy
biBaRVJPX0xBWU9VVF9VTklUOworICAgICAgICBMYXlvdXRQb2ludCBjdXJyZW50QmxvY2tMb2Nh
dGlvbiA9IGN1cnJlbnRCbG9jay0+bG9jYXRpb24oKTsKKworICAgICAgICBpZiAoY29udGFpbmVy
QmxvY2stPnN0eWxlKCktPndyaXRpbmdNb2RlKCkgIT0gY3VycmVudEJsb2NrLT5zdHlsZSgpLT53
cml0aW5nTW9kZSgpKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgYmxvY2sg
cmVjdCBpbiBjb250YWluZXIgY29vcmRpbmF0ZXMKKyAgICAgICAgICAgIC8vIGFuZCB3ZSBoYXZl
IHRvIHRha2UgaW50byBhY2NvdW50IGJvdGggdGhlIGNvbnRhaW5lciBhbmQgY3VycmVudCBibG9j
ayBmbGlwcGluZyBtb2RlcworICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgp
LT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNv
bnRhaW5lckJsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAgICAgICAg
ICAgICBibG9ja1JlY3Quc2V0WShjdXJyZW50QmxvY2stPmhlaWdodCgpIC0gYmxvY2tSZWN0Lm1h
eFkoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBibG9ja1Jl
Y3Quc2V0WChjdXJyZW50QmxvY2stPndpZHRoKCkgLSBibG9ja1JlY3QubWF4WCgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGN1cnJlbnRCbG9jay0+ZmxpcEZvcldyaXRpbmdNb2RlKGJs
b2NrUmVjdCk7CisgICAgICAgIH0KKyAgICAgICAgYmxvY2tSZWN0Lm1vdmVCeShjdXJyZW50Qmxv
Y2tMb2NhdGlvbik7CisgICAgICAgIGN1cnJlbnRCbG9jayA9IGNvbnRhaW5lckJsb2NrOworICAg
IH07CisgICAgcmV0dXJuIGN1cnJlbnRCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGJsb2NrUmVjdC55KCkgOiBibG9ja1JlY3QueCgpOwogfQogCiBSZW5kZXJSZWdpb24qIFJlbmRl
ckJsb2NrOjpyZWdpb25BdEJsb2NrT2Zmc2V0KExheW91dFVuaXQgYmxvY2tPZmZzZXQpIGNvbnN0
CkBAIC03MjQ4LDkgKzcyNzksOSBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2NrOjpjbGFtcFRv
U3RhcnRBbmRFbmRSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAogICAgIFJlbmRl
clJlZ2lvbiogZW5kUmVnaW9uOwogICAgIGVuY2xvc2luZ1JlbmRlckZsb3dUaHJlYWQoKS0+Z2V0
UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CiAgICAgCi0g
ICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSgpIDwgc3RhcnRSZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSkK
KyAgICBpZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENv
bnRlbnQoKSA8IHN0YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXJ0UmVnaW9uOwotICAgIGlmIChlbmRSZWdpb24gJiYgcmVnaW9u
LT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgPiBlbmRSZWdpb24tPm9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSkKKyAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+
bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BG
b3JGbG93VGhyZWFkQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZW5kUmVnaW9uOwogICAgIAog
ICAgIHJldHVybiByZWdpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmlu
ZGV4IGE2YWZkYzAuLmQ2MmI4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0xMTU3LDcgKzExNTcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9n
aWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogICAgIExh
eW91dFVuaXQgbG9naWNhbFRvcFBvc2l0aW9uID0gbG9naWNhbFRvcCgpOwogICAgIExheW91dFVu
aXQgYWRqdXN0ZWRQYWdlT2Zmc2V0Rm9yQ29udGFpbmluZ0Jsb2NrID0gb2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSAtIGxvZ2ljYWxUb3AoKTsKICAgICBpZiAocmVnaW9uKSB7Ci0gICAg
ICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJl
Z2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgICAgIExheW91dFVuaXQg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+bG9naWNhbFRv
cEZvckZsb3dUaHJlYWRDb250ZW50KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
IDogWkVST19MQVlPVVRfVU5JVDsKICAgICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gbWF4KGxv
Z2ljYWxUb3BQb3NpdGlvbiwgbG9naWNhbFRvcFBvc2l0aW9uICsgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZlJlZ2lvbik7CiAgICAgICAgIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRv
U3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbik7CiAgICAgfQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aElu
UmVnaW9uKFJlbmRlclJlZ2lvbiogcmUKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BQb3NpdGlv
biA9IGxvZ2ljYWxUb3AoKTsKICAgICBMYXlvdXRVbml0IGFkanVzdGVkUGFnZU9mZnNldEZvckNv
bnRhaW5pbmdCbG9jayA9IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgLSBsb2dpY2Fs
VG9wKCk7CiAgICAgaWYgKHJlZ2lvbikgewotICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZSZWdpb24gPSByZWdpb24gPyByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UoKSAtIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xB
WU9VVF9VTklUOworICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdp
b24gPSByZWdpb24gPyByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0g
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAg
ICAgIGxvZ2ljYWxUb3BQb3NpdGlvbiA9IG1heChsb2dpY2FsVG9wUG9zaXRpb24sIGxvZ2ljYWxU
b3BQb3NpdGlvbiArIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24pOwogICAgICAgICBjb250
YWluaW5nQmxvY2tSZWdpb24gPSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24p
OwogICAgIH0KQEAgLTI1MDMsNyArMjUwMyw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVT
dGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAg
ICAgICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiBjdXJyLT5pc1JlbmRlckJsb2NrKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyQmxvY2sqIGNiID0gdG9SZW5kZXJCbG9jayhj
dXJyKTsKICAgICAgICAgICAgICAgICAgICAgcmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVu
ZFJlZ2lvbnMocmVnaW9uKTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5m
byogYm94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5vZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpOworICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJCb3hSZWdpb25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9u
LCByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGJveEluZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNQb3Np
dGlvbiArPSBib3hJbmZvLT5sb2dpY2FsTGVmdCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1
MjIsNyArMjUyMiw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShM
ZW5ndGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAgICAgICAgICAg
aWYgKHJlZ2lvbiAmJiBjdXJyLT5pc1JlbmRlckJsb2NrKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjYiA9IHRvUmVuZGVyQmxvY2soY3Vycik7CiAgICAgICAg
ICAgICAgICAgICAgICByZWdpb24gPSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdp
b24pOwotICAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9
IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkpOworICAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9u
SW5mbyogYm94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5s
b2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYm94SW5mbykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnIgIT0gY29udGFp
bmVyQmxvY2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljUG9zaXRpb24gLT0g
Y2ItPmxvZ2ljYWxXaWR0aCgpIC0gKGJveEluZm8tPmxvZ2ljYWxMZWZ0KCkgKyBib3hJbmZvLT5s
b2dpY2FsV2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IDc0NjFmNDIuLjI2NGFlYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yNyw5
ICsyNywxNCBAQAogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogCiAjaW5jbHVk
ZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb24u
aCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIK
KyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1
ZGUgIlRleHQuaCIKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzk1LDQgKzQwMCwxNzMgQEAgYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OmlzTWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRmxvdy0+
Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsOwogfQogCitzdGF0
aWMgYm9vbCBpc0NvbnRhaW5lZEluTm9kZXMoVmVjdG9yPE5vZGUqPiBvdGhlcnMsIE5vZGUqIG5v
ZGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlcnMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgTm9kZSogb3RoZXIgPSBvdGhlcnMuYXQoaSk7CisgICAgICAgIGlmIChvdGhlci0+
Y29udGFpbnMobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBib3hJbnRlcnNlY3RzUmVnaW9uKExheW91dFVu
aXQgbG9naWNhbFRvcEZvckJveCwgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yQm94LCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3BGb3JSZWdpb24sIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvclJl
Z2lvbikKK3sKKyAgICBib29sIHJlZ2lvbklzRW1wdHkgPSBsb2dpY2FsQm90dG9tRm9yUmVnaW9u
ICE9IE1BWF9MQVlPVVRfVU5JVCAmJiBsb2dpY2FsVG9wRm9yUmVnaW9uICE9IE1JTl9MQVlPVVRf
VU5JVAorICAgICAgICAgICAgICAgICAgICAgICAgICYmIChsb2dpY2FsQm90dG9tRm9yUmVnaW9u
IC0gbG9naWNhbFRvcEZvclJlZ2lvbikgPD0gMDsKKyAgICByZXR1cm4gIChsb2dpY2FsQm90dG9t
Rm9yQm94IC0gbG9naWNhbFRvcEZvckJveCkgPiAwCisgICAgICAgICAgICAmJiAhcmVnaW9uSXNF
bXB0eQorICAgICAgICAgICAgJiYgbG9naWNhbFRvcEZvckJveCA8IGxvZ2ljYWxCb3R0b21Gb3JS
ZWdpb24gJiYgbG9naWNhbFRvcEZvclJlZ2lvbiA8IGxvZ2ljYWxCb3R0b21Gb3JCb3g7Cit9CisK
K3ZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5n
ZT4gPiYgcmFuZ2VPYmplY3RzLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKK3sK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JSZWdpb247CisgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsQm90dG9tRm9yUmVnaW9uOworCisgICAgLy8gZXh0ZW5kIHRoZSBmaXJzdCByZWdpb24gdG9w
IHRvIGNvbnRhaW4gZXZlcnl0aGluZyB1cCB0byBpdHMgbG9naWNhbCBoZWlnaHQKKyAgICBpZiAo
cmVnaW9uLT5pc0ZpcnN0UmVnaW9uKCkpCisgICAgICAgIGxvZ2ljYWxUb3BGb3JSZWdpb24gPSBN
SU5fTEFZT1VUX1VOSVQ7CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsVG9wRm9yUmVnaW9uID0g
IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCk7CisKKyAgICAvLyBleHRl
bmQgdGhlIGxhc3QgcmVnaW9uIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBhYm92ZSBpdHMgeSgpCisg
ICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCisgICAgICAgIGxvZ2ljYWxCb3R0b21Gb3JS
ZWdpb24gPSBNQVhfTEFZT1VUX1VOSVQ7CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsQm90dG9t
Rm9yUmVnaW9uID0gcmVnaW9uLT5sb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKTsK
KworICAgIFZlY3RvcjxOb2RlKj4gbm9kZXM7CisgICAgLy8gZWxpbWluYXRlIHRoZSBjb250ZW50
Tm9kZXMgdGhhdCBhcmUgZGVzY2VuZGFudHMgb2Ygb3RoZXIgY29udGVudE5vZGVzCisgICAgZm9y
IChOYW1lZEZsb3dDb250ZW50Tm9kZXM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29udGVudE5vZGVz
KCkuYmVnaW4oKTsgaXQgIT0gY29udGVudE5vZGVzKCkuZW5kKCk7ICsraXQpIHsKKyAgICAgICAg
Tm9kZSogbm9kZSA9ICppdDsKKyAgICAgICAgaWYgKCFpc0NvbnRhaW5lZEluTm9kZXMobm9kZXMs
IG5vZGUpKQorICAgICAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOworICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9kZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgTm9kZSog
Y29udGVudE5vZGUgPSBub2Rlcy5hdChpKTsKKyAgICAgICAgaWYgKCFjb250ZW50Tm9kZS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUg
aWdub3JlZEV4Y2VwdGlvbjsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpj
cmVhdGUoY29udGVudE5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICBib29sIGZvdW5kU3RhcnRQ
b3NpdGlvbiA9IGZhbHNlOworICAgICAgICBib29sIHN0YXJ0c0Fib3ZlUmVnaW9uID0gdHJ1ZTsK
KyAgICAgICAgYm9vbCBlbmRzQmVsb3dSZWdpb24gPSB0cnVlOworICAgICAgICBib29sIHNraXBP
dmVyT3V0c2lkZU5vZGVzID0gZmFsc2U7CisgICAgICAgIE5vZGUqIGxhc3RFbmROb2RlID0gMDsK
KworICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjb250ZW50Tm9kZTsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnRyYXZlcnNlTmV4dE5vZGUoY29udGVudE5vZGUpKSB7CisgICAgICAgICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmICghcmVu
ZGVyZXIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIExheW91dFJl
Y3QgYm91bmRpbmdCb3g7CisgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVySW5saW5l
KCkpCisgICAgICAgICAgICAgICAgYm91bmRpbmdCb3ggPSB0b1JlbmRlcklubGluZShyZW5kZXJl
ciktPmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5p
c1RleHQoKSkKKyAgICAgICAgICAgICAgICBib3VuZGluZ0JveCA9IHRvUmVuZGVyVGV4dChyZW5k
ZXJlciktPmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGJvdW5kaW5nQm94ID0gIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+ZnJhbWVSZWN0KCk7
CisgICAgICAgICAgICAgICAgaWYgKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+aXNSZWxQb3NpdGlv
bmVkKCkpCisgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmUodG9SZW5kZXJCb3go
cmVuZGVyZXIpLT5yZWxhdGl2ZVBvc2l0aW9uTG9naWNhbE9mZnNldCgpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRUb3AgPSByZW5kZXJlci0+Y29udGFp
bmluZ0Jsb2NrKCktPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKKyAgICAgICAg
ICAgIGNvbnN0IExheW91dFBvaW50IGxvZ2ljYWxPZmZzZXRGcm9tVG9wKGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBaRVJPX0xBWU9VVF9VTklUIDogIG9mZnNldFRvcCwKKyAgICAgICAgICAg
ICAgICBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0VG9wIDogWkVST19MQVlPVVRf
VU5JVCk7CisKKyAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmVCeShsb2dpY2FsT2Zmc2V0RnJv
bVRvcCk7CisKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJlbmRlcmVyID0g
cmVnaW9uLT5sb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoYm91bmRpbmdCb3gpOwor
ICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIgPSByZWdpb24t
PmxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7CisKKyAg
ICAgICAgICAgIC8vIGlmIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBk
b2Vzbid0IGludGVyc2VjdCB0aGUgcmVnaW9uIGJveAorICAgICAgICAgICAgLy8gY2xvc2UgdGhl
IGN1cnJlbnQgcmFuZ2Ugb25seSBpZiB0aGUgc3RhcnQgZWxlbWVudCBiZWdhbiBpbnNpZGUgdGhl
IHJlZ2lvbiwKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSBqdXN0IG1vdmUgdGhlIHN0YXJ0IHBv
c2l0aW9uIGFmdGVyIHRoaXMgbm9kZSBhbmQga2VlcCBza2lwcGluZyB0aGVtIHVudGlsIHdlIGZv
dW5kIGEgcHJvcGVyIHN0YXJ0IHBvc2l0aW9uLgorICAgICAgICAgICAgaWYgKCFib3hJbnRlcnNl
Y3RzUmVnaW9uKGxvZ2ljYWxUb3BGb3JSZW5kZXJlciwgbG9naWNhbEJvdHRvbUZvclJlbmRlcmVy
LCBsb2dpY2FsVG9wRm9yUmVnaW9uLCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uKSkgeworICAgICAg
ICAgICAgICAgIGlmIChmb3VuZFN0YXJ0UG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFzdGFydHNBYm92ZVJlZ2lvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJh
bmdlLT5pbnRlcnNlY3RzTm9kZShub2RlLCBpZ25vcmVkRXhjZXB0aW9uKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByYW5nZS0+c2V0RW5kQmVmb3JlKG5vZGUsIGlnbm9yZWRFeGNlcHRp
b24pOworICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZS0+
Y2xvbmVSYW5nZShpZ25vcmVkRXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoY29udGVudE5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNraXBPdmVyT3V0c2lkZU5vZGVz
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBPdmVy
T3V0c2lkZU5vZGVzKQorICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnRBZnRlcihu
b2RlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBmb3VuZFN0YXJ0UG9zaXRp
b24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gc3RhcnQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChsb2dpY2FsVG9w
Rm9yUmVuZGVyZXIgPCBsb2dpY2FsVG9wRm9yUmVnaW9uICYmIHN0YXJ0c0Fib3ZlUmVnaW9uKSB7
CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1RleHQoKSkgeyAvLyBUZXh0IGNyb3Nz
ZXMgcmVnaW9uIHRvcAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgVGV4dCBlbGVtZW50cywg
anVzdCBmaW5kIHRoZSBsYXN0IHRleHRib3ggdGhhdCBpcyBjb250YWluZWQgaW5zaWRlIHRoZSBy
ZWdpb24gYW5kIHVzZSBpdHMgc3RhcnQoKSBvZmZzZXQgYXMgc3RhcnQgcG9zaXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJl
bmRlcmVyKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0
ZXh0UmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3go
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFRvcCArIGJveC0+bG9naWNh
bEJvdHRvbSgpIDwgbG9naWNhbFRvcEZvclJlZ2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChQ
b3NpdGlvbih0b1RleHQobm9kZSksIGJveC0+c3RhcnQoKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsg
Ly8gbm9kZSBjcm9zc2VzIHJlZ2lvbiB0b3AKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGFs
bCBlbGVtZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0IHRoZSBzdGFydCBwb3NpdGlvbiB0byBi
ZSBiZWZvcmUgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVS
ZWdpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQoUG9zaXRp
b24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbikpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgc3RhcnRzIGluc2lkZSByZWdp
b24KKyAgICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBzdGFydCBpbnNpZGUgdGhl
IHJlZ2lvbiwgc2V0IHRoZSBzdGFydCBwb3NpdGlvbiB0byBiZSBiZWZvcmUgdGhlbS4gSWYgd2Ug
Zm91bmQgb25lLCB3ZSB3aWxsIGp1c3Qgc2tpcCB0aGUgb3RoZXJzIHVudGlsCisgICAgICAgICAg
ICAgICAgLy8gdGhlIHJhbmdlIGlzIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBpZiAoc3RhcnRz
QWJvdmVSZWdpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0QmVmb3JlKG5vZGUsIGln
bm9yZWRFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHNraXBPdmVyT3V0c2lkZU5vZGVzICA9IGZhbHNlOworICAgICAgICAgICAgZm91bmRT
dGFydFBvc2l0aW9uID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gZW5kIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAobG9naWNhbEJvdHRvbUZvclJlZ2lvbiA8IGxvZ2ljYWxCb3R0b21Gb3JSZW5k
ZXJlciAmJiAoZW5kc0JlbG93UmVnaW9uIHx8ICghZW5kc0JlbG93UmVnaW9uICYmICFub2RlLT5p
c0Rlc2NlbmRhbnRPZihsYXN0RW5kTm9kZSkpKSkgeworICAgICAgICAgICAgICAgIC8vIGZvciBU
ZXh0IGVsZW1lbnRzLCBqdXN0IGZpbmQganVzdCBmaW5kIHRoZSBsYXN0IHRleHRib3ggdGhhdCBp
cyBjb250YWluZWQgaW5zaWRlIHRoZSByZWdpb24gYW5kIHVzZSBpdHMgc3RhcnQoKStsZW4oKSBv
ZmZzZXQgYXMgZW5kIHBvc2l0aW9uCisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1Rl
eHQoKSkgeyAvLyBUZXh0IGNyb3NzZXMgcmVnaW9uIGJvdHRvbQorICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyZXIpOworICAg
ICAgICAgICAgICAgICAgICBJbmxpbmVUZXh0Qm94KiBsYXN0Qm94ID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVuZGVyZXItPmZpcnN0VGV4
dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKChvZmZzZXRUb3AgKyBib3gtPmxvZ2ljYWxUb3AoKSkgPCBsb2dpY2FsQm90
dG9tRm9yUmVnaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEJveCA9IGJv
eDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXN0Qm94KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Qm94KQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJhbmdlLT5zZXRFbmQoUG9zaXRpb24odG9UZXh0KG5vZGUpLCBsYXN0Qm94LT5zdGFy
dCgpICsgbGFzdEJveC0+bGVuKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVuZHNCZWxvd1JlZ2lv
biA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9kZSBjcm9zc2VzIHJlZ2lvbiBib3R0b20KKyAgICAg
ICAgICAgICAgICAgICAgLy8gZm9yIGFsbCBlbGVtZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0
IHRoZSBzdGFydCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVpciBjaGlsZHJlbgorICAgICAgICAg
ICAgICAgICAgICByYW5nZS0+c2V0RW5kKFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlv
bklzQWZ0ZXJDaGlsZHJlbikpOworICAgICAgICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9kZSBlbmRzIGluc2lkZSByZWdp
b24KKyAgICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBlbmRzIGluc2lkZSB0aGUg
cmVnaW9uLCBzZXQgdGhlIGVuZCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVtCisgICAgICAgICAg
ICAgICAgLy8gYWxsb3cgdGhpcyBlbmQgcG9zaXRpb24gdG8gYmUgY2hhbmdlZCBvbmx5IGJ5IG90
aGVyIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBkZXNjZW5kYW50cyBvZiB0aGUgY3VycmVudCBlbmQg
bm9kZQorICAgICAgICAgICAgICAgIGlmIChlbmRzQmVsb3dSZWdpb24gfHwgKCFlbmRzQmVsb3dS
ZWdpb24gJiYgIW5vZGUtPmlzRGVzY2VuZGFudE9mKGxhc3RFbmROb2RlKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmFuZ2UtPnNldEVuZEFmdGVyKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24pOwor
ICAgICAgICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgbGFzdEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZm91bmRTdGFydFBvc2l0aW9uIHx8IHNraXBP
dmVyT3V0c2lkZU5vZGVzKQorICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZSk7
CisgICAgfQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmgKaW5kZXggYThiOGI1MS4uMzE5OTMwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtNzAsNiArNzAsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgTmFtZWRGbG93Q29udGVudE5vZGVzJiBjb250ZW50Tm9kZXMo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnROb2RlczsgfQogICAgIGJvb2wgaGFzQ29udGVudE5v
ZGUoTm9kZSogY29udGVudE5vZGUpIGNvbnN0IHsgQVNTRVJUKGNvbnRlbnROb2RlKTsgcmV0dXJu
IG1fY29udGVudE5vZGVzLmNvbnRhaW5zKGNvbnRlbnROb2RlKTsgfQogICAgIGJvb2wgaXNNYXJr
ZWRGb3JEZXN0cnVjdGlvbigpIGNvbnN0OworICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQ
dHI8UmFuZ2U+ID4mLCBjb25zdCBSZW5kZXJSZWdpb24qKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIHZvaWQgc2V0TWFya0ZvckRlc3RydWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IGQ4OTVjZDAuLjJiN2U0MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYWlu
dEluZm8uaCIKKyNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveFJlZ2lvbklu
Zm8uaCIKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCkBAIC0zMjgsMTMgKzMyOSwxOCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6ZGVsZXRl
QWxsUmVuZGVyQm94UmVnaW9uSW5mbygpCiAgICAgbV9yZW5kZXJCb3hSZWdpb25JbmZvLmNsZWFy
KCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wT2ZG
bG93VGhyZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1faXNWYWxpZCB8fCAhbV9mbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICBpZiAobV9mbG93VGhyZWFkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICBy
ZXR1cm4gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpOwotICAgIHJldHVybiBmbG93VGhyZWFk
UG9ydGlvblJlY3QoKS54KCk7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgIWZsb3dUaHJlYWQoKSkK
KyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgcmV0dXJuIGZsb3dUaHJlYWQo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QueSgpIDogcmVjdC54KCk7Cit9CisK
K0xheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVu
dFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxp
ZCB8fCAhZmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKKyAg
ICByZXR1cm4gZmxvd1RocmVhZCgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVjdC5t
YXhZKCkgOiByZWN0Lm1heFgoKTsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246OnNldFJlZ2lvbk9i
amVjdHNSZWdpb25TdHlsZSgpCkBAIC01MzYsNCArNTQyLDEwIEBAIExheW91dFVuaXQgUmVuZGVy
UmVnaW9uOjptYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdAogICAgIHJldHVybiBtYXhQ
cmVmZXJyZWRMb2dpY2FsV2lkdGggKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CiB9
CiAKK3ZvaWQgUmVuZGVyUmVnaW9uOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYg
cmFuZ2VPYmplY3RzKSBjb25zdAoreworICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogbmFtZWRG
bG93ID0gdmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigpLT5lbnN1cmVSZW5kZXJGbG93VGhy
ZWFkV2l0aE5hbWUoc3R5bGUoKS0+cmVnaW9uVGhyZWFkKCkpOworICAgIG5hbWVkRmxvdy0+Z2V0
UmFuZ2VzKHJhbmdlT2JqZWN0cywgdGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCBlZTA0ZWNjLi4zZDlk
NWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC03OCw4ICs3
OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygp
OwogCi0gICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29u
c3Q7Ci0KICAgICBib29sIGlzRmlyc3RSZWdpb24oKSBjb25zdDsKICAgICBib29sIGlzTGFzdFJl
Z2lvbigpIGNvbnN0OwogCkBAIC0xMDQsNiArMTAyLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IExheW91dFVuaXQgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBMYXlvdXRVbml0IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0IE9W
RVJSSURFOwogICAgIAorICAgIExheW91dFVuaXQgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRl
bnRSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxC
b3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7Cisg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoZmxvd1RocmVhZFBvcnRpb25S
ZWN0KCkpOyB9OworICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250
ZW50KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0
KGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpKTsgfTsKKworICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3Rv
cjxSZWZQdHI8UmFuZ2U+ID4mKSBjb25zdDsKKwogICAgIC8vIFRoaXMgbWV0aG9kIHJlcHJlc2Vu
dHMgdGhlIGxvZ2ljYWwgaGVpZ2h0IG9mIHRoZSBlbnRpcmUgZmxvdyB0aHJlYWQgcG9ydGlvbiB1
c2VkIGJ5IHRoZSByZWdpb24gb3Igc2V0LgogICAgIC8vIEZvciBSZW5kZXJSZWdpb25zIGl0IG1h
dGNoZXMgbG9naWNhbFBhZ2luYXRpb25IZWlnaHQoKSwgYnV0IGZvciBzZXRzIGl0IGlzIHRoZSBo
ZWlnaHQgb2YgYWxsIHRoZSBwYWdlcwogICAgIC8vIG9yIGNvbHVtbnMgYWRkZWQgdG9nZXRoZXIu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163785</attachid>
            <date>2012-09-12 23:06:25 -0700</date>
            <delta_ts>2012-09-13 00:08:30 -0700</delta_ts>
            <desc>Fix the reviewer name in rebased patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>88973</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNWM1M2NjLi5mZjQwNDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDkt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJlZ2lv
bkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50
LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy1ybC1yYi1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGlu
Zy1tb2Rlcy10Yi1ybC1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
cmVzb3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0UmFu
Z2VBdCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOS0xMiAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgaGF2ZSBwcm9wZXJ0
eSBidXR0ZXJmbGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U4Y2FhNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitbQ1NTUmVnaW9u
c10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBhYnNvbHV0ZSBwb3Np
dGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCx3cmFwcGVyLDFdCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1
dGUtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1hYnNvbHV0ZS1wb3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lNDc0MTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwKQEAgLTAsMCArMSwzNCBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IHBvc2l0aW9u
OiBhYnNvbHV0ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1m
bG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9IndyYXBw
ZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNs
YXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVtZW50cyIpOworICAgIHZhciByZWdpb24x
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9u
c0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNv
bnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmYwYTY3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyB3aXRoIG11bHRpcGxlIGNvbnRlbnQgbm9kZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4
dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBl
ciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitQQVNTIEFycmF5IFt3cmFwcGVy
MiwwLHdyYXBwZXIyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyMiwwLHdyYXBwZXIyLDFdCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVu
dC1ub2Rlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtY29udGVudC1ub2Rlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjY0MTUzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwKQEAgLTAsMCArMSw1MiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQt
c2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAg
ICAuZmxvdyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTt9CisgICAgLmJsdWUge2JhY2tncm91
bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDt9CisgICAgI3Jl
Z2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3
MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxv
dy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDEyMHB4OyBsZWZ0OiAyMHB4OyB0
b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGNsYXNzPSJmbG93Ij5UZXh0
IG5vZGUuPC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwv
ZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBp
ZD0id3JhcHBlcjIiPjxkaXYgY2xhc3M9ImZsb3cgYmx1ZSI+PC9kaXY+PC9kaXY+CisgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBSZWdpb246OmdldFJlZ2lv
bkZsb3dSYW5nZXMgd2l0aCBtdWx0aXBsZSBjb250ZW50IG5vZGVzIik7CisgICAgdmFyIHJlZ2lv
bjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24y
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWcoIkZs
b3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0Iiwg
NF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDEpLCBbIndyYXBwZXIyIiwgMCwg
IndyYXBwZXIyIiwgMV0pOworCisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5
LW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNm
MzFiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1tDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZv
ciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVhayByYW5n
ZXMgYXQgZGlzcGxheTpub25lKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKzEKKzMK
KzUKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBw
ZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsd3JhcHBlciwxXQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXkt
bm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZGlzcGxheS1ub25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MWMyZmM4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGJv
ZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6
IDIwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgLmZs
b3cgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQorICAgICN3cmFwcGVyIHAge21hcmdpbjog
MDsgcGFkZGluZzogMDt9CisgICAgLm5vbmUge2Rpc3BsYXk6IG5vbmU7fQorICAgICNyZWdpb24x
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsg
bGVmdDogMjBweDsgdG9wOiAyNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBjbGFz
cz0iZmxvdyI+PHA+MTwvcD48cCBjbGFzcz0ibm9uZSI+MjwvcD48cD4zPC9wPjxwIGNsYXNzPSJu
b25lIj40PC9wPjxwPjU8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNz
PSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBJ
bXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBlbGVtZW50cyB3aXRoIGRp
c3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVhayByYW5nZXMgYXQgZGlzcGxheTpub25l
KSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEi
KTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3Jh
cHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dz
KCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJp
bGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YWM0
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBA
CitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3Ig
ZW1wdHkgcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Zsb3cgdGVzdAor
UEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLHdyYXBwZXIs
MV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNjk1OWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1l
bXB0eS1yZWdpb25zLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBt
b25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogNTBweDsgfQorICAgIC5ib3Jk
ZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94IHsgLXdlYmtpdC1mbG93LWlu
dG86IGZsb3cxOyBoZWlnaHQ6IDUwcHg7IG1hcmdpbi10b3A6IDQwcHg7IGJhY2tncm91bmQtY29s
b3I6IGJsdWV9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRo
OiAyNTBweDsgaGVpZ2h0OiAzMHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVn
aW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYw
cHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93
LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9w
OiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94Ij48L2Rpdj48L2Rp
dj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9
InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFz
cz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10g
SW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZW1wdHkgcmVnaW9ucyIp
OworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsK
KyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7Cisg
ICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisg
ICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAw
KTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOwor
ICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lv
bnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKwor
ICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
NDAyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NSZWdp
b25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5nZTEu
bGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
d3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJh
bmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8g
W2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4dCBu
b2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEubGVu
Z3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEs
MSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDIs
d3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQor
UEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gx
LDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRd
IGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBl
ciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVn
aW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFycmF5
IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5n
ZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0byBb
I3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZp
eGVkLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODdlYWVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBA
CitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBm
aXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBB
cnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCx3cmFwcGVy
LDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZml4ZWQtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iMzdhODUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwKQEAgLTAsMCArMSwzMyBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IHBvc2l0aW9u
OiBmaXhlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93
LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9IndyYXBwZXIi
PjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNz
PSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jhbmdl
cyBmb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyIpOworICAgIHZhciByZWdpb24xID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsi
d3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZs
b3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlz
aWJpbGl0eSA9ICJoaWRkZW4iOworfQorICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZGE4ZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1ob3Jpei1idC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorW0NTU1JlZ2lvbnNd
IFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgaG9yaXpvbnRhbC1idCBt
b2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVn
aW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQ
QVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIs
MCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJv
eDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFw
cGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2Nr
KQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFd
IGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQor
UEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlz
IGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJh
bmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwg
dG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJh
eSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFu
Z2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwg
dG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQg
d2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMg
MgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxi
b3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwj
dGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94
MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFd
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMt
aG9yaXotYnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWhvcml6LWJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Yjc5OGMxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwg
eyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idDsgfQorICAgIGJvZHkgeyBmb250
LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7
fQorICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgaGVpZ2h0OiAxMTBw
eDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7
IGhlaWdodDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxv
dy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRv
cDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0
aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3Jl
Z2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2
MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2
IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48
L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdp
b24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NT
UmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBob3Jpem9u
dGFsLWJ0IG1vZGUiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKKyAgICBk
ZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAi
ZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7
CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAgICByYW5n
ZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFs
dWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkFk
ZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7CisgICAg
dmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHROb2RlKTsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJh
bmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVn
aW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMs
IDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5jcmVhc2Ug
Zm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
d3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7CisgICAgcmFu
Z2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZh
bHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VB
dChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSBy
ZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsi
I3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEgY29u
dGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAg
ICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAgYm94Mi5z
dHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndy
YXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
Mi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwg
WyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwg
MCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhp
ZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZs
b3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hY2EzNGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5n
ZXMgZm9yIGlubGluZSBlbGVtZW50cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Zs
b3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3
cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsd3JhcHBlciwxXQorUEFTUyByYW5nZTIu
bGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1pbmxpbmUtb25seS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yM2E0NmM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbApAQCAt
MCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFw
cGVyIHsgZm9udC1zaXplOiAyMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlk
IHJlZDsgfQorICAgICNpbmxpbmVPbmx5IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxOyBiYWNr
Z3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQor
ICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhl
aWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Vi
a2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAy
MHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48c3BhbiBpZD0iaW5saW5l
T25seSI+PC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48
L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9u
Rmxvd1JhbmdlcyBmb3IgaW5saW5lIGVsZW1lbnRzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVzdCIp
OworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7Cisg
ICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworCitmdW5jdGlvbiBoaWRlUmVnaW9u
c0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lv
bnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlj
MDU5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitbQ1NT
UmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzLiBUZXh0IGJyZWFr
cyBpbiB0d28gcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9k
ZS4KK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBw
ZXIsMCwjdGV4dCw0XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRv
IFsjdGV4dCw1LHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjEzYjhjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGluIHZlcnRpY2FsLXJs
IG1vZGUuIFRleHQgYnJlYWtzIGludG8gdHdvIHJlZ2lvbnMKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwj
dGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3Jh
cHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZl
cnQtbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjU3YWQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJr
aXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgfQorICAgIGJvZHkgeyBmb250LWZhbWlseTog
bW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDUwcHg7IH0KKyAgICAuYm9y
ZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2JveCB7IC13ZWJraXQtZmxvdy1p
bnRvOiBmbG93MTt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdp
ZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAj
cmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdodDog
MjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxk
aXYgaWQ9ImJveCI+VGV4dCBub2RlLjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBj
bGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+
PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJl
Z2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBpbiB2ZXJ0aWNhbC1ybCBtb2RlLiBUZXh0IGJyZWFr
cyBpbnRvIHR3byByZWdpb25zIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJl
Z2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2Uy
LCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9u
c0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lv
bnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlNzI5YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXRleHQuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFj
ZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1MHB4OyB9CisgICAgLmJvcmRlciB7IGJv
cmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3ggeyAtd2Via2l0LWZsb3ctaW50bzogZmxv
dzE7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUw
cHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIg
eyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBs
ZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJi
b3giPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2Pgor
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246Omdl
dFJlZ2lvbkZsb3dSYW5nZXMuIFRleHQgYnJlYWtzIGluIHR3byByZWdpb25zIik7CisgICAgdmFy
IHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciBy
ZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworICAgIGRlYnVn
KCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICIjdGV4
dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFd
KTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzNjk2YgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246
OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRpY2FsLWxyIG1vZGUKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitFbXB0eSByZWdpb25zCitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBp
cyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3
cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFu
Z2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0byBb
Ym94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gx
LDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5v
ZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwx
LGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMix3
cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNpemUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEs
MV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0g
aXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BB
U1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVy
LDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdp
b24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFw
cGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMF0KK1BBU1MgQXJyYXkg
W2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSxib3gxLDJdIGlzIGVxdWFsIHRvIFsj
dGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gx
LDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwwLGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0ZWYyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZl
cnQtbHIuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBl
ci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2Rl
OiB2ZXJ0aWNhbC1scjsgfQorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9Cisg
ICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAx
cHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJs
dWU7IHdpZHRoOiAxMzVweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDEgeyBiYWNrZ3JvdW5k
LWNvbG9yOiBsaWdodGdyZWVuOyB3aWR0aDogMTEwcHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNi
b3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3aWR0aDogMTBweDsgcGFkZGluZzogNXB4
O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7
IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsg
LXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVm
dDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTog
ZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4
O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gx
Ij48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVn
aW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJi
b3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4K
KyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpn
ZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1sciBtb2RlIik7CisgICAgdmFyIHJlZ2lv
bjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24y
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIik7CisKKyAgICBkZWJ1ZygiRW1wdHkg
cmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMCk7CisgICAg
dmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UzID0gcmVn
aW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVidWcoIkZsb3cgYXJ0aWNsZSIpOworICAgIHZh
ciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFydGljbGUiKTsKKyAgICBhcnRp
Y2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24x
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCks
IFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gx
IiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAxLCAid3Jh
cHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0
ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJv
eDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBw
ZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJi
b3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgIFsiYm94MSIsIDIsICJ3cmFwcGVyIiwg
MV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZvbnQgc2l6ZSIpOworICAgIHZhciB3cmFwcGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndyYXBwZXIiKTsKKyAgICB3cmFwcGVyLnN0eWxl
LmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwg
ImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiI3RleHQiLCA0
XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7Cisg
ICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJh
eXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0ZXh0IiwgNSwgIndyYXBwZXIiLCAxXSk7CisK
KyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZy
b20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAgdmFyIGJveDIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEi
OworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAwXSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MSIsIDEsICIjdGV4dCIs
IDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAiYm94MSIsIDJdKTsKKyAg
ICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRS
YW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAsICJib3gxIiwgMV0pOworCitmdW5jdGlvbiBo
aWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmM4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQyIEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpn
ZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1ybCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5nZTEubGVu
Z3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5ndGggaXMg
MAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8gW2Jv
eDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwx
LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4dCBub2Rl
IHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVy
LDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxi
b3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlz
IDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDIsd3Jh
cHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFd
CitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlz
IGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNT
IEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwx
XQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9u
MSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBl
ciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFycmF5IFti
b3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTIu
bGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0byBbI3Rl
eHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSww
LGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMTE1NGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0
LXJsLmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTog
dmVydGljYWwtcmw7IH0KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAg
ICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4
IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVl
OyB3aWR0aDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gxIHsgYmFja2dyb3VuZC1j
b2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDExMHB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94
MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lkdGg6IDEwcHg7IHBhZGRpbmc6IDVweDt9
CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA3MHB4OyBo
ZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13
ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6
IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZs
b3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzNTBweDt9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+
PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lv
bjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9y
ZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cisg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0
UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVydGljYWwtcmwgbW9kZSIpOworICAgIHZhciByZWdpb24x
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lvbjMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkVtcHR5IHJl
Z2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOworICAgIHZh
ciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMyA9IHJlZ2lv
bjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJGbG93IGFydGljbGUiKTsKKyAgICB2YXIg
YXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRpY2xlIik7CisgICAgYXJ0aWNs
ZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Ux
Lmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBb
IndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIs
IDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxv
d1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAg
ICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMSwgIndyYXBw
ZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVhdGVz
IGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3gx
IikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVy
IiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94
MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBbImJveDEiLCAyLCAid3JhcHBlciIsIDFd
KTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNpemUiKTsKKyAgICB2YXIgd3JhcHBlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVyIik7CisgICAgd3JhcHBlci5zdHlsZS5m
b250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJi
b3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0p
OworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworCisg
ICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdpbGwgbW92ZSBmcm9t
IHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBib3gyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cxIjsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMF0pOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDEiLCAxLCAiI3RleHQiLCA0
XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7Cisg
ICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJh
eXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgImJveDEiLCAyXSk7CisgICAg
cmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94MSIsIDFdKTsKKworCitmdW5jdGlvbiBo
aWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworfQorCitoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1s
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwNjlm
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTUgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5n
ZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1vZGVzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFT
UyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFd
CitQQVNTIEFycmF5IFtib3gzLDEsYm94MywyXSBpcyBlcXVhbCB0byBbYm94MywxLGJveDMsMl0K
K1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBl
cXVhbCB0byBbYm94MSwxLGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFtib3gxLDIsYm94MywxXSBpcyBlcXVhbCB0byBbYm94MSwyLGJveDMsMV0KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSG9yaXpvbnRhbCBUQgor
WAorVmVydGljYWwgTFJIb3Jpem9udGFsIEJUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdy
aXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44Njk4MmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci5odG1sCkBAIC0w
LDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Vi
a2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwgO30KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93
LWludG86IGZsb3c7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9CisgICAgI2JveDExIHsgYmFj
a2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDMwcHg7IG1hcmdpbi1yaWdodDogNzBw
eDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDIwMHB4
OyBoZWlnaHQ6IDQwMHB4OyAgfQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZs
b3c7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA0MDBweDsgIH0KKyAgICAjcmVnaW9uMyB7IC13ZWJr
aXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7IGhlaWdodDogNDAwcHg7ICB9CisgICAg
I2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC10YjsgYmFja2dyb3VuZC1j
b2xvcjogZ3JleTsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDQwMHB4O30KKyAgICAjYm94MjIgeyBo
ZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfQorICAg
ICNib3gzIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyAgYmFja2dyb3VuZC1j
b2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTUwcHg7IGhlaWdodDogNDAwcHg7fQorICAgICNib3g0
IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7IGJhY2tncm91bmQtY29sb3I6
IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogMjAwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsg
dG9wOiAxMDBweDsgbGVmdDogMjBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDwhLS1kaXYgaWQ9IndyYXBwZXIiPjxk
aXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5WZXJ0IFJM
PC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydCBMUjwvZGl2PjxkaXYgaWQ9ImJveDQiPkhvcml6b250
YWwgQlQ8L2Rpdj48L2Rpdi0tPgorCisgICAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94
MSI+PGRpdiBpZD0iYm94MTEiPjwvZGl2PjxkaXYgaWQ9ImJveDIiPkhvcml6b250YWwgVEI8ZGl2
IGlkPSJib3gyMiI+WDwvZGl2PjwvZGl2PjxkaXYgaWQ9ImJveDMiPlZlcnRpY2FsIExSPGRpdiBp
ZD0iYm94NCI+SG9yaXpvbnRhbCBCVDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PgorICAgIDxkaXYg
aWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjIi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjMiIGNsYXNzPSJib3Jk
ZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1
ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3Ig
bWl4ZWQgdmVydGljYWwgbW9kZXMiKTsKKyAgICByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjIiKTsKKyAgICByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjMiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDMiLCAxLCAiYm94
MyIsIDJdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0pOwor
ICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdl
dFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMiwgImJveDMiLCAxXSk7CisKK2Z1bmN0aW9u
IGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7Cit9CisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtdGIt
cmwtbHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIz
ZTU5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93
UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDIK
K1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94
MSwxXQorUEFTUyBBcnJheSBbYm94MywxLGJveDMsMl0gaXMgZXF1YWwgdG8gW2JveDMsMSxib3gz
LDJdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0g
aXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwyLGJveDMsMV0gaXMgZXF1YWwgdG8gW2JveDEsMixib3gzLDFdCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1ZlcnRpY2FsIFJM
CitYCitWZXJ0aWNhbCBMUlkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1sci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rl
cy10Yi1ybC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYmRi
MTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLmh0bWwKQEAgLTAsMCArMSw1NyBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBt
b25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMzBweDsgfQorICAgIC5ib3Jk
ZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94MSB7IC13ZWJraXQtZmxvdy1p
bnRvOiBmbG93OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICNib3gxMSB7IGJhY2tn
cm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDogMzBweDsgbWFyZ2luLXRvcDogNzBweDt9
CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDQwMHB4OyBo
ZWlnaHQ6IDIwMHB4OyAgfQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7
IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDsgIH0KKyAgICAjcmVnaW9uMyB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93OyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAwcHg7ICB9CisgICAgI2Jv
eDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IGJhY2tncm91bmQtY29sb3I6
IGdyZXk7IGhlaWdodDogMTUwcHg7IHdpZHRoOiA0MDBweDt9CisgICAgI2JveDIyIHsgaGVpZ2h0
OiAzMHB4OyB3aWR0aDogMzBweDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH0KKyAgICAjYm94
MyB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgYmFja2dyb3VuZC1jb2xvcjog
bGlnaHRibHVlOyB3aWR0aDogNDAwcHg7IGhlaWdodDogMTUwcHg7fQorICAgICNib3g0IHsgLXdl
YmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7IGJhY2tncm91bmQtY29sb3I6IHllbGxv
dzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogNjBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIw
cHg7IGxlZnQ6IDIwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8IS0tZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJi
b3gxIj48ZGl2IGlkPSJib3gxMSI+PC9kaXY+PGRpdiBpZD0iYm94MiI+VmVydCBSTDwvZGl2Pjxk
aXYgaWQ9ImJveDMiPlZlcnQgTFI8L2Rpdj48ZGl2IGlkPSJib3g0Ij5Ib3Jpem9udGFsIEJUPC9k
aXY+PC9kaXYtLT4KKworICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYg
aWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5WZXJ0aWNhbCBSTDxkaXYgaWQ9ImJveDIy
Ij5YPC9kaXY+PC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydGljYWwgTFI8ZGl2IGlkPSJib3g0Ij5Z
PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+
CisgICAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBm
b3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcyIp
OworICAgIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAg
IHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHJlZ2lv
bjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworICAgIHJhbmdlMSA9IHJl
Z2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2Ux
LCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRS
YW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MyIsIDEsICJib3gzIiwgMl0pOworICAgIHJhbmdlMiA9
IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Uz
Lmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBb
ImJveDEiLCAyLCAiYm94MyIsIDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygp
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxp
dHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKyAgICBoaWRlUmVnaW9u
c0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTI4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sCkBAIC0w
LDAgKzEsMTA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFw
cGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlk
IHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyBoZWln
aHQ6IDEzNXB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94MSB7IGJhY2tncm91bmQtY29sb3I6
IGxpZ2h0Z3JlZW47IGhlaWdodDogMTEwcHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gyIHsg
YmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyBoZWlnaHQ6IDEwcHg7IHBhZGRpbmc6IDVweDt9Cisg
ICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVp
Z2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJr
aXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIw
cHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cx
OyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzNTBweDt9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRp
diBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVy
Ij48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVn
aW9uRmxvd1Jhbmdlcy4iKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxl
bmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKKyAg
ICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8g
PSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAx
XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7Cisg
ICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJh
eXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAgICBy
YW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRF
dmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5n
ZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWco
IkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7Cisg
ICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4iKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHROb2Rl
KTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAg
IHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0g
cmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5jcmVh
c2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIg
PSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJh
bmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdpb24z
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCks
IFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEg
Y29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMiKTsK
KyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAgYm94
Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Ux
Lmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBb
IndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lv
bjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAw
KSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gx
IiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0Fu
ZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKaW5kZXggOWZlYjFhMS4uMWY4ZTJjNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKQEAgLTE2MCwz
ICsxNjAsMzkgQEAgZnVuY3Rpb24gYXNzZXJ0KGV4cHJlc3Npb24sIGZhaWxNZXNzYWdlKQogewog
ICAgIGV4cHJlc3Npb24gPyBsb2dQYXNzTWVzc2FnZSgiIikgOiBsb2dGYWlsTWVzc2FnZShmYWls
TWVzc2FnZSk7CiB9CisKKy8vIHVzZWQgYnkgZ2V0UmVnaW9uRmxvd1JhbmdlcyB0ZXN0cworZnVu
Y3Rpb24gZ2V0TmFtZShub2RlKSB7CisgIGlmICghbm9kZSkgcmV0dXJuICJ1bmRlZmluZWQiOwor
ICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBUZXh0IG5vZGUKKyAgICByZXR1cm4gIiN0ZXh0
IjsKKyAgLy8gYWxsIHRoZSBvdGhlcnMgc2hvdWxkIGhhdmUgYW4gaWQKKyAgcmV0dXJuIG5vZGUu
aWQ7Cit9CisKK2Z1bmN0aW9uIGdldFJhbmdlQXQoYXJyUmFuZ2UsIGluZGV4KSB7CisgIGlmIChp
bmRleCA8IGFyclJhbmdlLmxlbmd0aCkKKyAgICByZXR1cm4gW2dldE5hbWUoYXJyUmFuZ2VbaW5k
ZXhdLnN0YXJ0Q29udGFpbmVyKSwgYXJyUmFuZ2VbaW5kZXhdLnN0YXJ0T2Zmc2V0LCBnZXROYW1l
KGFyclJhbmdlW2luZGV4XS5lbmRDb250YWluZXIpLCBhcnJSYW5nZVtpbmRleF0uZW5kT2Zmc2V0
XTsKKyAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9uIGNvbXBhcmVBcnJheXMoY3VycmVudCwg
ZXhwZWN0ZWQpIHsKKyAgICB0cnkgeworICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJOdWxsIG9iamVjdC4gRXhwZWN0ZWQgWyIgKyBleHBlY3Rl
ZC50b1N0cmluZygpICsgIl0gd2FzIG51bGwiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoY3VycmVudC5sZW5ndGggIT09IGV4cGVjdGVkLmxlbmd0aCkgewor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiQXJyYXkgbGVuZ3RoIGRpZmZlcnMuIEV4cGVjdGVkIFsi
ICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdIHdhcyBbIiArIGN1cnJlbnQudG9TdHJpbmcoKSAr
ICJdIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGN1cnJlbnRb
aV0gIT09IGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0
ZWQgWyIgICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdLiBXYXMgWyIgKyBjdXJyZW50LnRvU3Ry
aW5nKCkgKyAiXSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICB9IGNhdGNoIChleCkgeworICAgICAgICB0ZXN0RmFpbGVkKGN1cnJlbnQgKyAiIHRocmV3IGV4
Y2VwdGlvbiAiICsgZXgpOworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJBcnJheSBbIiAgKyBleHBl
Y3RlZC50b1N0cmluZygpICsgIl0gaXMgZXF1YWwgdG8gWyIgKyBjdXJyZW50LnRvU3RyaW5nKCkg
KyAiXSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ5MDE5YzMuLjI3YmMyODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2MCBAQAorMjAxMi0wOS0wNiAgUmF1bCBIdWRlYSAgPHJodWRlYUBhZG9iZS5jb20+
CisKKyAgICAgICAgW0NTU1JlZ2lvbnNdW0NTU09NXSBJbXBsZW1lbnQgRWxlbWVudC5nZXRSZWdp
b25GbG93UmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODQ5MworCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAg
IEltcGxlbWVudCB0aGUgZ2V0UmVnaW9uRmxvd1JhbmdlcyBmdW5jdGlvbiBmcm9tIHRoZSBDU1Mg
UmVnaW9ucyBzcGVjLiBJdCBpcyBpbXBsZW1lbnRlZCBieSBpdGVyYXRpbmcgb3ZlciAKKyAgICAg
ICAgdGhlIGNvbnRlbnQgbm9kZXMgYW5kIGZpZ3VyaW5nIG91dCB3aGljaCBub2RlcyBoYXZlIGJv
dW5kaW5nQm94IGludGVyc2VjdGluZyB0aGUgcmVnaW9uIGJveCBhbmQgZmlndXJpbmcgb3V0Cisg
ICAgICAgIHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucy4KKworICAgICAgICBUZXN0czogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRlbnQtbm9k
ZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZGlzcGxheS1ub25lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLXRleHQtdmVydC1sci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJi
LWxyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLXdyaXRpbmctbW9kZXMtdGItcmwtbHIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMuaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDogYWRkZWQgdGhlIHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMg
bWV0aG9kCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9p
ZGluZ0Zsb2F0cyk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGlu
c3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZSk6IFVzZSB0aGUgbG9naWNhbFRv
cE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTogQWRkZWQgYSBzbG93ZXIgcGF0aCB3aGljaCB3
b3JrcyB3aXRob3V0IExheW91dFN0YXRlCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVh
ZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAo
cmVuYW1lZCkKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyk6IFVzZSB0
aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlTGluZVdpZHRoSW5SZWdpb24pOiBVc2UgdGhl
IGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFtZWQpCisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
SW5saW5lU3RhdGljRGlzdGFuY2UpOiBVc2UgdGhlIGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250
ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFt
ZWQpCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppc0NvbnRhaW5lZEluTm9kZXMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpib3hJbnRlcnNlY3RzUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFuZ2VzKTogcmV0dXJucyBhIHZlY3RvciBvZiBS
YW5nZXMgdGhhdCBjb250YWlucyBOb2RlIHRoYXQgYXJlIHBhcnQgb2YgYSByZWdpb24KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgIChSZW5kZXJO
YW1lZEZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29u
dGVudFJlY3QpOiBSZXR1cm5zIHRoZSBsb2dpY2FsIHRvcCBvZiBhIHJlY3RhbmdsZSBpbnNpZGUg
dGhlIGZsb3cgdGhyZWFkIGNvbnRlbnQKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3Qp
OiBSZXR1cm5zIHRoZSBsb2dpY2FsIGJvdHRvbSBvZiBhIHJlY3RhbmdsZSBpbnNpZGUgdGhlIGZs
b3cgdGhyZWFkIGNvbnRlbnQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6Z2V0UmFu
Z2VzKTogcHJveHkgdGhlIGdldFJhbmdlcyBjYWxsIHRvIGl0cyBuYW1lZCBmbG93IHRocmVhZAor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKFJlbmRlclJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmxvZ2ljYWxUb3BGb3JGbG93VGhy
ZWFkQ29udGVudCk6IFJlbmFtZWQgZnJvbSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmxvZ2ljYWxCb3R0b21Gb3JGbG93VGhy
ZWFkQ29udGVudCk6IFJldHVybnMgdGhlIGxvZ2ljYWwgYm90dG9tIG9mIHRoZSBGbG93VGhyZWFk
Q29udGVudCByZWN0CisKIDIwMTItMDktMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgcHJvcGVydHkgYnV0dGVyZmxpZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCAwYzgxNWQwLi4wZDQ0OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCkBAIC0yMDYyLDYgKzIwNjIsMjQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50Ojp3
ZWJraXRSZWdpb25PdmVyc2V0KCkgY29uc3QKICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiB9
CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4gRWxl
bWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBWZWN0b3I8
UmVmUHRyPFJhbmdlPiA+IHJhbmdlT2JqZWN0czsKKyAgICBpZiAoZG9jdW1lbnQoKS0+Y3NzUmVn
aW9uc0VuYWJsZWQoKSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyUmVnaW9u
KCkpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSB0b1JlbmRlclJlZ2lvbihyZW5k
ZXJlcigpKTsKKyAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcmVn
aW9uLT5nZXRSYW5nZXMocmFuZ2VPYmplY3RzKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmFuZ2VP
YmplY3RzOworfQorCisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgRWxlbWVudDo6ZmFz
dEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCmluZGV4IGNlNTA1NDYuLjhhMjhjZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtNDI3LDYgKzQyNyw5IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclJlZ2lvbiogcmVu
ZGVyUmVnaW9uKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB3ZWJraXRSZWdpb25P
dmVyc2V0KCkgY29uc3Q7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIFZlY3RvcjxSZWZQ
dHI8UmFuZ2U+ID4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0OworI2VuZGlmCiAK
ICAgICBib29sIGhhc0lEKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCmluZGV4IGZiNjBjNzMuLjMzYzExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5pZGwKQEAgLTE0NCw2ICsxNDQsNyBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gQ1NT
IFJlZ2lvbnMgQVBJCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0
UmVnaW9uT3ZlcnNldDsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBzZXF1ZW5j
ZTxSYW5nZT4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwogCiAjaWYgIWRlZmluZWQoTEFO
R1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBF
dmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcAppbmRleCBjMmE0MDYxLi4xOThmMzdlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTIyMzIsNyArMjIzMiw3IEBAIExheW91dFVuaXQgUmVu
ZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRz
KGNvbnN0IFJlCiAKICAgICBMYXlvdXRVbml0IGJsb2NrT2Zmc2V0ID0gbG9naWNhbFRvcEZvckNo
aWxkKGNoaWxkKTsKICAgICBpZiAocmVnaW9uKQotICAgICAgICBibG9ja09mZnNldCA9IG1heChi
bG9ja09mZnNldCwgYmxvY2tPZmZzZXQgKyAocmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CisgICAgICAg
IGJsb2NrT2Zmc2V0ID0gbWF4KGJsb2NrT2Zmc2V0LCBibG9ja09mZnNldCArIChyZWdpb24tPmxv
Z2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSkpOwogCiAgICAgTGF5b3V0VW5pdCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0Rm9yTGlu
ZShibG9ja09mZnNldCwgZmFsc2UsIHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSwgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CiAKQEAgLTY4OTYsNyArNjg5Niw3
IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNl
dCwgUGFnZUJvdW5kYXJ5UnVsZSBwYWdlQm91CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAocmVnaW9uLT5pc0xhc3RSZWdpb24oKSkKICAgICAgICAgcmV0dXJuIHJlZ2lvbi0+aXNSZW5k
ZXJSZWdpb25TZXQoKSB8fCByZWdpb24tPnN0eWxlKCktPnJlZ2lvbk92ZXJmbG93KCkgPT0gQnJl
YWtSZWdpb25PdmVyZmxvdwotICAgICAgICAgICAgfHwgKHBhZ2VCb3VuZGFyeVJ1bGUgPT0gSW5j
bHVkZVBhZ2VCb3VuZGFyeSAmJiBwYWdlT2Zmc2V0ID09IHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSgpKTsKKyAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlSdWxlID09
IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPmxvZ2ljYWxUb3BG
b3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzE4Nywy
MCArNzE4Nyw1MSBAQCBib29sIFJlbmRlckJsb2NrOjpsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5l
Q2hhbmdlZChSb290SW5saW5lQm94KiByb290Qm94LCBMYXlvdQogCiBMYXlvdXRVbml0IFJlbmRl
ckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byB3b3JrIHdpdGhvdXQgbGF5b3V0IHN0YXRl
LiBJdCdzIGZpbmUgdG8gdXNlIHRoZSBsYXlvdXQgc3RhdGUgYXMgYSBjYWNoZQotICAgIC8vIGZv
ciBzcGVlZCwgYnV0IHdlIG5lZWQgYSBzbG93IGltcGxlbWVudGF0aW9uIHRoYXQgd2lsbCB3YWxr
IHVwIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluIGFuZCBmaWd1cmUKLSAgICAvLyBvdXQgb3Vy
IG9mZnNldCBmcm9tIHRoZSB0b3Agb2YgdGhlIHBhZ2UuCiAgICAgTGF5b3V0U3RhdGUqIGxheW91
dFN0YXRlID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpOwotICAgIGlmICghbGF5b3V0U3RhdGUgfHwg
IWxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
bGF5b3V0U3RhdGUgJiYgIWxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQorICAgICAgICByZXR1
cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICBpZiAobGF5b3V0U3RhdGUpIHsKKyAgICAgICAgLy8g
RklYTUU6IFNhbml0eSBjaGVjayB0aGF0IHRoZSByZW5kZXJlciBpbiB0aGUgbGF5b3V0IHN0YXRl
IGlzIG91cnMsIHNpbmNlIG90aGVyd2lzZSB0aGUgY29tcHV0YXRpb24gd2lsbCBiZSBvZmYuCisg
ICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQgZm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRl
ZCB1c2luZworICAgICAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFjaCByZWdpb24u
IFVudGlsIHdlIHBhdGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQuCisgICAgICAg
IC8vIEFTU0VSVChsYXlvdXRTdGF0ZS0+bV9yZW5kZXJlciA9PSB0aGlzKTsKIAotICAgIC8vIEZJ
WE1FOiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIgaW4gdGhlIGxheW91dCBzdGF0ZSBp
cyBvdXJzLCBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0aW9uIHdpbGwgYmUgb2ZmLgotICAg
IC8vIFJpZ2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxvZ2ljYWxI
ZWlnaHQgZm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRlZCB1c2lu
ZwotICAgIC8vIHdpZHRocyB3aGljaCBjYW4gdmFyeSBpbiBlYWNoIHJlZ2lvbi4gVW50aWwgd2Ug
cGF0Y2ggdGhhdCwgd2UgY2FuJ3QgaGF2ZSB0aGlzIGFzc2VydC4KLSAgICAvLyBBU1NFUlQobGF5
b3V0U3RhdGUtPm1fcmVuZGVyZXIgPT0gdGhpcyk7CisgICAgICAgIExheW91dFNpemUgb2Zmc2V0
RGVsdGEgPSBsYXlvdXRTdGF0ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdl
T2Zmc2V0OworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNl
dERlbHRhLmhlaWdodCgpIDogb2Zmc2V0RGVsdGEud2lkdGgoKTsKKyAgICB9CisgICAgLy8gRklY
TUU6IFJpZ2h0IG5vdywgdGhpcyBhc3NlcnQgaXMgaGl0IG91dHNpZGUgbGF5b3V0LCBmcm9tIGxv
Z2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0IGluIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludCAo
Y2FsbGVkIGZyb20gRnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCkuCisgICAgLy8gQVNTRVJUKGlu
UmVuZGVyRmxvd1RocmVhZCgpKTsKIAotICAgIExheW91dFNpemUgb2Zmc2V0RGVsdGEgPSBsYXlv
dXRTdGF0ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdlT2Zmc2V0OwotICAg
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RGVsdGEuaGVpZ2h0KCkg
OiBvZmZzZXREZWx0YS53aWR0aCgpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgc2xvd2VyIHBh
dGggdGhhdCBkb2Vzbid0IHVzZSBsYXlvdXQgc3RhdGUgYW5kIHJlbGllcyBvbiBnZXR0aW5nIHlv
dXIgbG9naWNhbCB0b3AgaW5zaWRlIHRoZSBlbmNsb3NpbmcgZmxvdyB0aHJlYWQuIEl0IGRvZXNu
J3QKKyAgICAvLyB3b3JrIHdpdGggY29sdW1ucyBvciBwYWdlcyBjdXJyZW50bHksIGJ1dCBpdCBz
aG91bGQgb25jZSB0aGV5IGhhdmUgYmVlbiBzd2l0Y2hlZCBvdmVyIHRvIHVzaW5nIGZsb3cgdGhy
ZWFkcy4KKyAgICBpZiAoIWluUmVuZGVyRmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVS
T19MQVlPVVRfVU5JVDsKKworICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjdXJyZW50QmxvY2sgPSB0
aGlzOworICAgIExheW91dFJlY3QgYmxvY2tSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsK
KworICAgIHdoaWxlIChjdXJyZW50QmxvY2sgJiYgIWN1cnJlbnRCbG9jay0+aXNSZW5kZXJGbG93
VGhyZWFkKCkpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lckJsb2NrID0gY3VycmVu
dEJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5lckJsb2Nr
KTsKKyAgICAgICAgaWYgKCFjb250YWluZXJCbG9jaykKKyAgICAgICAgICAgIHJldHVybiBaRVJP
X0xBWU9VVF9VTklUOworICAgICAgICBMYXlvdXRQb2ludCBjdXJyZW50QmxvY2tMb2NhdGlvbiA9
IGN1cnJlbnRCbG9jay0+bG9jYXRpb24oKTsKKworICAgICAgICBpZiAoY29udGFpbmVyQmxvY2st
PnN0eWxlKCktPndyaXRpbmdNb2RlKCkgIT0gY3VycmVudEJsb2NrLT5zdHlsZSgpLT53cml0aW5n
TW9kZSgpKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgYmxvY2sgcmVjdCBp
biBjb250YWluZXIgY29vcmRpbmF0ZXMKKyAgICAgICAgICAgIC8vIGFuZCB3ZSBoYXZlIHRvIHRh
a2UgaW50byBhY2NvdW50IGJvdGggdGhlIGNvbnRhaW5lciBhbmQgY3VycmVudCBibG9jayBmbGlw
cGluZyBtb2RlcworICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgpLT5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5l
ckJsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAgICAgICAgICAgICBi
bG9ja1JlY3Quc2V0WShjdXJyZW50QmxvY2stPmhlaWdodCgpIC0gYmxvY2tSZWN0Lm1heFkoKSk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBibG9ja1JlY3Quc2V0
WChjdXJyZW50QmxvY2stPndpZHRoKCkgLSBibG9ja1JlY3QubWF4WCgpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGN1cnJlbnRCbG9jay0+ZmxpcEZvcldyaXRpbmdNb2RlKGJsb2NrUmVj
dCk7CisgICAgICAgIH0KKyAgICAgICAgYmxvY2tSZWN0Lm1vdmVCeShjdXJyZW50QmxvY2tMb2Nh
dGlvbik7CisgICAgICAgIGN1cnJlbnRCbG9jayA9IGNvbnRhaW5lckJsb2NrOworICAgIH07Cisg
ICAgcmV0dXJuIGN1cnJlbnRCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGJsb2Nr
UmVjdC55KCkgOiBibG9ja1JlY3QueCgpOwogfQogCiBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2Nr
OjpyZWdpb25BdEJsb2NrT2Zmc2V0KExheW91dFVuaXQgYmxvY2tPZmZzZXQpIGNvbnN0CkBAIC03
MjQ4LDkgKzcyNzksOSBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2NrOjpjbGFtcFRvU3RhcnRB
bmRFbmRSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAogICAgIFJlbmRlclJlZ2lv
biogZW5kUmVnaW9uOwogICAgIGVuY2xvc2luZ1JlbmRlckZsb3dUaHJlYWQoKS0+Z2V0UmVnaW9u
UmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CiAgICAgCi0gICAgaWYg
KHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgp
IDwgc3RhcnRSZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSkKKyAgICBp
ZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQo
KSA8IHN0YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXJ0UmVnaW9uOwotICAgIGlmIChlbmRSZWdpb24gJiYgcmVnaW9uLT5vZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgPiBlbmRSZWdpb24tPm9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UoKSkKKyAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9naWNh
bFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZW5kUmVnaW9uOwogICAgIAogICAgIHJl
dHVybiByZWdpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGE2
YWZkYzAuLmQ2MmI4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC0xMTU3LDcgKzExNTcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdp
ZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogICAgIExheW91dFVu
aXQgbG9naWNhbFRvcFBvc2l0aW9uID0gbG9naWNhbFRvcCgpOwogICAgIExheW91dFVuaXQgYWRq
dXN0ZWRQYWdlT2Zmc2V0Rm9yQ29udGFpbmluZ0Jsb2NrID0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSAtIGxvZ2ljYWxUb3AoKTsKICAgICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIExh
eW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgICAgIExheW91dFVuaXQgb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZs
b3dUaHJlYWRDb250ZW50KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIDogWkVS
T19MQVlPVVRfVU5JVDsKICAgICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gbWF4KGxvZ2ljYWxU
b3BQb3NpdGlvbiwgbG9naWNhbFRvcFBvc2l0aW9uICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJl
Z2lvbik7CiAgICAgICAgIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRB
bmRFbmRSZWdpb25zKHJlZ2lvbik7CiAgICAgfQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVnaW9u
KFJlbmRlclJlZ2lvbiogcmUKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BQb3NpdGlvbiA9IGxv
Z2ljYWxUb3AoKTsKICAgICBMYXlvdXRVbml0IGFkanVzdGVkUGFnZU9mZnNldEZvckNvbnRhaW5p
bmdCbG9jayA9IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgLSBsb2dpY2FsVG9wKCk7
CiAgICAgaWYgKHJlZ2lvbikgewotICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZSZWdpb24gPSByZWdpb24gPyByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UoKSAtIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9VVF9V
TklUOworICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24gPSBy
ZWdpb24gPyByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgICAgIGxv
Z2ljYWxUb3BQb3NpdGlvbiA9IG1heChsb2dpY2FsVG9wUG9zaXRpb24sIGxvZ2ljYWxUb3BQb3Np
dGlvbiArIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24pOwogICAgICAgICBjb250YWluaW5n
QmxvY2tSZWdpb24gPSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwogICAg
IH0KQEAgLTI1MDMsNyArMjUwMyw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNE
aXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAg
ICAgICAgICAgaWYgKHJlZ2lvbiAmJiBjdXJyLT5pc1JlbmRlckJsb2NrKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUmVuZGVyQmxvY2sqIGNiID0gdG9SZW5kZXJCbG9jayhjdXJyKTsK
ICAgICAgICAgICAgICAgICAgICAgcmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lv
bnMocmVnaW9uKTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94
SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5vZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpOworICAgICAgICAgICAgICAgICAgICBSZW5kZXJCb3hS
ZWdpb25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9uLCByZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJveEluZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbiAr
PSBib3hJbmZvLT5sb2dpY2FsTGVmdCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1MjIsNyAr
MjUyMiw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgm
IGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAgICAgICAgICAgaWYgKHJl
Z2lvbiAmJiBjdXJyLT5pc1JlbmRlckJsb2NrKCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlbmRlckJsb2NrKiBjYiA9IHRvUmVuZGVyQmxvY2soY3Vycik7CiAgICAgICAgICAgICAg
ICAgICAgICByZWdpb24gPSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwot
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9IGNiLT5y
ZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkpOworICAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyog
Ym94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5sb2dpY2Fs
VG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoYm94
SW5mbykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnIgIT0gY29udGFpbmVyQmxv
Y2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljUG9zaXRpb24gLT0gY2ItPmxv
Z2ljYWxXaWR0aCgpIC0gKGJveEluZm8tPmxvZ2ljYWxMZWZ0KCkgKyBib3hJbmZvLT5sb2dpY2Fs
V2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dUaHJlYWQuY3BwCmluZGV4IDc0NjFmNDIuLjI2NGFlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yNyw5ICsyNywx
NCBAQAogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogCiAjaW5jbHVkZSAiRmxv
d1RocmVhZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb24uaCIKKyNp
bmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKKyNpbmNs
dWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzk1LDQgKzQwMCwxNzMgQEAgYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmlzTWFy
a2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRmxvdy0+Zmxvd1N0
YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsOwogfQogCitzdGF0aWMgYm9v
bCBpc0NvbnRhaW5lZEluTm9kZXMoVmVjdG9yPE5vZGUqPiBvdGhlcnMsIE5vZGUqIG5vZGUpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgTm9kZSogb3RoZXIgPSBvdGhlcnMuYXQoaSk7CisgICAgICAgIGlmIChvdGhlci0+Y29udGFp
bnMobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitzdGF0aWMgYm9vbCBib3hJbnRlcnNlY3RzUmVnaW9uKExheW91dFVuaXQgbG9n
aWNhbFRvcEZvckJveCwgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yQm94LCBMYXlvdXRVbml0
IGxvZ2ljYWxUb3BGb3JSZWdpb24sIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvclJlZ2lvbikK
K3sKKyAgICBib29sIHJlZ2lvbklzRW1wdHkgPSBsb2dpY2FsQm90dG9tRm9yUmVnaW9uICE9IE1B
WF9MQVlPVVRfVU5JVCAmJiBsb2dpY2FsVG9wRm9yUmVnaW9uICE9IE1JTl9MQVlPVVRfVU5JVAor
ICAgICAgICAgICAgICAgICAgICAgICAgICYmIChsb2dpY2FsQm90dG9tRm9yUmVnaW9uIC0gbG9n
aWNhbFRvcEZvclJlZ2lvbikgPD0gMDsKKyAgICByZXR1cm4gIChsb2dpY2FsQm90dG9tRm9yQm94
IC0gbG9naWNhbFRvcEZvckJveCkgPiAwCisgICAgICAgICAgICAmJiAhcmVnaW9uSXNFbXB0eQor
ICAgICAgICAgICAgJiYgbG9naWNhbFRvcEZvckJveCA8IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24g
JiYgbG9naWNhbFRvcEZvclJlZ2lvbiA8IGxvZ2ljYWxCb3R0b21Gb3JCb3g7Cit9CisKK3ZvaWQg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYg
cmFuZ2VPYmplY3RzLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKK3sKKyAgICBM
YXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JSZWdpb247CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90
dG9tRm9yUmVnaW9uOworCisgICAgLy8gZXh0ZW5kIHRoZSBmaXJzdCByZWdpb24gdG9wIHRvIGNv
bnRhaW4gZXZlcnl0aGluZyB1cCB0byBpdHMgbG9naWNhbCBoZWlnaHQKKyAgICBpZiAocmVnaW9u
LT5pc0ZpcnN0UmVnaW9uKCkpCisgICAgICAgIGxvZ2ljYWxUb3BGb3JSZWdpb24gPSBNSU5fTEFZ
T1VUX1VOSVQ7CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsVG9wRm9yUmVnaW9uID0gIHJlZ2lv
bi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCk7CisKKyAgICAvLyBleHRlbmQgdGhl
IGxhc3QgcmVnaW9uIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBhYm92ZSBpdHMgeSgpCisgICAgaWYg
KHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCisgICAgICAgIGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24g
PSBNQVhfTEFZT1VUX1VOSVQ7CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsQm90dG9tRm9yUmVn
aW9uID0gcmVnaW9uLT5sb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKTsKKworICAg
IFZlY3RvcjxOb2RlKj4gbm9kZXM7CisgICAgLy8gZWxpbWluYXRlIHRoZSBjb250ZW50Tm9kZXMg
dGhhdCBhcmUgZGVzY2VuZGFudHMgb2Ygb3RoZXIgY29udGVudE5vZGVzCisgICAgZm9yIChOYW1l
ZEZsb3dDb250ZW50Tm9kZXM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29udGVudE5vZGVzKCkuYmVn
aW4oKTsgaXQgIT0gY29udGVudE5vZGVzKCkuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgTm9kZSog
bm9kZSA9ICppdDsKKyAgICAgICAgaWYgKCFpc0NvbnRhaW5lZEluTm9kZXMobm9kZXMsIG5vZGUp
KQorICAgICAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOworICAgIH0KKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbm9kZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgTm9kZSogY29udGVu
dE5vZGUgPSBub2Rlcy5hdChpKTsKKyAgICAgICAgaWYgKCFjb250ZW50Tm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3Jl
ZEV4Y2VwdGlvbjsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
Y29udGVudE5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICBib29sIGZvdW5kU3RhcnRQb3NpdGlv
biA9IGZhbHNlOworICAgICAgICBib29sIHN0YXJ0c0Fib3ZlUmVnaW9uID0gdHJ1ZTsKKyAgICAg
ICAgYm9vbCBlbmRzQmVsb3dSZWdpb24gPSB0cnVlOworICAgICAgICBib29sIHNraXBPdmVyT3V0
c2lkZU5vZGVzID0gZmFsc2U7CisgICAgICAgIE5vZGUqIGxhc3RFbmROb2RlID0gMDsKKworICAg
ICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjb250ZW50Tm9kZTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRy
YXZlcnNlTmV4dE5vZGUoY29udGVudE5vZGUpKSB7CisgICAgICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIExheW91dFJlY3QgYm91
bmRpbmdCb3g7CisgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkpCisg
ICAgICAgICAgICAgICAgYm91bmRpbmdCb3ggPSB0b1JlbmRlcklubGluZShyZW5kZXJlciktPmxp
bmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RleHQo
KSkKKyAgICAgICAgICAgICAgICBib3VuZGluZ0JveCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcikt
PmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGJvdW5kaW5nQm94ID0gIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+ZnJhbWVSZWN0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+aXNSZWxQb3NpdGlvbmVkKCkp
CisgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmUodG9SZW5kZXJCb3gocmVuZGVy
ZXIpLT5yZWxhdGl2ZVBvc2l0aW9uTG9naWNhbE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRUb3AgPSByZW5kZXJlci0+Y29udGFpbmluZ0Js
b2NrKCktPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKKyAgICAgICAgICAgIGNv
bnN0IExheW91dFBvaW50IGxvZ2ljYWxPZmZzZXRGcm9tVG9wKGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBaRVJPX0xBWU9VVF9VTklUIDogIG9mZnNldFRvcCwKKyAgICAgICAgICAgICAgICBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0VG9wIDogWkVST19MQVlPVVRfVU5JVCk7
CisKKyAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmVCeShsb2dpY2FsT2Zmc2V0RnJvbVRvcCk7
CisKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJlbmRlcmVyID0gcmVnaW9u
LT5sb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoYm91bmRpbmdCb3gpOworICAgICAg
ICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIgPSByZWdpb24tPmxvZ2lj
YWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7CisKKyAgICAgICAg
ICAgIC8vIGlmIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBkb2Vzbid0
IGludGVyc2VjdCB0aGUgcmVnaW9uIGJveAorICAgICAgICAgICAgLy8gY2xvc2UgdGhlIGN1cnJl
bnQgcmFuZ2Ugb25seSBpZiB0aGUgc3RhcnQgZWxlbWVudCBiZWdhbiBpbnNpZGUgdGhlIHJlZ2lv
biwKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSBqdXN0IG1vdmUgdGhlIHN0YXJ0IHBvc2l0aW9u
IGFmdGVyIHRoaXMgbm9kZSBhbmQga2VlcCBza2lwcGluZyB0aGVtIHVudGlsIHdlIGZvdW5kIGEg
cHJvcGVyIHN0YXJ0IHBvc2l0aW9uLgorICAgICAgICAgICAgaWYgKCFib3hJbnRlcnNlY3RzUmVn
aW9uKGxvZ2ljYWxUb3BGb3JSZW5kZXJlciwgbG9naWNhbEJvdHRvbUZvclJlbmRlcmVyLCBsb2dp
Y2FsVG9wRm9yUmVnaW9uLCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uKSkgeworICAgICAgICAgICAg
ICAgIGlmIChmb3VuZFN0YXJ0UG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFz
dGFydHNBYm92ZVJlZ2lvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlLT5p
bnRlcnNlY3RzTm9kZShub2RlLCBpZ25vcmVkRXhjZXB0aW9uKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByYW5nZS0+c2V0RW5kQmVmb3JlKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZS0+Y2xvbmVS
YW5nZShpZ25vcmVkRXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoY29udGVudE5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNraXBPdmVyT3V0c2lkZU5vZGVzID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBPdmVyT3V0c2lk
ZU5vZGVzKQorICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnRBZnRlcihub2RlLCBp
Z25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBmb3VuZFN0YXJ0UG9zaXRpb24gPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gc3RhcnQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChsb2dpY2FsVG9wRm9yUmVu
ZGVyZXIgPCBsb2dpY2FsVG9wRm9yUmVnaW9uICYmIHN0YXJ0c0Fib3ZlUmVnaW9uKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1RleHQoKSkgeyAvLyBUZXh0IGNyb3NzZXMgcmVn
aW9uIHRvcAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgVGV4dCBlbGVtZW50cywganVzdCBm
aW5kIHRoZSBsYXN0IHRleHRib3ggdGhhdCBpcyBjb250YWluZWQgaW5zaWRlIHRoZSByZWdpb24g
YW5kIHVzZSBpdHMgc3RhcnQoKSBvZmZzZXQgYXMgc3RhcnQgcG9zaXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVy
KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVu
ZGVyZXItPmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFRvcCArIGJveC0+bG9naWNhbEJvdHRv
bSgpIDwgbG9naWNhbFRvcEZvclJlZ2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChQb3NpdGlv
bih0b1RleHQobm9kZSksIGJveC0+c3RhcnQoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c3RhcnRzQWJvdmVSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9k
ZSBjcm9zc2VzIHJlZ2lvbiB0b3AKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGFsbCBlbGVt
ZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0IHRoZSBzdGFydCBwb3NpdGlvbiB0byBiZSBiZWZv
cmUgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQoUG9zaXRpb24obm9k
ZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbikpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgc3RhcnRzIGluc2lkZSByZWdpb24KKyAg
ICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBzdGFydCBpbnNpZGUgdGhlIHJlZ2lv
biwgc2V0IHRoZSBzdGFydCBwb3NpdGlvbiB0byBiZSBiZWZvcmUgdGhlbS4gSWYgd2UgZm91bmQg
b25lLCB3ZSB3aWxsIGp1c3Qgc2tpcCB0aGUgb3RoZXJzIHVudGlsCisgICAgICAgICAgICAgICAg
Ly8gdGhlIHJhbmdlIGlzIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBpZiAoc3RhcnRzQWJvdmVS
ZWdpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0QmVmb3JlKG5vZGUsIGlnbm9yZWRF
eGNlcHRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHNraXBPdmVyT3V0c2lkZU5vZGVzICA9IGZhbHNlOworICAgICAgICAgICAgZm91bmRTdGFydFBv
c2l0aW9uID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gZW5kIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAobG9naWNhbEJvdHRvbUZvclJlZ2lvbiA8IGxvZ2ljYWxCb3R0b21Gb3JSZW5kZXJlciAm
JiAoZW5kc0JlbG93UmVnaW9uIHx8ICghZW5kc0JlbG93UmVnaW9uICYmICFub2RlLT5pc0Rlc2Nl
bmRhbnRPZihsYXN0RW5kTm9kZSkpKSkgeworICAgICAgICAgICAgICAgIC8vIGZvciBUZXh0IGVs
ZW1lbnRzLCBqdXN0IGZpbmQganVzdCBmaW5kIHRoZSBsYXN0IHRleHRib3ggdGhhdCBpcyBjb250
YWluZWQgaW5zaWRlIHRoZSByZWdpb24gYW5kIHVzZSBpdHMgc3RhcnQoKStsZW4oKSBvZmZzZXQg
YXMgZW5kIHBvc2l0aW9uCisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1RleHQoKSkg
eyAvLyBUZXh0IGNyb3NzZXMgcmVnaW9uIGJvdHRvbQorICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyZXIpOworICAgICAgICAg
ICAgICAgICAgICBJbmxpbmVUZXh0Qm94KiBsYXN0Qm94ID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVuZGVyZXItPmZpcnN0VGV4dEJveCgp
OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKChvZmZzZXRUb3AgKyBib3gtPmxvZ2ljYWxUb3AoKSkgPCBsb2dpY2FsQm90dG9tRm9y
UmVnaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEJveCA9IGJveDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXN0Qm94KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsYXN0Qm94KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJhbmdlLT5zZXRFbmQoUG9zaXRpb24odG9UZXh0KG5vZGUpLCBsYXN0Qm94LT5zdGFydCgpICsg
bGFzdEJveC0+bGVuKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVuZHNCZWxvd1JlZ2lvbiA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsgLy8gbm9kZSBjcm9zc2VzIHJlZ2lvbiBib3R0b20KKyAgICAgICAgICAg
ICAgICAgICAgLy8gZm9yIGFsbCBlbGVtZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0IHRoZSBz
dGFydCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVpciBjaGlsZHJlbgorICAgICAgICAgICAgICAg
ICAgICByYW5nZS0+c2V0RW5kKFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0
ZXJDaGlsZHJlbikpOworICAgICAgICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9kZSBlbmRzIGluc2lkZSByZWdpb24KKyAg
ICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBlbmRzIGluc2lkZSB0aGUgcmVnaW9u
LCBzZXQgdGhlIGVuZCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVtCisgICAgICAgICAgICAgICAg
Ly8gYWxsb3cgdGhpcyBlbmQgcG9zaXRpb24gdG8gYmUgY2hhbmdlZCBvbmx5IGJ5IG90aGVyIGVs
ZW1lbnRzIHRoYXQgYXJlIG5vdCBkZXNjZW5kYW50cyBvZiB0aGUgY3VycmVudCBlbmQgbm9kZQor
ICAgICAgICAgICAgICAgIGlmIChlbmRzQmVsb3dSZWdpb24gfHwgKCFlbmRzQmVsb3dSZWdpb24g
JiYgIW5vZGUtPmlzRGVzY2VuZGFudE9mKGxhc3RFbmROb2RlKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmFuZ2UtPnNldEVuZEFmdGVyKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24pOworICAgICAg
ICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgbGFzdEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBpZiAoZm91bmRTdGFydFBvc2l0aW9uIHx8IHNraXBPdmVyT3V0
c2lkZU5vZGVzKQorICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZSk7CisgICAg
fQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmgKaW5kZXggYThiOGI1MS4uMzE5OTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtNzAsNiArNzAsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgTmFtZWRGbG93Q29udGVudE5vZGVzJiBjb250ZW50Tm9kZXMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnROb2RlczsgfQogICAgIGJvb2wgaGFzQ29udGVudE5vZGUoTm9k
ZSogY29udGVudE5vZGUpIGNvbnN0IHsgQVNTRVJUKGNvbnRlbnROb2RlKTsgcmV0dXJuIG1fY29u
dGVudE5vZGVzLmNvbnRhaW5zKGNvbnRlbnROb2RlKTsgfQogICAgIGJvb2wgaXNNYXJrZWRGb3JE
ZXN0cnVjdGlvbigpIGNvbnN0OworICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFu
Z2U+ID4mLCBjb25zdCBSZW5kZXJSZWdpb24qKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0TWFya0ZvckRlc3RydWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCmluZGV4IGQ4OTVjZDAuLjJiN2U0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYWludEluZm8u
aCIKKyNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveFJlZ2lvbkluZm8uaCIK
ICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCkBAIC0zMjgsMTMgKzMyOSwxOCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6ZGVsZXRlQWxsUmVu
ZGVyQm94UmVnaW9uSW5mbygpCiAgICAgbV9yZW5kZXJCb3hSZWdpb25JbmZvLmNsZWFyKCk7CiB9
CiAKLUxheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wT2ZGbG93VGhy
ZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBpZiAo
IW1faXNWYWxpZCB8fCAhbV9mbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAo
bV9mbG93VGhyZWFkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4g
Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpOwotICAgIHJldHVybiBmbG93VGhyZWFkUG9ydGlv
blJlY3QoKS54KCk7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgIWZsb3dUaHJlYWQoKSkKKyAgICAg
ICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgcmV0dXJuIGZsb3dUaHJlYWQoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QueSgpIDogcmVjdC54KCk7Cit9CisKK0xheW91
dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCB8fCAh
Zmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICByZXR1
cm4gZmxvd1RocmVhZCgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVjdC5tYXhZKCkg
OiByZWN0Lm1heFgoKTsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246OnNldFJlZ2lvbk9iamVjdHNS
ZWdpb25TdHlsZSgpCkBAIC01MzYsNCArNTQyLDEwIEBAIExheW91dFVuaXQgUmVuZGVyUmVnaW9u
OjptYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdAogICAgIHJldHVybiBtYXhQcmVmZXJy
ZWRMb2dpY2FsV2lkdGggKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CiB9CiAJCit2
b2lkIFJlbmRlclJlZ2lvbjo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdl
T2JqZWN0cykgY29uc3QKK3sKKyAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG5hbWVkRmxvdyA9
IHZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xsZXIoKS0+ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdp
dGhOYW1lKHN0eWxlKCktPnJlZ2lvblRocmVhZCgpKTsKKyAgICBuYW1lZEZsb3ctPmdldFJhbmdl
cyhyYW5nZU9iamVjdHMsIHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggZWUwNGVjYy4uM2Q5ZDVhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtNzgsOCArNzgsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRlbGV0ZUFsbFJlbmRlckJveFJlZ2lvbkluZm8oKTsKIAot
ICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0Owot
CiAgICAgYm9vbCBpc0ZpcnN0UmVnaW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0xhc3RSZWdpb24o
KSBjb25zdDsKIApAQCAtMTA0LDYgKzEwMiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlv
dXRVbml0IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdCBPVkVSUklE
RTsKICAgICAKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVj
dChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9t
T2ZGbG93VGhyZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OworICAgIExh
eW91dFVuaXQgbG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgp
KTsgfTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JGbG93VGhyZWFkQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChmbG93
VGhyZWFkUG9ydGlvblJlY3QoKSk7IH07CisKKyAgICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVm
UHRyPFJhbmdlPiA+JikgY29uc3Q7CisKICAgICAvLyBUaGlzIG1ldGhvZCByZXByZXNlbnRzIHRo
ZSBsb2dpY2FsIGhlaWdodCBvZiB0aGUgZW50aXJlIGZsb3cgdGhyZWFkIHBvcnRpb24gdXNlZCBi
eSB0aGUgcmVnaW9uIG9yIHNldC4KICAgICAvLyBGb3IgUmVuZGVyUmVnaW9ucyBpdCBtYXRjaGVz
IGxvZ2ljYWxQYWdpbmF0aW9uSGVpZ2h0KCksIGJ1dCBmb3Igc2V0cyBpdCBpcyB0aGUgaGVpZ2h0
IG9mIGFsbCB0aGUgcGFnZXMKICAgICAvLyBvciBjb2x1bW5zIGFkZGVkIHRvZ2V0aGVyLgo=
</data>
<flag name="commit-queue"
          id="175344"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163794</attachid>
            <date>2012-09-13 00:08:30 -0700</date>
            <delta_ts>2012-09-13 00:50:39 -0700</delta_ts>
            <desc>Some extraspace manages to enter somehow in the previous patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>88971</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNWM1M2NjLi5mZjQwNDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDkt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IEVsZW1lbnQuZ2V0UmVnaW9uRmxvd1JhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGdldFJlZ2lv
bkZsb3dSYW5nZXMgY2FsbC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZs
b3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50
LW5vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtY29udGVudC1ub2Rlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdl
cy1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1maXhlZC1wb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1ob3Jpei1idC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1pbmxpbmUtb25seS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHIu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LWxyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtdmVydC1ybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJiLWxyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1t
b2Rlcy1ybC1yYi1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGlu
Zy1tb2Rlcy10Yi1ybC1sci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
cmVzb3VyY2VzL2hlbHBlci5qczoKKyAgICAgICAgKGdldE5hbWUpOgorICAgICAgICAoZ2V0UmFu
Z2VBdCk6CisgICAgICAgIChjb21wYXJlQXJyYXlzKToKKwogMjAxMi0wOS0xMiAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgaGF2ZSBwcm9wZXJ0
eSBidXR0ZXJmbGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWFic29sdXRlLXBvcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U4Y2FhNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLWFic29sdXRlLXBvcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitbQ1NTUmVnaW9u
c10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBhYnNvbHV0ZSBwb3Np
dGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCx3cmFwcGVyLDFdCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1
dGUtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1hYnNvbHV0ZS1wb3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lNDc0MTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwKQEAgLTAsMCArMSwzNCBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IHBvc2l0aW9u
OiBhYnNvbHV0ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1m
bG93LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFi
c29sdXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9IndyYXBw
ZXIiPjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNs
YXNzPSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyBmb3IgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVtZW50cyIpOworICAgIHZhciByZWdpb24x
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByYW5nZTEgPSByZWdp
b24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJy
YW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwg
MCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9u
c0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNv
bnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmYwYTY3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jh
bmdlcyB3aXRoIG11bHRpcGxlIGNvbnRlbnQgbm9kZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwjdGV4
dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDIKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBl
ciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitQQVNTIEFycmF5IFt3cmFwcGVy
MiwwLHdyYXBwZXIyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyMiwwLHdyYXBwZXIyLDFdCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtY29udGVu
dC1ub2Rlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtY29udGVudC1ub2Rlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjY0MTUzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Z2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1jb250ZW50LW5vZGVzLmh0bWwKQEAgLTAsMCArMSw1MiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cisg
ICAgYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQt
c2l6ZTogNTBweDsgfQorICAgIC5ib3JkZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAg
ICAuZmxvdyB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTt9CisgICAgLmJsdWUge2JhY2tncm91
bmQtY29sb3I6IGxpZ2h0Ymx1ZTsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDt9CisgICAgI3Jl
Z2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA3
MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJraXQtZmxv
dy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDEyMHB4OyBsZWZ0OiAyMHB4OyB0
b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGNsYXNzPSJmbG93Ij5UZXh0
IG5vZGUuPC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwv
ZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBp
ZD0id3JhcHBlcjIiPjxkaXYgY2xhc3M9ImZsb3cgYmx1ZSI+PC9kaXY+PC9kaXY+CisgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIEltcGxlbWVudCBSZWdpb246OmdldFJlZ2lv
bkZsb3dSYW5nZXMgd2l0aCBtdWx0aXBsZSBjb250ZW50IG5vZGVzIik7CisgICAgdmFyIHJlZ2lv
bjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24y
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWcoIkZs
b3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0Iiwg
NF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJy
YXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDEpLCBbIndyYXBwZXIyIiwgMCwg
IndyYXBwZXIyIiwgMV0pOworCisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5
LW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNm
MzFiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1tDU1NSZWdpb25zXSBJbXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZv
ciBlbGVtZW50cyB3aXRoIGRpc3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVhayByYW5n
ZXMgYXQgZGlzcGxheTpub25lKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKzEKKzMK
KzUKK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBw
ZXIsMCx3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsd3JhcHBlciwxXQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXkt
bm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZGlzcGxheS1ub25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MWMyZmM4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWRpc3BsYXktbm9uZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGJv
ZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6
IDIwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgLmZs
b3cgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7fQorICAgICN3cmFwcGVyIHAge21hcmdpbjog
MDsgcGFkZGluZzogMDt9CisgICAgLm5vbmUge2Rpc3BsYXk6IG5vbmU7fQorICAgICNyZWdpb24x
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNzBweDsg
bGVmdDogMjBweDsgdG9wOiAyNTBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBjbGFz
cz0iZmxvdyI+PHA+MTwvcD48cCBjbGFzcz0ibm9uZSI+MjwvcD48cD4zPC9wPjxwIGNsYXNzPSJu
b25lIj40PC9wPjxwPjU8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNz
PSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBJ
bXBsZW1lbnQgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBlbGVtZW50cyB3aXRoIGRp
c3BsYXk6bm9uZSAoUmFuZ2Ugc2hvdWxkIG5vdCBicmVhayByYW5nZXMgYXQgZGlzcGxheTpub25l
KSIpOworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEi
KTsKKworICAgIGRlYnVnKCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtp
dEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVu
Z3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3Jh
cHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZsb3dz
KCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlzaWJp
bGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lv
bnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YWM0
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy1lbXB0eS1yZWdpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBA
CitbQ1NTUmVnaW9uc10gSW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3Ig
ZW1wdHkgcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Zsb3cgdGVzdAor
UEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFt3cmFwcGVyLDAsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLHdyYXBwZXIs
MV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZW1wdHktcmVnaW9ucy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNjk1OWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy1l
bXB0eS1yZWdpb25zLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBt
b25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogNTBweDsgfQorICAgIC5ib3Jk
ZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94IHsgLXdlYmtpdC1mbG93LWlu
dG86IGZsb3cxOyBoZWlnaHQ6IDUwcHg7IG1hcmdpbi10b3A6IDQwcHg7IGJhY2tncm91bmQtY29s
b3I6IGJsdWV9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRo
OiAyNTBweDsgaGVpZ2h0OiAzMHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVn
aW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYw
cHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93
LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9w
OiAzMDBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94Ij48L2Rpdj48L2Rp
dj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9
InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFz
cz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10g
SW1wbGVtZW50IFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgZW1wdHkgcmVnaW9ucyIp
OworICAgIHZhciByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsK
KyAgICB2YXIgcmVnaW9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7Cisg
ICAgdmFyIHJlZ2lvbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisg
ICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVn
aW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAw
KTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsid3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOwor
ICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAwKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lv
bnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKwor
ICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
NDAyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1y
ZWdpb24tZmxvdy1yYW5nZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NSZWdp
b25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5nZXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5nZTEu
bGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBb
d3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJh
bmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8g
W2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4dCBu
b2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEubGVu
Z3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFw
cGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEs
MSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDIs
d3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQor
UEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gx
LDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRd
IGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBl
ciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVn
aW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFycmF5
IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5n
ZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0byBb
I3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94
MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWZp
eGVkLXBvcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODdlYWVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWZpeGVkLXBvcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBA
CitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBm
aXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBB
cnJheSBbd3JhcHBlciwwLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCx3cmFwcGVy
LDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZml4ZWQtcG9zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1maXhlZC1wb3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iMzdhODUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwKQEAgLTAsMCArMSwzMyBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IHBvc2l0aW9u
OiBmaXhlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47IHRvcDogMjVweDsgbGVmdDogMjVweDsgfQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93
LWZyb206IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9IndyYXBwZXIi
PjxkaXYgaWQ9ImJveDEiPjwvZGl2PjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNz
PSJib3JkZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBkZWJ1ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1Jhbmdl
cyBmb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyIpOworICAgIHZhciByZWdpb24xID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsi
d3JhcHBlciIsIDAsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9uc0FuZEZs
b3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5bGUudmlz
aWJpbGl0eSA9ICJoaWRkZW4iOworfQorICAgIGhpZGVSZWdpb25zQW5kRmxvd3MoKTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaG9yaXotYnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZGE4ZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJh
bmdlcy1ob3Jpei1idC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorW0NTU1JlZ2lvbnNd
IFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3IgaG9yaXpvbnRhbC1idCBt
b2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVn
aW9ucworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQ
QVNTIHJhbmdlMy5sZW5ndGggaXMgMAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIs
MCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJv
eDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbYm94MSwxLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFw
cGVyLDFdCitBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2Nr
KQorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFd
IGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEK
K1BBU1MgQXJyYXkgW2JveDEsMSxib3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQor
UEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlz
IGVxdWFsIHRvIFtib3gxLDIsd3JhcHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJh
bmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwg
dG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJh
eSBbYm94MSwxLCN0ZXh0LDRdIGlzIGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFu
Z2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwg
dG8gWyN0ZXh0LDUsd3JhcHBlciwxXQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQg
d2lsbCBtb3ZlIGZyb20gcmVnaW9uMSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMg
MgorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxi
b3gxLDBdCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwj
dGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94
MSwyXSBpcyBlcXVhbCB0byBbI3RleHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMg
MQorUEFTUyBBcnJheSBbYm94MSwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFd
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMt
aG9yaXotYnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLWhvcml6LWJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Yjc5OGMxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQt
cmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwg
eyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idDsgfQorICAgIGJvZHkgeyBmb250
LWZhbWlseTogbW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0K
KyAgICAuYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7
fQorICAgICNib3gxIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgaGVpZ2h0OiAxMTBw
eDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7
IGhlaWdodDogMTBweDsgcGFkZGluZzogNXB4O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxv
dy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDcwcHg7IGxlZnQ6IDIwcHg7IHRv
cDogMjUwcHg7fQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0
aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3Jl
Z2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2
MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2
IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gxIj48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48
L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cisg
IDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdp
b24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NT
UmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBob3Jpem9u
dGFsLWJ0IG1vZGUiKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJhbmdlMSA9
IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0
aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKKyAgICBk
ZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAi
ZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
OworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJl
QXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7
CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAg
c2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMo
Z2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAgICByYW5n
ZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFs
dWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0
KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWcoIkFk
ZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7CisgICAg
dmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4iKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHROb2RlKTsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJh
bmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2
YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdl
QXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVn
aW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMs
IDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5jcmVhc2Ug
Zm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
d3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7CisgICAgcmFu
Z2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZh
bHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VB
dChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSBy
ZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdl
MiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndl
YmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMu
bGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksIFsi
I3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEgY29u
dGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMiKTsKKyAg
ICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAgYm94Mi5z
dHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxl
bmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndy
YXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIu
d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdl
Mi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwg
WyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwg
MCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhp
ZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0FuZEZs
b3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1vbmx5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LWlubGluZS1vbmx5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hY2EzNGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5n
ZXMgZm9yIGlubGluZSBlbGVtZW50cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Zs
b3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCx3
cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsd3JhcHBlciwxXQorUEFTUyByYW5nZTIu
bGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy1pbmxpbmUtb25seS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dl
dC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yM2E0NmM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtaW5saW5lLW9ubHkuaHRtbApAQCAt
MCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFw
cGVyIHsgZm9udC1zaXplOiAyMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlk
IHJlZDsgfQorICAgICNpbmxpbmVPbmx5IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3cxOyBiYWNr
Z3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7IGhlaWdodDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQor
ICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUwcHg7IGhl
aWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIgeyAtd2Vi
a2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBsZWZ0OiAy
MHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48c3BhbiBpZD0iaW5saW5l
T25seSI+PC9zcGFuPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0iYm9yZGVyIj48
L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9u
Rmxvd1JhbmdlcyBmb3IgaW5saW5lIGVsZW1lbnRzIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVzdCIp
OworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIndyYXBwZXIiLCAxXSk7Cisg
ICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hv
dWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDApOworCitmdW5jdGlvbiBoaWRlUmVnaW9u
c0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lv
bnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlj
MDU5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitbQ1NT
UmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzLiBUZXh0IGJyZWFr
cyBpbiB0d28gcmVnaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RleHQgbm9k
ZS4KK0Zsb3cgdGVzdAorUEFTUyByYW5nZTEubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBw
ZXIsMCwjdGV4dCw0XSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLCN0ZXh0LDRdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSx3cmFwcGVyLDFdIGlzIGVxdWFsIHRv
IFsjdGV4dCw1LHdyYXBwZXIsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0
LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZlcnQtbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjEzYjhjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1y
YW5nZXMtdGV4dC12ZXJ0LWxyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitbQ1NTUmVn
aW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGluIHZlcnRpY2FsLXJs
IG1vZGUuIFRleHQgYnJlYWtzIGludG8gdHdvIHJlZ2lvbnMKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitUZXh0IG5vZGUuCitGbG93IHRlc3QKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAx
CitQQVNTIEFycmF5IFt3cmFwcGVyLDAsI3RleHQsNF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCwj
dGV4dCw0XQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsd3Jh
cHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVyLDFdCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0LXZl
cnQtbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjU3YWQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxv
dy1yYW5nZXMtdGV4dC12ZXJ0LWxyLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJr
aXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsgfQorICAgIGJvZHkgeyBmb250LWZhbWlseTog
bW9ub3NwYWNlOyB9CisgICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDUwcHg7IH0KKyAgICAuYm9y
ZGVyIHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9CisgICAgI2JveCB7IC13ZWJraXQtZmxvdy1p
bnRvOiBmbG93MTt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdp
ZHRoOiA3MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAj
cmVnaW9uMiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdodDog
MjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMzAwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgIDxkaXYgaWQ9IndyYXBwZXIiPjxk
aXYgaWQ9ImJveCI+VGV4dCBub2RlLjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24xIiBj
bGFzcz0iYm9yZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+
PC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJl
Z2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBpbiB2ZXJ0aWNhbC1ybCBtb2RlLiBUZXh0IGJyZWFr
cyBpbnRvIHR3byByZWdpb25zIik7CisgICAgdmFyIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjIiKTsKKworCisgICAgZGVidWcoIkZsb3cgdGVzdCIpOworICAgIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJl
Z2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2Uy
LCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworCitmdW5jdGlvbiBoaWRlUmVnaW9u
c0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworfQorCisgICAgaGlkZVJlZ2lv
bnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlNzI5YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2Vz
LXRleHQuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFj
ZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiA1MHB4OyB9CisgICAgLmJvcmRlciB7IGJv
cmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3ggeyAtd2Via2l0LWZsb3ctaW50bzogZmxv
dzE7fQorICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogMjUw
cHg7IGhlaWdodDogNzBweDsgbGVmdDogMjBweDsgdG9wOiAyNTBweDt9CisgICAgI3JlZ2lvbjIg
eyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiA2MHB4OyBs
ZWZ0OiAyMHB4OyB0b3A6IDMwMHB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJi
b3giPlRleHQgbm9kZS48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJib3JkZXIiPjwvZGl2Pgor
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgZGVzY3JpcHRpb24oIltDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246Omdl
dFJlZ2lvbkZsb3dSYW5nZXMuIFRleHQgYnJlYWtzIGluIHR3byByZWdpb25zIik7CisgICAgdmFy
IHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciBy
ZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKworICAgIGRlYnVn
KCJGbG93IHRlc3QiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICIjdGV4
dCIsIDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFd
KTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKK30KKworICBoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1sci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzNjk2YgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246
OmdldFJlZ2lvbkZsb3dSYW5nZXMgZm9yIHZlcnRpY2FsLWxyIG1vZGUKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCitUZXh0IG5vZGUuCitFbXB0eSByZWdpb25zCitQQVNTIHJhbmdlMS5s
ZW5ndGggaXMgMAorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDAKK1BBU1MgcmFuZ2UzLmxlbmd0aCBp
cyAwCitGbG93IGFydGljbGUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFt3
cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMV0KK1BBU1MgcmFu
Z2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwxXSBpcyBlcXVhbCB0byBb
Ym94MSwxLGJveDEsMV0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gx
LDEsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbYm94MSwxLHdyYXBwZXIsMV0KK0FkZCB0ZXh0IG5v
ZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spCitQQVNTIHJhbmdlMS5sZW5n
dGggaXMgMQorUEFTUyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBw
ZXIsMCxib3gxLDFdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwx
LGJveDEsMl0gaXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGgg
aXMgMQorUEFTUyBBcnJheSBbYm94MSwyLHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMix3
cmFwcGVyLDFdCitJbmNyZWFzZSBmb250IHNpemUKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAxCitQ
QVNTIEFycmF5IFt3cmFwcGVyLDAsYm94MSwxXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEs
MV0KK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsI3RleHQsNF0g
aXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTMubGVuZ3RoIGlzIDEKK1BB
U1MgQXJyYXkgWyN0ZXh0LDUsd3JhcHBlciwxXSBpcyBlcXVhbCB0byBbI3RleHQsNSx3cmFwcGVy
LDFdCitNYWtlIGNoaWxkIGEgY29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdp
b24xIHRvIHJlZ2lvbjMKK1BBU1MgcmFuZ2UxLmxlbmd0aCBpcyAyCitQQVNTIEFycmF5IFt3cmFw
cGVyLDAsYm94MSwwXSBpcyBlcXVhbCB0byBbd3JhcHBlciwwLGJveDEsMF0KK1BBU1MgQXJyYXkg
W2JveDEsMSwjdGV4dCw0XSBpcyBlcXVhbCB0byBbYm94MSwxLCN0ZXh0LDRdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbI3RleHQsNSxib3gxLDJdIGlzIGVxdWFsIHRvIFsj
dGV4dCw1LGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gx
LDAsYm94MSwxXSBpcyBlcXVhbCB0byBbYm94MSwwLGJveDEsMV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LWxyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0ZWYyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZl
cnQtbHIuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBl
ci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2Rl
OiB2ZXJ0aWNhbC1scjsgfQorICAgIGJvZHkgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9Cisg
ICAgI3dyYXBwZXIgeyBmb250LXNpemU6IDMwcHg7IH0KKyAgICAuYm9yZGVyIHsgYm9yZGVyOiAx
cHggc29saWQgcmVkOyB9CisgICAgI2FydGljbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJs
dWU7IHdpZHRoOiAxMzVweDsgcGFkZGluZzogMTBweDt9CisgICAgI2JveDEgeyBiYWNrZ3JvdW5k
LWNvbG9yOiBsaWdodGdyZWVuOyB3aWR0aDogMTEwcHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNi
b3gyIHsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3aWR0aDogMTBweDsgcGFkZGluZzogNXB4
O30KKyAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDcwcHg7
IGhlaWdodDogMjUwcHg7IGxlZnQ6IDIwcHg7IHRvcDogMjUwcHg7fQorICAgICNyZWdpb24yIHsg
LXdlYmtpdC1mbG93LWZyb206IGZsb3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVm
dDogMjBweDsgdG9wOiAzMDBweDt9CisgICAgI3JlZ2lvbjMgeyAtd2Via2l0LWZsb3ctZnJvbTog
ZmxvdzE7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDM1MHB4
O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorICA8ZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJhcnRpY2xlIj48ZGl2IGlkPSJib3gx
Ij48ZGl2IGlkPSJib3gyIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icmVn
aW9uMSIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJi
b3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0iYm9yZGVyIj48L2Rpdj4K
KyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIGRlc2NyaXB0aW9uKCJbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpn
ZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1sciBtb2RlIik7CisgICAgdmFyIHJlZ2lv
bjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAgIHZhciByZWdpb24y
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICB2YXIgcmVnaW9uMyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIik7CisKKyAgICBkZWJ1ZygiRW1wdHkg
cmVnaW9ucyIpOworICAgIHZhciByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMCk7CisgICAg
dmFyIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UzID0gcmVn
aW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygi
cmFuZ2UzLmxlbmd0aCIsIDApOworCisgICAgZGVidWcoIkZsb3cgYXJ0aWNsZSIpOworICAgIHZh
ciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFydGljbGUiKTsKKyAgICBhcnRp
Y2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cxIjsKKyAgICByYW5nZTEgPSByZWdpb24x
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCks
IFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gx
IiwgMSwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAxLCAid3Jh
cHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJBZGQgdGV4dCBub2RlIHRvIHJlZ2lvbjIgKGNyZWF0
ZXMgYW5vbnltb3VzIGJsb2NrKSIpOworICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCJUZXh0IG5vZGUuIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJv
eDEiKS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0
aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBbIndyYXBw
ZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7
CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJi
b3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgIFsiYm94MSIsIDIsICJ3cmFwcGVyIiwg
MV0pOworCisgICAgZGVidWcoIkluY3JlYXNlIGZvbnQgc2l6ZSIpOworICAgIHZhciB3cmFwcGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndyYXBwZXIiKTsKKyAgICB3cmFwcGVyLnN0eWxl
LmZvbnRTaXplID0gIjQwcHgiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsK
KyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwg
ImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiI3RleHQiLCA0
XSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7Cisg
ICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJh
eXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBbIiN0ZXh0IiwgNSwgIndyYXBwZXIiLCAxXSk7CisK
KyAgICBkZWJ1ZygiTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZy
b20gcmVnaW9uMSB0byByZWdpb24zIik7CisgICAgdmFyIGJveDIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYm94MicpOworICAgIGJveDIuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAiZmxvdzEi
OworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAwXSk7CisgICAg
Y29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MSIsIDEsICIjdGV4dCIs
IDRdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiI3RleHQiLCA1LCAiYm94MSIsIDJdKTsKKyAg
ICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRS
YW5nZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDAsICJib3gxIiwgMV0pOworCitmdW5jdGlvbiBo
aWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworfQorCisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtcmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmM4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0LXJsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQyIEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpn
ZXRSZWdpb25GbG93UmFuZ2VzIGZvciB2ZXJ0aWNhbC1ybCBtb2RlCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworVGV4dCBub2RlLgorRW1wdHkgcmVnaW9ucworUEFTUyByYW5nZTEubGVu
Z3RoIGlzIDAKK1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAwCitQQVNTIHJhbmdlMy5sZW5ndGggaXMg
MAorRmxvdyBhcnRpY2xlCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbd3Jh
cHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFdCitQQVNTIHJhbmdl
Mi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMV0gaXMgZXF1YWwgdG8gW2Jv
eDEsMSxib3gxLDFdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwx
LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gW2JveDEsMSx3cmFwcGVyLDFdCitBZGQgdGV4dCBub2Rl
IHRvIHJlZ2lvbjIgKGNyZWF0ZXMgYW5vbnltb3VzIGJsb2NrKQorUEFTUyByYW5nZTEubGVuZ3Ro
IGlzIDEKK1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVy
LDAsYm94MSwxXQorUEFTUyByYW5nZTIubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgW2JveDEsMSxi
b3gxLDJdIGlzIGVxdWFsIHRvIFtib3gxLDEsYm94MSwyXQorUEFTUyByYW5nZTMubGVuZ3RoIGlz
IDEKK1BBU1MgQXJyYXkgW2JveDEsMix3cmFwcGVyLDFdIGlzIGVxdWFsIHRvIFtib3gxLDIsd3Jh
cHBlciwxXQorSW5jcmVhc2UgZm9udCBzaXplCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFd
CitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLCN0ZXh0LDRdIGlz
IGVxdWFsIHRvIFtib3gxLDEsI3RleHQsNF0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNT
IEFycmF5IFsjdGV4dCw1LHdyYXBwZXIsMV0gaXMgZXF1YWwgdG8gWyN0ZXh0LDUsd3JhcHBlciwx
XQorTWFrZSBjaGlsZCBhIGNvbnRlbnQgbm9kZSwgc28gaXQgd2lsbCBtb3ZlIGZyb20gcmVnaW9u
MSB0byByZWdpb24zCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFTUyBBcnJheSBbd3JhcHBl
ciwwLGJveDEsMF0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDBdCitQQVNTIEFycmF5IFti
b3gxLDEsI3RleHQsNF0gaXMgZXF1YWwgdG8gW2JveDEsMSwjdGV4dCw0XQorUEFTUyByYW5nZTIu
bGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkgWyN0ZXh0LDUsYm94MSwyXSBpcyBlcXVhbCB0byBbI3Rl
eHQsNSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSww
LGJveDEsMV0gaXMgZXF1YWwgdG8gW2JveDEsMCxib3gxLDFdCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMTE1NGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy12ZXJ0
LXJsLmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTog
dmVydGljYWwtcmw7IH0KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAg
ICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4
IHNvbGlkIHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVl
OyB3aWR0aDogMTM1cHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gxIHsgYmFja2dyb3VuZC1j
b2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDExMHB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94
MiB7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lkdGg6IDEwcHg7IHBhZGRpbmc6IDVweDt9
CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiA3MHB4OyBo
ZWlnaHQ6IDI1MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13
ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDYwcHg7IGhlaWdodDogMjUwcHg7IGxlZnQ6
IDIwcHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZs
b3cxOyB3aWR0aDogNjBweDsgaGVpZ2h0OiAyNTBweDsgbGVmdDogMjBweDsgdG9wOiAzNTBweDt9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+
PGRpdiBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lv
bjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9y
ZGVyIj48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cisg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0
UmVnaW9uRmxvd1JhbmdlcyBmb3IgdmVydGljYWwtcmwgbW9kZSIpOworICAgIHZhciByZWdpb24x
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICB2YXIgcmVnaW9uMiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24yIik7CisgICAgdmFyIHJlZ2lvbjMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworCisgICAgZGVidWcoIkVtcHR5IHJl
Z2lvbnMiKTsKKyAgICB2YXIgcmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDApOworICAgIHZh
ciByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91
bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMCk7CisgICAgdmFyIHJhbmdlMyA9IHJlZ2lv
bjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMy5sZW5ndGgiLCAwKTsKKworICAgIGRlYnVnKCJGbG93IGFydGljbGUiKTsKKyAgICB2YXIg
YXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRpY2xlIik7CisgICAgYXJ0aWNs
ZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Ux
Lmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBb
IndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdl
dFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3Ro
IiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIs
IDEsICJib3gxIiwgMV0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxv
d1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAg
ICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMSwgIndyYXBw
ZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiQWRkIHRleHQgbm9kZSB0byByZWdpb24yIChjcmVhdGVz
IGFub255bW91cyBibG9jaykiKTsKKyAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiVGV4dCBub2RlLiIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3gx
IikuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0
UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgi
LCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVy
IiwgMCwgImJveDEiLCAxXSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25G
bG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94
MSIsIDJdKTsKKyAgICByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCksICBbImJveDEiLCAyLCAid3JhcHBlciIsIDFd
KTsKKworICAgIGRlYnVnKCJJbmNyZWFzZSBmb250IHNpemUiKTsKKyAgICB2YXIgd3JhcHBlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cmFwcGVyIik7CisgICAgd3JhcHBlci5zdHlsZS5m
b250U2l6ZSA9ICI0MHB4IjsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZs
b3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7Cisg
ICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJi
b3gxIiwgMV0pOworICAgIHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0p
OworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlz
KGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyIjdGV4dCIsIDUsICJ3cmFwcGVyIiwgMV0pOworCisg
ICAgZGVidWcoIk1ha2UgY2hpbGQgYSBjb250ZW50IG5vZGUsIHNvIGl0IHdpbGwgbW92ZSBmcm9t
IHJlZ2lvbjEgdG8gcmVnaW9uMyIpOworICAgIHZhciBib3gyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2JveDInKTsKKyAgICBib3gyLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3cxIjsK
KyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBz
aG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFycmF5cyhn
ZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMF0pOworICAgIGNv
bXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDEiLCAxLCAiI3RleHQiLCA0
XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7Cisg
ICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJh
eXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbIiN0ZXh0IiwgNSwgImJveDEiLCAyXSk7CisgICAg
cmFuZ2UzID0gcmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTMsIDApLCBbImJveDEiLCAwLCAiYm94MSIsIDFdKTsKKworCitmdW5jdGlvbiBo
aWRlUmVnaW9uc0FuZEZsb3dzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b24xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24yIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24zIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OworfQorCitoaWRlUmVnaW9uc0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ct
cmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1s
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwNjlm
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9u
LWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTUgQEAKK1tDU1NSZWdpb25zXSBUZXN0IGZvciBSZWdpb246OmdldFJlZ2lvbkZsb3dSYW5n
ZXMgZm9yIG1peGVkIHZlcnRpY2FsIG1vZGVzCitQQVNTIHJhbmdlMS5sZW5ndGggaXMgMgorUEFT
UyBBcnJheSBbd3JhcHBlciwwLGJveDEsMV0gaXMgZXF1YWwgdG8gW3dyYXBwZXIsMCxib3gxLDFd
CitQQVNTIEFycmF5IFtib3gzLDEsYm94MywyXSBpcyBlcXVhbCB0byBbYm94MywxLGJveDMsMl0K
K1BBU1MgcmFuZ2UyLmxlbmd0aCBpcyAxCitQQVNTIEFycmF5IFtib3gxLDEsYm94MSwyXSBpcyBl
cXVhbCB0byBbYm94MSwxLGJveDEsMl0KK1BBU1MgcmFuZ2UzLmxlbmd0aCBpcyAxCitQQVNTIEFy
cmF5IFtib3gxLDIsYm94MywxXSBpcyBlcXVhbCB0byBbYm94MSwyLGJveDMsMV0KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSG9yaXpvbnRhbCBUQgor
WAorVmVydGljYWwgTFJIb3Jpem9udGFsIEJUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtcmwtcmItbHIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdy
aXRpbmctbW9kZXMtcmwtcmItbHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44Njk4MmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy1ybC1yYi1sci5odG1sCkBAIC0w
LDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwgeyAtd2Vi
a2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwgO30KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsgfQorICAgICN3cmFwcGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJv
cmRlciB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfQorICAgICNib3gxIHsgLXdlYmtpdC1mbG93
LWludG86IGZsb3c7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9CisgICAgI2JveDExIHsgYmFj
a2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbjsgd2lkdGg6IDMwcHg7IG1hcmdpbi1yaWdodDogNzBw
eDt9CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDIwMHB4
OyBoZWlnaHQ6IDQwMHB4OyAgfQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZs
b3c7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA0MDBweDsgIH0KKyAgICAjcmVnaW9uMyB7IC13ZWJr
aXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7IGhlaWdodDogNDAwcHg7ICB9CisgICAg
I2JveDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC10YjsgYmFja2dyb3VuZC1j
b2xvcjogZ3JleTsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDQwMHB4O30KKyAgICAjYm94MjIgeyBo
ZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfQorICAg
ICNib3gzIHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyAgYmFja2dyb3VuZC1j
b2xvcjogbGlnaHRibHVlOyB3aWR0aDogMTUwcHg7IGhlaWdodDogNDAwcHg7fQorICAgICNib3g0
IHsgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7IGJhY2tncm91bmQtY29sb3I6
IHllbGxvdzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogMjAwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsg
dG9wOiAxMDBweDsgbGVmdDogMjBweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDwhLS1kaXYgaWQ9IndyYXBwZXIiPjxk
aXYgaWQ9ImJveDEiPjxkaXYgaWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5WZXJ0IFJM
PC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydCBMUjwvZGl2PjxkaXYgaWQ9ImJveDQiPkhvcml6b250
YWwgQlQ8L2Rpdj48L2Rpdi0tPgorCisgICAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYm94
MSI+PGRpdiBpZD0iYm94MTEiPjwvZGl2PjxkaXYgaWQ9ImJveDIiPkhvcml6b250YWwgVEI8ZGl2
IGlkPSJib3gyMiI+WDwvZGl2PjwvZGl2PjxkaXYgaWQ9ImJveDMiPlZlcnRpY2FsIExSPGRpdiBp
ZD0iYm94NCI+SG9yaXpvbnRhbCBCVDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PgorICAgIDxkaXYg
aWQ9InJlZ2lvbjEiIGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjIi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjMiIGNsYXNzPSJib3Jk
ZXIiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBkZWJ1
ZygiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVnaW9uRmxvd1JhbmdlcyBmb3Ig
bWl4ZWQgdmVydGljYWwgbW9kZXMiKTsKKyAgICByZWdpb24xID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlZ2lvbjEiKTsKKyAgICByZWdpb24yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjIiKTsKKyAgICByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjMiKTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsK
KyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMik7CisgICAgY29tcGFyZUFy
cmF5cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOwor
ICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDEpLCBbImJveDMiLCAxLCAiYm94
MyIsIDJdKTsKKyAgICByYW5nZTIgPSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFy
ZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMiwgMCksIFsiYm94MSIsIDEsICJib3gxIiwgMl0pOwor
ICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNo
b3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdl
dFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gxIiwgMiwgImJveDMiLCAxXSk7CisKK2Z1bmN0aW9u
IGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
Z2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7Cit9CisgICAgaGlkZVJlZ2lvbnNBbmRGbG93cygpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1m
bG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXdyaXRpbmctbW9kZXMtdGIt
cmwtbHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIz
ZTU5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitbQ1NTUmVnaW9uc10gVGVzdCBmb3IgUmVnaW9uOjpnZXRSZWdpb25GbG93
UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcworUEFTUyByYW5nZTEubGVuZ3RoIGlzIDIK
K1BBU1MgQXJyYXkgW3dyYXBwZXIsMCxib3gxLDFdIGlzIGVxdWFsIHRvIFt3cmFwcGVyLDAsYm94
MSwxXQorUEFTUyBBcnJheSBbYm94MywxLGJveDMsMl0gaXMgZXF1YWwgdG8gW2JveDMsMSxib3gz
LDJdCitQQVNTIHJhbmdlMi5sZW5ndGggaXMgMQorUEFTUyBBcnJheSBbYm94MSwxLGJveDEsMl0g
aXMgZXF1YWwgdG8gW2JveDEsMSxib3gxLDJdCitQQVNTIHJhbmdlMy5sZW5ndGggaXMgMQorUEFT
UyBBcnJheSBbYm94MSwyLGJveDMsMV0gaXMgZXF1YWwgdG8gW2JveDEsMixib3gzLDFdCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1ZlcnRpY2FsIFJM
CitYCitWZXJ0aWNhbCBMUlkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rlcy10Yi1ybC1sci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtd3JpdGluZy1tb2Rl
cy10Yi1ybC1sci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYmRi
MTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lv
bi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXRiLXJsLWxyLmh0bWwKQEAgLTAsMCArMSw1NyBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2hlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7IGZvbnQtZmFtaWx5OiBt
b25vc3BhY2U7IH0KKyAgICAjd3JhcHBlciB7IGZvbnQtc2l6ZTogMzBweDsgfQorICAgIC5ib3Jk
ZXIgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0KKyAgICAjYm94MSB7IC13ZWJraXQtZmxvdy1p
bnRvOiBmbG93OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICNib3gxMSB7IGJhY2tn
cm91bmQtY29sb3I6IGxpZ2h0Z3JlZW47IGhlaWdodDogMzBweDsgbWFyZ2luLXRvcDogNzBweDt9
CisgICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lkdGg6IDQwMHB4OyBo
ZWlnaHQ6IDIwMHB4OyAgfQorICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7
IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDsgIH0KKyAgICAjcmVnaW9uMyB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93OyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAwcHg7ICB9CisgICAgI2Jv
eDIgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IGJhY2tncm91bmQtY29sb3I6
IGdyZXk7IGhlaWdodDogMTUwcHg7IHdpZHRoOiA0MDBweDt9CisgICAgI2JveDIyIHsgaGVpZ2h0
OiAzMHB4OyB3aWR0aDogMzBweDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH0KKyAgICAjYm94
MyB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgYmFja2dyb3VuZC1jb2xvcjog
bGlnaHRibHVlOyB3aWR0aDogNDAwcHg7IGhlaWdodDogMTUwcHg7fQorICAgICNib3g0IHsgLXdl
YmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7IGJhY2tncm91bmQtY29sb3I6IHllbGxv
dzsgaGVpZ2h0OiA2MHB4OyB3aWR0aDogNjBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIw
cHg7IGxlZnQ6IDIwcHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8IS0tZGl2IGlkPSJ3cmFwcGVyIj48ZGl2IGlkPSJi
b3gxIj48ZGl2IGlkPSJib3gxMSI+PC9kaXY+PGRpdiBpZD0iYm94MiI+VmVydCBSTDwvZGl2Pjxk
aXYgaWQ9ImJveDMiPlZlcnQgTFI8L2Rpdj48ZGl2IGlkPSJib3g0Ij5Ib3Jpem9udGFsIEJUPC9k
aXY+PC9kaXYtLT4KKworICAgIDxkaXYgaWQ9IndyYXBwZXIiPjxkaXYgaWQ9ImJveDEiPjxkaXYg
aWQ9ImJveDExIj48L2Rpdj48ZGl2IGlkPSJib3gyIj5WZXJ0aWNhbCBSTDxkaXYgaWQ9ImJveDIy
Ij5YPC9kaXY+PC9kaXY+PGRpdiBpZD0iYm94MyI+VmVydGljYWwgTFI8ZGl2IGlkPSJib3g0Ij5Z
PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9ImJv
cmRlciI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9ImJvcmRlciI+PC9kaXY+
CisgICAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJbQ1NTUmVnaW9uc10gVGVzdCBm
b3IgUmVnaW9uOjpnZXRSZWdpb25GbG93UmFuZ2VzIGZvciBtaXhlZCB2ZXJ0aWNhbCBtb2RlcyIp
OworICAgIHJlZ2lvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpOworICAg
IHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgIHJlZ2lv
bjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMyIpOworICAgIHJhbmdlMSA9IHJl
Z2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8o
InJhbmdlMS5sZW5ndGgiLCAyKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2Ux
LCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAxXSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRS
YW5nZUF0KHJhbmdlMSwgMSksIFsiYm94MyIsIDEsICJib3gzIiwgMl0pOworICAgIHJhbmdlMiA9
IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFu
Z2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0gcmVnaW9uMy53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Uz
Lmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTMsIDApLCBb
ImJveDEiLCAyLCAiYm94MyIsIDFdKTsKKworZnVuY3Rpb24gaGlkZVJlZ2lvbnNBbmRGbG93cygp
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIpLnN0eWxlLnZpc2liaWxp
dHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uMyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKK30KKyAgICBoaWRlUmVnaW9u
c0FuZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTI4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy5odG1sCkBAIC0w
LDAgKzEsMTA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KKyAgICBib2R5IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQorICAgICN3cmFw
cGVyIHsgZm9udC1zaXplOiAzMHB4OyB9CisgICAgLmJvcmRlciB7IGJvcmRlcjogMXB4IHNvbGlk
IHJlZDsgfQorICAgICNhcnRpY2xlIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyBoZWln
aHQ6IDEzNXB4OyBwYWRkaW5nOiAxMHB4O30KKyAgICAjYm94MSB7IGJhY2tncm91bmQtY29sb3I6
IGxpZ2h0Z3JlZW47IGhlaWdodDogMTEwcHg7IHBhZGRpbmc6IDEwcHg7fQorICAgICNib3gyIHsg
YmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyBoZWlnaHQ6IDEwcHg7IHBhZGRpbmc6IDVweDt9Cisg
ICAgI3JlZ2lvbjEgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzE7IHdpZHRoOiAyNTBweDsgaGVp
Z2h0OiA3MHB4OyBsZWZ0OiAyMHB4OyB0b3A6IDI1MHB4O30KKyAgICAjcmVnaW9uMiB7IC13ZWJr
aXQtZmxvdy1mcm9tOiBmbG93MTsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDYwcHg7IGxlZnQ6IDIw
cHg7IHRvcDogMzAwcHg7fQorICAgICNyZWdpb24zIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3cx
OyB3aWR0aDogMjUwcHg7IGhlaWdodDogNjBweDsgbGVmdDogMjBweDsgdG9wOiAzNTBweDt9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KyAgPGRpdiBpZD0id3JhcHBlciI+PGRpdiBpZD0iYXJ0aWNsZSI+PGRpdiBpZD0iYm94MSI+PGRp
diBpZD0iYm94MiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InJlZ2lvbjEi
IGNsYXNzPSJib3JkZXIiPjwvZGl2PgorICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0iYm9yZGVy
Ij48L2Rpdj4KKyAgPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9ImJvcmRlciI+PC9kaXY+CisgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICBkZXNjcmlwdGlvbigiW0NTU1JlZ2lvbnNdIFRlc3QgZm9yIFJlZ2lvbjo6Z2V0UmVn
aW9uRmxvd1Jhbmdlcy4iKTsKKyAgICB2YXIgcmVnaW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb24xIik7CisgICAgdmFyIHJlZ2lvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uMiIpOworICAgIHZhciByZWdpb24zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlZ2lvbjMiKTsKKworICAgIGRlYnVnKCJFbXB0eSByZWdpb25zIik7CisgICAgdmFyIHJhbmdl
MSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1
YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAwKTsKKyAgICB2YXIgcmFuZ2UyID0gcmVnaW9uMi53ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxl
bmd0aCIsIDApOworICAgIHZhciByYW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dS
YW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMCk7CisKKyAg
ICBkZWJ1ZygiRmxvdyBhcnRpY2xlIik7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8g
PSAiZmxvdzEiOworICAgIHJhbmdlMSA9IHJlZ2lvbjEud2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMS5sZW5ndGgiLCAxKTsKKyAgICBjb21w
YXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UxLCAwKSwgWyJ3cmFwcGVyIiwgMCwgImJveDEiLCAx
XSk7CisgICAgcmFuZ2UyID0gcmVnaW9uMi53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7Cisg
ICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2UyLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJh
eXMoZ2V0UmFuZ2VBdChyYW5nZTIsIDApLCBbImJveDEiLCAxLCAiYm94MSIsIDFdKTsKKyAgICBy
YW5nZTMgPSByZWdpb24zLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRF
dmFsdWF0ZVRvKCJyYW5nZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5n
ZUF0KHJhbmdlMywgMCksIFsiYm94MSIsIDEsICJ3cmFwcGVyIiwgMV0pOworCisgICAgZGVidWco
IkFkZCB0ZXh0IG5vZGUgdG8gcmVnaW9uMiAoY3JlYXRlcyBhbm9ueW1vdXMgYmxvY2spIik7Cisg
ICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRleHQgbm9kZS4iKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MSIpLmFwcGVuZENoaWxkKHRleHROb2Rl
KTsKKyAgICByYW5nZTEgPSByZWdpb24xLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAg
ICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5nZTEubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5
cyhnZXRSYW5nZUF0KHJhbmdlMSwgMCksIFsid3JhcHBlciIsIDAsICJib3gxIiwgMV0pOworICAg
IHJhbmdlMiA9IHJlZ2lvbjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInJhbmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJh
bmdlQXQocmFuZ2UyLCAwKSwgWyJib3gxIiwgMSwgImJveDEiLCAyXSk7CisgICAgcmFuZ2UzID0g
cmVnaW9uMy53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVU
bygicmFuZ2UzLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5n
ZTMsIDApLCAgWyJib3gxIiwgMiwgIndyYXBwZXIiLCAxXSk7CisKKyAgICBkZWJ1ZygiSW5jcmVh
c2UgZm9udCBzaXplIik7CisgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgid3JhcHBlciIpOworICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSAiNDBweCI7CisgICAg
cmFuZ2UxID0gcmVnaW9uMS53ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygicmFuZ2UxLmxlbmd0aCIsIDEpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFu
Z2VBdChyYW5nZTEsIDApLCBbIndyYXBwZXIiLCAwLCAiYm94MSIsIDFdKTsKKyAgICByYW5nZTIg
PSByZWdpb24yLndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJyYW5nZTIubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJh
bmdlMiwgMCksIFsiYm94MSIsIDEsICIjdGV4dCIsIDRdKTsKKyAgICByYW5nZTMgPSByZWdpb24z
LndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyYW5n
ZTMubGVuZ3RoIiwgMSk7CisgICAgY29tcGFyZUFycmF5cyhnZXRSYW5nZUF0KHJhbmdlMywgMCks
IFsiI3RleHQiLCA1LCAid3JhcHBlciIsIDFdKTsKKworICAgIGRlYnVnKCJNYWtlIGNoaWxkIGEg
Y29udGVudCBub2RlLCBzbyBpdCB3aWxsIG1vdmUgZnJvbSByZWdpb24xIHRvIHJlZ2lvbjMiKTsK
KyAgICB2YXIgYm94MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyk7CisgICAgYm94
Mi5zdHlsZS53ZWJraXRGbG93SW50byA9ICJmbG93MSI7CisgICAgcmFuZ2UxID0gcmVnaW9uMS53
ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7CisgICAgc2hvdWxkRXZhbHVhdGVUbygicmFuZ2Ux
Lmxlbmd0aCIsIDIpOworICAgIGNvbXBhcmVBcnJheXMoZ2V0UmFuZ2VBdChyYW5nZTEsIDApLCBb
IndyYXBwZXIiLCAwLCAiYm94MSIsIDBdKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQo
cmFuZ2UxLCAxKSwgWyJib3gxIiwgMSwgIiN0ZXh0IiwgNF0pOworICAgIHJhbmdlMiA9IHJlZ2lv
bjIud2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJh
bmdlMi5sZW5ndGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UyLCAw
KSwgWyIjdGV4dCIsIDUsICJib3gxIiwgMl0pOworICAgIHJhbmdlMyA9IHJlZ2lvbjMud2Via2l0
R2V0UmVnaW9uRmxvd1JhbmdlcygpOworICAgIHNob3VsZEV2YWx1YXRlVG8oInJhbmdlMy5sZW5n
dGgiLCAxKTsKKyAgICBjb21wYXJlQXJyYXlzKGdldFJhbmdlQXQocmFuZ2UzLCAwKSwgWyJib3gx
IiwgMCwgImJveDEiLCAxXSk7CisKK2Z1bmN0aW9uIGhpZGVSZWdpb25zQW5kRmxvd3MoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cit9CisKKyAgICBoaWRlUmVnaW9uc0Fu
ZEZsb3dzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKaW5kZXggOWZlYjFhMS4uMWY4ZTJjNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMKQEAgLTE2MCwz
ICsxNjAsMzkgQEAgZnVuY3Rpb24gYXNzZXJ0KGV4cHJlc3Npb24sIGZhaWxNZXNzYWdlKQogewog
ICAgIGV4cHJlc3Npb24gPyBsb2dQYXNzTWVzc2FnZSgiIikgOiBsb2dGYWlsTWVzc2FnZShmYWls
TWVzc2FnZSk7CiB9CisKKy8vIHVzZWQgYnkgZ2V0UmVnaW9uRmxvd1JhbmdlcyB0ZXN0cworZnVu
Y3Rpb24gZ2V0TmFtZShub2RlKSB7CisgIGlmICghbm9kZSkgcmV0dXJuICJ1bmRlZmluZWQiOwor
ICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBUZXh0IG5vZGUKKyAgICByZXR1cm4gIiN0ZXh0
IjsKKyAgLy8gYWxsIHRoZSBvdGhlcnMgc2hvdWxkIGhhdmUgYW4gaWQKKyAgcmV0dXJuIG5vZGUu
aWQ7Cit9CisKK2Z1bmN0aW9uIGdldFJhbmdlQXQoYXJyUmFuZ2UsIGluZGV4KSB7CisgIGlmIChp
bmRleCA8IGFyclJhbmdlLmxlbmd0aCkKKyAgICByZXR1cm4gW2dldE5hbWUoYXJyUmFuZ2VbaW5k
ZXhdLnN0YXJ0Q29udGFpbmVyKSwgYXJyUmFuZ2VbaW5kZXhdLnN0YXJ0T2Zmc2V0LCBnZXROYW1l
KGFyclJhbmdlW2luZGV4XS5lbmRDb250YWluZXIpLCBhcnJSYW5nZVtpbmRleF0uZW5kT2Zmc2V0
XTsKKyAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9uIGNvbXBhcmVBcnJheXMoY3VycmVudCwg
ZXhwZWN0ZWQpIHsKKyAgICB0cnkgeworICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJOdWxsIG9iamVjdC4gRXhwZWN0ZWQgWyIgKyBleHBlY3Rl
ZC50b1N0cmluZygpICsgIl0gd2FzIG51bGwiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoY3VycmVudC5sZW5ndGggIT09IGV4cGVjdGVkLmxlbmd0aCkgewor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiQXJyYXkgbGVuZ3RoIGRpZmZlcnMuIEV4cGVjdGVkIFsi
ICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdIHdhcyBbIiArIGN1cnJlbnQudG9TdHJpbmcoKSAr
ICJdIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGN1cnJlbnRb
aV0gIT09IGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0
ZWQgWyIgICsgZXhwZWN0ZWQudG9TdHJpbmcoKSArICJdLiBXYXMgWyIgKyBjdXJyZW50LnRvU3Ry
aW5nKCkgKyAiXSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICB9IGNhdGNoIChleCkgeworICAgICAgICB0ZXN0RmFpbGVkKGN1cnJlbnQgKyAiIHRocmV3IGV4
Y2VwdGlvbiAiICsgZXgpOworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJBcnJheSBbIiAgKyBleHBl
Y3RlZC50b1N0cmluZygpICsgIl0gaXMgZXF1YWwgdG8gWyIgKyBjdXJyZW50LnRvU3RyaW5nKCkg
KyAiXSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ5MDE5YzMuLjI3YmMyODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2MCBAQAorMjAxMi0wOS0wNiAgUmF1bCBIdWRlYSAgPHJodWRlYUBhZG9iZS5jb20+
CisKKyAgICAgICAgW0NTU1JlZ2lvbnNdW0NTU09NXSBJbXBsZW1lbnQgRWxlbWVudC5nZXRSZWdp
b25GbG93UmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODQ5MworCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAg
IEltcGxlbWVudCB0aGUgZ2V0UmVnaW9uRmxvd1JhbmdlcyBmdW5jdGlvbiBmcm9tIHRoZSBDU1Mg
UmVnaW9ucyBzcGVjLiBJdCBpcyBpbXBsZW1lbnRlZCBieSBpdGVyYXRpbmcgb3ZlciAKKyAgICAg
ICAgdGhlIGNvbnRlbnQgbm9kZXMgYW5kIGZpZ3VyaW5nIG91dCB3aGljaCBub2RlcyBoYXZlIGJv
dW5kaW5nQm94IGludGVyc2VjdGluZyB0aGUgcmVnaW9uIGJveCBhbmQgZmlndXJpbmcgb3V0Cisg
ICAgICAgIHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucy4KKworICAgICAgICBUZXN0czogZmFz
dC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtYWJzb2x1dGUtcG9zLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWNvbnRlbnQtbm9k
ZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5n
ZXMtZGlzcGxheS1ub25lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVn
aW9uLWZsb3ctcmFuZ2VzLWVtcHR5LXJlZ2lvbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtZml4ZWQtcG9zLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWhvcml6LWJ0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLWlubGluZS1v
bmx5Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLXRleHQtdmVydC1sci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbi1mbG93LXJhbmdlcy10ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9n
ZXQtcmVnaW9uLWZsb3ctcmFuZ2VzLXZlcnQtbHIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9y
ZWdpb25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMtdmVydC1ybC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbi1mbG93LXJhbmdlcy13cml0aW5nLW1vZGVzLXJsLXJi
LWxyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9uLWZsb3ctcmFu
Z2VzLXdyaXRpbmctbW9kZXMtdGItcmwtbHIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdp
b25zL2dldC1yZWdpb24tZmxvdy1yYW5nZXMuaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDogYWRkZWQgdGhlIHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMg
bWV0aG9kCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9p
ZGluZ0Zsb2F0cyk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGlu
c3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZSk6IFVzZSB0aGUgbG9naWNhbFRv
cE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTogQWRkZWQgYSBzbG93ZXIgcGF0aCB3aGljaCB3
b3JrcyB3aXRob3V0IExheW91dFN0YXRlCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6IFVzZSB0aGUgbG9naWNhbFRvcE9mRmxvd1RocmVh
ZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAo
cmVuYW1lZCkKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyk6IFVzZSB0
aGUgbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0IGluc3RlYWQgb2Ygb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAocmVuYW1lZCkKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlTGluZVdpZHRoSW5SZWdpb24pOiBVc2UgdGhl
IGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFtZWQpCisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
SW5saW5lU3RhdGljRGlzdGFuY2UpOiBVc2UgdGhlIGxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250
ZW50UmVjdCBpbnN0ZWFkIG9mIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKHJlbmFt
ZWQpCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppc0NvbnRhaW5lZEluTm9kZXMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpib3hJbnRlcnNlY3RzUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFuZ2VzKTogcmV0dXJucyBhIHZlY3RvciBvZiBS
YW5nZXMgdGhhdCBjb250YWlucyBOb2RlIHRoYXQgYXJlIHBhcnQgb2YgYSByZWdpb24KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgIChSZW5kZXJO
YW1lZEZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29u
dGVudFJlY3QpOiBSZXR1cm5zIHRoZSBsb2dpY2FsIHRvcCBvZiBhIHJlY3RhbmdsZSBpbnNpZGUg
dGhlIGZsb3cgdGhyZWFkIGNvbnRlbnQKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3Qp
OiBSZXR1cm5zIHRoZSBsb2dpY2FsIGJvdHRvbSBvZiBhIHJlY3RhbmdsZSBpbnNpZGUgdGhlIGZs
b3cgdGhyZWFkIGNvbnRlbnQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6Z2V0UmFu
Z2VzKTogcHJveHkgdGhlIGdldFJhbmdlcyBjYWxsIHRvIGl0cyBuYW1lZCBmbG93IHRocmVhZAor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKFJlbmRlclJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmxvZ2ljYWxUb3BGb3JGbG93VGhy
ZWFkQ29udGVudCk6IFJlbmFtZWQgZnJvbSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmxvZ2ljYWxCb3R0b21Gb3JGbG93VGhy
ZWFkQ29udGVudCk6IFJldHVybnMgdGhlIGxvZ2ljYWwgYm90dG9tIG9mIHRoZSBGbG93VGhyZWFk
Q29udGVudCByZWN0CisKIDIwMTItMDktMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgcHJvcGVydHkgYnV0dGVyZmxpZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCAwYzgxNWQwLi4wZDQ0OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCkBAIC0yMDYyLDYgKzIwNjIsMjQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50Ojp3
ZWJraXRSZWdpb25PdmVyc2V0KCkgY29uc3QKICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiB9
CiAKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4gRWxl
bWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBWZWN0b3I8
UmVmUHRyPFJhbmdlPiA+IHJhbmdlT2JqZWN0czsKKyAgICBpZiAoZG9jdW1lbnQoKS0+Y3NzUmVn
aW9uc0VuYWJsZWQoKSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyUmVnaW9u
KCkpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSB0b1JlbmRlclJlZ2lvbihyZW5k
ZXJlcigpKTsKKyAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcmVn
aW9uLT5nZXRSYW5nZXMocmFuZ2VPYmplY3RzKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmFuZ2VP
YmplY3RzOworfQorCisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgRWxlbWVudDo6ZmFz
dEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCmluZGV4IGNlNTA1NDYuLjhhMjhjZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtNDI3LDYgKzQyNyw5IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclJlZ2lvbiogcmVu
ZGVyUmVnaW9uKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB3ZWJraXRSZWdpb25P
dmVyc2V0KCkgY29uc3Q7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIFZlY3RvcjxSZWZQ
dHI8UmFuZ2U+ID4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0OworI2VuZGlmCiAK
ICAgICBib29sIGhhc0lEKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCmluZGV4IGZiNjBjNzMuLjMzYzExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5pZGwKQEAgLTE0NCw2ICsxNDQsNyBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gQ1NT
IFJlZ2lvbnMgQVBJCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0
UmVnaW9uT3ZlcnNldDsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBzZXF1ZW5j
ZTxSYW5nZT4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwogCiAjaWYgIWRlZmluZWQoTEFO
R1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBF
dmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcAppbmRleCBjMmE0MDYxLi4xOThmMzdlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTIyMzIsNyArMjIzMiw3IEBAIExheW91dFVuaXQgUmVu
ZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRz
KGNvbnN0IFJlCiAKICAgICBMYXlvdXRVbml0IGJsb2NrT2Zmc2V0ID0gbG9naWNhbFRvcEZvckNo
aWxkKGNoaWxkKTsKICAgICBpZiAocmVnaW9uKQotICAgICAgICBibG9ja09mZnNldCA9IG1heChi
bG9ja09mZnNldCwgYmxvY2tPZmZzZXQgKyAocmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CisgICAgICAg
IGJsb2NrT2Zmc2V0ID0gbWF4KGJsb2NrT2Zmc2V0LCBibG9ja09mZnNldCArIChyZWdpb24tPmxv
Z2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSkpOwogCiAgICAgTGF5b3V0VW5pdCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0Rm9yTGlu
ZShibG9ja09mZnNldCwgZmFsc2UsIHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSwgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSk7CiAKQEAgLTY4OTYsNyArNjg5Niw3
IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNl
dCwgUGFnZUJvdW5kYXJ5UnVsZSBwYWdlQm91CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAocmVnaW9uLT5pc0xhc3RSZWdpb24oKSkKICAgICAgICAgcmV0dXJuIHJlZ2lvbi0+aXNSZW5k
ZXJSZWdpb25TZXQoKSB8fCByZWdpb24tPnN0eWxlKCktPnJlZ2lvbk92ZXJmbG93KCkgPT0gQnJl
YWtSZWdpb25PdmVyZmxvdwotICAgICAgICAgICAgfHwgKHBhZ2VCb3VuZGFyeVJ1bGUgPT0gSW5j
bHVkZVBhZ2VCb3VuZGFyeSAmJiBwYWdlT2Zmc2V0ID09IHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSgpKTsKKyAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlSdWxlID09
IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPmxvZ2ljYWxUb3BG
b3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzE4Nywy
MCArNzE4Nyw1MSBAQCBib29sIFJlbmRlckJsb2NrOjpsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5l
Q2hhbmdlZChSb290SW5saW5lQm94KiByb290Qm94LCBMYXlvdQogCiBMYXlvdXRVbml0IFJlbmRl
ckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byB3b3JrIHdpdGhvdXQgbGF5b3V0IHN0YXRl
LiBJdCdzIGZpbmUgdG8gdXNlIHRoZSBsYXlvdXQgc3RhdGUgYXMgYSBjYWNoZQotICAgIC8vIGZv
ciBzcGVlZCwgYnV0IHdlIG5lZWQgYSBzbG93IGltcGxlbWVudGF0aW9uIHRoYXQgd2lsbCB3YWxr
IHVwIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluIGFuZCBmaWd1cmUKLSAgICAvLyBvdXQgb3Vy
IG9mZnNldCBmcm9tIHRoZSB0b3Agb2YgdGhlIHBhZ2UuCiAgICAgTGF5b3V0U3RhdGUqIGxheW91
dFN0YXRlID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpOwotICAgIGlmICghbGF5b3V0U3RhdGUgfHwg
IWxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
bGF5b3V0U3RhdGUgJiYgIWxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpKQorICAgICAgICByZXR1
cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICBpZiAobGF5b3V0U3RhdGUpIHsKKyAgICAgICAgLy8g
RklYTUU6IFNhbml0eSBjaGVjayB0aGF0IHRoZSByZW5kZXJlciBpbiB0aGUgbGF5b3V0IHN0YXRl
IGlzIG91cnMsIHNpbmNlIG90aGVyd2lzZSB0aGUgY29tcHV0YXRpb24gd2lsbCBiZSBvZmYuCisg
ICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQgZm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRl
ZCB1c2luZworICAgICAgICAvLyB3aWR0aHMgd2hpY2ggY2FuIHZhcnkgaW4gZWFjaCByZWdpb24u
IFVudGlsIHdlIHBhdGNoIHRoYXQsIHdlIGNhbid0IGhhdmUgdGhpcyBhc3NlcnQuCisgICAgICAg
IC8vIEFTU0VSVChsYXlvdXRTdGF0ZS0+bV9yZW5kZXJlciA9PSB0aGlzKTsKIAotICAgIC8vIEZJ
WE1FOiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVuZGVyZXIgaW4gdGhlIGxheW91dCBzdGF0ZSBp
cyBvdXJzLCBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbXB1dGF0aW9uIHdpbGwgYmUgb2ZmLgotICAg
IC8vIFJpZ2h0IG5vdyB0aGlzIGFzc2VydCBnZXRzIGhpdCBpbnNpZGUgY29tcHV0ZUxvZ2ljYWxI
ZWlnaHQgZm9yIHBlcmNlbnRhZ2UgbWFyZ2lucywgc2luY2UgdGhleSdyZSBjb21wdXRlZCB1c2lu
ZwotICAgIC8vIHdpZHRocyB3aGljaCBjYW4gdmFyeSBpbiBlYWNoIHJlZ2lvbi4gVW50aWwgd2Ug
cGF0Y2ggdGhhdCwgd2UgY2FuJ3QgaGF2ZSB0aGlzIGFzc2VydC4KLSAgICAvLyBBU1NFUlQobGF5
b3V0U3RhdGUtPm1fcmVuZGVyZXIgPT0gdGhpcyk7CisgICAgICAgIExheW91dFNpemUgb2Zmc2V0
RGVsdGEgPSBsYXlvdXRTdGF0ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdl
T2Zmc2V0OworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNl
dERlbHRhLmhlaWdodCgpIDogb2Zmc2V0RGVsdGEud2lkdGgoKTsKKyAgICB9CisgICAgLy8gRklY
TUU6IFJpZ2h0IG5vdywgdGhpcyBhc3NlcnQgaXMgaGl0IG91dHNpZGUgbGF5b3V0LCBmcm9tIGxv
Z2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0IGluIHNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludCAo
Y2FsbGVkIGZyb20gRnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCkuCisgICAgLy8gQVNTRVJUKGlu
UmVuZGVyRmxvd1RocmVhZCgpKTsKIAotICAgIExheW91dFNpemUgb2Zmc2V0RGVsdGEgPSBsYXlv
dXRTdGF0ZS0+bV9sYXlvdXRPZmZzZXQgLSBsYXlvdXRTdGF0ZS0+bV9wYWdlT2Zmc2V0OwotICAg
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RGVsdGEuaGVpZ2h0KCkg
OiBvZmZzZXREZWx0YS53aWR0aCgpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgc2xvd2VyIHBh
dGggdGhhdCBkb2Vzbid0IHVzZSBsYXlvdXQgc3RhdGUgYW5kIHJlbGllcyBvbiBnZXR0aW5nIHlv
dXIgbG9naWNhbCB0b3AgaW5zaWRlIHRoZSBlbmNsb3NpbmcgZmxvdyB0aHJlYWQuIEl0IGRvZXNu
J3QKKyAgICAvLyB3b3JrIHdpdGggY29sdW1ucyBvciBwYWdlcyBjdXJyZW50bHksIGJ1dCBpdCBz
aG91bGQgb25jZSB0aGV5IGhhdmUgYmVlbiBzd2l0Y2hlZCBvdmVyIHRvIHVzaW5nIGZsb3cgdGhy
ZWFkcy4KKyAgICBpZiAoIWluUmVuZGVyRmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVS
T19MQVlPVVRfVU5JVDsKKworICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjdXJyZW50QmxvY2sgPSB0
aGlzOworICAgIExheW91dFJlY3QgYmxvY2tSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsK
KworICAgIHdoaWxlIChjdXJyZW50QmxvY2sgJiYgIWN1cnJlbnRCbG9jay0+aXNSZW5kZXJGbG93
VGhyZWFkKCkpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lckJsb2NrID0gY3VycmVu
dEJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5lckJsb2Nr
KTsKKyAgICAgICAgaWYgKCFjb250YWluZXJCbG9jaykKKyAgICAgICAgICAgIHJldHVybiBaRVJP
X0xBWU9VVF9VTklUOworICAgICAgICBMYXlvdXRQb2ludCBjdXJyZW50QmxvY2tMb2NhdGlvbiA9
IGN1cnJlbnRCbG9jay0+bG9jYXRpb24oKTsKKworICAgICAgICBpZiAoY29udGFpbmVyQmxvY2st
PnN0eWxlKCktPndyaXRpbmdNb2RlKCkgIT0gY3VycmVudEJsb2NrLT5zdHlsZSgpLT53cml0aW5n
TW9kZSgpKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgYmxvY2sgcmVjdCBp
biBjb250YWluZXIgY29vcmRpbmF0ZXMKKyAgICAgICAgICAgIC8vIGFuZCB3ZSBoYXZlIHRvIHRh
a2UgaW50byBhY2NvdW50IGJvdGggdGhlIGNvbnRhaW5lciBhbmQgY3VycmVudCBibG9jayBmbGlw
cGluZyBtb2RlcworICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJsb2NrLT5zdHlsZSgpLT5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5l
ckJsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAgICAgICAgICAgICBi
bG9ja1JlY3Quc2V0WShjdXJyZW50QmxvY2stPmhlaWdodCgpIC0gYmxvY2tSZWN0Lm1heFkoKSk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBibG9ja1JlY3Quc2V0
WChjdXJyZW50QmxvY2stPndpZHRoKCkgLSBibG9ja1JlY3QubWF4WCgpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGN1cnJlbnRCbG9jay0+ZmxpcEZvcldyaXRpbmdNb2RlKGJsb2NrUmVj
dCk7CisgICAgICAgIH0KKyAgICAgICAgYmxvY2tSZWN0Lm1vdmVCeShjdXJyZW50QmxvY2tMb2Nh
dGlvbik7CisgICAgICAgIGN1cnJlbnRCbG9jayA9IGNvbnRhaW5lckJsb2NrOworICAgIH07Cisg
ICAgcmV0dXJuIGN1cnJlbnRCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGJsb2Nr
UmVjdC55KCkgOiBibG9ja1JlY3QueCgpOwogfQogCiBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2Nr
OjpyZWdpb25BdEJsb2NrT2Zmc2V0KExheW91dFVuaXQgYmxvY2tPZmZzZXQpIGNvbnN0CkBAIC03
MjQ4LDkgKzcyNzksOSBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2NrOjpjbGFtcFRvU3RhcnRB
bmRFbmRSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAogICAgIFJlbmRlclJlZ2lv
biogZW5kUmVnaW9uOwogICAgIGVuY2xvc2luZ1JlbmRlckZsb3dUaHJlYWQoKS0+Z2V0UmVnaW9u
UmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CiAgICAgCi0gICAgaWYg
KHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgp
IDwgc3RhcnRSZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSkKKyAgICBp
ZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQo
KSA8IHN0YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXJ0UmVnaW9uOwotICAgIGlmIChlbmRSZWdpb24gJiYgcmVnaW9uLT5vZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgPiBlbmRSZWdpb24tPm9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UoKSkKKyAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9naWNh
bFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZW5kUmVnaW9uOwogICAgIAogICAgIHJl
dHVybiByZWdpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGE2
YWZkYzAuLmQ2MmI4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC0xMTU3LDcgKzExNTcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdp
ZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogICAgIExheW91dFVu
aXQgbG9naWNhbFRvcFBvc2l0aW9uID0gbG9naWNhbFRvcCgpOwogICAgIExheW91dFVuaXQgYWRq
dXN0ZWRQYWdlT2Zmc2V0Rm9yQ29udGFpbmluZ0Jsb2NrID0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSAtIGxvZ2ljYWxUb3AoKTsKICAgICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIExh
eW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIC0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgICAgIExheW91dFVuaXQgb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZs
b3dUaHJlYWRDb250ZW50KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIDogWkVS
T19MQVlPVVRfVU5JVDsKICAgICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gbWF4KGxvZ2ljYWxU
b3BQb3NpdGlvbiwgbG9naWNhbFRvcFBvc2l0aW9uICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJl
Z2lvbik7CiAgICAgICAgIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRB
bmRFbmRSZWdpb25zKHJlZ2lvbik7CiAgICAgfQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVnaW9u
KFJlbmRlclJlZ2lvbiogcmUKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BQb3NpdGlvbiA9IGxv
Z2ljYWxUb3AoKTsKICAgICBMYXlvdXRVbml0IGFkanVzdGVkUGFnZU9mZnNldEZvckNvbnRhaW5p
bmdCbG9jayA9IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgLSBsb2dpY2FsVG9wKCk7
CiAgICAgaWYgKHJlZ2lvbikgewotICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZSZWdpb24gPSByZWdpb24gPyByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UoKSAtIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgOiBaRVJPX0xBWU9VVF9V
TklUOworICAgICAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24gPSBy
ZWdpb24gPyByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIC0gb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSA6IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgICAgIGxv
Z2ljYWxUb3BQb3NpdGlvbiA9IG1heChsb2dpY2FsVG9wUG9zaXRpb24sIGxvZ2ljYWxUb3BQb3Np
dGlvbiArIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24pOwogICAgICAgICBjb250YWluaW5n
QmxvY2tSZWdpb24gPSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwogICAg
IH0KQEAgLTI1MDMsNyArMjUwMyw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNE
aXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAg
ICAgICAgICAgaWYgKHJlZ2lvbiAmJiBjdXJyLT5pc1JlbmRlckJsb2NrKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUmVuZGVyQmxvY2sqIGNiID0gdG9SZW5kZXJCbG9jayhjdXJyKTsK
ICAgICAgICAgICAgICAgICAgICAgcmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lv
bnMocmVnaW9uKTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94
SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5vZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpOworICAgICAgICAgICAgICAgICAgICBSZW5kZXJCb3hS
ZWdpb25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9uLCByZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJveEluZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbiAr
PSBib3hJbmZvLT5sb2dpY2FsTGVmdCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1MjIsNyAr
MjUyMiw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgm
IGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAgICAgICAgICAgICAgICAgaWYgKHJl
Z2lvbiAmJiBjdXJyLT5pc1JlbmRlckJsb2NrKCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlbmRlckJsb2NrKiBjYiA9IHRvUmVuZGVyQmxvY2soY3Vycik7CiAgICAgICAgICAgICAg
ICAgICAgICByZWdpb24gPSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pOwot
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9IGNiLT5y
ZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkpOworICAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyog
Ym94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgcmVnaW9uLT5sb2dpY2Fs
VG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoYm94
SW5mbykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnIgIT0gY29udGFpbmVyQmxv
Y2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljUG9zaXRpb24gLT0gY2ItPmxv
Z2ljYWxXaWR0aCgpIC0gKGJveEluZm8tPmxvZ2ljYWxMZWZ0KCkgKyBib3hJbmZvLT5sb2dpY2Fs
V2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dUaHJlYWQuY3BwCmluZGV4IDc0NjFmNDIuLjI2NGFlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yNyw5ICsyNywx
NCBAQAogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogCiAjaW5jbHVkZSAiRmxv
d1RocmVhZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb24uaCIKKyNp
bmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKKyNpbmNs
dWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzk1LDQgKzQwMCwxNzMgQEAgYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmlzTWFy
a2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRmxvdy0+Zmxvd1N0
YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsOwogfQogCitzdGF0aWMgYm9v
bCBpc0NvbnRhaW5lZEluTm9kZXMoVmVjdG9yPE5vZGUqPiBvdGhlcnMsIE5vZGUqIG5vZGUpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgTm9kZSogb3RoZXIgPSBvdGhlcnMuYXQoaSk7CisgICAgICAgIGlmIChvdGhlci0+Y29udGFp
bnMobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitzdGF0aWMgYm9vbCBib3hJbnRlcnNlY3RzUmVnaW9uKExheW91dFVuaXQgbG9n
aWNhbFRvcEZvckJveCwgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yQm94LCBMYXlvdXRVbml0
IGxvZ2ljYWxUb3BGb3JSZWdpb24sIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvclJlZ2lvbikK
K3sKKyAgICBib29sIHJlZ2lvbklzRW1wdHkgPSBsb2dpY2FsQm90dG9tRm9yUmVnaW9uICE9IE1B
WF9MQVlPVVRfVU5JVCAmJiBsb2dpY2FsVG9wRm9yUmVnaW9uICE9IE1JTl9MQVlPVVRfVU5JVAor
ICAgICAgICAgICAgICAgICAgICAgICAgICYmIChsb2dpY2FsQm90dG9tRm9yUmVnaW9uIC0gbG9n
aWNhbFRvcEZvclJlZ2lvbikgPD0gMDsKKyAgICByZXR1cm4gIChsb2dpY2FsQm90dG9tRm9yQm94
IC0gbG9naWNhbFRvcEZvckJveCkgPiAwCisgICAgICAgICAgICAmJiAhcmVnaW9uSXNFbXB0eQor
ICAgICAgICAgICAgJiYgbG9naWNhbFRvcEZvckJveCA8IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24g
JiYgbG9naWNhbFRvcEZvclJlZ2lvbiA8IGxvZ2ljYWxCb3R0b21Gb3JCb3g7Cit9CisKK3ZvaWQg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYg
cmFuZ2VPYmplY3RzLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKK3sKKyAgICBM
YXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JSZWdpb247CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90
dG9tRm9yUmVnaW9uOworCisgICAgLy8gZXh0ZW5kIHRoZSBmaXJzdCByZWdpb24gdG9wIHRvIGNv
bnRhaW4gZXZlcnl0aGluZyB1cCB0byBpdHMgbG9naWNhbCBoZWlnaHQKKyAgICBpZiAocmVnaW9u
LT5pc0ZpcnN0UmVnaW9uKCkpCisgICAgICAgIGxvZ2ljYWxUb3BGb3JSZWdpb24gPSBNSU5fTEFZ
T1VUX1VOSVQ7CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsVG9wRm9yUmVnaW9uID0gIHJlZ2lv
bi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCk7CisKKyAgICAvLyBleHRlbmQgdGhl
IGxhc3QgcmVnaW9uIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBhYm92ZSBpdHMgeSgpCisgICAgaWYg
KHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCisgICAgICAgIGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24g
PSBNQVhfTEFZT1VUX1VOSVQ7CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsQm90dG9tRm9yUmVn
aW9uID0gcmVnaW9uLT5sb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKTsKKworICAg
IFZlY3RvcjxOb2RlKj4gbm9kZXM7CisgICAgLy8gZWxpbWluYXRlIHRoZSBjb250ZW50Tm9kZXMg
dGhhdCBhcmUgZGVzY2VuZGFudHMgb2Ygb3RoZXIgY29udGVudE5vZGVzCisgICAgZm9yIChOYW1l
ZEZsb3dDb250ZW50Tm9kZXM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29udGVudE5vZGVzKCkuYmVn
aW4oKTsgaXQgIT0gY29udGVudE5vZGVzKCkuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgTm9kZSog
bm9kZSA9ICppdDsKKyAgICAgICAgaWYgKCFpc0NvbnRhaW5lZEluTm9kZXMobm9kZXMsIG5vZGUp
KQorICAgICAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOworICAgIH0KKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbm9kZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgTm9kZSogY29udGVu
dE5vZGUgPSBub2Rlcy5hdChpKTsKKyAgICAgICAgaWYgKCFjb250ZW50Tm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3Jl
ZEV4Y2VwdGlvbjsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
Y29udGVudE5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICBib29sIGZvdW5kU3RhcnRQb3NpdGlv
biA9IGZhbHNlOworICAgICAgICBib29sIHN0YXJ0c0Fib3ZlUmVnaW9uID0gdHJ1ZTsKKyAgICAg
ICAgYm9vbCBlbmRzQmVsb3dSZWdpb24gPSB0cnVlOworICAgICAgICBib29sIHNraXBPdmVyT3V0
c2lkZU5vZGVzID0gZmFsc2U7CisgICAgICAgIE5vZGUqIGxhc3RFbmROb2RlID0gMDsKKworICAg
ICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjb250ZW50Tm9kZTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRy
YXZlcnNlTmV4dE5vZGUoY29udGVudE5vZGUpKSB7CisgICAgICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIExheW91dFJlY3QgYm91
bmRpbmdCb3g7CisgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkpCisg
ICAgICAgICAgICAgICAgYm91bmRpbmdCb3ggPSB0b1JlbmRlcklubGluZShyZW5kZXJlciktPmxp
bmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RleHQo
KSkKKyAgICAgICAgICAgICAgICBib3VuZGluZ0JveCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcikt
PmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGJvdW5kaW5nQm94ID0gIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+ZnJhbWVSZWN0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+aXNSZWxQb3NpdGlvbmVkKCkp
CisgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmUodG9SZW5kZXJCb3gocmVuZGVy
ZXIpLT5yZWxhdGl2ZVBvc2l0aW9uTG9naWNhbE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRUb3AgPSByZW5kZXJlci0+Y29udGFpbmluZ0Js
b2NrKCktPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKKyAgICAgICAgICAgIGNv
bnN0IExheW91dFBvaW50IGxvZ2ljYWxPZmZzZXRGcm9tVG9wKGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBaRVJPX0xBWU9VVF9VTklUIDogIG9mZnNldFRvcCwKKyAgICAgICAgICAgICAgICBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0VG9wIDogWkVST19MQVlPVVRfVU5JVCk7
CisKKyAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmVCeShsb2dpY2FsT2Zmc2V0RnJvbVRvcCk7
CisKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJlbmRlcmVyID0gcmVnaW9u
LT5sb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoYm91bmRpbmdCb3gpOworICAgICAg
ICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIgPSByZWdpb24tPmxvZ2lj
YWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7CisKKyAgICAgICAg
ICAgIC8vIGlmIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBkb2Vzbid0
IGludGVyc2VjdCB0aGUgcmVnaW9uIGJveAorICAgICAgICAgICAgLy8gY2xvc2UgdGhlIGN1cnJl
bnQgcmFuZ2Ugb25seSBpZiB0aGUgc3RhcnQgZWxlbWVudCBiZWdhbiBpbnNpZGUgdGhlIHJlZ2lv
biwKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSBqdXN0IG1vdmUgdGhlIHN0YXJ0IHBvc2l0aW9u
IGFmdGVyIHRoaXMgbm9kZSBhbmQga2VlcCBza2lwcGluZyB0aGVtIHVudGlsIHdlIGZvdW5kIGEg
cHJvcGVyIHN0YXJ0IHBvc2l0aW9uLgorICAgICAgICAgICAgaWYgKCFib3hJbnRlcnNlY3RzUmVn
aW9uKGxvZ2ljYWxUb3BGb3JSZW5kZXJlciwgbG9naWNhbEJvdHRvbUZvclJlbmRlcmVyLCBsb2dp
Y2FsVG9wRm9yUmVnaW9uLCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uKSkgeworICAgICAgICAgICAg
ICAgIGlmIChmb3VuZFN0YXJ0UG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFz
dGFydHNBYm92ZVJlZ2lvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlLT5p
bnRlcnNlY3RzTm9kZShub2RlLCBpZ25vcmVkRXhjZXB0aW9uKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByYW5nZS0+c2V0RW5kQmVmb3JlKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZS0+Y2xvbmVS
YW5nZShpZ25vcmVkRXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoY29udGVudE5vZGUtPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNraXBPdmVyT3V0c2lkZU5vZGVzID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBPdmVyT3V0c2lk
ZU5vZGVzKQorICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnRBZnRlcihub2RlLCBp
Z25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBmb3VuZFN0YXJ0UG9zaXRpb24gPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gc3RhcnQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChsb2dpY2FsVG9wRm9yUmVu
ZGVyZXIgPCBsb2dpY2FsVG9wRm9yUmVnaW9uICYmIHN0YXJ0c0Fib3ZlUmVnaW9uKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1RleHQoKSkgeyAvLyBUZXh0IGNyb3NzZXMgcmVn
aW9uIHRvcAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgVGV4dCBlbGVtZW50cywganVzdCBm
aW5kIHRoZSBsYXN0IHRleHRib3ggdGhhdCBpcyBjb250YWluZWQgaW5zaWRlIHRoZSByZWdpb24g
YW5kIHVzZSBpdHMgc3RhcnQoKSBvZmZzZXQgYXMgc3RhcnQgcG9zaXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVy
KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVu
ZGVyZXItPmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFRvcCArIGJveC0+bG9naWNhbEJvdHRv
bSgpIDwgbG9naWNhbFRvcEZvclJlZ2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChQb3NpdGlv
bih0b1RleHQobm9kZSksIGJveC0+c3RhcnQoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c3RhcnRzQWJvdmVSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9k
ZSBjcm9zc2VzIHJlZ2lvbiB0b3AKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGFsbCBlbGVt
ZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0IHRoZSBzdGFydCBwb3NpdGlvbiB0byBiZSBiZWZv
cmUgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQoUG9zaXRpb24obm9k
ZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbikpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5vZGUgc3RhcnRzIGluc2lkZSByZWdpb24KKyAg
ICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBzdGFydCBpbnNpZGUgdGhlIHJlZ2lv
biwgc2V0IHRoZSBzdGFydCBwb3NpdGlvbiB0byBiZSBiZWZvcmUgdGhlbS4gSWYgd2UgZm91bmQg
b25lLCB3ZSB3aWxsIGp1c3Qgc2tpcCB0aGUgb3RoZXJzIHVudGlsCisgICAgICAgICAgICAgICAg
Ly8gdGhlIHJhbmdlIGlzIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBpZiAoc3RhcnRzQWJvdmVS
ZWdpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0QmVmb3JlKG5vZGUsIGlnbm9yZWRF
eGNlcHRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHNraXBPdmVyT3V0c2lkZU5vZGVzICA9IGZhbHNlOworICAgICAgICAgICAgZm91bmRTdGFydFBv
c2l0aW9uID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gZW5kIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAobG9naWNhbEJvdHRvbUZvclJlZ2lvbiA8IGxvZ2ljYWxCb3R0b21Gb3JSZW5kZXJlciAm
JiAoZW5kc0JlbG93UmVnaW9uIHx8ICghZW5kc0JlbG93UmVnaW9uICYmICFub2RlLT5pc0Rlc2Nl
bmRhbnRPZihsYXN0RW5kTm9kZSkpKSkgeworICAgICAgICAgICAgICAgIC8vIGZvciBUZXh0IGVs
ZW1lbnRzLCBqdXN0IGZpbmQganVzdCBmaW5kIHRoZSBsYXN0IHRleHRib3ggdGhhdCBpcyBjb250
YWluZWQgaW5zaWRlIHRoZSByZWdpb24gYW5kIHVzZSBpdHMgc3RhcnQoKStsZW4oKSBvZmZzZXQg
YXMgZW5kIHBvc2l0aW9uCisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1RleHQoKSkg
eyAvLyBUZXh0IGNyb3NzZXMgcmVnaW9uIGJvdHRvbQorICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyZXIpOworICAgICAgICAg
ICAgICAgICAgICBJbmxpbmVUZXh0Qm94KiBsYXN0Qm94ID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVuZGVyZXItPmZpcnN0VGV4dEJveCgp
OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKChvZmZzZXRUb3AgKyBib3gtPmxvZ2ljYWxUb3AoKSkgPCBsb2dpY2FsQm90dG9tRm9y
UmVnaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEJveCA9IGJveDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXN0Qm94KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsYXN0Qm94KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJhbmdlLT5zZXRFbmQoUG9zaXRpb24odG9UZXh0KG5vZGUpLCBsYXN0Qm94LT5zdGFydCgpICsg
bGFzdEJveC0+bGVuKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVuZHNCZWxvd1JlZ2lvbiA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsgLy8gbm9kZSBjcm9zc2VzIHJlZ2lvbiBib3R0b20KKyAgICAgICAgICAg
ICAgICAgICAgLy8gZm9yIGFsbCBlbGVtZW50cywgZXhjZXB0IFRleHQsIGp1c3Qgc2V0IHRoZSBz
dGFydCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVpciBjaGlsZHJlbgorICAgICAgICAgICAgICAg
ICAgICByYW5nZS0+c2V0RW5kKFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0
ZXJDaGlsZHJlbikpOworICAgICAgICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBsYXN0RW5kTm9kZSA9IG5vZGU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsgLy8gbm9kZSBlbmRzIGluc2lkZSByZWdpb24KKyAg
ICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdGhhdCBlbmRzIGluc2lkZSB0aGUgcmVnaW9u
LCBzZXQgdGhlIGVuZCBwb3NpdGlvbiB0byBiZSBhZnRlciB0aGVtCisgICAgICAgICAgICAgICAg
Ly8gYWxsb3cgdGhpcyBlbmQgcG9zaXRpb24gdG8gYmUgY2hhbmdlZCBvbmx5IGJ5IG90aGVyIGVs
ZW1lbnRzIHRoYXQgYXJlIG5vdCBkZXNjZW5kYW50cyBvZiB0aGUgY3VycmVudCBlbmQgbm9kZQor
ICAgICAgICAgICAgICAgIGlmIChlbmRzQmVsb3dSZWdpb24gfHwgKCFlbmRzQmVsb3dSZWdpb24g
JiYgIW5vZGUtPmlzRGVzY2VuZGFudE9mKGxhc3RFbmROb2RlKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmFuZ2UtPnNldEVuZEFmdGVyKG5vZGUsIGlnbm9yZWRFeGNlcHRpb24pOworICAgICAg
ICAgICAgICAgICAgICBlbmRzQmVsb3dSZWdpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgbGFzdEVuZE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBpZiAoZm91bmRTdGFydFBvc2l0aW9uIHx8IHNraXBPdmVyT3V0
c2lkZU5vZGVzKQorICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZSk7CisgICAg
fQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmgKaW5kZXggYThiOGI1MS4uMzE5OTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtNzAsNiArNzAsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgTmFtZWRGbG93Q29udGVudE5vZGVzJiBjb250ZW50Tm9kZXMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnROb2RlczsgfQogICAgIGJvb2wgaGFzQ29udGVudE5vZGUoTm9k
ZSogY29udGVudE5vZGUpIGNvbnN0IHsgQVNTRVJUKGNvbnRlbnROb2RlKTsgcmV0dXJuIG1fY29u
dGVudE5vZGVzLmNvbnRhaW5zKGNvbnRlbnROb2RlKTsgfQogICAgIGJvb2wgaXNNYXJrZWRGb3JE
ZXN0cnVjdGlvbigpIGNvbnN0OworICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFu
Z2U+ID4mLCBjb25zdCBSZW5kZXJSZWdpb24qKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0TWFya0ZvckRlc3RydWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCmluZGV4IGQ4OTVjZDAuLjJiN2U0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYWludEluZm8u
aCIKKyNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveFJlZ2lvbkluZm8uaCIK
ICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCkBAIC0zMjgsMTMgKzMyOSwxOCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6ZGVsZXRlQWxsUmVu
ZGVyQm94UmVnaW9uSW5mbygpCiAgICAgbV9yZW5kZXJCb3hSZWdpb25JbmZvLmNsZWFyKCk7CiB9
CiAKLUxheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsVG9wT2ZGbG93VGhy
ZWFkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBpZiAo
IW1faXNWYWxpZCB8fCAhbV9mbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAo
bV9mbG93VGhyZWFkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4g
Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpOwotICAgIHJldHVybiBmbG93VGhyZWFkUG9ydGlv
blJlY3QoKS54KCk7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgIWZsb3dUaHJlYWQoKSkKKyAgICAg
ICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgcmV0dXJuIGZsb3dUaHJlYWQoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QueSgpIDogcmVjdC54KCk7Cit9CisKK0xheW91
dFVuaXQgUmVuZGVyUmVnaW9uOjpsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCB8fCAh
Zmxvd1RocmVhZCgpKQorICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKKyAgICByZXR1
cm4gZmxvd1RocmVhZCgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVjdC5tYXhZKCkg
OiByZWN0Lm1heFgoKTsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246OnNldFJlZ2lvbk9iamVjdHNS
ZWdpb25TdHlsZSgpCkBAIC01MzYsNCArNTQyLDEwIEBAIExheW91dFVuaXQgUmVuZGVyUmVnaW9u
OjptYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdAogICAgIHJldHVybiBtYXhQcmVmZXJy
ZWRMb2dpY2FsV2lkdGggKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CiB9Cgordm9p
ZCBSZW5kZXJSZWdpb246OmdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JiByYW5nZU9i
amVjdHMpIGNvbnN0Cit7CisgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBuYW1lZEZsb3cgPSB2
aWV3KCktPmZsb3dUaHJlYWRDb250cm9sbGVyKCktPmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRo
TmFtZShzdHlsZSgpLT5yZWdpb25UaHJlYWQoKSk7CisgICAgbmFtZWRGbG93LT5nZXRSYW5nZXMo
cmFuZ2VPYmplY3RzLCB0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IGVlMDRlY2MuLjNkOWQ1YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTc4LDggKzc4LDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkZWxldGVBbGxSZW5kZXJCb3hSZWdpb25JbmZvKCk7CiAKLSAg
ICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25zdDsKLQog
ICAgIGJvb2wgaXNGaXJzdFJlZ2lvbigpIGNvbnN0OwogICAgIGJvb2wgaXNMYXN0UmVnaW9uKCkg
Y29uc3Q7CiAKQEAgLTEwNCw2ICsxMDIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIExheW91dFVuaXQgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgCisgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OworICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbU9m
Rmxvd1RocmVhZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKKyAgICBMYXlv
dXRVbml0IGxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGxv
Z2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdChmbG93VGhyZWFkUG9ydGlvblJlY3QoKSk7
IH07CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKSBj
b25zdCB7IHJldHVybiBsb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoZmxvd1Ro
cmVhZFBvcnRpb25SZWN0KCkpOyB9OworCisgICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0
cjxSYW5nZT4gPiYpIGNvbnN0OworCiAgICAgLy8gVGhpcyBtZXRob2QgcmVwcmVzZW50cyB0aGUg
bG9naWNhbCBoZWlnaHQgb2YgdGhlIGVudGlyZSBmbG93IHRocmVhZCBwb3J0aW9uIHVzZWQgYnkg
dGhlIHJlZ2lvbiBvciBzZXQuCiAgICAgLy8gRm9yIFJlbmRlclJlZ2lvbnMgaXQgbWF0Y2hlcyBs
b2dpY2FsUGFnaW5hdGlvbkhlaWdodCgpLCBidXQgZm9yIHNldHMgaXQgaXMgdGhlIGhlaWdodCBv
ZiBhbGwgdGhlIHBhZ2VzCiAgICAgLy8gb3IgY29sdW1ucyBhZGRlZCB0b2dldGhlci4K
</data>

          </attachment>
      

    </bug>

</bugzilla>