<?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>77522</bug_id>
          
          <creation_ts>2012-02-01 01:21:53 -0800</creation_ts>
          <short_desc>Adding WebSocket per-frame DEFLATE extension</short_desc>
          <delta_ts>2012-03-02 06:39:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore 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>http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-04</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78079</dependson>
    
    <dependson>78449</dependson>
    
    <dependson>78557</dependson>
    
    <dependson>79187</dependson>
    
    <dependson>79219</dependson>
    
    <dependson>79464</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>ap</cc>
    
    <cc>ossy</cc>
    
    <cc>paroga</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tyoshino</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546885</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-01 01:21:53 -0800</bug_when>
    <thetext>This bug is the master bug for adding WebSocket per-flame DEFLATE extension.
The curent draft of the spec is at: http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-04</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547164</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-01 10:15:23 -0800</bug_when>
    <thetext>Wasn&apos;t the whole idea of WebSockets that such transformations would be performed by client code, not by protocol itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547444</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-01 15:40:05 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Wasn&apos;t the whole idea of WebSockets that such transformations would be performed by client code, not by protocol itself?

The hybi working group is revising their charter and the WG will focus on compression extension first.

http://www.ietf.org/mail-archive/web/hybi/current/msg09393.html

There are no objections on the ML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547601</commentid>
    <comment_count>3</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-01 20:32:59 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Wasn&apos;t the whole idea of WebSockets that such transformations would be performed by client code, not by protocol itself?

RFC6455 introduced Sec-WebSocket-Extensions header field for purposes where protocol-level transformation is necessary (like compression and multiplexing).

Deflate-frame in WebSocket works like Content-Encoding in HTTP; browsers and servers do all the work while script authors don&apos;t have to take care of compression. I think deflate-frame extension spec looks fine in this respect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560546</commentid>
    <comment_count>4</comment_count>
      <attachid>127896</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-20 19:22:32 -0800</bug_when>
    <thetext>Created attachment 127896
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560550</commentid>
    <comment_count>5</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-20 19:30:03 -0800</bug_when>
    <thetext>Uploaded WIP patch
- Added USE(ZLIB) flag for ports which don&apos;t use zlib (e.g. QT and EFL)
- Using vendor-prefixed extension name (&quot;x-webkit-deflate-frame&quot;)
- There is no runtime flag. If USE(ZLIB) is defined, non-control frames will be compressed if the server accepts the extension.

Yuta-san, could you please take a look before formal review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560582</commentid>
    <comment_count>6</comment_count>
      <attachid>127896</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-20 20:10:55 -0800</bug_when>
    <thetext>Comment on attachment 127896
WIP patch

Attachment 127896 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11559011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560801</commentid>
    <comment_count>7</comment_count>
      <attachid>127896</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-21 04:12:27 -0800</bug_when>
    <thetext>Comment on attachment 127896
WIP patch

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

Looks fine to me.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:1031
&gt; +    if (WebSocketFrame::isNonControlOpCode(frame.opCode) &amp;&amp; dataLength &amp;&amp; m_deflateFramer.enabled()) {
&gt; +        if (!m_deflateFramer.deflate(frame)) {

You can merge these two if statements into one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561421</commentid>
    <comment_count>8</comment_count>
      <attachid>128096</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-21 17:40:45 -0800</bug_when>
    <thetext>Created attachment 128096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561422</commentid>
    <comment_count>9</comment_count>
      <attachid>127896</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-21 17:41:26 -0800</bug_when>
    <thetext>Comment on attachment 127896
WIP patch

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

Thank you for review, Yuta-san!

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:1031
&gt;&gt; +        if (!m_deflateFramer.deflate(frame)) {
&gt; 
&gt; You can merge these two if statements into one.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561424</commentid>
    <comment_count>10</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-21 17:42:43 -0800</bug_when>
    <thetext>Hi Kent-san, Alexey,

Could you please review the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561489</commentid>
    <comment_count>11</comment_count>
      <attachid>128096</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-21 19:13:19 -0800</bug_when>
    <thetext>Comment on attachment 128096
Patch

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

Would you make a separated patch to rename &apos;reserved1&apos; to &apos;compress&apos; please?

&gt; Source/WebCore/websockets/WebSocketChannel.h:236
&gt; +
&gt; +    WebSocketDeflateFramer m_deflateFramer;

I think using WebSocketDefalateFramer directly in WebSocketChannel is not a good design.
Will you introduce other extensions updating frames in the future?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561526</commentid>
    <comment_count>12</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-21 19:56:21 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 128096 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128096&amp;action=review
&gt; 
&gt; Would you make a separated patch to rename &apos;reserved1&apos; to &apos;compress&apos; please?
&gt; 

Created a entry as bug 79187.

&gt; &gt; Source/WebCore/websockets/WebSocketChannel.h:236
&gt; &gt; +
&gt; &gt; +    WebSocketDeflateFramer m_deflateFramer;
&gt; 
&gt; I think using WebSocketDefalateFramer directly in WebSocketChannel is not a good design.
&gt; Will you introduce other extensions updating frames in the future?

We might add multiplexing extension(*1). As the RFC6455 says
(*2), the order of processing frames depend on combination of extensions used. This means we are not likely to have generic way to process frames without knowledge of such dependency. That&apos;s why I didn&apos;t add generalized layer to update frames into WebSocketChannel.

(*1) http://tools.ietf.org/html/draft-tamplin-hybi-google-mux-02
(*2) http://tools.ietf.org/html/rfc6455#section-9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561537</commentid>
    <comment_count>13</comment_count>
      <attachid>128096</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-21 20:12:48 -0800</bug_when>
    <thetext>Comment on attachment 128096
Patch

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

&gt;&gt;&gt; Source/WebCore/websockets/WebSocketChannel.h:236
&gt;&gt;&gt; +    WebSocketDeflateFramer m_deflateFramer;
&gt;&gt; 
&gt;&gt; I think using WebSocketDefalateFramer directly in WebSocketChannel is not a good design.
&gt;&gt; Will you introduce other extensions updating frames in the future?
&gt; 
&gt; We might add multiplexing extension(*1). As the RFC6455 says
&gt; (*2), the order of processing frames depend on combination of extensions used. This means we are not likely to have generic way to process frames without knowledge of such dependency. That&apos;s why I didn&apos;t add generalized layer to update frames into WebSocketChannel.
&gt; 
&gt; (*1) http://tools.ietf.org/html/draft-tamplin-hybi-google-mux-02
&gt; (*2) http://tools.ietf.org/html/rfc6455#section-9

ok.
However we had better make WebSocketChannel cleaner as possible.  I&apos;m adding some comments in the next post.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561544</commentid>
    <comment_count>14</comment_count>
      <attachid>128096</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-21 20:27:41 -0800</bug_when>
    <thetext>Comment on attachment 128096
Patch

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

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:234
&gt; +        m_deflateFramer.resetDeflateContext();
&gt; +        m_deflateFramer.resetInflateContext();

m_deflateFramer should have a function like didFail().

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:635
&gt; +    if (frame.compress) {
&gt; +        if (!m_deflateFramer.enabled() || !WebSocketFrame::isNonControlOpCode(frame.opCode)) {
&gt; +            fail(&quot;Received unexpected compressed frame&quot;);
&gt; +            return false;
&gt; +        }
&gt; +        if (!m_deflateFramer.inflate(frame)) {
&gt; +            fail(&quot;Failed to decompress frame&quot;);
&gt; +            return false;
&gt; +        }
&gt; +    }
&gt; +

We had better do:

String failureMessage;
if (m_deflateFramer.inflate(frame, failureMessage)) {
    fail(failureMessage);
    return false;
}

in order to avoid making WebSocketChannel messy.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:773
&gt; +    m_deflateFramer.resetInflateContext();

Why don&apos;t you reset the context in inflate()?

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:1033
&gt; +    if (WebSocketFrame::isNonControlOpCode(frame.opCode) &amp;&amp; dataLength &amp;&amp; m_deflateFramer.enabled() &amp;&amp; !m_deflateFramer.deflate(frame)) {
&gt; +        fail(&quot;Failed to compress frame&quot;);
&gt; +        return false;
&gt; +    }

We had better do:

String failureMessage;
if (m_deflateFramer.deflate(frame, failureMessage)) {
    fail(failureMessage);
    return false;
}

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:1038
&gt; +    m_deflateFramer.resetDeflateContext();

Why don&apos;t you reset the context in deflate()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561608</commentid>
    <comment_count>15</comment_count>
      <attachid>128129</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-21 22:05:33 -0800</bug_when>
    <thetext>Created attachment 128129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561610</commentid>
    <comment_count>16</comment_count>
      <attachid>128096</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-21 22:09:44 -0800</bug_when>
    <thetext>Comment on attachment 128096
Patch

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

Kent-san,

Thank you for review!

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:234
&gt;&gt; +        m_deflateFramer.resetInflateContext();
&gt; 
&gt; m_deflateFramer should have a function like didFail().

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:635
&gt;&gt; +
&gt; 
&gt; We had better do:
&gt; 
&gt; String failureMessage;
&gt; if (m_deflateFramer.inflate(frame, failureMessage)) {
&gt;     fail(failureMessage);
&gt;     return false;
&gt; }
&gt; 
&gt; in order to avoid making WebSocketChannel messy.

I introduced InflateResultHolder not only to do this but also to remove resetInfalteContext() call. Please see the below comment.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:773
&gt;&gt; +    m_deflateFramer.resetInflateContext();
&gt; 
&gt; Why don&apos;t you reset the context in inflate()?

frame.payload could refer the inflater&apos;s data() so I need to reset the context after the frame is no longer needed. (The interface of WebSocketDeflater/WebSocketInflater might not be good, though).

To remove calling resetInflateContext() here, I added InflateResultHolder class that contains the results of inflate() and calls resetInflateContext() when it is destructed.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:1033
&gt;&gt; +    }
&gt; 
&gt; We had better do:
&gt; 
&gt; String failureMessage;
&gt; if (m_deflateFramer.deflate(frame, failureMessage)) {
&gt;     fail(failureMessage);
&gt;     return false;
&gt; }

Added DeflateResultHolder as well.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:1038
&gt;&gt; +    m_deflateFramer.resetDeflateContext();
&gt; 
&gt; Why don&apos;t you reset the context in deflate()?

Removed. (DeflateResultHolder calls this)

&gt;&gt;&gt;&gt; Source/WebCore/websockets/WebSocketChannel.h:236
&gt;&gt;&gt;&gt; +    WebSocketDeflateFramer m_deflateFramer;
&gt;&gt;&gt; 
&gt;&gt;&gt; I think using WebSocketDefalateFramer directly in WebSocketChannel is not a good design.
&gt;&gt;&gt; Will you introduce other extensions updating frames in the future?
&gt;&gt; 
&gt;&gt; We might add multiplexing extension(*1). As the RFC6455 says
&gt;&gt; (*2), the order of processing frames depend on combination of extensions used. This means we are not likely to have generic way to process frames without knowledge of such dependency. That&apos;s why I didn&apos;t add generalized layer to update frames into WebSocketChannel.
&gt;&gt; 
&gt;&gt; (*1) http://tools.ietf.org/html/draft-tamplin-hybi-google-mux-02
&gt;&gt; (*2) http://tools.ietf.org/html/rfc6455#section-9
&gt; 
&gt; ok.
&gt; However we had better make WebSocketChannel cleaner as possible.  I&apos;m adding some comments in the next post.

If I want to add further frame updating mechanism in future, I&apos;ll create a class that manages the order of frame updating based on the extension used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561627</commentid>
    <comment_count>17</comment_count>
      <attachid>128129</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-21 22:37:44 -0800</bug_when>
    <thetext>Comment on attachment 128129
Patch

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

&gt; LayoutTests/http/tests/websocket/tests/hybi/compressed-control-frame_wsh.py:2
&gt; +# Copyright 2012, Google Inc.
&gt; +# All rights reserved.

We usually write them in one line.

BTW, why this and deflate-frame_wsh.py have the copyright notice though deflate-frame-invalid-parameter_wsh.py doesn&apos;t?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561641</commentid>
    <comment_count>18</comment_count>
      <attachid>128136</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-21 22:58:36 -0800</bug_when>
    <thetext>Created attachment 128136
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561644</commentid>
    <comment_count>19</comment_count>
      <attachid>128129</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-21 23:01:46 -0800</bug_when>
    <thetext>Comment on attachment 128129
Patch

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

Thank you for review!

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/compressed-control-frame_wsh.py:2
&gt;&gt; +# All rights reserved.
&gt; 
&gt; We usually write them in one line.
&gt; 
&gt; BTW, why this and deflate-frame_wsh.py have the copyright notice though deflate-frame-invalid-parameter_wsh.py doesn&apos;t?

Merged them into one line and Added the copyright notice to deflate-frame-invalid-parameter_wsh.py (I forgot to add it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561685</commentid>
    <comment_count>20</comment_count>
      <attachid>128136</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 00:05:14 -0800</bug_when>
    <thetext>Comment on attachment 128136
Patch for landing

Rejecting attachment 128136 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:
webkit-commit-queue/Source/WebKit/chromium/webkit --revision 122745 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
48&gt;At revision 122745.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/11557411</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561690</commentid>
    <comment_count>21</comment_count>
      <attachid>128145</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-22 00:19:33 -0800</bug_when>
    <thetext>Created attachment 128145
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561767</commentid>
    <comment_count>22</comment_count>
      <attachid>128145</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 02:03:33 -0800</bug_when>
    <thetext>Comment on attachment 128145
Patch for landing

Clearing flags on attachment: 128145

Committed r108468: &lt;http://trac.webkit.org/changeset/108468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561768</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 02:03:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561794</commentid>
    <comment_count>24</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-22 02:49:17 -0800</bug_when>
    <thetext>Chromium Windows builder has failed to compile this change:

http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Win%20Builder/builds/20781
22&gt;c:\b\build\slave\win-latest-rel\build\src\third_party\webkit\source\webcore\websockets\WebSocketDeflater.h(40) : fatalerror C1083: Cannot open include file: &apos;zlib.h&apos;: No such file or directory

Could you fix this ASAP, or roll the change out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561812</commentid>
    <comment_count>25</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-22 03:22:33 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Chromium Windows builder has failed to compile this change:
&gt; 
&gt; http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Win%20Builder/builds/20781
&gt; 22&gt;c:\b\build\slave\win-latest-rel\build\src\third_party\webkit\source\webcore\websockets\WebSocketDeflater.h(40) : fatalerror C1083: Cannot open include file: &apos;zlib.h&apos;: No such file or directory
&gt; 
&gt; Could you fix this ASAP, or roll the change out?

Rolled out the change. Sorry for that. Maybe I need to update WebCore.gyp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562981</commentid>
    <comment_count>26</comment_count>
      <attachid>128441</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-23 02:18:48 -0800</bug_when>
    <thetext>Created attachment 128441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562983</commentid>
    <comment_count>27</comment_count>
      <attachid>128441</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-23 02:20:21 -0800</bug_when>
    <thetext>Comment on attachment 128441
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562984</commentid>
    <comment_count>28</comment_count>
      <attachid>128441</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-23 02:22:25 -0800</bug_when>
    <thetext>Comment on attachment 128441
Patch

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563044</commentid>
    <comment_count>29</comment_count>
      <attachid>128441</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 05:21:10 -0800</bug_when>
    <thetext>Comment on attachment 128441
Patch

Rejecting attachment 128441 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:
hird_party/gold/gold64
30&gt;A    /mnt/git/webkit-commit-queue/Source/WebKit/chromium/third_party/gold/ld
30&gt;A    /mnt/git/webkit-commit-queue/Source/WebKit/chromium/third_party/gold/ld.bfd
30&gt;Checked out revision 120645.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/11603234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563577</commentid>
    <comment_count>30</comment_count>
      <attachid>128575</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-23 15:45:49 -0800</bug_when>
    <thetext>Created attachment 128575
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563937</commentid>
    <comment_count>31</comment_count>
      <attachid>128575</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 22:29:19 -0800</bug_when>
    <thetext>Comment on attachment 128575
Patch for landing

Clearing flags on attachment: 128575

Committed r108731: &lt;http://trac.webkit.org/changeset/108731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563938</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 22:29:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564004</commentid>
    <comment_count>33</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-23 23:49:23 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 128575 [details])
&gt; Clearing flags on attachment: 128575
&gt; 
&gt; Committed r108731: &lt;http://trac.webkit.org/changeset/108731&gt;

The new websocket tests fail on Qt. Maybe on other platforms too, but I don&apos;t know, because build.webkit.org is absolutely dead nowadays.

http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release/r108733%20%2834177%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564011</commentid>
    <comment_count>34</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-23 23:53:14 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; The new websocket tests fail on Qt. Maybe on other platforms too, but I don&apos;t know, because build.webkit.org is absolutely dead nowadays.
&gt; 
&gt; http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release/r108733%20%2834177%29/results.html

According to the change to Platform.h, new tests don&apos;t work on Qt and EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564012</commentid>
    <comment_count>35</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-24 00:01:28 -0800</bug_when>
    <thetext>Thanks. I added them to the skipped list: http://trac.webkit.org/changeset/108739/trunk/LayoutTests/platform/qt/Skipped</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564016</commentid>
    <comment_count>36</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-24 00:05:47 -0800</bug_when>
    <thetext>Thank you , ossy!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564032</commentid>
    <comment_count>37</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-24 00:22:51 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; Thank you , ossy!

I should have added entries to Skipped file. Thank you ossy and kent-san!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564102</commentid>
    <comment_count>38</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-24 01:57:10 -0800</bug_when>
    <thetext>I rolled out the patch again because it broke Chromium Win tests. I also removed entries added LayoutTests/platform/qt/Skipped file as r108739.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567552</commentid>
    <comment_count>39</comment_count>
      <attachid>129430</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-29 03:14:38 -0800</bug_when>
    <thetext>Created attachment 129430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567553</commentid>
    <comment_count>40</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-29 03:16:28 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; Created an attachment (id=129430) [details]
&gt; Patch

The previous patch relies on return value optimization. If copy constructors are called, (De|In)flateResultHolder objects call clear(De|In)flateContext() before frame sending/reconstructing. I revised the patch to use OwnPtr to avoid copy constructions. I confirmed all WebSocket tests ran as expected on my Win7 machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568113</commentid>
    <comment_count>41</comment_count>
      <attachid>129430</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-29 17:03:39 -0800</bug_when>
    <thetext>Comment on attachment 129430
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocketDeflateFramer.cpp:182
&gt; +    m_deflater = WebSocketDeflater::create(windowBits, mode);
&gt; +    m_inflater = WebSocketInflater::create();
&gt; +    if (!m_deflater || !m_inflater) {

Is it possible that m_deflater or m_inflater become 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568131</commentid>
    <comment_count>42</comment_count>
      <attachid>129430</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-29 17:22:40 -0800</bug_when>
    <thetext>Comment on attachment 129430
Patch

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

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketDeflateFramer.cpp:182
&gt;&gt; +    if (!m_deflater || !m_inflater) {
&gt; 
&gt; Is it possible that m_deflater or m_inflater become 0?

No. WebSocket(De|In)flater::create() could return 0 in work-in-progress patch, but they won&apos;t return 0 now. I forgot to remove this check. Will remove this check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568172</commentid>
    <comment_count>43</comment_count>
      <attachid>129574</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-29 18:21:03 -0800</bug_when>
    <thetext>Created attachment 129574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568175</commentid>
    <comment_count>44</comment_count>
      <attachid>129574</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-29 18:24:39 -0800</bug_when>
    <thetext>Comment on attachment 129574
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568209</commentid>
    <comment_count>45</comment_count>
      <attachid>129574</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-29 18:36:33 -0800</bug_when>
    <thetext>Comment on attachment 129574
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568467</commentid>
    <comment_count>46</comment_count>
      <attachid>129574</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 01:23:44 -0800</bug_when>
    <thetext>Comment on attachment 129574
Patch

Rejecting attachment 129574 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:
rame_wsh.py
patching file LayoutTests/http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header-expected.txt
patching file LayoutTests/http/tests/websocket/tests/hybi/send-file-blob_wsh.py
patching file LayoutTests/platform/efl/Skipped
patching file LayoutTests/platform/qt/Skipped
Hunk #1 succeeded at 256 (offset 1 line).

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;Kent Tamura&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11769305</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568473</commentid>
    <comment_count>47</comment_count>
      <attachid>129663</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-01 01:33:36 -0800</bug_when>
    <thetext>Created attachment 129663
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568568</commentid>
    <comment_count>48</comment_count>
      <attachid>129663</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 04:55:57 -0800</bug_when>
    <thetext>Comment on attachment 129663
Patch for landing

Rejecting attachment 129663 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:
ebKit/chromium/third_party/yasm/source/patched-yasm --revision 73761 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
48&gt;At revision 73761.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/11767406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568606</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 05:59:21 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 129663:

fast/workers/storage/use-same-database-in-page-and-workers.html bug 50995 (author: dumi@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569120</commentid>
    <comment_count>50</comment_count>
      <attachid>129786</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-01 18:00:08 -0800</bug_when>
    <thetext>Created attachment 129786
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569462</commentid>
    <comment_count>51</comment_count>
      <attachid>129786</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 02:25:01 -0800</bug_when>
    <thetext>Comment on attachment 129786
Patch for landing

Clearing flags on attachment: 129786

Committed r109538: &lt;http://trac.webkit.org/changeset/109538&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569464</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 02:25:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569627</commentid>
    <comment_count>53</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-03-02 06:39:08 -0800</bug_when>
    <thetext>Committed build fix r109564: &lt;http://trac.webkit.org/changeset/109564&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127896</attachid>
            <date>2012-02-20 19:22:32 -0800</date>
            <delta_ts>2012-02-21 17:41:26 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-77522-20120221122230.patch</filename>
            <type>text/plain</type>
            <size>50147</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKaW5kZXggOGQwMjQ0NThmMDMxMjgwMjExZDc0ZTcwZTViNGZhZWY5YjVlZDIzOS4uMDdjY2Fh
MGI3ZWFiY2YwNjhjYmJmMWE2OWUwOTczZTgzNjg5MGI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaApAQCAtMTE4MSw0ICsxMTgxLDggQEAKICNkZWZpbmUgV1RGX1VTRV9XVEZV
UkwgMAogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCisjZGVm
aW5lIFdURl9VU0VfWkxJQiAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU2ZjEwNGIwNDllMjRkNjJlNzM4Y2E4OTNhNWFkYWUw
NTk2MmRkYWUuLjEzYzI3ZjI3NzM5MmRmMGE1ZGViZmFlMzE3OGQ0ZWQ0NTJiOTdlMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0yMDQ5LDYgKzIwNDksNyBAQCBJRiAoRU5BQkxFX1dFQl9TT0NL
RVRTKQogICAgICAgICB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlci5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCiAgICAgICAgIHdl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lv
bkRpc3BhdGNoZXIuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyMzkxODc1YTBkZWMzZGFiOTY4Yzk2MjkxODE2
YzRjMGFkYjQwOTlkLi5jMTRkNjZiM2MwY2YwZGQ5MWQ5MjNlYzk3OWY5OTY5MGFlYTdjNDY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQzMzIsNiArNDMzMiw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYzMxOTBlNDViOThh
ZTgxNTg4YmRjNTdkMDAyYjZmNjI4OTBiMzc1NS4uYTFiMTI3ZGJiZmQxZjRkMDk3YTUxMjUyNWVh
ZDI0YWVmYWQwOTlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNjY2LDYgKzM2NjYsNyBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCisgICAgICAgIHdlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dEV4dGVuc2lvblByb2Nlc3Nvci5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFt
ZS5oIFwKQEAgLTM2NzcsNiArMzY3OCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJf
U09DS0VUUz0xKSB7CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIFwKICAgICAgICAgd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCiAgICAgICAgIHdlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDZjMmE2ZDg2OTNj
YmI1MDczNGUzNTVkMjU2NTc2MzY3ZTI2Mzg3ODguLjFjZDUzNmFhNzA1NWZlZTJkYzZmMGM0NzRm
MzRiYmMxM2YzMDg5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ4MTEsNiArNDgxMSw4IEBACiAg
ICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCcsCiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVGcmFtZXIuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
aCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDYyZGNkY2MzNWFhNzRlOWIwZGQ2ZmJmMTg2ZTliZjhiMjFkYTI4NDUuLjMyNTU2ZmIxMGMw
MDljZTYwNzhjM2M1Nzg2ODBmMGI3N2YyMzNmOTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03MzQzOCw2ICs3MzQzOCwxNCBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29j
a2V0c1xXZWJTb2NrZXREZWZsYXRlci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk5MGY0
MDU1MTcxY2FjNDVlY2FjYTE2NGRjMGVhMjc5Y2I3NzYxMTUuLmEzNjZlOWExOWNiYzE5Nzc3M2E1
Y2Q4NGFjMTczOTQyMzE5ZGYxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNjYsNiArMTM2Niw4IEBACiAJCTRBMUU3MUE1
MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEExRTcxQTMxNEUxMDZBQzAwNjI2RjlEIC8qIEpT
U2hhZG93Um9vdC5jcHAgKi87IH07CiAJCTRBMUU3MUE2MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1No
YWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLzsgfTsKIAkJNEE0
QTIzNDYxNEYxRTE0NDAwNDZGQkYxIC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTRBMjM0NTE0RjFFMTQ0MDA0NkZCRjEg
LyogV2ViU29ja2V0RnJhbWUuaCAqLzsgfTsKKwkJNEE1Rjk3RUIxNEYzNDI1RDAwNzlCMjkwIC8q
IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEE1Rjk3RTkxNEYzNDI1RDAwNzlCMjkwIC8qIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIuY3BwICovOyB9OworCQk0QTVGOTdFQzE0RjM0MjVEMDA3OUIyOTAgLyogV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEE1Rjk3RUExNEYzNDI1RDAwNzlCMjkwIC8qIFdlYlNvY2tldERlZmxhdGVG
cmFtZXIuaCAqLzsgfTsKIAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovOyB9Owog
CQk0QTZFOUZDNDEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzIxM0MxN0QxRDAw
NDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTZFOUZDNzEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZl
YXR1cmVTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5j
cHAgKi87IH07CkBAIC04MjMwLDYgKzgyMzIsOCBAQAogCQk0QTFFNzFBMzE0RTEwNkFDMDA2MjZG
OUQgLyogSlNTaGFkb3dSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTU2hhZG93Um9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMUU3
MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRBNEEyMzQ1MTRGMUUxNDQwMDQ2RkJGMSAvKiBXZWJTb2NrZXRGcmFtZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRGcmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QTVGOTdFOTE0RjM0MjVEMDA3OUIyOTAgLyogV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE1
Rjk3RUExNEYzNDI1RDAwNzlCMjkwIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oOyAKIAkJ
NEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZlYXR1cmVWYWx1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNkU5RkMyMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250
RmVhdHVyZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGZWF0
dXJlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzUxM0MxN0Q1
NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9udEZlYXR1cmVTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNDg0NCw2ICsxNDg0OCw4IEBACiAJCQkJNTEwRDRBNDcxMDMxNzdB
MjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovLAogCQkJCTUxMEQ0QTQ4MTAzMTc3
QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8sCiAJCQkJNTEwRDRBNDkxMDMxNzdB
MjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywKKwkJCQk0QTVGOTdFOTE0
RjM0MjVEMDA3OUIyOTAgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgKi8sCisJCQkJNEE1
Rjk3RUExNEYzNDI1RDAwNzlCMjkwIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCAqLywKIAkJ
CQk0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwICovLAog
CQkJCTRBRTAyQUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5oICovLAog
CQkJCTRBOTU3RjAzMTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcCAqLywKQEAgLTI0MjEyLDYgKzI0MjE4LDcgQEAKIAkJCQk1MThBMzRDMjEwMjZDODMx
MDAxQjY4OTYgLyogV2ViU29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBENEE0RjEwMzE3
N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEw
RDRBNTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTRBNUY5N0VDMTRGMzQyNUQwMDc5QjI5MCAvKiBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyog
V2ViU29ja2V0RGVmbGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBOTU3RjA3MTRFMjQxMzAw
MDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MTcwLDYgKzI3MTc3LDcgQEAKIAkJCQk1MThBMzRD
MTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
MEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRBOTU3RjA2MTRFMjQxMkEwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRBNUY5N0VCMTRGMzQyNUQwMDc5QjI5
MCAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBRTAy
QUJEMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTc2MzdDNTQxMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMWM0NzhlNjc1MjMwZjRiZDcy
ZmI1YzMxYzA5YTRmZTczNjc0M2FmYi4uN2FiMWFmNjQwZjdmNzY1ZGNhZWQ1Y2Q3Y2IzZjc2YmI1
ODY4YzNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC03MCw3ICs3MCw3IEBAIGNvbnN0IGRvdWJsZSBUQ1BNYXhpbXVtU2VnbWVudExp
ZmV0aW1lID0gMiAqIDYwLjA7CiAKIC8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3Jt
YXQuCiBjb25zdCB1bnNpZ25lZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVk
IGNoYXIgcmVzZXJ2ZWQxQml0ID0gMHg0MDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgY29tcHJlc3NC
aXQgPSAweDQwOwogY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDJCaXQgPSAweDIwOwogY29u
c3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDNCaXQgPSAweDEwOwogY29uc3QgdW5zaWduZWQgY2hh
ciBvcENvZGVNYXNrID0gMHhGOwpAQCAtMTI3LDYgKzEyNyw4IEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiAg
ICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAgICAgbV9oYW5kc2hha2UgPSBhZG9wdFB0cihuZXcg
V2ViU29ja2V0SGFuZHNoYWtlKHVybCwgcHJvdG9jb2wsIG1fZG9jdW1lbnQsIG1fdXNlSGl4aWU3
NlByb3RvY29sKSk7CiAgICAgbV9oYW5kc2hha2UtPnJlc2V0KCk7CisgICAgaWYgKCFtX3VzZUhp
eGllNzZQcm90b2NvbCAmJiBtX2RlZmxhdGVGcmFtZXIuY2FuRGVmbGF0ZSgpKQorICAgICAgICBt
X2hhbmRzaGFrZS0+YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKG1fZGVmbGF0ZUZyYW1lci5jcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKSk7CiAgICAgaWYgKG1faWRlbnRpZmllcikKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQobV9kb2N1bWVudCwgbV9p
ZGVudGlmaWVyLCB1cmwsIG1fZG9jdW1lbnQtPnVybCgpKTsKICAgICByZWYoKTsKQEAgLTIyOCw2
ICsyMzAsOCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFz
b24pCiAgICAgICAgIG1fc2hvdWxkRGlzY2FyZFJlY2VpdmVkRGF0YSA9IHRydWU7CiAgICAgICAg
IGlmIChtX2J1ZmZlcikKICAgICAgICAgICAgIHNraXBCdWZmZXIobV9idWZmZXJTaXplKTsgLy8g
U2F2ZSBtZW1vcnkuCisgICAgICAgIG1fZGVmbGF0ZUZyYW1lci5yZXNldERlZmxhdGVDb250ZXh0
KCk7CisgICAgICAgIG1fZGVmbGF0ZUZyYW1lci5yZXNldEluZmxhdGVDb250ZXh0KCk7CiAgICAg
ICAgIG1faGFzQ29udGludW91c0ZyYW1lID0gZmFsc2U7CiAgICAgICAgIG1fY29udGludW91c0Zy
YW1lRGF0YS5jbGVhcigpOwogICAgIH0KQEAgLTU0Nyw3ICs1NTEsNyBAQCBXZWJTb2NrZXRDaGFu
bmVsOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUoV2ViU29j
a2V0RnJhbWUmCiAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKIAogICAgIGJv
b2wgZmluYWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKLSAgICBib29sIHJlc2VydmVkMSA9IGZp
cnN0Qnl0ZSAmIHJlc2VydmVkMUJpdDsKKyAgICBib29sIGNvbXByZXNzID0gZmlyc3RCeXRlICYg
Y29tcHJlc3NCaXQ7CiAgICAgYm9vbCByZXNlcnZlZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDJC
aXQ7CiAgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDNCaXQ7CiAgICAg
dW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5dGUgJiBvcENvZGVNYXNrOwpAQCAtNTk2LDcg
KzYwMCw3IEBAIFdlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0Q2hh
bm5lbDo6cGFyc2VGcmFtZShXZWJTb2NrZXRGcmFtZSYKIAogICAgIGZyYW1lLm9wQ29kZSA9IHN0
YXRpY19jYXN0PFdlYlNvY2tldEZyYW1lOjpPcENvZGU+KG9wQ29kZSk7CiAgICAgZnJhbWUuZmlu
YWwgPSBmaW5hbDsKLSAgICBmcmFtZS5yZXNlcnZlZDEgPSByZXNlcnZlZDE7CisgICAgZnJhbWUu
Y29tcHJlc3MgPSBjb21wcmVzczsKICAgICBmcmFtZS5yZXNlcnZlZDIgPSByZXNlcnZlZDI7CiAg
ICAgZnJhbWUucmVzZXJ2ZWQzID0gcmVzZXJ2ZWQzOwogICAgIGZyYW1lLm1hc2tlZCA9IG1hc2tl
ZDsKQEAgLTYxOCwxNCArNjIyLDI1IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0Zy
YW1lKCkKICAgICBBU1NFUlQobV9idWZmZXIgPCBmcmFtZUVuZCk7CiAgICAgQVNTRVJUKGZyYW1l
RW5kIDw9IG1fYnVmZmVyICsgbV9idWZmZXJTaXplKTsKIAorICAgIGlmIChmcmFtZS5jb21wcmVz
cykgeworICAgICAgICBpZiAoIW1fZGVmbGF0ZUZyYW1lci5lbmFibGVkKCkgfHwgIVdlYlNvY2tl
dEZyYW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSkgeworICAgICAgICAgICAg
ZmFpbCgiUmVjZWl2ZWQgdW5leHBlY3RlZCBjb21wcmVzc2VkIGZyYW1lIik7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX2RlZmxhdGVGcmFtZXIu
aW5mbGF0ZShmcmFtZSkpIHsKKyAgICAgICAgICAgIGZhaWwoIkZhaWxlZCB0byBkZWNvbXByZXNz
IGZyYW1lIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICAvLyBWYWxpZGF0ZSB0aGUgZnJhbWUgZGF0YS4KICAgICBpZiAoV2ViU29ja2V0RnJhbWU6
OmlzUmVzZXJ2ZWRPcENvZGUoZnJhbWUub3BDb2RlKSkgewogICAgICAgICBmYWlsKCJVbnJlY29n
bml6ZWQgZnJhbWUgb3Bjb2RlOiAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUub3BDb2RlKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoZnJhbWUucmVzZXJ2ZWQxIHx8
IGZyYW1lLnJlc2VydmVkMiB8fCBmcmFtZS5yZXNlcnZlZDMpIHsKLSAgICAgICAgZmFpbCgiT25l
IG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMSA9ICIgKyBTdHJpbmc6Om51
bWJlcihmcmFtZS5yZXNlcnZlZDEpICsgIiwgcmVzZXJ2ZWQyID0gIiArIFN0cmluZzo6bnVtYmVy
KGZyYW1lLnJlc2VydmVkMikgKyAiLCByZXNlcnZlZDMgPSAiICsgU3RyaW5nOjpudW1iZXIoZnJh
bWUucmVzZXJ2ZWQzKSk7CisgICAgaWYgKGZyYW1lLnJlc2VydmVkMiB8fCBmcmFtZS5yZXNlcnZl
ZDMpIHsKKyAgICAgICAgZmFpbCgiT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJl
c2VydmVkMiA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5yZXNlcnZlZDIpICsgIiwgcmVzZXJ2
ZWQzID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLnJlc2VydmVkMykpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC03NTUsNiArNzcwLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBtX2RlZmxh
dGVGcmFtZXIucmVzZXRJbmZsYXRlQ29udGV4dCgpOwogICAgIHJldHVybiBtX2J1ZmZlcjsKIH0K
IApAQCAtOTc5LDYgKzk5NSw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1hc2tlZEZyYW1lUGF5bG9h
ZChjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYKIHN0YXRpYyB2b2lk
IG1ha2VGcmFtZURhdGEoY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lLCBWZWN0b3I8Y2hhcj4m
IGZyYW1lRGF0YSkKIHsKICAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9IChmcmFtZS5maW5h
bCA/IGZpbmFsQml0IDogMCkgfCBmcmFtZS5vcENvZGU7CisgICAgaWYgKGZyYW1lLmNvbXByZXNz
KQorICAgICAgICBmaXJzdEJ5dGUgfD0gY29tcHJlc3NCaXQ7CiAgICAgZnJhbWVEYXRhLmFwcGVu
ZChmaXJzdEJ5dGUpOwogICAgIGlmIChmcmFtZS5wYXlsb2FkTGVuZ3RoIDw9IG1heFBheWxvYWRM
ZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkKICAgICAgICAgZnJhbWVEYXRhLmFwcGVu
ZChtYXNrQml0IHwgZnJhbWUucGF5bG9hZExlbmd0aCk7CkBAIC0xMDA4LDExICsxMDI2LDE5IEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUg
b3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAKICAg
ICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BD
b2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgotICAgIFdlYlNvY2tldEZyYW1lIGZy
YW1lKG9wQ29kZSwgdHJ1ZSwgdHJ1ZSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgV2ViU29ja2V0
RnJhbWUgZnJhbWUob3BDb2RlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgaWYgKFdlYlNvY2tldEZyYW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2Rl
KSAmJiBkYXRhTGVuZ3RoICYmIG1fZGVmbGF0ZUZyYW1lci5lbmFibGVkKCkpIHsKKyAgICAgICAg
aWYgKCFtX2RlZmxhdGVGcmFtZXIuZGVmbGF0ZShmcmFtZSkpIHsKKyAgICAgICAgICAgIGZhaWwo
IkZhaWxlZCB0byBjb21wcmVzcyBmcmFtZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQogICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CiAgICAgbWFrZUZy
YW1lRGF0YShmcmFtZSwgZnJhbWVEYXRhKTsKIAotICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChm
cmFtZURhdGEuZGF0YSgpLCBmcmFtZURhdGEuc2l6ZSgpKTsKKyAgICBib29sIHJlc3VsdCA9IG1f
aGFuZGxlLT5zZW5kKGZyYW1lRGF0YS5kYXRhKCksIGZyYW1lRGF0YS5zaXplKCkpOworICAgIG1f
ZGVmbGF0ZUZyYW1lci5yZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWVIaXhpZTc2KGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaAppbmRleCA0YmIyOGM5ZjJiMDVhZjM0OTk3YmUwN2E2MmYxMmJjNGU5
ODM1ODE4Li42ZDFmZWJiY2EwNmUxZWQ3ZDVjZWUxNTBkODc2MGFmNzgwNDYyMTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
ICJXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
QEAgLTIzMSw2ICsyMzIsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxGaWxlUmVhZGVyTG9hZGVy
PiBtX2Jsb2JMb2FkZXI7CiAgICAgQmxvYkxvYWRlclN0YXR1cyBtX2Jsb2JMb2FkZXJTdGF0dXM7
CiAjZW5kaWYKKworICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgbV9kZWZsYXRlRnJhbWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUwYjY5MTA5
ODJhYWFlNzg5NjM5NDlmZjUzYzE1YWNjZTg5MTczOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTAsMCAr
MSwyMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
CisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3NvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9u
RGVmbGF0ZUZyYW1lPiBjcmVhdGUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRl
RnJhbWUoZnJhbWVyKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lvbkRl
ZmxhdGVGcmFtZSgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVS
ZWFzb24oKSBPVkVSUklERSB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworcHJpdmF0ZToK
KyAgICBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ciopOworCisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7CisgICAgYm9vbCBt
X3Jlc3BvbnNlUHJvY2Vzc2VkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9OworCisv
LyBGWElNRTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0
dXJlZC4KK1dlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKKyAgICA6IFdlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCisgICAgLCBt
X2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQoreworICAg
IEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRl
RnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCit7CisgICAgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7
IC8vIE5vIHBhcmFtZXRlcgorfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFt
ZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBzZXJ2ZXJQ
YXJhbWV0ZXJzKQoreworI2lmIFVTRShaTElCKQorICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2Vk
KSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0
ZS1mcmFtZSByZXNwb25zZSI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9y
ZXNwb25zZVByb2Nlc3NlZCA9IHRydWU7CisKKyAgICBpbnQgZXhwZWN0ZWROdW1QYXJhbWV0ZXJz
ID0gMDsKKyAgICBpbnQgd2luZG93Qml0cyA9IDE1OworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1h
eF93aW5kb3dfYml0cyIpOworICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5l
bmQoKSkgeworICAgICAgICB3aW5kb3dCaXRzID0gcGFyYW1ldGVyLT5zZWNvbmQudG9JbnQoKTsK
KyAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgeworICAgICAg
ICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRz
IHBhcmFtZXRlciI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzKys7CisgICAgfQorCisgICAgV2ViU29ja2V0RGVmbGF0
ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSA9IFdlYlNvY2tldERlZmxhdGVyOjpUYWtlT3Zl
ckNvbnRleHQ7CisgICAgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5maW5kKCJub19jb250
ZXh0X3Rha2VvdmVyIik7CisgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVu
ZCgpKSB7CisgICAgICAgIGlmICghcGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFr
ZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0Owor
ICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0
ZWROdW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7CisgICAgICAgIG1f
ZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1l
dGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fZnJhbWVyLT5lbmFi
bGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCitXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkKKyAgICA6IG1fZW5hYmxlZChmYWxzZSkKK3sK
K30KKworUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpCit7CisgICAgcmV0dXJuIFdl
YlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6Y3JlYXRlKHRoaXMpOworfQorCitib29sIFdl
YlNvY2tldERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdAoreworI2lmIFVTRShaTElC
KQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KworI2lmIFVTRShaTElCKQordm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZs
YXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVyTW9k
ZSBtb2RlKQoreworICAgIG1fZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKHdp
bmRvd0JpdHMsIG1vZGUpOworICAgIG1faW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3Jl
YXRlKCk7CisgICAgaWYgKCFtX2RlZmxhdGVyIHx8ICFtX2luZmxhdGVyKSB7CisgICAgICAgIG1f
ZGVmbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgbV9pbmZsYXRlci5jbGVhcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghbV9kZWZsYXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2lu
ZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKKyAgICAgICAgbV9kZWZsYXRlci5jbGVhcigpOworICAg
ICAgICBtX2luZmxhdGVyLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9l
bmFibGVkID0gdHJ1ZTsKK30KKyNlbmRpZgorCitib29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQoreworI2lmIFVTRShaTElCKQorICAgIGlm
ICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0
aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ZnJhbWUuY29tcHJlc3MgPSB0cnVlOworICAgIGZyYW1lLnBheWxvYWQgPSBtX2RlZmxhdGVyLT5k
YXRhKCk7CisgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IG1fZGVmbGF0ZXItPnNpemUoKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVz
ZXREZWZsYXRlQ29udGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1fZGVmbGF0ZXIp
CisgICAgICAgIG1fZGVmbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30KKworYm9vbCBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBV
U0UoWkxJQikKKyAgICBpZiAoIW1faW5mbGF0ZXItPmFkZEJ5dGVzKGZyYW1lLnBheWxvYWQsIGZy
YW1lLnBheWxvYWRMZW5ndGgpIHx8ICFtX2luZmxhdGVyLT5maW5pc2goKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGZyYW1lLmNvbXByZXNzID0gZmFsc2U7CisgICAgZnJhbWUucGF5bG9h
ZCA9IG1faW5mbGF0ZXItPmRhdGEoKTsKKyAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9pbmZs
YXRlci0+c2l6ZSgpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpyZXNldEluZmxhdGVDb250ZXh0KCkKK3sKKyNpZiBVU0UoWkxJQikKKyAg
ICBpZiAobV9pbmZsYXRlcikKKyAgICAgICAgbV9pbmZsYXRlci0+cmVzZXQoKTsKKyNlbmRpZgor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tF
VFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgzOGFlZjU4ZDAyMTU3MmNkZDlhZGUxNjM5Y2IyMTVlMTVjYTg2
MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVGcmFtZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcl9oCisjZGVmaW5lIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaAorCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorCisjaWYgVVNFKFpMSUIpCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0
ZXIuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIgor
I2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
V2ViU29ja2V0RGVmbGF0ZUZyYW1lciB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcigpOworCisgICAgUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IGNy
ZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpOworCisgICAgYm9vbCBjYW5EZWZsYXRlKCkgY29uc3Q7
CisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisKKyAgICBi
b29sIGRlZmxhdGUoV2ViU29ja2V0RnJhbWUmKTsKKyAgICB2b2lkIHJlc2V0RGVmbGF0ZUNvbnRl
eHQoKTsKKyAgICBib29sIGluZmxhdGUoV2ViU29ja2V0RnJhbWUmKTsKKyAgICB2b2lkIHJlc2V0
SW5mbGF0ZUNvbnRleHQoKTsKKworI2lmIFVTRShaTElCKQorICAgIHZvaWQgZW5hYmxlRGVmbGF0
ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUp
OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2VuYWJsZWQ7CisjaWYgVVNFKFpMSUIp
CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBtX2RlZmxhdGVyOworICAgIE93blB0cjxX
ZWJTb2NrZXRJbmZsYXRlcj4gbV9pbmZsYXRlcjsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0RGVmbGF0ZUZyYW1l
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1l
LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmgKaW5kZXggMTlk
ZDdhYjk4YzJlZDE0NmYxNTY3ZjBhOTFhNzczMThkNjkyYzY5OC4uN2VmZWE3OGRiMWQzYTQ0NjIz
NWFjOTgwMWJkNWZiNmRkM2ZhNGU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0RnJhbWUuaApAQCAtNTEsMTAgKzUxLDEwIEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZSB7
CiAgICAgc3RhdGljIGJvb2wgaXNDb250cm9sT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJu
IG9wQ29kZSA9PSBPcENvZGVDbG9zZSB8fCBvcENvZGUgPT0gT3BDb2RlUGluZyB8fCBvcENvZGUg
PT0gT3BDb2RlUG9uZzsgfQogICAgIHN0YXRpYyBib29sIGlzUmVzZXJ2ZWRPcENvZGUoT3BDb2Rl
IG9wQ29kZSkgeyByZXR1cm4gIWlzTm9uQ29udHJvbE9wQ29kZShvcENvZGUpICYmICFpc0NvbnRy
b2xPcENvZGUob3BDb2RlKTsgfQogCi0gICAgV2ViU29ja2V0RnJhbWUoT3BDb2RlIG9wQ29kZSA9
IE9wQ29kZUludmFsaWQsIGJvb2wgZmluYWwgPSBmYWxzZSwgYm9vbCBtYXNrZWQgPSBmYWxzZSwg
Y29uc3QgY2hhciogcGF5bG9hZCA9IDAsIHNpemVfdCBwYXlsb2FkTGVuZ3RoID0gMCkKKyAgICBX
ZWJTb2NrZXRGcmFtZShPcENvZGUgb3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9
IGZhbHNlLCBib29sIGNvbXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0
IGNoYXIqIHBheWxvYWQgPSAwLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApCiAgICAgICAgIDog
b3BDb2RlKG9wQ29kZSkKICAgICAgICAgLCBmaW5hbChmaW5hbCkKLSAgICAgICAgLCByZXNlcnZl
ZDEoZmFsc2UpCisgICAgICAgICwgY29tcHJlc3MoY29tcHJlc3MpCiAgICAgICAgICwgcmVzZXJ2
ZWQyKGZhbHNlKQogICAgICAgICAsIHJlc2VydmVkMyhmYWxzZSkKICAgICAgICAgLCBtYXNrZWQo
bWFza2VkKQpAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgV2ViU29ja2V0RnJhbWUgewogCiAgICAg
T3BDb2RlIG9wQ29kZTsKICAgICBib29sIGZpbmFsOwotICAgIGJvb2wgcmVzZXJ2ZWQxOworICAg
IGJvb2wgY29tcHJlc3M7CiAgICAgYm9vbCByZXNlcnZlZDI7CiAgICAgYm9vbCByZXNlcnZlZDM7
CiAgICAgYm9vbCBtYXNrZWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQt
Y29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQxZWM0NzNkNmJlMjFjMWMw
NjAxMDI5ZmZjNWZhMzljY2JmMzgyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVu
ZXhwZWN0ZWQgY29tcHJlc3NlZCBmcmFtZQorVGVzdCB3aGV0aGVyIGEgY29tcHJlc3NlZCBjb250
cm9sIGZyYW1lIGlzIHJlamVjdGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25v
cGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50
Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjIwODhjNzk5YmU0MTFjMTIyODEyYTUwOTQyZmE4Mzk4MzgwMDlh
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0MSBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCB3
aGV0aGVyIGEgY29tcHJlc3NlZCBjb250cm9sIGZyYW1lIGlzIHJlamVjdGVkIik7CisKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2Nr
ZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1j
b250cm9sLWZyYW1lIik7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24o
KQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOwor
ICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsg
bWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sK
KyAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2
ZW50OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGU4ODdhZWFiYTU2NjhhZTMxNWVjMDRiMThlZDc0ZTE3NzNhNTMyZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDQ4IEBACisjIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQoraW1wb3J0IHpsaWIKKworCitkZWYgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJf
c29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgY29tcHJlc3MgPSB6bGliLmNvbXBy
ZXNzb2JqKAorICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwgLXpsaWIuTUFYX1dCSVRTKQorICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzLmNv
bXByZXNzKCdjbG9zZSBtZXNzYWdlJykKKyAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29tcHJl
c3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgY29tcHJlc3NlZF9tZXNzYWdlID0gY29t
cHJlc3NlZF9tZXNzYWdlWzotNF0KKyAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigK
KyAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ0xPU0UsIHBheWxvYWRfbGVuZ3RoPWxlbihj
b21wcmVzc2VkX21lc3NhZ2UpLAorICAgICAgICBmaW49MSwgcnN2MT0xLCByc3YyPTAsIHJzdjM9
MCwgbWFzaz1GYWxzZSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaGVhZGVyICsgY29t
cHJlc3NlZF9tZXNzYWdlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZS1jb21wLWJpdC1vbm9mZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYyZmVmM2RlNmYw
ZmU0MDgwZWEyZDM1MjNmMjk1YjQzODYyM2YzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJp
dC1vbm9mZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCBjb21wcmVzc2lvbiBl
bmFibGVkL2Rpc2FibGVkIGZyYW1lIHJlY2VpdmluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitTZW5kaW5nIG1lc3NhZ2U6ICJIZWxsbyIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnSGVs
bG8nCitTZW5kaW5nIG1lc3NhZ2U6ICJEaXNhYmxlQ29tcHJlc3Npb24iCitQQVNTIGV2ZW50LmRh
dGEgaXMgJ0Rpc2FibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVzc2FnZTogIldvcmxkIgorUEFT
UyBldmVudC5kYXRhIGlzICdXb3JsZCcKK1NlbmRpbmcgbWVzc2FnZTogIkVuYWJsZUNvbXByZXNz
aW9uIgorUEFTUyBldmVudC5kYXRhIGlzICdFbmFibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVz
c2FnZTogIkdvb2RieWUiCitQQVNTIGV2ZW50LmRhdGEgaXMgJ0dvb2RieWUnCitvbmNsb3NlKCkg
d2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNv
bXAtYml0LW9ub2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Njdm
MWFjNGUyNDI3NTNjM2VhZWYxYjhkZWYyMTBkOTg2MmZkMmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1l
LWNvbXAtYml0LW9ub2ZmLmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFET0NUWVBFIEhUTUw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3QgY29tcHJlc3Npb24gZW5hYmxlZC9kaXNhYmxlZCBmcmFtZSByZWNlaXZp
bmcuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciBj
bG9zZUV2ZW50OwordmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFyIG1lc3NhZ2VzID0g
WworICAgICJIZWxsbyIsCisgICAgIkRpc2FibGVDb21wcmVzc2lvbiIsIC8vIFRoaXMgZGlzYWJs
ZXMgY29tcHJlc3Npb24KKyAgICAiV29ybGQiLAorICAgICJFbmFibGVDb21wcmVzc2lvbiIsIC8v
IFRoaXMgZW5hYmxlcyBjb21wcmVzc2lvbgorICAgICJHb29kYnllIgorXTsKKword3MgPSBuZXcg
V2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxh
dGUtZnJhbWUiKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgLy9zaG91
bGRCZSgid3MuZXh0ZW5zaW9ucyIsICIneC13ZWJraXQtZGVmbGF0ZS1mcmFtZSciKTsKKyAgICBt
ZXNzYWdlSW5kZXggPSAwOworICAgIGRlYnVnKCJTZW5kaW5nIG1lc3NhZ2U6IFwiIiArIG1lc3Nh
Z2VzW21lc3NhZ2VJbmRleF0gKyAiXCIiKTsKKyAgICB3cy5zZW5kKG1lc3NhZ2VzW21lc3NhZ2VJ
bmRleF0pOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgc2hv
dWxkQmUoImV2ZW50LmRhdGEiLCAiJyIgKyBtZXNzYWdlc1ttZXNzYWdlSW5kZXhdICsgIiciKTsK
KyAgICBpZiAobWVzc2FnZUluZGV4ID09PSBtZXNzYWdlcy5sZW5ndGggLSAxKQorICAgICAgICB3
cy5jbG9zZSgpOworICAgIGVsc2UgeworICAgICAgICBtZXNzYWdlSW5kZXggKz0gMTsKKyAgICAg
ICAgZGVidWcoIlNlbmRpbmcgbWVzc2FnZTogXCIiICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSAr
ICJcIiIpOworICAgICAgICB3cy5zZW5kKG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0pOworICAgIH0K
K307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBkZWJ1Zygib25jbG9z
ZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJl
VHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1p
bnZhbGlkLXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgzYTI0ZDI4Y2MyMzNiN2E1ZjYzNDkzYjk1ZDBmODFiYTdmMzRk
YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjggQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZs
YXRlLWZyYW1lIHBhcmFtZXRlcgorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCBpbnZhbGlkIG1h
eF93aW5kb3dfYml0cyBwYXJhbWV0ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgaW52YWxp
ZCBtYXhfd2luZG93X2JpdHMgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIGlu
dmFsaWQgbm9fY29udGV4dF90YWtlb3ZlciBwYXJhbWV0ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVj
ZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRlcgorVGVzdCB3aGV0aGVyIFdl
YlNvY2tldCByZWplY3RzIGludmFsaWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0ZXJzLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3RpbmcgcGFyYW1ldGVyOiAieC1mb28iCitvbmNs
b3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVz
dGluZyBwYXJhbWV0ZXI6ICJtYXhfd2luZG93X2JpdHM9NyIKK29uY2xvc2UoKSB3YXMgY2FsbGVk
LgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitUZXN0aW5nIHBhcmFtZXRlcjog
Im1heF93aW5kb3dfYml0cz0xNiIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm5vX2NvbnRleHRfdGFr
ZW92ZXI9Zm9vIgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgZmFsc2UKK1Rlc3RpbmcgcGFyYW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTg7IG5vX2Nv
bnRleHRfdGFrZW92ZXI7IHgtZm9vIgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNWZiZDA2ZDIwMmEzZWNjODAy
YWUyNGE3NzllZjY0YjkzOWE5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0
ZXIuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVz
dCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGludmFsaWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0
ZXJzLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIg
Y2xvc2VFdmVudDsKKwordmFyIHRlc3RDYXNlID0gWworICAgICJ4LWZvbyIsCisgICAgIm1heF93
aW5kb3dfYml0cz03IiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTE2IiwKKyAgICAibm9fY29udGV4
dF90YWtlb3Zlcj1mb28iLAorICAgICJtYXhfd2luZG93X2JpdHM9ODsgbm9fY29udGV4dF90YWtl
b3ZlcjsgeC1mb28iCitdOworCitmdW5jdGlvbiBkb1Rlc3QoaW5kZXgpCit7CisgICAgdmFyIHBh
cmFtZXRlciA9IHRlc3RDYXNlW2luZGV4XTsKKyAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0
Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRl
cj8iICsgZW5jb2RlVVJJKHBhcmFtZXRlcik7CisgICAgdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1
cmwpOworCisgICAgZGVidWcoIlRlc3RpbmcgcGFyYW1ldGVyOiBcIiIgKyBwYXJhbWV0ZXIgKyAi
XCIiKTsKKworICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgICAgICB0ZXN0RmFpbGVkKCJvbm1lc3Nh
Z2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAg
fTsKKworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGRl
YnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50
OworICAgICAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgICAg
IGlmIChpbmRleCA9PT0gdGVzdENhc2UubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb1Rlc3QoaW5kZXggKyAxKTsKKyAg
ICB9OworfQorCitkb1Rlc3QoMCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFs
aWQtcGFyYW1ldGVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODQ1OGE2OTg1ZGFiZGVjOWMwMjRhMjU1
MDVjNmJkMDU4MGE2NjU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dz
aC5weQpAQCAtMCwwICsxLDI3IEBACitpbXBvcnQgdXJsbGliCitmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgaGFuZHNoYWtlCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBp
bXBvcnQgY29tcHV0ZV9hY2NlcHQKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6CisgICAgcmVzb3VyY2VzID0gcmVxdWVzdC53c19yZXNvdXJjZS5zcGxpdCgn
PycsIDEpCisgICAgcGFyYW1ldGVycyA9IE5vbmUKKyAgICBpZiBsZW4ocmVzb3VyY2VzKSA9PSAy
OgorICAgICAgICBwYXJhbWV0ZXJzID0gdXJsbGliLnVucXVvdGUocmVzb3VyY2VzWzFdKQorICAg
IAorICAgIG1lc3NhZ2UgPSAnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJwor
ICAgIG1lc3NhZ2UgKz0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgbWVzc2FnZSArPSAn
Q29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisgICAgbWVzc2FnZSArPSAnU2VjLVdlYlNvY2tldC1B
Y2NlcHQ6ICVzXHJcbicgJSBjb21wdXRlX2FjY2VwdChyZXF1ZXN0LmhlYWRlcnNfaW5bJ1NlYy1X
ZWJTb2NrZXQtS2V5J10pWzBdCisgICAgbWVzc2FnZSArPSAnU2VjLVdlYlNvY2tldC1FeHRlbnNp
b25zOiB4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJworICAgIGlmIHBhcmFtZXRlcnM6CisgICAgICAg
IG1lc3NhZ2UgKz0gJzsgJXNcclxuJyAlIHBhcmFtZXRlcnMKKyAgICBlbHNlOgorICAgICAgICBt
ZXNzYWdlICs9ICdcclxuJworICAgIG1lc3NhZ2UgKz0gJ1xyXG4nCisgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlKG1lc3NhZ2UpCisgICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJF
eGNlcHRpb24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50cyBweXdlYnNvY2tldCBm
cm9tIHNlbmRpbmcgaXRzIG93biBoYW5kc2hha2UgbWVzc2FnZS4KKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Fi
Y2IwMTE0ZTk3MDk0NGRiMDZiZGZlYTA3MDY3OTExNGUyYjA2NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3QgV2ViU29ja2V0
IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1Rlc3RpbmcgcGFyYW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTgiCitQQVNTIGV2ZW50LmRhdGEg
aXMgZmlyc3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2FnZQorb25jbG9z
ZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorVGVzdGlu
ZyBwYXJhbWV0ZXI6ICJub19jb250ZXh0X3Rha2VvdmVyIgorUEFTUyBldmVudC5kYXRhIGlzIGZp
cnN0TWVzc2FnZQorUEFTUyBldmVudC5kYXRhIGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3
YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1Rlc3RpbmcgcGFy
YW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTgmbm9fY29udGV4dF90YWtlb3ZlciIKK1BBU1MgZXZl
bnQuZGF0YSBpcyBmaXJzdE1lc3NhZ2UKK1BBU1MgZXZlbnQuZGF0YSBpcyBzZWNvbmRNZXNzYWdl
CitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZs
YXRlLWZyYW1lLXBhcmFtZXRlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQw
NzI3ZmNjNTczMmFjYmI2MGEyYjJkZWEwZjJmN2M0MzcwMjg5MGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtcGFyYW1ldGVyLmh0bWwKQEAgLTAsMCArMSw4NyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIlRlc3QgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLiIpOworCit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4
aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKK3Zh
ciB3czsKK3ZhciBtZXNzYWdlSW5kZXg7CisKK3ZhciBwYXJhbWV0ZXJzID0gWworICAgICJtYXhf
d2luZG93X2JpdHM9OCIsCisgICAgIm5vX2NvbnRleHRfdGFrZW92ZXIiLAorICAgICJtYXhfd2lu
ZG93X2JpdHM9OCZub19jb250ZXh0X3Rha2VvdmVyIgorXTsKKworLy8gVGhlIGZpcnN0IG1lc3Nh
Z2UgY29uc2lzdHMgb2YgYSBsb3Qgb2YgJ2InIGFuZCBhIGZldyAnYScgYXQgdGhlIGhlYWQgYW5k
CisvLyB0aGUgdGFpbCwgd2hpbGUgdGhlIHNlY29uZCBvbmUgY29uc2lzdHMgb2YgJ2EnLgordmFy
IGZpcnN0TWVzc2FnZSA9ICcnOwordmFyIHNlY29uZE1lc3NhZ2UgPSAnJzsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTY7ICsraSkgeworICAgIGZpcnN0TWVzc2FnZSArPSAnYSc7CisgICAgc2Vjb25k
TWVzc2FnZSArPSAnYSc7Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMjQ7ICsraSkgeworICAg
IGZpcnN0TWVzc2FnZSArPSAnYic7CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9Citmb3Ig
KHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICBmaXJzdE1lc3NhZ2UgKz0gJ2EnOworICAg
IHNlY29uZE1lc3NhZ2UgKz0gJ2EnOworfQorCitmdW5jdGlvbiBkb1Rlc3QocGFyYW1ldGVySW5k
ZXgpCit7CisgICAgdmFyIHBhcmFtZXRlciA9IHBhcmFtZXRlcnNbcGFyYW1ldGVySW5kZXhdOwor
ICAgIGRlYnVnKCJUZXN0aW5nIHBhcmFtZXRlcjogXCIiICsgcGFyYW1ldGVyICsgIlwiIik7CisK
KyAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZGVmbGF0ZS1mcmFtZT8iICsgcGFyYW1ldGVyOworICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwp
OworICAgIG1lc3NhZ2VJbmRleCA9IDA7CisKKyAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIC8vc2hvdWxkQmUoIndzLmV4dGVuc2lvbnMiLCAiJ3gtd2Via2l0
LWRlZmxhdGUtZnJhbWUnIik7CisgICAgICAgIHdzLnNlbmQoZmlyc3RNZXNzYWdlKTsKKyAgICB9
OworCisgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAobWVzc2FnZUluZGV4ID09PSAwKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQuZGF0
YSIsICJmaXJzdE1lc3NhZ2UiKTsKKyAgICAgICAgICAgIG1lc3NhZ2VJbmRleCArPSAxCisgICAg
ICAgICAgICB3cy5zZW5kKHNlY29uZE1lc3NhZ2UpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAic2Vjb25kTWVzc2FnZSIpOworICAgICAgICAg
ICAgd3MuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQu
Iik7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJj
bG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgICAgIGlmIChwYXJhbWV0ZXJJbmRleCA9PT0gcGFy
YW1ldGVycy5sZW5ndGggLSAxKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGRvVGVzdChwYXJhbWV0ZXJJbmRleCArIDEpOworICAgIH07Cit9
CisKK2RvVGVzdCgwKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ODZkZWE2ODVh
ZTBiNTJhMjIxY2Q4NGU0ZTJjNjUwZTJjMWRjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5
CkBAIC0wLDAgKzEsODMgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBjZ2kKK2Zyb20g
bW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IERlZmxhdGVGcmFtZUV4dGVuc2lvblBy
b2Nlc3NvcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRXh0ZW5zaW9u
UHJvY2Vzc29ySW50ZXJmYWNlCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4
dGVuc2lvblBhcmFtZXRlcgorCisKK19HT09EQllFX01FU1NBR0UgPSB1J0dvb2RieWUnCitfRU5B
QkxFX01FU1NBR0UgPSB1J0VuYWJsZUNvbXByZXNzaW9uJworX0RJU0FCTEVfTUVTU0FHRSA9IHUn
RGlzYWJsZUNvbXByZXNzaW9uJworCisKK2RlZiBfZ2V0X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9u
X3Byb2Nlc3NvcihyZXF1ZXN0KToKKyAgICBmb3IgZXh0ZW5zaW9uX3Byb2Nlc3NvciBpbiByZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV4dGVu
c2lvbl9wcm9jZXNzb3IsIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAg
ICAgICByZXR1cm4gZXh0ZW5zaW9uX3Byb2Nlc3NvcgorICAgIHJldHVybiBOb25lCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHByb2Nlc3NvciA9
IF9nZXRfZGVmbGF0ZV9mcmFtZV9leHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpCisgICAgaWYg
bm90IHByb2Nlc3NvcjoKKyAgICAgICAgcmV0dXJuCisgICAgciA9IHJlcXVlc3Qud3NfcmVzb3Vy
Y2Uuc3BsaXQoJz8nLCAxKQorICAgIGlmIGxlbihyKSA9PSAxOgorICAgICAgICByZXR1cm4KKyAg
ICBwYXJhbWV0ZXJzID0gY2dpLnBhcnNlX3FzKHJbMV0pCisgICAgaWYgJ21heF93aW5kb3dfYml0
cycgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgd2luZG93X2JpdHMgPSBpbnQocGFyYW1ldGVyc1sn
bWF4X3dpbmRvd19iaXRzJ11bMF0pCisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfd2lu
ZG93X2JpdHMod2luZG93X2JpdHMpCisgICAgaWYgJ25vX2NvbnRleHRfdGFrZW92ZXInIGluIHBh
cmFtZXRlcnM6CisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90YWtl
b3ZlcihUcnVlKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgcHJvY2Vzc29yID0gX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVx
dWVzdCkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0u
cmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6CisgICAgICAgICAg
ICBpZiBwcm9jZXNzb3I6CisgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBfRU5BQkxFX01FU1NB
R0U6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5lbmFibGVfb3V0Z29pbmdfY29tcHJl
c3Npb24oKQorICAgICAgICAgICAgICAgIGVsaWYgbGluZSA9PSBfRElTQUJMRV9NRVNTQUdFOgor
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuZGlzYWJsZV9vdXRnb2luZ19jb21wcmVzc2lv
bigpCisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmlu
YXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAg
ICAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVxdWVzdC53
c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1m
YWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCBhZGYwNmI2NTFkNmI0
NzE1YjRhMWI5N2M4N2M5NjAyMzNhYWUxZmEwLi5jYzk5YWYwZGQxNjVkNTNmNDA2NzBjNWM1ODZh
ZWM5OWVmYjY4M2NhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hh
bmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBTZWMtV2ViU29ja2V0
LUV4dGVuc2lvbnMgaGVhZGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQg
ZXh0ZW5zaW9uOiB4LWZvbwogVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMg
aWYgdGhlIHNlcnZlciBzZW5kcyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyLgogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLWV4
cGVjdGVkLnR4dAppbmRleCA3OGU0MGQ2MzI1NWNkYzdkODQyMDRmMmM1MjcxOGFhYTIyNjgzMTdl
Li42M2E4ZDYxN2JmNmI5ZTc4ZDQzMGRhOWRiOThhMWRkZjBlZDcxNTk1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQKQEAgLTEsMTQgKzEsOSBAQAotQ09OU09M
RSBNRVNTQUdFOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0g
MSwgcmVzZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQzID0gMAotQ09OU09MRSBNRVNTQUdFOiBPbmUgb3Ig
bW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gMCwgcmVzZXJ2ZWQyID0gMSwg
cmVzZXJ2ZWQzID0gMAotQ09OU09MRSBNRVNTQUdFOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRz
IGFyZSBvbjogcmVzZXJ2ZWQxID0gMCwgcmVzZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQzID0gMQorQ09O
U09MRSBNRVNTQUdFOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQy
ID0gMSwgcmVzZXJ2ZWQzID0gMAorQ09OU09MRSBNRVNTQUdFOiBPbmUgb3IgbW9yZSByZXNlcnZl
ZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQzID0gMQogVGVzdCB3aGV0aGVy
IFdlYlNvY2tldCByZWplY3RzIGZyYW1lcyB3aG9zZSByZXNlcnZlZCBiaXQgaXMgb24uCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotQml0IDE6IFRlc3Qgc3RhcnRlZC4KLW9ub3Blbigp
IHdhcyBjYWxsZWQuCi1vbmNsb3NlKCkgd2FzIGNhbGxlZC4KLVBBU1MgY2xvc2VFdmVudC53YXND
bGVhbiBpcyBmYWxzZQogQml0IDI6IFRlc3Qgc3RhcnRlZC4KIG9ub3BlbigpIHdhcyBjYWxsZWQu
CiBvbmNsb3NlKCkgd2FzIGNhbGxlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWwKaW5kZXgg
NGIzZTBmMjU3YTYwOWEyMzY4NTk1MWEzOTk3YTkxOThkZDQ2M2ZkNC4uZWM4ZGQzM2E3NWJhYmE2
Njc2YTJjY2MzMzY5MmQ5NDNkMzFjZjY4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWwK
QEAgLTE1LDcgKzE1LDcgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKIAogdmFy
IGNsb3NlRXZlbnQ7CiAKLS8vIGJpdE51bWJlciBtdXN0IGJlIDEsIDIsIG9yIDMuCisvLyBiaXRO
dW1iZXIgbXVzdCBiZSAyIG9yIDMuCiBmdW5jdGlvbiBkb1Rlc3QoYml0TnVtYmVyKQogewogICAg
IHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNl
cnZlZC1iaXRzP2JpdD0iICsgYml0TnVtYmVyOwpAQCAtNDYsNyArNDYsNyBAQCBmdW5jdGlvbiBk
b1Rlc3QoYml0TnVtYmVyKQogICAgIH07CiB9CiAKLWRvVGVzdCgxKTsKK2RvVGVzdCgyKTsKIAog
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYl93c2gucHkK
aW5kZXggZGFhNDQwNDcxYWY4M2FiMjYyODY3NTFjM2UxODg4MmY0ODRkYjc4Yy4uNzkyMDM0Y2Zl
M2I3MGUwNDgzYjVkZTk1ZTRlMTcwMWQ5Nzc4MmNhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYl93c2gucHkKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUt
YmxvYl93c2gucHkKQEAgLTIsNiArMiwxNCBAQCBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
Y29tbW9uCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAogCiAKK2RlZiBfcmV0
cmlldmVfZnJhbWUoc3RyZWFtKToKKyAgICAjIEZJWE1FOiBVc2UgYmV0dGVyIEFQSS4KKyAgICBm
cmFtZSA9IHN0cmVhbS5fcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3QoKQorICAgIGZvciBm
cmFtZV9maWx0ZXIgaW4gc3RyZWFtLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRlcnM6Cisg
ICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisgICAgcmV0dXJuIGZyYW1lCisKKwog
ZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogICAgIHBhc3MgIyBB
bHdheXMgYWNjZXB0LgogCkBAIC0xMCwxMiArMTgsMTEgQEAgZGVmIHdlYl9zb2NrZXRfdHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KToKICAgICBleHBlY3RlZF9tZXNzYWdlcyA9IFsnSGVsbG8sIHdvcmxk
ISddCiAKICAgICBmb3IgdGVzdF9udW1iZXIsIGV4cGVjdGVkX21lc3NhZ2UgaW4gZW51bWVyYXRl
KGV4cGVjdGVkX21lc3NhZ2VzKToKLSAgICAgICAgIyBGSVhNRTogVXNlIGJldHRlciBBUEkuCi0g
ICAgICAgIG9wY29kZSwgcGF5bG9hZCwgZmluYWwsIHVudXNlZF9yZXNlcnZlZDEsIHVudXNlZF9y
ZXNlcnZlZDIsIHVudXNlZF9yZXNlcnZlZDMgPSByZXF1ZXN0LndzX3N0cmVhbS5fcmVjZWl2ZV9m
cmFtZSgpCi0gICAgICAgIGlmIG9wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWSBhbmQgcGF5
bG9hZCA9PSBleHBlY3RlZF9tZXNzYWdlIGFuZCBmaW5hbDoKKyAgICAgICAgZnJhbWUgPSBfcmV0
cmlldmVfZnJhbWUocmVxdWVzdC53c19zdHJlYW0pCisgICAgICAgIGlmIGZyYW1lLm9wY29kZSA9
PSBjb21tb24uT1BDT0RFX0JJTkFSWSBhbmQgZnJhbWUucGF5bG9hZCA9PSBleHBlY3RlZF9tZXNz
YWdlIGFuZCBmcmFtZS5maW46CiAgICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1
ZXN0LCAnUEFTUzogTWVzc2FnZSAjJWQuJyAlIHRlc3RfbnVtYmVyKQogICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IE1lc3NhZ2Ug
IyVkOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBvcGNvZGUgPSAlciwgcGF5bG9hZCA9ICVy
LCBmaW5hbCA9ICVyJyAlICh0ZXN0X251bWJlciwgb3Bjb2RlLCBwYXlsb2FkLCBmaW5hbCkpCisg
ICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAj
JWQ6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZnJhbWU6IG9wY29kZSA9ICVyLCBwYXlsb2FkID0gJXIs
IGZpbmFsID0gJXInICUgKHRlc3RfbnVtYmVyLCBmcmFtZS5vcGNvZGUsIGZyYW1lLnBheWxvYWQs
IGZyYW1lLmZpbikpCiAKIAogZGVmIGFsbF9kaXN0aW5jdF9ieXRlcygpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128096</attachid>
            <date>2012-02-21 17:40:45 -0800</date>
            <delta_ts>2012-02-21 22:09:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77522-20120222104044.patch</filename>
            <type>text/plain</type>
            <size>57575</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGY0ZTBhMjcyYjM5MzQ4MzMxYTRkMTQxYTQ2YzljM2NlNThiMTJkLi45Y2Y1MTMyMzYzODk3MDgw
Njk5NWY2MGMzYjdiNzc4Y2M2ZGVmMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0w
Mi0yMSAgUm9sYW5kIFRha2FjcyAgPHRha2Fjcy5yb2xhbmRAc3R1ZC51LXN6ZWdlZC5odT4KIAog
ICAgICAgICBVbm5lY2Vzc2FyeSBwcmVwcm9jZXNzb3IgbWFjcm9zIGluIE1haW5UaHJlYWQuaC9j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA0ZDMwNjExNmFkNThmNzU0MmNkOGY1Mzg4ZGQ5NGNhMWRlZjc5NjM4
Li44NDg1YTEyOWE2NGMwZTQzM2E1YzMzZDIyMDQ5ZDk5MzZjMmRmZDI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjEgQEAKKzIwMTItMDItMjEgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEFkZGluZyBXZWJTb2NrZXQgcGVyLWZyYW1lIERFRkxBVEUg
ZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NzUyMgorCisgICAgICAgIEFkZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyIGNsYXNzIHdoaWNo
IGhhbmRsZXMgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uCisgICAgICAgIFRoaXMgY2xhc3MgZW5j
YXBzdWxhdGVzIFdlYlNvY2tldERlZmxhdGVyIGFuZCBXZWJTb2NrZXRJbmZsYXRlciBjbGFzc2Vz
LAorICAgICAgICB3aGljaCBkZXBlbmQgb24gemxpYiwgc28gdGhhdCBXZWJTb2NrZXRDaGFubmVs
IGlzIG5vdCBuZWNlc3NhcnkgdG8gYXdhcmUKKyAgICAgICAgemxpYiBkZXBlbmRlbmN5LgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1wYXJhbWV0ZXIuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIuKGNwcHxoKQorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
IERpdHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERp
dHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8u
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkaWRDb25uZWN0KTogU2V0IG1fZXh0ZW5zaW9ucy4KKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KTogQWRkIGRlZmxhdGUtZnJhbWUg
ZXh0ZW5zaW9uIHByb2Nlc3NvciB0byBXZWJTb2NrZXRIYW5kc2hha2UgaWYgZGVmbGF0ZSBjYW4g
dXNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6IFJlc2V0IGRl
ZmxhdGUvaW5mbGF0ZSBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6cGFyc2VGcmFtZSk6IFJlbmFtZWQgcmVzZXJ2ZWQxIGFzIGNvbXByZXNzLgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKTogRGVjb21wcmVzcyBpZiBu
ZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjptYWtlRnJhbWVEYXRhKTogRmxhZyBjb21wcmVzc0Jp
dCBpZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJh
bWUpOiBDb21wcmVzcyBmcmFtZXMgaWYgcG9zc2libGUuCisgICAgICAgICogd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tl
dEV4dGVuc2lvbkRlZmxhdGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRF
eHRlbnNpb25EZWZsYXRlRnJhbWU6On5XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpXZWJTb2Nr
ZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lOjpoYW5kc2hha2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRl
bnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6Y2FuRGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjplbmFibGVEZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
cmVzZXREZWZsYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OnJlc2V0SW5mbGF0ZUNvbnRleHQpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZUZyYW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjplbmFibGVkKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmg6
ICJyZXNlcnZlZDEiIGZsYWcgcmVuYW1lZCAiY29tcHJlc3MiIGZsYWcuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUpOgorICAgICAgICAoV2ViU29ja2V0
RnJhbWUpOgorCiAyMDEyLTAyLTIxICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBu
b2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBQcmV2aW91cyB3ZWIgcGFnZSBhcHBlYXJzIG91dHNp
ZGUgY29udGVudCByZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggZmFh
MGMwOGVmMGRjYTNlZDVlMjYwNzVjYWQ0ZmU4NDYwODQwNTE3YS4uYjY4NDQ5ZjJhMzIxZWU3ZmEz
N2UzYWM1NjNhMzVmNjU3OTdhMThjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aApAQCAtMTE4Nyw0ICsxMTg3LDggQEAKICNkZWZpbmUgV1RGX1VTRV9XVEZVUkwgMAogI2VuZGlm
CiAKKyNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCisjZGVmaW5lIFdURl9VU0Vf
WkxJQiAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDY1MWZlNTI0ODAxMzM3MmM0NzlkNmZhOTc5YzZiM2EzMzBiOWEyNDYuLjdj
NTIxNzQ4YTU5YTMxM2U4YzZjMWNmNjFhZTc0NTViMDBiMTdhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0yMDQ4LDYgKzIwNDgsNyBAQCBJRiAoRU5BQkxFX1dFQl9TT0NLRVRTKQogICAgICAg
ICB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAK
ICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA5YjQ3MzYwYzVlZWQ5YmEzOGYwNTYyZGQwMDEwMGVkMDM1OTI4ZjI2
Li42YTY2OWM4ODc3MWM0ZjVkMzgwMjMyYWNmMTA2NDkxYjgxYTJlOTkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQzMzAsNiArNDMzMCw4IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogCVNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMTQ2YjIyNTVhYTMzMDUwNDVkNGY1NjY0
ZWMyYjYzYzNjNmYzM2VhYS4uYWM3NTc2MTJhYmJiNWQxYmEzZTg2ZDUyNTU5ZmNmNjRhZjRhNWFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC0zNjYzLDYgKzM2NjMsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwK
ICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvci5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIFwKQEAgLTM2
NzQsNiArMzY3NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7
CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAg
ICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGYxMTNiMDU2MWQxODliNTAxN2NlMWYy
Nzc2YzBjNGY0ZDk1YzVhYmEuLmM2OTEyZDgxOGU4OTMyZWYzOWIwNzlkZjk5YTJmMGRlMGNmNTgw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ4MDksNiArNDgwOSw4IEBACiAgICAgICAgICAgICAn
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbENsaWVudC5oJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVG
cmFtZXIuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAn
LAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCcsCiAgICAgICAg
ICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDQ5OGZhYTc1
YTE0MjdhYWY2YTQ4Nzk5YTJhYTkxMzJkMDE5ZWIzOTAuLmZkNzhjYzM0MjQ1NDQwOTM2MWM4MmU5
Njk0NzA3NDZjODJlNjQ5NzUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC03MzQzMCw2ICs3MzQzMCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2Nr
ZXREZWZsYXRlci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3MDdmNDI1MmI1YzNjNjRk
NjAyYWQyNDE2YTU2YTc2YmJkNWRlOGIuLmRlNDE4NzI1NzMwOTRlZTg1NDFkOWY2NTkwN2I3ZTM1
NmViMTYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEzNjUsNiArMTM2NSw4IEBACiAJCTRBMUU3MTk2MTRFMTAxRjkwMDYy
NkY5RCAvKiBKU0hUTUxTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QTFFNzE5NDE0RTEwMUY5MDA2MjZGOUQgLyogSlNIVE1MU2hh
ZG93RWxlbWVudC5oICovOyB9OwogCQk0QTFFNzFBNTE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFk
b3dSb290LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMUU3MUEzMTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwICovOyB9OwogCQk0
QTFFNzFBNjE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTFFNzFBNDE0RTEwNkFDMDA2MjZGOUQg
LyogSlNTaGFkb3dSb290LmggKi87IH07CisJCTRBMjkyMjJCMTRGNDY4QkEwMDIxRjc3RSAvKiBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBMjkyMjI5MTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmNwcCAqLzsgfTsKKwkJNEEyOTIyMkMxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRBMjkyMjJBMTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmggKi87IH07CiAJCTRBNEEyMzQ2MTRGMUUxNDQwMDQ2RkJGMSAvKiBXZWJTb2NrZXRGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0QTIz
NDUxNEYxRTE0NDAwNDZGQkYxIC8qIFdlYlNvY2tldEZyYW1lLmggKi87IH07CiAJCTRBNkU5RkMz
MTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkMxMTNDMTdEMUQwMDQ2QTdGOCAv
KiBGb250RmVhdHVyZVZhbHVlLmNwcCAqLzsgfTsKIAkJNEE2RTlGQzQxM0MxN0QxRDAwNDZBN0Y4
IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRBNkU5RkMyMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgy
MjMsNiArODIyNSw4IEBACiAJCTRBMUU3MTk0MTRFMTAxRjkwMDYyNkY5RCAvKiBKU0hUTUxTaGFk
b3dFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFNoYWRv
d0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEExRTcxQTMxNEUxMDZB
QzAwNjI2RjlEIC8qIEpTU2hhZG93Um9vdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1NoYWRvd1Jvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTFFNzFBNDE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93Um9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0QTI5MjIyOTE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEEyOTIyMkEx
NEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QTRBMjM0NTE0RjFFMTQ0MDA0NkZCRjEgLyogV2ViU29ja2V0
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4
IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRm9udEZlYXR1cmVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRBNkU5RkMyMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRGZWF0dXJlVmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODM5LDYgKzE0ODQzLDggQEAKIAkJCQk1MTBENEE0NzEwMzE3
N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCiAJCQkJNTEwRDRBNDgxMDMx
NzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLywKIAkJCQk1MTBENEE0OTEwMzE3
N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovLAorCQkJCTRBMjkyMjI5
MTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCAqLywKKwkJCQk0
QTI5MjIyQTE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oICovLAog
CQkJCTRBRTAyQUJCMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgKi8s
CiAJCQkJNEFFMDJBQkMxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggKi8s
CiAJCQkJNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuY3BwICovLApAQCAtMjQyOTEsNiArMjQyOTcsNyBAQAogCQkJCTk3N0UyRTBGMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEz
N0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QkJFRDBG
MTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTRBMjkyMjJDMTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MjM4LDYgKzI3MjQ1LDcgQEAKIAkJCQk5
NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTRCQkVEMEUxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QTI5MjIyQjE0RjQ2OEJBMDAyMUY3
N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCAzNmRiYjZmMzJjMjQ5ODNjMjBmODU4
ZTBkYWM3NzYxZmI2OWIxMmE0Li43ZGQ4NTRlZDE1MmEzMjFmMDQ5MjExMmNlNTVhN2YxMDllODkz
M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC00NzgsNiAr
NDc4LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZENvbm5lY3QoKQogICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIG1fc3RhdGUgPSBPUEVOOwogICAgIG1fc3VicHJvdG9j
b2wgPSBtX2NoYW5uZWwtPnN1YnByb3RvY29sKCk7CisgICAgbV9leHRlbnNpb25zID0gbV9jaGFu
bmVsLT5leHRlbnNpb25zKCk7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAxYzQ3OGU2NzUyMzBmNGJk
NzJmYjVjMzFjMDlhNGZlNzM2NzQzYWZiLi45MTA3ZjM5Y2RiODU4Y2RhMGU5OWNjMmRmMTQ5YmIy
MmE4NTAyMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgY29uc3QgZG91YmxlIFRDUE1heGltdW1TZWdtZW50
TGlmZXRpbWUgPSAyICogNjAuMDsKIAogLy8gQ29uc3RhbnRzIGZvciBoeWJpLTEwIGZyYW1lIGZv
cm1hdC4KIGNvbnN0IHVuc2lnbmVkIGNoYXIgZmluYWxCaXQgPSAweDgwOwotY29uc3QgdW5zaWdu
ZWQgY2hhciByZXNlcnZlZDFCaXQgPSAweDQwOworY29uc3QgdW5zaWduZWQgY2hhciBjb21wcmVz
c0JpdCA9IDB4NDA7CiBjb25zdCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkMkJpdCA9IDB4MjA7CiBj
b25zdCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkM0JpdCA9IDB4MTA7CiBjb25zdCB1bnNpZ25lZCBj
aGFyIG9wQ29kZU1hc2sgPSAweEY7CkBAIC0xMjcsNiArMTI3LDggQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkK
ICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBtX2hhbmRzaGFrZSA9IGFkb3B0UHRyKG5l
dyBXZWJTb2NrZXRIYW5kc2hha2UodXJsLCBwcm90b2NvbCwgbV9kb2N1bWVudCwgbV91c2VIaXhp
ZTc2UHJvdG9jb2wpKTsKICAgICBtX2hhbmRzaGFrZS0+cmVzZXQoKTsKKyAgICBpZiAoIW1fdXNl
SGl4aWU3NlByb3RvY29sICYmIG1fZGVmbGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkpCisgICAgICAg
IG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3IobV9kZWZsYXRlRnJhbWVyLmNyZWF0
ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKICAgICBpZiAobV9pZGVudGlmaWVyKQogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldChtX2RvY3VtZW50LCBt
X2lkZW50aWZpZXIsIHVybCwgbV9kb2N1bWVudC0+dXJsKCkpOwogICAgIHJlZigpOwpAQCAtMjI4
LDYgKzIzMCw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJl
YXNvbikKICAgICAgICAgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICAg
ICAgaWYgKG1fYnVmZmVyKQogICAgICAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOyAv
LyBTYXZlIG1lbW9yeS4KKyAgICAgICAgbV9kZWZsYXRlRnJhbWVyLnJlc2V0RGVmbGF0ZUNvbnRl
eHQoKTsKKyAgICAgICAgbV9kZWZsYXRlRnJhbWVyLnJlc2V0SW5mbGF0ZUNvbnRleHQoKTsKICAg
ICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKICAgICAgICAgbV9jb250aW51b3Vz
RnJhbWVEYXRhLmNsZWFyKCk7CiAgICAgfQpAQCAtNTQ3LDcgKzU1MSw3IEBAIFdlYlNvY2tldENo
YW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShXZWJT
b2NrZXRGcmFtZSYKICAgICB1bnNpZ25lZCBjaGFyIHNlY29uZEJ5dGUgPSAqcCsrOwogCiAgICAg
Ym9vbCBmaW5hbCA9IGZpcnN0Qnl0ZSAmIGZpbmFsQml0OwotICAgIGJvb2wgcmVzZXJ2ZWQxID0g
Zmlyc3RCeXRlICYgcmVzZXJ2ZWQxQml0OworICAgIGJvb2wgY29tcHJlc3MgPSBmaXJzdEJ5dGUg
JiBjb21wcmVzc0JpdDsKICAgICBib29sIHJlc2VydmVkMiA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVk
MkJpdDsKICAgICBib29sIHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0JpdDsKICAg
ICB1bnNpZ25lZCBjaGFyIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9wQ29kZU1hc2s7CkBAIC01OTYs
NyArNjAwLDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRD
aGFubmVsOjpwYXJzZUZyYW1lKFdlYlNvY2tldEZyYW1lJgogCiAgICAgZnJhbWUub3BDb2RlID0g
c3RhdGljX2Nhc3Q8V2ViU29ja2V0RnJhbWU6Ok9wQ29kZT4ob3BDb2RlKTsKICAgICBmcmFtZS5m
aW5hbCA9IGZpbmFsOwotICAgIGZyYW1lLnJlc2VydmVkMSA9IHJlc2VydmVkMTsKKyAgICBmcmFt
ZS5jb21wcmVzcyA9IGNvbXByZXNzOwogICAgIGZyYW1lLnJlc2VydmVkMiA9IHJlc2VydmVkMjsK
ICAgICBmcmFtZS5yZXNlcnZlZDMgPSByZXNlcnZlZDM7CiAgICAgZnJhbWUubWFza2VkID0gbWFz
a2VkOwpAQCAtNjE4LDE0ICs2MjIsMjUgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUoKQogICAgIEFTU0VSVChtX2J1ZmZlciA8IGZyYW1lRW5kKTsKICAgICBBU1NFUlQoZnJh
bWVFbmQgPD0gbV9idWZmZXIgKyBtX2J1ZmZlclNpemUpOwogCisgICAgaWYgKGZyYW1lLmNvbXBy
ZXNzKSB7CisgICAgICAgIGlmICghbV9kZWZsYXRlRnJhbWVyLmVuYWJsZWQoKSB8fCAhV2ViU29j
a2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpKSB7CisgICAgICAgICAg
ICBmYWlsKCJSZWNlaXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUiKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fZGVmbGF0ZUZyYW1l
ci5pbmZsYXRlKGZyYW1lKSkgeworICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIGRlY29tcHJl
c3MgZnJhbWUiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIC8vIFZhbGlkYXRlIHRoZSBmcmFtZSBkYXRhLgogICAgIGlmIChXZWJTb2NrZXRGcmFt
ZTo6aXNSZXNlcnZlZE9wQ29kZShmcmFtZS5vcENvZGUpKSB7CiAgICAgICAgIGZhaWwoIlVucmVj
b2duaXplZCBmcmFtZSBvcGNvZGU6ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5vcENvZGUpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmcmFtZS5yZXNlcnZlZDEg
fHwgZnJhbWUucmVzZXJ2ZWQyIHx8IGZyYW1lLnJlc2VydmVkMykgewotICAgICAgICBmYWlsKCJP
bmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gIiArIFN0cmluZzo6
bnVtYmVyKGZyYW1lLnJlc2VydmVkMSkgKyAiLCByZXNlcnZlZDIgPSAiICsgU3RyaW5nOjpudW1i
ZXIoZnJhbWUucmVzZXJ2ZWQyKSArICIsIHJlc2VydmVkMyA9ICIgKyBTdHJpbmc6Om51bWJlcihm
cmFtZS5yZXNlcnZlZDMpKTsKKyAgICBpZiAoZnJhbWUucmVzZXJ2ZWQyIHx8IGZyYW1lLnJlc2Vy
dmVkMykgeworICAgICAgICBmYWlsKCJPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjog
cmVzZXJ2ZWQyID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLnJlc2VydmVkMikgKyAiLCByZXNl
cnZlZDMgPSAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUucmVzZXJ2ZWQzKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTc1NSw2ICs3NzAsNyBAQCBib29sIFdlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIG1fZGVm
bGF0ZUZyYW1lci5yZXNldEluZmxhdGVDb250ZXh0KCk7CiAgICAgcmV0dXJuIG1fYnVmZmVyOwog
fQogCkBAIC05NzksNiArOTk1LDggQEAgc3RhdGljIHZvaWQgYXBwZW5kTWFza2VkRnJhbWVQYXls
b2FkKGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSwgVmVjdG9yPGNoYXI+Jgogc3RhdGljIHZv
aWQgbWFrZUZyYW1lRGF0YShjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFy
PiYgZnJhbWVEYXRhKQogewogICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RCeXRlID0gKGZyYW1lLmZp
bmFsID8gZmluYWxCaXQgOiAwKSB8IGZyYW1lLm9wQ29kZTsKKyAgICBpZiAoZnJhbWUuY29tcHJl
c3MpCisgICAgICAgIGZpcnN0Qnl0ZSB8PSBjb21wcmVzc0JpdDsKICAgICBmcmFtZURhdGEuYXBw
ZW5kKGZpcnN0Qnl0ZSk7CiAgICAgaWYgKGZyYW1lLnBheWxvYWRMZW5ndGggPD0gbWF4UGF5bG9h
ZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKQogICAgICAgICBmcmFtZURhdGEuYXBw
ZW5kKG1hc2tCaXQgfCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKQEAgLTEwMDgsMTEgKzEwMjYsMTcg
QEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKIAog
ICAgIEFTU0VSVCghKG9wQ29kZSAmIH5vcENvZGVNYXNrKSk7IC8vIENoZWNrcyB3aGV0aGVyICJv
cENvZGUiIGZpdHMgaW4gdGhlIHJhbmdlIG9mIG9wQ29kZXMuCi0gICAgV2ViU29ja2V0RnJhbWUg
ZnJhbWUob3BDb2RlLCB0cnVlLCB0cnVlLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBXZWJTb2Nr
ZXRGcmFtZSBmcmFtZShvcENvZGUsIHRydWUsIGZhbHNlLCB0cnVlLCBkYXRhLCBkYXRhTGVuZ3Ro
KTsKKyAgICBpZiAoV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENv
ZGUpICYmIGRhdGFMZW5ndGggJiYgbV9kZWZsYXRlRnJhbWVyLmVuYWJsZWQoKSAmJiAhbV9kZWZs
YXRlRnJhbWVyLmRlZmxhdGUoZnJhbWUpKSB7CisgICAgICAgIGZhaWwoIkZhaWxlZCB0byBjb21w
cmVzcyBmcmFtZSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIFZlY3Rvcjxj
aGFyPiBmcmFtZURhdGE7CiAgICAgbWFrZUZyYW1lRGF0YShmcmFtZSwgZnJhbWVEYXRhKTsKIAot
ICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChmcmFtZURhdGEuZGF0YSgpLCBmcmFtZURhdGEuc2l6
ZSgpKTsKKyAgICBib29sIHJlc3VsdCA9IG1faGFuZGxlLT5zZW5kKGZyYW1lRGF0YS5kYXRhKCks
IGZyYW1lRGF0YS5zaXplKCkpOworICAgIG1fZGVmbGF0ZUZyYW1lci5yZXNldERlZmxhdGVDb250
ZXh0KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpz
ZW5kRnJhbWVIaXhpZTc2KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA0YmIyOGM5
ZjJiMDVhZjM0OTk3YmUwN2E2MmYxMmJjNGU5ODM1ODE4Li42ZDFmZWJiY2EwNmUxZWQ3ZDVjZWUx
NTBkODc2MGFmNzgwNDYyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAj
aW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgiCiAj
aW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2Uu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTIzMSw2ICsyMzIsOCBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxGaWxlUmVhZGVyTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgQmxvYkxvYWRl
clN0YXR1cyBtX2Jsb2JMb2FkZXJTdGF0dXM7CiAjZW5kaWYKKworICAgIFdlYlNvY2tldERlZmxh
dGVGcmFtZXIgbV9kZWZsYXRlRnJhbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTZkN2I1NGZhMTIwZDYyZGY3MTNkNzk5NmU3Y2I3NjVjNmYyZmRm
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTAsMCArMSwyMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIDogcHVi
bGljIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPiBjcmVhdGUoV2ViU29ja2V0
RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoZnJhbWVyKSk7CisgICAgfQorICAgIHZp
cnR1YWwgfldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSgpIHsgfQorCisgICAgdmlydHVh
bCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBy
b2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBPVkVSUklERSB7IHJldHVybiBtX2Zh
aWx1cmVSZWFzb247IH0KKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRl
RnJhbWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworCisgICAgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lciogbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAgIFN0cmlu
ZyBtX2ZhaWx1cmVSZWFzb247Cit9OworCisvLyBGWElNRTogUmVtb3ZlIHZlbmRvciBwcmVmaXgg
YWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4KK1dlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVG
cmFtZXIqIGZyYW1lcikKKyAgICA6IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcigieC13ZWJr
aXQtZGVmbGF0ZS1mcmFtZSIpCisgICAgLCBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3Jlc3Bv
bnNlUHJvY2Vzc2VkKGZhbHNlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK1N0cmlu
ZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCit7Cisg
ICAgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IC8vIE5vIHBhcmFtZXRlcgorfQorCitib29sIFdl
YlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQoreworI2lmIFVTRShaTElCKQor
ICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFtZSByZXNwb25zZSI7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9yZXNwb25zZVByb2Nlc3NlZCA9IHRydWU7CisKKyAg
ICBpbnQgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzID0gMDsKKyAgICBpbnQgd2luZG93Qml0cyA9IDE1
OworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIg
PSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIpOworICAgIGlmIChwYXJh
bWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5lbmQoKSkgeworICAgICAgICB3aW5kb3dCaXRzID0g
cGFyYW1ldGVyLT5zZWNvbmQudG9JbnQoKTsKKyAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8
IHdpbmRvd0JpdHMgPiAxNSkgeworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2Vp
dmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciI7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzKys7Cisg
ICAgfQorCisgICAgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSA9
IFdlYlNvY2tldERlZmxhdGVyOjpUYWtlT3ZlckNvbnRleHQ7CisgICAgcGFyYW1ldGVyID0gc2Vy
dmVyUGFyYW1ldGVycy5maW5kKCJub19jb250ZXh0X3Rha2VvdmVyIik7CisgICAgaWYgKHBhcmFt
ZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CisgICAgICAgIGlmICghcGFyYW1ldGVy
LT5zZWNvbmQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNl
aXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtb2RlID0gV2ViU29ja2V0RGVmbGF0
ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0OworICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMr
KzsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWROdW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFt
ZXRlcnMuc2l6ZSgpKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4
cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIG1fZnJhbWVyLT5lbmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOwor
ICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29j
a2V0RGVmbGF0ZUZyYW1lcigpCisgICAgOiBtX2VuYWJsZWQoZmFsc2UpCit7Cit9CisKK1Bhc3NP
d25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKQoreworICAgIHJldHVybiBXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWU6OmNyZWF0ZSh0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKK3sKKyNpZiBVU0UoWkxJQikKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBVU0Uo
WkxJQikKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2lu
ZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSkKK3sK
KyAgICBtX2RlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSh3aW5kb3dCaXRzLCBt
b2RlKTsKKyAgICBtX2luZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAg
IGlmICghbV9kZWZsYXRlciB8fCAhbV9pbmZsYXRlcikgeworICAgICAgICBtX2RlZmxhdGVyLmNs
ZWFyKCk7CisgICAgICAgIG1faW5mbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoIW1fZGVmbGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5p
dGlhbGl6ZSgpKSB7CisgICAgICAgIG1fZGVmbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgbV9pbmZs
YXRlci5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZW5hYmxlZCA9IHRy
dWU7Cit9CisjZW5kaWYKKworYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdl
YlNvY2tldEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBpZiAoIW1fZGVmbGF0
ZXItPmFkZEJ5dGVzKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpIHx8ICFtX2Rl
ZmxhdGVyLT5maW5pc2goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZyYW1lLmNvbXBy
ZXNzID0gdHJ1ZTsKKyAgICBmcmFtZS5wYXlsb2FkID0gbV9kZWZsYXRlci0+ZGF0YSgpOworICAg
IGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2RlZmxhdGVyLT5zaXplKCk7CisgICAgcmV0dXJuIHRy
dWU7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCit2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNv
bnRleHQoKQoreworI2lmIFVTRShaTElCKQorICAgIGlmIChtX2RlZmxhdGVyKQorICAgICAgICBt
X2RlZmxhdGVyLT5yZXNldCgpOworI2VuZGlmCit9CisKK2Jvb2wgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCit7CisjaWYgVVNFKFpMSUIpCisg
ICAgaWYgKCFtX2luZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2Fk
TGVuZ3RoKSB8fCAhbV9pbmZsYXRlci0+ZmluaXNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBmcmFtZS5jb21wcmVzcyA9IGZhbHNlOworICAgIGZyYW1lLnBheWxvYWQgPSBtX2luZmxh
dGVyLT5kYXRhKCk7CisgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IG1faW5mbGF0ZXItPnNpemUo
KTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6cmVzZXRJbmZsYXRlQ29udGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1faW5m
bGF0ZXIpCisgICAgICAgIG1faW5mbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MzhhZWY1OGQwMjE1NzJjZGQ5YWRlMTYzOWNiMjE1ZTE1Y2E4NjE3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaAor
I2RlZmluZSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2lmIFVTRShaTElCKQorI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCisjZW5k
aWYKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIgeworcHVibGljOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIoKTsKKwor
ICAgIFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBjcmVhdGVFeHRlbnNp
b25Qcm9jZXNzb3IoKTsKKworICAgIGJvb2wgY2FuRGVmbGF0ZSgpIGNvbnN0OworICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorCisgICAgYm9vbCBkZWZsYXRl
KFdlYlNvY2tldEZyYW1lJik7CisgICAgdm9pZCByZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAg
Ym9vbCBpbmZsYXRlKFdlYlNvY2tldEZyYW1lJik7CisgICAgdm9pZCByZXNldEluZmxhdGVDb250
ZXh0KCk7CisKKyNpZiBVU0UoWkxJQikKKyAgICB2b2lkIGVuYWJsZURlZmxhdGUoaW50IHdpbmRv
d0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlKTsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIGJvb2wgbV9lbmFibGVkOworI2lmIFVTRShaTElCKQorICAgIE93blB0
cjxXZWJTb2NrZXREZWZsYXRlcj4gbV9kZWZsYXRlcjsKKyAgICBPd25QdHI8V2ViU29ja2V0SW5m
bGF0ZXI+IG1faW5mbGF0ZXI7CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCmluZGV4IDE5ZGQ3YWI5OGMyZWQx
NDZmMTU2N2YwYTkxYTc3MzE4ZDY5MmM2OTguLjdlZmVhNzhkYjFkM2E0NDYyMzVhYzk4MDFiZDVm
YjZkZDNmYTRlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1l
LmgKQEAgLTUxLDEwICs1MSwxMCBAQCBzdHJ1Y3QgV2ViU29ja2V0RnJhbWUgewogICAgIHN0YXRp
YyBib29sIGlzQ29udHJvbE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0g
T3BDb2RlQ2xvc2UgfHwgb3BDb2RlID09IE9wQ29kZVBpbmcgfHwgb3BDb2RlID09IE9wQ29kZVBv
bmc7IH0KICAgICBzdGF0aWMgYm9vbCBpc1Jlc2VydmVkT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsg
cmV0dXJuICFpc05vbkNvbnRyb2xPcENvZGUob3BDb2RlKSAmJiAhaXNDb250cm9sT3BDb2RlKG9w
Q29kZSk7IH0KIAotICAgIFdlYlNvY2tldEZyYW1lKE9wQ29kZSBvcENvZGUgPSBPcENvZGVJbnZh
bGlkLCBib29sIGZpbmFsID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IGNoYXIq
IHBheWxvYWQgPSAwLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApCisgICAgV2ViU29ja2V0RnJh
bWUoT3BDb2RlIG9wQ29kZSA9IE9wQ29kZUludmFsaWQsIGJvb2wgZmluYWwgPSBmYWxzZSwgYm9v
bCBjb21wcmVzcyA9IGZhbHNlLCBib29sIG1hc2tlZCA9IGZhbHNlLCBjb25zdCBjaGFyKiBwYXls
b2FkID0gMCwgc2l6ZV90IHBheWxvYWRMZW5ndGggPSAwKQogICAgICAgICA6IG9wQ29kZShvcENv
ZGUpCiAgICAgICAgICwgZmluYWwoZmluYWwpCi0gICAgICAgICwgcmVzZXJ2ZWQxKGZhbHNlKQor
ICAgICAgICAsIGNvbXByZXNzKGNvbXByZXNzKQogICAgICAgICAsIHJlc2VydmVkMihmYWxzZSkK
ICAgICAgICAgLCByZXNlcnZlZDMoZmFsc2UpCiAgICAgICAgICwgbWFza2VkKG1hc2tlZCkKQEAg
LTY1LDcgKzY1LDcgQEAgc3RydWN0IFdlYlNvY2tldEZyYW1lIHsKIAogICAgIE9wQ29kZSBvcENv
ZGU7CiAgICAgYm9vbCBmaW5hbDsKLSAgICBib29sIHJlc2VydmVkMTsKKyAgICBib29sIGNvbXBy
ZXNzOwogICAgIGJvb2wgcmVzZXJ2ZWQyOwogICAgIGJvb2wgcmVzZXJ2ZWQzOwogICAgIGJvb2wg
bWFza2VkOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGEzMjE5YWJiMmRlZDQwOGNlMjU1YzcyNGVkYjk0MmJmYzAyZTZjZWUu
LmViMzY0ZjlkYWNiOTk5MzkzMDcwZjE3MmUzZGE5NjliMTVkNGViNTMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOCBAQAorMjAxMi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRlbnNp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTIy
CisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIFdlYlNvY2tldCBkZWZsYXRlLWZyYW1lIGV4dGVu
c2lvbi4gQWxzbyB1cGRhdGVkIHNvbWUKKyAgICAgICAgdGVzdHMgdG8gZm9sbG93IHRoZSBjaGFu
Z2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS1l
eHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQu
dHh0LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3Nl
ZC1jb250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5weTogQWRkZWQuCisg
ICAgICAgICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1j
b21wLWJpdC1vbm9mZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxh
dGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWwuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFs
aWQtcGFyYW1ldGVyX3dzaC5weTogQWRkZWQuCisgICAgICAgICh3ZWJfc29ja2V0X2RvX2V4dHJh
X2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0
ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHk6IEFk
ZGVkLgorICAgICAgICAoX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IpOgor
ICAgICAgICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UpOgorICAgICAgICAod2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dDog
RmFpbHVyZSBtZXNzYWdlIHdhcyB1cGRhdGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWw6IFJlc2VydmVk
MSBiaXQgaXMgbm8gbG9uZ2VyIHJlc2VydmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5OgorICAgICAgICAoX3JldHJpZXZl
X2ZyYW1lKTogQWRkZWQuCisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOiBEZWNv
bXByZXNzIHRoZSBmcmFtZSBiZWZvcmUgY2hlY2tpbmcuCisKIDIwMTItMDItMjEgIFZpY3RvciBD
YXJidW5lICA8dmNhcmJ1bmVAYWRvYmUuY29tPgogCiAgICAgICAgIEFkZGVkIHJlbGV2YW50IHRl
c3RzIGFuZCBmdW5jdGlvbmFsaXR5IGZvciBzdXBwb3J0aW5nIHBhdXNlLW9uLWV4aXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJl
c3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NDFlYzQ3M2Q2YmUyMWMxYzA2MDEwMjlmZmM1ZmEzOWNjYmYzODI0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBjb21wcmVzc2VkIGZyYW1l
CitUZXN0IHdoZXRoZXIgYSBjb21wcmVzc2VkIGNvbnRyb2wgZnJhbWUgaXMgcmVqZWN0ZWQKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9z
ZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQt
Y29udHJvbC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjA4OGM3
OTliZTQxMWMxMjI4MTJhNTA5NDJmYTgzOTgzODAwOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRy
b2wtZnJhbWUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgYSBjb21wcmVzc2VkIGNvbnRy
b2wgZnJhbWUgaXMgcmVqZWN0ZWQiKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKKwordmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUiKTsKK3ZhciBjbG9z
ZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3Blbigp
IHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sK
KyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdl
KCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworfTsKKwor
d3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGRlYnVnKCJvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgi
Y2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZy
YW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y29tcHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTg4N2FlYWJhNTY2
OGFlMzE1ZWMwNGIxOGVkNzRlMTc3M2E1MzJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJh
bWVfd3NoLnB5CkBAIC0wLDAgKzEsNDggQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMu
CisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3Ry
ZWFtCitpbXBvcnQgemxpYgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShy
ZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1
ZXN0KToKKyAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCisgICAgICAgIHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCisgICAg
Y29tcHJlc3NlZF9tZXNzYWdlID0gY29tcHJlc3MuY29tcHJlc3MoJ2Nsb3NlIG1lc3NhZ2UnKQor
ICAgIGNvbXByZXNzZWRfbWVzc2FnZSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVT
SCkKKyAgICBjb21wcmVzc2VkX21lc3NhZ2UgPSBjb21wcmVzc2VkX21lc3NhZ2VbOi00XQorICAg
IGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKAorICAgICAgICBvcGNvZGU9Y29tbW9uLk9Q
Q09ERV9DTE9TRSwgcGF5bG9hZF9sZW5ndGg9bGVuKGNvbXByZXNzZWRfbWVzc2FnZSksCisgICAg
ICAgIGZpbj0xLCByc3YxPTEsIHJzdjI9MCwgcnN2Mz0wLCBtYXNrPUZhbHNlKQorICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0ZShoZWFkZXIgKyBjb21wcmVzc2VkX21lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUtY29tcC1iaXQtb25vZmYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NjJmZWYzZGU2ZjBmZTQwODBlYTJkMzUyM2YyOTViNDM4NjIz
ZjMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIwIEBACitUZXN0IGNvbXByZXNzaW9uIGVuYWJsZWQvZGlzYWJsZWQgZnJhbWUgcmVj
ZWl2aW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1NlbmRpbmcgbWVzc2FnZTog
IkhlbGxvIgorUEFTUyBldmVudC5kYXRhIGlzICdIZWxsbycKK1NlbmRpbmcgbWVzc2FnZTogIkRp
c2FibGVDb21wcmVzc2lvbiIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnRGlzYWJsZUNvbXByZXNzaW9u
JworU2VuZGluZyBtZXNzYWdlOiAiV29ybGQiCitQQVNTIGV2ZW50LmRhdGEgaXMgJ1dvcmxkJwor
U2VuZGluZyBtZXNzYWdlOiAiRW5hYmxlQ29tcHJlc3Npb24iCitQQVNTIGV2ZW50LmRhdGEgaXMg
J0VuYWJsZUNvbXByZXNzaW9uJworU2VuZGluZyBtZXNzYWdlOiAiR29vZGJ5ZSIKK1BBU1MgZXZl
bnQuZGF0YSBpcyAnR29vZGJ5ZScKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21w
LWJpdC1vbm9mZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMmFjNTdiYjhmOGJiOTA2ZmFhNDJiNDMzNGJm
MmZjMjc4YTY3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbApAQCAt
MCwwICsxLDYwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBjb21wcmVzc2lv
biBlbmFibGVkL2Rpc2FibGVkIGZyYW1lIHJlY2VpdmluZy4iKTsKKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgd3M7Cit2YXIg
bWVzc2FnZUluZGV4OworCit2YXIgbWVzc2FnZXMgPSBbCisgICAgIkhlbGxvIiwKKyAgICAiRGlz
YWJsZUNvbXByZXNzaW9uIiwgLy8gVGhpcyBkaXNhYmxlcyBjb21wcmVzc2lvbgorICAgICJXb3Js
ZCIsCisgICAgIkVuYWJsZUNvbXByZXNzaW9uIiwgLy8gVGhpcyBlbmFibGVzIGNvbXByZXNzaW9u
CisgICAgIkdvb2RieWUiCitdOworCit3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0
Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZSIpOworCit3cy5vbm9wZW4g
PSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBtZXNzYWdlSW5kZXggPSAwOworICAgIGRlYnVnKCJT
ZW5kaW5nIG1lc3NhZ2U6IFwiIiArIG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0gKyAiXCIiKTsKKyAg
ICB3cy5zZW5kKG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0pOworfTsKKword3Mub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZlbnQpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAiJyIgKyBtZXNz
YWdlc1ttZXNzYWdlSW5kZXhdICsgIiciKTsKKyAgICBpZiAobWVzc2FnZUluZGV4ID09PSBtZXNz
YWdlcy5sZW5ndGggLSAxKQorICAgICAgICB3cy5jbG9zZSgpOworICAgIGVsc2UgeworICAgICAg
ICBtZXNzYWdlSW5kZXggKz0gMTsKKyAgICAgICAgZGVidWcoIlNlbmRpbmcgbWVzc2FnZTogXCIi
ICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICJcIiIpOworICAgICAgICB3cy5zZW5kKG1lc3Nh
Z2VzW21lc3NhZ2VJbmRleF0pOworICAgIH0KK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihl
dmVudCkKK3sKKyAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VF
dmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtaW52YWxpZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYTI0ZDI4Y2My
MzNiN2E1ZjYzNDkzYjk1ZDBmODFiYTdmMzRkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxp
ZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKK0NPTlNPTEUgTUVTU0FH
RTogUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRlcgorQ09OU09MRSBN
RVNTQUdFOiBSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJhbWV0ZXIKK0NPTlNP
TEUgTUVTU0FHRTogUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93X2JpdHMgcGFyYW1ldGVyCitD
T05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIGludmFsaWQgbm9fY29udGV4dF90YWtlb3ZlciBwYXJh
bWV0ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1l
IHBhcmFtZXRlcgorVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGludmFsaWQgZGVmbGF0
ZS1mcmFtZSBwYXJhbWV0ZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3Rp
bmcgcGFyYW1ldGVyOiAieC1mb28iCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VF
dmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJtYXhfd2luZG93X2Jp
dHM9NyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IGZhbHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz0xNiIKK29uY2xvc2Uo
KSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitUZXN0aW5n
IHBhcmFtZXRlcjogIm5vX2NvbnRleHRfdGFrZW92ZXI9Zm9vIgorb25jbG9zZSgpIHdhcyBjYWxs
ZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3RpbmcgcGFyYW1ldGVy
OiAibWF4X3dpbmRvd19iaXRzPTg7IG5vX2NvbnRleHRfdGFrZW92ZXI7IHgtZm9vIgorb25jbG9z
ZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhNWZiZDA2ZDIwMmEzZWNjODAyYWUyNGE3NzllZjY0YjkzOWE5YzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Rl
ZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURP
Q1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGlu
dmFsaWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0ZXJzLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKKwordmFyIHRlc3RDYXNlID0g
WworICAgICJ4LWZvbyIsCisgICAgIm1heF93aW5kb3dfYml0cz03IiwKKyAgICAibWF4X3dpbmRv
d19iaXRzPTE2IiwKKyAgICAibm9fY29udGV4dF90YWtlb3Zlcj1mb28iLAorICAgICJtYXhfd2lu
ZG93X2JpdHM9ODsgbm9fY29udGV4dF90YWtlb3ZlcjsgeC1mb28iCitdOworCitmdW5jdGlvbiBk
b1Rlc3QoaW5kZXgpCit7CisgICAgdmFyIHBhcmFtZXRlciA9IHRlc3RDYXNlW2luZGV4XTsKKyAg
ICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlcj8iICsgZW5jb2RlVVJJKHBhcmFtZXRlcik7Cisg
ICAgdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworCisgICAgZGVidWcoIlRlc3RpbmcgcGFy
YW1ldGVyOiBcIiIgKyBwYXJhbWV0ZXIgKyAiXCIiKTsKKworICAgIHdzLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOwor
ICAgICAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwi
IiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgfTsKKworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsK
KyAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgICAgICBzaG91bGRCZUZhbHNlKCJjbG9z
ZUV2ZW50Lndhc0NsZWFuIik7CisgICAgICAgIGlmIChpbmRleCA9PT0gdGVzdENhc2UubGVuZ3Ro
IC0gMSkKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBkb1Rlc3QoaW5kZXggKyAxKTsKKyAgICB9OworfQorCitkb1Rlc3QoMCk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxp
ZC1wYXJhbWV0ZXJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ODEwOWE5Njk3OWM4YjJhZjZiZjMyYjQ4ZTJmNDhjM2VlYWYwYjAzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRl
LWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weQpAQCAtMCwwICsxLDI3IEBACitpbXBvcnQg
dXJsbGliCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCitmcm9tIG1vZF9w
eXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBpbXBvcnQgY29tcHV0ZV9hY2NlcHQKKworCitkZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcmVzb3VyY2VzID0g
cmVxdWVzdC53c19yZXNvdXJjZS5zcGxpdCgnPycsIDEpCisgICAgcGFyYW1ldGVycyA9IE5vbmUK
KyAgICBpZiBsZW4ocmVzb3VyY2VzKSA9PSAyOgorICAgICAgICBwYXJhbWV0ZXJzID0gdXJsbGli
LnVucXVvdGUocmVzb3VyY2VzWzFdKQorCisgICAgbWVzc2FnZSA9ICdIVFRQLzEuMSAxMDEgU3dp
dGNoaW5nIFByb3RvY29sc1xyXG4nCisgICAgbWVzc2FnZSArPSAnVXBncmFkZTogd2Vic29ja2V0
XHJcbicKKyAgICBtZXNzYWdlICs9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKKyAgICBtZXNz
YWdlICs9ICdTZWMtV2ViU29ja2V0LUFjY2VwdDogJXNcclxuJyAlIGNvbXB1dGVfYWNjZXB0KHJl
cXVlc3QuaGVhZGVyc19pblsnU2VjLVdlYlNvY2tldC1LZXknXSlbMF0KKyAgICBtZXNzYWdlICs9
ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6IHgtd2Via2l0LWRlZmxhdGUtZnJhbWUnCisgICAg
aWYgcGFyYW1ldGVyczoKKyAgICAgICAgbWVzc2FnZSArPSAnOyAlc1xyXG4nICUgcGFyYW1ldGVy
cworICAgIGVsc2U6CisgICAgICAgIG1lc3NhZ2UgKz0gJ1xyXG4nCisgICAgbWVzc2FnZSArPSAn
XHJcbicKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZSkKKyAgICByYWlzZSBo
YW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQWJvcnQgdGhlIGNvbm5lY3Rpb24nKSAj
IFByZXZlbnRzIHB5d2Vic29ja2V0IGZyb20gc2VuZGluZyBpdHMgb3duIGhhbmRzaGFrZSBtZXNz
YWdlLgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGFz
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MjYzZmUzOTRhNDYyNGExODRjM2RiMmY0NzI4OTQ0NDlkMGQ0
MDRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzMCBAQAorVGVzdCBXZWJTb2NrZXQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdGluZyBxdWVyeTogIm1heF93aW5kb3dfYml0cz04
IgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0ZS1mcmFtZScpICE9
IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ21heF93aW5kb3dfYml0cz04
JykgIT0gLTEgaXMgdHJ1ZQorUEFTUyBldmVudC5kYXRhIGlzIGZpcnN0TWVzc2FnZQorUEFTUyBl
dmVudC5kYXRhIGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBj
bG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1Rlc3RpbmcgcXVlcnk6ICJub19jb250ZXh0X3Rh
a2VvdmVyIgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0ZS1mcmFt
ZScpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ25vX2NvbnRleHRf
dGFrZW92ZXInKSAhPSAtMSBpcyB0cnVlCitQQVNTIGV2ZW50LmRhdGEgaXMgZmlyc3RNZXNzYWdl
CitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2FnZQorb25jbG9zZSgpIHdhcyBjYWxsZWQu
CitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorVGVzdGluZyBxdWVyeTogIm1heF93
aW5kb3dfYml0cz04Jm5vX2NvbnRleHRfdGFrZW92ZXIiCitQQVNTIHdzLmV4dGVuc2lvbnMuc2Vh
cmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMgdHJ1ZQorUEFTUyB3cy5leHRl
bnNpb25zLnNlYXJjaCgnbWF4X3dpbmRvd19iaXRzPTgnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdz
LmV4dGVuc2lvbnMuc2VhcmNoKCdub19jb250ZXh0X3Rha2VvdmVyJykgIT0gLTEgaXMgdHJ1ZQor
UEFTUyBldmVudC5kYXRhIGlzIGZpcnN0TWVzc2FnZQorUEFTUyBldmVudC5kYXRhIGlzIHNlY29u
ZE1lc3NhZ2UKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFu
IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGI3N2U0NzE4MTdlMjM0N2NmYjgzNmZkOWUzYWFhM2VmYjg1YzZmMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IURPQ1RZUEUgSFRN
TD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uIik7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciBjbG9zZUV2
ZW50OwordmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFyIHF1ZXJpZXMgPSBbCisgICAg
Im1heF93aW5kb3dfYml0cz04IiwKKyAgICAibm9fY29udGV4dF90YWtlb3ZlciIsCisgICAgIm1h
eF93aW5kb3dfYml0cz04Jm5vX2NvbnRleHRfdGFrZW92ZXIiCitdOworCisvLyBUaGUgZmlyc3Qg
bWVzc2FnZSBjb25zaXN0cyBvZiBhIGxvdCBvZiAnYicgYW5kIGEgZmV3ICdhJyBhdCB0aGUgaGVh
ZCBhbmQKKy8vIHRoZSB0YWlsLCB3aGlsZSB0aGUgc2Vjb25kIG9uZSBjb25zaXN0cyBvZiAnYScu
Cit2YXIgZmlyc3RNZXNzYWdlID0gJyc7Cit2YXIgc2Vjb25kTWVzc2FnZSA9ICcnOworZm9yICh2
YXIgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9ICdhJzsKKyAgICBz
ZWNvbmRNZXNzYWdlICs9ICdhJzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAyNDsgKytpKSB7
CisgICAgZmlyc3RNZXNzYWdlICs9ICdiJzsKKyAgICBzZWNvbmRNZXNzYWdlICs9ICdhJzsKK30K
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgIGZpcnN0TWVzc2FnZSArPSAnYSc7
CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9CisKK2Z1bmN0aW9uIGRvVGVzdChxdWVyeUlu
ZGV4KQoreworICAgIHZhciBxdWVyeSA9IHF1ZXJpZXNbcXVlcnlJbmRleF07CisgICAgZGVidWco
IlRlc3RpbmcgcXVlcnk6IFwiIiArIHF1ZXJ5ICsgIlwiIik7CisKKyAgICB2YXIgdXJsID0gIndz
Oi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZT8iICsg
cXVlcnk7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgbWVzc2FnZUluZGV4ID0g
MDsKKworICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCJ3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0ZS1mcmFtZScp
ICE9IC0xIik7CisgICAgICAgIHBhcmFtZXRlcnMgPSBxdWVyeS5zcGxpdCgnJicpOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICBzaG91bGRCZVRydWUoIndzLmV4dGVuc2lvbnMuc2VhcmNoKCciICsgcGFyYW1ldGVyc1tpXSAr
ICInKSAhPSAtMSIpOworICAgICAgICB3cy5zZW5kKGZpcnN0TWVzc2FnZSk7CisgICAgfTsKKwor
ICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKG1l
c3NhZ2VJbmRleCA9PT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAi
Zmlyc3RNZXNzYWdlIik7CisgICAgICAgICAgICBtZXNzYWdlSW5kZXggKz0gMQorICAgICAgICAg
ICAgd3Muc2VuZChzZWNvbmRNZXNzYWdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJldmVudC5kYXRhIiwgInNlY29uZE1lc3NhZ2UiKTsKKyAgICAgICAgICAgIHdz
LmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOwor
ICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VF
dmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAocXVlcnlJbmRleCA9PT0gcXVlcmllcy5sZW5n
dGggLSAxKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGRvVGVzdChxdWVyeUluZGV4ICsgMSk7CisgICAgfTsKK30KKworZG9UZXN0KDApOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1l
X3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ2MDdiY2VlYzA4YmY3YzkzOTk3NGI1MGY3
YmM4N2E4YmFiZjc3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkKQEAgLTAsMCArMSw4MyBA
QAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IHVybHBhcnNlCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5leHRlbnNpb25zIGltcG9ydCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IKK2Zy
b20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IEV4dGVuc2lvblByb2Nlc3Nvcklu
dGVyZmFjZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuY29tbW9uIGltcG9ydCBFeHRlbnNpb25QYXJh
bWV0ZXIKKworCitfR09PREJZRV9NRVNTQUdFID0gdSdHb29kYnllJworX0VOQUJMRV9NRVNTQUdF
ID0gdSdFbmFibGVDb21wcmVzc2lvbicKK19ESVNBQkxFX01FU1NBR0UgPSB1J0Rpc2FibGVDb21w
cmVzc2lvbicKKworCitkZWYgX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3Io
cmVxdWVzdCk6CisgICAgZm9yIGV4dGVuc2lvbl9wcm9jZXNzb3IgaW4gcmVxdWVzdC53c19leHRl
bnNpb25fcHJvY2Vzc29yczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShleHRlbnNpb25fcHJvY2Vz
c29yLCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAgICAgcmV0dXJu
IGV4dGVuc2lvbl9wcm9jZXNzb3IKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiB3ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwcm9jZXNzb3IgPSBfZ2V0X2RlZmxh
dGVfZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3NvcihyZXF1ZXN0KQorICAgIGlmIG5vdCBwcm9jZXNz
b3I6CisgICAgICAgIHJldHVybgorICAgIHIgPSByZXF1ZXN0LndzX3Jlc291cmNlLnNwbGl0KCc/
JywgMSkKKyAgICBpZiBsZW4ocikgPT0gMToKKyAgICAgICAgcmV0dXJuCisgICAgcGFyYW1ldGVy
cyA9IHVybHBhcnNlLnBhcnNlX3FzKHJbMV0sIGtlZXBfYmxhbmtfdmFsdWVzPVRydWUpCisgICAg
aWYgJ21heF93aW5kb3dfYml0cycgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgd2luZG93X2JpdHMg
PSBpbnQocGFyYW1ldGVyc1snbWF4X3dpbmRvd19iaXRzJ11bMF0pCisgICAgICAgIHByb2Nlc3Nv
ci5zZXRfcmVzcG9uc2Vfd2luZG93X2JpdHMod2luZG93X2JpdHMpCisgICAgaWYgJ25vX2NvbnRl
eHRfdGFrZW92ZXInIGluIHBhcmFtZXRlcnM6CisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9u
c2Vfbm9fY29udGV4dF90YWtlb3ZlcihUcnVlKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEocmVxdWVzdCk6CisgICAgcHJvY2Vzc29yID0gX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVu
c2lvbl9wcm9jZXNzb3IocmVxdWVzdCkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsaW5lID0g
cmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgbGluZSBpcyBO
b25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5p
Y29kZSk6CisgICAgICAgICAgICBpZiBwcm9jZXNzb3I6CisgICAgICAgICAgICAgICAgaWYgbGlu
ZSA9PSBfRU5BQkxFX01FU1NBR0U6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5lbmFi
bGVfb3V0Z29pbmdfY29tcHJlc3Npb24oKQorICAgICAgICAgICAgICAgIGVsaWYgbGluZSA9PSBf
RElTQUJMRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuZGlzYWJsZV9v
dXRnb2luZ19jb21wcmVzc2lvbigpCisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5k
X21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGluZSA9PSBfR09P
REJZRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVl
KQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhl
YWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dApp
bmRleCBhZGYwNmI2NTFkNmI0NzE1YjRhMWI5N2M4N2M5NjAyMzNhYWUxZmEwLi5jYzk5YWYwZGQx
NjVkNTNmNDA2NzBjNWM1ODZhZWM5OWVmYjY4M2NhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lv
bnMtaGVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBl
Y3RlZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyCitDT05TT0xFIE1FU1NBR0U6IFJl
Y2VpdmVkIHVuZXhwZWN0ZWQgZXh0ZW5zaW9uOiB4LWZvbwogVGVzdCB3aGV0aGVyIFdlYlNvY2tl
dCBoYW5kc2hha2UgZmFpbHMgaWYgdGhlIHNlcnZlciBzZW5kcyBTZWMtV2ViU29ja2V0LUV4dGVu
c2lvbnMgaGVhZGVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVkLnR4dAppbmRleCA3OGU0MGQ2MzI1NWNkYzdkODQyMDRm
MmM1MjcxOGFhYTIyNjgzMTdlLi42M2E4ZDYxN2JmNmI5ZTc4ZDQzMGRhOWRiOThhMWRkZjBlZDcx
NTk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQKQEAgLTEs
MTQgKzEsOSBAQAotQ09OU09MRSBNRVNTQUdFOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFy
ZSBvbjogcmVzZXJ2ZWQxID0gMSwgcmVzZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQzID0gMAotQ09OU09M
RSBNRVNTQUdFOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0g
MCwgcmVzZXJ2ZWQyID0gMSwgcmVzZXJ2ZWQzID0gMAotQ09OU09MRSBNRVNTQUdFOiBPbmUgb3Ig
bW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gMCwgcmVzZXJ2ZWQyID0gMCwg
cmVzZXJ2ZWQzID0gMQorQ09OU09MRSBNRVNTQUdFOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRz
IGFyZSBvbjogcmVzZXJ2ZWQyID0gMSwgcmVzZXJ2ZWQzID0gMAorQ09OU09MRSBNRVNTQUdFOiBP
bmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQz
ID0gMQogVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGZyYW1lcyB3aG9zZSByZXNlcnZl
ZCBiaXQgaXMgb24uCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotQml0IDE6IFRlc3Qg
c3RhcnRlZC4KLW9ub3BlbigpIHdhcyBjYWxsZWQuCi1vbmNsb3NlKCkgd2FzIGNhbGxlZC4KLVBB
U1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQogQml0IDI6IFRlc3Qgc3RhcnRlZC4KIG9u
b3BlbigpIHdhcyBjYWxsZWQuCiBvbmNsb3NlKCkgd2FzIGNhbGxlZC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZl
ZC1iaXRzLmh0bWwKaW5kZXggNGIzZTBmMjU3YTYwOWEyMzY4NTk1MWEzOTk3YTkxOThkZDQ2M2Zk
NC4uZWM4ZGQzM2E3NWJhYmE2Njc2YTJjY2MzMzY5MmQ5NDNkMzFjZjY4MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9y
ZXNlcnZlZC1iaXRzLmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKIAogdmFyIGNsb3NlRXZlbnQ7CiAKLS8vIGJpdE51bWJlciBtdXN0IGJlIDEs
IDIsIG9yIDMuCisvLyBiaXROdW1iZXIgbXVzdCBiZSAyIG9yIDMuCiBmdW5jdGlvbiBkb1Rlc3Qo
Yml0TnVtYmVyKQogewogICAgIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzP2JpdD0iICsgYml0TnVtYmVyOwpAQCAtNDYsNyAr
NDYsNyBAQCBmdW5jdGlvbiBkb1Rlc3QoYml0TnVtYmVyKQogICAgIH07CiB9CiAKLWRvVGVzdCgx
KTsKK2RvVGVzdCgyKTsKIAogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jf
d3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5k
LWZpbGUtYmxvYl93c2gucHkKaW5kZXggZGFhNDQwNDcxYWY4M2FiMjYyODY3NTFjM2UxODg4MmY0
ODRkYjc4Yy4uNzkyMDM0Y2ZlM2I3MGUwNDgzYjVkZTk1ZTRlMTcwMWQ5Nzc4MmNhMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZp
bGUtYmxvYl93c2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWZpbGUtYmxvYl93c2gucHkKQEAgLTIsNiArMiwxNCBAQCBmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNn
dXRpbAogCiAKK2RlZiBfcmV0cmlldmVfZnJhbWUoc3RyZWFtKToKKyAgICAjIEZJWE1FOiBVc2Ug
YmV0dGVyIEFQSS4KKyAgICBmcmFtZSA9IHN0cmVhbS5fcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9v
YmplY3QoKQorICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gc3RyZWFtLl9vcHRpb25zLmluY29taW5n
X2ZyYW1lX2ZpbHRlcnM6CisgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisgICAg
cmV0dXJuIGZyYW1lCisKKwogZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgogICAgIHBhc3MgIyBBbHdheXMgYWNjZXB0LgogCkBAIC0xMCwxMiArMTgsMTEgQEAgZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKICAgICBleHBlY3RlZF9tZXNzYWdl
cyA9IFsnSGVsbG8sIHdvcmxkISddCiAKICAgICBmb3IgdGVzdF9udW1iZXIsIGV4cGVjdGVkX21l
c3NhZ2UgaW4gZW51bWVyYXRlKGV4cGVjdGVkX21lc3NhZ2VzKToKLSAgICAgICAgIyBGSVhNRTog
VXNlIGJldHRlciBBUEkuCi0gICAgICAgIG9wY29kZSwgcGF5bG9hZCwgZmluYWwsIHVudXNlZF9y
ZXNlcnZlZDEsIHVudXNlZF9yZXNlcnZlZDIsIHVudXNlZF9yZXNlcnZlZDMgPSByZXF1ZXN0Lndz
X3N0cmVhbS5fcmVjZWl2ZV9mcmFtZSgpCi0gICAgICAgIGlmIG9wY29kZSA9PSBjb21tb24uT1BD
T0RFX0JJTkFSWSBhbmQgcGF5bG9hZCA9PSBleHBlY3RlZF9tZXNzYWdlIGFuZCBmaW5hbDoKKyAg
ICAgICAgZnJhbWUgPSBfcmV0cmlldmVfZnJhbWUocmVxdWVzdC53c19zdHJlYW0pCisgICAgICAg
IGlmIGZyYW1lLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWSBhbmQgZnJhbWUucGF5bG9h
ZCA9PSBleHBlY3RlZF9tZXNzYWdlIGFuZCBmcmFtZS5maW46CiAgICAgICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnUEFTUzogTWVzc2FnZSAjJWQuJyAlIHRlc3RfbnVtYmVy
KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgJ0ZBSUw6IE1lc3NhZ2UgIyVkOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBvcGNvZGUg
PSAlciwgcGF5bG9hZCA9ICVyLCBmaW5hbCA9ICVyJyAlICh0ZXN0X251bWJlciwgb3Bjb2RlLCBw
YXlsb2FkLCBmaW5hbCkpCisgICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnRkFJTDogTWVzc2FnZSAjJWQ6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZnJhbWU6IG9wY29kZSA9
ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0gJXInICUgKHRlc3RfbnVtYmVyLCBmcmFtZS5vcGNv
ZGUsIGZyYW1lLnBheWxvYWQsIGZyYW1lLmZpbikpCiAKIAogZGVmIGFsbF9kaXN0aW5jdF9ieXRl
cygpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128129</attachid>
            <date>2012-02-21 22:05:33 -0800</date>
            <delta_ts>2012-02-21 23:01:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77522-20120222150532.patch</filename>
            <type>text/plain</type>
            <size>54118</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Yjk4MDYxZmVmZDUyYmZiNzU3MDcwMGQ3ZTFjMTQ4ZDdkMDA1OTI4Li5kOTNmYzYyY2Q4Y2NjZDI0
YTFkMTMzMGU5OTZkYWM4MjJlMDQ3NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0w
Mi0yMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVuYnJlYWsg
ZG91YmxlLXR5cGVkIGFycmF5cyBvbiBBUk12NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNjMDk0MzA4N2M3Mjg4
MmI4OTMwMWRhNjc3ODU0N2IzOGI0ZGEwYmQuLjMxZDRjYzRkM2VkOWNiODhhNmU4ZTRjNzRiMmM2
N2JjNzMxMzU3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3MCBAQAogMjAxMi0wMi0yMSAgS2Vu
aWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgQWRkaW5nIFdl
YlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTIyCisKKyAgICAgICAgQWRkIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXIgY2xhc3Mgd2hpY2ggaGFuZGxlcyBkZWZsYXRlLWZyYW1lIGV4dGVuc2lv
bi4KKyAgICAgICAgVGhpcyBjbGFzcyBlbmNhcHN1bGF0ZXMgV2ViU29ja2V0RGVmbGF0ZXIgYW5k
IFdlYlNvY2tldEluZmxhdGVyIGNsYXNzZXMsCisgICAgICAgIHdoaWNoIGRlcGVuZCBvbiB6bGli
LCBzbyB0aGF0IFdlYlNvY2tldENoYW5uZWwgaXMgbm90IG5lY2Vzc2FyeSB0byBhd2FyZQorICAg
ICAgICB6bGliIGRlcGVuZGVuY3kuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29t
cHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUt
aW52YWxpZC1wYXJhbWV0ZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDogQWRkZWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lci4oY3BwfGgpCisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICogVGFyZ2V0LnByaTog
RGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOiBTZXQgbV9l
eHRlbnNpb25zLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KTogQWRkIGRlZmxhdGUt
ZnJhbWUgZXh0ZW5zaW9uIHByb2Nlc3NvciB0byBXZWJTb2NrZXRIYW5zaGFrZSBpZiBkZWZsYXRl
IGNhbiB1c2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpmYWlsKTogQ2Fs
bCBtX2RlZmxhdGVGcmFtZXIuZGlkRmFpbCgpLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKTogRGVjb21wcmVzcyBmcmFtZXMgaWYgbmVlZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKTogQ29tcHJlc3MgZnJh
bWVzIGlmIHBvc3NpYmxlLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRl
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1l
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZy
YW1lOjp+V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFt
ZTo6aGFuZHNoYWtlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxh
dGVSZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmbGF0ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmZs
YXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkluZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXREZWZsYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0SW5mbGF0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGlk
RmFpbCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWZsYXRlUmVzdWx0SG9sZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OnN1Y2NlZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsdXJlUmVhc29uKToKKyAgICAg
ICAgKEluZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5mbGF0ZVJlc3Vs
dEhvbGRlcjo6c3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xk
ZXI6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVkKToKKworMjAx
Mi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgUmVuYW1lICJyZXNlcnZlZDEiIGZsYWcgb2YgV2ViU29ja2V0RnJhbWUgdG8gY29tcHJlc3MK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTg3CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCBmYWEwYzA4ZWYwZGNhM2VkNWUy
NjA3NWNhZDRmZTg0NjA4NDA1MTdhLi5iNjg0NDlmMmEzMjFlZTdmYTM3ZTNhYzU2M2EzNWY2NTc5
N2ExOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTg3LDQgKzEx
ODcsOCBAQAogI2RlZmluZSBXVEZfVVNFX1dURlVSTCAwCiAjZW5kaWYKIAorI2lmICFQTEFURk9S
TShRVCkgJiYgIVBMQVRGT1JNKEVGTCkKKyNkZWZpbmUgV1RGX1VTRV9aTElCIDEKKyNlbmRpZgor
CiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjA0
NzBjOGVkNDc2ZTI3MmZmOGYwNmJhNWE3NjZjZDlmYThlYjg2Yy4uNDdkMjRmOWNkOTEzMjU2N2Ux
NmVkYWM0YzkwNDczNmYzMzBhZDUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwNTQsNiAr
MjA1NCw3IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAgICAgICAgIHdlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAogICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCiAgICAgICAg
IHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKICAgICAgICAgd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDcyODUyYjFiZWY0ZTQ4NTFhMTY4YWExMDM4NWNlNGI3NTlmZjFmN2QuLjJiYjE1NzljNGIxNmQy
ZGViNjE0NjkzNzQ1OTlkYmNmMGIxMTkyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNDMzNyw2ICs0MzM3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFt
ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFt
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCBjODNkMDgyZTUyN2VhZDdjNjMyNWFjYzU3Mzc4MTEyNDA3OGIzNjBk
Li45YzExOGE1NTc4ZDE1MDFiZjQ3ZDBhNGVmODBmMDJhM2Q4ZTMyNjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTM2NjUsNiArMzY2NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VU
Uz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmggXAogICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbENsaWVudC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBc
CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmggXApAQCAtMzY3Niw2ICszNjc3LDcgQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICBTT1VSQ0VTICs9
IFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
IFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggZjM5OTdmODY4ODU2ZDQ3ODFjMDZjMjQwMjRmNWMxOTA2N2U0M2E4
MC4uNmIwNDlmZjgyYjExNmFhM2M1N2M1ZTQ4ZjAyYjZiYWJiYjI3ZTViMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNDgxNCw2ICs0ODE0LDggQEAKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgn
LAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAnLAor
ICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oJywKICAgICAg
ICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCcsCiAgICAgICAgICAgICAn
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNzZlZmNlYTA0YmM4NzY3NmJmZTZlYjAz
Yzc2YWY4YTM3NjRmY2I1Yy4uZjFiZmFmN2YwZWE4ZGZiOTM3N2Q3MGE1YTljY2NkYmEyZWRjNjk4
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTczNDU0LDYgKzczNDU0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tl
dHNcV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVyLmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjQ4YzJhNmY2NWYyZGMwYjQyMmFhNzI5OWI1OTk4MmQ4
YzUzMmJkNS4uN2IxZjJiNGYzZTZjZmIzYTZhNmU0YTNhMmNmNDMyYzk0MDJjYTEyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTM2Nyw2ICsxMzY3LDggQEAKIAkJNEExRTcxOTYxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNo
YWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBMUU3MTk0MTRFMTAxRjkwMDYyNkY5RCAvKiBKU0hUTUxTaGFkb3dFbGVtZW50LmggKi87
IH07CiAJCTRBMUU3MUE1MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEExRTcxQTMxNEUxMDZB
QzAwNjI2RjlEIC8qIEpTU2hhZG93Um9vdC5jcHAgKi87IH07CiAJCTRBMUU3MUE2MTRFMTA2QUMw
MDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3Qu
aCAqLzsgfTsKKwkJNEEyOTIyMkIxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVG
cmFtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEEyOTIyMjkxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICov
OyB9OworCQk0QTI5MjIyQzE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEyOTIy
MkExNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCAqLzsgfTsKIAkJ
NEE0QTIzNDYxNEYxRTE0NDAwNDZGQkYxIC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTRBMjM0NTE0RjFFMTQ0MDA0NkZC
RjEgLyogV2ViU29ja2V0RnJhbWUuaCAqLzsgfTsKIAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4
IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFs
dWUuY3BwICovOyB9OwogCQk0QTZFOUZDNDEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2
RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODIyOSw2ICs4MjMxLDggQEAK
IAkJNEExRTcxOTQxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MU2hhZG93RWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTFFNzFBMzE0RTEwNkFDMDA2MjZGOUQgLyogSlNT
aGFkb3dSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hh
ZG93Um9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMUU3MUE0MTRFMTA2
QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTaGFkb3dSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBMjky
MjI5MTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTI5MjIyQTE0RjQ2OEJBMDAyMUY3N0Ug
LyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRBNEEyMzQ1MTRGMUUxNDQwMDQ2RkJGMSAvKiBXZWJTb2NrZXRGcmFtZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRGcmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVW
YWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVy
ZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzIxM0MxN0Qx
RDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udEZlYXR1cmVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQ4NDksNiArMTQ4NTMsOCBAQAogCQkJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBX
ZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKIAkJCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyog
V2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8sCisJCQkJNEEyOTIyMjkxNEY0NjhCQTAwMjFGNzdF
IC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovLAorCQkJCTRBMjkyMjJBMTRGNDY4QkEw
MDIxRjc3RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggKi8sCiAJCQkJNEFFMDJBQkIxNEU4
QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLywKIAkJCQk0QUUwMkFCQzE0
RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLywKIAkJCQk0QTk1N0YwMzE0
RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8sCkBA
IC0yNDIzMyw2ICsyNDIzOSw3IEBACiAJCQkJNTE4QTM0QzIxMDI2QzgzMTAwMUI2ODk2IC8qIFdl
YlNvY2tldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEQ0QTUwMTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QTI5MjIyQzE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEFFMDJBQkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxh
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTk1N0YwNzE0RTI0MTMwMDA0OURCRkIgLyogV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFERTI1RkEx
NEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzE5MSw2ICsyNzE5OCw3IEBACiAJCQkJMUNBRjM0ODIwQTZDNDA1MjAwQUJF
MDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEEzNEMxMTAy
NkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRB
NEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNEEyOTIyMkIxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEE5NTdGMDYxNEUyNDEyQTAwNDlEQkZCIC8qIFdlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEFFMDJBQkQx
NEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXgg
MzZkYmI2ZjMyYzI0OTgzYzIwZjg1OGUwZGFjNzc2MWZiNjliMTJhNC4uN2RkODU0ZWQxNTJhMzIx
ZjA0OTIxMTJjZTU1YTdmMTA5ZTg5MzNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0
KCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBtX3N0YXRlID0g
T1BFTjsKICAgICBtX3N1YnByb3RvY29sID0gbV9jaGFubmVsLT5zdWJwcm90b2NvbCgpOworICAg
IG1fZXh0ZW5zaW9ucyA9IG1fY2hhbm5lbC0+ZXh0ZW5zaW9ucygpOwogICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggZWMwNzA2ZGI0Zjg0OGY1NzU1MWM5ODdmMjdiYzQ0ZTJkYzgwNDI2OC4uYzQwYjA5ODU3
ZTZhZDcwNDhhZTFkNTBjYzkyYzY1MTcyNGM3NGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMjcsNiArMTI3LDggQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBtX2hhbmRzaGFrZSA9IGFk
b3B0UHRyKG5ldyBXZWJTb2NrZXRIYW5kc2hha2UodXJsLCBwcm90b2NvbCwgbV9kb2N1bWVudCwg
bV91c2VIaXhpZTc2UHJvdG9jb2wpKTsKICAgICBtX2hhbmRzaGFrZS0+cmVzZXQoKTsKKyAgICBp
ZiAoIW1fdXNlSGl4aWU3NlByb3RvY29sICYmIG1fZGVmbGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkp
CisgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3IobV9kZWZsYXRlRnJh
bWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKICAgICBpZiAobV9pZGVudGlmaWVyKQog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldChtX2Rv
Y3VtZW50LCBtX2lkZW50aWZpZXIsIHVybCwgbV9kb2N1bWVudC0+dXJsKCkpOwogICAgIHJlZigp
OwpAQCAtMjI4LDYgKzIzMCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBT
dHJpbmcmIHJlYXNvbikKICAgICAgICAgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1
ZTsKICAgICAgICAgaWYgKG1fYnVmZmVyKQogICAgICAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZl
clNpemUpOyAvLyBTYXZlIG1lbW9yeS4KKyAgICAgICAgbV9kZWZsYXRlRnJhbWVyLmRpZEZhaWwo
KTsKICAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKICAgICAgICAgbV9jb250
aW51b3VzRnJhbWVEYXRhLmNsZWFyKCk7CiAgICAgfQpAQCAtNjE4LDYgKzYyMSwxMiBAQCBib29s
IFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJUKG1fYnVmZmVyIDwg
ZnJhbWVFbmQpOwogICAgIEFTU0VSVChmcmFtZUVuZCA8PSBtX2J1ZmZlciArIG1fYnVmZmVyU2l6
ZSk7CiAKKyAgICBJbmZsYXRlUmVzdWx0SG9sZGVyIGluZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVG
cmFtZXIuaW5mbGF0ZShmcmFtZSk7CisgICAgaWYgKCFpbmZsYXRlUmVzdWx0LnN1Y2NlZWRlZCgp
KSB7CisgICAgICAgIGZhaWwoaW5mbGF0ZVJlc3VsdC5mYWlsdXJlUmVhc29uKCkpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVmFsaWRhdGUgdGhlIGZyYW1lIGRhdGEu
CiAgICAgaWYgKFdlYlNvY2tldEZyYW1lOjppc1Jlc2VydmVkT3BDb2RlKGZyYW1lLm9wQ29kZSkp
IHsKICAgICAgICAgZmFpbCgiVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogIiArIFN0cmluZzo6
bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwpAQCAtMTAxMSw2ICsxMDIwLDEzIEBAIGJvb2wgV2ViU29j
a2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25z
dCBjaGFyKiBkYXRhCiAKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBD
aGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogICAg
IFdlYlNvY2tldEZyYW1lIGZyYW1lKG9wQ29kZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGRh
dGFMZW5ndGgpOworCisgICAgRGVmbGF0ZVJlc3VsdEhvbGRlciBkZWZsYXRlUmVzdWx0ID0gbV9k
ZWZsYXRlRnJhbWVyLmRlZmxhdGUoZnJhbWUpOworICAgIGlmICghZGVmbGF0ZVJlc3VsdC5zdWNj
ZWVkZWQoKSkgeworICAgICAgICBmYWlsKGRlZmxhdGVSZXN1bHQuZmFpbHVyZVJlYXNvbigpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIFZlY3RvcjxjaGFyPiBmcmFtZURh
dGE7CiAgICAgbWFrZUZyYW1lRGF0YShmcmFtZSwgZnJhbWVEYXRhKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA0YmIyOGM5ZjJiMDVhZjM0
OTk3YmUwN2E2MmYxMmJjNGU5ODM1ODE4Li42ZDFmZWJiY2EwNmUxZWQ3ZDVjZWUxNTBkODc2MGFm
NzgwNDYyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KQEAgLTIzMSw2ICsyMzIsOCBAQCBwcml2YXRlOgogICAgIE93blB0
cjxGaWxlUmVhZGVyTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgQmxvYkxvYWRlclN0YXR1cyBt
X2Jsb2JMb2FkZXJTdGF0dXM7CiAjZW5kaWYKKworICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIg
bV9kZWZsYXRlRnJhbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGM5ZDM1MzZiYWIzZWI5MDhjY2FjNzNmNDhiY2E4MzdmNzVjNWVhNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgor
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIDogcHVibGljIFdlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3NvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPiBjcmVhdGUoV2ViU29ja2V0RGVmbGF0ZUZy
YW1lciogZnJhbWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2Nr
ZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoZnJhbWVyKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldl
YlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcg
aGFuZHNoYWtlU3RyaW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHByb2Nlc3NSZXNw
b25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBPVkVSUklERSB7IHJldHVybiBtX2ZhaWx1cmVSZWFz
b247IH0KKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lciopOworCisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogbV9m
cmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAgIFN0cmluZyBtX2ZhaWx1
cmVSZWFzb247Cit9OworCisvLyBGWElNRTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhl
IHNwZWNpZmljYXRpb24gbWF0dXJlZC4KK1dlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6
V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZy
YW1lcikKKyAgICA6IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0
ZS1mcmFtZSIpCisgICAgLCBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3Jlc3BvbnNlUHJvY2Vz
c2VkKGZhbHNlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK1N0cmluZyBXZWJTb2Nr
ZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCit7CisgICAgcmV0dXJu
IGV4dGVuc2lvblRva2VuKCk7IC8vIE5vIHBhcmFtZXRlcgorfQorCitib29sIFdlYlNvY2tldEV4
dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQoreworI2lmIFVTRShaTElCKQorICAgIGlmICht
X3Jlc3BvbnNlUHJvY2Vzc2VkKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZl
ZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFtZSByZXNwb25zZSI7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgbV9yZXNwb25zZVByb2Nlc3NlZCA9IHRydWU7CisKKyAgICBpbnQgZXhw
ZWN0ZWROdW1QYXJhbWV0ZXJzID0gMDsKKyAgICBpbnQgd2luZG93Qml0cyA9IDE1OworICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQ
YXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIpOworICAgIGlmIChwYXJhbWV0ZXIgIT0g
c2VydmVyUGFyYW1ldGVycy5lbmQoKSkgeworICAgICAgICB3aW5kb3dCaXRzID0gcGFyYW1ldGVy
LT5zZWNvbmQudG9JbnQoKTsKKyAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0Jp
dHMgPiAxNSkgeworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFs
aWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzKys7CisgICAgfQorCisg
ICAgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSA9IFdlYlNvY2tl
dERlZmxhdGVyOjpUYWtlT3ZlckNvbnRleHQ7CisgICAgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1l
dGVycy5maW5kKCJub19jb250ZXh0X3Rha2VvdmVyIik7CisgICAgaWYgKHBhcmFtZXRlciAhPSBz
ZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CisgICAgICAgIGlmICghcGFyYW1ldGVyLT5zZWNvbmQu
aXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZh
bGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90
VGFrZU92ZXJDb250ZXh0OworICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKKyAgICB9
CisKKyAgICBpZiAoZXhwZWN0ZWROdW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6
ZSgpKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRl
ZmxhdGUtZnJhbWUgcGFyYW1ldGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIG1fZnJhbWVyLT5lbmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOworICAgIHJldHVy
biB0cnVlOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworRGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRl
cihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIp
CisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisK
K0RlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2Zy
YW1lci0+cmVzZXREZWZsYXRlQ29udGV4dCgpOworfQorCit2b2lkIERlZmxhdGVSZXN1bHRIb2xk
ZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3VjY2VlZGVk
ID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30KKworSW5m
bGF0ZVJlc3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJh
bWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0
cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXI6
On5JbmZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29u
dGV4dCgpOworfQorCit2b2lkIEluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5n
JiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWls
dXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30KKworV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCisgICAgOiBtX2VuYWJsZWQoZmFsc2UpCit7Cit9CisK
K1Bhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKQoreworICAgIHJldHVybiBXZWJTb2Nr
ZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmNyZWF0ZSh0aGlzKTsKK30KKworYm9vbCBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKK3sKKyNpZiBVU0UoWkxJQikKKyAg
ICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNp
ZiBVU0UoWkxJQikKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShp
bnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9k
ZSkKK3sKKyAgICBtX2RlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSh3aW5kb3dC
aXRzLCBtb2RlKTsKKyAgICBtX2luZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgp
OworICAgIGlmICghbV9kZWZsYXRlciB8fCAhbV9pbmZsYXRlcikgeworICAgICAgICBtX2RlZmxh
dGVyLmNsZWFyKCk7CisgICAgICAgIG1faW5mbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoIW1fZGVmbGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRl
ci0+aW5pdGlhbGl6ZSgpKSB7CisgICAgICAgIG1fZGVmbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAg
bV9pbmZsYXRlci5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZW5hYmxl
ZCA9IHRydWU7Cit9CisjZW5kaWYKKworRGVmbGF0ZVJlc3VsdEhvbGRlciBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJ
QikKKyAgICBEZWZsYXRlUmVzdWx0SG9sZGVyIHJlc3VsdCh0aGlzKTsKKyAgICBpZiAoIWVuYWJs
ZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUp
IHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGlm
ICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0
aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CisgICAgICAgIHJlc3VsdC5mYWlsKCJGYWls
ZWQgdG8gY29tcHJlc3MgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgZnJhbWUuY29tcHJlc3MgPSB0cnVlOworICAgIGZyYW1lLnBheWxvYWQgPSBtX2RlZmxhdGVy
LT5kYXRhKCk7CisgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IG1fZGVmbGF0ZXItPnNpemUoKTsK
KyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4gRGVmbGF0ZVJlc3VsdEhvbGRl
cih0aGlzKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0
RGVmbGF0ZUNvbnRleHQoKQoreworI2lmIFVTRShaTElCKQorICAgIGlmIChtX2RlZmxhdGVyKQor
ICAgICAgICBtX2RlZmxhdGVyLT5yZXNldCgpOworI2VuZGlmCit9CisKK0luZmxhdGVSZXN1bHRI
b2xkZXIgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJh
bWUpCit7CisjaWYgVVNFKFpMSUIpCisgICAgSW5mbGF0ZVJlc3VsdEhvbGRlciByZXN1bHQodGhp
cyk7CisgICAgaWYgKCFmcmFtZS5jb21wcmVzcykKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShm
cmFtZS5vcENvZGUpKSB7CisgICAgICAgIHJlc3VsdC5mYWlsKCJSZWNlaXZlZCB1bmV4cGVjdGVk
IGNvbXByZXNzZWQgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
aWYgKCFtX2luZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVu
Z3RoKSB8fCAhbV9pbmZsYXRlci0+ZmluaXNoKCkpIHsKKyAgICAgICAgcmVzdWx0LmZhaWwoIkZh
aWxlZCB0byBkZWNvbXByZXNzIGZyYW1lIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIGZyYW1lLmNvbXByZXNzID0gZmFsc2U7CisgICAgZnJhbWUucGF5bG9hZCA9IG1faW5m
bGF0ZXItPmRhdGEoKTsKKyAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9pbmZsYXRlci0+c2l6
ZSgpOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBJbmZsYXRlUmVzdWx0
SG9sZGVyKHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
cmVzZXRJbmZsYXRlQ29udGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1faW5mbGF0
ZXIpCisgICAgICAgIG1faW5mbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjpkaWRGYWlsKCkKK3sKKyAgICByZXNldERlZmxhdGVDb250ZXh0
KCk7CisgICAgcmVzZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlOGJh
ODM5MDNmNWEyYjZkZTA3ODA3MmMzZmQ1NzI3ZjcyZTdiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApAQCAtMCww
ICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaAorI2RlZmluZSBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2lmIFVT
RShaTElCKQorI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCisjZW5kaWYKKyNpbmNsdWRl
ICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRGcmFt
ZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERlZmxhdGVGcmFtZXI7
CisKK2NsYXNzIERlZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IERl
ZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworICAgIH5EZWZsYXRl
UmVzdWx0SG9sZGVyKCk7CisKKyAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3VjY2VlZGVkOyB9CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBt
X2ZhaWx1cmVSZWFzb247IH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVS
ZWFzb24pOworCitwcml2YXRlOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVy
OworICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307
CisKK2NsYXNzIEluZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IElu
ZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworICAgIH5JbmZsYXRl
UmVzdWx0SG9sZGVyKCk7CisKKyAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3VjY2VlZGVkOyB9CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBt
X2ZhaWx1cmVSZWFzb247IH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVS
ZWFzb24pOworCitwcml2YXRlOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVy
OworICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307
CisKK2NsYXNzIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgeworcHVibGljOgorICAgIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXIoKTsKKworICAgIFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yPiBjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKTsKKworICAgIGJvb2wgY2FuRGVmbGF0
ZSgpIGNvbnN0OworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsg
fQorCisgICAgRGVmbGF0ZVJlc3VsdEhvbGRlciBkZWZsYXRlKFdlYlNvY2tldEZyYW1lJik7Cisg
ICAgdm9pZCByZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgSW5mbGF0ZVJlc3VsdEhvbGRlciBp
bmZsYXRlKFdlYlNvY2tldEZyYW1lJik7CisgICAgdm9pZCByZXNldEluZmxhdGVDb250ZXh0KCk7
CisKKyAgICB2b2lkIGRpZEZhaWwoKTsKKworI2lmIFVTRShaTElCKQorICAgIHZvaWQgZW5hYmxl
RGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zl
ck1vZGUpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2VuYWJsZWQ7CisjaWYgVVNF
KFpMSUIpCisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBtX2RlZmxhdGVyOworICAgIE93
blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gbV9pbmZsYXRlcjsKKyNlbmRpZgorfTsKKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcl9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNDlkMzA1MTk3NTFhMDA2ZmEwNjE2NzdhZmJkZDY4MTI0ZTIxZWIy
Yy4uODBmMDNjODYzYTVhOTE0YWZmYmU3NTFiYmI3YmVmMDMxOTcwY2VmMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDM4IEBACiAyMDEyLTAyLTIxICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVt
Lm9yZz4KIAorICAgICAgICBBZGRpbmcgV2ViU29ja2V0IHBlci1mcmFtZSBERUZMQVRFIGV4dGVu
c2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1
MjIKKworICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0
ZW5zaW9uLiBBbHNvIHVwZGF0ZWQgc29tZQorICAgICAgICB0ZXN0cyB0byBmb2xsb3cgdGhlIGNo
YW5nZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1l
LWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3Rl
ZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVz
c2VkLWNvbnRyb2wtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5OiBBZGRlZC4K
KyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1l
LWNvbXAtYml0LW9ub2ZmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0
ZXJfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAg
ICAgIChfZ2V0X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3Nvcik6CisgICAgICAgICh3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFu
ZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5Ogor
ICAgICAgICAoX3JldHJpZXZlX2ZyYW1lKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJf
ZGF0YSk6CisKKzIwMTItMDItMjEgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0u
b3JnPgorCiAgICAgICAgIFJlbmFtZSAicmVzZXJ2ZWQxIiBmbGFnIG9mIFdlYlNvY2tldEZyYW1l
IHRvIGNvbXByZXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03OTE4NwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJv
bC1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQxZWM0NzNkNmJlMjFjMWMwNjAxMDI5
ZmZjNWZhMzljY2JmMzgyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0
ZWQgY29tcHJlc3NlZCBmcmFtZQorVGVzdCB3aGV0aGVyIGEgY29tcHJlc3NlZCBjb250cm9sIGZy
YW1lIGlzIHJlamVjdGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25vcGVuKCkg
d2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjIwODhjNzk5YmU0MTFjMTIyODEyYTUwOTQyZmE4Mzk4MzgwMDlhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVy
IGEgY29tcHJlc3NlZCBjb250cm9sIGZyYW1lIGlzIHJlamVjdGVkIik7CisKK3dpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2Vi
U29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndz
Oi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9s
LWZyYW1lIik7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQorewor
ICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIHRl
c3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2Fn
ZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBk
ZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50Owor
ICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nv
bXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGU4ODdhZWFiYTU2NjhhZTMxNWVjMDRiMThlZDc0ZTE3NzNhNTMyZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29t
cHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDQ4IEBACisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQoraW1wb3J0IHpsaWIKKworCitkZWYgd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2Jq
KAorICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXps
aWIuTUFYX1dCSVRTKQorICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzLmNvbXByZXNz
KCdjbG9zZSBtZXNzYWdlJykKKyAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgY29tcHJlc3NlZF9tZXNzYWdlID0gY29tcHJlc3Nl
ZF9tZXNzYWdlWzotNF0KKyAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigKKyAgICAg
ICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ0xPU0UsIHBheWxvYWRfbGVuZ3RoPWxlbihjb21wcmVz
c2VkX21lc3NhZ2UpLAorICAgICAgICBmaW49MSwgcnN2MT0xLCByc3YyPTAsIHJzdjM9MCwgbWFz
az1GYWxzZSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaGVhZGVyICsgY29tcHJlc3Nl
ZF9tZXNzYWdlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1j
b21wLWJpdC1vbm9mZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYyZmVmM2RlNmYwZmU0MDgw
ZWEyZDM1MjNmMjk1YjQzODYyM2YzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9m
Zi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCBjb21wcmVzc2lvbiBlbmFibGVk
L2Rpc2FibGVkIGZyYW1lIHJlY2VpdmluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CitTZW5kaW5nIG1lc3NhZ2U6ICJIZWxsbyIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnSGVsbG8nCitT
ZW5kaW5nIG1lc3NhZ2U6ICJEaXNhYmxlQ29tcHJlc3Npb24iCitQQVNTIGV2ZW50LmRhdGEgaXMg
J0Rpc2FibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVzc2FnZTogIldvcmxkIgorUEFTUyBldmVu
dC5kYXRhIGlzICdXb3JsZCcKK1NlbmRpbmcgbWVzc2FnZTogIkVuYWJsZUNvbXByZXNzaW9uIgor
UEFTUyBldmVudC5kYXRhIGlzICdFbmFibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVzc2FnZTog
Ikdvb2RieWUiCitQQVNTIGV2ZW50LmRhdGEgaXMgJ0dvb2RieWUnCitvbmNsb3NlKCkgd2FzIGNh
bGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0
LW9ub2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzJhYzU3YmI4
ZjhiYjkwNmZhYTQyYjQzMzRiZjJmYzI3OGE2NzY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAt
Yml0LW9ub2ZmLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRlc3QgY29tcHJlc3Npb24gZW5hYmxlZC9kaXNhYmxlZCBmcmFtZSByZWNlaXZpbmcuIik7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciBjbG9zZUV2
ZW50OwordmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFyIG1lc3NhZ2VzID0gWworICAg
ICJIZWxsbyIsCisgICAgIkRpc2FibGVDb21wcmVzc2lvbiIsIC8vIFRoaXMgZGlzYWJsZXMgY29t
cHJlc3Npb24KKyAgICAiV29ybGQiLAorICAgICJFbmFibGVDb21wcmVzc2lvbiIsIC8vIFRoaXMg
ZW5hYmxlcyBjb21wcmVzc2lvbgorICAgICJHb29kYnllIgorXTsKKword3MgPSBuZXcgV2ViU29j
a2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUiKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgbWVzc2FnZUluZGV4
ID0gMDsKKyAgICBkZWJ1ZygiU2VuZGluZyBtZXNzYWdlOiBcIiIgKyBtZXNzYWdlc1ttZXNzYWdl
SW5kZXhdICsgIlwiIik7CisgICAgd3Muc2VuZChtZXNzYWdlc1ttZXNzYWdlSW5kZXhdKTsKK307
CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHNob3VsZEJlKCJldmVu
dC5kYXRhIiwgIiciICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICInIik7CisgICAgaWYgKG1l
c3NhZ2VJbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgd3MuY2xvc2UoKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgbWVzc2FnZUluZGV4ICs9IDE7CisgICAgICAgIGRlYnVnKCJT
ZW5kaW5nIG1lc3NhZ2U6IFwiIiArIG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0gKyAiXCIiKTsKKyAg
ICAgICAgd3Muc2VuZChtZXNzYWdlc1ttZXNzYWdlSW5kZXhdKTsKKyAgICB9Cit9OworCit3cy5v
bmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2Fs
bGVkLiIpOworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZVRydWUoImNsb3Nl
RXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJh
bWV0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44M2EyNGQyOGNjMjMzYjdhNWY2MzQ5M2I5NWQwZjgxYmE3ZjM0ZGIyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9k
ZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4
IEBACitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZGVmbGF0ZS1mcmFtZSBw
YXJhbWV0ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93X2Jp
dHMgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRv
d19iaXRzIHBhcmFtZXRlcgorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCBpbnZhbGlkIG5vX2Nv
bnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhw
ZWN0ZWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0ZXIKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVq
ZWN0cyBpbnZhbGlkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVycy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitUZXN0aW5nIHBhcmFtZXRlcjogIngtZm9vIgorb25jbG9zZSgpIHdhcyBj
YWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3RpbmcgcGFyYW1l
dGVyOiAibWF4X3dpbmRvd19iaXRzPTciCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xv
c2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJtYXhfd2luZG93
X2JpdHM9MTYiCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVh
biBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJub19jb250ZXh0X3Rha2VvdmVyPWZvbyIK
K29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNl
CitUZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz04OyBub19jb250ZXh0X3Rha2Vv
dmVyOyB4LWZvbyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1w
YXJhbWV0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTVmYmQwNmQyMDJhM2VjYzgwMmFlMjRhNzc5ZWY2
NGI5MzlhOWMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKQEAg
LTAsMCArMSw1NyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBX
ZWJTb2NrZXQgcmVqZWN0cyBpbnZhbGlkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVycy4iKTsKKwor
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7
CisKK3ZhciB0ZXN0Q2FzZSA9IFsKKyAgICAieC1mb28iLAorICAgICJtYXhfd2luZG93X2JpdHM9
NyIsCisgICAgIm1heF93aW5kb3dfYml0cz0xNiIsCisgICAgIm5vX2NvbnRleHRfdGFrZW92ZXI9
Zm9vIiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTg7IG5vX2NvbnRleHRfdGFrZW92ZXI7IHgtZm9v
IgorXTsKKworZnVuY3Rpb24gZG9UZXN0KGluZGV4KQoreworICAgIHZhciBwYXJhbWV0ZXIgPSB0
ZXN0Q2FzZVtpbmRleF07CisgICAgdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXI/IiArIGVuY29k
ZVVSSShwYXJhbWV0ZXIpOworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKworICAg
IGRlYnVnKCJUZXN0aW5nIHBhcmFtZXRlcjogXCIiICsgcGFyYW1ldGVyICsgIlwiIik7CisKKyAg
ICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBtZXNz
YWdlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNh
bGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIH07CisKKyAgICB3
cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWJ1Zygib25jbG9z
ZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICAgICAg
c2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAoaW5kZXgg
PT09IHRlc3RDYXNlLmxlbmd0aCAtIDEpCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZG9UZXN0KGluZGV4ICsgMSk7CisgICAgfTsKK30KKwor
ZG9UZXN0KDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9k
ZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRl
cl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgxMDlhOTY5NzljOGIyYWY2YmYzMmI0OGUyZjQ4YzNlZWFm
MGIwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlcl93c2gucHkKQEAgLTAs
MCArMSwyNyBAQAoraW1wb3J0IHVybGxpYgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhh
bmRzaGFrZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkgaW1wb3J0IGNvbXB1
dGVfYWNjZXB0CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgorICAgIHJlc291cmNlcyA9IHJlcXVlc3Qud3NfcmVzb3VyY2Uuc3BsaXQoJz8nLCAxKQorICAg
IHBhcmFtZXRlcnMgPSBOb25lCisgICAgaWYgbGVuKHJlc291cmNlcykgPT0gMjoKKyAgICAgICAg
cGFyYW1ldGVycyA9IHVybGxpYi51bnF1b3RlKHJlc291cmNlc1sxXSkKKworICAgIG1lc3NhZ2Ug
PSAnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIG1lc3NhZ2UgKz0g
J1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgbWVzc2FnZSArPSAnQ29ubmVjdGlvbjogVXBn
cmFkZVxyXG4nCisgICAgbWVzc2FnZSArPSAnU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVzXHJcbicg
JSBjb21wdXRlX2FjY2VwdChyZXF1ZXN0LmhlYWRlcnNfaW5bJ1NlYy1XZWJTb2NrZXQtS2V5J10p
WzBdCisgICAgbWVzc2FnZSArPSAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiB4LXdlYmtpdC1k
ZWZsYXRlLWZyYW1lJworICAgIGlmIHBhcmFtZXRlcnM6CisgICAgICAgIG1lc3NhZ2UgKz0gJzsg
JXNcclxuJyAlIHBhcmFtZXRlcnMKKyAgICBlbHNlOgorICAgICAgICBtZXNzYWdlICs9ICdcclxu
JworICAgIG1lc3NhZ2UgKz0gJ1xyXG4nCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1l
c3NhZ2UpCisgICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oJ0Fib3J0
IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50cyBweXdlYnNvY2tldCBmcm9tIHNlbmRpbmcgaXRz
IG93biBoYW5kc2hha2UgbWVzc2FnZS4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZy
YW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2M2ZlMzk0YTQ2MjRhMTg0
YzNkYjJmNDcyODk0NDQ5ZDBkNDA0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3QgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUg
ZXh0ZW5zaW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3RpbmcgcXVlcnk6
ICJtYXhfd2luZG93X2JpdHM9OCIKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gtd2Via2l0
LWRlZmxhdGUtZnJhbWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNo
KCdtYXhfd2luZG93X2JpdHM9OCcpICE9IC0xIGlzIHRydWUKK1BBU1MgZXZlbnQuZGF0YSBpcyBm
aXJzdE1lc3NhZ2UKK1BBU1MgZXZlbnQuZGF0YSBpcyBzZWNvbmRNZXNzYWdlCitvbmNsb3NlKCkg
d2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitUZXN0aW5nIHF1
ZXJ5OiAibm9fY29udGV4dF90YWtlb3ZlciIKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gt
d2Via2l0LWRlZmxhdGUtZnJhbWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMu
c2VhcmNoKCdub19jb250ZXh0X3Rha2VvdmVyJykgIT0gLTEgaXMgdHJ1ZQorUEFTUyBldmVudC5k
YXRhIGlzIGZpcnN0TWVzc2FnZQorUEFTUyBldmVudC5kYXRhIGlzIHNlY29uZE1lc3NhZ2UKK29u
Y2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1Rl
c3RpbmcgcXVlcnk6ICJtYXhfd2luZG93X2JpdHM9OCZub19jb250ZXh0X3Rha2VvdmVyIgorUEFT
UyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0ZS1mcmFtZScpICE9IC0xIGlz
IHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ21heF93aW5kb3dfYml0cz04JykgIT0g
LTEgaXMgdHJ1ZQorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbm9fY29udGV4dF90YWtlb3Zl
cicpICE9IC0xIGlzIHRydWUKK1BBU1MgZXZlbnQuZGF0YSBpcyBmaXJzdE1lc3NhZ2UKK1BBU1Mg
ZXZlbnQuZGF0YSBpcyBzZWNvbmRNZXNzYWdlCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1Mg
Y2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBh
cmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNzdlNDcxODE3ZTIzNDdjZmI4MzZmZDllM2FhYTNl
ZmI4NWM2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwKQEAgLTAsMCArMSw5
MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgV2ViU29ja2V0IGRlZmxhdGUt
ZnJhbWUgZXh0ZW5zaW9uLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIs
IDApOworCit2YXIgY2xvc2VFdmVudDsKK3ZhciB3czsKK3ZhciBtZXNzYWdlSW5kZXg7CisKK3Zh
ciBxdWVyaWVzID0gWworICAgICJtYXhfd2luZG93X2JpdHM9OCIsCisgICAgIm5vX2NvbnRleHRf
dGFrZW92ZXIiLAorICAgICJtYXhfd2luZG93X2JpdHM9OCZub19jb250ZXh0X3Rha2VvdmVyIgor
XTsKKworLy8gVGhlIGZpcnN0IG1lc3NhZ2UgY29uc2lzdHMgb2YgYSBsb3Qgb2YgJ2InIGFuZCBh
IGZldyAnYScgYXQgdGhlIGhlYWQgYW5kCisvLyB0aGUgdGFpbCwgd2hpbGUgdGhlIHNlY29uZCBv
bmUgY29uc2lzdHMgb2YgJ2EnLgordmFyIGZpcnN0TWVzc2FnZSA9ICcnOwordmFyIHNlY29uZE1l
c3NhZ2UgPSAnJzsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgIGZpcnN0TWVz
c2FnZSArPSAnYSc7CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9Citmb3IgKHZhciBpID0g
MDsgaSA8IDEwMjQ7ICsraSkgeworICAgIGZpcnN0TWVzc2FnZSArPSAnYic7CisgICAgc2Vjb25k
TWVzc2FnZSArPSAnYSc7Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICBm
aXJzdE1lc3NhZ2UgKz0gJ2EnOworICAgIHNlY29uZE1lc3NhZ2UgKz0gJ2EnOworfQorCitmdW5j
dGlvbiBkb1Rlc3QocXVlcnlJbmRleCkKK3sKKyAgICB2YXIgcXVlcnkgPSBxdWVyaWVzW3F1ZXJ5
SW5kZXhdOworICAgIGRlYnVnKCJUZXN0aW5nIHF1ZXJ5OiBcIiIgKyBxdWVyeSArICJcIiIpOwor
CisgICAgdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2RlZmxhdGUtZnJhbWU/IiArIHF1ZXJ5OworICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwor
ICAgIG1lc3NhZ2VJbmRleCA9IDA7CisKKyAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgid3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gtd2Vi
a2l0LWRlZmxhdGUtZnJhbWUnKSAhPSAtMSIpOworICAgICAgICBwYXJhbWV0ZXJzID0gcXVlcnku
c3BsaXQoJyYnKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0
aDsgKytpKQorICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ3cy5leHRlbnNpb25zLnNlYXJjaCgn
IiArIHBhcmFtZXRlcnNbaV0gKyAiJykgIT0gLTEiKTsKKyAgICAgICAgd3Muc2VuZChmaXJzdE1l
c3NhZ2UpOworICAgIH07CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIGlmIChtZXNzYWdlSW5kZXggPT09IDApIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC5kYXRhIiwgImZpcnN0TWVzc2FnZSIpOworICAgICAgICAgICAgbWVzc2FnZUlu
ZGV4ICs9IDEKKyAgICAgICAgICAgIHdzLnNlbmQoc2Vjb25kTWVzc2FnZSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICJzZWNvbmRNZXNzYWdl
Iik7CisgICAgICAgICAgICB3cy5jbG9zZSgpOworICAgICAgICB9CisgICAgfTsKKworICAgIHdz
Lm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbmNsb3Nl
KCkgd2FzIGNhbGxlZC4iKTsKKyAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgICAgICBz
aG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAgaWYgKHF1ZXJ5SW5k
ZXggPT09IHF1ZXJpZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBkb1Rlc3QocXVlcnlJbmRleCArIDEpOworICAgIH07
Cit9CisKK2RvVGVzdCgwKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NjA3YmNl
ZWMwOGJmN2M5Mzk5NzRiNTBmN2JjODdhOGJhYmY3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3No
LnB5CkBAIC0wLDAgKzEsODMgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCB1cmxwYXJz
ZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0
ZW5zaW9uUHJvY2Vzc29yCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBp
bXBvcnQgRXh0ZW5zaW9uUGFyYW1ldGVyCisKKworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5
ZScKK19FTkFCTEVfTUVTU0FHRSA9IHUnRW5hYmxlQ29tcHJlc3Npb24nCitfRElTQUJMRV9NRVNT
QUdFID0gdSdEaXNhYmxlQ29tcHJlc3Npb24nCisKKworZGVmIF9nZXRfZGVmbGF0ZV9mcmFtZV9l
eHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpOgorICAgIGZvciBleHRlbnNpb25fcHJvY2Vzc29y
IGluIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnM6CisgICAgICAgIGlmIGlzaW5zdGFu
Y2UoZXh0ZW5zaW9uX3Byb2Nlc3NvciwgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKToK
KyAgICAgICAgICAgIHJldHVybiBleHRlbnNpb25fcHJvY2Vzc29yCisgICAgcmV0dXJuIE5vbmUK
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcHJv
Y2Vzc29yID0gX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVxdWVzdCkK
KyAgICBpZiBub3QgcHJvY2Vzc29yOgorICAgICAgICByZXR1cm4KKyAgICByID0gcmVxdWVzdC53
c19yZXNvdXJjZS5zcGxpdCgnPycsIDEpCisgICAgaWYgbGVuKHIpID09IDE6CisgICAgICAgIHJl
dHVybgorICAgIHBhcmFtZXRlcnMgPSB1cmxwYXJzZS5wYXJzZV9xcyhyWzFdLCBrZWVwX2JsYW5r
X3ZhbHVlcz1UcnVlKQorICAgIGlmICdtYXhfd2luZG93X2JpdHMnIGluIHBhcmFtZXRlcnM6Cisg
ICAgICAgIHdpbmRvd19iaXRzID0gaW50KHBhcmFtZXRlcnNbJ21heF93aW5kb3dfYml0cyddWzBd
KQorICAgICAgICBwcm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX3dpbmRvd19iaXRzKHdpbmRvd19iaXRz
KQorICAgIGlmICdub19jb250ZXh0X3Rha2VvdmVyJyBpbiBwYXJhbWV0ZXJzOgorICAgICAgICBw
cm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1ZSkKKworCitkZWYg
d2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHByb2Nlc3NvciA9IF9nZXRf
ZGVmbGF0ZV9mcmFtZV9leHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpCisgICAgd2hpbGUgVHJ1
ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisg
ICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBp
c2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgorICAgICAgICAgICAgaWYgcHJvY2Vzc29yOgorICAg
ICAgICAgICAgICAgIGlmIGxpbmUgPT0gX0VOQUJMRV9NRVNTQUdFOgorICAgICAgICAgICAgICAg
ICAgICBwcm9jZXNzb3IuZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKKyAgICAgICAgICAg
ICAgICBlbGlmIGxpbmUgPT0gX0RJU0FCTEVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc29yLmRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oKQorICAgICAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAg
ICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2Fn
ZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZh
aWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhl
YWRlci1leHBlY3RlZC50eHQKaW5kZXggYWRmMDZiNjUxZDZiNDcxNWI0YTFiOTdjODdjOTYwMjMz
YWFlMWZhMC4uY2M5OWFmMGRkMTY1ZDUzZjQwNjcwYzVjNTg2YWVjOTllZmI2ODNjYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hh
a2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRl
bnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NB
R0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcgor
Q09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGV4dGVuc2lvbjogeC1mb28KIFRl
c3Qgd2hldGhlciBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMg
U2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9zZW5kLWZpbGUtYmxvYl93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQppbmRleCBkYWE0NDA0NzFhZjgz
YWIyNjI4Njc1MWMzZTE4ODgyZjQ4NGRiNzhjLi43OTIwMzRjZmUzYjcwZTA0ODNiNWRlOTVlNGUx
NzAxZDk3NzgyY2EzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQpAQCAtMiw2
ICsyLDE0IEBAIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KIGZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCiAKIAorZGVmIF9yZXRyaWV2ZV9mcmFtZShzdHJlYW0p
OgorICAgICMgRklYTUU6IFVzZSBiZXR0ZXIgQVBJLgorICAgIGZyYW1lID0gc3RyZWFtLl9yZWNl
aXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCisgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzdHJl
YW0uX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKKyAgICAgICAgZnJhbWVfZmlsdGVy
LmZpbHRlcihmcmFtZSkKKyAgICByZXR1cm4gZnJhbWUKKworCiBkZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CiAgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCiAKQEAg
LTEwLDEyICsxOCwxMSBAQCBkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgog
ICAgIGV4cGVjdGVkX21lc3NhZ2VzID0gWydIZWxsbywgd29ybGQhJ10KIAogICAgIGZvciB0ZXN0
X251bWJlciwgZXhwZWN0ZWRfbWVzc2FnZSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfbWVzc2FnZXMp
OgotICAgICAgICAjIEZJWE1FOiBVc2UgYmV0dGVyIEFQSS4KLSAgICAgICAgb3Bjb2RlLCBwYXls
b2FkLCBmaW5hbCwgdW51c2VkX3Jlc2VydmVkMSwgdW51c2VkX3Jlc2VydmVkMiwgdW51c2VkX3Jl
c2VydmVkMyA9IHJlcXVlc3Qud3Nfc3RyZWFtLl9yZWNlaXZlX2ZyYW1lKCkKLSAgICAgICAgaWYg
b3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZIGFuZCBwYXlsb2FkID09IGV4cGVjdGVkX21l
c3NhZ2UgYW5kIGZpbmFsOgorICAgICAgICBmcmFtZSA9IF9yZXRyaWV2ZV9mcmFtZShyZXF1ZXN0
LndzX3N0cmVhbSkKKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklO
QVJZIGFuZCBmcmFtZS5wYXlsb2FkID09IGV4cGVjdGVkX21lc3NhZ2UgYW5kIGZyYW1lLmZpbjoK
ICAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdQQVNTOiBNZXNzYWdl
ICMlZC4nICUgdGVzdF9udW1iZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAjJWQ6IFJlY2VpdmVkIHVuZXhw
ZWN0ZWQgZnJhbWU6IG9wY29kZSA9ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0gJXInICUgKHRl
c3RfbnVtYmVyLCBvcGNvZGUsIHBheWxvYWQsIGZpbmFsKSkKKyAgICAgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdGQUlMOiBNZXNzYWdlICMlZDogUmVjZWl2ZWQgdW5leHBl
Y3RlZCBmcmFtZTogb3Bjb2RlID0gJXIsIHBheWxvYWQgPSAlciwgZmluYWwgPSAlcicgJSAodGVz
dF9udW1iZXIsIGZyYW1lLm9wY29kZSwgZnJhbWUucGF5bG9hZCwgZnJhbWUuZmluKSkKIAogCiBk
ZWYgYWxsX2Rpc3RpbmN0X2J5dGVzKCk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128136</attachid>
            <date>2012-02-21 22:58:36 -0800</date>
            <delta_ts>2012-02-22 00:19:24 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77522-20120222155835.patch</filename>
            <type>text/plain</type>
            <size>55566</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Yjk4MDYxZmVmZDUyYmZiNzU3MDcwMGQ3ZTFjMTQ4ZDdkMDA1OTI4Li5mMjcyMjIwZTg0M2M4ZDM0
YmRmYjAxOWJlNGU4YmU0YzRlNTYxNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wMi0y
MSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVuYnJlYWsgZG91
YmxlLXR5cGVkIGFycmF5cyBvbiBBUk12NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNjMDk0MzA4N2M3Mjg4MmI4
OTMwMWRhNjc3ODU0N2IzOGI0ZGEwYmQuLmVjMjFkZjI0Nzc2MmYwNWQ5ZWM5NzlkN2Q2OGEwOGYz
ZjMyMDA1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3MCBAQAogMjAxMi0wMi0yMSAgS2VuaWNo
aSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgQWRkaW5nIFdlYlNv
Y2tldCBwZXItZnJhbWUgREVGTEFURSBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTIyCisKKyAgICAgICAgQWRkIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIgY2xhc3Mgd2hpY2ggaGFuZGxlcyBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4K
KyAgICAgICAgVGhpcyBjbGFzcyBlbmNhcHN1bGF0ZXMgV2ViU29ja2V0RGVmbGF0ZXIgYW5kIFdl
YlNvY2tldEluZmxhdGVyIGNsYXNzZXMsCisgICAgICAgIHdoaWNoIGRlcGVuZCBvbiB6bGliLCBz
byB0aGF0IFdlYlNvY2tldENoYW5uZWwgaXMgbm90IG5lY2Vzc2FyeSB0byBhd2FyZQorICAgICAg
ICB6bGliIGRlcGVuZGVuY3kuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisK
KyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3Nl
ZC1jb250cm9sLWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxp
ZC1wYXJhbWV0ZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDogQWRkZWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lci4oY3BwfGgpCisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICogVGFyZ2V0LnByaTogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOiBTZXQgbV9leHRlbnNp
b25zLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KTogQWRkIGRlZmxhdGUtZnJhbWUg
ZXh0ZW5zaW9uIHByb2Nlc3NvciB0byBXZWJTb2NrZXRIYW5zaGFrZSBpZiBkZWZsYXRlIGNhbiB1
c2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpmYWlsKTogQ2FsbCBtX2Rl
ZmxhdGVGcmFtZXIuZGlkRmFpbCgpLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6cHJvY2Vzc0ZyYW1lKTogRGVjb21wcmVzcyBmcmFtZXMgaWYgbmVlZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKTogQ29tcHJlc3MgZnJhbWVzIGlm
IHBvc3NpYmxlLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjp+
V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6aGFu
ZHNoYWtlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxh
dGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1
bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0
ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVz
dWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkluZmxh
dGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXREZWZsYXRlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0SW5mbGF0ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGlkRmFpbCk6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OnN1Y2NlZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsdXJlUmVhc29uKToKKyAgICAgICAgKElu
ZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5mbGF0ZVJlc3VsdEhvbGRl
cjo6c3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6OmZh
aWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVkKToKKworMjAxMi0wMi0y
MSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmVu
YW1lICJyZXNlcnZlZDEiIGZsYWcgb2YgV2ViU29ja2V0RnJhbWUgdG8gY29tcHJlc3MKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTg3CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCBmYWEwYzA4ZWYwZGNhM2VkNWUyNjA3NWNh
ZDRmZTg0NjA4NDA1MTdhLi5iNjg0NDlmMmEzMjFlZTdmYTM3ZTNhYzU2M2EzNWY2NTc5N2ExOGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTg3LDQgKzExODcsOCBA
QAogI2RlZmluZSBXVEZfVVNFX1dURlVSTCAwCiAjZW5kaWYKIAorI2lmICFQTEFURk9STShRVCkg
JiYgIVBMQVRGT1JNKEVGTCkKKyNkZWZpbmUgV1RGX1VTRV9aTElCIDEKKyNlbmRpZgorCiAjZW5k
aWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjA0NzBjOGVk
NDc2ZTI3MmZmOGYwNmJhNWE3NjZjZDlmYThlYjg2Yy4uNDdkMjRmOWNkOTEzMjU2N2UxNmVkYWM0
YzkwNDczNmYzMzBhZDUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwNTQsNiArMjA1NCw3
IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCiAgICAgICAgIHdlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDcyODUy
YjFiZWY0ZTQ4NTFhMTY4YWExMDM4NWNlNGI3NTlmZjFmN2QuLjJiYjE1NzljNGIxNmQyZGViNjE0
NjkzNzQ1OTlkYmNmMGIxMTkyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
NDMzNyw2ICs0MzM3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCBjODNkMDgyZTUyN2VhZDdjNjMyNWFjYzU3Mzc4MTEyNDA3OGIzNjBkLi45YzEx
OGE1NTc4ZDE1MDFiZjQ3ZDBhNGVmODBmMDJhM2Q4ZTMyNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM2
NjUsNiArMzY2NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7
CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggXAog
ICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBcCiAgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmggXApAQCAtMzY3Niw2ICszNjc3LDcgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggZjM5OTdmODY4ODU2ZDQ3ODFjMDZjMjQwMjRmNWMxOTA2N2U0M2E4MC4uNmIw
NDlmZjgyYjExNmFhM2M1N2M1ZTQ4ZjAyYjZiYWJiYjI3ZTViMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNDgxNCw2ICs0ODE0LDggQEAKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCcs
CiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgnLAorICAg
ICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAnLAorICAgICAg
ICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oJywKICAgICAgICAgICAg
ICd3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNzZlZmNlYTA0YmM4NzY3NmJmZTZlYjAzYzc2YWY4
YTM3NjRmY2I1Yy4uZjFiZmFmN2YwZWE4ZGZiOTM3N2Q3MGE1YTljY2NkYmEyZWRjNjk4MiAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTczNDU0
LDYgKzczNDU0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVyLmNwcCIKIAkJCQk+
CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZjQ4YzJhNmY2NWYyZGMwYjQyMmFhNzI5OWI1OTk4MmQ4YzUzMmJk
NS4uN2IxZjJiNGYzZTZjZmIzYTZhNmU0YTNhMmNmNDMyYzk0MDJjYTEyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM2Nyw2
ICsxMzY3LDggQEAKIAkJNEExRTcxOTYxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0Vs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
MUU3MTk0MTRFMTAxRjkwMDYyNkY5RCAvKiBKU0hUTUxTaGFkb3dFbGVtZW50LmggKi87IH07CiAJ
CTRBMUU3MUE1MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEExRTcxQTMxNEUxMDZBQzAwNjI2
RjlEIC8qIEpTU2hhZG93Um9vdC5jcHAgKi87IH07CiAJCTRBMUU3MUE2MTRFMTA2QUMwMDYyNkY5
RCAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLzsg
fTsKKwkJNEEyOTIyMkIxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEyOTIy
MjkxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovOyB9Owor
CQk0QTI5MjIyQzE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEyOTIyMkExNEY0
NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCAqLzsgfTsKIAkJNEE0QTIz
NDYxNEYxRTE0NDAwNDZGQkYxIC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTRBMjM0NTE0RjFFMTQ0MDA0NkZCRjEgLyog
V2ViU29ja2V0RnJhbWUuaCAqLzsgfTsKIAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIEZv
bnRGZWF0dXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3Bw
ICovOyB9OwogCQk0QTZFOUZDNDEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzIx
M0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODIyOSw2ICs4MjMxLDggQEAKIAkJNEEx
RTcxOTQxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QTFFNzFBMzE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dS
b290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93Um9v
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMUU3MUE0MTRFMTA2QUMwMDYy
NkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTaGFkb3dSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBMjkyMjI5MTRG
NDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTI5MjIyQTE0RjQ2OEJBMDAyMUY3N0UgLyogV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRB
NEEyMzQ1MTRGMUUxNDQwMDQ2RkJGMSAvKiBXZWJTb2NrZXRGcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVyZVZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzIxM0MxN0QxRDAwNDZB
N0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRm9udEZlYXR1cmVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4
NDksNiArMTQ4NTMsOCBAQAogCQkJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsLmNwcCAqLywKIAkJCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5oICovLAogCQkJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmggKi8sCisJCQkJNEEyOTIyMjkxNEY0NjhCQTAwMjFGNzdFIC8qIFdl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovLAorCQkJCTRBMjkyMjJBMTRGNDY4QkEwMDIxRjc3
RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggKi8sCiAJCQkJNEFFMDJBQkIxNEU4QTlEMjAw
QkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLywKIAkJCQk0QUUwMkFCQzE0RThBOUQy
MDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLywKIAkJCQk0QTk1N0YwMzE0RTI0MTEw
MDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8sCkBAIC0yNDIz
Myw2ICsyNDIzOSw3IEBACiAJCQkJNTE4QTM0QzIxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1
NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QTI5MjIy
QzE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEFFMDJBQkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QTk1N0YwNzE0RTI0MTMwMDA0OURCRkIgLyogV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFERTI1RkExNEUzQkI0
QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNzE5MSw2ICsyNzE5OCw3IEBACiAJCQkJMUNBRjM0ODIwQTZDNDA1MjAwQUJFMDZFIC8q
IFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEEzNEMxMTAyNkM4MzEw
MDFCNjg5NiAvKiBXZWJTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBNEUxMDMx
NzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NEEyOTIyMkIxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNEE5NTdGMDYxNEUyNDEyQTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEFFMDJBQkQxNEU4QTlE
MjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
QUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMzZkYmI2
ZjMyYzI0OTgzYzIwZjg1OGUwZGFjNzc2MWZiNjliMTJhNC4uN2RkODU0ZWQxNTJhMzIxZjA0OTIx
MTJjZTU1YTdmMTA5ZTg5MzNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKICAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBtX3N0YXRlID0gT1BFTjsK
ICAgICBtX3N1YnByb3RvY29sID0gbV9jaGFubmVsLT5zdWJwcm90b2NvbCgpOworICAgIG1fZXh0
ZW5zaW9ucyA9IG1fY2hhbm5lbC0+ZXh0ZW5zaW9ucygpOwogICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXgg
ZWMwNzA2ZGI0Zjg0OGY1NzU1MWM5ODdmMjdiYzQ0ZTJkYzgwNDI2OC4uYzQwYjA5ODU3ZTZhZDcw
NDhhZTFkNTBjYzkyYzY1MTcyNGM3NGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMjcsNiArMTI3LDggQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBtX2hhbmRzaGFrZSA9IGFkb3B0UHRy
KG5ldyBXZWJTb2NrZXRIYW5kc2hha2UodXJsLCBwcm90b2NvbCwgbV9kb2N1bWVudCwgbV91c2VI
aXhpZTc2UHJvdG9jb2wpKTsKICAgICBtX2hhbmRzaGFrZS0+cmVzZXQoKTsKKyAgICBpZiAoIW1f
dXNlSGl4aWU3NlByb3RvY29sICYmIG1fZGVmbGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkpCisgICAg
ICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3IobV9kZWZsYXRlRnJhbWVyLmNy
ZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKICAgICBpZiAobV9pZGVudGlmaWVyKQogICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldChtX2RvY3VtZW50
LCBtX2lkZW50aWZpZXIsIHVybCwgbV9kb2N1bWVudC0+dXJsKCkpOwogICAgIHJlZigpOwpAQCAt
MjI4LDYgKzIzMCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcm
IHJlYXNvbikKICAgICAgICAgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAg
ICAgICAgaWYgKG1fYnVmZmVyKQogICAgICAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUp
OyAvLyBTYXZlIG1lbW9yeS4KKyAgICAgICAgbV9kZWZsYXRlRnJhbWVyLmRpZEZhaWwoKTsKICAg
ICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKICAgICAgICAgbV9jb250aW51b3Vz
RnJhbWVEYXRhLmNsZWFyKCk7CiAgICAgfQpAQCAtNjE4LDYgKzYyMSwxMiBAQCBib29sIFdlYlNv
Y2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJUKG1fYnVmZmVyIDwgZnJhbWVF
bmQpOwogICAgIEFTU0VSVChmcmFtZUVuZCA8PSBtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZSk7CiAK
KyAgICBJbmZsYXRlUmVzdWx0SG9sZGVyIGluZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIu
aW5mbGF0ZShmcmFtZSk7CisgICAgaWYgKCFpbmZsYXRlUmVzdWx0LnN1Y2NlZWRlZCgpKSB7Cisg
ICAgICAgIGZhaWwoaW5mbGF0ZVJlc3VsdC5mYWlsdXJlUmVhc29uKCkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVmFsaWRhdGUgdGhlIGZyYW1lIGRhdGEuCiAgICAg
aWYgKFdlYlNvY2tldEZyYW1lOjppc1Jlc2VydmVkT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKICAg
ICAgICAgZmFpbCgiVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogIiArIFN0cmluZzo6bnVtYmVy
KGZyYW1lLm9wQ29kZSkpOwpAQCAtMTAxMSw2ICsxMDIwLDEzIEBAIGJvb2wgV2ViU29ja2V0Q2hh
bm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFy
KiBkYXRhCiAKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mg
d2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogICAgIFdlYlNv
Y2tldEZyYW1lIGZyYW1lKG9wQ29kZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGRhdGFMZW5n
dGgpOworCisgICAgRGVmbGF0ZVJlc3VsdEhvbGRlciBkZWZsYXRlUmVzdWx0ID0gbV9kZWZsYXRl
RnJhbWVyLmRlZmxhdGUoZnJhbWUpOworICAgIGlmICghZGVmbGF0ZVJlc3VsdC5zdWNjZWVkZWQo
KSkgeworICAgICAgICBmYWlsKGRlZmxhdGVSZXN1bHQuZmFpbHVyZVJlYXNvbigpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CiAg
ICAgbWFrZUZyYW1lRGF0YShmcmFtZSwgZnJhbWVEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA0YmIyOGM5ZjJiMDVhZjM0OTk3YmUw
N2E2MmYxMmJjNGU5ODM1ODE4Li42ZDFmZWJiY2EwNmUxZWQ3ZDVjZWUxNTBkODc2MGFmNzgwNDYy
MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgiCiAjaW5jbHVkZSAiV2ViU29j
a2V0RnJhbWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KQEAgLTIzMSw2ICsyMzIsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxGaWxl
UmVhZGVyTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgQmxvYkxvYWRlclN0YXR1cyBtX2Jsb2JM
b2FkZXJTdGF0dXM7CiAjZW5kaWYKKworICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgbV9kZWZs
YXRlRnJhbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGM5ZDM1MzZiYWIzZWI5MDhjY2FjNzNmNDhiY2E4MzdmNzVjNWVhNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIDogcHVibGljIFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3NvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPiBjcmVhdGUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciog
ZnJhbWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWUoZnJhbWVyKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlNvY2tl
dEV4dGVuc2lvbkRlZmxhdGVGcmFtZSgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNo
YWtlU3RyaW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHByb2Nlc3NSZXNwb25zZShj
b25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3Ry
aW5nIGZhaWx1cmVSZWFzb24oKSBPVkVSUklERSB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0K
KworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29ja2V0
RGVmbGF0ZUZyYW1lciopOworCisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7
CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFz
b247Cit9OworCisvLyBGWElNRTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNp
ZmljYXRpb24gbWF0dXJlZC4KK1dlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikK
KyAgICA6IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFt
ZSIpCisgICAgLCBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZh
bHNlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCit7CisgICAgcmV0dXJuIGV4dGVu
c2lvblRva2VuKCk7IC8vIE5vIHBhcmFtZXRlcgorfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQoreworI2lmIFVTRShaTElCKQorICAgIGlmIChtX3Jlc3Bv
bnNlUHJvY2Vzc2VkKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBs
aWNhdGUgZGVmbGF0ZS1mcmFtZSByZXNwb25zZSI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgbV9yZXNwb25zZVByb2Nlc3NlZCA9IHRydWU7CisKKyAgICBpbnQgZXhwZWN0ZWRO
dW1QYXJhbWV0ZXJzID0gMDsKKyAgICBpbnQgd2luZG93Qml0cyA9IDE1OworICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0
ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIpOworICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVy
UGFyYW1ldGVycy5lbmQoKSkgeworICAgICAgICB3aW5kb3dCaXRzID0gcGFyYW1ldGVyLT5zZWNv
bmQudG9JbnQoKTsKKyAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAx
NSkgeworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4
X3dpbmRvd19iaXRzIHBhcmFtZXRlciI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzKys7CisgICAgfQorCisgICAgV2Vi
U29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSA9IFdlYlNvY2tldERlZmxh
dGVyOjpUYWtlT3ZlckNvbnRleHQ7CisgICAgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5m
aW5kKCJub19jb250ZXh0X3Rha2VvdmVyIik7CisgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQ
YXJhbWV0ZXJzLmVuZCgpKSB7CisgICAgICAgIGlmICghcGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5v
X2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92
ZXJDb250ZXh0OworICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKKyAgICB9CisKKyAg
ICBpZiAoZXhwZWN0ZWROdW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7
CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUt
ZnJhbWUgcGFyYW1ldGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1f
ZnJhbWVyLT5lbmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOworICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKworRGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJT
b2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAg
LCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0RlZmxh
dGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+
cmVzZXREZWZsYXRlQ29udGV4dCgpOworfQorCit2b2lkIERlZmxhdGVSZXN1bHRIb2xkZXI6OmZh
aWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFs
c2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30KKworSW5mbGF0ZVJl
c3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBm
cmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQor
eworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZs
YXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29udGV4dCgp
OworfQorCit2b2lkIEluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWls
dXJlUmVhc29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVh
c29uID0gZmFpbHVyZVJlYXNvbjsKK30KKworV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29j
a2V0RGVmbGF0ZUZyYW1lcigpCisgICAgOiBtX2VuYWJsZWQoZmFsc2UpCit7Cit9CisKK1Bhc3NP
d25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKQoreworICAgIHJldHVybiBXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWU6OmNyZWF0ZSh0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKK3sKKyNpZiBVU0UoWkxJQikKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBVU0Uo
WkxJQikKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2lu
ZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSkKK3sK
KyAgICBtX2RlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSh3aW5kb3dCaXRzLCBt
b2RlKTsKKyAgICBtX2luZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAg
IGlmICghbV9kZWZsYXRlciB8fCAhbV9pbmZsYXRlcikgeworICAgICAgICBtX2RlZmxhdGVyLmNs
ZWFyKCk7CisgICAgICAgIG1faW5mbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoIW1fZGVmbGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5p
dGlhbGl6ZSgpKSB7CisgICAgICAgIG1fZGVmbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgbV9pbmZs
YXRlci5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZW5hYmxlZCA9IHRy
dWU7Cit9CisjZW5kaWYKKworRGVmbGF0ZVJlc3VsdEhvbGRlciBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJQikKKyAg
ICBEZWZsYXRlUmVzdWx0SG9sZGVyIHJlc3VsdCh0aGlzKTsKKyAgICBpZiAoIWVuYWJsZWQoKSB8
fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpIHx8ICFm
cmFtZS5wYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghbV9k
ZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwg
IW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CisgICAgICAgIHJlc3VsdC5mYWlsKCJGYWlsZWQgdG8g
Y29tcHJlc3MgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZnJh
bWUuY29tcHJlc3MgPSB0cnVlOworICAgIGZyYW1lLnBheWxvYWQgPSBtX2RlZmxhdGVyLT5kYXRh
KCk7CisgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IG1fZGVmbGF0ZXItPnNpemUoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4gRGVmbGF0ZVJlc3VsdEhvbGRlcih0aGlz
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0
ZUNvbnRleHQoKQoreworI2lmIFVTRShaTElCKQorICAgIGlmIChtX2RlZmxhdGVyKQorICAgICAg
ICBtX2RlZmxhdGVyLT5yZXNldCgpOworI2VuZGlmCit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXIg
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCit7
CisjaWYgVVNFKFpMSUIpCisgICAgSW5mbGF0ZVJlc3VsdEhvbGRlciByZXN1bHQodGhpcyk7Cisg
ICAgaWYgKCFmcmFtZS5jb21wcmVzcykKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAo
IWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5v
cENvZGUpKSB7CisgICAgICAgIHJlc3VsdC5mYWlsKCJSZWNlaXZlZCB1bmV4cGVjdGVkIGNvbXBy
ZXNzZWQgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKCFt
X2luZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8
fCAhbV9pbmZsYXRlci0+ZmluaXNoKCkpIHsKKyAgICAgICAgcmVzdWx0LmZhaWwoIkZhaWxlZCB0
byBkZWNvbXByZXNzIGZyYW1lIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IGZyYW1lLmNvbXByZXNzID0gZmFsc2U7CisgICAgZnJhbWUucGF5bG9hZCA9IG1faW5mbGF0ZXIt
PmRhdGEoKTsKKyAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9pbmZsYXRlci0+c2l6ZSgpOwor
ICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBJbmZsYXRlUmVzdWx0SG9sZGVy
KHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXRJ
bmZsYXRlQ29udGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1faW5mbGF0ZXIpCisg
ICAgICAgIG1faW5mbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpkaWRGYWlsKCkKK3sKKyAgICByZXNldERlZmxhdGVDb250ZXh0KCk7Cisg
ICAgcmVzZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlOGJhODM5MDNm
NWEyYjZkZTA3ODA3MmMzZmQ1NzI3ZjcyZTdiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApAQCAtMCwwICsxLDEx
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaAorI2RlZmluZSBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2lmIFVTRShaTElC
KQorI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERlZmxhdGVGcmFtZXI7CisKK2Ns
YXNzIERlZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IERlZmxhdGVS
ZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworICAgIH5EZWZsYXRlUmVzdWx0
SG9sZGVyKCk7CisKKyAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vl
ZGVkOyB9CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX2ZhaWx1
cmVSZWFzb247IH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24p
OworCitwcml2YXRlOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOworICAg
IGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK2Ns
YXNzIEluZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEluZmxhdGVS
ZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworICAgIH5JbmZsYXRlUmVzdWx0
SG9sZGVyKCk7CisKKyAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vl
ZGVkOyB9CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX2ZhaWx1
cmVSZWFzb247IH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24p
OworCitwcml2YXRlOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOworICAg
IGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK2Ns
YXNzIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgeworcHVibGljOgorICAgIFdlYlNvY2tldERlZmxh
dGVGcmFtZXIoKTsKKworICAgIFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
PiBjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKTsKKworICAgIGJvb2wgY2FuRGVmbGF0ZSgpIGNv
bnN0OworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorCisg
ICAgRGVmbGF0ZVJlc3VsdEhvbGRlciBkZWZsYXRlKFdlYlNvY2tldEZyYW1lJik7CisgICAgdm9p
ZCByZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgSW5mbGF0ZVJlc3VsdEhvbGRlciBpbmZsYXRl
KFdlYlNvY2tldEZyYW1lJik7CisgICAgdm9pZCByZXNldEluZmxhdGVDb250ZXh0KCk7CisKKyAg
ICB2b2lkIGRpZEZhaWwoKTsKKworI2lmIFVTRShaTElCKQorICAgIHZvaWQgZW5hYmxlRGVmbGF0
ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUp
OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2VuYWJsZWQ7CisjaWYgVVNFKFpMSUIp
CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBtX2RlZmxhdGVyOworICAgIE93blB0cjxX
ZWJTb2NrZXRJbmZsYXRlcj4gbV9pbmZsYXRlcjsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0RGVmbGF0ZUZyYW1l
cl9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNDlkMzA1MTk3NTFhMDA2ZmEwNjE2NzdhZmJkZDY4MTI0ZTIxZWIyYy4uYjI0
MDMwYjBhMThjNWU1OTllMmFlN2E2MzU2N2U3NzJjY2FhODRkNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4
IEBACiAyMDEyLTAyLTIxICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4K
IAorICAgICAgICBBZGRpbmcgV2ViU29ja2V0IHBlci1mcmFtZSBERUZMQVRFIGV4dGVuc2lvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MjIKKwor
ICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9u
LiBBbHNvIHVwZGF0ZWQgc29tZQorICAgICAgICB0ZXN0cyB0byBmb2xsb3cgdGhlIGNoYW5nZS4K
KworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
b21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5OiBB
ZGRlZC4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAg
KHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRl
LWZyYW1lLWNvbXAtYml0LW9ub2ZmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1w
YXJhbWV0ZXJfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weTogQWRkZWQu
CisgICAgICAgIChfZ2V0X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3Nvcik6CisgICAg
ICAgICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3No
LnB5OgorICAgICAgICAoX3JldHJpZXZlX2ZyYW1lKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YSk6CisKKzIwMTItMDItMjEgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFJlbmFtZSAicmVzZXJ2ZWQxIiBmbGFnIG9mIFdlYlNvY2tl
dEZyYW1lIHRvIGNvbXByZXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03OTE4NwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQt
Y29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQxZWM0NzNkNmJlMjFjMWMw
NjAxMDI5ZmZjNWZhMzljY2JmMzgyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVu
ZXhwZWN0ZWQgY29tcHJlc3NlZCBmcmFtZQorVGVzdCB3aGV0aGVyIGEgY29tcHJlc3NlZCBjb250
cm9sIGZyYW1lIGlzIHJlamVjdGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25v
cGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50
Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjIwODhjNzk5YmU0MTFjMTIyODEyYTUwOTQyZmE4Mzk4MzgwMDlh
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0MSBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCB3
aGV0aGVyIGEgY29tcHJlc3NlZCBjb250cm9sIGZyYW1lIGlzIHJlamVjdGVkIik7CisKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2Nr
ZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1j
b250cm9sLWZyYW1lIik7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24o
KQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOwor
ICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsg
bWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sK
KyAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2
ZW50OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGUxMmU5YzQ1MjJiMzE4NTg3ODQ2ZmIxNjAxNjE5NzlhOGIzYjJhYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDQ4IEBACisjIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQoraW1wb3J0IHpsaWIKKworCitkZWYgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJf
c29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgY29tcHJlc3MgPSB6bGliLmNvbXBy
ZXNzb2JqKAorICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwgLXpsaWIuTUFYX1dCSVRTKQorICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzLmNv
bXByZXNzKCdjbG9zZSBtZXNzYWdlJykKKyAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29tcHJl
c3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgY29tcHJlc3NlZF9tZXNzYWdlID0gY29t
cHJlc3NlZF9tZXNzYWdlWzotNF0KKyAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigK
KyAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ0xPU0UsIHBheWxvYWRfbGVuZ3RoPWxlbihj
b21wcmVzc2VkX21lc3NhZ2UpLAorICAgICAgICBmaW49MSwgcnN2MT0xLCByc3YyPTAsIHJzdjM9
MCwgbWFzaz1GYWxzZSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaGVhZGVyICsgY29t
cHJlc3NlZF9tZXNzYWdlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZS1jb21wLWJpdC1vbm9mZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYyZmVmM2RlNmYw
ZmU0MDgwZWEyZDM1MjNmMjk1YjQzODYyM2YzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJp
dC1vbm9mZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCBjb21wcmVzc2lvbiBl
bmFibGVkL2Rpc2FibGVkIGZyYW1lIHJlY2VpdmluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitTZW5kaW5nIG1lc3NhZ2U6ICJIZWxsbyIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnSGVs
bG8nCitTZW5kaW5nIG1lc3NhZ2U6ICJEaXNhYmxlQ29tcHJlc3Npb24iCitQQVNTIGV2ZW50LmRh
dGEgaXMgJ0Rpc2FibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVzc2FnZTogIldvcmxkIgorUEFT
UyBldmVudC5kYXRhIGlzICdXb3JsZCcKK1NlbmRpbmcgbWVzc2FnZTogIkVuYWJsZUNvbXByZXNz
aW9uIgorUEFTUyBldmVudC5kYXRhIGlzICdFbmFibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVz
c2FnZTogIkdvb2RieWUiCitQQVNTIGV2ZW50LmRhdGEgaXMgJ0dvb2RieWUnCitvbmNsb3NlKCkg
d2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNv
bXAtYml0LW9ub2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzJh
YzU3YmI4ZjhiYjkwNmZhYTQyYjQzMzRiZjJmYzI3OGE2NzY5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1l
LWNvbXAtYml0LW9ub2ZmLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3QgY29tcHJlc3Npb24gZW5hYmxlZC9kaXNhYmxlZCBmcmFtZSByZWNlaXZp
bmcuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciBj
bG9zZUV2ZW50OwordmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFyIG1lc3NhZ2VzID0g
WworICAgICJIZWxsbyIsCisgICAgIkRpc2FibGVDb21wcmVzc2lvbiIsIC8vIFRoaXMgZGlzYWJs
ZXMgY29tcHJlc3Npb24KKyAgICAiV29ybGQiLAorICAgICJFbmFibGVDb21wcmVzc2lvbiIsIC8v
IFRoaXMgZW5hYmxlcyBjb21wcmVzc2lvbgorICAgICJHb29kYnllIgorXTsKKword3MgPSBuZXcg
V2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxh
dGUtZnJhbWUiKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgbWVzc2Fn
ZUluZGV4ID0gMDsKKyAgICBkZWJ1ZygiU2VuZGluZyBtZXNzYWdlOiBcIiIgKyBtZXNzYWdlc1tt
ZXNzYWdlSW5kZXhdICsgIlwiIik7CisgICAgd3Muc2VuZChtZXNzYWdlc1ttZXNzYWdlSW5kZXhd
KTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHNob3VsZEJl
KCJldmVudC5kYXRhIiwgIiciICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICInIik7CisgICAg
aWYgKG1lc3NhZ2VJbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgd3MuY2xv
c2UoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbWVzc2FnZUluZGV4ICs9IDE7CisgICAgICAgIGRl
YnVnKCJTZW5kaW5nIG1lc3NhZ2U6IFwiIiArIG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0gKyAiXCIi
KTsKKyAgICAgICAgd3Muc2VuZChtZXNzYWdlc1ttZXNzYWdlSW5kZXhdKTsKKyAgICB9Cit9Owor
Cit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgZGVidWcoIm9uY2xvc2UoKSB3
YXMgY2FsbGVkLiIpOworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZVRydWUo
ImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxp
ZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44M2EyNGQyOGNjMjMzYjdhNWY2MzQ5M2I5NWQwZjgxYmE3ZjM0ZGIyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI4IEBACitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZGVmbGF0ZS1m
cmFtZSBwYXJhbWV0ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2lu
ZG93X2JpdHMgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIGludmFsaWQgbWF4
X3dpbmRvd19iaXRzIHBhcmFtZXRlcgorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCBpbnZhbGlk
IG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVk
IHVuZXhwZWN0ZWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0ZXIKK1Rlc3Qgd2hldGhlciBXZWJTb2Nr
ZXQgcmVqZWN0cyBpbnZhbGlkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVycy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitUZXN0aW5nIHBhcmFtZXRlcjogIngtZm9vIgorb25jbG9zZSgp
IHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3Rpbmcg
cGFyYW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTciCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BB
U1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJtYXhf
d2luZG93X2JpdHM9MTYiCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53
YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJub19jb250ZXh0X3Rha2VvdmVy
PWZvbyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IGZhbHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz04OyBub19jb250ZXh0
X3Rha2VvdmVyOyB4LWZvbyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50
Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52
YWxpZC1wYXJhbWV0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTVmYmQwNmQyMDJhM2VjYzgwMmFlMjRh
Nzc5ZWY2NGI5MzlhOWMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0
bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hl
dGhlciBXZWJTb2NrZXQgcmVqZWN0cyBpbnZhbGlkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVycy4i
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3Nl
RXZlbnQ7CisKK3ZhciB0ZXN0Q2FzZSA9IFsKKyAgICAieC1mb28iLAorICAgICJtYXhfd2luZG93
X2JpdHM9NyIsCisgICAgIm1heF93aW5kb3dfYml0cz0xNiIsCisgICAgIm5vX2NvbnRleHRfdGFr
ZW92ZXI9Zm9vIiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTg7IG5vX2NvbnRleHRfdGFrZW92ZXI7
IHgtZm9vIgorXTsKKworZnVuY3Rpb24gZG9UZXN0KGluZGV4KQoreworICAgIHZhciBwYXJhbWV0
ZXIgPSB0ZXN0Q2FzZVtpbmRleF07CisgICAgdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgw
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXI/IiAr
IGVuY29kZVVSSShwYXJhbWV0ZXIpOworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsK
KworICAgIGRlYnVnKCJUZXN0aW5nIHBhcmFtZXRlcjogXCIiICsgcGFyYW1ldGVyICsgIlwiIik7
CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZh
ciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkg
d2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIH07CisK
KyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWJ1Zygi
b25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAg
ICAgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAo
aW5kZXggPT09IHRlc3RDYXNlLmxlbmd0aCAtIDEpCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9UZXN0KGluZGV4ICsgMSk7CisgICAgfTsK
K30KKworZG9UZXN0KDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weSBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBh
cmFtZXRlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThjYzI1YzhkN2NjYzFhNjc2YWQxZWY2ODRkNjMw
OTkxMjhmZjAwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlcl93c2gucHkK
QEAgLTAsMCArMSw1NiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCB1cmxsaWIKK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5oeWJpIGltcG9ydCBjb21wdXRlX2FjY2VwdAorCisKK2RlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICByZXNvdXJjZXMgPSByZXF1ZXN0LndzX3Jl
c291cmNlLnNwbGl0KCc/JywgMSkKKyAgICBwYXJhbWV0ZXJzID0gTm9uZQorICAgIGlmIGxlbihy
ZXNvdXJjZXMpID09IDI6CisgICAgICAgIHBhcmFtZXRlcnMgPSB1cmxsaWIudW5xdW90ZShyZXNv
dXJjZXNbMV0pCisKKyAgICBtZXNzYWdlID0gJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9j
b2xzXHJcbicKKyAgICBtZXNzYWdlICs9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworICAgIG1l
c3NhZ2UgKz0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgIG1lc3NhZ2UgKz0gJ1NlYy1X
ZWJTb2NrZXQtQWNjZXB0OiAlc1xyXG4nICUgY29tcHV0ZV9hY2NlcHQocmVxdWVzdC5oZWFkZXJz
X2luWydTZWMtV2ViU29ja2V0LUtleSddKVswXQorICAgIG1lc3NhZ2UgKz0gJ1NlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9uczogeC13ZWJraXQtZGVmbGF0ZS1mcmFtZScKKyAgICBpZiBwYXJhbWV0ZXJz
OgorICAgICAgICBtZXNzYWdlICs9ICc7ICVzXHJcbicgJSBwYXJhbWV0ZXJzCisgICAgZWxzZToK
KyAgICAgICAgbWVzc2FnZSArPSAnXHJcbicKKyAgICBtZXNzYWdlICs9ICdcclxuJworICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlKQorICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9y
dGVkQnlVc2VyRXhjZXB0aW9uKCdBYm9ydCB0aGUgY29ubmVjdGlvbicpICMgUHJldmVudHMgcHl3
ZWJzb2NrZXQgZnJvbSBzZW5kaW5nIGl0cyBvd24gaGFuZHNoYWtlIG1lc3NhZ2UuCisKKworZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBwYXNzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcyNjNmZTM5NGE0NjI0YTE4NGMzZGIyZjQ3Mjg5NDQ0OWQwZDQwNGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Rl
ZmxhdGUtZnJhbWUtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitUZXN0
IFdlYlNvY2tldCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitUZXN0aW5nIHF1ZXJ5OiAibWF4X3dpbmRvd19iaXRzPTgiCitQQVNTIHdzLmV4
dGVuc2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMgdHJ1ZQor
UEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbWF4X3dpbmRvd19iaXRzPTgnKSAhPSAtMSBpcyB0
cnVlCitQQVNTIGV2ZW50LmRhdGEgaXMgZmlyc3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMg
c2Vjb25kTWVzc2FnZQorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgdHJ1ZQorVGVzdGluZyBxdWVyeTogIm5vX2NvbnRleHRfdGFrZW92ZXIiCitQQVNT
IHdzLmV4dGVuc2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMg
dHJ1ZQorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbm9fY29udGV4dF90YWtlb3ZlcicpICE9
IC0xIGlzIHRydWUKK1BBU1MgZXZlbnQuZGF0YSBpcyBmaXJzdE1lc3NhZ2UKK1BBU1MgZXZlbnQu
ZGF0YSBpcyBzZWNvbmRNZXNzYWdlCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VF
dmVudC53YXNDbGVhbiBpcyB0cnVlCitUZXN0aW5nIHF1ZXJ5OiAibWF4X3dpbmRvd19iaXRzPTgm
bm9fY29udGV4dF90YWtlb3ZlciIKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gtd2Via2l0
LWRlZmxhdGUtZnJhbWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNo
KCdtYXhfd2luZG93X2JpdHM9OCcpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5z
ZWFyY2goJ25vX2NvbnRleHRfdGFrZW92ZXInKSAhPSAtMSBpcyB0cnVlCitQQVNTIGV2ZW50LmRh
dGEgaXMgZmlyc3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2FnZQorb25j
bG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZS1wYXJhbWV0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yjc3ZTQ3
MTgxN2UyMzQ3Y2ZiODM2ZmQ5ZTNhYWEzZWZiODVjNmYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBh
cmFtZXRlci5odG1sCkBAIC0wLDAgKzEsOTAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0IFdlYlNvY2tldCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4iKTsKKword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgd3M7
Cit2YXIgbWVzc2FnZUluZGV4OworCit2YXIgcXVlcmllcyA9IFsKKyAgICAibWF4X3dpbmRvd19i
aXRzPTgiLAorICAgICJub19jb250ZXh0X3Rha2VvdmVyIiwKKyAgICAibWF4X3dpbmRvd19iaXRz
PTgmbm9fY29udGV4dF90YWtlb3ZlciIKK107CisKKy8vIFRoZSBmaXJzdCBtZXNzYWdlIGNvbnNp
c3RzIG9mIGEgbG90IG9mICdiJyBhbmQgYSBmZXcgJ2EnIGF0IHRoZSBoZWFkIGFuZAorLy8gdGhl
IHRhaWwsIHdoaWxlIHRoZSBzZWNvbmQgb25lIGNvbnNpc3RzIG9mICdhJy4KK3ZhciBmaXJzdE1l
c3NhZ2UgPSAnJzsKK3ZhciBzZWNvbmRNZXNzYWdlID0gJyc7Citmb3IgKHZhciBpID0gMDsgaSA8
IDE2OyArK2kpIHsKKyAgICBmaXJzdE1lc3NhZ2UgKz0gJ2EnOworICAgIHNlY29uZE1lc3NhZ2Ug
Kz0gJ2EnOworfQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDI0OyArK2kpIHsKKyAgICBmaXJzdE1l
c3NhZ2UgKz0gJ2InOworICAgIHNlY29uZE1lc3NhZ2UgKz0gJ2EnOworfQorZm9yICh2YXIgaSA9
IDA7IGkgPCAxNjsgKytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9ICdhJzsKKyAgICBzZWNvbmRN
ZXNzYWdlICs9ICdhJzsKK30KKworZnVuY3Rpb24gZG9UZXN0KHF1ZXJ5SW5kZXgpCit7CisgICAg
dmFyIHF1ZXJ5ID0gcXVlcmllc1txdWVyeUluZGV4XTsKKyAgICBkZWJ1ZygiVGVzdGluZyBxdWVy
eTogXCIiICsgcXVlcnkgKyAiXCIiKTsKKworICAgIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6
ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lPyIgKyBxdWVyeTsKKyAgICB3
cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBtZXNzYWdlSW5kZXggPSAwOworCisgICAgd3Mu
b25vcGVuID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBzaG91bGRCZVRydWUoIndz
LmV4dGVuc2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEiKTsKKyAg
ICAgICAgcGFyYW1ldGVycyA9IHF1ZXJ5LnNwbGl0KCcmJyk7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgid3MuZXh0ZW5zaW9ucy5zZWFyY2goJyIgKyBwYXJhbWV0ZXJzW2ldICsgIicpICE9IC0xIik7
CisgICAgICAgIHdzLnNlbmQoZmlyc3RNZXNzYWdlKTsKKyAgICB9OworCisgICAgd3Mub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAobWVzc2FnZUluZGV4ID09
PSAwKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICJmaXJzdE1lc3NhZ2Ui
KTsKKyAgICAgICAgICAgIG1lc3NhZ2VJbmRleCArPSAxCisgICAgICAgICAgICB3cy5zZW5kKHNl
Y29uZE1lc3NhZ2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2
ZW50LmRhdGEiLCAic2Vjb25kTWVzc2FnZSIpOworICAgICAgICAgICAgd3MuY2xvc2UoKTsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3Nl
RXZlbnQgPSBldmVudDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFu
Iik7CisgICAgICAgIGlmIChxdWVyeUluZGV4ID09PSBxdWVyaWVzLmxlbmd0aCAtIDEpCisgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9UZXN0
KHF1ZXJ5SW5kZXggKyAxKTsKKyAgICB9OworfQorCitkb1Rlc3QoMCk7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lX3dz
aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44M2I3ODM4NTUwNDI3NDgzYTkzMjZjZThmYTYwYzE3OTgxYWRiZDUx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDgyIEBACisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworaW1wb3J0IHVybHBhcnNlCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25z
IGltcG9ydCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29j
a2V0LmV4dGVuc2lvbnMgaW1wb3J0IEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZQorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuY29tbW9uIGltcG9ydCBFeHRlbnNpb25QYXJhbWV0ZXIKKworCitfR09P
REJZRV9NRVNTQUdFID0gdSdHb29kYnllJworX0VOQUJMRV9NRVNTQUdFID0gdSdFbmFibGVDb21w
cmVzc2lvbicKK19ESVNBQkxFX01FU1NBR0UgPSB1J0Rpc2FibGVDb21wcmVzc2lvbicKKworCitk
ZWYgX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVxdWVzdCk6CisgICAg
Zm9yIGV4dGVuc2lvbl9wcm9jZXNzb3IgaW4gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29y
czoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShleHRlbnNpb25fcHJvY2Vzc29yLCBEZWZsYXRlRnJh
bWVFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbl9wcm9j
ZXNzb3IKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKKyAgICBwcm9jZXNzb3IgPSBfZ2V0X2RlZmxhdGVfZnJhbWVfZXh0ZW5z
aW9uX3Byb2Nlc3NvcihyZXF1ZXN0KQorICAgIGlmIG5vdCBwcm9jZXNzb3I6CisgICAgICAgIHJl
dHVybgorICAgIHIgPSByZXF1ZXN0LndzX3Jlc291cmNlLnNwbGl0KCc/JywgMSkKKyAgICBpZiBs
ZW4ocikgPT0gMToKKyAgICAgICAgcmV0dXJuCisgICAgcGFyYW1ldGVycyA9IHVybHBhcnNlLnBh
cnNlX3FzKHJbMV0sIGtlZXBfYmxhbmtfdmFsdWVzPVRydWUpCisgICAgaWYgJ21heF93aW5kb3df
Yml0cycgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgd2luZG93X2JpdHMgPSBpbnQocGFyYW1ldGVy
c1snbWF4X3dpbmRvd19iaXRzJ11bMF0pCisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vf
d2luZG93X2JpdHMod2luZG93X2JpdHMpCisgICAgaWYgJ25vX2NvbnRleHRfdGFrZW92ZXInIGlu
IHBhcmFtZXRlcnM6CisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90
YWtlb3ZlcihUcnVlKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
CisgICAgcHJvY2Vzc29yID0gX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3Io
cmVxdWVzdCkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJl
YW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6CisgICAgICAg
ICAgICBpZiBwcm9jZXNzb3I6CisgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBfRU5BQkxFX01F
U1NBR0U6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5lbmFibGVfb3V0Z29pbmdfY29t
cHJlc3Npb24oKQorICAgICAgICAgICAgICAgIGVsaWYgbGluZSA9PSBfRElTQUJMRV9NRVNTQUdF
OgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuZGlzYWJsZV9vdXRnb2luZ19jb21wcmVz
c2lvbigpCisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwg
YmluYXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgor
ICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVxdWVz
dC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQorCisKKyMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFr
ZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCBhZGYwNmI2NTFk
NmI0NzE1YjRhMWI5N2M4N2M5NjAyMzNhYWUxZmEwLi5jYzk5YWYwZGQxNjVkNTNmNDA2NzBjNWM1
ODZhZWM5OWVmYjY4M2NhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0
ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBTZWMtV2ViU29j
a2V0LUV4dGVuc2lvbnMgaGVhZGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0
ZWQgZXh0ZW5zaW9uOiB4LWZvbwogVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBoYW5kc2hha2UgZmFp
bHMgaWYgdGhlIHNlcnZlciBzZW5kcyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyLgog
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weSBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3No
LnB5CmluZGV4IGRhYTQ0MDQ3MWFmODNhYjI2Mjg2NzUxYzNlMTg4ODJmNDg0ZGI3OGMuLjc5MjAz
NGNmZTNiNzBlMDQ4M2I1ZGU5NWU0ZTE3MDFkOTc3ODJjYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1m
aWxlLWJsb2Jfd3NoLnB5CkBAIC0yLDYgKzIsMTQgQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGNvbW1vbgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKIAogCitkZWYg
X3JldHJpZXZlX2ZyYW1lKHN0cmVhbSk6CisgICAgIyBGSVhNRTogVXNlIGJldHRlciBBUEkuCisg
ICAgZnJhbWUgPSBzdHJlYW0uX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKyAgICBm
b3IgZnJhbWVfZmlsdGVyIGluIHN0cmVhbS5fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJz
OgorICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQorICAgIHJldHVybiBmcmFtZQor
CisKIGRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKICAgICBwYXNz
ICMgQWx3YXlzIGFjY2VwdC4KIApAQCAtMTAsMTIgKzE4LDExIEBAIGRlZiB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEocmVxdWVzdCk6CiAgICAgZXhwZWN0ZWRfbWVzc2FnZXMgPSBbJ0hlbGxvLCB3
b3JsZCEnXQogCiAgICAgZm9yIHRlc3RfbnVtYmVyLCBleHBlY3RlZF9tZXNzYWdlIGluIGVudW1l
cmF0ZShleHBlY3RlZF9tZXNzYWdlcyk6Ci0gICAgICAgICMgRklYTUU6IFVzZSBiZXR0ZXIgQVBJ
LgotICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZpbmFsLCB1bnVzZWRfcmVzZXJ2ZWQxLCB1bnVz
ZWRfcmVzZXJ2ZWQyLCB1bnVzZWRfcmVzZXJ2ZWQzID0gcmVxdWVzdC53c19zdHJlYW0uX3JlY2Vp
dmVfZnJhbWUoKQotICAgICAgICBpZiBvcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9CSU5BUlkgYW5k
IHBheWxvYWQgPT0gZXhwZWN0ZWRfbWVzc2FnZSBhbmQgZmluYWw6CisgICAgICAgIGZyYW1lID0g
X3JldHJpZXZlX2ZyYW1lKHJlcXVlc3Qud3Nfc3RyZWFtKQorICAgICAgICBpZiBmcmFtZS5vcGNv
ZGUgPT0gY29tbW9uLk9QQ09ERV9CSU5BUlkgYW5kIGZyYW1lLnBheWxvYWQgPT0gZXhwZWN0ZWRf
bWVzc2FnZSBhbmQgZnJhbWUuZmluOgogICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJ1BBU1M6IE1lc3NhZ2UgIyVkLicgJSB0ZXN0X251bWJlcikKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdGQUlMOiBNZXNz
YWdlICMlZDogUmVjZWl2ZWQgdW5leHBlY3RlZCBmcmFtZTogb3Bjb2RlID0gJXIsIHBheWxvYWQg
PSAlciwgZmluYWwgPSAlcicgJSAodGVzdF9udW1iZXIsIG9wY29kZSwgcGF5bG9hZCwgZmluYWwp
KQorICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IE1lc3Nh
Z2UgIyVkOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBvcGNvZGUgPSAlciwgcGF5bG9hZCA9
ICVyLCBmaW5hbCA9ICVyJyAlICh0ZXN0X251bWJlciwgZnJhbWUub3Bjb2RlLCBmcmFtZS5wYXls
b2FkLCBmcmFtZS5maW4pKQogCiAKIGRlZiBhbGxfZGlzdGluY3RfYnl0ZXMoKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128145</attachid>
            <date>2012-02-22 00:19:33 -0800</date>
            <delta_ts>2012-02-23 02:18:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77522-20120222171930.patch</filename>
            <type>text/plain</type>
            <size>55588</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MTBlMDczYTRjMDQ0YmRmOGM4YjlhMzE5ZDA3OTExNWViZjk0OGRlLi5jNzlkMDIyODAwZGZkNzYy
MjExOTZhNWYyOTQ5MzA2NTNhNjg5MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wMi0y
MSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBm
b3Igc3lzdGVtcyB3aXRoIGNhc2Ugc2Vuc2l0aXZlIGRpc2tzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM1YmVl
YWRkMjA3NDQwYzY5N2QwYWY5MjAxYmU2NzRmMGU2NzllNjUuLjY2NWJiZmM4ZmM1NDM5NGVmNzNh
NjI4ZDk1MWIyMTNkMTEzMjY3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTI3Myw2ICsyNzMsNzEgQEAKIAog
MjAxMi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKKyAg
ICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRlbnNpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTIyCisKKyAgICAg
ICAgQWRkIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgY2xhc3Mgd2hpY2ggaGFuZGxlcyBkZWZsYXRl
LWZyYW1lIGV4dGVuc2lvbi4KKyAgICAgICAgVGhpcyBjbGFzcyBlbmNhcHN1bGF0ZXMgV2ViU29j
a2V0RGVmbGF0ZXIgYW5kIFdlYlNvY2tldEluZmxhdGVyIGNsYXNzZXMsCisgICAgICAgIHdoaWNo
IGRlcGVuZCBvbiB6bGliLCBzbyB0aGF0IFdlYlNvY2tldENoYW5uZWwgaXMgbm90IG5lY2Vzc2Fy
eSB0byBhd2FyZQorICAgICAgICB6bGliIGRlcGVuZGVuY3kuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9m
Zi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Rl
ZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lci4o
Y3BwfGgpCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICog
VGFyZ2V0LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5l
Y3QpOiBTZXQgbV9leHRlbnNpb25zLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KTog
QWRkIGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uIHByb2Nlc3NvciB0byBXZWJTb2NrZXRIYW5zaGFr
ZSBpZiBkZWZsYXRlIGNhbiB1c2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjpmYWlsKTogQ2FsbCBtX2RlZmxhdGVGcmFtZXIuZGlkRmFpbCgpLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKTogRGVjb21wcmVzcyBmcmFtZXMgaWYg
bmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKTog
Q29tcHJlc3MgZnJhbWVzIGlmIHBvc3NpYmxlLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2NrZXRFeHRl
bnNpb25EZWZsYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGVmbGF0ZUZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5z
aW9uRGVmbGF0ZUZyYW1lOjp+V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZTo6aGFuZHNoYWtlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNp
b25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
Y2FuRGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpl
bmFibGVEZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVz
ZXREZWZsYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjppbmZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6
OnJlc2V0SW5mbGF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6ZGlkRmFpbCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWZsYXRlUmVz
dWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OnN1Y2Nl
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsdXJlUmVh
c29uKToKKyAgICAgICAgKEluZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5mbGF0ZVJlc3VsdEhvbGRlcjo6c3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluZmxh
dGVSZXN1bHRIb2xkZXI6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFi
bGVkKToKKworMjAxMi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5v
cmc+CisKICAgICAgICAgUmVuYW1lICJyZXNlcnZlZDEiIGZsYWcgb2YgV2ViU29ja2V0RnJhbWUg
dG8gY29tcHJlc3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5MTg3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCBiZjZhZDZl
ZGZhNWU0OGMxODg5MjU5MjA3MTNkYTE5MWM2OGVkN2FkLi5iNDk4OTBiNmMzMjk0OWFiNzkzMGIy
NmM4NmY3YWE0OTYzMGE4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBA
IC0xMTkzLDQgKzExOTMsOCBAQAogI2RlZmluZSBXVEZfVVNFX1dURlVSTCAwCiAjZW5kaWYKIAor
I2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEVGTCkKKyNkZWZpbmUgV1RGX1VTRV9aTElC
IDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggYmJkZWNmYjg0YWJjODAwZTcxYWE0YmRmOTEzODFhN2ZkYWYzODFmYS4uNGUwYjg2
NjA4OGU5NzNjMmEwNzJmOGU4Y2Y0MGMyNmRmMTgzNzgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTIwNTYsNiArMjA1Niw3IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAgICAgICAgIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAK
ICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCiAgICAgICAgIHdlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IGJkZThhYjRlMzBmZDkyOWRjNDI0NGFiNWJjNjAwNWE0NDY2Y2YwYmUuLmVk
MTVkODZhYjcyYzFiYTVhZjk5YmUxMzJhMWQ4MGQ3YWM3N2ZlZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNDMzOSw2ICs0MzM5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAJU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVGcmFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVGcmFtZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAzMTc1OTAwYzMyMTBlZTY0YWM5NzVhYzkzNjE4
NDgxMThmMzg3OWRkLi4zNzFlYWU1YWIzNjdmNWIyNzM1NWQyMzM0MTc3MmU2Y2Y3NDJiYzI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTM2NjYsNiArMzY2Niw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmggXApAQCAtMzY3Nyw2
ICszNjc4LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAg
ICBTT1VSQ0VTICs9IFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKICAgICAg
ICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzQyMGNjNWYxZWE5MjY5NzJiYjMzMjIyZTM4
YWQ5ZGJhZmEwMzg4ZS4uMjFmMmQ4YzVkMGViMGE3ZDkwMDhkMTFlZmQ1OGIyOGJkMTk3ODljMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDgxOSw2ICs0ODE5LDggQEAKICAgICAgICAgICAgICd3ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCcsCiAg
ICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oJywKICAgICAgICAgICAg
ICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggODI3ZDExZTg2OWMx
Mzk0NzlkNjQxOTU4ZjU0MDQ3ZTAyMWM5ZTY5Ni4uYTUzNDJkMTE3MjIxY2ZmOWY3ZTdjNWU1MmFk
MWFmYmY3NDI0ZGYyZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTczNDYyLDYgKzczNDYyLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERl
ZmxhdGVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODU4ZDI1NTRlOWQ1MzlkYTE3NmNh
NzQ1MjQ1MzQ2MzNkZjc5ZTJlNi4uMjNlODBiODhmNTVlZTY1NWE5NDA0MGQxNGQyMjE2YTg1MmVk
NzgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM2Nyw2ICsxMzY3LDggQEAKIAkJNEExRTcxOTYxNEUxMDFGOTAwNjI2RjlE
IC8qIEpTSFRNTFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBMUU3MTk0MTRFMTAxRjkwMDYyNkY5RCAvKiBKU0hUTUxTaGFkb3dF
bGVtZW50LmggKi87IH07CiAJCTRBMUU3MUE1MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jv
b3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEx
RTcxQTMxNEUxMDZBQzAwNjI2RjlEIC8qIEpTU2hhZG93Um9vdC5jcHAgKi87IH07CiAJCTRBMUU3
MUE2MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBK
U1NoYWRvd1Jvb3QuaCAqLzsgfTsKKwkJNEEyOTIyMkIxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEEyOTIyMjkxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVG
cmFtZXIuY3BwICovOyB9OworCQk0QTI5MjIyQzE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0
RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEEyOTIyMkExNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIu
aCAqLzsgfTsKIAkJNEE0QTIzNDYxNEYxRTE0NDAwNDZGQkYxIC8qIFdlYlNvY2tldEZyYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTRBMjM0NTE0
RjFFMTQ0MDA0NkZCRjEgLyogV2ViU29ja2V0RnJhbWUuaCAqLzsgfTsKIAkJNEE2RTlGQzMxM0Mx
N0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZv
bnRGZWF0dXJlVmFsdWUuY3BwICovOyB9OwogCQk0QTZFOUZDNDEzQzE3RDFEMDA0NkE3RjggLyog
Rm9udEZlYXR1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEE2RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODIzMSw2
ICs4MjMzLDggQEAKIAkJNEExRTcxOTQxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0Vs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MU2hhZG93RWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTFFNzFBMzE0RTEwNkFDMDA2
MjZGOUQgLyogSlNTaGFkb3dSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTU2hhZG93Um9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRB
MUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRBMjkyMjI5MTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTI5MjIyQTE0RjQ2
OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRBNEEyMzQ1MTRGMUUxNDQwMDQ2RkJGMSAvKiBXZWJTb2NrZXRGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRGcmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyog
Rm9udEZlYXR1cmVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb250RmVhdHVyZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2
RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZlYXR1cmVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQ4NTQsNiArMTQ4NTgsOCBAQAogCQkJCTUxMEQ0QTQ3MTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKIAkJCQk1MTBENEE0ODEwMzE3N0Ey
MDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJCTUxMEQ0QTQ5MTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8sCisJCQkJNEEyOTIyMjkxNEY0
NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovLAorCQkJCTRBMjky
MjJBMTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggKi8sCiAJCQkJ
NEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLywKIAkJ
CQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLywKIAkJ
CQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hl
ci5jcHAgKi8sCkBAIC0yNDI0NCw2ICsyNDI1MCw3IEBACiAJCQkJNTE4QTM0QzIxMDI2QzgzMTAw
MUI2ODk2IC8qIFdlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRDRBNEYxMDMxNzdB
MjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEQ0
QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0QTI5MjIyQzE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFFMDJBQkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdl
YlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTk1N0YwNzE0RTI0MTMwMDA0
OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nv
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzIwMyw2ICsyNzIxMCw3IEBACiAJCQkJMUNBRjM0ODIw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxOEEzNEMxMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNEEyOTIyMkIxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEFFMDJBQkQxNEU4QTlEMjAwQkMz
QkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBOTU3RjA2
MTRFMjQxMkEwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5k
c2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAKaW5kZXggMzZkYmI2ZjMyYzI0OTgzYzIwZjg1OGUwZGFjNzc2MWZiNjliMTJhNC4uN2Rk
ODU0ZWQxNTJhMzIxZjA0OTIxMTJjZTU1YTdmMTA5ZTg5MzNlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIHZvaWQgV2ViU29ja2V0
OjpkaWRDb25uZWN0KCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBtX3N0YXRlID0gT1BFTjsKICAgICBtX3N1YnByb3RvY29sID0gbV9jaGFubmVsLT5zdWJwcm90
b2NvbCgpOworICAgIG1fZXh0ZW5zaW9ucyA9IG1fY2hhbm5lbC0+ZXh0ZW5zaW9ucygpOwogICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggZWMwNzA2ZGI0Zjg0OGY1NzU1MWM5ODdmMjdiYzQ0ZTJkYzgwNDI2
OC4uYzQwYjA5ODU3ZTZhZDcwNDhhZTFkNTBjYzkyYzY1MTcyNGM3NGU2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMjcsNiArMTI3
LDggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBtX2hh
bmRzaGFrZSA9IGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRIYW5kc2hha2UodXJsLCBwcm90b2NvbCwg
bV9kb2N1bWVudCwgbV91c2VIaXhpZTc2UHJvdG9jb2wpKTsKICAgICBtX2hhbmRzaGFrZS0+cmVz
ZXQoKTsKKyAgICBpZiAoIW1fdXNlSGl4aWU3NlByb3RvY29sICYmIG1fZGVmbGF0ZUZyYW1lci5j
YW5EZWZsYXRlKCkpCisgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3Io
bV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKICAgICBpZiAobV9p
ZGVudGlmaWVyKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdl
YlNvY2tldChtX2RvY3VtZW50LCBtX2lkZW50aWZpZXIsIHVybCwgbV9kb2N1bWVudC0+dXJsKCkp
OwogICAgIHJlZigpOwpAQCAtMjI4LDYgKzIzMCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAgICAgbV9zaG91bGREaXNjYXJkUmVjZWl2
ZWREYXRhID0gdHJ1ZTsKICAgICAgICAgaWYgKG1fYnVmZmVyKQogICAgICAgICAgICAgc2tpcEJ1
ZmZlcihtX2J1ZmZlclNpemUpOyAvLyBTYXZlIG1lbW9yeS4KKyAgICAgICAgbV9kZWZsYXRlRnJh
bWVyLmRpZEZhaWwoKTsKICAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKICAg
ICAgICAgbV9jb250aW51b3VzRnJhbWVEYXRhLmNsZWFyKCk7CiAgICAgfQpAQCAtNjE4LDYgKzYy
MSwxMiBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJU
KG1fYnVmZmVyIDwgZnJhbWVFbmQpOwogICAgIEFTU0VSVChmcmFtZUVuZCA8PSBtX2J1ZmZlciAr
IG1fYnVmZmVyU2l6ZSk7CiAKKyAgICBJbmZsYXRlUmVzdWx0SG9sZGVyIGluZmxhdGVSZXN1bHQg
PSBtX2RlZmxhdGVGcmFtZXIuaW5mbGF0ZShmcmFtZSk7CisgICAgaWYgKCFpbmZsYXRlUmVzdWx0
LnN1Y2NlZWRlZCgpKSB7CisgICAgICAgIGZhaWwoaW5mbGF0ZVJlc3VsdC5mYWlsdXJlUmVhc29u
KCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVmFsaWRhdGUgdGhl
IGZyYW1lIGRhdGEuCiAgICAgaWYgKFdlYlNvY2tldEZyYW1lOjppc1Jlc2VydmVkT3BDb2RlKGZy
YW1lLm9wQ29kZSkpIHsKICAgICAgICAgZmFpbCgiVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTog
IiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwpAQCAtMTAxMSw2ICsxMDIwLDEzIEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUg
b3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2Rl
TWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBv
cENvZGVzLgogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lKG9wQ29kZSwgdHJ1ZSwgZmFsc2UsIHRy
dWUsIGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgRGVmbGF0ZVJlc3VsdEhvbGRlciBkZWZsYXRl
UmVzdWx0ID0gbV9kZWZsYXRlRnJhbWVyLmRlZmxhdGUoZnJhbWUpOworICAgIGlmICghZGVmbGF0
ZVJlc3VsdC5zdWNjZWVkZWQoKSkgeworICAgICAgICBmYWlsKGRlZmxhdGVSZXN1bHQuZmFpbHVy
ZVJlYXNvbigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIFZlY3Rvcjxj
aGFyPiBmcmFtZURhdGE7CiAgICAgbWFrZUZyYW1lRGF0YShmcmFtZSwgZnJhbWVEYXRhKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA0YmIy
OGM5ZjJiMDVhZjM0OTk3YmUwN2E2MmYxMmJjNGU5ODM1ODE4Li42ZDFmZWJiY2EwNmUxZWQ3ZDVj
ZWUxNTBkODc2MGFmNzgwNDYyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hh
a2UuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTIzMSw2ICsyMzIsOCBAQCBwcml2YXRl
OgogICAgIE93blB0cjxGaWxlUmVhZGVyTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgQmxvYkxv
YWRlclN0YXR1cyBtX2Jsb2JMb2FkZXJTdGF0dXM7CiAjZW5kaWYKKworICAgIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIgbV9kZWZsYXRlRnJhbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5ZDM1MzZiYWIzZWI5MDhjY2FjNzNmNDhiY2E4MzdmNzVj
NWVhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0
ZUZyYW1lci5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIDog
cHVibGljIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPiBjcmVhdGUoV2ViU29j
a2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoZnJhbWVyKSk7CisgICAgfQorICAg
IHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSgpIHsgfQorCisgICAgdmly
dHVhbCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IHByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBPVkVSUklERSB7IHJldHVybiBt
X2ZhaWx1cmVSZWFzb247IH0KKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworCisgICAgV2ViU29ja2V0RGVmbGF0
ZUZyYW1lciogbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAgIFN0
cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9OworCisvLyBGWElNRTogUmVtb3ZlIHZlbmRvciBwcmVm
aXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4KK1dlYlNvY2tldEV4dGVuc2lvbkRl
ZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxh
dGVGcmFtZXIqIGZyYW1lcikKKyAgICA6IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcigieC13
ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCisgICAgLCBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3Jl
c3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK1N0
cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCit7
CisgICAgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IC8vIE5vIHBhcmFtZXRlcgorfQorCitib29s
IFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQoreworI2lmIFVTRShaTElC
KQorICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNv
biA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFtZSByZXNwb25zZSI7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9yZXNwb25zZVByb2Nlc3NlZCA9IHRydWU7CisK
KyAgICBpbnQgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzID0gMDsKKyAgICBpbnQgd2luZG93Qml0cyA9
IDE1OworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0
ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIpOworICAgIGlmIChw
YXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5lbmQoKSkgeworICAgICAgICB3aW5kb3dCaXRz
ID0gcGFyYW1ldGVyLT5zZWNvbmQudG9JbnQoKTsKKyAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4
IHx8IHdpbmRvd0JpdHMgPiAxNSkgeworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJl
Y2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciI7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzKys7
CisgICAgfQorCisgICAgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9k
ZSA9IFdlYlNvY2tldERlZmxhdGVyOjpUYWtlT3ZlckNvbnRleHQ7CisgICAgcGFyYW1ldGVyID0g
c2VydmVyUGFyYW1ldGVycy5maW5kKCJub19jb250ZXh0X3Rha2VvdmVyIik7CisgICAgaWYgKHBh
cmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CisgICAgICAgIGlmICghcGFyYW1l
dGVyLT5zZWNvbmQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJS
ZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtb2RlID0gV2ViU29ja2V0RGVm
bGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0OworICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRl
cnMrKzsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWROdW1QYXJhbWV0ZXJzICE9IHNlcnZlclBh
cmFtZXRlcnMuc2l6ZSgpKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1
bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIG1fZnJhbWVyLT5lbmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUp
OworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0
ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2Zy
YW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2Zy
YW1lcik7Cit9CisKK0RlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKCkK
K3sKKyAgICBtX2ZyYW1lci0+cmVzZXREZWZsYXRlQ29udGV4dCgpOworfQorCit2b2lkIERlZmxh
dGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAg
IG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNv
bjsKK30KKworSW5mbGF0ZVJlc3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBt
X3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0luZmxhdGVS
ZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVz
ZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit2b2lkIEluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwo
Y29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7
CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30KKworV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCisgICAgOiBtX2VuYWJsZWQoZmFs
c2UpCit7Cit9CisKK1Bhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKQoreworICAgIHJl
dHVybiBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmNyZWF0ZSh0aGlzKTsKK30KKwor
Ym9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKK3sKKyNpZiBV
U0UoWkxJQikKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKKyNpZiBVU0UoWkxJQikKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5h
YmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtl
T3Zlck1vZGUgbW9kZSkKK3sKKyAgICBtX2RlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNy
ZWF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2luZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0
ZXI6OmNyZWF0ZSgpOworICAgIGlmICghbV9kZWZsYXRlciB8fCAhbV9pbmZsYXRlcikgeworICAg
ICAgICBtX2RlZmxhdGVyLmNsZWFyKCk7CisgICAgICAgIG1faW5mbGF0ZXIuY2xlYXIoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIW1fZGVmbGF0ZXItPmluaXRpYWxpemUoKSB8
fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6ZSgpKSB7CisgICAgICAgIG1fZGVmbGF0ZXIuY2xlYXIo
KTsKKyAgICAgICAgbV9pbmZsYXRlci5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fZW5hYmxlZCA9IHRydWU7Cit9CisjZW5kaWYKKworRGVmbGF0ZVJlc3VsdEhvbGRlciBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3sK
KyNpZiBVU0UoWkxJQikKKyAgICBEZWZsYXRlUmVzdWx0SG9sZGVyIHJlc3VsdCh0aGlzKTsKKyAg
ICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShm
cmFtZS5vcENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUu
cGF5bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CisgICAgICAgIHJlc3Vs
dC5mYWlsKCJGYWlsZWQgdG8gY29tcHJlc3MgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgZnJhbWUuY29tcHJlc3MgPSB0cnVlOworICAgIGZyYW1lLnBheWxvYWQg
PSBtX2RlZmxhdGVyLT5kYXRhKCk7CisgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IG1fZGVmbGF0
ZXItPnNpemUoKTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4gRGVmbGF0
ZVJlc3VsdEhvbGRlcih0aGlzKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNvY2tldERlZmxhdGVG
cmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQoKQoreworI2lmIFVTRShaTElCKQorICAgIGlmICht
X2RlZmxhdGVyKQorICAgICAgICBtX2RlZmxhdGVyLT5yZXNldCgpOworI2VuZGlmCit9CisKK0lu
ZmxhdGVSZXN1bHRIb2xkZXIgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2Nr
ZXRGcmFtZSYgZnJhbWUpCit7CisjaWYgVVNFKFpMSUIpCisgICAgSW5mbGF0ZVJlc3VsdEhvbGRl
ciByZXN1bHQodGhpcyk7CisgICAgaWYgKCFmcmFtZS5jb21wcmVzcykKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29u
dHJvbE9wQ29kZShmcmFtZS5vcENvZGUpKSB7CisgICAgICAgIHJlc3VsdC5mYWlsKCJSZWNlaXZl
ZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisgICAgaWYgKCFtX2luZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFt
ZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9pbmZsYXRlci0+ZmluaXNoKCkpIHsKKyAgICAgICAgcmVz
dWx0LmZhaWwoIkZhaWxlZCB0byBkZWNvbXByZXNzIGZyYW1lIik7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIGZyYW1lLmNvbXByZXNzID0gZmFsc2U7CisgICAgZnJhbWUucGF5
bG9hZCA9IG1faW5mbGF0ZXItPmRhdGEoKTsKKyAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9p
bmZsYXRlci0+c2l6ZSgpOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBJ
bmZsYXRlUmVzdWx0SG9sZGVyKHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6cmVzZXRJbmZsYXRlQ29udGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAg
aWYgKG1faW5mbGF0ZXIpCisgICAgICAgIG1faW5mbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30K
Kwordm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkaWRGYWlsKCkKK3sKKyAgICByZXNldERl
ZmxhdGVDb250ZXh0KCk7CisgICAgcmVzZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhlOGJhODM5MDNmNWEyYjZkZTA3ODA3MmMzZmQ1NzI3ZjcyZTdiZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFt
ZXIuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaAor
I2RlZmluZSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2lmIFVTRShaTElCKQorI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCisjZW5k
aWYKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI7CisKK2NsYXNzIERlZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGljOgorICAg
IGV4cGxpY2l0IERlZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOwor
ICAgIH5EZWZsYXRlUmVzdWx0SG9sZGVyKCk7CisKKyAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3VjY2VlZGVkOyB9CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25z
dCB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24pOworCitwcml2YXRlOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIqIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgU3RyaW5nIG1fZmFpbHVy
ZVJlYXNvbjsKK307CisKK2NsYXNzIEluZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGljOgorICAg
IGV4cGxpY2l0IEluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOwor
ICAgIH5JbmZsYXRlUmVzdWx0SG9sZGVyKCk7CisKKyAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3VjY2VlZGVkOyB9CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25z
dCB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24pOworCitwcml2YXRlOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIqIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgU3RyaW5nIG1fZmFpbHVy
ZVJlYXNvbjsKK307CisKK2NsYXNzIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgeworcHVibGljOgor
ICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIoKTsKKworICAgIFBhc3NPd25QdHI8V2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yPiBjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKTsKKworICAgIGJv
b2wgY2FuRGVmbGF0ZSgpIGNvbnN0OworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQorCisgICAgRGVmbGF0ZVJlc3VsdEhvbGRlciBkZWZsYXRlKFdlYlNvY2tl
dEZyYW1lJik7CisgICAgdm9pZCByZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgSW5mbGF0ZVJl
c3VsdEhvbGRlciBpbmZsYXRlKFdlYlNvY2tldEZyYW1lJik7CisgICAgdm9pZCByZXNldEluZmxh
dGVDb250ZXh0KCk7CisKKyAgICB2b2lkIGRpZEZhaWwoKTsKKworI2lmIFVTRShaTElCKQorICAg
IHZvaWQgZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNv
bnRleHRUYWtlT3Zlck1vZGUpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2VuYWJs
ZWQ7CisjaWYgVVNFKFpMSUIpCisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBtX2RlZmxh
dGVyOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gbV9pbmZsYXRlcjsKKyNlbmRpZgor
fTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lcl9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTExYTE5MDZiN2UxYzc1YzExOGRkNDUxOGQ1
OTJiYmM1Nzc2YjEwZS4uYzQ5MWM3ODNiYzdjNTRiOWI1MDkxMzM5NDgxYmVkYThmODE1YWNhZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMTIsNiArMTIsMzkgQEAKIAogMjAxMi0wMi0yMSAgS2VuaWNoaSBJc2hpYmFzaGkg
IDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJh
bWUgREVGTEFURSBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc3NTIyCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIFdlYlNvY2tldCBk
ZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4gQWxzbyB1cGRhdGVkIHNvbWUKKyAgICAgICAgdGVzdHMg
dG8gZm9sbG93IHRoZSBjaGFuZ2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQt
Y29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1j
b250cm9sLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICh3ZWJfc29ja2V0X2RvX2V4dHJh
X2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJp
dC1vbm9mZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUt
aW52YWxpZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9k
ZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weTogQWRkZWQuCisgICAgICAgICh3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0
ZS1mcmFtZV93c2gucHk6IEFkZGVkLgorICAgICAgICAoX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVu
c2lvbl9wcm9jZXNzb3IpOgorICAgICAgICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Up
OgorICAgICAgICAod2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKToKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVh
ZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weToKKyAgICAgICAgKF9yZXRyaWV2ZV9mcmFtZSk6Cisg
ICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgorCisyMDEyLTAyLTIxICBLZW5pY2hp
IElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZW5hbWUgInJlc2Vy
dmVkMSIgZmxhZyBvZiBXZWJTb2NrZXRGcmFtZSB0byBjb21wcmVzcwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxODcKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRy
b2wtZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY0MWVjNDczZDZiZTIxYzFjMDYwMTAyOWZmYzVmYTM5Y2NiZjM4MjQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXBy
ZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09M
RSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUKK1Rlc3Qgd2hl
dGhlciBhIGNvbXByZXNzZWQgY29udHJvbCBmcmFtZSBpcyByZWplY3RlZAorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNh
bGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nv
bXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMDg4Yzc5OWJlNDExYzEy
MjgxMmE1MDk0MmZhODM5ODM4MDA5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5o
dG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBhIGNvbXByZXNzZWQgY29udHJvbCBmcmFtZSBp
cyByZWplY3RlZCIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwor
Cit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZSIpOwordmFyIGNsb3NlRXZlbnQ7CisK
K3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxl
ZC4iKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciBt
ZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2Fs
bGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7Cit9OworCit3cy5vbmNsb3Nl
ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIp
OworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50
Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2Vk
LWNvbnRyb2wtZnJhbWVfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMTJlOWM0NTIyYjMxODU4Nzg0NmZi
MTYwMTYxOTc5YThiM2IyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkK
QEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KK2ltcG9y
dCB6bGliCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgor
ICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAg
IGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKKyAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09N
UFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKKyAgICBjb21wcmVzc2Vk
X21lc3NhZ2UgPSBjb21wcmVzcy5jb21wcmVzcygnY2xvc2UgbWVzc2FnZScpCisgICAgY29tcHJl
c3NlZF9tZXNzYWdlICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgIGNv
bXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzZWRfbWVzc2FnZVs6LTRdCisgICAgaGVhZGVyID0g
c3RyZWFtLmNyZWF0ZV9oZWFkZXIoCisgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NMT1NF
LCBwYXlsb2FkX2xlbmd0aD1sZW4oY29tcHJlc3NlZF9tZXNzYWdlKSwKKyAgICAgICAgZmluPTEs
IHJzdjE9MSwgcnN2Mj0wLCByc3YzPTAsIG1hc2s9RmFsc2UpCisgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXRlKGhlYWRlciArIGNvbXByZXNzZWRfbWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21w
LWJpdC1vbm9mZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2MmZlZjNkZTZmMGZlNDA4MGVhMmQzNTIzZjI5NWI0Mzg2MjNmMzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAg
QEAKK1Rlc3QgY29tcHJlc3Npb24gZW5hYmxlZC9kaXNhYmxlZCBmcmFtZSByZWNlaXZpbmcuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU2VuZGluZyBtZXNzYWdlOiAiSGVsbG8iCitQ
QVNTIGV2ZW50LmRhdGEgaXMgJ0hlbGxvJworU2VuZGluZyBtZXNzYWdlOiAiRGlzYWJsZUNvbXBy
ZXNzaW9uIgorUEFTUyBldmVudC5kYXRhIGlzICdEaXNhYmxlQ29tcHJlc3Npb24nCitTZW5kaW5n
IG1lc3NhZ2U6ICJXb3JsZCIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnV29ybGQnCitTZW5kaW5nIG1l
c3NhZ2U6ICJFbmFibGVDb21wcmVzc2lvbiIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnRW5hYmxlQ29t
cHJlc3Npb24nCitTZW5kaW5nIG1lc3NhZ2U6ICJHb29kYnllIgorUEFTUyBldmVudC5kYXRhIGlz
ICdHb29kYnllJworb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2Zm
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTMyYWM1N2JiOGY4YmI5MDZmYWE0MmI0MzM0YmYyZmMyNzhhNjc2
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sCkBAIC0wLDAgKzEsNjAg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGNvbXByZXNzaW9uIGVuYWJsZWQv
ZGlzYWJsZWQgZnJhbWUgcmVjZWl2aW5nLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKK3ZhciB3czsKK3ZhciBtZXNzYWdlSW5k
ZXg7CisKK3ZhciBtZXNzYWdlcyA9IFsKKyAgICAiSGVsbG8iLAorICAgICJEaXNhYmxlQ29tcHJl
c3Npb24iLCAvLyBUaGlzIGRpc2FibGVzIGNvbXByZXNzaW9uCisgICAgIldvcmxkIiwKKyAgICAi
RW5hYmxlQ29tcHJlc3Npb24iLCAvLyBUaGlzIGVuYWJsZXMgY29tcHJlc3Npb24KKyAgICAiR29v
ZGJ5ZSIKK107CisKK3dzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lIik7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9u
KGV2ZW50KQoreworICAgIG1lc3NhZ2VJbmRleCA9IDA7CisgICAgZGVidWcoIlNlbmRpbmcgbWVz
c2FnZTogXCIiICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICJcIiIpOworICAgIHdzLnNlbmQo
bWVzc2FnZXNbbWVzc2FnZUluZGV4XSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dmVudCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICInIiArIG1lc3NhZ2VzW21lc3Nh
Z2VJbmRleF0gKyAiJyIpOworICAgIGlmIChtZXNzYWdlSW5kZXggPT09IG1lc3NhZ2VzLmxlbmd0
aCAtIDEpCisgICAgICAgIHdzLmNsb3NlKCk7CisgICAgZWxzZSB7CisgICAgICAgIG1lc3NhZ2VJ
bmRleCArPSAxOworICAgICAgICBkZWJ1ZygiU2VuZGluZyBtZXNzYWdlOiBcIiIgKyBtZXNzYWdl
c1ttZXNzYWdlSW5kZXhdICsgIlwiIik7CisgICAgICAgIHdzLnNlbmQobWVzc2FnZXNbbWVzc2Fn
ZUluZGV4XSk7CisgICAgfQorfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2ZW50ID0gZXZl
bnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlk
LXBhcmFtZXRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNhMjRkMjhjYzIzM2I3YTVmNjM0
OTNiOTVkMGY4MWJhN2YzNGRiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRl
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZl
ZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJl
Y2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlcgorQ09OU09MRSBNRVNTQUdF
OiBSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJhbWV0ZXIKK0NPTlNPTEUgTUVT
U0FHRTogUmVjZWl2ZWQgaW52YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFtZXRlcgorQ09O
U09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVy
CitUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgaW52YWxpZCBkZWZsYXRlLWZyYW1lIHBh
cmFtZXRlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdGluZyBwYXJhbWV0
ZXI6ICJ4LWZvbyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz03Igorb25j
bG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rl
c3RpbmcgcGFyYW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTE2Igorb25jbG9zZSgpIHdhcyBjYWxs
ZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3RpbmcgcGFyYW1ldGVy
OiAibm9fY29udGV4dF90YWtlb3Zlcj1mb28iCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1Mg
Y2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJtYXhfd2lu
ZG93X2JpdHM9ODsgbm9fY29udGV4dF90YWtlb3ZlcjsgeC1mb28iCitvbmNsb3NlKCkgd2FzIGNh
bGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlk
LXBhcmFtZXRlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE1
ZmJkMDZkMjAyYTNlY2M4MDJhZTI0YTc3OWVmNjRiOTM5YTljMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgaW52YWxpZCBkZWZs
YXRlLWZyYW1lIHBhcmFtZXRlcnMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGVkIiwgMCk7CisKK3ZhciBjbG9zZUV2ZW50OworCit2YXIgdGVzdENhc2UgPSBbCisgICAgIngt
Zm9vIiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTciLAorICAgICJtYXhfd2luZG93X2JpdHM9MTYi
LAorICAgICJub19jb250ZXh0X3Rha2VvdmVyPWZvbyIsCisgICAgIm1heF93aW5kb3dfYml0cz04
OyBub19jb250ZXh0X3Rha2VvdmVyOyB4LWZvbyIKK107CisKK2Z1bmN0aW9uIGRvVGVzdChpbmRl
eCkKK3sKKyAgICB2YXIgcGFyYW1ldGVyID0gdGVzdENhc2VbaW5kZXhdOworICAgIHZhciB1cmwg
PSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1l
LWludmFsaWQtcGFyYW1ldGVyPyIgKyBlbmNvZGVVUkkocGFyYW1ldGVyKTsKKyAgICB2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KHVybCk7CisKKyAgICBkZWJ1ZygiVGVzdGluZyBwYXJhbWV0ZXI6IFwi
IiArIHBhcmFtZXRlciArICJcIiIpOworCisgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHRl
c3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2Fn
ZSArICJcIikiKTsKKyAgICB9OworCisgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAgICAgICBj
bG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2Fz
Q2xlYW4iKTsKKyAgICAgICAgaWYgKGluZGV4ID09PSB0ZXN0Q2FzZS5sZW5ndGggLSAxKQorICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvVGVz
dChpbmRleCArIDEpOworICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRl
cl93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Rl
ZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4Y2MyNWM4
ZDdjY2MxYTY3NmFkMWVmNjg0ZDYzMDk5MTI4ZmYwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52
YWxpZC1wYXJhbWV0ZXJfd3NoLnB5CkBAIC0wLDAgKzEsNTYgQEAKKyMgQ29weXJpZ2h0IDIwMTIs
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
CitpbXBvcnQgdXJsbGliCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCitm
cm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBpbXBvcnQgY29tcHV0ZV9hY2NlcHQK
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcmVz
b3VyY2VzID0gcmVxdWVzdC53c19yZXNvdXJjZS5zcGxpdCgnPycsIDEpCisgICAgcGFyYW1ldGVy
cyA9IE5vbmUKKyAgICBpZiBsZW4ocmVzb3VyY2VzKSA9PSAyOgorICAgICAgICBwYXJhbWV0ZXJz
ID0gdXJsbGliLnVucXVvdGUocmVzb3VyY2VzWzFdKQorCisgICAgbWVzc2FnZSA9ICdIVFRQLzEu
MSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisgICAgbWVzc2FnZSArPSAnVXBncmFkZTog
d2Vic29ja2V0XHJcbicKKyAgICBtZXNzYWdlICs9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicK
KyAgICBtZXNzYWdlICs9ICdTZWMtV2ViU29ja2V0LUFjY2VwdDogJXNcclxuJyAlIGNvbXB1dGVf
YWNjZXB0KHJlcXVlc3QuaGVhZGVyc19pblsnU2VjLVdlYlNvY2tldC1LZXknXSlbMF0KKyAgICBt
ZXNzYWdlICs9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6IHgtd2Via2l0LWRlZmxhdGUtZnJh
bWUnCisgICAgaWYgcGFyYW1ldGVyczoKKyAgICAgICAgbWVzc2FnZSArPSAnOyAlc1xyXG4nICUg
cGFyYW1ldGVycworICAgIGVsc2U6CisgICAgICAgIG1lc3NhZ2UgKz0gJ1xyXG4nCisgICAgbWVz
c2FnZSArPSAnXHJcbicKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZSkKKyAg
ICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQWJvcnQgdGhlIGNvbm5l
Y3Rpb24nKSAjIFByZXZlbnRzIHB5d2Vic29ja2V0IGZyb20gc2VuZGluZyBpdHMgb3duIGhhbmRz
aGFrZSBtZXNzYWdlLgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1l
dGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjYzZmUzOTRhNDYyNGExODRjM2RiMmY0NzI4
OTQ0NDlkMGQ0MDRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzMCBAQAorVGVzdCBXZWJTb2NrZXQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24u
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdGluZyBxdWVyeTogIm1heF93aW5k
b3dfYml0cz04IgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0ZS1m
cmFtZScpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ21heF93aW5k
b3dfYml0cz04JykgIT0gLTEgaXMgdHJ1ZQorUEFTUyBldmVudC5kYXRhIGlzIGZpcnN0TWVzc2Fn
ZQorUEFTUyBldmVudC5kYXRhIGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3YXMgY2FsbGVk
LgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1Rlc3RpbmcgcXVlcnk6ICJub19j
b250ZXh0X3Rha2VvdmVyIgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVm
bGF0ZS1mcmFtZScpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ25v
X2NvbnRleHRfdGFrZW92ZXInKSAhPSAtMSBpcyB0cnVlCitQQVNTIGV2ZW50LmRhdGEgaXMgZmly
c3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2FnZQorb25jbG9zZSgpIHdh
cyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorVGVzdGluZyBxdWVy
eTogIm1heF93aW5kb3dfYml0cz04Jm5vX2NvbnRleHRfdGFrZW92ZXIiCitQQVNTIHdzLmV4dGVu
c2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMgdHJ1ZQorUEFT
UyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbWF4X3dpbmRvd19iaXRzPTgnKSAhPSAtMSBpcyB0cnVl
CitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNoKCdub19jb250ZXh0X3Rha2VvdmVyJykgIT0gLTEg
aXMgdHJ1ZQorUEFTUyBldmVudC5kYXRhIGlzIGZpcnN0TWVzc2FnZQorUEFTUyBldmVudC5kYXRh
IGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50
Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGI3N2U0NzE4MTdlMjM0N2NmYjgzNmZkOWUzYWFhM2VmYjg1YzZmMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IURP
Q1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgZGVmbGF0ZS1mcmFtZSBleHRl
bnNpb24uIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3Zh
ciBjbG9zZUV2ZW50OwordmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFyIHF1ZXJpZXMg
PSBbCisgICAgIm1heF93aW5kb3dfYml0cz04IiwKKyAgICAibm9fY29udGV4dF90YWtlb3ZlciIs
CisgICAgIm1heF93aW5kb3dfYml0cz04Jm5vX2NvbnRleHRfdGFrZW92ZXIiCitdOworCisvLyBU
aGUgZmlyc3QgbWVzc2FnZSBjb25zaXN0cyBvZiBhIGxvdCBvZiAnYicgYW5kIGEgZmV3ICdhJyBh
dCB0aGUgaGVhZCBhbmQKKy8vIHRoZSB0YWlsLCB3aGlsZSB0aGUgc2Vjb25kIG9uZSBjb25zaXN0
cyBvZiAnYScuCit2YXIgZmlyc3RNZXNzYWdlID0gJyc7Cit2YXIgc2Vjb25kTWVzc2FnZSA9ICcn
OworZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9ICdh
JzsKKyAgICBzZWNvbmRNZXNzYWdlICs9ICdhJzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAy
NDsgKytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9ICdiJzsKKyAgICBzZWNvbmRNZXNzYWdlICs9
ICdhJzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgIGZpcnN0TWVzc2Fn
ZSArPSAnYSc7CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9CisKK2Z1bmN0aW9uIGRvVGVz
dChxdWVyeUluZGV4KQoreworICAgIHZhciBxdWVyeSA9IHF1ZXJpZXNbcXVlcnlJbmRleF07Cisg
ICAgZGVidWcoIlRlc3RpbmcgcXVlcnk6IFwiIiArIHF1ZXJ5ICsgIlwiIik7CisKKyAgICB2YXIg
dXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZT8iICsgcXVlcnk7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgbWVzc2Fn
ZUluZGV4ID0gMDsKKworICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJ3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0
ZS1mcmFtZScpICE9IC0xIik7CisgICAgICAgIHBhcmFtZXRlcnMgPSBxdWVyeS5zcGxpdCgnJicp
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBzaG91bGRCZVRydWUoIndzLmV4dGVuc2lvbnMuc2VhcmNoKCciICsgcGFyYW1l
dGVyc1tpXSArICInKSAhPSAtMSIpOworICAgICAgICB3cy5zZW5kKGZpcnN0TWVzc2FnZSk7Cisg
ICAgfTsKKworICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKG1lc3NhZ2VJbmRleCA9PT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50
LmRhdGEiLCAiZmlyc3RNZXNzYWdlIik7CisgICAgICAgICAgICBtZXNzYWdlSW5kZXggKz0gMQor
ICAgICAgICAgICAgd3Muc2VuZChzZWNvbmRNZXNzYWdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJldmVudC5kYXRhIiwgInNlY29uZE1lc3NhZ2UiKTsKKyAgICAg
ICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgd3Mub25jbG9zZSA9
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2Fs
bGVkLiIpOworICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAocXVlcnlJbmRleCA9PT0gcXVl
cmllcy5sZW5ndGggLSAxKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGRvVGVzdChxdWVyeUluZGV4ICsgMSk7CisgICAgfTsKK30KKworZG9U
ZXN0KDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZs
YXRlLWZyYW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNiNzgzODU1MDQyNzQ4M2E5
MzI2Y2U4ZmE2MGMxNzk4MWFkYmQ1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkKQEAgLTAs
MCArMSw4MiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCB1cmxwYXJzZQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vz
c29yCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBFeHRlbnNpb25Qcm9j
ZXNzb3JJbnRlcmZhY2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5z
aW9uUGFyYW1ldGVyCisKKworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKK19FTkFCTEVf
TUVTU0FHRSA9IHUnRW5hYmxlQ29tcHJlc3Npb24nCitfRElTQUJMRV9NRVNTQUdFID0gdSdEaXNh
YmxlQ29tcHJlc3Npb24nCisKKworZGVmIF9nZXRfZGVmbGF0ZV9mcmFtZV9leHRlbnNpb25fcHJv
Y2Vzc29yKHJlcXVlc3QpOgorICAgIGZvciBleHRlbnNpb25fcHJvY2Vzc29yIGluIHJlcXVlc3Qu
d3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnM6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXh0ZW5zaW9u
X3Byb2Nlc3NvciwgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgICAg
IHJldHVybiBleHRlbnNpb25fcHJvY2Vzc29yCisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcHJvY2Vzc29yID0gX2dl
dF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVxdWVzdCkKKyAgICBpZiBub3Qg
cHJvY2Vzc29yOgorICAgICAgICByZXR1cm4KKyAgICByID0gcmVxdWVzdC53c19yZXNvdXJjZS5z
cGxpdCgnPycsIDEpCisgICAgaWYgbGVuKHIpID09IDE6CisgICAgICAgIHJldHVybgorICAgIHBh
cmFtZXRlcnMgPSB1cmxwYXJzZS5wYXJzZV9xcyhyWzFdLCBrZWVwX2JsYW5rX3ZhbHVlcz1UcnVl
KQorICAgIGlmICdtYXhfd2luZG93X2JpdHMnIGluIHBhcmFtZXRlcnM6CisgICAgICAgIHdpbmRv
d19iaXRzID0gaW50KHBhcmFtZXRlcnNbJ21heF93aW5kb3dfYml0cyddWzBdKQorICAgICAgICBw
cm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX3dpbmRvd19iaXRzKHdpbmRvd19iaXRzKQorICAgIGlmICdu
b19jb250ZXh0X3Rha2VvdmVyJyBpbiBwYXJhbWV0ZXJzOgorICAgICAgICBwcm9jZXNzb3Iuc2V0
X3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1ZSkKKworCitkZWYgd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHByb2Nlc3NvciA9IF9nZXRfZGVmbGF0ZV9mcmFt
ZV9leHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAg
bGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxp
bmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxp
bmUsIHVuaWNvZGUpOgorICAgICAgICAgICAgaWYgcHJvY2Vzc29yOgorICAgICAgICAgICAgICAg
IGlmIGxpbmUgPT0gX0VOQUJMRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
b3IuZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxp
bmUgPT0gX0RJU0FCTEVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLmRp
c2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oKQorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJl
YW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAgIGlmIGxpbmUg
PT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5h
cnk9VHJ1ZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5z
aW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3Rl
ZC50eHQKaW5kZXggYWRmMDZiNjUxZDZiNDcxNWI0YTFiOTdjODdjOTYwMjMzYWFlMWZhMC4uY2M5
OWFmMGRkMTY1ZDUzZjQwNjcwYzVjNTg2YWVjOTllZmI2ODNjYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1l
eHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRl
ci1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVk
IHVuZXhwZWN0ZWQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcgorQ09OU09MRSBNRVNT
QUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGV4dGVuc2lvbjogeC1mb28KIFRlc3Qgd2hldGhlciBX
ZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgU2VjLVdlYlNvY2tl
dC1FeHRlbnNpb25zIGhlYWRlci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZp
bGUtYmxvYl93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQppbmRleCBkYWE0NDA0NzFhZjgzYWIyNjI4Njc1MWMz
ZTE4ODgyZjQ4NGRiNzhjLi43OTIwMzRjZmUzYjcwZTA0ODNiNWRlOTVlNGUxNzAxZDk3NzgyY2Ez
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NlbmQtZmlsZS1ibG9iX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQpAQCAtMiw2ICsyLDE0IEBAIGZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KIGZyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBtc2d1dGlsCiAKIAorZGVmIF9yZXRyaWV2ZV9mcmFtZShzdHJlYW0pOgorICAgICMgRklY
TUU6IFVzZSBiZXR0ZXIgQVBJLgorICAgIGZyYW1lID0gc3RyZWFtLl9yZWNlaXZlX2ZyYW1lX2Fz
X2ZyYW1lX29iamVjdCgpCisgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzdHJlYW0uX29wdGlvbnMu
aW5jb21pbmdfZnJhbWVfZmlsdGVyczoKKyAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFt
ZSkKKyAgICByZXR1cm4gZnJhbWUKKworCiBkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6CiAgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCiAKQEAgLTEwLDEyICsxOCwx
MSBAQCBkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgogICAgIGV4cGVjdGVk
X21lc3NhZ2VzID0gWydIZWxsbywgd29ybGQhJ10KIAogICAgIGZvciB0ZXN0X251bWJlciwgZXhw
ZWN0ZWRfbWVzc2FnZSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfbWVzc2FnZXMpOgotICAgICAgICAj
IEZJWE1FOiBVc2UgYmV0dGVyIEFQSS4KLSAgICAgICAgb3Bjb2RlLCBwYXlsb2FkLCBmaW5hbCwg
dW51c2VkX3Jlc2VydmVkMSwgdW51c2VkX3Jlc2VydmVkMiwgdW51c2VkX3Jlc2VydmVkMyA9IHJl
cXVlc3Qud3Nfc3RyZWFtLl9yZWNlaXZlX2ZyYW1lKCkKLSAgICAgICAgaWYgb3Bjb2RlID09IGNv
bW1vbi5PUENPREVfQklOQVJZIGFuZCBwYXlsb2FkID09IGV4cGVjdGVkX21lc3NhZ2UgYW5kIGZp
bmFsOgorICAgICAgICBmcmFtZSA9IF9yZXRyaWV2ZV9mcmFtZShyZXF1ZXN0LndzX3N0cmVhbSkK
KyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZIGFuZCBmcmFt
ZS5wYXlsb2FkID09IGV4cGVjdGVkX21lc3NhZ2UgYW5kIGZyYW1lLmZpbjoKICAgICAgICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdQQVNTOiBNZXNzYWdlICMlZC4nICUgdGVz
dF9udW1iZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAjJWQ6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZnJhbWU6
IG9wY29kZSA9ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0gJXInICUgKHRlc3RfbnVtYmVyLCBv
cGNvZGUsIHBheWxvYWQsIGZpbmFsKSkKKyAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsICdGQUlMOiBNZXNzYWdlICMlZDogUmVjZWl2ZWQgdW5leHBlY3RlZCBmcmFtZTog
b3Bjb2RlID0gJXIsIHBheWxvYWQgPSAlciwgZmluYWwgPSAlcicgJSAodGVzdF9udW1iZXIsIGZy
YW1lLm9wY29kZSwgZnJhbWUucGF5bG9hZCwgZnJhbWUuZmluKSkKIAogCiBkZWYgYWxsX2Rpc3Rp
bmN0X2J5dGVzKCk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128441</attachid>
            <date>2012-02-23 02:18:48 -0800</date>
            <delta_ts>2012-02-23 15:45:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77522-20120223191846.patch</filename>
            <type>text/plain</type>
            <size>56703</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZjE4OGE0MTAwNDk0NGU2YWUwMWEwM2Q5YTllZDlhYzczZjBlYWExLi4xOTUxMjE3MjI5MzViYzY0
NDRhOGVkNWFiZTZhN2NjYTE5ZjlmZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yMyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0w
Mi0yMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IFtbRGVmaW5lT3duUHJvcGVydHldXSBmb3IgdGhlIGFyZ3VtZW50cyBvYmpl
Y3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA1N2Q0NjhkNDI4OTEzNzliM2U2MDcxNTY3ZWIzM2E2ZjBlNjhlYzVl
Li5iNjJhMDZiOWQyNmI2YzhiY2FlM2U4NDMwNDkwODYwMTUyNmMxOTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzQgQEAKKzIwMTItMDItMjMgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEFkZGluZyBXZWJTb2NrZXQgcGVyLWZyYW1lIERFRkxBVEUg
ZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NzUyMgorCisgICAgICAgIEFkZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyIGNsYXNzIHdoaWNo
IGhhbmRsZXMgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uCisgICAgICAgIFRoaXMgY2xhc3MgZW5j
YXBzdWxhdGVzIFdlYlNvY2tldERlZmxhdGVyIGFuZCBXZWJTb2NrZXRJbmZsYXRlciBjbGFzc2Vz
LAorICAgICAgICB3aGljaCBkZXBlbmQgb24gemxpYiwgc28gdGhhdCBXZWJTb2NrZXRDaGFubmVs
IGlzIG5vdCBuZWNlc3NhcnkgdG8gYXdhcmUKKyAgICAgICAgemxpYiBkZXBlbmRlbmN5LgorCisg
ICAgICAgIFRoaXMgaXMgdGhlIHNlY29uZCBwYXRjaCB0byBsYW5kLiBUaGUgcHJldmlvdXMgcGF0
Y2ggYnJva2UgQ2hyb21pdW0gV2luCisgICAgICAgIHJlbGVhc2UgYnVpbGQuIHIxMDg2MDAgc2hv
dWxkIGZpeCB0aGUgYnVpbGQgZmFpbHVyZS4gSSBhbHNvIGFkZGVkCisgICAgICAgIHpsaWIgZW50
cnkgdG8gfGV4cG9ydF9kZXBlbmRlbnRfc2V0dGluZ3N8IG9mIHx3ZWJjb3JlX3ByZXJlcXVpc2l0
ZXN8CisgICAgICAgIHRhcmdldC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21w
cmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1p
bnZhbGlkLXBhcmFtZXRlci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwKKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OiBBZGRlZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLihjcHB8aCkKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBE
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwOiBBZGRlZCB6bGliIGRlcGVuZGVuY3kuCisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IEFkZGVkIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuKGNw
cHxoKQorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8u
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkaWRDb25uZWN0KTogU2V0IG1fZXh0ZW5zaW9ucy4KKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6IEFkZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbiBwcm9jZXNzb3Ig
dG8gV2ViU29ja2V0SGFuc2hha2UgaWYgZGVmbGF0ZSBjYW4gdXNlLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6IENhbGwgbV9kZWZsYXRlRnJhbWVyLmRpZEZhaWwo
KS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6IERl
Y29tcHJlc3MgZnJhbWVzIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OnNlbmRGcmFtZSk6IENvbXByZXNzIGZyYW1lcyBpZiBwb3NzaWJsZS4KKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6fldlYlNvY2tldEV4dGVuc2lvbkRl
ZmxhdGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRl
RnJhbWU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpEZWZsYXRlUmVz
dWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZs
YXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6
OmZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5mbGF0ZVJlc3VsdEhvbGRlcjo6SW5mbGF0ZVJl
c3VsdEhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5m
bGF0ZVJlc3VsdEhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVy
OjpmYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OldlYlNv
Y2tldERlZmxhdGVGcmFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6aW5mbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldEluZmxhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRpZEZhaWwpOgorICAgICAgICAqIHdlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoRGVmbGF0ZVJlc3VsdEhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpEZWZsYXRl
UmVzdWx0SG9sZGVyOjpzdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3Vs
dEhvbGRlcjo6ZmFpbHVyZVJlYXNvbik6CisgICAgICAgIChJbmZsYXRlUmVzdWx0SG9sZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6OnN1Y2NlZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsdXJlUmVhc29uKToKKyAgICAg
ICAgKFdlYlNvY2tldERlZmxhdGVGcmFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlZCk6CisKIDIwMTItMDItMjIgIElnb3IgT2xpdmVpcmEgIDxp
Z29yLm9Ac2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBFdmVyeSBjYWxsIHRvIFJlbmRlck9i
amVjdDo6c2V0QW5pbWF0YWJsZVN0eWxlKCkgaXRlcmF0ZXMgdGhyb3VnaCBhbGwgbV9jb21wb3Np
dGVBbmltYXRpb25zOiBwb3RlbnRpYWxseSBPKE5eMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAppbmRleCBiZjZhZDZlZGZhNWU0OGMxODg5MjU5MjA3MTNkYTE5MWM2OGVkN2FkLi5i
NDk4OTBiNmMzMjk0OWFiNzkzMGIyNmM4NmY3YWE0OTYzMGE4YmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTkzLDQgKzExOTMsOCBAQAogI2RlZmluZSBXVEZfVVNF
X1dURlVSTCAwCiAjZW5kaWYKIAorI2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEVGTCkK
KyNkZWZpbmUgV1RGX1VTRV9aTElCIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3Jt
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjY0YjgzNDJkN2ZhZWIxMzVjMTFjZmJhN2Uw
MTFjZmJmOWMxNmU2My4uM2RjYjg2NDI1ZDkyODE4YjFhMGQ0ZGM3MjlmZjUwYmZhYjc5OWU5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwNTgsNiArMjA1OCw3IEBAIElGIChFTkFCTEVfV0VC
X1NPQ0tFVFMpCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKICAgICAg
ICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlci5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDk3NGRhMWU0NGE0ZTJiMjAzMzVjYzg5
NzE1NmVhOTM4NGE4OGVlNTQuLjEyNmQ1MzhmMjUxMmM1YTU4OTZlNzI4NzExYTMyYWZmMTBiMTI2
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDM0Miw2ICs0MzQyLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA5Y2NlMDM1
YzljNDA3YjUyYjQ2YzhiYWVlNjUzNzYzNGRhNTMzNmRkLi5kYmJmN2FmMGE5NGQ0NDMzM2ViNGVl
YTVlNjE1NjNkZjM0ZGNmZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM2NzUsNiArMzY3NSw3IEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tl
dHMvV2ViU29ja2V0LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBc
CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAg
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggXAogICAgICAgICB3ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dEZyYW1lLmggXApAQCAtMzY4Niw2ICszNjg3LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1dFQl9TT0NLRVRTPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBc
CisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgXAogICAgICAg
ICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKICAgICAgICAg
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCmluZGV4IGQzMTk0OTZjMTFlNTFlM2Y5ZGYzNmEwMjNmODE3YTYxZTY1ZTkzOWQu
LjQyZWY1MDUwNDVkOWM3MmU1M2UxYzhhOWZhMTNmMDM2MTEyZTZlYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xMTk1LDYgKzExOTUsNyBAQAogICAgICAgICAn
PChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvb3RzLmd5cDpvdHMnLAogICAgICAg
ICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9zcWxpdGUvc3FsaXRlLmd5cDpzcWxp
dGUnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMv
YnVpbGRfYW5nbGUuZ3lwOnRyYW5zbGF0b3JfZ2xzbCcsCisgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL3RoaXJkX3BhcnR5L3psaWIvemxpYi5neXA6emxpYicsCiAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAogICAgICAgICAnPChsaWJqcGVn
X2d5cF9wYXRoKTpsaWJqcGVnJywKICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmRjNjBl
NDE2OTlkNTBmMGE3N2EwOWNiZmIzMjllY2YyNzNhMjViZS4uODE2ODEzNTkxYjUxODQ2ZWMxODBj
YzYwMmVlOWIzYjcxYjM5ZWI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDgyNiw2ICs0ODI2LDgg
QEAKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAg
ICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCcsCiAgICAgICAgICAgICAnd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMv
V2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZs
YXRlci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggMWU3YzZmMDYwMWJmZDAxNzY4N2RjZDY3ZDM4NzFkMzU5ODFhMTU4MS4uZDc4OGRk
MmJhOWE5NWM4ZTllYWQ1YmYyZDQ4ZGM1ZDNiMjZjODVmYiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTczNDc0LDYgKzczNDc0LDE0IEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tl
dHNcV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3
ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NmEzMTMyN2I5Yzc3NGRlMTMzMTE1MDVmMDdhMDFhMTY2MWEwMzRjOC4uN2VjZDExMmFhY2VmYTEx
MGYwZjA5OTdlOTU0Y2I1OTY0Y2FhOTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM2Nyw2ICsxMzY3LDggQEAKIAkJNEEx
RTcxOTYxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MTk0MTRFMTAxRjkwMDYy
NkY5RCAvKiBKU0hUTUxTaGFkb3dFbGVtZW50LmggKi87IH07CiAJCTRBMUU3MUE1MTRFMTA2QUMw
MDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEExRTcxQTMxNEUxMDZBQzAwNjI2RjlEIC8qIEpTU2hhZG93Um9v
dC5jcHAgKi87IH07CiAJCTRBMUU3MUE2MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MUE0
MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLzsgfTsKKwkJNEEyOTIyMkIxNEY0
NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEyOTIyMjkxNEY0NjhCQTAwMjFGNzdF
IC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovOyB9OworCQk0QTI5MjIyQzE0RjQ2OEJB
MDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEyOTIyMkExNEY0NjhCQTAwMjFGNzdFIC8qIFdl
YlNvY2tldERlZmxhdGVGcmFtZXIuaCAqLzsgfTsKIAkJNEE0QTIzNDYxNEYxRTE0NDAwNDZGQkYx
IC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTRBMjM0NTE0RjFFMTQ0MDA0NkZCRjEgLyogV2ViU29ja2V0RnJhbWUuaCAq
LzsgfTsKIAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzEx
M0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovOyB9OwogCQk0QTZFOUZD
NDEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8q
IEZvbnRGZWF0dXJlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODIzMiw2ICs4MjM0LDggQEAKIAkJNEExRTcxOTQxNEUxMDFGOTAwNjI2
RjlEIC8qIEpTSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNIVE1MU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTFFNzFBMzE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93Um9vdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jv
b3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBMjkyMjI5MTRGNDY4QkEwMDIxRjc3RSAvKiBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0QTI5MjIyQTE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNEEyMzQ1MTRGMUUxNDQwMDQ2
RkJGMSAvKiBXZWJTb2NrZXRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTb2NrZXRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZD
MTEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVyZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJl
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZlYXR1cmVWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4NTgsNiArMTQ4NjIsOCBAQAog
CQkJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywK
IAkJCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAog
CQkJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgg
Ki8sCisJCQkJNEEyOTIyMjkxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIuY3BwICovLAorCQkJCTRBMjkyMjJBMTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmggKi8sCiAJCQkJNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tl
dERlZmxhdGVyLmNwcCAqLywKIAkJCQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29j
a2V0RGVmbGF0ZXIuaCAqLywKIAkJCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8sCkBAIC0yNDI0OSw2ICsyNDI1NSw3IEBACiAJ
CQkJNTE4QTM0QzIxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QTI5MjIyQzE0RjQ2OEJBMDAyMUY3N0Ug
LyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFFMDJBQkUx
NEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0QTk1N0YwNzE0RTI0MTMwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzIwOSw2ICsyNzIx
Niw3IEBACiAJCQkJMUNBRjM0ODIwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEEzNEMxMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2Nr
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEEyOTIyMkIxNEY0NjhCQTAw
MjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEFFMDJBQkQxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTRBOTU3RjA2MTRFMjQxMkEwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhD
NTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMzZkYmI2ZjMyYzI0OTgzYzIwZjg1OGUw
ZGFjNzc2MWZiNjliMTJhNC4uN2RkODU0ZWQxNTJhMzIxZjA0OTIxMTJjZTU1YTdmMTA5ZTg5MzNl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNDc4LDYgKzQ3
OCw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKICAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICBtX3N0YXRlID0gT1BFTjsKICAgICBtX3N1YnByb3RvY29s
ID0gbV9jaGFubmVsLT5zdWJwcm90b2NvbCgpOworICAgIG1fZXh0ZW5zaW9ucyA9IG1fY2hhbm5l
bC0+ZXh0ZW5zaW9ucygpOwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZWMwNzA2ZGI0Zjg0OGY1NzU1
MWM5ODdmMjdiYzQ0ZTJkYzgwNDI2OC4uYzQwYjA5ODU3ZTZhZDcwNDhhZTFkNTBjYzkyYzY1MTcy
NGM3NGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC0xMjcsNiArMTI3LDggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICBBU1NFUlQoIW1f
c3VzcGVuZGVkKTsKICAgICBtX2hhbmRzaGFrZSA9IGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRIYW5k
c2hha2UodXJsLCBwcm90b2NvbCwgbV9kb2N1bWVudCwgbV91c2VIaXhpZTc2UHJvdG9jb2wpKTsK
ICAgICBtX2hhbmRzaGFrZS0+cmVzZXQoKTsKKyAgICBpZiAoIW1fdXNlSGl4aWU3NlByb3RvY29s
ICYmIG1fZGVmbGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkpCisgICAgICAgIG1faGFuZHNoYWtlLT5h
ZGRFeHRlbnNpb25Qcm9jZXNzb3IobV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nl
c3NvcigpKTsKICAgICBpZiAobV9pZGVudGlmaWVyKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldChtX2RvY3VtZW50LCBtX2lkZW50aWZpZXIsIHVy
bCwgbV9kb2N1bWVudC0+dXJsKCkpOwogICAgIHJlZigpOwpAQCAtMjI4LDYgKzIzMCw3IEBAIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAgICAg
bV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICAgICAgaWYgKG1fYnVmZmVy
KQogICAgICAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOyAvLyBTYXZlIG1lbW9yeS4K
KyAgICAgICAgbV9kZWZsYXRlRnJhbWVyLmRpZEZhaWwoKTsKICAgICAgICAgbV9oYXNDb250aW51
b3VzRnJhbWUgPSBmYWxzZTsKICAgICAgICAgbV9jb250aW51b3VzRnJhbWVEYXRhLmNsZWFyKCk7
CiAgICAgfQpAQCAtNjE4LDYgKzYyMSwxMiBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NGcmFtZSgpCiAgICAgQVNTRVJUKG1fYnVmZmVyIDwgZnJhbWVFbmQpOwogICAgIEFTU0VSVChm
cmFtZUVuZCA8PSBtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZSk7CiAKKyAgICBJbmZsYXRlUmVzdWx0
SG9sZGVyIGluZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIuaW5mbGF0ZShmcmFtZSk7Cisg
ICAgaWYgKCFpbmZsYXRlUmVzdWx0LnN1Y2NlZWRlZCgpKSB7CisgICAgICAgIGZhaWwoaW5mbGF0
ZVJlc3VsdC5mYWlsdXJlUmVhc29uKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CiAgICAgLy8gVmFsaWRhdGUgdGhlIGZyYW1lIGRhdGEuCiAgICAgaWYgKFdlYlNvY2tldEZyYW1l
Ojppc1Jlc2VydmVkT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKICAgICAgICAgZmFpbCgiVW5yZWNv
Z25pemVkIGZyYW1lIG9wY29kZTogIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwpA
QCAtMTAxMSw2ICsxMDIwLDEzIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdl
YlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAKICAgICBBU1NF
UlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBm
aXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lKG9w
Q29kZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgRGVmbGF0
ZVJlc3VsdEhvbGRlciBkZWZsYXRlUmVzdWx0ID0gbV9kZWZsYXRlRnJhbWVyLmRlZmxhdGUoZnJh
bWUpOworICAgIGlmICghZGVmbGF0ZVJlc3VsdC5zdWNjZWVkZWQoKSkgeworICAgICAgICBmYWls
KGRlZmxhdGVSZXN1bHQuZmFpbHVyZVJlYXNvbigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CiAgICAgbWFrZUZyYW1lRGF0YShm
cmFtZSwgZnJhbWVEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaAppbmRleCA0YmIyOGM5ZjJiMDVhZjM0OTk3YmUwN2E2MmYxMmJjNGU5ODM1ODE4
Li42ZDFmZWJiY2EwNmUxZWQ3ZDVjZWUxNTBkODc2MGFmNzgwNDYyMTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNs
dWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTIz
MSw2ICsyMzIsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxGaWxlUmVhZGVyTG9hZGVyPiBtX2Js
b2JMb2FkZXI7CiAgICAgQmxvYkxvYWRlclN0YXR1cyBtX2Jsb2JMb2FkZXJTdGF0dXM7CiAjZW5k
aWYKKworICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgbV9kZWZsYXRlRnJhbWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5ZDM1MzZiYWIzZWI5
MDhjY2FjNzNmNDhiY2E4MzdmNzVjNWVhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTAsMCArMSwyNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5j
bHVkZSAiV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lPiBjcmVhdGUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUo
ZnJhbWVyKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZSgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24o
KSBPVkVSUklERSB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworcHJpdmF0ZToKKyAgICBX
ZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOwor
CisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3Bv
bnNlUHJvY2Vzc2VkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9OworCisvLyBGWElN
RTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4K
K1dlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKKyAgICA6IFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCisgICAgLCBtX2ZyYW1l
cihmcmFtZXIpCisgICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQoreworICAgIEFTU0VS
VChtX2ZyYW1lcik7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6
OmhhbmRzaGFrZVN0cmluZygpCit7CisgICAgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IC8vIE5v
IHBhcmFtZXRlcgorfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJv
Y2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBzZXJ2ZXJQYXJhbWV0
ZXJzKQoreworI2lmIFVTRShaTElCKQorICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7Cisg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFt
ZSByZXNwb25zZSI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9yZXNwb25z
ZVByb2Nlc3NlZCA9IHRydWU7CisKKyAgICBpbnQgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzID0gMDsK
KyAgICBpbnQgd2luZG93Qml0cyA9IDE1OworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpj
b25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5k
b3dfYml0cyIpOworICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5lbmQoKSkg
eworICAgICAgICB3aW5kb3dCaXRzID0gcGFyYW1ldGVyLT5zZWNvbmQudG9JbnQoKTsKKyAgICAg
ICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgeworICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFt
ZXRlciI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZXhw
ZWN0ZWROdW1QYXJhbWV0ZXJzKys7CisgICAgfQorCisgICAgV2ViU29ja2V0RGVmbGF0ZXI6OkNv
bnRleHRUYWtlT3Zlck1vZGUgbW9kZSA9IFdlYlNvY2tldERlZmxhdGVyOjpUYWtlT3ZlckNvbnRl
eHQ7CisgICAgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5maW5kKCJub19jb250ZXh0X3Rh
a2VvdmVyIik7CisgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7
CisgICAgICAgIGlmICghcGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIg
cGFyYW1ldGVyIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0OworICAgICAg
ICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWROdW1Q
YXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7CisgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyIjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fZnJhbWVyLT5lbmFibGVEZWZs
YXRlKHdpbmRvd0JpdHMsIG1vZGUpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRGVmbGF0
ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVy
KiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVl
KQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0RlZmxhdGVSZXN1bHRIb2xkZXI6On5E
ZWZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVzZXREZWZsYXRlQ29udGV4
dCgpOworfQorCit2b2lkIERlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBm
YWlsdXJlUmVhc29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJl
UmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30KKworSW5mbGF0ZVJlc3VsdEhvbGRlcjo6SW5mbGF0
ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2Zy
YW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2Zy
YW1lcik7Cit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKCkK
K3sKKyAgICBtX2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit2b2lkIEluZmxh
dGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAg
IG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNv
bjsKK30KKworV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigp
CisgICAgOiBtX2VuYWJsZWQoZmFsc2UpCit7Cit9CisKK1Bhc3NPd25QdHI8V2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Q
cm9jZXNzb3IoKQoreworICAgIHJldHVybiBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6
OmNyZWF0ZSh0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZs
YXRlKCkgY29uc3QKK3sKKyNpZiBVU0UoWkxJQikKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBVU0UoWkxJQikKK3ZvaWQgV2ViU29j
a2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0
RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSkKK3sKKyAgICBtX2RlZmxhdGVyID0g
V2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2luZmxh
dGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAgIGlmICghbV9kZWZsYXRlciB8
fCAhbV9pbmZsYXRlcikgeworICAgICAgICBtX2RlZmxhdGVyLmNsZWFyKCk7CisgICAgICAgIG1f
aW5mbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIW1fZGVm
bGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6ZSgpKSB7CisgICAg
ICAgIG1fZGVmbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgbV9pbmZsYXRlci5jbGVhcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIG1fZW5hYmxlZCA9IHRydWU7Cit9CisjZW5kaWYKKwor
RGVmbGF0ZVJlc3VsdEhvbGRlciBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNv
Y2tldEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBEZWZsYXRlUmVzdWx0SG9s
ZGVyIHJlc3VsdCh0aGlzKTsKKyAgICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6
OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMo
ZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlz
aCgpKSB7CisgICAgICAgIHJlc3VsdC5mYWlsKCJGYWlsZWQgdG8gY29tcHJlc3MgZnJhbWUiKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZnJhbWUuY29tcHJlc3MgPSB0cnVl
OworICAgIGZyYW1lLnBheWxvYWQgPSBtX2RlZmxhdGVyLT5kYXRhKCk7CisgICAgZnJhbWUucGF5
bG9hZExlbmd0aCA9IG1fZGVmbGF0ZXItPnNpemUoKTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vs
c2UKKyAgICByZXR1cm4gRGVmbGF0ZVJlc3VsdEhvbGRlcih0aGlzKTsKKyNlbmRpZgorfQorCit2
b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQoKQoreworI2lm
IFVTRShaTElCKQorICAgIGlmIChtX2RlZmxhdGVyKQorICAgICAgICBtX2RlZmxhdGVyLT5yZXNl
dCgpOworI2VuZGlmCit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXIgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCit7CisjaWYgVVNFKFpMSUIpCisg
ICAgSW5mbGF0ZVJlc3VsdEhvbGRlciByZXN1bHQodGhpcyk7CisgICAgaWYgKCFmcmFtZS5jb21w
cmVzcykKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoIWVuYWJsZWQoKSB8fCAhV2Vi
U29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpKSB7CisgICAgICAg
IHJlc3VsdC5mYWlsKCJSZWNlaXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUiKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKCFtX2luZmxhdGVyLT5hZGRCeXRl
cyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9pbmZsYXRlci0+Zmlu
aXNoKCkpIHsKKyAgICAgICAgcmVzdWx0LmZhaWwoIkZhaWxlZCB0byBkZWNvbXByZXNzIGZyYW1l
Iik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGZyYW1lLmNvbXByZXNzID0g
ZmFsc2U7CisgICAgZnJhbWUucGF5bG9hZCA9IG1faW5mbGF0ZXItPmRhdGEoKTsKKyAgICBmcmFt
ZS5wYXlsb2FkTGVuZ3RoID0gbV9pbmZsYXRlci0+c2l6ZSgpOworICAgIHJldHVybiByZXN1bHQ7
CisjZWxzZQorICAgIHJldHVybiBJbmZsYXRlUmVzdWx0SG9sZGVyKHRoaXMpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXRJbmZsYXRlQ29udGV4dCgpCit7
CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1faW5mbGF0ZXIpCisgICAgICAgIG1faW5mbGF0ZXIt
PnJlc2V0KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkaWRG
YWlsKCkKK3sKKyAgICByZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgcmVzZXRJbmZsYXRlQ29u
dGV4dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVGcmFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZUZyYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlOGJhODM5MDNmNWEyYjZkZTA3ODA3MmMzZmQ1
NzI3ZjcyZTdiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXJfaAorI2RlZmluZSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyX2gKKwor
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2lmIFVTRShaTElCKQorI2luY2x1ZGUgIldlYlNv
Y2tldERlZmxhdGVyLmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdlYlNvY2tldERlZmxhdGVGcmFtZXI7CisKK2NsYXNzIERlZmxhdGVSZXN1bHRI
b2xkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IERlZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29j
a2V0RGVmbGF0ZUZyYW1lciopOworICAgIH5EZWZsYXRlUmVzdWx0SG9sZGVyKCk7CisKKyAgICBi
b29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VlZGVkOyB9CisgICAgU3RyaW5n
IGZhaWx1cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworICAg
IHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOworCitwcml2YXRlOgorICAg
IFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQ7
CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK2NsYXNzIEluZmxhdGVSZXN1bHRI
b2xkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29j
a2V0RGVmbGF0ZUZyYW1lciopOworICAgIH5JbmZsYXRlUmVzdWx0SG9sZGVyKCk7CisKKyAgICBi
b29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VlZGVkOyB9CisgICAgU3RyaW5n
IGZhaWx1cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworICAg
IHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOworCitwcml2YXRlOgorICAg
IFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQ7
CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK2NsYXNzIFdlYlNvY2tldERlZmxh
dGVGcmFtZXIgeworcHVibGljOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIoKTsKKworICAg
IFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBjcmVhdGVFeHRlbnNpb25Q
cm9jZXNzb3IoKTsKKworICAgIGJvb2wgY2FuRGVmbGF0ZSgpIGNvbnN0OworICAgIGJvb2wgZW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorCisgICAgRGVmbGF0ZVJlc3VsdEhv
bGRlciBkZWZsYXRlKFdlYlNvY2tldEZyYW1lJik7CisgICAgdm9pZCByZXNldERlZmxhdGVDb250
ZXh0KCk7CisgICAgSW5mbGF0ZVJlc3VsdEhvbGRlciBpbmZsYXRlKFdlYlNvY2tldEZyYW1lJik7
CisgICAgdm9pZCByZXNldEluZmxhdGVDb250ZXh0KCk7CisKKyAgICB2b2lkIGRpZEZhaWwoKTsK
KworI2lmIFVTRShaTElCKQorICAgIHZvaWQgZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywg
V2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUpOworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgYm9vbCBtX2VuYWJsZWQ7CisjaWYgVVNFKFpMSUIpCisgICAgT3duUHRyPFdlYlNv
Y2tldERlZmxhdGVyPiBtX2RlZmxhdGVyOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4g
bV9pbmZsYXRlcjsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NL
RVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcl9oCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTdjMDVh
NjQ5MjhkYjZiZDcyZDVmNGM4MmIxMDZkMWFmNGQ5NTBmYi4uNzQwNzk1MmVkMmNlMTZlZWQ3Yjc4
Zjg4MTNhYTMwZDFmNDIzZTlhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDEyLTAyLTIzICBL
ZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAorICAgICAgICBBZGRpbmcg
V2ViU29ja2V0IHBlci1mcmFtZSBERUZMQVRFIGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MjIKKworICAgICAgICBBZGRlZCB0ZXN0
cyBmb3IgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLiBBbHNvIHVwZGF0ZWQgc29t
ZQorICAgICAgICB0ZXN0cyB0byBmb2xsb3cgdGhlIGNoYW5nZS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRy
b2wtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAg
KHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9k
ZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0
LW9ub2ZmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5
OiBBZGRlZC4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAg
ICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZS1wYXJhbWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgIChfZ2V0
X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3Nvcik6CisgICAgICAgICh3ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEp
OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZh
aWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5OgorICAgICAgICAo
X3JldHJpZXZlX2ZyYW1lKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisK
KzIwMTItMDItMjMgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCiAg
ICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGUgZm9y
IGZhc3QvY3NzL2ZvbnQtZmFjZS1kZWZhdWx0LWZvbnQuaHRtbAogCiAgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvZmFzdC9jc3MvZm9udC1mYWNlLWRlZmF1bHQtZm9udC1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29u
dHJvbC1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQxZWM0NzNkNmJlMjFjMWMwNjAx
MDI5ZmZjNWZhMzljY2JmMzgyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhw
ZWN0ZWQgY29tcHJlc3NlZCBmcmFtZQorVGVzdCB3aGV0aGVyIGEgY29tcHJlc3NlZCBjb250cm9s
IGZyYW1lIGlzIHJlamVjdGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25vcGVu
KCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjIwODhjNzk5YmU0MTFjMTIyODEyYTUwOTQyZmE4Mzk4MzgwMDlhNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0
aGVyIGEgY29tcHJlc3NlZCBjb250cm9sIGZyYW1lIGlzIHJlamVjdGVkIik7CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2
V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQo
IndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250
cm9sLWZyYW1lIik7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQor
eworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAg
IHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVz
c2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAg
ICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50
OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGUxMmU5YzQ1MjJiMzE4NTg3ODQ2ZmIxNjAxNjE5NzlhOGIzYjJhYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y29tcHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDQ4IEBACisjIENvcHly
aWdodCAyMDEyLCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQoraW1wb3J0IHpsaWIKKworCitkZWYgd2ViX3NvY2tl
dF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKAorICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwg
LXpsaWIuTUFYX1dCSVRTKQorICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzLmNvbXBy
ZXNzKCdjbG9zZSBtZXNzYWdlJykKKyAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgY29tcHJlc3NlZF9tZXNzYWdlID0gY29tcHJl
c3NlZF9tZXNzYWdlWzotNF0KKyAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigKKyAg
ICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ0xPU0UsIHBheWxvYWRfbGVuZ3RoPWxlbihjb21w
cmVzc2VkX21lc3NhZ2UpLAorICAgICAgICBmaW49MSwgcnN2MT0xLCByc3YyPTAsIHJzdjM9MCwg
bWFzaz1GYWxzZSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaGVhZGVyICsgY29tcHJl
c3NlZF9tZXNzYWdlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1jb21wLWJpdC1vbm9mZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYyZmVmM2RlNmYwZmU0
MDgwZWEyZDM1MjNmMjk1YjQzODYyM2YzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1v
bm9mZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCBjb21wcmVzc2lvbiBlbmFi
bGVkL2Rpc2FibGVkIGZyYW1lIHJlY2VpdmluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitTZW5kaW5nIG1lc3NhZ2U6ICJIZWxsbyIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnSGVsbG8n
CitTZW5kaW5nIG1lc3NhZ2U6ICJEaXNhYmxlQ29tcHJlc3Npb24iCitQQVNTIGV2ZW50LmRhdGEg
aXMgJ0Rpc2FibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVzc2FnZTogIldvcmxkIgorUEFTUyBl
dmVudC5kYXRhIGlzICdXb3JsZCcKK1NlbmRpbmcgbWVzc2FnZTogIkVuYWJsZUNvbXByZXNzaW9u
IgorUEFTUyBldmVudC5kYXRhIGlzICdFbmFibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVzc2Fn
ZTogIkdvb2RieWUiCitQQVNTIGV2ZW50LmRhdGEgaXMgJ0dvb2RieWUnCitvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAt
Yml0LW9ub2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzJhYzU3
YmI4ZjhiYjkwNmZhYTQyYjQzMzRiZjJmYzI3OGE2NzY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNv
bXAtYml0LW9ub2ZmLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIlRlc3QgY29tcHJlc3Npb24gZW5hYmxlZC9kaXNhYmxlZCBmcmFtZSByZWNlaXZpbmcu
Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciBjbG9z
ZUV2ZW50OwordmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFyIG1lc3NhZ2VzID0gWwor
ICAgICJIZWxsbyIsCisgICAgIkRpc2FibGVDb21wcmVzc2lvbiIsIC8vIFRoaXMgZGlzYWJsZXMg
Y29tcHJlc3Npb24KKyAgICAiV29ybGQiLAorICAgICJFbmFibGVDb21wcmVzc2lvbiIsIC8vIFRo
aXMgZW5hYmxlcyBjb21wcmVzc2lvbgorICAgICJHb29kYnllIgorXTsKKword3MgPSBuZXcgV2Vi
U29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUiKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgbWVzc2FnZUlu
ZGV4ID0gMDsKKyAgICBkZWJ1ZygiU2VuZGluZyBtZXNzYWdlOiBcIiIgKyBtZXNzYWdlc1ttZXNz
YWdlSW5kZXhdICsgIlwiIik7CisgICAgd3Muc2VuZChtZXNzYWdlc1ttZXNzYWdlSW5kZXhdKTsK
K307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHNob3VsZEJlKCJl
dmVudC5kYXRhIiwgIiciICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICInIik7CisgICAgaWYg
KG1lc3NhZ2VJbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgd3MuY2xvc2Uo
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgbWVzc2FnZUluZGV4ICs9IDE7CisgICAgICAgIGRlYnVn
KCJTZW5kaW5nIG1lc3NhZ2U6IFwiIiArIG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0gKyAiXCIiKTsK
KyAgICAgICAgd3Muc2VuZChtZXNzYWdlc1ttZXNzYWdlSW5kZXhdKTsKKyAgICB9Cit9OworCit3
cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMg
Y2FsbGVkLiIpOworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZVRydWUoImNs
b3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1w
YXJhbWV0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44M2EyNGQyOGNjMjMzYjdhNWY2MzQ5M2I5NWQwZjgxYmE3ZjM0ZGIyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI4IEBACitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZGVmbGF0ZS1mcmFt
ZSBwYXJhbWV0ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93
X2JpdHMgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIGludmFsaWQgbWF4X3dp
bmRvd19iaXRzIHBhcmFtZXRlcgorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCBpbnZhbGlkIG5v
X2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVu
ZXhwZWN0ZWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0ZXIKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQg
cmVqZWN0cyBpbnZhbGlkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVycy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCitUZXN0aW5nIHBhcmFtZXRlcjogIngtZm9vIgorb25jbG9zZSgpIHdh
cyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3RpbmcgcGFy
YW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTciCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1Mg
Y2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJtYXhfd2lu
ZG93X2JpdHM9MTYiCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXND
bGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJub19jb250ZXh0X3Rha2VvdmVyPWZv
byIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZh
bHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz04OyBub19jb250ZXh0X3Rh
a2VvdmVyOyB4LWZvbyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxp
ZC1wYXJhbWV0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTVmYmQwNmQyMDJhM2VjYzgwMmFlMjRhNzc5
ZWY2NGI5MzlhOWMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwK
QEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhl
ciBXZWJTb2NrZXQgcmVqZWN0cyBpbnZhbGlkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVycy4iKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZl
bnQ7CisKK3ZhciB0ZXN0Q2FzZSA9IFsKKyAgICAieC1mb28iLAorICAgICJtYXhfd2luZG93X2Jp
dHM9NyIsCisgICAgIm1heF93aW5kb3dfYml0cz0xNiIsCisgICAgIm5vX2NvbnRleHRfdGFrZW92
ZXI9Zm9vIiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTg7IG5vX2NvbnRleHRfdGFrZW92ZXI7IHgt
Zm9vIgorXTsKKworZnVuY3Rpb24gZG9UZXN0KGluZGV4KQoreworICAgIHZhciBwYXJhbWV0ZXIg
PSB0ZXN0Q2FzZVtpbmRleF07CisgICAgdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXI/IiArIGVu
Y29kZVVSSShwYXJhbWV0ZXIpOworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKwor
ICAgIGRlYnVnKCJUZXN0aW5nIHBhcmFtZXRlcjogXCIiICsgcGFyYW1ldGVyICsgIlwiIik7CisK
KyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBt
ZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2Fz
IGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIH07CisKKyAg
ICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWJ1Zygib25j
bG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICAg
ICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAoaW5k
ZXggPT09IHRlc3RDYXNlLmxlbmd0aCAtIDEpCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9UZXN0KGluZGV4ICsgMSk7CisgICAgfTsKK30K
KworZG9UZXN0KDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFt
ZXRlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThjYzI1YzhkN2NjYzFhNjc2YWQxZWY2ODRkNjMwOTkx
MjhmZjAwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlcl93c2gucHkKQEAg
LTAsMCArMSw1NiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCB1cmxsaWIKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5oeWJpIGltcG9ydCBjb21wdXRlX2FjY2VwdAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICByZXNvdXJjZXMgPSByZXF1ZXN0LndzX3Jlc291
cmNlLnNwbGl0KCc/JywgMSkKKyAgICBwYXJhbWV0ZXJzID0gTm9uZQorICAgIGlmIGxlbihyZXNv
dXJjZXMpID09IDI6CisgICAgICAgIHBhcmFtZXRlcnMgPSB1cmxsaWIudW5xdW90ZShyZXNvdXJj
ZXNbMV0pCisKKyAgICBtZXNzYWdlID0gJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xz
XHJcbicKKyAgICBtZXNzYWdlICs9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworICAgIG1lc3Nh
Z2UgKz0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgIG1lc3NhZ2UgKz0gJ1NlYy1XZWJT
b2NrZXQtQWNjZXB0OiAlc1xyXG4nICUgY29tcHV0ZV9hY2NlcHQocmVxdWVzdC5oZWFkZXJzX2lu
WydTZWMtV2ViU29ja2V0LUtleSddKVswXQorICAgIG1lc3NhZ2UgKz0gJ1NlYy1XZWJTb2NrZXQt
RXh0ZW5zaW9uczogeC13ZWJraXQtZGVmbGF0ZS1mcmFtZScKKyAgICBpZiBwYXJhbWV0ZXJzOgor
ICAgICAgICBtZXNzYWdlICs9ICc7ICVzXHJcbicgJSBwYXJhbWV0ZXJzCisgICAgZWxzZToKKyAg
ICAgICAgbWVzc2FnZSArPSAnXHJcbicKKyAgICBtZXNzYWdlICs9ICdcclxuJworICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlKQorICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVk
QnlVc2VyRXhjZXB0aW9uKCdBYm9ydCB0aGUgY29ubmVjdGlvbicpICMgUHJldmVudHMgcHl3ZWJz
b2NrZXQgZnJvbSBzZW5kaW5nIGl0cyBvd24gaGFuZHNoYWtlIG1lc3NhZ2UuCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUt
cGFyYW1ldGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcyNjNmZTM5NGE0NjI0YTE4NGMzZGIyZjQ3Mjg5NDQ0OWQwZDQwNGUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxh
dGUtZnJhbWUtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitUZXN0IFdl
YlNvY2tldCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitUZXN0aW5nIHF1ZXJ5OiAibWF4X3dpbmRvd19iaXRzPTgiCitQQVNTIHdzLmV4dGVu
c2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMgdHJ1ZQorUEFT
UyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbWF4X3dpbmRvd19iaXRzPTgnKSAhPSAtMSBpcyB0cnVl
CitQQVNTIGV2ZW50LmRhdGEgaXMgZmlyc3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vj
b25kTWVzc2FnZQorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgdHJ1ZQorVGVzdGluZyBxdWVyeTogIm5vX2NvbnRleHRfdGFrZW92ZXIiCitQQVNTIHdz
LmV4dGVuc2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMgdHJ1
ZQorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbm9fY29udGV4dF90YWtlb3ZlcicpICE9IC0x
IGlzIHRydWUKK1BBU1MgZXZlbnQuZGF0YSBpcyBmaXJzdE1lc3NhZ2UKK1BBU1MgZXZlbnQuZGF0
YSBpcyBzZWNvbmRNZXNzYWdlCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVu
dC53YXNDbGVhbiBpcyB0cnVlCitUZXN0aW5nIHF1ZXJ5OiAibWF4X3dpbmRvd19iaXRzPTgmbm9f
Y29udGV4dF90YWtlb3ZlciIKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gtd2Via2l0LWRl
ZmxhdGUtZnJhbWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNoKCdt
YXhfd2luZG93X2JpdHM9OCcpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFy
Y2goJ25vX2NvbnRleHRfdGFrZW92ZXInKSAhPSAtMSBpcyB0cnVlCitQQVNTIGV2ZW50LmRhdGEg
aXMgZmlyc3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2FnZQorb25jbG9z
ZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1wYXJhbWV0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yjc3ZTQ3MTgx
N2UyMzQ3Y2ZiODM2ZmQ5ZTNhYWEzZWZiODVjNmYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFt
ZXRlci5odG1sCkBAIC0wLDAgKzEsOTAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
ZXN0IFdlYlNvY2tldCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4iKTsKKword2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgd3M7Cit2
YXIgbWVzc2FnZUluZGV4OworCit2YXIgcXVlcmllcyA9IFsKKyAgICAibWF4X3dpbmRvd19iaXRz
PTgiLAorICAgICJub19jb250ZXh0X3Rha2VvdmVyIiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTgm
bm9fY29udGV4dF90YWtlb3ZlciIKK107CisKKy8vIFRoZSBmaXJzdCBtZXNzYWdlIGNvbnNpc3Rz
IG9mIGEgbG90IG9mICdiJyBhbmQgYSBmZXcgJ2EnIGF0IHRoZSBoZWFkIGFuZAorLy8gdGhlIHRh
aWwsIHdoaWxlIHRoZSBzZWNvbmQgb25lIGNvbnNpc3RzIG9mICdhJy4KK3ZhciBmaXJzdE1lc3Nh
Z2UgPSAnJzsKK3ZhciBzZWNvbmRNZXNzYWdlID0gJyc7Citmb3IgKHZhciBpID0gMDsgaSA8IDE2
OyArK2kpIHsKKyAgICBmaXJzdE1lc3NhZ2UgKz0gJ2EnOworICAgIHNlY29uZE1lc3NhZ2UgKz0g
J2EnOworfQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDI0OyArK2kpIHsKKyAgICBmaXJzdE1lc3Nh
Z2UgKz0gJ2InOworICAgIHNlY29uZE1lc3NhZ2UgKz0gJ2EnOworfQorZm9yICh2YXIgaSA9IDA7
IGkgPCAxNjsgKytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9ICdhJzsKKyAgICBzZWNvbmRNZXNz
YWdlICs9ICdhJzsKK30KKworZnVuY3Rpb24gZG9UZXN0KHF1ZXJ5SW5kZXgpCit7CisgICAgdmFy
IHF1ZXJ5ID0gcXVlcmllc1txdWVyeUluZGV4XTsKKyAgICBkZWJ1ZygiVGVzdGluZyBxdWVyeTog
XCIiICsgcXVlcnkgKyAiXCIiKTsKKworICAgIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4
MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lPyIgKyBxdWVyeTsKKyAgICB3cyA9
IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBtZXNzYWdlSW5kZXggPSAwOworCisgICAgd3Mub25v
cGVuID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBzaG91bGRCZVRydWUoIndzLmV4
dGVuc2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEiKTsKKyAgICAg
ICAgcGFyYW1ldGVycyA9IHF1ZXJ5LnNwbGl0KCcmJyk7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
d3MuZXh0ZW5zaW9ucy5zZWFyY2goJyIgKyBwYXJhbWV0ZXJzW2ldICsgIicpICE9IC0xIik7Cisg
ICAgICAgIHdzLnNlbmQoZmlyc3RNZXNzYWdlKTsKKyAgICB9OworCisgICAgd3Mub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAobWVzc2FnZUluZGV4ID09PSAw
KSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICJmaXJzdE1lc3NhZ2UiKTsK
KyAgICAgICAgICAgIG1lc3NhZ2VJbmRleCArPSAxCisgICAgICAgICAgICB3cy5zZW5kKHNlY29u
ZE1lc3NhZ2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50
LmRhdGEiLCAic2Vjb25kTWVzc2FnZSIpOworICAgICAgICAgICAgd3MuY2xvc2UoKTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZl
bnQgPSBldmVudDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7
CisgICAgICAgIGlmIChxdWVyeUluZGV4ID09PSBxdWVyaWVzLmxlbmd0aCAtIDEpCisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9UZXN0KHF1
ZXJ5SW5kZXggKyAxKTsKKyAgICB9OworfQorCitkb1Rlc3QoMCk7CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lX3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44M2I3ODM4NTUwNDI3NDgzYTkzMjZjZThmYTYwYzE3OTgxYWRiZDUxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDgyIEBACisjIENvcHlyaWdodCAy
MDEyLCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworaW1wb3J0IHVybHBhcnNlCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGlt
cG9ydCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0
LmV4dGVuc2lvbnMgaW1wb3J0IEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuY29tbW9uIGltcG9ydCBFeHRlbnNpb25QYXJhbWV0ZXIKKworCitfR09PREJZ
RV9NRVNTQUdFID0gdSdHb29kYnllJworX0VOQUJMRV9NRVNTQUdFID0gdSdFbmFibGVDb21wcmVz
c2lvbicKK19ESVNBQkxFX01FU1NBR0UgPSB1J0Rpc2FibGVDb21wcmVzc2lvbicKKworCitkZWYg
X2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVxdWVzdCk6CisgICAgZm9y
IGV4dGVuc2lvbl9wcm9jZXNzb3IgaW4gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yczoK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShleHRlbnNpb25fcHJvY2Vzc29yLCBEZWZsYXRlRnJhbWVF
eHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbl9wcm9jZXNz
b3IKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KToKKyAgICBwcm9jZXNzb3IgPSBfZ2V0X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9u
X3Byb2Nlc3NvcihyZXF1ZXN0KQorICAgIGlmIG5vdCBwcm9jZXNzb3I6CisgICAgICAgIHJldHVy
bgorICAgIHIgPSByZXF1ZXN0LndzX3Jlc291cmNlLnNwbGl0KCc/JywgMSkKKyAgICBpZiBsZW4o
cikgPT0gMToKKyAgICAgICAgcmV0dXJuCisgICAgcGFyYW1ldGVycyA9IHVybHBhcnNlLnBhcnNl
X3FzKHJbMV0sIGtlZXBfYmxhbmtfdmFsdWVzPVRydWUpCisgICAgaWYgJ21heF93aW5kb3dfYml0
cycgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgd2luZG93X2JpdHMgPSBpbnQocGFyYW1ldGVyc1sn
bWF4X3dpbmRvd19iaXRzJ11bMF0pCisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfd2lu
ZG93X2JpdHMod2luZG93X2JpdHMpCisgICAgaWYgJ25vX2NvbnRleHRfdGFrZW92ZXInIGluIHBh
cmFtZXRlcnM6CisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90YWtl
b3ZlcihUcnVlKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgcHJvY2Vzc29yID0gX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVx
dWVzdCkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0u
cmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6CisgICAgICAgICAg
ICBpZiBwcm9jZXNzb3I6CisgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBfRU5BQkxFX01FU1NB
R0U6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5lbmFibGVfb3V0Z29pbmdfY29tcHJl
c3Npb24oKQorICAgICAgICAgICAgICAgIGVsaWYgbGluZSA9PSBfRElTQUJMRV9NRVNTQUdFOgor
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuZGlzYWJsZV9vdXRnb2luZ19jb21wcmVzc2lv
bigpCisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmlu
YXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAg
ICAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVxdWVzdC53
c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1m
YWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCBhZGYwNmI2NTFkNmI0
NzE1YjRhMWI5N2M4N2M5NjAyMzNhYWUxZmEwLi5jYzk5YWYwZGQxNjVkNTNmNDA2NzBjNWM1ODZh
ZWM5OWVmYjY4M2NhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hh
bmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBTZWMtV2ViU29ja2V0
LUV4dGVuc2lvbnMgaGVhZGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQg
ZXh0ZW5zaW9uOiB4LWZvbwogVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMg
aWYgdGhlIHNlcnZlciBzZW5kcyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyLgogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weSBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5
CmluZGV4IGRhYTQ0MDQ3MWFmODNhYjI2Mjg2NzUxYzNlMTg4ODJmNDg0ZGI3OGMuLjc5MjAzNGNm
ZTNiNzBlMDQ4M2I1ZGU5NWU0ZTE3MDFkOTc3ODJjYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxl
LWJsb2Jfd3NoLnB5CkBAIC0yLDYgKzIsMTQgQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IGNvbW1vbgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKIAogCitkZWYgX3Jl
dHJpZXZlX2ZyYW1lKHN0cmVhbSk6CisgICAgIyBGSVhNRTogVXNlIGJldHRlciBBUEkuCisgICAg
ZnJhbWUgPSBzdHJlYW0uX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKyAgICBmb3Ig
ZnJhbWVfZmlsdGVyIGluIHN0cmVhbS5fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzOgor
ICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQorICAgIHJldHVybiBmcmFtZQorCisK
IGRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKICAgICBwYXNzICMg
QWx3YXlzIGFjY2VwdC4KIApAQCAtMTAsMTIgKzE4LDExIEBAIGRlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6CiAgICAgZXhwZWN0ZWRfbWVzc2FnZXMgPSBbJ0hlbGxvLCB3b3Js
ZCEnXQogCiAgICAgZm9yIHRlc3RfbnVtYmVyLCBleHBlY3RlZF9tZXNzYWdlIGluIGVudW1lcmF0
ZShleHBlY3RlZF9tZXNzYWdlcyk6Ci0gICAgICAgICMgRklYTUU6IFVzZSBiZXR0ZXIgQVBJLgot
ICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZpbmFsLCB1bnVzZWRfcmVzZXJ2ZWQxLCB1bnVzZWRf
cmVzZXJ2ZWQyLCB1bnVzZWRfcmVzZXJ2ZWQzID0gcmVxdWVzdC53c19zdHJlYW0uX3JlY2VpdmVf
ZnJhbWUoKQotICAgICAgICBpZiBvcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9CSU5BUlkgYW5kIHBh
eWxvYWQgPT0gZXhwZWN0ZWRfbWVzc2FnZSBhbmQgZmluYWw6CisgICAgICAgIGZyYW1lID0gX3Jl
dHJpZXZlX2ZyYW1lKHJlcXVlc3Qud3Nfc3RyZWFtKQorICAgICAgICBpZiBmcmFtZS5vcGNvZGUg
PT0gY29tbW9uLk9QQ09ERV9CSU5BUlkgYW5kIGZyYW1lLnBheWxvYWQgPT0gZXhwZWN0ZWRfbWVz
c2FnZSBhbmQgZnJhbWUuZmluOgogICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVx
dWVzdCwgJ1BBU1M6IE1lc3NhZ2UgIyVkLicgJSB0ZXN0X251bWJlcikKICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdGQUlMOiBNZXNzYWdl
ICMlZDogUmVjZWl2ZWQgdW5leHBlY3RlZCBmcmFtZTogb3Bjb2RlID0gJXIsIHBheWxvYWQgPSAl
ciwgZmluYWwgPSAlcicgJSAodGVzdF9udW1iZXIsIG9wY29kZSwgcGF5bG9hZCwgZmluYWwpKQor
ICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IE1lc3NhZ2Ug
IyVkOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBvcGNvZGUgPSAlciwgcGF5bG9hZCA9ICVy
LCBmaW5hbCA9ICVyJyAlICh0ZXN0X251bWJlciwgZnJhbWUub3Bjb2RlLCBmcmFtZS5wYXlsb2Fk
LCBmcmFtZS5maW4pKQogCiAKIGRlZiBhbGxfZGlzdGluY3RfYnl0ZXMoKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128575</attachid>
            <date>2012-02-23 15:45:49 -0800</date>
            <delta_ts>2012-02-29 03:14:28 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77522-20120224084546.patch</filename>
            <type>text/plain</type>
            <size>56579</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjM4OGNiYThmZGJlMmFmMTFkMjNjZjZhMjkxMmFkMmM0MzNlOGYzLi44NjhlN2ViM2ZlNThkYzdm
ZWFhMDU4ODRlYWIzMjk2MTA4NWZhMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yMyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wMi0y
MyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgSW50ZXJw
cmV0ZXI6OmdldFN0YWNrVHJhY2UgYmUgYWJsZSB0byBnZW5lcmF0ZSB0aGUgbGluZSBudW1iZXIg
Zm9yIHRoZSB0b3AgY2FsbGZyYW1lIGlmIG5vbmUgaXMgcHJvdmlkZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0
NTk5YjQwZjFjMDgxOWRiMDcxYjY2YjUwN2JkNjdkN2UzYTNjOGE0Li5hN2JjNDE5ZTA3ZGFjMTU3
NjgyOTI2ZjRlOWEzNmNkYjJiMjFlM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIw
MTItMDItMjMgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEFkZGluZyBXZWJTb2NrZXQgcGVyLWZyYW1lIERFRkxBVEUgZXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUyMgorCisgICAgICAg
IEFkZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyIGNsYXNzIHdoaWNoIGhhbmRsZXMgZGVmbGF0ZS1m
cmFtZSBleHRlbnNpb24uCisgICAgICAgIFRoaXMgY2xhc3MgZW5jYXBzdWxhdGVzIFdlYlNvY2tl
dERlZmxhdGVyIGFuZCBXZWJTb2NrZXRJbmZsYXRlciBjbGFzc2VzLAorICAgICAgICB3aGljaCBk
ZXBlbmQgb24gemxpYiwgc28gdGhhdCBXZWJTb2NrZXRDaGFubmVsIGlzIG5vdCBuZWNlc3Nhcnkg
dG8gYXdhcmUKKyAgICAgICAgemxpYiBkZXBlbmRlbmN5LgorCisgICAgICAgIFRoaXMgaXMgdGhl
IHNlY29uZCBwYXRjaCB0byBsYW5kLiBUaGUgcHJldmlvdXMgcGF0Y2ggYnJva2UgQ2hyb21pdW0g
V2luCisgICAgICAgIHJlbGVhc2UgYnVpbGQuIHIxMDg2MDAgc2hvdWxkIGZpeCB0aGUgYnVpbGQg
ZmFpbHVyZS4gSSBhbHNvIGFkZGVkCisgICAgICAgIHpsaWIgZW50cnkgdG8gfGV4cG9ydF9kZXBl
bmRlbnRfc2V0dGluZ3N8IG9mIHx3ZWJjb3JlX3ByZXJlcXVpc2l0ZXN8CisgICAgICAgIHRhcmdl
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICBUZXN0czog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZs
YXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUtcGFyYW1ldGVyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLihjcHB8aCkKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBBZGRl
ZCB6bGliIGRlcGVuZGVuY3kuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6IEFkZGVkIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuKGNwcHxoKQorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0
KTogU2V0IG1fZXh0ZW5zaW9ucy4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCk6IEFk
ZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbiBwcm9jZXNzb3IgdG8gV2ViU29ja2V0SGFuc2hha2Ug
aWYgZGVmbGF0ZSBjYW4gdXNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZmFpbCk6IENhbGwgbV9kZWZsYXRlRnJhbWVyLmRpZEZhaWwoKS4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6IERlY29tcHJlc3MgZnJhbWVzIGlmIG5l
ZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZSk6IENv
bXByZXNzIGZyYW1lcyBpZiBwb3NzaWJsZS4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViU29ja2V0RXh0ZW5z
aW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRl
ZmxhdGVGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZTo6fldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OldlYlNvY2tldEV4dGVu
c2lvbkRlZmxhdGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
ZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpEZWZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5mbGF0ZVJlc3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhvbGRlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5mbGF0ZVJlc3VsdEhvbGRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OldlYlNvY2tldERlZmxhdGVGcmFtZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9u
UHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNh
bkRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5h
YmxlRGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpk
ZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0
RGVmbGF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6aW5mbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpy
ZXNldEluZmxhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmRpZEZhaWwpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVmbGF0ZVJlc3Vs
dEhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpzdWNjZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbHVyZVJlYXNv
bik6CisgICAgICAgIChJbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
ZmxhdGVSZXN1bHRIb2xkZXI6OnN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRl
UmVzdWx0SG9sZGVyOjpmYWlsdXJlUmVhc29uKToKKyAgICAgICAgKFdlYlNvY2tldERlZmxhdGVG
cmFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxl
ZCk6CisKIDIwMTItMDItMjMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBQdXNoIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uIHN0cnVjdCBp
bnRvIENDTGF5ZXJJdGVyYXRvciBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAppbmRleCBhYjI1MjJlZTFlYWEwZmY0YTQ3ZDJhMjUwNjBhMjk5ODQ4NmVlZDJhLi5kYzg0NGI2
ZGE2ZDU2OTZmNGFhZTc5MzQyZDU5ZWRjZGM5OTkyYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCkBAIC0xMTk0LDQgKzExOTQsOCBAQAogI2RlZmluZSBXVEZfVVNFX1dURlVS
TCAwCiAjZW5kaWYKIAorI2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEVGTCkKKyNkZWZp
bmUgV1RGX1VTRV9aTElCIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMGFlZTIwODRhNjU4NjY5ZjliMDRmNDQ5MGQ4MDNjZDBm
OTdhNTUyMy4uOWViMTM3NGQyNTkzMDg5MWIyZTc3ZTM4NGFhMDI4NTc2NGJhNmNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTIwNTgsNiArMjA1OCw3IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tF
VFMpCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKICAgICAgICAgd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVGcmFtZXIuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGZhYTQ0ZTM0NTFiOTI1MDliMTYyZDFlOTllMGEz
OTRmYjc5ZjgzNTUuLmM1ZTc5ZGQ2MTgzMDQxNTYxNDZmZjkyNjk0YmEwNmU5MGM5MjViYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDM0Myw2ICs0MzQzLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0RGVmbGF0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA5Y2NlMDM1YzljNDA3
YjUyYjQ2YzhiYWVlNjUzNzYzNGRhNTMzNmRkLi5kYmJmN2FmMGE5NGQ0NDMzM2ViNGVlYTVlNjE1
NjNkZjM0ZGNmZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM2NzUsNiArMzY3NSw3IEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2Vi
U29ja2V0LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAgd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1l
LmggXApAQCAtMzY4Niw2ICszNjg3LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9T
T0NLRVRTPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgXAogICAgICAgICB3ZWJz
b2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKICAgICAgICAgd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCmluZGV4IGQzMTk0OTZjMTFlNTFlM2Y5ZGYzNmEwMjNmODE3YTYxZTY1ZTkzOWQuLjQyZWY1
MDUwNDVkOWM3MmU1M2UxYzhhOWZhMTNmMDM2MTEyZTZlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xMTk1LDYgKzExOTUsNyBAQAogICAgICAgICAnPChjaHJv
bWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvb3RzLmd5cDpvdHMnLAogICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9zcWxpdGUvc3FsaXRlLmd5cDpzcWxpdGUnLAog
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvYnVpbGRf
YW5nbGUuZ3lwOnRyYW5zbGF0b3JfZ2xzbCcsCisgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L3RoaXJkX3BhcnR5L3psaWIvemxpYi5neXA6emxpYicsCiAgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAogICAgICAgICAnPChsaWJqcGVnX2d5cF9w
YXRoKTpsaWJqcGVnJywKICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWRkZjkxNWY0ZWFj
MDA0ZWVlNjg1ODJhMjgyMTczMzViYjNjYTU2Mi4uNDkyYzJkYjE0MWZiYjQwNDZhNGJjOGMwNzdj
MmVlOGUyYjIwZmQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDgyNiw2ICs0ODI2LDggQEAKICAg
ICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAgICAgICAg
ICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5jcHAnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5o
JywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggMWU3YzZmMDYwMWJmZDAxNzY4N2RjZDY3ZDM4NzFkMzU5ODFhMTU4MS4uZDc4OGRkMmJhOWE5
NWM4ZTllYWQ1YmYyZDQ4ZGM1ZDNiMjZjODVmYiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTczNDc0LDYgKzczNDc0LDE0IEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2Nr
ZXRzXFdlYlNvY2tldERlZmxhdGVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmEzMTMy
N2I5Yzc3NGRlMTMzMTE1MDVmMDdhMDFhMTY2MWEwMzRjOC4uN2VjZDExMmFhY2VmYTExMGYwZjA5
OTdlOTU0Y2I1OTY0Y2FhOTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM2Nyw2ICsxMzY3LDggQEAKIAkJNEExRTcxOTYx
NEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MTk0MTRFMTAxRjkwMDYyNkY5RCAv
KiBKU0hUTUxTaGFkb3dFbGVtZW50LmggKi87IH07CiAJCTRBMUU3MUE1MTRFMTA2QUMwMDYyNkY5
RCAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEExRTcxQTMxNEUxMDZBQzAwNjI2RjlEIC8qIEpTU2hhZG93Um9vdC5jcHAg
Ki87IH07CiAJCTRBMUU3MUE2MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MUE0MTRFMTA2
QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLzsgfTsKKwkJNEEyOTIyMkIxNEY0NjhCQTAw
MjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEyOTIyMjkxNEY0NjhCQTAwMjFGNzdFIC8qIFdl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovOyB9OworCQk0QTI5MjIyQzE0RjQ2OEJBMDAyMUY3
N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEEyOTIyMkExNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXIuaCAqLzsgfTsKIAkJNEE0QTIzNDYxNEYxRTE0NDAwNDZGQkYxIC8qIFdl
YlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTRBMjM0NTE0RjFFMTQ0MDA0NkZCRjEgLyogV2ViU29ja2V0RnJhbWUuaCAqLzsgfTsK
IAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzExM0MxN0Qx
RDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovOyB9OwogCQk0QTZFOUZDNDEzQzE3
RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRG
ZWF0dXJlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODIzMiw2ICs4MjM0LDggQEAKIAkJNEExRTcxOTQxNEUxMDFGOTAwNjI2RjlEIC8q
IEpTSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNIVE1MU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTFF
NzFBMzE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93Um9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBMjkyMjI5MTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0QTI5MjIyQTE0RjQ2OEJBMDAyMUY3N0UgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNEEyMzQ1MTRGMUUxNDQwMDQ2RkJGMSAv
KiBXZWJTb2NrZXRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
b2NrZXRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDMTEzQzE3
RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVyZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEE2RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZlYXR1cmVWYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4NTgsNiArMTQ4NjIsOCBAQAogCQkJCTUx
MEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKIAkJCQk1
MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJCTUx
MEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8sCisJ
CQkJNEEyOTIyMjkxNEY0NjhCQTAwMjFGNzdFIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
ICovLAorCQkJCTRBMjkyMjJBMTRGNDY4QkEwMDIxRjc3RSAvKiBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmggKi8sCiAJCQkJNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxh
dGVyLmNwcCAqLywKIAkJCQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVm
bGF0ZXIuaCAqLywKIAkJCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8sCkBAIC0yNDI0OSw2ICsyNDI1NSw3IEBACiAJCQkJNTE4
QTM0QzIxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QTI5MjIyQzE0RjQ2OEJBMDAyMUY3N0UgLyogV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFFMDJBQkUxNEU4QTlE
MjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTk1
N0YwNzE0RTI0MTMwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzIwOSw2ICsyNzIxNiw3IEBA
CiAJCQkJMUNBRjM0ODIwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxOEEzNEMxMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tl
dENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEEyOTIyMkIxNEY0NjhCQTAwMjFGNzdF
IC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEFFMDJB
QkQxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTRBOTU3RjA2MTRFMjQxMkEwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAv
KiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMzZkYmI2ZjMyYzI0OTgzYzIwZjg1OGUwZGFjNzc2
MWZiNjliMTJhNC4uN2RkODU0ZWQxNTJhMzIxZjA0OTIxMTJjZTU1YTdmMTA5ZTg5MzNlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBA
IHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICBtX3N0YXRlID0gT1BFTjsKICAgICBtX3N1YnByb3RvY29sID0gbV9j
aGFubmVsLT5zdWJwcm90b2NvbCgpOworICAgIG1fZXh0ZW5zaW9ucyA9IG1fY2hhbm5lbC0+ZXh0
ZW5zaW9ucygpOwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
b3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZWMwNzA2ZGI0Zjg0OGY1NzU1MWM5ODdm
MjdiYzQ0ZTJkYzgwNDI2OC4uYzQwYjA5ODU3ZTZhZDcwNDhhZTFkNTBjYzkyYzY1MTcyNGM3NGU2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
CkBAIC0xMjcsNiArMTI3LDggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICBBU1NFUlQoIW1fc3VzcGVu
ZGVkKTsKICAgICBtX2hhbmRzaGFrZSA9IGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRIYW5kc2hha2Uo
dXJsLCBwcm90b2NvbCwgbV9kb2N1bWVudCwgbV91c2VIaXhpZTc2UHJvdG9jb2wpKTsKICAgICBt
X2hhbmRzaGFrZS0+cmVzZXQoKTsKKyAgICBpZiAoIW1fdXNlSGl4aWU3NlByb3RvY29sICYmIG1f
ZGVmbGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkpCisgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRl
bnNpb25Qcm9jZXNzb3IobV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3Nvcigp
KTsKICAgICBpZiAobV9pZGVudGlmaWVyKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZVdlYlNvY2tldChtX2RvY3VtZW50LCBtX2lkZW50aWZpZXIsIHVybCwgbV9k
b2N1bWVudC0+dXJsKCkpOwogICAgIHJlZigpOwpAQCAtMjI4LDYgKzIzMCw3IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAgICAgbV9zaG91
bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICAgICAgaWYgKG1fYnVmZmVyKQogICAg
ICAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOyAvLyBTYXZlIG1lbW9yeS4KKyAgICAg
ICAgbV9kZWZsYXRlRnJhbWVyLmRpZEZhaWwoKTsKICAgICAgICAgbV9oYXNDb250aW51b3VzRnJh
bWUgPSBmYWxzZTsKICAgICAgICAgbV9jb250aW51b3VzRnJhbWVEYXRhLmNsZWFyKCk7CiAgICAg
fQpAQCAtNjE4LDYgKzYyMSwxMiBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFt
ZSgpCiAgICAgQVNTRVJUKG1fYnVmZmVyIDwgZnJhbWVFbmQpOwogICAgIEFTU0VSVChmcmFtZUVu
ZCA8PSBtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZSk7CiAKKyAgICBJbmZsYXRlUmVzdWx0SG9sZGVy
IGluZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIuaW5mbGF0ZShmcmFtZSk7CisgICAgaWYg
KCFpbmZsYXRlUmVzdWx0LnN1Y2NlZWRlZCgpKSB7CisgICAgICAgIGZhaWwoaW5mbGF0ZVJlc3Vs
dC5mYWlsdXJlUmVhc29uKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAg
Ly8gVmFsaWRhdGUgdGhlIGZyYW1lIGRhdGEuCiAgICAgaWYgKFdlYlNvY2tldEZyYW1lOjppc1Jl
c2VydmVkT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKICAgICAgICAgZmFpbCgiVW5yZWNvZ25pemVk
IGZyYW1lIG9wY29kZTogIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwpAQCAtMTAx
MSw2ICsxMDIwLDEzIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAKICAgICBBU1NFUlQoIShv
cENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGlu
IHRoZSByYW5nZSBvZiBvcENvZGVzLgogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lKG9wQ29kZSwg
dHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgRGVmbGF0ZVJlc3Vs
dEhvbGRlciBkZWZsYXRlUmVzdWx0ID0gbV9kZWZsYXRlRnJhbWVyLmRlZmxhdGUoZnJhbWUpOwor
ICAgIGlmICghZGVmbGF0ZVJlc3VsdC5zdWNjZWVkZWQoKSkgeworICAgICAgICBmYWlsKGRlZmxh
dGVSZXN1bHQuZmFpbHVyZVJlYXNvbigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KwogICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CiAgICAgbWFrZUZyYW1lRGF0YShmcmFtZSwg
ZnJhbWVEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaAppbmRleCA0YmIyOGM5ZjJiMDVhZjM0OTk3YmUwN2E2MmYxMmJjNGU5ODM1ODE4Li42ZDFm
ZWJiY2EwNmUxZWQ3ZDVjZWUxNTBkODc2MGFmNzgwNDYyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRIYW5kc2hha2UuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTIzMSw2ICsy
MzIsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxGaWxlUmVhZGVyTG9hZGVyPiBtX2Jsb2JMb2Fk
ZXI7CiAgICAgQmxvYkxvYWRlclN0YXR1cyBtX2Jsb2JMb2FkZXJTdGF0dXM7CiAjZW5kaWYKKwor
ICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgbV9kZWZsYXRlRnJhbWVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5ZDM1MzZiYWIzZWI5MDhjY2Fj
NzNmNDhiY2E4MzdmNzVjNWVhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTAsMCArMSwyNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAi
V2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9u
RGVmbGF0ZUZyYW1lIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1l
PiBjcmVhdGUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoZnJhbWVy
KSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSgp
IHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBPVkVS
UklERSB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworcHJpdmF0ZToKKyAgICBXZWJTb2Nr
ZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworCisgICAg
V2ViU29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJv
Y2Vzc2VkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9OworCisvLyBGWElNRTogUmVt
b3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4KK1dlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1l
KFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKKyAgICA6IFdlYlNvY2tldEV4dGVuc2lv
blByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCisgICAgLCBtX2ZyYW1lcihmcmFt
ZXIpCisgICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQoreworICAgIEFTU0VSVChtX2Zy
YW1lcik7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRz
aGFrZVN0cmluZygpCit7CisgICAgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IC8vIE5vIHBhcmFt
ZXRlcgorfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jl
c3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQor
eworI2lmIFVTRShaTElCKQorICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7CisgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFtZSByZXNw
b25zZSI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9yZXNwb25zZVByb2Nl
c3NlZCA9IHRydWU7CisKKyAgICBpbnQgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzID0gMDsKKyAgICBp
bnQgd2luZG93Qml0cyA9IDE1OworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0
cyIpOworICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5lbmQoKSkgeworICAg
ICAgICB3aW5kb3dCaXRzID0gcGFyYW1ldGVyLT5zZWNvbmQudG9JbnQoKTsKKyAgICAgICAgaWYg
KHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgeworICAgICAgICAgICAgbV9mYWls
dXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciI7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRO
dW1QYXJhbWV0ZXJzKys7CisgICAgfQorCisgICAgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRU
YWtlT3Zlck1vZGUgbW9kZSA9IFdlYlNvY2tldERlZmxhdGVyOjpUYWtlT3ZlckNvbnRleHQ7Cisg
ICAgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5maW5kKCJub19jb250ZXh0X3Rha2VvdmVy
Iik7CisgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CisgICAg
ICAgIGlmICghcGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1l
dGVyIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtb2Rl
ID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0OworICAgICAgICBleHBl
Y3RlZE51bVBhcmFtZXRlcnMrKzsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWROdW1QYXJhbWV0
ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNv
biA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyIjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fZnJhbWVyLT5lbmFibGVEZWZsYXRlKHdp
bmRvd0JpdHMsIG1vZGUpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRGVmbGF0ZVJlc3Vs
dEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFt
ZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQorewor
ICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0RlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRl
UmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVzZXREZWZsYXRlQ29udGV4dCgpOwor
fQorCit2b2lkIERlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJl
UmVhc29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29u
ID0gZmFpbHVyZVJlYXNvbjsKK30KKworSW5mbGF0ZVJlc3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3Vs
dEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihm
cmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7
Cit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAg
ICBtX2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit2b2lkIEluZmxhdGVSZXN1
bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3Vj
Y2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30K
KworV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCisgICAg
OiBtX2VuYWJsZWQoZmFsc2UpCit7Cit9CisKK1Bhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9u
UHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNz
b3IoKQoreworICAgIHJldHVybiBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmNyZWF0
ZSh0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkg
Y29uc3QKK3sKKyNpZiBVU0UoWkxJQikKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBVU0UoWkxJQikKK3ZvaWQgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0
ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSkKK3sKKyAgICBtX2RlZmxhdGVyID0gV2ViU29j
a2V0RGVmbGF0ZXI6OmNyZWF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2luZmxhdGVyID0g
V2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAgIGlmICghbV9kZWZsYXRlciB8fCAhbV9p
bmZsYXRlcikgeworICAgICAgICBtX2RlZmxhdGVyLmNsZWFyKCk7CisgICAgICAgIG1faW5mbGF0
ZXIuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIW1fZGVmbGF0ZXIt
PmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6ZSgpKSB7CisgICAgICAgIG1f
ZGVmbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgbV9pbmZsYXRlci5jbGVhcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fZW5hYmxlZCA9IHRydWU7Cit9CisjZW5kaWYKKworRGVmbGF0
ZVJlc3VsdEhvbGRlciBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZy
YW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBEZWZsYXRlUmVzdWx0SG9sZGVyIHJl
c3VsdCh0aGlzKTsKKyAgICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9u
Q29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUu
cGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7
CisgICAgICAgIHJlc3VsdC5mYWlsKCJGYWlsZWQgdG8gY29tcHJlc3MgZnJhbWUiKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZnJhbWUuY29tcHJlc3MgPSB0cnVlOworICAg
IGZyYW1lLnBheWxvYWQgPSBtX2RlZmxhdGVyLT5kYXRhKCk7CisgICAgZnJhbWUucGF5bG9hZExl
bmd0aCA9IG1fZGVmbGF0ZXItPnNpemUoKTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAg
ICByZXR1cm4gRGVmbGF0ZVJlc3VsdEhvbGRlcih0aGlzKTsKKyNlbmRpZgorfQorCit2b2lkIFdl
YlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQoKQoreworI2lmIFVTRSha
TElCKQorICAgIGlmIChtX2RlZmxhdGVyKQorICAgICAgICBtX2RlZmxhdGVyLT5yZXNldCgpOwor
I2VuZGlmCit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXIgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCit7CisjaWYgVVNFKFpMSUIpCisgICAgSW5m
bGF0ZVJlc3VsdEhvbGRlciByZXN1bHQodGhpcyk7CisgICAgaWYgKCFmcmFtZS5jb21wcmVzcykK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0
RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpKSB7CisgICAgICAgIHJlc3Vs
dC5mYWlsKCJSZWNlaXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUiKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKCFtX2luZmxhdGVyLT5hZGRCeXRlcyhmcmFt
ZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9pbmZsYXRlci0+ZmluaXNoKCkp
IHsKKyAgICAgICAgcmVzdWx0LmZhaWwoIkZhaWxlZCB0byBkZWNvbXByZXNzIGZyYW1lIik7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGZyYW1lLmNvbXByZXNzID0gZmFsc2U7
CisgICAgZnJhbWUucGF5bG9hZCA9IG1faW5mbGF0ZXItPmRhdGEoKTsKKyAgICBmcmFtZS5wYXls
b2FkTGVuZ3RoID0gbV9pbmZsYXRlci0+c2l6ZSgpOworICAgIHJldHVybiByZXN1bHQ7CisjZWxz
ZQorICAgIHJldHVybiBJbmZsYXRlUmVzdWx0SG9sZGVyKHRoaXMpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXRJbmZsYXRlQ29udGV4dCgpCit7CisjaWYg
VVNFKFpMSUIpCisgICAgaWYgKG1faW5mbGF0ZXIpCisgICAgICAgIG1faW5mbGF0ZXItPnJlc2V0
KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkaWRGYWlsKCkK
K3sKKyAgICByZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgcmVzZXRJbmZsYXRlQ29udGV4dCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NP
Q0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVGcmFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZUZyYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlOGJhODM5MDNmNWEyYjZkZTA3ODA3MmMzZmQ1NzI3Zjcy
ZTdiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVGcmFtZXIuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXJfaAorI2RlZmluZSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyX2gKKworI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKKworI2lmIFVTRShaTElCKQorI2luY2x1ZGUgIldlYlNvY2tldERl
ZmxhdGVyLmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Iu
aCIKKyNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFdlYlNvY2tldERlZmxhdGVGcmFtZXI7CisKK2NsYXNzIERlZmxhdGVSZXN1bHRIb2xkZXIg
eworcHVibGljOgorICAgIGV4cGxpY2l0IERlZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciopOworICAgIH5EZWZsYXRlUmVzdWx0SG9sZGVyKCk7CisKKyAgICBib29sIHN1
Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VlZGVkOyB9CisgICAgU3RyaW5nIGZhaWx1
cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworICAgIHZvaWQg
ZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOworCitwcml2YXRlOgorICAgIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAg
U3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK2NsYXNzIEluZmxhdGVSZXN1bHRIb2xkZXIg
eworcHVibGljOgorICAgIGV4cGxpY2l0IEluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciopOworICAgIH5JbmZsYXRlUmVzdWx0SG9sZGVyKCk7CisKKyAgICBib29sIHN1
Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VlZGVkOyB9CisgICAgU3RyaW5nIGZhaWx1
cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworICAgIHZvaWQg
ZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOworCitwcml2YXRlOgorICAgIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAg
U3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK2NsYXNzIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIgeworcHVibGljOgorICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIoKTsKKworICAgIFBhc3NP
d25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBjcmVhdGVFeHRlbnNpb25Qcm9jZXNz
b3IoKTsKKworICAgIGJvb2wgY2FuRGVmbGF0ZSgpIGNvbnN0OworICAgIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorCisgICAgRGVmbGF0ZVJlc3VsdEhvbGRlciBk
ZWZsYXRlKFdlYlNvY2tldEZyYW1lJik7CisgICAgdm9pZCByZXNldERlZmxhdGVDb250ZXh0KCk7
CisgICAgSW5mbGF0ZVJlc3VsdEhvbGRlciBpbmZsYXRlKFdlYlNvY2tldEZyYW1lJik7CisgICAg
dm9pZCByZXNldEluZmxhdGVDb250ZXh0KCk7CisKKyAgICB2b2lkIGRpZEZhaWwoKTsKKworI2lm
IFVTRShaTElCKQorICAgIHZvaWQgZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29j
a2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUpOworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgYm9vbCBtX2VuYWJsZWQ7CisjaWYgVVNFKFpMSUIpCisgICAgT3duUHRyPFdlYlNvY2tldERl
ZmxhdGVyPiBtX2RlZmxhdGVyOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gbV9pbmZs
YXRlcjsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQor
CisjZW5kaWYgLy8gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcl9oCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmE4NWYzMjE5N2Mz
NDVmOGNmYWMxMzZmMjFmZWRmMmNhNDc5NGVkMy4uMzRjZjRmYTMzZDE5NzkxMWU4ZGVmMDBkNTgx
ZDA2M2E4NmQ0YzU4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAyLTIzICBLZW5pY2hp
IElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgV2ViU29j
a2V0IHBlci1mcmFtZSBERUZMQVRFIGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MjIKKworICAgICAgICBBZGRlZCB0ZXN0cyBmb3Ig
V2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLiBBbHNvIHVwZGF0ZWQgc29tZQorICAg
ICAgICB0ZXN0cyB0byBmb2xsb3cgdGhlIGNoYW5nZS4KKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW50IFRhbXVyYS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
b21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZy
YW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlk
LXBhcmFtZXRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5OiBBZGRlZC4K
KyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJh
bWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgIChfZ2V0X2RlZmxhdGVf
ZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3Nvcik6CisgICAgICAgICh3ZWJfc29ja2V0X2RvX2V4dHJh
X2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0
ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5OgorICAgICAgICAoX3JldHJpZXZl
X2ZyYW1lKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisKIDIwMTItMDIt
MjMgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21p
dW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBNYXJrIGEgbWVkaWEtZnJhZ21lbnRzIHRlc3QgYXMg
c2xvdy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1l
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDFlYzQ3M2Q2YmUyMWMxYzA2MDEwMjlmZmM1ZmEz
OWNjYmYzODI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBjb21w
cmVzc2VkIGZyYW1lCitUZXN0IHdoZXRoZXIgYSBjb21wcmVzc2VkIGNvbnRyb2wgZnJhbWUgaXMg
cmVqZWN0ZWQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2Fs
bGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMg
ZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMjA4OGM3OTliZTQxMWMxMjI4MTJhNTA5NDJmYTgzOTgzODAwOWE0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21w
cmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgSFRN
TD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgYSBjb21w
cmVzc2VkIGNvbnRyb2wgZnJhbWUgaXMgcmVqZWN0ZWQiKTsKKword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQ
cm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcu
MC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUi
KTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVi
dWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxl
ZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwi
KSIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGRlYnVnKCJv
bmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hv
dWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3Nl
ZC1jb250cm9sLWZyYW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZTEyZTljNDUyMmIzMTg1ODc4NDZmYjE2MDE2MTk3OWE4YjNiMmFjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2Vk
LWNvbnRyb2wtZnJhbWVfd3NoLnB5CkBAIC0wLDAgKzEsNDggQEAKKyMgQ29weXJpZ2h0IDIwMTIs
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgc3RyZWFtCitpbXBvcnQgemxpYgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJh
X2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KToKKyAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCisgICAg
ICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhf
V0JJVFMpCisgICAgY29tcHJlc3NlZF9tZXNzYWdlID0gY29tcHJlc3MuY29tcHJlc3MoJ2Nsb3Nl
IG1lc3NhZ2UnKQorICAgIGNvbXByZXNzZWRfbWVzc2FnZSArPSBjb21wcmVzcy5mbHVzaCh6bGli
LlpfU1lOQ19GTFVTSCkKKyAgICBjb21wcmVzc2VkX21lc3NhZ2UgPSBjb21wcmVzc2VkX21lc3Nh
Z2VbOi00XQorICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKAorICAgICAgICBvcGNv
ZGU9Y29tbW9uLk9QQ09ERV9DTE9TRSwgcGF5bG9hZF9sZW5ndGg9bGVuKGNvbXByZXNzZWRfbWVz
c2FnZSksCisgICAgICAgIGZpbj0xLCByc3YxPTEsIHJzdjI9MCwgcnN2Mz0wLCBtYXNrPUZhbHNl
KQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShoZWFkZXIgKyBjb21wcmVzc2VkX21lc3Nh
Z2UpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0
LW9ub2ZmLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjJmZWYzZGU2ZjBmZTQwODBlYTJkMzUy
M2YyOTViNDM4NjIzZjMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitUZXN0IGNvbXByZXNzaW9uIGVuYWJsZWQvZGlzYWJs
ZWQgZnJhbWUgcmVjZWl2aW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1NlbmRp
bmcgbWVzc2FnZTogIkhlbGxvIgorUEFTUyBldmVudC5kYXRhIGlzICdIZWxsbycKK1NlbmRpbmcg
bWVzc2FnZTogIkRpc2FibGVDb21wcmVzc2lvbiIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnRGlzYWJs
ZUNvbXByZXNzaW9uJworU2VuZGluZyBtZXNzYWdlOiAiV29ybGQiCitQQVNTIGV2ZW50LmRhdGEg
aXMgJ1dvcmxkJworU2VuZGluZyBtZXNzYWdlOiAiRW5hYmxlQ29tcHJlc3Npb24iCitQQVNTIGV2
ZW50LmRhdGEgaXMgJ0VuYWJsZUNvbXByZXNzaW9uJworU2VuZGluZyBtZXNzYWdlOiAiR29vZGJ5
ZSIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnR29vZGJ5ZScKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgor
UEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0
ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMmFjNTdiYjhmOGJiOTA2
ZmFhNDJiNDMzNGJmMmZjMjc4YTY3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25v
ZmYuaHRtbApAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVz
dCBjb21wcmVzc2lvbiBlbmFibGVkL2Rpc2FibGVkIGZyYW1lIHJlY2VpdmluZy4iKTsKKword2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7Cit2
YXIgd3M7Cit2YXIgbWVzc2FnZUluZGV4OworCit2YXIgbWVzc2FnZXMgPSBbCisgICAgIkhlbGxv
IiwKKyAgICAiRGlzYWJsZUNvbXByZXNzaW9uIiwgLy8gVGhpcyBkaXNhYmxlcyBjb21wcmVzc2lv
bgorICAgICJXb3JsZCIsCisgICAgIkVuYWJsZUNvbXByZXNzaW9uIiwgLy8gVGhpcyBlbmFibGVz
IGNvbXByZXNzaW9uCisgICAgIkdvb2RieWUiCitdOworCit3cyA9IG5ldyBXZWJTb2NrZXQoIndz
Oi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZSIpOwor
Cit3cy5vbm9wZW4gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBtZXNzYWdlSW5kZXggPSAwOwor
ICAgIGRlYnVnKCJTZW5kaW5nIG1lc3NhZ2U6IFwiIiArIG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0g
KyAiXCIiKTsKKyAgICB3cy5zZW5kKG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0pOworfTsKKword3Mu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LmRhdGEi
LCAiJyIgKyBtZXNzYWdlc1ttZXNzYWdlSW5kZXhdICsgIiciKTsKKyAgICBpZiAobWVzc2FnZUlu
ZGV4ID09PSBtZXNzYWdlcy5sZW5ndGggLSAxKQorICAgICAgICB3cy5jbG9zZSgpOworICAgIGVs
c2UgeworICAgICAgICBtZXNzYWdlSW5kZXggKz0gMTsKKyAgICAgICAgZGVidWcoIlNlbmRpbmcg
bWVzc2FnZTogXCIiICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICJcIiIpOworICAgICAgICB3
cy5zZW5kKG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0pOworICAgIH0KK307CisKK3dzLm9uY2xvc2Ug
PSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7
CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53
YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgzYTI0ZDI4Y2MyMzNiN2E1ZjYzNDkzYjk1ZDBmODFiYTdmMzRkYjIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKK0NP
TlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRl
cgorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJh
bWV0ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93X2JpdHMg
cGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIGludmFsaWQgbm9fY29udGV4dF90
YWtlb3ZlciBwYXJhbWV0ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBk
ZWZsYXRlLWZyYW1lIHBhcmFtZXRlcgorVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGlu
dmFsaWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0ZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK1Rlc3RpbmcgcGFyYW1ldGVyOiAieC1mb28iCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4K
K1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJt
YXhfd2luZG93X2JpdHM9NyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50
Lndhc0NsZWFuIGlzIGZhbHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz0x
NiIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZh
bHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm5vX2NvbnRleHRfdGFrZW92ZXI9Zm9vIgorb25jbG9z
ZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3Rp
bmcgcGFyYW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTg7IG5vX2NvbnRleHRfdGFrZW92ZXI7IHgt
Zm9vIgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMg
ZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVhNWZiZDA2ZDIwMmEzZWNjODAyYWUyNGE3NzllZjY0YjkzOWE5
YzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsx
LDU3IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tl
dCByZWplY3RzIGludmFsaWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0ZXJzLiIpOworCit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKKwordmFy
IHRlc3RDYXNlID0gWworICAgICJ4LWZvbyIsCisgICAgIm1heF93aW5kb3dfYml0cz03IiwKKyAg
ICAibWF4X3dpbmRvd19iaXRzPTE2IiwKKyAgICAibm9fY29udGV4dF90YWtlb3Zlcj1mb28iLAor
ICAgICJtYXhfd2luZG93X2JpdHM9ODsgbm9fY29udGV4dF90YWtlb3ZlcjsgeC1mb28iCitdOwor
CitmdW5jdGlvbiBkb1Rlc3QoaW5kZXgpCit7CisgICAgdmFyIHBhcmFtZXRlciA9IHRlc3RDYXNl
W2luZGV4XTsKKyAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlcj8iICsgZW5jb2RlVVJJKHBh
cmFtZXRlcik7CisgICAgdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworCisgICAgZGVidWco
IlRlc3RpbmcgcGFyYW1ldGVyOiBcIiIgKyBwYXJhbWV0ZXIgKyAiXCIiKTsKKworICAgIHdzLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSBl
dmVudC5kYXRhOworICAgICAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAo
bWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgfTsKKworICAgIHdzLm9uY2xv
c2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4iKTsKKyAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgICAgIGlmIChpbmRleCA9PT0gdGVz
dENhc2UubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBkb1Rlc3QoaW5kZXggKyAxKTsKKyAgICB9OworfQorCitkb1Rlc3Qo
MCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOGNjMjVjOGQ3Y2NjMWE2NzZhZDFlZjY4NGQ2MzA5OTEyOGZmMDA0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weQpAQCAtMCwwICsxLDU2
IEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IHVybGxpYgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5Ymkg
aW1wb3J0IGNvbXB1dGVfYWNjZXB0CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgorICAgIHJlc291cmNlcyA9IHJlcXVlc3Qud3NfcmVzb3VyY2Uuc3BsaXQo
Jz8nLCAxKQorICAgIHBhcmFtZXRlcnMgPSBOb25lCisgICAgaWYgbGVuKHJlc291cmNlcykgPT0g
MjoKKyAgICAgICAgcGFyYW1ldGVycyA9IHVybGxpYi51bnF1b3RlKHJlc291cmNlc1sxXSkKKwor
ICAgIG1lc3NhZ2UgPSAnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAg
IG1lc3NhZ2UgKz0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgbWVzc2FnZSArPSAnQ29u
bmVjdGlvbjogVXBncmFkZVxyXG4nCisgICAgbWVzc2FnZSArPSAnU2VjLVdlYlNvY2tldC1BY2Nl
cHQ6ICVzXHJcbicgJSBjb21wdXRlX2FjY2VwdChyZXF1ZXN0LmhlYWRlcnNfaW5bJ1NlYy1XZWJT
b2NrZXQtS2V5J10pWzBdCisgICAgbWVzc2FnZSArPSAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25z
OiB4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJworICAgIGlmIHBhcmFtZXRlcnM6CisgICAgICAgIG1l
c3NhZ2UgKz0gJzsgJXNcclxuJyAlIHBhcmFtZXRlcnMKKyAgICBlbHNlOgorICAgICAgICBtZXNz
YWdlICs9ICdcclxuJworICAgIG1lc3NhZ2UgKz0gJ1xyXG4nCisgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXRlKG1lc3NhZ2UpCisgICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNl
cHRpb24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50cyBweXdlYnNvY2tldCBmcm9t
IHNlbmRpbmcgaXRzIG93biBoYW5kc2hha2UgbWVzc2FnZS4KKworCitkZWYgd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2M2Zl
Mzk0YTQ2MjRhMTg0YzNkYjJmNDcyODk0NDQ5ZDBkNDA0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1w
YXJhbWV0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3QgV2ViU29ja2V0IGRl
ZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1Rl
c3RpbmcgcXVlcnk6ICJtYXhfd2luZG93X2JpdHM9OCIKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFy
Y2goJ3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdzLmV4dGVu
c2lvbnMuc2VhcmNoKCdtYXhfd2luZG93X2JpdHM9OCcpICE9IC0xIGlzIHRydWUKK1BBU1MgZXZl
bnQuZGF0YSBpcyBmaXJzdE1lc3NhZ2UKK1BBU1MgZXZlbnQuZGF0YSBpcyBzZWNvbmRNZXNzYWdl
CitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVl
CitUZXN0aW5nIHF1ZXJ5OiAibm9fY29udGV4dF90YWtlb3ZlciIKK1BBU1Mgd3MuZXh0ZW5zaW9u
cy5zZWFyY2goJ3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdz
LmV4dGVuc2lvbnMuc2VhcmNoKCdub19jb250ZXh0X3Rha2VvdmVyJykgIT0gLTEgaXMgdHJ1ZQor
UEFTUyBldmVudC5kYXRhIGlzIGZpcnN0TWVzc2FnZQorUEFTUyBldmVudC5kYXRhIGlzIHNlY29u
ZE1lc3NhZ2UKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFu
IGlzIHRydWUKK1Rlc3RpbmcgcXVlcnk6ICJtYXhfd2luZG93X2JpdHM9OCZub19jb250ZXh0X3Rh
a2VvdmVyIgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0ZS1mcmFt
ZScpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ21heF93aW5kb3df
Yml0cz04JykgIT0gLTEgaXMgdHJ1ZQorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbm9fY29u
dGV4dF90YWtlb3ZlcicpICE9IC0xIGlzIHRydWUKK1BBU1MgZXZlbnQuZGF0YSBpcyBmaXJzdE1l
c3NhZ2UKK1BBU1MgZXZlbnQuZGF0YSBpcyBzZWNvbmRNZXNzYWdlCitvbmNsb3NlKCkgd2FzIGNh
bGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRl
ci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZs
YXRlLWZyYW1lLXBhcmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNzdlNDcxODE3ZTIzNDdjZmI4
MzZmZDllM2FhYTNlZmI4NWM2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwK
QEAgLTAsMCArMSw5MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgV2ViU29j
a2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3Rv
Y29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKK3ZhciB3czsKK3ZhciBtZXNzYWdl
SW5kZXg7CisKK3ZhciBxdWVyaWVzID0gWworICAgICJtYXhfd2luZG93X2JpdHM9OCIsCisgICAg
Im5vX2NvbnRleHRfdGFrZW92ZXIiLAorICAgICJtYXhfd2luZG93X2JpdHM9OCZub19jb250ZXh0
X3Rha2VvdmVyIgorXTsKKworLy8gVGhlIGZpcnN0IG1lc3NhZ2UgY29uc2lzdHMgb2YgYSBsb3Qg
b2YgJ2InIGFuZCBhIGZldyAnYScgYXQgdGhlIGhlYWQgYW5kCisvLyB0aGUgdGFpbCwgd2hpbGUg
dGhlIHNlY29uZCBvbmUgY29uc2lzdHMgb2YgJ2EnLgordmFyIGZpcnN0TWVzc2FnZSA9ICcnOwor
dmFyIHNlY29uZE1lc3NhZ2UgPSAnJzsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgewor
ICAgIGZpcnN0TWVzc2FnZSArPSAnYSc7CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9Citm
b3IgKHZhciBpID0gMDsgaSA8IDEwMjQ7ICsraSkgeworICAgIGZpcnN0TWVzc2FnZSArPSAnYic7
CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDE2OyAr
K2kpIHsKKyAgICBmaXJzdE1lc3NhZ2UgKz0gJ2EnOworICAgIHNlY29uZE1lc3NhZ2UgKz0gJ2En
OworfQorCitmdW5jdGlvbiBkb1Rlc3QocXVlcnlJbmRleCkKK3sKKyAgICB2YXIgcXVlcnkgPSBx
dWVyaWVzW3F1ZXJ5SW5kZXhdOworICAgIGRlYnVnKCJUZXN0aW5nIHF1ZXJ5OiBcIiIgKyBxdWVy
eSArICJcIiIpOworCisgICAgdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWU/IiArIHF1ZXJ5OworICAgIHdzID0gbmV3IFdlYlNv
Y2tldCh1cmwpOworICAgIG1lc3NhZ2VJbmRleCA9IDA7CisKKyAgICB3cy5vbm9wZW4gPSBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgid3MuZXh0ZW5zaW9ucy5z
ZWFyY2goJ3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnKSAhPSAtMSIpOworICAgICAgICBwYXJhbWV0
ZXJzID0gcXVlcnkuc3BsaXQoJyYnKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJh
bWV0ZXJzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ3cy5leHRlbnNp
b25zLnNlYXJjaCgnIiArIHBhcmFtZXRlcnNbaV0gKyAiJykgIT0gLTEiKTsKKyAgICAgICAgd3Mu
c2VuZChmaXJzdE1lc3NhZ2UpOworICAgIH07CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChtZXNzYWdlSW5kZXggPT09IDApIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJldmVudC5kYXRhIiwgImZpcnN0TWVzc2FnZSIpOworICAgICAgICAg
ICAgbWVzc2FnZUluZGV4ICs9IDEKKyAgICAgICAgICAgIHdzLnNlbmQoc2Vjb25kTWVzc2FnZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICJz
ZWNvbmRNZXNzYWdlIik7CisgICAgICAgICAgICB3cy5jbG9zZSgpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGRl
YnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50
OworICAgICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAg
aWYgKHF1ZXJ5SW5kZXggPT09IHF1ZXJpZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb1Rlc3QocXVlcnlJbmRleCAr
IDEpOworICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgzYjc4Mzg1NTA0Mjc0ODNhOTMyNmNlOGZhNjBjMTc5ODFhZGJkNTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxh
dGUtZnJhbWVfd3NoLnB5CkBAIC0wLDAgKzEsODIgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBv
cnQgdXJscGFyc2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IERlZmxh
dGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9u
cyBpbXBvcnQgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5jb21tb24gaW1wb3J0IEV4dGVuc2lvblBhcmFtZXRlcgorCisKK19HT09EQllFX01FU1NBR0Ug
PSB1J0dvb2RieWUnCitfRU5BQkxFX01FU1NBR0UgPSB1J0VuYWJsZUNvbXByZXNzaW9uJworX0RJ
U0FCTEVfTUVTU0FHRSA9IHUnRGlzYWJsZUNvbXByZXNzaW9uJworCisKK2RlZiBfZ2V0X2RlZmxh
dGVfZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3NvcihyZXF1ZXN0KToKKyAgICBmb3IgZXh0ZW5zaW9u
X3Byb2Nlc3NvciBpbiByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzOgorICAgICAgICBp
ZiBpc2luc3RhbmNlKGV4dGVuc2lvbl9wcm9jZXNzb3IsIERlZmxhdGVGcmFtZUV4dGVuc2lvblBy
b2Nlc3Nvcik6CisgICAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9uX3Byb2Nlc3NvcgorICAgIHJl
dHVybiBOb25lCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgorICAgIHByb2Nlc3NvciA9IF9nZXRfZGVmbGF0ZV9mcmFtZV9leHRlbnNpb25fcHJvY2Vzc29y
KHJlcXVlc3QpCisgICAgaWYgbm90IHByb2Nlc3NvcjoKKyAgICAgICAgcmV0dXJuCisgICAgciA9
IHJlcXVlc3Qud3NfcmVzb3VyY2Uuc3BsaXQoJz8nLCAxKQorICAgIGlmIGxlbihyKSA9PSAxOgor
ICAgICAgICByZXR1cm4KKyAgICBwYXJhbWV0ZXJzID0gdXJscGFyc2UucGFyc2VfcXMoclsxXSwg
a2VlcF9ibGFua192YWx1ZXM9VHJ1ZSkKKyAgICBpZiAnbWF4X3dpbmRvd19iaXRzJyBpbiBwYXJh
bWV0ZXJzOgorICAgICAgICB3aW5kb3dfYml0cyA9IGludChwYXJhbWV0ZXJzWydtYXhfd2luZG93
X2JpdHMnXVswXSkKKyAgICAgICAgcHJvY2Vzc29yLnNldF9yZXNwb25zZV93aW5kb3dfYml0cyh3
aW5kb3dfYml0cykKKyAgICBpZiAnbm9fY29udGV4dF90YWtlb3ZlcicgaW4gcGFyYW1ldGVyczoK
KyAgICAgICAgcHJvY2Vzc29yLnNldF9yZXNwb25zZV9ub19jb250ZXh0X3Rha2VvdmVyKFRydWUp
CisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBwcm9jZXNz
b3IgPSBfZ2V0X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3NvcihyZXF1ZXN0KQorICAg
IHdoaWxlIFRydWU6CisgICAgICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21l
c3NhZ2UoKQorICAgICAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCB1bmljb2RlKToKKyAgICAgICAgICAgIGlmIHByb2Nl
c3NvcjoKKyAgICAgICAgICAgICAgICBpZiBsaW5lID09IF9FTkFCTEVfTUVTU0FHRToKKyAgICAg
ICAgICAgICAgICAgICAgcHJvY2Vzc29yLmVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbigpCisg
ICAgICAgICAgICAgICAgZWxpZiBsaW5lID09IF9ESVNBQkxFX01FU1NBR0U6CisgICAgICAgICAg
ICAgICAgICAgIHByb2Nlc3Nvci5kaXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9RmFsc2Up
CisgICAgICAgICAgICBpZiBsaW5lID09IF9HT09EQllFX01FU1NBR0U6CisgICAgICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5z
ZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PVRydWUpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hh
bmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0
ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0CmluZGV4IGFkZjA2YjY1MWQ2YjQ3MTViNGExYjk3
Yzg3Yzk2MDIzM2FhZTFmYTAuLmNjOTlhZjBkZDE2NWQ1M2Y0MDY3MGM1YzU4NmFlYzk5ZWZiNjgz
Y2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZh
aWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09O
U09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9u
cyBoZWFkZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBleHRlbnNpb246
IHgtZm9vCiBUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGhhbmRzaGFrZSBmYWlscyBpZiB0aGUgc2Vy
dmVyIHNlbmRzIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIuCiAKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYl93c2gucHkKaW5kZXggZGFh
NDQwNDcxYWY4M2FiMjYyODY3NTFjM2UxODg4MmY0ODRkYjc4Yy4uNzkyMDM0Y2ZlM2I3MGUwNDgz
YjVkZTk1ZTRlMTcwMWQ5Nzc4MmNhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYl93c2gucHkKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYl93c2gu
cHkKQEAgLTIsNiArMiwxNCBAQCBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCiBm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAogCiAKK2RlZiBfcmV0cmlldmVfZnJh
bWUoc3RyZWFtKToKKyAgICAjIEZJWE1FOiBVc2UgYmV0dGVyIEFQSS4KKyAgICBmcmFtZSA9IHN0
cmVhbS5fcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3QoKQorICAgIGZvciBmcmFtZV9maWx0
ZXIgaW4gc3RyZWFtLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRlcnM6CisgICAgICAgIGZy
YW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisgICAgcmV0dXJuIGZyYW1lCisKKwogZGVmIHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogICAgIHBhc3MgIyBBbHdheXMgYWNj
ZXB0LgogCkBAIC0xMCwxMiArMTgsMTEgQEAgZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShy
ZXF1ZXN0KToKICAgICBleHBlY3RlZF9tZXNzYWdlcyA9IFsnSGVsbG8sIHdvcmxkISddCiAKICAg
ICBmb3IgdGVzdF9udW1iZXIsIGV4cGVjdGVkX21lc3NhZ2UgaW4gZW51bWVyYXRlKGV4cGVjdGVk
X21lc3NhZ2VzKToKLSAgICAgICAgIyBGSVhNRTogVXNlIGJldHRlciBBUEkuCi0gICAgICAgIG9w
Y29kZSwgcGF5bG9hZCwgZmluYWwsIHVudXNlZF9yZXNlcnZlZDEsIHVudXNlZF9yZXNlcnZlZDIs
IHVudXNlZF9yZXNlcnZlZDMgPSByZXF1ZXN0LndzX3N0cmVhbS5fcmVjZWl2ZV9mcmFtZSgpCi0g
ICAgICAgIGlmIG9wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWSBhbmQgcGF5bG9hZCA9PSBl
eHBlY3RlZF9tZXNzYWdlIGFuZCBmaW5hbDoKKyAgICAgICAgZnJhbWUgPSBfcmV0cmlldmVfZnJh
bWUocmVxdWVzdC53c19zdHJlYW0pCisgICAgICAgIGlmIGZyYW1lLm9wY29kZSA9PSBjb21tb24u
T1BDT0RFX0JJTkFSWSBhbmQgZnJhbWUucGF5bG9hZCA9PSBleHBlY3RlZF9tZXNzYWdlIGFuZCBm
cmFtZS5maW46CiAgICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnUEFT
UzogTWVzc2FnZSAjJWQuJyAlIHRlc3RfbnVtYmVyKQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IE1lc3NhZ2UgIyVkOiBSZWNl
aXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBvcGNvZGUgPSAlciwgcGF5bG9hZCA9ICVyLCBmaW5hbCA9
ICVyJyAlICh0ZXN0X251bWJlciwgb3Bjb2RlLCBwYXlsb2FkLCBmaW5hbCkpCisgICAgICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAjJWQ6IFJlY2Vp
dmVkIHVuZXhwZWN0ZWQgZnJhbWU6IG9wY29kZSA9ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0g
JXInICUgKHRlc3RfbnVtYmVyLCBmcmFtZS5vcGNvZGUsIGZyYW1lLnBheWxvYWQsIGZyYW1lLmZp
bikpCiAKIAogZGVmIGFsbF9kaXN0aW5jdF9ieXRlcygpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129430</attachid>
            <date>2012-02-29 03:14:38 -0800</date>
            <delta_ts>2012-02-29 18:20:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77522-20120229201436.patch</filename>
            <type>text/plain</type>
            <size>58864</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjkxOWNjYmY3ODk1YjA3Y2FkNzZjZTBiYzFkMjE3ZDM3MjZjMzVhLi4yNTgyZWI3NmVjZmY0ZGJk
YWY0ZDBkZmQ4ODE2ZGM3OWZjMmYzYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yOSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0w
Mi0yOCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAg
ICAgICBbQ01ha2VdIEFsd2F5cyBidWlsZCB3dGYgYXMgYSBzdGF0aWMgbGlicmFyeS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBhNGYxYjE1NmI2NDJkNzk0NWI2NzQ5YzQ0MmU5ODdhZWYyN2ViYjJlLi5lYWNmNGU5
NjcxM2RhYzY3OTFhZTgyNThkYmJkMjc4YzgzNTllOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjkgQEAKKzIwMTItMDItMjkgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEFkZGluZyBXZWJTb2NrZXQgcGVyLWZyYW1lIERFRkxBVEUgZXh0ZW5zaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUyMgor
CisgICAgICAgIEFkZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyIGNsYXNzIHdoaWNoIGhhbmRsZXMg
ZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uCisgICAgICAgIFRoaXMgY2xhc3MgZW5jYXBzdWxhdGVz
IFdlYlNvY2tldERlZmxhdGVyIGFuZCBXZWJTb2NrZXRJbmZsYXRlciBjbGFzc2VzLAorICAgICAg
ICB3aGljaCBkZXBlbmQgb24gemxpYiwgc28gdGhhdCBXZWJTb2NrZXRDaGFubmVsIGlzIG5vdCBu
ZWNlc3NhcnkgdG8gYXdhcmUKKyAgICAgICAgemxpYiBkZXBlbmRlbmN5LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29t
cC1iaXQtb25vZmYuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0
ZXIuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFdlYlNvY2tldERlZmxh
dGVGcmFtZXIuKGNwcHxoKQorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgor
ICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6IEFkZGVkIHpsaWIgZGVwZW5k
ZW5jeS4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQWRkZWQgV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci4oY3BwfGgpCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOiBTZXQgbV9leHRl
bnNpb25zLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KTogQWRkIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uIHByb2Nlc3NvciB0byBXZWJTb2NrZXRIYW5zaGFrZSBpZiBkZWZsYXRlIGNh
biB1c2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpmYWlsKTogQ2FsbCBt
X2RlZmxhdGVGcmFtZXIuZGlkRmFpbCgpLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKTogRGVjb21wcmVzcyBmcmFtZXMgaWYgbmVlZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKTogQ29tcHJlc3MgZnJhbWVz
IGlmIHBvc3NpYmxlLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1l
Ojp+V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6
aGFuZHNoYWtlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRl
ZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVS
ZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVm
bGF0ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRl
UmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
ZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXREZWZsYXRlQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0SW5mbGF0ZUNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGlkRmFp
bCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWZsYXRlUmVzdWx0SG9sZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OnN1Y2NlZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsdXJlUmVhc29uKToKKyAgICAgICAg
KEluZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5mbGF0ZVJlc3VsdEhv
bGRlcjo6c3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6
OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVkKToKKwogMjAxMi0w
Mi0yOCAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgTWljcm9kYXRh
OiBJbXBsZW1lbnQgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIGNvbGxlY3Rpb24ubmFtZWRJdGVt
KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggNGEyNTk4MTNhOTAzMGM3
MTcyNDU4ZjViMzBjYzc1ZDJhYWMzY2Q5MC4uNTU3NDlmZDA5YWE1YzFkY2E4MDZjYjY3OTI2Mjk3
OTliOGYzZTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtMTE5OCw0
ICsxMTk4LDggQEAKICNkZWZpbmUgV1RGX1VTRV9XVEZVUkwgMAogI2VuZGlmCiAKKyNpZiAhUExB
VEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCisjZGVmaW5lIFdURl9VU0VfWkxJQiAxCisjZW5k
aWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IGEyZjU0YTM1MjI4ZGUxZjhjNjI5YmY3NWUwMjY1YTUzOTRhZDIxZWIuLjU1NmM1OWM4ZGZiM2Nl
YzRjZDc4ODhmZTYwMjIyNDY2ZDlkYjJmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDY2
LDYgKzIwNjYsNyBAQCBJRiAoRU5BQkxFX1dFQl9TT0NLRVRTKQogICAgICAgICBNb2R1bGVzL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAogICAg
ICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAogICAgICAgICBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKyAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDdlMTg1ZDkxNGNmOWM0NzA2NTlkZGJiZjJmNDg5MDBkYTNmZjc4NjIuLjE5YjY4NDg5YTJh
MDBjYTZkYThkZDI5ODVmNzcyNDhkNzdjOGQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMTAwNyw2ICsxMDA3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAppbmRleCAzNmRiYjZmMzJjMjQ5ODNjMjBmODU4ZTBkYWM3NzYxZmI2OWIxMmE0Li43
ZGQ4NTRlZDE1MmEzMjFmMDQ5MjExMmNlNTVhN2YxMDllODkzM2U3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNDc4LDYgKzQ3OCw3
IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBtX3N0YXRlID0gT1BFTjsKICAgICBtX3N1YnByb3RvY29sID0g
bV9jaGFubmVsLT5zdWJwcm90b2NvbCgpOworICAgIG1fZXh0ZW5zaW9ucyA9IG1fY2hhbm5lbC0+
ZXh0ZW5zaW9ucygpOwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGVjMDcw
NmRiNGY4NDhmNTc1NTFjOTg3ZjI3YmM0NGUyZGM4MDQyNjguLjFlYzI1OWY3ODg0MWJmOTExM2Q1
ZmQ0Mjg0NGNkYmQxYzUyOTk3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEyNyw2ICsxMjcsOCBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKQogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAgIG1faGFuZHNoYWtl
ID0gYWRvcHRQdHIobmV3IFdlYlNvY2tldEhhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBtX2RvY3Vt
ZW50LCBtX3VzZUhpeGllNzZQcm90b2NvbCkpOwogICAgIG1faGFuZHNoYWtlLT5yZXNldCgpOwor
ICAgIGlmICghbV91c2VIaXhpZTc2UHJvdG9jb2wgJiYgbV9kZWZsYXRlRnJhbWVyLmNhbkRlZmxh
dGUoKSkKKyAgICAgICAgbV9oYW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3NvcihtX2RlZmxh
dGVGcmFtZXIuY3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkpOwogICAgIGlmIChtX2lkZW50aWZp
ZXIpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0
KG1fZG9jdW1lbnQsIG1faWRlbnRpZmllciwgdXJsLCBtX2RvY3VtZW50LT51cmwoKSk7CiAgICAg
cmVmKCk7CkBAIC0yMjgsNiArMjMwLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNv
bnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEg
PSB0cnVlOwogICAgICAgICBpZiAobV9idWZmZXIpCiAgICAgICAgICAgICBza2lwQnVmZmVyKG1f
YnVmZmVyU2l6ZSk7IC8vIFNhdmUgbWVtb3J5LgorICAgICAgICBtX2RlZmxhdGVGcmFtZXIuZGlk
RmFpbCgpOwogICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZhbHNlOwogICAgICAgICBt
X2NvbnRpbnVvdXNGcmFtZURhdGEuY2xlYXIoKTsKICAgICB9CkBAIC02MTgsNiArNjIxLDEyIEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKICAgICBBU1NFUlQobV9idWZm
ZXIgPCBmcmFtZUVuZCk7CiAgICAgQVNTRVJUKGZyYW1lRW5kIDw9IG1fYnVmZmVyICsgbV9idWZm
ZXJTaXplKTsKIAorICAgIE93blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBpbmZsYXRlUmVzdWx0
ID0gbV9kZWZsYXRlRnJhbWVyLmluZmxhdGUoZnJhbWUpOworICAgIGlmICghaW5mbGF0ZVJlc3Vs
dC0+c3VjY2VlZGVkKCkpIHsKKyAgICAgICAgZmFpbChpbmZsYXRlUmVzdWx0LT5mYWlsdXJlUmVh
c29uKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVmFsaWRhdGUg
dGhlIGZyYW1lIGRhdGEuCiAgICAgaWYgKFdlYlNvY2tldEZyYW1lOjppc1Jlc2VydmVkT3BDb2Rl
KGZyYW1lLm9wQ29kZSkpIHsKICAgICAgICAgZmFpbCgiVW5yZWNvZ25pemVkIGZyYW1lIG9wY29k
ZTogIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwpAQCAtMTAxMSw2ICsxMDIwLDEz
IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENv
ZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BD
b2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBv
ZiBvcENvZGVzLgogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lKG9wQ29kZSwgdHJ1ZSwgZmFsc2Us
IHRydWUsIGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgT3duUHRyPERlZmxhdGVSZXN1bHRIb2xk
ZXI+IGRlZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIuZGVmbGF0ZShmcmFtZSk7CisgICAg
aWYgKCFkZWZsYXRlUmVzdWx0LT5zdWNjZWVkZWQoKSkgeworICAgICAgICBmYWlsKGRlZmxhdGVS
ZXN1bHQtPmZhaWx1cmVSZWFzb24oKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
ICAgICBWZWN0b3I8Y2hhcj4gZnJhbWVEYXRhOwogICAgIG1ha2VGcmFtZURhdGEoZnJhbWUsIGZy
YW1lRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDRiYjI4YzlmMmIwNWFmMzQ5OTdiZTA3YTYyZjEyYmM0
ZTk4MzU4MTguLjZkMWZlYmJjYTA2ZTFlZDdkNWNlZTE1MGQ4NzYwYWY3ODA0NjIxNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KQEAgLTIzMSw2ICsyMzIsOCBAQCBwcml2YXRlOgogICAgIE93blB0
cjxGaWxlUmVhZGVyTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgQmxvYkxvYWRlclN0YXR1cyBt
X2Jsb2JMb2FkZXJTdGF0dXM7CiAjZW5kaWYKKworICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIg
bV9kZWZsYXRlRnJhbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzMjZlOThkMDU1MDZkNmE2MzQ1ZDIyNWU5NmZlMTBm
ZTI5MDk0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uRGVm
bGF0ZUZyYW1lIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPiBj
cmVhdGUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoZnJhbWVyKSk7
CisgICAgfQorICAgIHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSgpIHsg
fQorCisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIHByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBPVkVSUklE
RSB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRF
eHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworCisgICAgV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vz
c2VkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9OworCisvLyBGWElNRTogUmVtb3Zl
IHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4KK1dlYlNvY2tl
dEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdl
YlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKKyAgICA6IFdlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCisgICAgLCBtX2ZyYW1lcihmcmFtZXIp
CisgICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQoreworICAgIEFTU0VSVChtX2ZyYW1l
cik7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFr
ZVN0cmluZygpCit7CisgICAgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IC8vIE5vIHBhcmFtZXRl
cgorfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3Bv
bnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQorewor
I2lmIFVTRShaTElCKQorICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7CisgICAgICAgIG1f
ZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFtZSByZXNwb25z
ZSI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9yZXNwb25zZVByb2Nlc3Nl
ZCA9IHRydWU7CisKKyAgICBpbnQgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzID0gMDsKKyAgICBpbnQg
d2luZG93Qml0cyA9IDE1OworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIp
OworICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5lbmQoKSkgeworICAgICAg
ICB3aW5kb3dCaXRzID0gcGFyYW1ldGVyLT5zZWNvbmQudG9JbnQoKTsKKyAgICAgICAgaWYgKHdp
bmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgeworICAgICAgICAgICAgbV9mYWlsdXJl
UmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciI7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWROdW1Q
YXJhbWV0ZXJzKys7CisgICAgfQorCisgICAgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtl
T3Zlck1vZGUgbW9kZSA9IFdlYlNvY2tldERlZmxhdGVyOjpUYWtlT3ZlckNvbnRleHQ7CisgICAg
cGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5maW5kKCJub19jb250ZXh0X3Rha2VvdmVyIik7
CisgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CisgICAgICAg
IGlmICghcGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVy
IjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtb2RlID0g
V2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0OworICAgICAgICBleHBlY3Rl
ZE51bVBhcmFtZXRlcnMrKzsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWROdW1QYXJhbWV0ZXJz
ICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyIjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fZnJhbWVyLT5lbmFibGVEZWZsYXRlKHdpbmRv
d0JpdHMsIG1vZGUpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRGVmbGF0ZVJlc3VsdEhv
bGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIp
CisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAg
IEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0RlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVz
dWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVzZXREZWZsYXRlQ29udGV4dCgpOworfQor
Cit2b2lkIERlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVh
c29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0g
ZmFpbHVyZVJlYXNvbjsKK30KKworSW5mbGF0ZVJlc3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhv
bGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFt
ZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9
CisKK0luZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBt
X2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit2b2lkIEluZmxhdGVSZXN1bHRI
b2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3VjY2Vl
ZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30KKwor
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCisgICAgOiBt
X2VuYWJsZWQoZmFsc2UpCit7Cit9CisKK1Bhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3Io
KQoreworICAgIHJldHVybiBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmNyZWF0ZSh0
aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29u
c3QKK3sKKyNpZiBVU0UoWkxJQikKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBVU0UoWkxJQikKK3ZvaWQgV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6
OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSkKK3sKKyAgICBtX2RlZmxhdGVyID0gV2ViU29ja2V0
RGVmbGF0ZXI6OmNyZWF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2luZmxhdGVyID0gV2Vi
U29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAgIGlmICghbV9kZWZsYXRlciB8fCAhbV9pbmZs
YXRlcikgeworICAgICAgICBtX2RlZmxhdGVyLmNsZWFyKCk7CisgICAgICAgIG1faW5mbGF0ZXIu
Y2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIW1fZGVmbGF0ZXItPmlu
aXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6ZSgpKSB7CisgICAgICAgIG1fZGVm
bGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgbV9pbmZsYXRlci5jbGVhcigpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIG1fZW5hYmxlZCA9IHRydWU7Cit9CisjZW5kaWYKKworUGFzc093blB0
cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdl
YlNvY2tldEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBPd25QdHI8RGVmbGF0
ZVJlc3VsdEhvbGRlcj4gcmVzdWx0ID0gRGVmbGF0ZVJlc3VsdEhvbGRlcjo6Y3JlYXRlKHRoaXMp
OworICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25Db250cm9sT3BD
b2RlKGZyYW1lLm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCisgICAgICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOworICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUu
cGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7
CisgICAgICAgIHJlc3VsdC0+ZmFpbCgiRmFpbGVkIHRvIGNvbXByZXNzIGZyYW1lIik7CisgICAg
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIH0KKyAgICBmcmFtZS5jb21wcmVzcyA9
IHRydWU7CisgICAgZnJhbWUucGF5bG9hZCA9IG1fZGVmbGF0ZXItPmRhdGEoKTsKKyAgICBmcmFt
ZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZsYXRlci0+c2l6ZSgpOworICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOworI2Vsc2UKKyAgICByZXR1cm4gRGVmbGF0ZVJlc3VsdEhvbGRlcjo6Y3JlYXRl
KHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXRE
ZWZsYXRlQ29udGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1fZGVmbGF0ZXIpCisg
ICAgICAgIG1fZGVmbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30KKworUGFzc093blB0cjxJbmZs
YXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdlYlNvY2tl
dEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBPd25QdHI8SW5mbGF0ZVJlc3Vs
dEhvbGRlcj4gcmVzdWx0ID0gSW5mbGF0ZVJlc3VsdEhvbGRlcjo6Y3JlYXRlKHRoaXMpOworICAg
IGlmICghZnJhbWUuY29tcHJlc3MpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwor
ICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25Db250cm9sT3BDb2Rl
KGZyYW1lLm9wQ29kZSkpIHsKKyAgICAgICAgcmVzdWx0LT5mYWlsKCJSZWNlaXZlZCB1bmV4cGVj
dGVkIGNvbXByZXNzZWQgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CisgICAgfQorICAgIGlmICghbV9pbmZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJh
bWUucGF5bG9hZExlbmd0aCkgfHwgIW1faW5mbGF0ZXItPmZpbmlzaCgpKSB7CisgICAgICAgIHJl
c3VsdC0+ZmFpbCgiRmFpbGVkIHRvIGRlY29tcHJlc3MgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgfQorICAgIGZyYW1lLmNvbXByZXNzID0gZmFsc2U7Cisg
ICAgZnJhbWUucGF5bG9hZCA9IG1faW5mbGF0ZXItPmRhdGEoKTsKKyAgICBmcmFtZS5wYXlsb2Fk
TGVuZ3RoID0gbV9pbmZsYXRlci0+c2l6ZSgpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
OworI2Vsc2UKKyAgICByZXR1cm4gSW5mbGF0ZVJlc3VsdEhvbGRlcjo6Y3JlYXRlKHRoaXMpOwor
I2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXRJbmZsYXRlQ29u
dGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1faW5mbGF0ZXIpCisgICAgICAgIG1f
aW5mbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjpkaWRGYWlsKCkKK3sKKyAgICByZXNldERlZmxhdGVDb250ZXh0KCk7CisgICAgcmVzZXRJ
bmZsYXRlQ29udGV4dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzU1
MjY4MjEwZDBmNzI4NjhiNmIyODM5Y2U5NzU0ZWZkOTUxNThkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
aApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaAorI2Rl
ZmluZSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KworI2lmIFVTRShaTElCKQorI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCisjZW5kaWYK
KyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJXZWJT
b2NrZXRGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERlZmxh
dGVGcmFtZXI7CisKK2NsYXNzIERlZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IGNyZWF0ZShXZWJTb2NrZXREZWZs
YXRlRnJhbWVyKiBmcmFtZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERl
ZmxhdGVSZXN1bHRIb2xkZXIoZnJhbWVyKSk7CisgICAgfQorCisgICAgfkRlZmxhdGVSZXN1bHRI
b2xkZXIoKTsKKworICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZWVk
ZWQ7IH0KKyAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbHVy
ZVJlYXNvbjsgfQorCisgICAgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbik7
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyKik7CisKKyAgICBXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBtX2ZyYW1lcjsK
KyAgICBib29sIG1fc3VjY2VlZGVkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9Owor
CitjbGFzcyBJbmZsYXRlUmVzdWx0SG9sZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBjcmVhdGUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciog
ZnJhbWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbmZsYXRlUmVzdWx0
SG9sZGVyKGZyYW1lcikpOworICAgIH0KKworICAgIH5JbmZsYXRlUmVzdWx0SG9sZGVyKCk7CisK
KyAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VlZGVkOyB9CisgICAg
U3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0K
KworICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IEluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ciopOworCisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7CisgICAgYm9vbCBt
X3N1Y2NlZWRlZDsKKyAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOworfTsKKworY2xhc3MgV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lciB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1l
cigpOworCisgICAgUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IGNyZWF0
ZUV4dGVuc2lvblByb2Nlc3NvcigpOworCisgICAgYm9vbCBjYW5EZWZsYXRlKCkgY29uc3Q7Cisg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisKKyAgICBQYXNz
T3duUHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IGRlZmxhdGUoV2ViU29ja2V0RnJhbWUmKTsKKyAg
ICB2b2lkIHJlc2V0RGVmbGF0ZUNvbnRleHQoKTsKKyAgICBQYXNzT3duUHRyPEluZmxhdGVSZXN1
bHRIb2xkZXI+IGluZmxhdGUoV2ViU29ja2V0RnJhbWUmKTsKKyAgICB2b2lkIHJlc2V0SW5mbGF0
ZUNvbnRleHQoKTsKKworICAgIHZvaWQgZGlkRmFpbCgpOworCisjaWYgVVNFKFpMSUIpCisgICAg
dm9pZCBlbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29u
dGV4dFRha2VPdmVyTW9kZSk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBib29sIG1fZW5hYmxl
ZDsKKyNpZiBVU0UoWkxJQikKKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IG1fZGVmbGF0
ZXI7CisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBtX2luZmxhdGVyOworI2VuZGlmCit9
OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDNmM2I0NTc4ZDMzNTg0MWI5OTY4
ZDhiYzAxNTQzNmYyYmFkZDRmODQuLjJhM2M1N2RiYjVhZGVjODNmMzk2M2JjNzcwOTQxYTJjMzg1
MDE0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzY3NCw2ICszNjc0LDcgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgg
XAorICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
aCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IuaCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIFwKQEAg
LTM2ODUsNiArMzY4Niw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0x
KSB7CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
IFwKKyAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
IFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5j
cHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBiNzc3ZmUw
NjczNjJlOWZmZDJlOGRhOWZmMTMzYWEzNWU0MjA3OTA2Li42NWM2ZTM1ZjZiN2E2ZGMyNDBmYjVj
MGI0YzIxNWNhMzM0YzNmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cApAQCAtMTE5NCw2ICsxMTk0LDcgQEAKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhp
cmRfcGFydHkvb3RzL290cy5neXA6b3RzJywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
dGhpcmRfcGFydHkvc3FsaXRlL3NxbGl0ZS5neXA6c3FsaXRlJywKICAgICAgICAgJzwoY2hyb21p
dW1fc3JjX2RpcikvdGhpcmRfcGFydHkvYW5nbGUvc3JjL2J1aWxkX2FuZ2xlLmd5cDp0cmFuc2xh
dG9yX2dsc2wnLAorICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS96bGli
L3psaWIuZ3lwOnpsaWInLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS92OC90b29scy9n
eXAvdjguZ3lwOnY4JywKICAgICAgICAgJzwobGlianBlZ19neXBfcGF0aCk6bGlianBlZycsCiAg
ICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGFlMWVhYzc3ZGYzYTgxZDFmYTE3NWZjM2JkNjgz
NjIxMzhkOTcwMmUuLjkzOWRjYTQyNDM4YzUyNGY0YTg4N2QzZTFiZDYxMjA3OWRmNDQ5ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTEzMzksNiArMTMzOSw4IEBACiAgICAgICAgICAgICAnTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oJywKKyAgICAgICAgICAgICdNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAnLAorICAgICAgICAgICAgJ01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlZmQwMzEy
MjY1MzUwZTNkNWEwMWY3MzIwYWYzOWU3MjY3M2I5ZmE2Li4yMDhhMGJiZTIxMTRhNDQzNDM4ZTE3
MmQzN2ExYmQyNzM1ODNjYTcxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtMjQxNTMsNiArMjQxNTMsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZXIuY3BwIgogCQkJ
CQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDEzYjZjNDUxZWJlYzVkYWM3ODBlMWZjMjBhZjMyMjZmYzky
NWVlNDQuLjc4ZDlmZWMzYmI2ZGQ0ZDZkMzg5NDE2ZjU5Y2JjZjRmNjljY2NlNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
NjcsNiArMTM2Nyw4IEBACiAJCTRBMUU3MTk2MTRFMTAxRjkwMDYyNkY5RCAvKiBKU0hUTUxTaGFk
b3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QTFFNzE5NDE0RTEwMUY5MDA2MjZGOUQgLyogSlNIVE1MU2hhZG93RWxlbWVudC5oICovOyB9
OwogCQk0QTFFNzFBNTE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MUEzMTRFMTA2QUMw
MDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwICovOyB9OwogCQk0QTFFNzFBNjE0RTEwNkFDMDA2
MjZGOUQgLyogSlNTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTFFNzFBNDE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290Lmgg
Ki87IH07CisJCTRBMzhCRjUwMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
MzhCRjRFMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCAqLzsg
fTsKKwkJNEEzOEJGNTExNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMzhCRjRG
MTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggKi87IH07CiAJCTRB
NkU5RkMzMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkMxMTNDMTdEMUQwMDQ2
QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCAqLzsgfTsKIAkJNEE2RTlGQzQxM0MxN0QxRDAw
NDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkMyMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVy
ZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNEE2RTlGQzcxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzUxM0Mx
N0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwICovOyB9OwpAQCAtODIzNCw2
ICs4MjM2LDggQEAKIAkJNEExRTcxOTQxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0Vs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MU2hhZG93RWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTFFNzFBMzE0RTEwNkFDMDA2
MjZGOUQgLyogSlNTaGFkb3dSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTU2hhZG93Um9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRB
MUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRBMzhCRjRFMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVG
cmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTM4QkY0RjE0RkUxQzA5
MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg7IHBhdGggPSBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVyZVZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzIxM0MxN0QxRDAwNDZBN0Y4
IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9udEZlYXR1cmVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZD
NTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjExLDYgKzE3MjE1LDggQEAKIAkJOTdBQUJDRjcx
NEZBMDlCNTAwNzQ1N0FFIC8qIHdlYnNvY2tldHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTRBMzhCRjRFMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyLmNwcCAqLywKKwkJCQk0QTM4QkY0RjE0RkUxQzA5MDA2MTI1MTIgLyog
V2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oICovLAogCQkJCTk3QUFCQ0Y4MTRGQTA5RDUwMDc0NTdB
RSAvKiBDbG9zZUV2ZW50LmggKi8sCiAJCQkJOTdBQUJDRjkxNEZBMDlENTAwNzQ1N0FFIC8qIENs
b3NlRXZlbnQuaWRsICovLAogCQkJCTk3QUFCQ0ZBMTRGQTA5RDUwMDc0NTdBRSAvKiBET01XaW5k
b3dXZWJTb2NrZXQuaWRsICovLApAQCAtMjQzNTcsNiArMjQzNjMsNyBAQAogCQkJCTk3N0UyRTBG
MTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUz
NzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
QkJFRDREMTRGQ0RCQTEwMDNGMEI5OCAvKiBTdHlsZVJ1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTRBMzhCRjUxMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI3MzEwLDYgKzI3MzE3LDcgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEz
N0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRCQkVE
NEMxNEZDREJBMTAwM0YwQjk4IC8qIFN0eWxlUnVsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
QTM4QkY1MDE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBkYzZkN2ZhMGI2NGUzZTJlYjBiNWJmNWI2OTQ0YmI1YzhjY2Nj
MDk2Li40MzM1ZmY2ZDY0N2FlMjExMmM2MmIyY2M3ZDI3N2E3MWMyMmNmN2YyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzggQEAKKzIwMTItMDItMjkgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEFkZGluZyBXZWJTb2NrZXQgcGVyLWZyYW1lIERFRkxBVEUgZXh0
ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NzUyMgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBXZWJTb2NrZXQgZGVmbGF0ZS1mcmFtZSBl
eHRlbnNpb24uIEFsc28gdXBkYXRlZCBzb21lCisgICAgICAgIHRlc3RzIHRvIGZvbGxvdyB0aGUg
Y2hhbmdlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFt
ZV93c2gucHk6IEFkZGVkLgorICAgICAgICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Up
OgorICAgICAgICAod2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKToKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFy
YW1ldGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1pbnZhbGlkLXBhcmFtZXRlcl93c2gucHk6IEFkZGVkLgorICAgICAgICAod2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UpOgorICAgICAgICAod2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKToK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUt
cGFyYW1ldGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3No
LnB5OiBBZGRlZC4KKyAgICAgICAgKF9nZXRfZGVmbGF0ZV9mcmFtZV9leHRlbnNpb25fcHJvY2Vz
c29yKToKKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAg
KHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZp
bGUtYmxvYl93c2gucHk6CisgICAgICAgIChfcmV0cmlldmVfZnJhbWUpOgorICAgICAgICAod2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDog
U2tpcHMgdGVzdHMgcmVseSBvbiB6bGliCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDog
RGl0dG8uCisKIDIwMTItMDItMjggIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9ucyB1
cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFt
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQxZWM0NzNkNmJlMjFjMWMwNjAxMDI5ZmZjNWZh
MzljY2JmMzgyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgY29t
cHJlc3NlZCBmcmFtZQorVGVzdCB3aGV0aGVyIGEgY29tcHJlc3NlZCBjb250cm9sIGZyYW1lIGlz
IHJlamVjdGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25vcGVuKCkgd2FzIGNh
bGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjIwODhjNzk5YmU0MTFjMTIyODEyYTUwOTQyZmE4Mzk4MzgwMDlhNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29t
cHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIGEgY29t
cHJlc3NlZCBjb250cm9sIGZyYW1lIGlzIHJlamVjdGVkIik7CisKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0
UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3
LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1l
Iik7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRl
YnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIHRlc3RGYWls
ZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJc
IikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBkZWJ1Zygi
b25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNo
b3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNz
ZWQtY29udHJvbC1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGUxMmU5YzQ1MjJiMzE4NTg3ODQ2ZmIxNjAxNjE5NzlhOGIzYjJhYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3Nl
ZC1jb250cm9sLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDQ4IEBACisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IHN0cmVhbQoraW1wb3J0IHpsaWIKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6CisgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAorICAg
ICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFY
X1dCSVRTKQorICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzLmNvbXByZXNzKCdjbG9z
ZSBtZXNzYWdlJykKKyAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29tcHJlc3MuZmx1c2goemxp
Yi5aX1NZTkNfRkxVU0gpCisgICAgY29tcHJlc3NlZF9tZXNzYWdlID0gY29tcHJlc3NlZF9tZXNz
YWdlWzotNF0KKyAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigKKyAgICAgICAgb3Bj
b2RlPWNvbW1vbi5PUENPREVfQ0xPU0UsIHBheWxvYWRfbGVuZ3RoPWxlbihjb21wcmVzc2VkX21l
c3NhZ2UpLAorICAgICAgICBmaW49MSwgcnN2MT0xLCByc3YyPTAsIHJzdjM9MCwgbWFzaz1GYWxz
ZSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaGVhZGVyICsgY29tcHJlc3NlZF9tZXNz
YWdlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJp
dC1vbm9mZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYyZmVmM2RlNmYwZmU0MDgwZWEyZDM1
MjNmMjk1YjQzODYyM2YzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCBjb21wcmVzc2lvbiBlbmFibGVkL2Rpc2Fi
bGVkIGZyYW1lIHJlY2VpdmluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTZW5k
aW5nIG1lc3NhZ2U6ICJIZWxsbyIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnSGVsbG8nCitTZW5kaW5n
IG1lc3NhZ2U6ICJEaXNhYmxlQ29tcHJlc3Npb24iCitQQVNTIGV2ZW50LmRhdGEgaXMgJ0Rpc2Fi
bGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVzc2FnZTogIldvcmxkIgorUEFTUyBldmVudC5kYXRh
IGlzICdXb3JsZCcKK1NlbmRpbmcgbWVzc2FnZTogIkVuYWJsZUNvbXByZXNzaW9uIgorUEFTUyBl
dmVudC5kYXRhIGlzICdFbmFibGVDb21wcmVzc2lvbicKK1NlbmRpbmcgbWVzc2FnZTogIkdvb2Ri
eWUiCitQQVNTIGV2ZW50LmRhdGEgaXMgJ0dvb2RieWUnCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4K
K1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2Zm
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxh
dGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzJhYzU3YmI4ZjhiYjkw
NmZhYTQyYjQzMzRiZjJmYzI3OGE2NzY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9u
b2ZmLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRl
c3QgY29tcHJlc3Npb24gZW5hYmxlZC9kaXNhYmxlZCBmcmFtZSByZWNlaXZpbmcuIik7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciBjbG9zZUV2ZW50Owor
dmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFyIG1lc3NhZ2VzID0gWworICAgICJIZWxs
byIsCisgICAgIkRpc2FibGVDb21wcmVzc2lvbiIsIC8vIFRoaXMgZGlzYWJsZXMgY29tcHJlc3Np
b24KKyAgICAiV29ybGQiLAorICAgICJFbmFibGVDb21wcmVzc2lvbiIsIC8vIFRoaXMgZW5hYmxl
cyBjb21wcmVzc2lvbgorICAgICJHb29kYnllIgorXTsKKword3MgPSBuZXcgV2ViU29ja2V0KCJ3
czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUiKTsK
Kword3Mub25vcGVuID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgbWVzc2FnZUluZGV4ID0gMDsK
KyAgICBkZWJ1ZygiU2VuZGluZyBtZXNzYWdlOiBcIiIgKyBtZXNzYWdlc1ttZXNzYWdlSW5kZXhd
ICsgIlwiIik7CisgICAgd3Muc2VuZChtZXNzYWdlc1ttZXNzYWdlSW5kZXhdKTsKK307CisKK3dz
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHNob3VsZEJlKCJldmVudC5kYXRh
IiwgIiciICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICInIik7CisgICAgaWYgKG1lc3NhZ2VJ
bmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgd3MuY2xvc2UoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgbWVzc2FnZUluZGV4ICs9IDE7CisgICAgICAgIGRlYnVnKCJTZW5kaW5n
IG1lc3NhZ2U6IFwiIiArIG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0gKyAiXCIiKTsKKyAgICAgICAg
d3Muc2VuZChtZXNzYWdlc1ttZXNzYWdlSW5kZXhdKTsKKyAgICB9Cit9OworCit3cy5vbmNsb3Nl
ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIp
OworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQu
d2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44M2EyNGQyOGNjMjMzYjdhNWY2MzQ5M2I5NWQwZjgxYmE3ZjM0ZGIyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRl
LWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitD
T05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZGVmbGF0ZS1mcmFtZSBwYXJhbWV0
ZXIKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93X2JpdHMgcGFy
YW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRz
IHBhcmFtZXRlcgorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRf
dGFrZW92ZXIgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQg
ZGVmbGF0ZS1mcmFtZSBwYXJhbWV0ZXIKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBp
bnZhbGlkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVycy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitUZXN0aW5nIHBhcmFtZXRlcjogIngtZm9vIgorb25jbG9zZSgpIHdhcyBjYWxsZWQu
CitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3RpbmcgcGFyYW1ldGVyOiAi
bWF4X3dpbmRvd19iaXRzPTciCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVu
dC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJtYXhfd2luZG93X2JpdHM9
MTYiCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBm
YWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJub19jb250ZXh0X3Rha2VvdmVyPWZvbyIKK29uY2xv
c2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitUZXN0
aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz04OyBub19jb250ZXh0X3Rha2VvdmVyOyB4
LWZvbyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41YTVmYmQwNmQyMDJhM2VjYzgwMmFlMjRhNzc5ZWY2NGI5Mzlh
OWMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKQEAgLTAsMCAr
MSw1NyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2Nr
ZXQgcmVqZWN0cyBpbnZhbGlkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVycy4iKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7CisKK3Zh
ciB0ZXN0Q2FzZSA9IFsKKyAgICAieC1mb28iLAorICAgICJtYXhfd2luZG93X2JpdHM9NyIsCisg
ICAgIm1heF93aW5kb3dfYml0cz0xNiIsCisgICAgIm5vX2NvbnRleHRfdGFrZW92ZXI9Zm9vIiwK
KyAgICAibWF4X3dpbmRvd19iaXRzPTg7IG5vX2NvbnRleHRfdGFrZW92ZXI7IHgtZm9vIgorXTsK
KworZnVuY3Rpb24gZG9UZXN0KGluZGV4KQoreworICAgIHZhciBwYXJhbWV0ZXIgPSB0ZXN0Q2Fz
ZVtpbmRleF07CisgICAgdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXI/IiArIGVuY29kZVVSSShw
YXJhbWV0ZXIpOworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKworICAgIGRlYnVn
KCJUZXN0aW5nIHBhcmFtZXRlcjogXCIiICsgcGFyYW1ldGVyICsgIlwiIik7CisKKyAgICB3cy5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBtZXNzYWdlID0g
ZXZlbnQuZGF0YTsKKyAgICAgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4g
KG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIH07CisKKyAgICB3cy5vbmNs
b3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWJ1Zygib25jbG9zZSgpIHdh
cyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICAgICAgc2hvdWxk
QmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAoaW5kZXggPT09IHRl
c3RDYXNlLmxlbmd0aCAtIDEpCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZG9UZXN0KGluZGV4ICsgMSk7CisgICAgfTsKK30KKworZG9UZXN0
KDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRl
LWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlcl93c2gu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYThjYzI1YzhkN2NjYzFhNjc2YWQxZWY2ODRkNjMwOTkxMjhmZjAwNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlcl93c2gucHkKQEAgLTAsMCArMSw1
NiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCB1cmxsaWIKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5oeWJp
IGltcG9ydCBjb21wdXRlX2FjY2VwdAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKKyAgICByZXNvdXJjZXMgPSByZXF1ZXN0LndzX3Jlc291cmNlLnNwbGl0
KCc/JywgMSkKKyAgICBwYXJhbWV0ZXJzID0gTm9uZQorICAgIGlmIGxlbihyZXNvdXJjZXMpID09
IDI6CisgICAgICAgIHBhcmFtZXRlcnMgPSB1cmxsaWIudW5xdW90ZShyZXNvdXJjZXNbMV0pCisK
KyAgICBtZXNzYWdlID0gJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAg
ICBtZXNzYWdlICs9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworICAgIG1lc3NhZ2UgKz0gJ0Nv
bm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgIG1lc3NhZ2UgKz0gJ1NlYy1XZWJTb2NrZXQtQWNj
ZXB0OiAlc1xyXG4nICUgY29tcHV0ZV9hY2NlcHQocmVxdWVzdC5oZWFkZXJzX2luWydTZWMtV2Vi
U29ja2V0LUtleSddKVswXQorICAgIG1lc3NhZ2UgKz0gJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9u
czogeC13ZWJraXQtZGVmbGF0ZS1mcmFtZScKKyAgICBpZiBwYXJhbWV0ZXJzOgorICAgICAgICBt
ZXNzYWdlICs9ICc7ICVzXHJcbicgJSBwYXJhbWV0ZXJzCisgICAgZWxzZToKKyAgICAgICAgbWVz
c2FnZSArPSAnXHJcbicKKyAgICBtZXNzYWdlICs9ICdcclxuJworICAgIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0ZShtZXNzYWdlKQorICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhj
ZXB0aW9uKCdBYm9ydCB0aGUgY29ubmVjdGlvbicpICMgUHJldmVudHMgcHl3ZWJzb2NrZXQgZnJv
bSBzZW5kaW5nIGl0cyBvd24gaGFuZHNoYWtlIG1lc3NhZ2UuCisKKworZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNjNm
ZTM5NGE0NjI0YTE4NGMzZGIyZjQ3Mjg5NDQ0OWQwZDQwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUt
cGFyYW1ldGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitUZXN0IFdlYlNvY2tldCBk
ZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitU
ZXN0aW5nIHF1ZXJ5OiAibWF4X3dpbmRvd19iaXRzPTgiCitQQVNTIHdzLmV4dGVuc2lvbnMuc2Vh
cmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMgdHJ1ZQorUEFTUyB3cy5leHRl
bnNpb25zLnNlYXJjaCgnbWF4X3dpbmRvd19iaXRzPTgnKSAhPSAtMSBpcyB0cnVlCitQQVNTIGV2
ZW50LmRhdGEgaXMgZmlyc3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2Fn
ZQorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1
ZQorVGVzdGluZyBxdWVyeTogIm5vX2NvbnRleHRfdGFrZW92ZXIiCitQQVNTIHdzLmV4dGVuc2lv
bnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMgdHJ1ZQorUEFTUyB3
cy5leHRlbnNpb25zLnNlYXJjaCgnbm9fY29udGV4dF90YWtlb3ZlcicpICE9IC0xIGlzIHRydWUK
K1BBU1MgZXZlbnQuZGF0YSBpcyBmaXJzdE1lc3NhZ2UKK1BBU1MgZXZlbnQuZGF0YSBpcyBzZWNv
bmRNZXNzYWdlCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVh
biBpcyB0cnVlCitUZXN0aW5nIHF1ZXJ5OiAibWF4X3dpbmRvd19iaXRzPTgmbm9fY29udGV4dF90
YWtlb3ZlciIKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gtd2Via2l0LWRlZmxhdGUtZnJh
bWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNoKCdtYXhfd2luZG93
X2JpdHM9OCcpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ25vX2Nv
bnRleHRfdGFrZW92ZXInKSAhPSAtMSBpcyB0cnVlCitQQVNTIGV2ZW50LmRhdGEgaXMgZmlyc3RN
ZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2FnZQorb25jbG9zZSgpIHdhcyBj
YWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yjc3ZTQ3MTgxN2UyMzQ3Y2Zi
ODM2ZmQ5ZTNhYWEzZWZiODVjNmYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1s
CkBAIC0wLDAgKzEsOTAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IFdlYlNv
Y2tldCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgd3M7Cit2YXIgbWVzc2Fn
ZUluZGV4OworCit2YXIgcXVlcmllcyA9IFsKKyAgICAibWF4X3dpbmRvd19iaXRzPTgiLAorICAg
ICJub19jb250ZXh0X3Rha2VvdmVyIiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTgmbm9fY29udGV4
dF90YWtlb3ZlciIKK107CisKKy8vIFRoZSBmaXJzdCBtZXNzYWdlIGNvbnNpc3RzIG9mIGEgbG90
IG9mICdiJyBhbmQgYSBmZXcgJ2EnIGF0IHRoZSBoZWFkIGFuZAorLy8gdGhlIHRhaWwsIHdoaWxl
IHRoZSBzZWNvbmQgb25lIGNvbnNpc3RzIG9mICdhJy4KK3ZhciBmaXJzdE1lc3NhZ2UgPSAnJzsK
K3ZhciBzZWNvbmRNZXNzYWdlID0gJyc7Citmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHsK
KyAgICBmaXJzdE1lc3NhZ2UgKz0gJ2EnOworICAgIHNlY29uZE1lc3NhZ2UgKz0gJ2EnOworfQor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDI0OyArK2kpIHsKKyAgICBmaXJzdE1lc3NhZ2UgKz0gJ2In
OworICAgIHNlY29uZE1lc3NhZ2UgKz0gJ2EnOworfQorZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsg
KytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9ICdhJzsKKyAgICBzZWNvbmRNZXNzYWdlICs9ICdh
JzsKK30KKworZnVuY3Rpb24gZG9UZXN0KHF1ZXJ5SW5kZXgpCit7CisgICAgdmFyIHF1ZXJ5ID0g
cXVlcmllc1txdWVyeUluZGV4XTsKKyAgICBkZWJ1ZygiVGVzdGluZyBxdWVyeTogXCIiICsgcXVl
cnkgKyAiXCIiKTsKKworICAgIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lPyIgKyBxdWVyeTsKKyAgICB3cyA9IG5ldyBXZWJT
b2NrZXQodXJsKTsKKyAgICBtZXNzYWdlSW5kZXggPSAwOworCisgICAgd3Mub25vcGVuID0gZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBzaG91bGRCZVRydWUoIndzLmV4dGVuc2lvbnMu
c2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEiKTsKKyAgICAgICAgcGFyYW1l
dGVycyA9IHF1ZXJ5LnNwbGl0KCcmJyk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFy
YW1ldGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgid3MuZXh0ZW5z
aW9ucy5zZWFyY2goJyIgKyBwYXJhbWV0ZXJzW2ldICsgIicpICE9IC0xIik7CisgICAgICAgIHdz
LnNlbmQoZmlyc3RNZXNzYWdlKTsKKyAgICB9OworCisgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAobWVzc2FnZUluZGV4ID09PSAwKSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICJmaXJzdE1lc3NhZ2UiKTsKKyAgICAgICAg
ICAgIG1lc3NhZ2VJbmRleCArPSAxCisgICAgICAgICAgICB3cy5zZW5kKHNlY29uZE1lc3NhZ2Up
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAi
c2Vjb25kTWVzc2FnZSIpOworICAgICAgICAgICAgd3MuY2xvc2UoKTsKKyAgICAgICAgfQorICAg
IH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBk
ZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVu
dDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgICAg
IGlmIChxdWVyeUluZGV4ID09PSBxdWVyaWVzLmxlbmd0aCAtIDEpCisgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9UZXN0KHF1ZXJ5SW5kZXgg
KyAxKTsKKyAgICB9OworfQorCitkb1Rlc3QoMCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44M2I3ODM4NTUwNDI3NDgzYTkzMjZjZThmYTYwYzE3OTgxYWRiZDUxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZs
YXRlLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDgyIEBACisjIENvcHlyaWdodCAyMDEyLCBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1w
b3J0IHVybHBhcnNlCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBEZWZs
YXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lv
bnMgaW1wb3J0IEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZQorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuY29tbW9uIGltcG9ydCBFeHRlbnNpb25QYXJhbWV0ZXIKKworCitfR09PREJZRV9NRVNTQUdF
ID0gdSdHb29kYnllJworX0VOQUJMRV9NRVNTQUdFID0gdSdFbmFibGVDb21wcmVzc2lvbicKK19E
SVNBQkxFX01FU1NBR0UgPSB1J0Rpc2FibGVDb21wcmVzc2lvbicKKworCitkZWYgX2dldF9kZWZs
YXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVxdWVzdCk6CisgICAgZm9yIGV4dGVuc2lv
bl9wcm9jZXNzb3IgaW4gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yczoKKyAgICAgICAg
aWYgaXNpbnN0YW5jZShleHRlbnNpb25fcHJvY2Vzc29yLCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Q
cm9jZXNzb3IpOgorICAgICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbl9wcm9jZXNzb3IKKyAgICBy
ZXR1cm4gTm9uZQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0
KToKKyAgICBwcm9jZXNzb3IgPSBfZ2V0X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cihyZXF1ZXN0KQorICAgIGlmIG5vdCBwcm9jZXNzb3I6CisgICAgICAgIHJldHVybgorICAgIHIg
PSByZXF1ZXN0LndzX3Jlc291cmNlLnNwbGl0KCc/JywgMSkKKyAgICBpZiBsZW4ocikgPT0gMToK
KyAgICAgICAgcmV0dXJuCisgICAgcGFyYW1ldGVycyA9IHVybHBhcnNlLnBhcnNlX3FzKHJbMV0s
IGtlZXBfYmxhbmtfdmFsdWVzPVRydWUpCisgICAgaWYgJ21heF93aW5kb3dfYml0cycgaW4gcGFy
YW1ldGVyczoKKyAgICAgICAgd2luZG93X2JpdHMgPSBpbnQocGFyYW1ldGVyc1snbWF4X3dpbmRv
d19iaXRzJ11bMF0pCisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfd2luZG93X2JpdHMo
d2luZG93X2JpdHMpCisgICAgaWYgJ25vX2NvbnRleHRfdGFrZW92ZXInIGluIHBhcmFtZXRlcnM6
CisgICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcihUcnVl
KQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcHJvY2Vz
c29yID0gX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVxdWVzdCkKKyAg
ICB3aGlsZSBUcnVlOgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9t
ZXNzYWdlKCkKKyAgICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6CisgICAgICAgICAgICBpZiBwcm9j
ZXNzb3I6CisgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBfRU5BQkxFX01FU1NBR0U6CisgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5lbmFibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oKQor
ICAgICAgICAgICAgICAgIGVsaWYgbGluZSA9PSBfRElTQUJMRV9NRVNTQUdFOgorICAgICAgICAg
ICAgICAgICAgICBwcm9jZXNzb3IuZGlzYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbigpCisgICAg
ICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNl
KQorICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAgICAgICAgICAg
ICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9o
YW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4
dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCBhZGYwNmI2NTFkNmI0NzE1YjRhMWI5
N2M4N2M5NjAyMzNhYWUxZmEwLi5jYzk5YWYwZGQxNjVkNTNmNDA2NzBjNWM1ODZhZWM5OWVmYjY4
M2NhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1m
YWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNP
TlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMgaGVhZGVyCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZXh0ZW5zaW9u
OiB4LWZvbwogVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMgaWYgdGhlIHNl
cnZlciBzZW5kcyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyLgogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5CmluZGV4IGRh
YTQ0MDQ3MWFmODNhYjI2Mjg2NzUxYzNlMTg4ODJmNDg0ZGI3OGMuLjc5MjAzNGNmZTNiNzBlMDQ4
M2I1ZGU5NWU0ZTE3MDFkOTc3ODJjYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3No
LnB5CkBAIC0yLDYgKzIsMTQgQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgog
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKIAogCitkZWYgX3JldHJpZXZlX2Zy
YW1lKHN0cmVhbSk6CisgICAgIyBGSVhNRTogVXNlIGJldHRlciBBUEkuCisgICAgZnJhbWUgPSBz
dHJlYW0uX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKyAgICBmb3IgZnJhbWVfZmls
dGVyIGluIHN0cmVhbS5fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzOgorICAgICAgICBm
cmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQorICAgIHJldHVybiBmcmFtZQorCisKIGRlZiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKICAgICBwYXNzICMgQWx3YXlzIGFj
Y2VwdC4KIApAQCAtMTAsMTIgKzE4LDExIEBAIGRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEo
cmVxdWVzdCk6CiAgICAgZXhwZWN0ZWRfbWVzc2FnZXMgPSBbJ0hlbGxvLCB3b3JsZCEnXQogCiAg
ICAgZm9yIHRlc3RfbnVtYmVyLCBleHBlY3RlZF9tZXNzYWdlIGluIGVudW1lcmF0ZShleHBlY3Rl
ZF9tZXNzYWdlcyk6Ci0gICAgICAgICMgRklYTUU6IFVzZSBiZXR0ZXIgQVBJLgotICAgICAgICBv
cGNvZGUsIHBheWxvYWQsIGZpbmFsLCB1bnVzZWRfcmVzZXJ2ZWQxLCB1bnVzZWRfcmVzZXJ2ZWQy
LCB1bnVzZWRfcmVzZXJ2ZWQzID0gcmVxdWVzdC53c19zdHJlYW0uX3JlY2VpdmVfZnJhbWUoKQot
ICAgICAgICBpZiBvcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9CSU5BUlkgYW5kIHBheWxvYWQgPT0g
ZXhwZWN0ZWRfbWVzc2FnZSBhbmQgZmluYWw6CisgICAgICAgIGZyYW1lID0gX3JldHJpZXZlX2Zy
YW1lKHJlcXVlc3Qud3Nfc3RyZWFtKQorICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9u
Lk9QQ09ERV9CSU5BUlkgYW5kIGZyYW1lLnBheWxvYWQgPT0gZXhwZWN0ZWRfbWVzc2FnZSBhbmQg
ZnJhbWUuZmluOgogICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1BB
U1M6IE1lc3NhZ2UgIyVkLicgJSB0ZXN0X251bWJlcikKICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdGQUlMOiBNZXNzYWdlICMlZDogUmVj
ZWl2ZWQgdW5leHBlY3RlZCBmcmFtZTogb3Bjb2RlID0gJXIsIHBheWxvYWQgPSAlciwgZmluYWwg
PSAlcicgJSAodGVzdF9udW1iZXIsIG9wY29kZSwgcGF5bG9hZCwgZmluYWwpKQorICAgICAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IE1lc3NhZ2UgIyVkOiBSZWNl
aXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBvcGNvZGUgPSAlciwgcGF5bG9hZCA9ICVyLCBmaW5hbCA9
ICVyJyAlICh0ZXN0X251bWJlciwgZnJhbWUub3Bjb2RlLCBmcmFtZS5wYXlsb2FkLCBmcmFtZS5m
aW4pKQogCiAKIGRlZiBhbGxfZGlzdGluY3RfYnl0ZXMoKToKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBw
ZWQKaW5kZXggMDY3YmQwMDEwZTY4NjE1NWIxNjkwNTgyNzVjZWY1ZGM0Y2VkYmMwNS4uYzkyNjg3
MTNjMzZlYWZlZjJhNmJiNjAzYjMyMzEzYTk0NDFlNTFlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Nr
aXBwZWQKQEAgLTEyODAsNiArMTI4MCwxMiBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJ
bWFnZS5vdXRzaWRlc291cmNlLmh0bWwKICMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBtaXNt
YXRjaCByZWZ0ZXN0IHdpbGwgZmFpbCBhcyBpbnRlbmRlZCBpZiBib3RoIHJlc3VsdHMgYXJlIHNh
bWUuCiBmYXN0L2hhcm5lc3Mvc2FtcGxlLWZhaWwtbWlzbWF0Y2gtcmVmdGVzdC5odG1sCiAKKyMg
VVNFKFpMSUIpIGlzIGRpc2FibGVkCitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nv
bXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbAoraHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sCitodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVy
Lmh0bWwKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRl
c3RzIHdoaWNoIGFsc28gZmFpbCBpbiBvdGhlciBwbGF0Zm9ybXMKICMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggODNk
Mzg1M2ZkZTM1OTIzNGUyMTNjZjExNjM3NmI2ZTE1M2UyMGU4OS4uZWI3YjE0NWJjMTk5ZDBhM2E1
NDUxZjM5NTNkYTI5NDczYzc3ZmM0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yNTEs
NiArMjUxLDEyIEBAIGZhc3QvbXV0YXRpb24vb2JzZXJ2ZS1jaGlsZExpc3QuaHRtbAogZmFzdC9t
dXRhdGlvbi9vYnNlcnZlLWV4Y2VwdGlvbnMuaHRtbAogZmFzdC9tdXRhdGlvbi9vYnNlcnZlLXN1
YnRyZWUuaHRtbAogCisjIFVTRShaTElCKSBpcyBkaXNhYmxlZC4KK2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwKK2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci5odG1s
CitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVy
Lmh0bWwKK2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnkt
ZXh0ZW5zaW9ucy1oZWFkZXIuaHRtbAorCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjICAgICAg
IEZlYXR1cmUgbm90IHlldCBzdXBwb3J0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129574</attachid>
            <date>2012-02-29 18:21:03 -0800</date>
            <delta_ts>2012-03-01 01:33:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77522-20120301112101.patch</filename>
            <type>text/plain</type>
            <size>58730</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmUxZDQzNTU1ZGFkYzZkOTdjMWQ3N2MyMjYzYzExODYzNTU5ZWU4Li45N2FlMjdmNDliM2JiNmY1
NjZlNjljZTBkNTkwNTVmOTBjNGExMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yOSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0w
Mi0yOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZkNvdW50
ZWQ6OmRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKSBzaG91bGQgbm90IGJlIGRlcHJlY2F0ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNmU2OTJiZDAxZTZjODRiMDE5MjM2NWNkMTE5YmZlMDQ0MGExMjYwLi5m
MGViOTJhZmM1ZTA5ZTVhZmJlMGI3NmI1YTM5MjIwMWRiMGVlN2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjkgQEAKKzIwMTItMDItMjkgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEFkZGluZyBXZWJTb2NrZXQgcGVyLWZyYW1lIERFRkxBVEUgZXh0
ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NzUyMgorCisgICAgICAgIEFkZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyIGNsYXNzIHdoaWNoIGhh
bmRsZXMgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uCisgICAgICAgIFRoaXMgY2xhc3MgZW5jYXBz
dWxhdGVzIFdlYlNvY2tldERlZmxhdGVyIGFuZCBXZWJTb2NrZXRJbmZsYXRlciBjbGFzc2VzLAor
ICAgICAgICB3aGljaCBkZXBlbmQgb24gemxpYiwgc28gdGhhdCBXZWJTb2NrZXRDaGFubmVsIGlz
IG5vdCBuZWNlc3NhcnkgdG8gYXdhcmUKKyAgICAgICAgemxpYiBkZXBlbmRlbmN5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtY29tcC1iaXQtb25vZmYuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1w
YXJhbWV0ZXIuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXIuKGNwcHxoKQorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERp
dHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6IEFkZGVkIHpsaWIg
ZGVwZW5kZW5jeS4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQWRk
ZWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lci4oY3BwfGgpCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOiBTZXQg
bV9leHRlbnNpb25zLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KTogQWRkIGRlZmxh
dGUtZnJhbWUgZXh0ZW5zaW9uIHByb2Nlc3NvciB0byBXZWJTb2NrZXRIYW5zaGFrZSBpZiBkZWZs
YXRlIGNhbiB1c2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpmYWlsKTog
Q2FsbCBtX2RlZmxhdGVGcmFtZXIuZGlkRmFpbCgpLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKTogRGVjb21wcmVzcyBmcmFtZXMgaWYgbmVlZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKTogQ29tcHJlc3Mg
ZnJhbWVzIGlmIHBvc3NpYmxlLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZy
YW1lOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lOjp+V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVm
bGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6aGFuZHNoYWtlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVu
c2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmxhdGVSZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXREZWZsYXRl
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0SW5m
bGF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
ZGlkRmFpbCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWZsYXRlUmVzdWx0SG9sZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OnN1Y2NlZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsdXJlUmVhc29uKToKKyAg
ICAgICAgKEluZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5mbGF0ZVJl
c3VsdEhvbGRlcjo6c3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRI
b2xkZXI6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViU29ja2V0RGVmbGF0ZUZyYW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVkKToKKwog
MjAxMi0wMi0yOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzA1CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggNGEyNTk4MTNhOTAzMGM3MTcyNDU4ZjViMzBjYzc1ZDJh
YWMzY2Q5MC4uNTU3NDlmZDA5YWE1YzFkY2E4MDZjYjY3OTI2Mjk3OTliOGYzZTZiYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtMTE5OCw0ICsxMTk4LDggQEAKICNkZWZp
bmUgV1RGX1VTRV9XVEZVUkwgMAogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFU
Rk9STShFRkwpCisjZGVmaW5lIFdURl9VU0VfWkxJQiAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdU
Rl9QbGF0Zm9ybV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGEyZjU0YTM1MjI4ZGUxZjhj
NjI5YmY3NWUwMjY1YTUzOTRhZDIxZWIuLjU1NmM1OWM4ZGZiM2NlYzRjZDc4ODhmZTYwMjIyNDY2
ZDlkYjJmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDY2LDYgKzIwNjYsNyBAQCBJRiAo
RU5BQkxFX1dFQl9TT0NLRVRTKQogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKyAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVG
cmFtZXIuY3BwCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdlMTg1ZDkxNGNmOWM0
NzA2NTlkZGJiZjJmNDg5MDBkYTNmZjc4NjIuLjE5YjY4NDg5YTJhMDBjYTZkYThkZDI5ODVmNzcy
NDhkNzdjOGQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTAwNyw2ICsx
MDA3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCAzNmRi
YjZmMzJjMjQ5ODNjMjBmODU4ZTBkYWM3NzYxZmI2OWIxMmE0Li43ZGQ4NTRlZDE1MmEzMjFmMDQ5
MjExMmNlNTVhN2YxMDllODkzM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIHZvaWQgV2ViU29ja2V0
OjpkaWRDb25uZWN0KCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBtX3N0YXRlID0gT1BFTjsKICAgICBtX3N1YnByb3RvY29sID0gbV9jaGFubmVsLT5zdWJwcm90
b2NvbCgpOworICAgIG1fZXh0ZW5zaW9ucyA9IG1fY2hhbm5lbC0+ZXh0ZW5zaW9ucygpOwogICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGVjMDcwNmRiNGY4NDhmNTc1NTFjOTg3
ZjI3YmM0NGUyZGM4MDQyNjguLjFlYzI1OWY3ODg0MWJmOTExM2Q1ZmQ0Mjg0NGNkYmQxYzUyOTk3
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEyNyw2ICsxMjcsOCBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAg
IEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAgIG1faGFuZHNoYWtlID0gYWRvcHRQdHIobmV3IFdl
YlNvY2tldEhhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBtX2RvY3VtZW50LCBtX3VzZUhpeGllNzZQ
cm90b2NvbCkpOwogICAgIG1faGFuZHNoYWtlLT5yZXNldCgpOworICAgIGlmICghbV91c2VIaXhp
ZTc2UHJvdG9jb2wgJiYgbV9kZWZsYXRlRnJhbWVyLmNhbkRlZmxhdGUoKSkKKyAgICAgICAgbV9o
YW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3NvcihtX2RlZmxhdGVGcmFtZXIuY3JlYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKCkpOwogICAgIGlmIChtX2lkZW50aWZpZXIpCiAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KG1fZG9jdW1lbnQsIG1faWRl
bnRpZmllciwgdXJsLCBtX2RvY3VtZW50LT51cmwoKSk7CiAgICAgcmVmKCk7CkBAIC0yMjgsNiAr
MjMwLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29u
KQogICAgICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwogICAgICAgICBp
ZiAobV9idWZmZXIpCiAgICAgICAgICAgICBza2lwQnVmZmVyKG1fYnVmZmVyU2l6ZSk7IC8vIFNh
dmUgbWVtb3J5LgorICAgICAgICBtX2RlZmxhdGVGcmFtZXIuZGlkRmFpbCgpOwogICAgICAgICBt
X2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZhbHNlOwogICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURh
dGEuY2xlYXIoKTsKICAgICB9CkBAIC02MTgsNiArNjIxLDEyIEBAIGJvb2wgV2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKCkKICAgICBBU1NFUlQobV9idWZmZXIgPCBmcmFtZUVuZCk7CiAg
ICAgQVNTRVJUKGZyYW1lRW5kIDw9IG1fYnVmZmVyICsgbV9idWZmZXJTaXplKTsKIAorICAgIE93
blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBpbmZsYXRlUmVzdWx0ID0gbV9kZWZsYXRlRnJhbWVy
LmluZmxhdGUoZnJhbWUpOworICAgIGlmICghaW5mbGF0ZVJlc3VsdC0+c3VjY2VlZGVkKCkpIHsK
KyAgICAgICAgZmFpbChpbmZsYXRlUmVzdWx0LT5mYWlsdXJlUmVhc29uKCkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVmFsaWRhdGUgdGhlIGZyYW1lIGRhdGEuCiAg
ICAgaWYgKFdlYlNvY2tldEZyYW1lOjppc1Jlc2VydmVkT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsK
ICAgICAgICAgZmFpbCgiVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogIiArIFN0cmluZzo6bnVt
YmVyKGZyYW1lLm9wQ29kZSkpOwpAQCAtMTAxMSw2ICsxMDIwLDEzIEBAIGJvb2wgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBj
aGFyKiBkYXRhCiAKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVj
a3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogICAgIFdl
YlNvY2tldEZyYW1lIGZyYW1lKG9wQ29kZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGRhdGFM
ZW5ndGgpOworCisgICAgT3duUHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IGRlZmxhdGVSZXN1bHQg
PSBtX2RlZmxhdGVGcmFtZXIuZGVmbGF0ZShmcmFtZSk7CisgICAgaWYgKCFkZWZsYXRlUmVzdWx0
LT5zdWNjZWVkZWQoKSkgeworICAgICAgICBmYWlsKGRlZmxhdGVSZXN1bHQtPmZhaWx1cmVSZWFz
b24oKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBWZWN0b3I8Y2hhcj4g
ZnJhbWVEYXRhOwogICAgIG1ha2VGcmFtZURhdGEoZnJhbWUsIGZyYW1lRGF0YSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IDRiYjI4YzlmMmIwNWFmMzQ5OTdiZTA3YTYyZjEyYmM0ZTk4MzU4MTguLjZkMWZlYmJj
YTA2ZTFlZDdkNWNlZTE1MGQ4NzYwYWY3ODA0NjIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
ICJXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
QEAgLTIzMSw2ICsyMzIsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxGaWxlUmVhZGVyTG9hZGVy
PiBtX2Jsb2JMb2FkZXI7CiAgICAgQmxvYkxvYWRlclN0YXR1cyBtX2Jsb2JMb2FkZXJTdGF0dXM7
CiAjZW5kaWYKKworICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgbV9kZWZsYXRlRnJhbWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY3Zjk1MzNhYmVlZWRlMGJjODAzMjY1MTQ4Mjk3MTQ2YzQ3MjU2OGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5jcHAKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIDogcHVibGlj
IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPiBjcmVhdGUoV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciogZnJhbWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBX
ZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoZnJhbWVyKSk7CisgICAgfQorICAgIHZpcnR1
YWwgfldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSgpIHsgfQorCisgICAgdmlydHVhbCBT
dHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHByb2Nl
c3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBPVkVSUklERSB7IHJldHVybiBtX2ZhaWx1
cmVSZWFzb247IH0KKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJh
bWUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciopOworCisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ciogbV9mcmFtZXI7CisgICAgYm9vbCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAgIFN0cmluZyBt
X2ZhaWx1cmVSZWFzb247Cit9OworCisvLyBGWElNRTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0
ZXIgdGhlIHNwZWNpZmljYXRpb24gbWF0dXJlZC4KK1dlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIqIGZyYW1lcikKKyAgICA6IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQt
ZGVmbGF0ZS1mcmFtZSIpCisgICAgLCBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3Jlc3BvbnNl
UHJvY2Vzc2VkKGZhbHNlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK1N0cmluZyBX
ZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCit7CisgICAg
cmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IC8vIE5vIHBhcmFtZXRlcgorfQorCitib29sIFdlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQoreworI2lmIFVTRShaTElCKQorICAg
IGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJS
ZWNlaXZlZCBkdXBsaWNhdGUgZGVmbGF0ZS1mcmFtZSByZXNwb25zZSI7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgbV9yZXNwb25zZVByb2Nlc3NlZCA9IHRydWU7CisKKyAgICBp
bnQgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzID0gMDsKKyAgICBpbnQgd2luZG93Qml0cyA9IDE1Owor
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBz
ZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3dfYml0cyIpOworICAgIGlmIChwYXJhbWV0
ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5lbmQoKSkgeworICAgICAgICB3aW5kb3dCaXRzID0gcGFy
YW1ldGVyLT5zZWNvbmQudG9JbnQoKTsKKyAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdp
bmRvd0JpdHMgPiAxNSkgeworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVk
IGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciI7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzKys7CisgICAg
fQorCisgICAgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSA9IFdl
YlNvY2tldERlZmxhdGVyOjpUYWtlT3ZlckNvbnRleHQ7CisgICAgcGFyYW1ldGVyID0gc2VydmVy
UGFyYW1ldGVycy5maW5kKCJub19jb250ZXh0X3Rha2VvdmVyIik7CisgICAgaWYgKHBhcmFtZXRl
ciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CisgICAgICAgIGlmICghcGFyYW1ldGVyLT5z
ZWNvbmQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZl
ZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6
OkRvTm90VGFrZU92ZXJDb250ZXh0OworICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsK
KyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWROdW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRl
cnMuc2l6ZSgpKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVj
dGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIG1fZnJhbWVyLT5lbmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOworICAg
IHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KKworRGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3Vs
dEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihm
cmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7
Cit9CisKK0RlZmxhdGVSZXN1bHRIb2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAg
ICBtX2ZyYW1lci0+cmVzZXREZWZsYXRlQ29udGV4dCgpOworfQorCit2b2lkIERlZmxhdGVSZXN1
bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3Vj
Y2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30K
KworSW5mbGF0ZVJlc3VsdEhvbGRlcjo6SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZs
YXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2Nl
ZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0luZmxhdGVSZXN1bHRI
b2xkZXI6On5JbmZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVzZXRJbmZs
YXRlQ29udGV4dCgpOworfQorCit2b2lkIEluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3Qg
U3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAg
bV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30KKworV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCisgICAgOiBtX2VuYWJsZWQoZmFsc2UpCit7
Cit9CisKK1Bhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKQoreworICAgIHJldHVybiBX
ZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OmNyZWF0ZSh0aGlzKTsKK30KKworYm9vbCBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKK3sKKyNpZiBVU0UoWkxJ
QikKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKKyNpZiBVU0UoWkxJQikKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVm
bGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1v
ZGUgbW9kZSkKK3sKKyAgICBtX2RlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSh3
aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2luZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNy
ZWF0ZSgpOworICAgIGlmICghbV9kZWZsYXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVy
LT5pbml0aWFsaXplKCkpIHsKKyAgICAgICAgbV9kZWZsYXRlci5jbGVhcigpOworICAgICAgICBt
X2luZmxhdGVyLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9lbmFibGVk
ID0gdHJ1ZTsKK30KKyNlbmRpZgorCitQYXNzT3duUHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdl
YlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQorewor
I2lmIFVTRShaTElCKQorICAgIE93blB0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiByZXN1bHQgPSBE
ZWZsYXRlUmVzdWx0SG9sZGVyOjpjcmVhdGUodGhpcyk7CisgICAgaWYgKCFlbmFibGVkKCkgfHwg
IVdlYlNvY2tldEZyYW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSB8fCAhZnJh
bWUucGF5bG9hZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAg
aWYgKCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVu
Z3RoKSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkpIHsKKyAgICAgICAgcmVzdWx0LT5mYWlsKCJG
YWlsZWQgdG8gY29tcHJlc3MgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CisgICAgfQorICAgIGZyYW1lLmNvbXByZXNzID0gdHJ1ZTsKKyAgICBmcmFtZS5wYXlsb2Fk
ID0gbV9kZWZsYXRlci0+ZGF0YSgpOworICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2RlZmxh
dGVyLT5zaXplKCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisjZWxzZQorICAgIHJl
dHVybiBEZWZsYXRlUmVzdWx0SG9sZGVyOjpjcmVhdGUodGhpcyk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0KCkKK3sKKyNpZiBV
U0UoWkxJQikKKyAgICBpZiAobV9kZWZsYXRlcikKKyAgICAgICAgbV9kZWZsYXRlci0+cmVzZXQo
KTsKKyNlbmRpZgorfQorCitQYXNzT3duUHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQoreworI2lmIFVT
RShaTElCKQorICAgIE93blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiByZXN1bHQgPSBJbmZsYXRl
UmVzdWx0SG9sZGVyOjpjcmVhdGUodGhpcyk7CisgICAgaWYgKCFmcmFtZS5jb21wcmVzcykKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgaWYgKCFlbmFibGVkKCkgfHwgIVdl
YlNvY2tldEZyYW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSkgeworICAgICAg
ICByZXN1bHQtPmZhaWwoIlJlY2VpdmVkIHVuZXhwZWN0ZWQgY29tcHJlc3NlZCBmcmFtZSIpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisgICAgaWYgKCFtX2luZmxh
dGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9p
bmZsYXRlci0+ZmluaXNoKCkpIHsKKyAgICAgICAgcmVzdWx0LT5mYWlsKCJGYWlsZWQgdG8gZGVj
b21wcmVzcyBmcmFtZSIpOworICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9
CisgICAgZnJhbWUuY29tcHJlc3MgPSBmYWxzZTsKKyAgICBmcmFtZS5wYXlsb2FkID0gbV9pbmZs
YXRlci0+ZGF0YSgpOworICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2luZmxhdGVyLT5zaXpl
KCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisjZWxzZQorICAgIHJldHVybiBJbmZs
YXRlUmVzdWx0SG9sZGVyOjpjcmVhdGUodGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyOjpyZXNldEluZmxhdGVDb250ZXh0KCkKK3sKKyNpZiBVU0UoWkxJQikK
KyAgICBpZiAobV9pbmZsYXRlcikKKyAgICAgICAgbV9pbmZsYXRlci0+cmVzZXQoKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRpZEZhaWwoKQoreworICAgIHJl
c2V0RGVmbGF0ZUNvbnRleHQoKTsKKyAgICByZXNldEluZmxhdGVDb250ZXh0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZUZyYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNTUyNjgyMTBkMGY3Mjg2OGI2YjI4MzljZTk3
NTRlZmQ5NTE1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcl9oCisjZGVmaW5lIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXJfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaWYgVVNFKFpMSUIpCisjaW5jbHVk
ZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIgorI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjsKKworY2xhc3MgRGVmbGF0
ZVJlc3VsdEhvbGRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RGVmbGF0ZVJl
c3VsdEhvbGRlcj4gY3JlYXRlKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVmbGF0ZVJlc3VsdEhvbGRlcihmcmFtZXIp
KTsKKyAgICB9CisKKyAgICB+RGVmbGF0ZVJlc3VsdEhvbGRlcigpOworCisgICAgYm9vbCBzdWNj
ZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3N1Y2NlZWRlZDsgfQorICAgIFN0cmluZyBmYWlsdXJl
UmVhc29uKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsdXJlUmVhc29uOyB9CisKKyAgICB2b2lkIGZh
aWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29uKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBEZWZsYXRlUmVzdWx0SG9sZGVyKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqKTsKKworICAgIFdl
YlNvY2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQ7Cisg
ICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK2NsYXNzIEluZmxhdGVSZXN1bHRIb2xk
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+
IGNyZWF0ZShXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEluZmxhdGVSZXN1bHRIb2xkZXIoZnJhbWVyKSk7CisgICAgfQor
CisgICAgfkluZmxhdGVSZXN1bHRIb2xkZXIoKTsKKworICAgIGJvb2wgc3VjY2VlZGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zdWNjZWVkZWQ7IH0KKyAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsgfQorCisgICAgdm9pZCBmYWlsKGNvbnN0IFN0
cmluZyYgZmFpbHVyZVJlYXNvbik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgSW5mbGF0ZVJl
c3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKik7CisKKyAgICBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyKiBtX2ZyYW1lcjsKKyAgICBib29sIG1fc3VjY2VlZGVkOworICAgIFN0cmluZyBt
X2ZhaWx1cmVSZWFzb247Cit9OworCitjbGFzcyBXZWJTb2NrZXREZWZsYXRlRnJhbWVyIHsKK3B1
YmxpYzoKKyAgICBXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCk7CisKKyAgICBQYXNzT3duUHRyPFdl
YlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gY3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCk7CisK
KyAgICBib29sIGNhbkRlZmxhdGUoKSBjb25zdDsKKyAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAgIFBhc3NPd25QdHI8RGVmbGF0ZVJlc3VsdEhvbGRl
cj4gZGVmbGF0ZShXZWJTb2NrZXRGcmFtZSYpOworICAgIHZvaWQgcmVzZXREZWZsYXRlQ29udGV4
dCgpOworICAgIFBhc3NPd25QdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gaW5mbGF0ZShXZWJTb2Nr
ZXRGcmFtZSYpOworICAgIHZvaWQgcmVzZXRJbmZsYXRlQ29udGV4dCgpOworCisgICAgdm9pZCBk
aWRGYWlsKCk7CisKKyNpZiBVU0UoWkxJQikKKyAgICB2b2lkIGVuYWJsZURlZmxhdGUoaW50IHdp
bmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlKTsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIGJvb2wgbV9lbmFibGVkOworI2lmIFVTRShaTElCKQorICAgIE93
blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gbV9kZWZsYXRlcjsKKyAgICBPd25QdHI8V2ViU29ja2V0
SW5mbGF0ZXI+IG1faW5mbGF0ZXI7CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggM2YzYjQ1NzhkMzM1ODQxYjk5NjhkOGJjMDE1NDM2ZjJiYWRkNGY4NC4uMmEz
YzU3ZGJiNWFkZWM4M2YzOTYzYmM3NzA5NDFhMmMzODUwMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0z
Njc0LDYgKzM2NzQsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkg
ewogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggXAogICAgICAgICBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCisgICAgICAgIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIFwKICAgICAgICAgTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmggXApAQCAtMzY4NSw2ICszNjg2LDcgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAg
ICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAogICAgICAgICBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXAogICAgICAgICBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGI3NzdmZTA2NzM2MmU5ZmZkMmU4ZGE5ZmYxMzNhYTM1
ZTQyMDc5MDYuLjY1YzZlMzVmNmI3YTZkYzI0MGZiNWMwYjRjMjE1Y2EzMzRjM2ZjZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xMTk0LDYgKzExOTQsNyBAQAog
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvb3RzLmd5cDpvdHMn
LAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9zcWxpdGUvc3FsaXRl
Lmd5cDpzcWxpdGUnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9h
bmdsZS9zcmMvYnVpbGRfYW5nbGUuZ3lwOnRyYW5zbGF0b3JfZ2xzbCcsCisgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L3psaWIvemxpYi5neXA6emxpYicsCiAgICAgICAg
ICc8KGNocm9taXVtX3NyY19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAogICAgICAgICAn
PChsaWJqcGVnX2d5cF9wYXRoKTpsaWJqcGVnJywKICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggYWUxZWFjNzdkZjNhODFkMWZhMTc1ZmMzYmQ2ODM2MjEzOGQ5NzAyZS4uOTM5ZGNhNDI0Mzhj
NTI0ZjRhODg3ZDNlMWJkNjEyMDc5ZGY0NDlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTMzOSw2
ICsxMzM5LDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVGcmFtZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGVmZDAzMTIyNjUzNTBlM2Q1YTAxZjczMjBhZjM5ZTcy
NjczYjlmYTYuLjIwOGEwYmJlMjExNGE0NDM0MzhlMTcyZDM3YTFiZDI3MzU4M2NhNzEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDE1Myw2
ICsyNDE1MywxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
TW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29j
a2V0c1xXZWJTb2NrZXREZWZsYXRlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNi
NmM0NTFlYmVjNWRhYzc4MGUxZmMyMGFmMzIyNmZjOTI1ZWU0NC4uNzhkOWZlYzNiYjZkZDRkNmQz
ODk0MTZmNTljYmNmNGY2OWNjY2U3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM2Nyw2ICsxMzY3LDggQEAKIAkJNEExRTcx
OTYxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MTk0MTRFMTAxRjkwMDYyNkY5
RCAvKiBKU0hUTUxTaGFkb3dFbGVtZW50LmggKi87IH07CiAJCTRBMUU3MUE1MTRFMTA2QUMwMDYy
NkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEExRTcxQTMxNEUxMDZBQzAwNjI2RjlEIC8qIEpTU2hhZG93Um9vdC5j
cHAgKi87IH07CiAJCTRBMUU3MUE2MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MUE0MTRF
MTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLzsgfTsKKwkJNEEzOEJGNTAxNEZFMUMw
OTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEzOEJGNEUxNEZFMUMwOTAwNjEyNTEyIC8q
IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovOyB9OworCQk0QTM4QkY1MTE0RkUxQzA5MDA2
MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEzOEJGNEYxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIuaCAqLzsgfTsKIAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8q
IEZvbnRGZWF0dXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUu
Y3BwICovOyB9OwogCQk0QTZFOUZDNDEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlG
QzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTZFOUZDNzEzQzE3RDU3MDA0NkE3
RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1
cmVTZXR0aW5ncy5jcHAgKi87IH07CkBAIC04MjM0LDYgKzgyMzYsOCBAQAogCQk0QTFFNzE5NDE0
RTEwMUY5MDA2MjZGOUQgLyogSlNIVE1MU2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0hUTUxTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRBMUU3MUEzMTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSb290LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEExRTcxQTQxNEUxMDZBQzAwNjI2RjlEIC8q
IEpTU2hhZG93Um9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRv
d1Jvb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEEzOEJGNEUxNEZFMUMwOTAw
NjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA7IHBhdGggPSBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRBMzhCRjRGMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNkU5RkMxMTNDMTdEMUQw
MDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QTZFOUZDMjEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RmVhdHVyZVZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNkU5RkM1MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250
RmVhdHVyZVNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTcyMTEsNiArMTcyMTUsOCBAQAogCQk5N0FBQkNGNzE0RkEwOUI1MDA3NDU3QUUgLyogd2Vic29j
a2V0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNEEz
OEJGNEUxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovLAor
CQkJCTRBMzhCRjRGMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgg
Ki8sCiAJCQkJOTdBQUJDRjgxNEZBMDlENTAwNzQ1N0FFIC8qIENsb3NlRXZlbnQuaCAqLywKIAkJ
CQk5N0FBQkNGOTE0RkEwOUQ1MDA3NDU3QUUgLyogQ2xvc2VFdmVudC5pZGwgKi8sCiAJCQkJOTdB
QUJDRkExNEZBMDlENTAwNzQ1N0FFIC8qIERPTVdpbmRvd1dlYlNvY2tldC5pZGwgKi8sCkBAIC0y
NDM1Nyw2ICsyNDM2Myw3IEBACiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1
ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBa
ZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRCQkVENEQxNEZDREJBMTAwM0YwQjk4IC8q
IFN0eWxlUnVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEEzOEJGNTExNEZFMUMwOTAwNjEyNTEy
IC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjczMTAsNiAr
MjczMTcsNyBAQAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9s
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEJCRUQ0QzE0RkNEQkExMDAzRjBCOTggLyogU3R5
bGVSdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRBMzhCRjUwMTRGRTFDMDkwMDYxMjUxMiAv
KiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRhNTVi
ZDVhNDliZjcyMTFlYWRkYTUzYWNkMWIzOGZiZmI3NDcwMGMuLmU5M2M2ZWI4MmU4Mjk5NWM4NGQw
NzkxOTBmNjhiNzY5ZTYyYWI2ODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wMi0yOSAg
S2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkaW5n
IFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTIyCisKKyAgICAgICAgQWRkZWQgdGVz
dHMgZm9yIFdlYlNvY2tldCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4gQWxzbyB1cGRhdGVkIHNv
bWUKKyAgICAgICAgdGVzdHMgdG8gZm9sbG93IHRoZSBjaGFuZ2UuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250
cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAg
ICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJp
dC1vbm9mZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5w
eTogQWRkZWQuCisgICAgICAgICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAg
ICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUtcGFyYW1ldGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHk6IEFkZGVkLgorICAgICAgICAoX2dl
dF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IpOgorICAgICAgICAod2ViX3NvY2tl
dF9kb19leHRyYV9oYW5kc2hha2UpOgorICAgICAgICAod2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1m
YWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weToKKyAgICAgICAg
KF9yZXRyaWV2ZV9mcmFtZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOiBTa2lwcyB0ZXN0cyByZWx5IG9uIHpsaWIK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOiBEaXR0by4KKwogMjAxMi0wMi0yOSAgR2F2
aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgJ3NvdXJj
ZScgcHJvcGVydHkgb2YgUmVnRXhwIGluc3RhbmNlIGNhbm5vdCBiZSAiIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNv
bnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY0MWVjNDczZDZiZTIxYzFjMDYwMTAyOWZmYzVmYTM5Y2NiZjM4MjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nv
bXByZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09O
U09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUKK1Rlc3Qg
d2hldGhlciBhIGNvbXByZXNzZWQgY29udHJvbCBmcmFtZSBpcyByZWplY3RlZAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9s
LWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMDg4Yzc5OWJlNDEx
YzEyMjgxMmE1MDk0MmZhODM5ODM4MDA5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFt
ZS5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBhIGNvbXByZXNzZWQgY29udHJvbCBmcmFt
ZSBpcyByZWplY3RlZCIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDAp
OworCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZSIpOwordmFyIGNsb3NlRXZlbnQ7
CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNh
bGxlZC4iKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZh
ciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMg
Y2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7Cit9OworCit3cy5vbmNs
b3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVk
LiIpOworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2
ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVz
c2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMTJlOWM0NTIyYjMxODU4Nzg0
NmZiMTYwMTYxOTc5YThiM2IyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZV93c2gu
cHkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KK2lt
cG9ydCB6bGliCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgor
ICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKKyAgICAgICAgemxpYi5aX0RFRkFVTFRf
Q09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKKyAgICBjb21wcmVz
c2VkX21lc3NhZ2UgPSBjb21wcmVzcy5jb21wcmVzcygnY2xvc2UgbWVzc2FnZScpCisgICAgY29t
cHJlc3NlZF9tZXNzYWdlICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAg
IGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzZWRfbWVzc2FnZVs6LTRdCisgICAgaGVhZGVy
ID0gc3RyZWFtLmNyZWF0ZV9oZWFkZXIoCisgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NM
T1NFLCBwYXlsb2FkX2xlbmd0aD1sZW4oY29tcHJlc3NlZF9tZXNzYWdlKSwKKyAgICAgICAgZmlu
PTEsIHJzdjE9MSwgcnN2Mj0wLCByc3YzPTAsIG1hc2s9RmFsc2UpCisgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlKGhlYWRlciArIGNvbXByZXNzZWRfbWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1j
b21wLWJpdC1vbm9mZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU2MmZlZjNkZTZmMGZlNDA4MGVhMmQzNTIzZjI5NWI0Mzg2MjNmMzMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjAgQEAKK1Rlc3QgY29tcHJlc3Npb24gZW5hYmxlZC9kaXNhYmxlZCBmcmFtZSByZWNlaXZpbmcu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU2VuZGluZyBtZXNzYWdlOiAiSGVsbG8i
CitQQVNTIGV2ZW50LmRhdGEgaXMgJ0hlbGxvJworU2VuZGluZyBtZXNzYWdlOiAiRGlzYWJsZUNv
bXByZXNzaW9uIgorUEFTUyBldmVudC5kYXRhIGlzICdEaXNhYmxlQ29tcHJlc3Npb24nCitTZW5k
aW5nIG1lc3NhZ2U6ICJXb3JsZCIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnV29ybGQnCitTZW5kaW5n
IG1lc3NhZ2U6ICJFbmFibGVDb21wcmVzc2lvbiIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnRW5hYmxl
Q29tcHJlc3Npb24nCitTZW5kaW5nIG1lc3NhZ2U6ICJHb29kYnllIgorUEFTUyBldmVudC5kYXRh
IGlzICdHb29kYnllJworb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9u
b2ZmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTMyYWM1N2JiOGY4YmI5MDZmYWE0MmI0MzM0YmYyZmMyNzhh
Njc2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sCkBAIC0wLDAgKzEs
NjAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGNvbXByZXNzaW9uIGVuYWJs
ZWQvZGlzYWJsZWQgZnJhbWUgcmVjZWl2aW5nLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3Rv
Y29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKK3ZhciB3czsKK3ZhciBtZXNzYWdl
SW5kZXg7CisKK3ZhciBtZXNzYWdlcyA9IFsKKyAgICAiSGVsbG8iLAorICAgICJEaXNhYmxlQ29t
cHJlc3Npb24iLCAvLyBUaGlzIGRpc2FibGVzIGNvbXByZXNzaW9uCisgICAgIldvcmxkIiwKKyAg
ICAiRW5hYmxlQ29tcHJlc3Npb24iLCAvLyBUaGlzIGVuYWJsZXMgY29tcHJlc3Npb24KKyAgICAi
R29vZGJ5ZSIKK107CisKK3dzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lIik7CisKK3dzLm9ub3BlbiA9IGZ1bmN0
aW9uKGV2ZW50KQoreworICAgIG1lc3NhZ2VJbmRleCA9IDA7CisgICAgZGVidWcoIlNlbmRpbmcg
bWVzc2FnZTogXCIiICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICJcIiIpOworICAgIHdzLnNl
bmQobWVzc2FnZXNbbWVzc2FnZUluZGV4XSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICInIiArIG1lc3NhZ2VzW21l
c3NhZ2VJbmRleF0gKyAiJyIpOworICAgIGlmIChtZXNzYWdlSW5kZXggPT09IG1lc3NhZ2VzLmxl
bmd0aCAtIDEpCisgICAgICAgIHdzLmNsb3NlKCk7CisgICAgZWxzZSB7CisgICAgICAgIG1lc3Nh
Z2VJbmRleCArPSAxOworICAgICAgICBkZWJ1ZygiU2VuZGluZyBtZXNzYWdlOiBcIiIgKyBtZXNz
YWdlc1ttZXNzYWdlSW5kZXhdICsgIlwiIik7CisgICAgICAgIHdzLnNlbmQobWVzc2FnZXNbbWVz
c2FnZUluZGV4XSk7CisgICAgfQorfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQor
eworICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2ZW50ID0g
ZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZh
bGlkLXBhcmFtZXRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNhMjRkMjhjYzIzM2I3YTVm
NjM0OTNiOTVkMGY4MWJhN2YzNGRiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFt
ZXRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWNl
aXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyCitDT05TT0xFIE1FU1NBR0U6
IFJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlcgorQ09OU09MRSBNRVNT
QUdFOiBSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJhbWV0ZXIKK0NPTlNPTEUg
TUVTU0FHRTogUmVjZWl2ZWQgaW52YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFtZXRlcgor
Q09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1l
dGVyCitUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgaW52YWxpZCBkZWZsYXRlLWZyYW1l
IHBhcmFtZXRlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdGluZyBwYXJh
bWV0ZXI6ICJ4LWZvbyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIGZhbHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz03Igor
b25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UK
K1Rlc3RpbmcgcGFyYW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTE2Igorb25jbG9zZSgpIHdhcyBj
YWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3RpbmcgcGFyYW1l
dGVyOiAibm9fY29udGV4dF90YWtlb3Zlcj1mb28iCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BB
U1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJtYXhf
d2luZG93X2JpdHM9ODsgbm9fY29udGV4dF90YWtlb3ZlcjsgeC1mb28iCitvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZh
bGlkLXBhcmFtZXRlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWE1ZmJkMDZkMjAyYTNlY2M4MDJhZTI0YTc3OWVmNjRiOTM5YTljMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgaW52YWxpZCBk
ZWZsYXRlLWZyYW1lIHBhcmFtZXRlcnMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xF
bmFibGVkIiwgMCk7CisKK3ZhciBjbG9zZUV2ZW50OworCit2YXIgdGVzdENhc2UgPSBbCisgICAg
IngtZm9vIiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTciLAorICAgICJtYXhfd2luZG93X2JpdHM9
MTYiLAorICAgICJub19jb250ZXh0X3Rha2VvdmVyPWZvbyIsCisgICAgIm1heF93aW5kb3dfYml0
cz04OyBub19jb250ZXh0X3Rha2VvdmVyOyB4LWZvbyIKK107CisKK2Z1bmN0aW9uIGRvVGVzdChp
bmRleCkKK3sKKyAgICB2YXIgcGFyYW1ldGVyID0gdGVzdENhc2VbaW5kZXhdOworICAgIHZhciB1
cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZy
YW1lLWludmFsaWQtcGFyYW1ldGVyPyIgKyBlbmNvZGVVUkkocGFyYW1ldGVyKTsKKyAgICB2YXIg
d3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisKKyAgICBkZWJ1ZygiVGVzdGluZyBwYXJhbWV0ZXI6
IFwiIiArIHBhcmFtZXRlciArICJcIiIpOworCisgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgICAg
IHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVz
c2FnZSArICJcIikiKTsKKyAgICB9OworCisgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAgICAg
ICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQu
d2FzQ2xlYW4iKTsKKyAgICAgICAgaWYgKGluZGV4ID09PSB0ZXN0Q2FzZS5sZW5ndGggLSAxKQor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRv
VGVzdChpbmRleCArIDEpOworICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFt
ZXRlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4Y2My
NWM4ZDdjY2MxYTY3NmFkMWVmNjg0ZDYzMDk5MTI4ZmYwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUt
aW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5CkBAIC0wLDAgKzEsNTYgQEAKKyMgQ29weXJpZ2h0IDIw
MTIsIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCitpbXBvcnQgdXJsbGliCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtl
Citmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBpbXBvcnQgY29tcHV0ZV9hY2Nl
cHQKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAg
cmVzb3VyY2VzID0gcmVxdWVzdC53c19yZXNvdXJjZS5zcGxpdCgnPycsIDEpCisgICAgcGFyYW1l
dGVycyA9IE5vbmUKKyAgICBpZiBsZW4ocmVzb3VyY2VzKSA9PSAyOgorICAgICAgICBwYXJhbWV0
ZXJzID0gdXJsbGliLnVucXVvdGUocmVzb3VyY2VzWzFdKQorCisgICAgbWVzc2FnZSA9ICdIVFRQ
LzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisgICAgbWVzc2FnZSArPSAnVXBncmFk
ZTogd2Vic29ja2V0XHJcbicKKyAgICBtZXNzYWdlICs9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJc
bicKKyAgICBtZXNzYWdlICs9ICdTZWMtV2ViU29ja2V0LUFjY2VwdDogJXNcclxuJyAlIGNvbXB1
dGVfYWNjZXB0KHJlcXVlc3QuaGVhZGVyc19pblsnU2VjLVdlYlNvY2tldC1LZXknXSlbMF0KKyAg
ICBtZXNzYWdlICs9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6IHgtd2Via2l0LWRlZmxhdGUt
ZnJhbWUnCisgICAgaWYgcGFyYW1ldGVyczoKKyAgICAgICAgbWVzc2FnZSArPSAnOyAlc1xyXG4n
ICUgcGFyYW1ldGVycworICAgIGVsc2U6CisgICAgICAgIG1lc3NhZ2UgKz0gJ1xyXG4nCisgICAg
bWVzc2FnZSArPSAnXHJcbicKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZSkK
KyAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQWJvcnQgdGhlIGNv
bm5lY3Rpb24nKSAjIFByZXZlbnRzIHB5d2Vic29ja2V0IGZyb20gc2VuZGluZyBpdHMgb3duIGhh
bmRzaGFrZSBtZXNzYWdlLgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFy
YW1ldGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjYzZmUzOTRhNDYyNGExODRjM2RiMmY0
NzI4OTQ0NDlkMGQ0MDRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzMCBAQAorVGVzdCBXZWJTb2NrZXQgZGVmbGF0ZS1mcmFtZSBleHRlbnNp
b24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdGluZyBxdWVyeTogIm1heF93
aW5kb3dfYml0cz04IgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0
ZS1mcmFtZScpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ21heF93
aW5kb3dfYml0cz04JykgIT0gLTEgaXMgdHJ1ZQorUEFTUyBldmVudC5kYXRhIGlzIGZpcnN0TWVz
c2FnZQorUEFTUyBldmVudC5kYXRhIGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3YXMgY2Fs
bGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1Rlc3RpbmcgcXVlcnk6ICJu
b19jb250ZXh0X3Rha2VvdmVyIgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQt
ZGVmbGF0ZS1mcmFtZScpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2go
J25vX2NvbnRleHRfdGFrZW92ZXInKSAhPSAtMSBpcyB0cnVlCitQQVNTIGV2ZW50LmRhdGEgaXMg
Zmlyc3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2FnZQorb25jbG9zZSgp
IHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorVGVzdGluZyBx
dWVyeTogIm1heF93aW5kb3dfYml0cz04Jm5vX2NvbnRleHRfdGFrZW92ZXIiCitQQVNTIHdzLmV4
dGVuc2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMgdHJ1ZQor
UEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbWF4X3dpbmRvd19iaXRzPTgnKSAhPSAtMSBpcyB0
cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNoKCdub19jb250ZXh0X3Rha2VvdmVyJykgIT0g
LTEgaXMgdHJ1ZQorUEFTUyBldmVudC5kYXRhIGlzIGZpcnN0TWVzc2FnZQorUEFTUyBldmVudC5k
YXRhIGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGI3N2U0NzE4MTdlMjM0N2NmYjgzNmZkOWUzYWFhM2VmYjg1YzZm
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDkwIEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgZGVmbGF0ZS1mcmFtZSBl
eHRlbnNpb24uIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisK
K3ZhciBjbG9zZUV2ZW50OwordmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFyIHF1ZXJp
ZXMgPSBbCisgICAgIm1heF93aW5kb3dfYml0cz04IiwKKyAgICAibm9fY29udGV4dF90YWtlb3Zl
ciIsCisgICAgIm1heF93aW5kb3dfYml0cz04Jm5vX2NvbnRleHRfdGFrZW92ZXIiCitdOworCisv
LyBUaGUgZmlyc3QgbWVzc2FnZSBjb25zaXN0cyBvZiBhIGxvdCBvZiAnYicgYW5kIGEgZmV3ICdh
JyBhdCB0aGUgaGVhZCBhbmQKKy8vIHRoZSB0YWlsLCB3aGlsZSB0aGUgc2Vjb25kIG9uZSBjb25z
aXN0cyBvZiAnYScuCit2YXIgZmlyc3RNZXNzYWdlID0gJyc7Cit2YXIgc2Vjb25kTWVzc2FnZSA9
ICcnOworZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9
ICdhJzsKKyAgICBzZWNvbmRNZXNzYWdlICs9ICdhJzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAyNDsgKytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9ICdiJzsKKyAgICBzZWNvbmRNZXNzYWdl
ICs9ICdhJzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgIGZpcnN0TWVz
c2FnZSArPSAnYSc7CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9CisKK2Z1bmN0aW9uIGRv
VGVzdChxdWVyeUluZGV4KQoreworICAgIHZhciBxdWVyeSA9IHF1ZXJpZXNbcXVlcnlJbmRleF07
CisgICAgZGVidWcoIlRlc3RpbmcgcXVlcnk6IFwiIiArIHF1ZXJ5ICsgIlwiIik7CisKKyAgICB2
YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0
ZS1mcmFtZT8iICsgcXVlcnk7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgbWVz
c2FnZUluZGV4ID0gMDsKKworICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJ3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVm
bGF0ZS1mcmFtZScpICE9IC0xIik7CisgICAgICAgIHBhcmFtZXRlcnMgPSBxdWVyeS5zcGxpdCgn
JicpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICBzaG91bGRCZVRydWUoIndzLmV4dGVuc2lvbnMuc2VhcmNoKCciICsgcGFy
YW1ldGVyc1tpXSArICInKSAhPSAtMSIpOworICAgICAgICB3cy5zZW5kKGZpcnN0TWVzc2FnZSk7
CisgICAgfTsKKworICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgaWYgKG1lc3NhZ2VJbmRleCA9PT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2
ZW50LmRhdGEiLCAiZmlyc3RNZXNzYWdlIik7CisgICAgICAgICAgICBtZXNzYWdlSW5kZXggKz0g
MQorICAgICAgICAgICAgd3Muc2VuZChzZWNvbmRNZXNzYWdlKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC5kYXRhIiwgInNlY29uZE1lc3NhZ2UiKTsKKyAg
ICAgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgd3Mub25jbG9z
ZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMg
Y2FsbGVkLiIpOworICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAocXVlcnlJbmRleCA9PT0g
cXVlcmllcy5sZW5ndGggLSAxKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGRvVGVzdChxdWVyeUluZGV4ICsgMSk7CisgICAgfTsKK30KKwor
ZG9UZXN0KDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9k
ZWZsYXRlLWZyYW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNiNzgzODU1MDQyNzQ4
M2E5MzI2Y2U4ZmE2MGMxNzk4MWFkYmQ1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkKQEAg
LTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCB1cmxwYXJzZQorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJv
Y2Vzc29yCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBFeHRlbnNpb25Q
cm9jZXNzb3JJbnRlcmZhY2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0
ZW5zaW9uUGFyYW1ldGVyCisKKworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKK19FTkFC
TEVfTUVTU0FHRSA9IHUnRW5hYmxlQ29tcHJlc3Npb24nCitfRElTQUJMRV9NRVNTQUdFID0gdSdE
aXNhYmxlQ29tcHJlc3Npb24nCisKKworZGVmIF9nZXRfZGVmbGF0ZV9mcmFtZV9leHRlbnNpb25f
cHJvY2Vzc29yKHJlcXVlc3QpOgorICAgIGZvciBleHRlbnNpb25fcHJvY2Vzc29yIGluIHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnM6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXh0ZW5z
aW9uX3Byb2Nlc3NvciwgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAg
ICAgIHJldHVybiBleHRlbnNpb25fcHJvY2Vzc29yCisgICAgcmV0dXJuIE5vbmUKKworCitkZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcHJvY2Vzc29yID0g
X2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVxdWVzdCkKKyAgICBpZiBu
b3QgcHJvY2Vzc29yOgorICAgICAgICByZXR1cm4KKyAgICByID0gcmVxdWVzdC53c19yZXNvdXJj
ZS5zcGxpdCgnPycsIDEpCisgICAgaWYgbGVuKHIpID09IDE6CisgICAgICAgIHJldHVybgorICAg
IHBhcmFtZXRlcnMgPSB1cmxwYXJzZS5wYXJzZV9xcyhyWzFdLCBrZWVwX2JsYW5rX3ZhbHVlcz1U
cnVlKQorICAgIGlmICdtYXhfd2luZG93X2JpdHMnIGluIHBhcmFtZXRlcnM6CisgICAgICAgIHdp
bmRvd19iaXRzID0gaW50KHBhcmFtZXRlcnNbJ21heF93aW5kb3dfYml0cyddWzBdKQorICAgICAg
ICBwcm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX3dpbmRvd19iaXRzKHdpbmRvd19iaXRzKQorICAgIGlm
ICdub19jb250ZXh0X3Rha2VvdmVyJyBpbiBwYXJhbWV0ZXJzOgorICAgICAgICBwcm9jZXNzb3Iu
c2V0X3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1ZSkKKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHByb2Nlc3NvciA9IF9nZXRfZGVmbGF0ZV9m
cmFtZV9leHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpCisgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlm
IGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNl
KGxpbmUsIHVuaWNvZGUpOgorICAgICAgICAgICAgaWYgcHJvY2Vzc29yOgorICAgICAgICAgICAg
ICAgIGlmIGxpbmUgPT0gX0VOQUJMRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgICAgICBwcm9j
ZXNzb3IuZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKKyAgICAgICAgICAgICAgICBlbGlm
IGxpbmUgPT0gX0RJU0FCTEVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29y
LmRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oKQorICAgICAgICAgICAgcmVxdWVzdC53c19z
dHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAgIGlmIGxp
bmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBi
aW5hcnk9VHJ1ZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0
ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBl
Y3RlZC50eHQKaW5kZXggYWRmMDZiNjUxZDZiNDcxNWI0YTFiOTdjODdjOTYwMjMzYWFlMWZhMC4u
Y2M5OWFmMGRkMTY1ZDUzZjQwNjcwYzVjNTg2YWVjOTllZmI2ODNjYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1i
eS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhl
YWRlci1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IFJlY2Vp
dmVkIHVuZXhwZWN0ZWQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcgorQ09OU09MRSBN
RVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGV4dGVuc2lvbjogeC1mb28KIFRlc3Qgd2hldGhl
ciBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zIGhlYWRlci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5k
LWZpbGUtYmxvYl93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQppbmRleCBkYWE0NDA0NzFhZjgzYWIyNjI4Njc1
MWMzZTE4ODgyZjQ4NGRiNzhjLi43OTIwMzRjZmUzYjcwZTA0ODNiNWRlOTVlNGUxNzAxZDk3Nzgy
Y2EzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQpAQCAtMiw2ICsyLDE0IEBA
IGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KIGZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBtc2d1dGlsCiAKIAorZGVmIF9yZXRyaWV2ZV9mcmFtZShzdHJlYW0pOgorICAgICMg
RklYTUU6IFVzZSBiZXR0ZXIgQVBJLgorICAgIGZyYW1lID0gc3RyZWFtLl9yZWNlaXZlX2ZyYW1l
X2FzX2ZyYW1lX29iamVjdCgpCisgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzdHJlYW0uX29wdGlv
bnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKKyAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihm
cmFtZSkKKyAgICByZXR1cm4gZnJhbWUKKworCiBkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2UocmVxdWVzdCk6CiAgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCiAKQEAgLTEwLDEyICsx
OCwxMSBAQCBkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgogICAgIGV4cGVj
dGVkX21lc3NhZ2VzID0gWydIZWxsbywgd29ybGQhJ10KIAogICAgIGZvciB0ZXN0X251bWJlciwg
ZXhwZWN0ZWRfbWVzc2FnZSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfbWVzc2FnZXMpOgotICAgICAg
ICAjIEZJWE1FOiBVc2UgYmV0dGVyIEFQSS4KLSAgICAgICAgb3Bjb2RlLCBwYXlsb2FkLCBmaW5h
bCwgdW51c2VkX3Jlc2VydmVkMSwgdW51c2VkX3Jlc2VydmVkMiwgdW51c2VkX3Jlc2VydmVkMyA9
IHJlcXVlc3Qud3Nfc3RyZWFtLl9yZWNlaXZlX2ZyYW1lKCkKLSAgICAgICAgaWYgb3Bjb2RlID09
IGNvbW1vbi5PUENPREVfQklOQVJZIGFuZCBwYXlsb2FkID09IGV4cGVjdGVkX21lc3NhZ2UgYW5k
IGZpbmFsOgorICAgICAgICBmcmFtZSA9IF9yZXRyaWV2ZV9mcmFtZShyZXF1ZXN0LndzX3N0cmVh
bSkKKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZIGFuZCBm
cmFtZS5wYXlsb2FkID09IGV4cGVjdGVkX21lc3NhZ2UgYW5kIGZyYW1lLmZpbjoKICAgICAgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdQQVNTOiBNZXNzYWdlICMlZC4nICUg
dGVzdF9udW1iZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAjJWQ6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZnJh
bWU6IG9wY29kZSA9ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0gJXInICUgKHRlc3RfbnVtYmVy
LCBvcGNvZGUsIHBheWxvYWQsIGZpbmFsKSkKKyAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdGQUlMOiBNZXNzYWdlICMlZDogUmVjZWl2ZWQgdW5leHBlY3RlZCBmcmFt
ZTogb3Bjb2RlID0gJXIsIHBheWxvYWQgPSAlciwgZmluYWwgPSAlcicgJSAodGVzdF9udW1iZXIs
IGZyYW1lLm9wY29kZSwgZnJhbWUucGF5bG9hZCwgZnJhbWUuZmluKSkKIAogCiBkZWYgYWxsX2Rp
c3RpbmN0X2J5dGVzKCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tp
cHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IGMyNWExYzI5YTNj
ZmY0M2U2OGUwM2YyZThmODM3M2JhOTRhNTc5ZjUuLjhjN2M1Y2M3N2I2MjU2NGViMGU5YTEwZjZl
YzE3ZjBjZGJlNDU5ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lw
cGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xMjgwLDYgKzEy
ODAsMTIgQEAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2Uub3V0c2lkZXNvdXJjZS5o
dG1sCiAjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgbWlzbWF0Y2ggcmVmdGVzdCB3aWxsIGZh
aWwgYXMgaW50ZW5kZWQgaWYgYm90aCByZXN1bHRzIGFyZSBzYW1lLgogZmFzdC9oYXJuZXNzL3Nh
bXBsZS1mYWlsLW1pc21hdGNoLXJlZnRlc3QuaHRtbAogCisjIFVTRShaTElCKSBpcyBkaXNhYmxl
ZAoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJh
bWUuaHRtbAoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWlu
dmFsaWQtcGFyYW1ldGVyLmh0bWwKK2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbAoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1sCisKICMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBUZXN0cyB3aGljaCBhbHNvIGZhaWwg
aW4gb3RoZXIgcGxhdGZvcm1zCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDVhOWZiYjIzYmJjMGQ4Y2FkMDc2YWU2
ZDBiMDZlMzRkOTBmYjM0NjkuLjg2ZDU1N2Q5OWZkMTQ2ZDQyODY4OWY2NzNkYjNiZTg0YTNjNjE4
NWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjU1LDYgKzI1NSwxMiBAQCBmYXN0L211
dGF0aW9uL29ic2VydmUtY2hpbGRMaXN0Lmh0bWwKIGZhc3QvbXV0YXRpb24vb2JzZXJ2ZS1leGNl
cHRpb25zLmh0bWwKIGZhc3QvbXV0YXRpb24vb2JzZXJ2ZS1zdWJ0cmVlLmh0bWwKIAorIyBVU0Uo
WkxJQikgaXMgZGlzYWJsZWQuCitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXBy
ZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbAoraHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sCitodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLmh0
bWwKKwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyAgICAgICBGZWF0dXJlIG5vdCB5ZXQgc3Vw
cG9ydGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0gIwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129663</attachid>
            <date>2012-03-01 01:33:36 -0800</date>
            <delta_ts>2012-03-01 17:59:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77522-20120301183334.patch</filename>
            <type>text/plain</type>
            <size>58728</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
N2UxY2M1MjIwZTQ4MDFhOGRjOWIyOWE1M2E5MzQzZmE4NDY0YjIzLi5lMGJhMzcxMWM2YTkzZTZj
OGRlNjA3MjIwNWNhMDU0MWIwNjg4ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMi0yOSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wMi0y
OSAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAg
IFtRdF1bV0syXSBHZXQgcmlkIG9mIHRoZSAjaWZkZWYgbWVzcyBpbiBMYXllclRyZWVIb3N0W1By
b3h5XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDZiYzFiM2ZmZjI2Y2U2NmYzNWEwNGM4MjU4YmU4ZTM2YzFkMmFj
NzkuLmUyN2U1YjhkNzBhNDc3YThhZDA4YWY2ZjRjYzY0Y2VjYjExNTA0OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2OSBAQAorMjAxMi0wMi0yOSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFU
RSBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3NTIyCisKKyAgICAgICAgQWRkIFdlYlNvY2tldERlZmxhdGVGcmFtZXIgY2xhc3Mgd2hp
Y2ggaGFuZGxlcyBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4KKyAgICAgICAgVGhpcyBjbGFzcyBl
bmNhcHN1bGF0ZXMgV2ViU29ja2V0RGVmbGF0ZXIgYW5kIFdlYlNvY2tldEluZmxhdGVyIGNsYXNz
ZXMsCisgICAgICAgIHdoaWNoIGRlcGVuZCBvbiB6bGliLCBzbyB0aGF0IFdlYlNvY2tldENoYW5u
ZWwgaXMgbm90IG5lY2Vzc2FyeSB0byBhd2FyZQorICAgICAgICB6bGliIGRlcGVuZGVuY3kuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgVGVzdHM6IGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZS1jb21wLWJpdC1vbm9mZi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1l
LXBhcmFtZXRlci5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci4oY3BwfGgpCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTog
RGl0dG8uCisgICAgICAgICogVGFyZ2V0LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5n
eXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDogQWRkZWQgemxp
YiBkZXBlbmRlbmN5LgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBB
ZGRlZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLihjcHB8aCkKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHdlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ29ubmVjdCk6IFNl
dCBtX2V4dGVuc2lvbnMuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOiBBZGQgZGVm
bGF0ZS1mcmFtZSBleHRlbnNpb24gcHJvY2Vzc29yIHRvIFdlYlNvY2tldEhhbnNoYWtlIGlmIGRl
ZmxhdGUgY2FuIHVzZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmZhaWwp
OiBDYWxsIG1fZGVmbGF0ZUZyYW1lci5kaWRGYWlsKCkuCisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUpOiBEZWNvbXByZXNzIGZyYW1lcyBpZiBuZWVkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOiBDb21wcmVz
cyBmcmFtZXMgaWYgcG9zc2libGUuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvbkRl
ZmxhdGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRl
RnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU6On5XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpXZWJTb2NrZXRFeHRlbnNpb25E
ZWZsYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lOjpoYW5kc2hha2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcik6CisgICAgICAgIChXZWJD
b3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjp+RGVmbGF0ZVJlc3VsdEhvbGRlcik6CisgICAgICAg
IChXZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsKToKKyAgICAgICAgKFdlYkNvcmU6
OkluZmxhdGVSZXN1bHRIb2xkZXI6OkluZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5mbGF0ZVJlc3VsdEhvbGRlcjo6fkluZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5mbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblByb2Nl
c3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURl
ZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxh
dGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6Omlu
ZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXRJ
bmZsYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjpkaWRGYWlsKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERlZmxhdGVSZXN1bHRIb2xk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6c3VjY2VlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWx1cmVSZWFzb24pOgor
ICAgICAgICAoSW5mbGF0ZVJlc3VsdEhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmZsYXRl
UmVzdWx0SG9sZGVyOjpzdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5mbGF0ZVJlc3Vs
dEhvbGRlcjo6ZmFpbHVyZVJlYXNvbik6CisgICAgICAgIChXZWJTb2NrZXREZWZsYXRlRnJhbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZWQpOgor
CiAyMDEyLTAyLTI5ICBKYXNvbiBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgog
CiAgICAgICAgIFtCbGFja0JlcnJ5XU1ha2UgYWJvdXQ6Y2FjaGUgZmVhdHVyZSBhdmFpbGFibGUg
aW4gcmVsZWFzZSB2ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4
IDM3NTcwNWE5MmQ5M2ZiYWVmMTkxZWI1Y2U2M2JiOWFhOTQ2OWY2ZDQuLmZhNGYzZGZjOTQ1ZmQw
OTAyMmEzYWRjMWEyNzg5YjQzMGJkNDczMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgKQEAgLTEyMDMsNCArMTIwMyw4IEBACiAjZGVmaW5lIFdURl9VU0VfV1RGVVJMIDAKICNl
bmRpZgogCisjaWYgIVBMQVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oRUZMKQorI2RlZmluZSBXVEZf
VVNFX1pMSUIgMQorI2VuZGlmCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBhMmY1NGEzNTIyOGRlMWY4YzYyOWJmNzVlMDI2NWE1Mzk0YWQyMWVi
Li41NTZjNTljOGRmYjNjZWM0Y2Q3ODg4ZmU2MDIyMjQ2NmQ5ZGIyZjVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjA2Niw2ICsyMDY2LDcgQEAgSUYgKEVOQUJMRV9XRUJfU09DS0VUUykKICAg
ICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlci5jcHAKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKICAg
ICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisgICAgICAgIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAogICAgICAgICBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKICAgICAgICAg
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKICAgICAgICAgTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCA3ZTE4NWQ5MTRjZjljNDcwNjU5ZGRiYmYyZjQ4OTAwZGEzZmY3
ODYyLi4xOWI2ODQ4OWEyYTAwY2E2ZGE4ZGQyOTg1Zjc3MjQ4ZDc3YzhkNGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMDcsNiArMTAwNyw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMzZkYmI2ZjMyYzI0OTgzYzIwZjg1OGUwZGFj
Nzc2MWZiNjliMTJhNC4uN2RkODU0ZWQxNTJhMzIxZjA0OTIxMTJjZTU1YTdmMTA5ZTg5MzNlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
QEAgLTQ3OCw2ICs0NzgsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiAgICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9zdGF0ZSA9IE9QRU47CiAgICAg
bV9zdWJwcm90b2NvbCA9IG1fY2hhbm5lbC0+c3VicHJvdG9jb2woKTsKKyAgICBtX2V4dGVuc2lv
bnMgPSBtX2NoYW5uZWwtPmV4dGVuc2lvbnMoKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLm9wZW5FdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCBlYzA3MDZkYjRmODQ4ZjU3NTUxYzk4N2YyN2JjNDRlMmRjODA0MjY4Li4xZWMy
NTlmNzg4NDFiZjkxMTNkNWZkNDI4NDRjZGJkMWM1Mjk5N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0x
MjcsNiArMTI3LDggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsK
ICAgICBtX2hhbmRzaGFrZSA9IGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRIYW5kc2hha2UodXJsLCBw
cm90b2NvbCwgbV9kb2N1bWVudCwgbV91c2VIaXhpZTc2UHJvdG9jb2wpKTsKICAgICBtX2hhbmRz
aGFrZS0+cmVzZXQoKTsKKyAgICBpZiAoIW1fdXNlSGl4aWU3NlByb3RvY29sICYmIG1fZGVmbGF0
ZUZyYW1lci5jYW5EZWZsYXRlKCkpCisgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Q
cm9jZXNzb3IobV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKICAg
ICBpZiAobV9pZGVudGlmaWVyKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZVdlYlNvY2tldChtX2RvY3VtZW50LCBtX2lkZW50aWZpZXIsIHVybCwgbV9kb2N1bWVu
dC0+dXJsKCkpOwogICAgIHJlZigpOwpAQCAtMjI4LDYgKzIzMCw3IEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAgICAgbV9zaG91bGREaXNj
YXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICAgICAgaWYgKG1fYnVmZmVyKQogICAgICAgICAg
ICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOyAvLyBTYXZlIG1lbW9yeS4KKyAgICAgICAgbV9k
ZWZsYXRlRnJhbWVyLmRpZEZhaWwoKTsKICAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBm
YWxzZTsKICAgICAgICAgbV9jb250aW51b3VzRnJhbWVEYXRhLmNsZWFyKCk7CiAgICAgfQpAQCAt
NjE4LDYgKzYyMSwxMiBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAg
ICAgQVNTRVJUKG1fYnVmZmVyIDwgZnJhbWVFbmQpOwogICAgIEFTU0VSVChmcmFtZUVuZCA8PSBt
X2J1ZmZlciArIG1fYnVmZmVyU2l6ZSk7CiAKKyAgICBPd25QdHI8SW5mbGF0ZVJlc3VsdEhvbGRl
cj4gaW5mbGF0ZVJlc3VsdCA9IG1fZGVmbGF0ZUZyYW1lci5pbmZsYXRlKGZyYW1lKTsKKyAgICBp
ZiAoIWluZmxhdGVSZXN1bHQtPnN1Y2NlZWRlZCgpKSB7CisgICAgICAgIGZhaWwoaW5mbGF0ZVJl
c3VsdC0+ZmFpbHVyZVJlYXNvbigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwog
ICAgIC8vIFZhbGlkYXRlIHRoZSBmcmFtZSBkYXRhLgogICAgIGlmIChXZWJTb2NrZXRGcmFtZTo6
aXNSZXNlcnZlZE9wQ29kZShmcmFtZS5vcENvZGUpKSB7CiAgICAgICAgIGZhaWwoIlVucmVjb2du
aXplZCBmcmFtZSBvcGNvZGU6ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5vcENvZGUpKTsKQEAg
LTEwMTEsNiArMTAyMCwxMyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJT
b2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YQogCiAgICAgQVNTRVJU
KCEob3BDb2RlICYgfm9wQ29kZU1hc2spKTsgLy8gQ2hlY2tzIHdoZXRoZXIgIm9wQ29kZSIgZml0
cyBpbiB0aGUgcmFuZ2Ugb2Ygb3BDb2Rlcy4KICAgICBXZWJTb2NrZXRGcmFtZSBmcmFtZShvcENv
ZGUsIHRydWUsIGZhbHNlLCB0cnVlLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKworICAgIE93blB0cjxE
ZWZsYXRlUmVzdWx0SG9sZGVyPiBkZWZsYXRlUmVzdWx0ID0gbV9kZWZsYXRlRnJhbWVyLmRlZmxh
dGUoZnJhbWUpOworICAgIGlmICghZGVmbGF0ZVJlc3VsdC0+c3VjY2VlZGVkKCkpIHsKKyAgICAg
ICAgZmFpbChkZWZsYXRlUmVzdWx0LT5mYWlsdXJlUmVhc29uKCkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCiAgICAgVmVjdG9yPGNoYXI+IGZyYW1lRGF0YTsKICAgICBtYWtlRnJh
bWVEYXRhKGZyYW1lLCBmcmFtZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA0YmIyOGM5ZjJiMDVhZjM0
OTk3YmUwN2E2MmYxMmJjNGU5ODM1ODE4Li42ZDFmZWJiY2EwNmUxZWQ3ZDVjZWUxNTBkODc2MGFm
NzgwNDYyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFu
ZHNoYWtlLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0yMzEsNiArMjMyLDggQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8RmlsZVJlYWRlckxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIEJs
b2JMb2FkZXJTdGF0dXMgbV9ibG9iTG9hZGVyU3RhdHVzOwogI2VuZGlmCisKKyAgICBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyIG1fZGVmbGF0ZUZyYW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2Y5NTMzYWJlZWVkZTBi
YzgwMzI2NTE0ODI5NzE0NmM0NzI1NjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBAIC0wLDAg
KzEsMjU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KworI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVGcmFtZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZSA6IHB1YmxpYyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZT4gY3JlYXRlKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lKGZyYW1lcikpOworICAgIH0KKyAgICB2aXJ0dWFsIH5XZWJTb2NrZXRFeHRlbnNpb25E
ZWZsYXRlRnJhbWUoKSB7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBmYWlsdXJl
UmVhc29uKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9mYWlsdXJlUmVhc29uOyB9CisKK3ByaXZhdGU6
CisgICAgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIqKTsKKworICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIG1fZnJhbWVyOworICAgIGJvb2wg
bV9yZXNwb25zZVByb2Nlc3NlZDsKKyAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOworfTsKKwor
Ly8gRlhJTUU6IFJlbW92ZSB2ZW5kb3IgcHJlZml4IGFmdGVyIHRoZSBzcGVjaWZpY2F0aW9uIG1h
dHVyZWQuCitXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OldlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZShXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBXZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoIngtd2Via2l0LWRlZmxhdGUtZnJhbWUiKQorICAgICwg
bV9mcmFtZXIoZnJhbWVyKQorICAgICwgbV9yZXNwb25zZVByb2Nlc3NlZChmYWxzZSkKK3sKKyAg
ICBBU1NFUlQobV9mcmFtZXIpOworfQorCitTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lOjpoYW5kc2hha2VTdHJpbmcoKQoreworICAgIHJldHVybiBleHRlbnNpb25Ub2tlbigp
OyAvLyBObyBwYXJhbWV0ZXIKK30KKworYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJh
bWU6OnByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgc2VydmVy
UGFyYW1ldGVycykKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBpZiAobV9yZXNwb25zZVByb2Nlc3Nl
ZCkgeworICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgZHVwbGljYXRlIGRlZmxh
dGUtZnJhbWUgcmVzcG9uc2UiOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1f
cmVzcG9uc2VQcm9jZXNzZWQgPSB0cnVlOworCisgICAgaW50IGV4cGVjdGVkTnVtUGFyYW1ldGVy
cyA9IDA7CisgICAgaW50IHdpbmRvd0JpdHMgPSAxNTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5maW5kKCJt
YXhfd2luZG93X2JpdHMiKTsKKyAgICBpZiAocGFyYW1ldGVyICE9IHNlcnZlclBhcmFtZXRlcnMu
ZW5kKCkpIHsKKyAgICAgICAgd2luZG93Qml0cyA9IHBhcmFtZXRlci0+c2Vjb25kLnRvSW50KCk7
CisgICAgICAgIGlmICh3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUpIHsKKyAgICAg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0
cyBwYXJhbWV0ZXIiOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGV4cGVjdGVkTnVtUGFyYW1ldGVycysrOworICAgIH0KKworICAgIFdlYlNvY2tldERlZmxh
dGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlIG1vZGUgPSBXZWJTb2NrZXREZWZsYXRlcjo6VGFrZU92
ZXJDb250ZXh0OworICAgIHBhcmFtZXRlciA9IHNlcnZlclBhcmFtZXRlcnMuZmluZCgibm9fY29u
dGV4dF90YWtlb3ZlciIpOworICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5l
bmQoKSkgeworICAgICAgICBpZiAoIXBhcmFtZXRlci0+c2Vjb25kLmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBub19jb250ZXh0X3Rh
a2VvdmVyIHBhcmFtZXRlciI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgbW9kZSA9IFdlYlNvY2tldERlZmxhdGVyOjpEb05vdFRha2VPdmVyQ29udGV4dDsK
KyAgICAgICAgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzKys7CisgICAgfQorCisgICAgaWYgKGV4cGVj
dGVkTnVtUGFyYW1ldGVycyAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLnNpemUoKSkgeworICAgICAgICBt
X2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBhcmFt
ZXRlciI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2ZyYW1lci0+ZW5h
YmxlRGVmbGF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
K0RlZmxhdGVSZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0
ZUZyYW1lciogZnJhbWVyKQorICAgIDogbV9mcmFtZXIoZnJhbWVyKQorICAgICwgbV9zdWNjZWVk
ZWQodHJ1ZSkKK3sKKyAgICBBU1NFUlQobV9mcmFtZXIpOworfQorCitEZWZsYXRlUmVzdWx0SG9s
ZGVyOjp+RGVmbGF0ZVJlc3VsdEhvbGRlcigpCit7CisgICAgbV9mcmFtZXItPnJlc2V0RGVmbGF0
ZUNvbnRleHQoKTsKK30KKwordm9pZCBEZWZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0
cmluZyYgZmFpbHVyZVJlYXNvbikKK3sKKyAgICBtX3N1Y2NlZWRlZCA9IGZhbHNlOworICAgIG1f
ZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVSZWFzb247Cit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXI6
OkluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQorICAg
IDogbV9mcmFtZXIoZnJhbWVyKQorICAgICwgbV9zdWNjZWVkZWQodHJ1ZSkKK3sKKyAgICBBU1NF
UlQobV9mcmFtZXIpOworfQorCitJbmZsYXRlUmVzdWx0SG9sZGVyOjp+SW5mbGF0ZVJlc3VsdEhv
bGRlcigpCit7CisgICAgbV9mcmFtZXItPnJlc2V0SW5mbGF0ZUNvbnRleHQoKTsKK30KKwordm9p
ZCBJbmZsYXRlUmVzdWx0SG9sZGVyOjpmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbikK
K3sKKyAgICBtX3N1Y2NlZWRlZCA9IGZhbHNlOworICAgIG1fZmFpbHVyZVJlYXNvbiA9IGZhaWx1
cmVSZWFzb247Cit9CisKK1dlYlNvY2tldERlZmxhdGVGcmFtZXI6OldlYlNvY2tldERlZmxhdGVG
cmFtZXIoKQorICAgIDogbV9lbmFibGVkKGZhbHNlKQoreworfQorCitQYXNzT3duUHRyPFdlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKCkKK3sKKyAgICByZXR1cm4gV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lOjpjcmVhdGUodGhpcyk7Cit9CisKK2Jvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
Y2FuRGVmbGF0ZSgpIGNvbnN0Cit7CisjaWYgVVNFKFpMSUIpCisgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCisjaWYgVVNFKFpMSUIpCit2b2lk
IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdl
YlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlIG1vZGUpCit7CisgICAgbV9kZWZs
YXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUod2luZG93Qml0cywgbW9kZSk7CisgICAg
bV9pbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fZGVm
bGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6ZSgpKSB7CisgICAg
ICAgIG1fZGVmbGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgbV9pbmZsYXRlci5jbGVhcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIG1fZW5hYmxlZCA9IHRydWU7Cit9CisjZW5kaWYKKwor
UGFzc093blB0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpk
ZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBPd25Q
dHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gcmVzdWx0ID0gRGVmbGF0ZVJlc3VsdEhvbGRlcjo6Y3Jl
YXRlKHRoaXMpOworICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25D
b250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCisgICAg
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0
ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZp
bmlzaCgpKSB7CisgICAgICAgIHJlc3VsdC0+ZmFpbCgiRmFpbGVkIHRvIGNvbXByZXNzIGZyYW1l
Iik7CisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIH0KKyAgICBmcmFtZS5j
b21wcmVzcyA9IHRydWU7CisgICAgZnJhbWUucGF5bG9hZCA9IG1fZGVmbGF0ZXItPmRhdGEoKTsK
KyAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZsYXRlci0+c2l6ZSgpOworICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOworI2Vsc2UKKyAgICByZXR1cm4gRGVmbGF0ZVJlc3VsdEhvbGRl
cjo6Y3JlYXRlKHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6cmVzZXREZWZsYXRlQ29udGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1fZGVm
bGF0ZXIpCisgICAgICAgIG1fZGVmbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30KKworUGFzc093
blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRl
KFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBPd25QdHI8SW5m
bGF0ZVJlc3VsdEhvbGRlcj4gcmVzdWx0ID0gSW5mbGF0ZVJlc3VsdEhvbGRlcjo6Y3JlYXRlKHRo
aXMpOworICAgIGlmICghZnJhbWUuY29tcHJlc3MpCisgICAgICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOworICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25Db250
cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKKyAgICAgICAgcmVzdWx0LT5mYWlsKCJSZWNlaXZl
ZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CisgICAgfQorICAgIGlmICghbV9pbmZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5
bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwgIW1faW5mbGF0ZXItPmZpbmlzaCgpKSB7Cisg
ICAgICAgIHJlc3VsdC0+ZmFpbCgiRmFpbGVkIHRvIGRlY29tcHJlc3MgZnJhbWUiKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgfQorICAgIGZyYW1lLmNvbXByZXNzID0g
ZmFsc2U7CisgICAgZnJhbWUucGF5bG9hZCA9IG1faW5mbGF0ZXItPmRhdGEoKTsKKyAgICBmcmFt
ZS5wYXlsb2FkTGVuZ3RoID0gbV9pbmZsYXRlci0+c2l6ZSgpOworICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOworI2Vsc2UKKyAgICByZXR1cm4gSW5mbGF0ZVJlc3VsdEhvbGRlcjo6Y3JlYXRl
KHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXRJ
bmZsYXRlQ29udGV4dCgpCit7CisjaWYgVVNFKFpMSUIpCisgICAgaWYgKG1faW5mbGF0ZXIpCisg
ICAgICAgIG1faW5mbGF0ZXItPnJlc2V0KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpkaWRGYWlsKCkKK3sKKyAgICByZXNldERlZmxhdGVDb250ZXh0KCk7Cisg
ICAgcmVzZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMzU1MjY4MjEwZDBmNzI4NjhiNmIyODM5Y2U5NzU0ZWZkOTUxNThkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuaApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXJfaAorI2RlZmluZSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyX2gKKworI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKworI2lmIFVTRShaTElCKQorI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgi
CisjZW5kaWYKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKyNpbmNs
dWRlICJXZWJTb2NrZXRGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXI7CisKK2NsYXNzIERlZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IGNyZWF0ZShXZWJT
b2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IERlZmxhdGVSZXN1bHRIb2xkZXIoZnJhbWVyKSk7CisgICAgfQorCisgICAgfkRlZmxh
dGVSZXN1bHRIb2xkZXIoKTsKKworICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9zdWNjZWVkZWQ7IH0KKyAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZmFpbHVyZVJlYXNvbjsgfQorCisgICAgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVy
ZVJlYXNvbik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGVmbGF0ZVJlc3VsdEhvbGRlcihX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyKik7CisKKyAgICBXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBt
X2ZyYW1lcjsKKyAgICBib29sIG1fc3VjY2VlZGVkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFz
b247Cit9OworCitjbGFzcyBJbmZsYXRlUmVzdWx0SG9sZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBjcmVhdGUoV2ViU29ja2V0RGVmbGF0
ZUZyYW1lciogZnJhbWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbmZs
YXRlUmVzdWx0SG9sZGVyKGZyYW1lcikpOworICAgIH0KKworICAgIH5JbmZsYXRlUmVzdWx0SG9s
ZGVyKCk7CisKKyAgICBib29sIHN1Y2NlZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2VlZGVk
OyB9CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX2ZhaWx1cmVS
ZWFzb247IH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOwor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IEluZmxhdGVSZXN1bHRIb2xkZXIoV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciopOworCisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7Cisg
ICAgYm9vbCBtX3N1Y2NlZWRlZDsKKyAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOworfTsKKwor
Y2xhc3MgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcigpOworCisgICAgUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3I+IGNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpOworCisgICAgYm9vbCBjYW5EZWZsYXRlKCkg
Y29uc3Q7CisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisK
KyAgICBQYXNzT3duUHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IGRlZmxhdGUoV2ViU29ja2V0RnJh
bWUmKTsKKyAgICB2b2lkIHJlc2V0RGVmbGF0ZUNvbnRleHQoKTsKKyAgICBQYXNzT3duUHRyPElu
ZmxhdGVSZXN1bHRIb2xkZXI+IGluZmxhdGUoV2ViU29ja2V0RnJhbWUmKTsKKyAgICB2b2lkIHJl
c2V0SW5mbGF0ZUNvbnRleHQoKTsKKworICAgIHZvaWQgZGlkRmFpbCgpOworCisjaWYgVVNFKFpM
SUIpCisgICAgdm9pZCBlbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZs
YXRlcjo6Q29udGV4dFRha2VPdmVyTW9kZSk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBib29s
IG1fZW5hYmxlZDsKKyNpZiBVU0UoWkxJQikKKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+
IG1fZGVmbGF0ZXI7CisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBtX2luZmxhdGVyOwor
I2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRp
ZiAvLyBXZWJTb2NrZXREZWZsYXRlRnJhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDNmM2I0NTc4ZDMz
NTg0MWI5OTY4ZDhiYzAxNTQzNmYyYmFkZDRmODQuLjJhM2M1N2RiYjVhZGVjODNmMzk2M2JjNzcw
OTQxYTJjMzg1MDE0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzY3NCw2ICszNjc0LDcgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICAgICAgTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmggXAorICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3IuaCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFt
ZS5oIFwKQEAgLTM2ODUsNiArMzY4Niw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJf
U09DS0VUUz0xKSB7CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVG
cmFtZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lv
bkRpc3BhdGNoZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRl
eCBiNzc3ZmUwNjczNjJlOWZmZDJlOGRhOWZmMTMzYWEzNWU0MjA3OTA2Li42NWM2ZTM1ZjZiN2E2
ZGMyNDBmYjVjMGI0YzIxNWNhMzM0YzNmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cApAQCAtMTE5NCw2ICsxMTk0LDcgQEAKICAgICAgICAgJzwoY2hyb21pdW1fc3Jj
X2RpcikvdGhpcmRfcGFydHkvb3RzL290cy5neXA6b3RzJywKICAgICAgICAgJzwoY2hyb21pdW1f
c3JjX2RpcikvdGhpcmRfcGFydHkvc3FsaXRlL3NxbGl0ZS5neXA6c3FsaXRlJywKICAgICAgICAg
JzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvYW5nbGUvc3JjL2J1aWxkX2FuZ2xlLmd5
cDp0cmFuc2xhdG9yX2dsc2wnLAorICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9w
YXJ0eS96bGliL3psaWIuZ3lwOnpsaWInLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS92
OC90b29scy9neXAvdjguZ3lwOnY4JywKICAgICAgICAgJzwobGlianBlZ19neXBfcGF0aCk6bGli
anBlZycsCiAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDAwNDE5NTc5OWVmZDgyYjMzYzdj
NjQzMDk0MzVmMDcxMmY1ZDJkOTkuLjI1YzliYWI1ZmRlYWRkMDdlMzEzYTJmZThhOTg5MzNjYTc5
Yzg5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzMzksNiArMTMzOSw4IEBACiAgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oJywKKyAgICAgICAgICAg
ICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCBlZmQwMzEyMjY1MzUwZTNkNWEwMWY3MzIwYWYzOWU3MjY3M2I5ZmE2Li4yMDhhMGJiZTIxMTRh
NDQzNDM4ZTE3MmQzN2ExYmQyNzM1ODNjYTcxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjQxNTMsNiArMjQxNTMsMTQgQEAKIAkJCQkJPgog
CQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vi
c29ja2V0c1xXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZXIu
Y3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzYjZjNDUxZWJlYzVkYWM3ODBlMWZjMjBh
ZjMyMjZmYzkyNWVlNDQuLjc4ZDlmZWMzYmI2ZGQ0ZDZkMzg5NDE2ZjU5Y2JjZjRmNjljY2NlNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEzNjcsNiArMTM2Nyw4IEBACiAJCTRBMUU3MTk2MTRFMTAxRjkwMDYyNkY5RCAvKiBK
U0hUTUxTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTFFNzE5NDE0RTEwMUY5MDA2MjZGOUQgLyogSlNIVE1MU2hhZG93RWxlbWVu
dC5oICovOyB9OwogCQk0QTFFNzFBNTE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MUEz
MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwICovOyB9OwogCQk0QTFFNzFBNjE0
RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTFFNzFBNDE0RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFk
b3dSb290LmggKi87IH07CisJCTRBMzhCRjUwMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBMzhCRjRFMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcCAqLzsgfTsKKwkJNEEzOEJGNTExNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxh
dGVGcmFtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMzhCRjRGMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggKi87
IH07CiAJCTRBNkU5RkMzMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkMxMTND
MTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCAqLzsgfTsKIAkJNEE2RTlGQzQx
M0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkMyMTNDMTdEMUQwMDQ2QTdGOCAvKiBG
b250RmVhdHVyZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEE2RTlGQzcxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGlu
Z3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2
RTlGQzUxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwICovOyB9OwpA
QCAtODIzNCw2ICs4MjM2LDggQEAKIAkJNEExRTcxOTQxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRN
TFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1M
U2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTFFNzFBMzE0
RTEwNkFDMDA2MjZGOUQgLyogSlNTaGFkb3dSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93Um9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRBMzhCRjRFMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVGcmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTM4QkY0
RjE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg7IHBhdGggPSBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVW
YWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVy
ZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzIxM0MxN0Qx
RDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udEZlYXR1cmVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjExLDYgKzE3MjE1LDggQEAKIAkJ
OTdBQUJDRjcxNEZBMDlCNTAwNzQ1N0FFIC8qIHdlYnNvY2tldHMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTRBMzhCRjRFMTRGRTFDMDkwMDYxMjUxMiAv
KiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCAqLywKKwkJCQk0QTM4QkY0RjE0RkUxQzA5MDA2
MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oICovLAogCQkJCTk3QUFCQ0Y4MTRGQTA5
RDUwMDc0NTdBRSAvKiBDbG9zZUV2ZW50LmggKi8sCiAJCQkJOTdBQUJDRjkxNEZBMDlENTAwNzQ1
N0FFIC8qIENsb3NlRXZlbnQuaWRsICovLAogCQkJCTk3QUFCQ0ZBMTRGQTA5RDUwMDc0NTdBRSAv
KiBET01XaW5kb3dXZWJTb2NrZXQuaWRsICovLApAQCAtMjQzNTcsNiArMjQzNjMsNyBAQAogCQkJ
CTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0QkJFRDREMTRGQ0RCQTEwMDNGMEI5OCAvKiBTdHlsZVJ1bGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRBMzhCRjUxMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MzEwLDYgKzI3MzE3LDcgQEAKIAkJCQk5NzdFMkUw
RTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTRCQkVENEMxNEZDREJBMTAwM0YwQjk4IC8qIFN0eWxlUnVsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0QTM4QkY1MDE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YWJiMjg1OWE5MmMyY2FiNzMyZTExYzMwMjlj
MzFjNjI2M2NiZmE0Li5lMDNhZjczMTFmNmNlNGNjZGM5MDg1YmEyMzI0M2I3YjZlMTFiYWJkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDItMjkgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFz
aGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGluZyBXZWJTb2NrZXQgcGVyLWZyYW1lIERF
RkxBVEUgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzUyMgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBXZWJTb2NrZXQgZGVmbGF0
ZS1mcmFtZSBleHRlbnNpb24uIEFsc28gdXBkYXRlZCBzb21lCisgICAgICAgIHRlc3RzIHRvIGZv
bGxvdyB0aGUgY2hhbmdlLgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRy
b2wtZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJv
bC1mcmFtZV93c2gucHk6IEFkZGVkLgorICAgICAgICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2UpOgorICAgICAgICAod2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKToKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25v
ZmYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFs
aWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0
ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlcl93c2gucHk6IEFkZGVkLgorICAgICAgICAod2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UpOgorICAgICAgICAod2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWVfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKF9nZXRfZGVmbGF0ZV9mcmFtZV9leHRlbnNpb25f
cHJvY2Vzc29yKToKKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAg
ICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9z
ZW5kLWZpbGUtYmxvYl93c2gucHk6CisgICAgICAgIChfcmV0cmlldmVfZnJhbWUpOgorICAgICAg
ICAod2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tp
cHBlZDogU2tpcHMgdGVzdHMgcmVseSBvbiB6bGliCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDogRGl0dG8uCisKIDIwMTItMDItMjkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250
cm9sLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NDFlYzQ3M2Q2YmUyMWMxYzA2MDEwMjlmZmM1ZmEzOWNjYmYzODI0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21w
cmVzc2VkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0NPTlNP
TEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBjb21wcmVzc2VkIGZyYW1lCitUZXN0IHdo
ZXRoZXIgYSBjb21wcmVzc2VkIGNvbnRyb2wgZnJhbWUgaXMgcmVqZWN0ZWQKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBj
YWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1m
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
b21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjA4OGM3OTliZTQxMWMx
MjI4MTJhNTA5NDJmYTgzOTgzODAwOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUu
aHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KK2Rlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgYSBjb21wcmVzc2VkIGNvbnRyb2wgZnJhbWUg
aXMgcmVqZWN0ZWQiKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsK
KwordmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUiKTsKK3ZhciBjbG9zZUV2ZW50Owor
Cit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxs
ZWQuIik7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIg
bWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNh
bGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9z
ZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4i
KTsKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVu
dC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3Nl
ZC1jb250cm9sLWZyYW1lX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTEyZTljNDUyMmIzMTg1ODc4NDZm
YjE2MDE2MTk3OWE4YjNiMmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5
CkBAIC0wLDAgKzEsNDggQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCitpbXBv
cnQgemxpYgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
KyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCisgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NP
TVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCisgICAgY29tcHJlc3Nl
ZF9tZXNzYWdlID0gY29tcHJlc3MuY29tcHJlc3MoJ2Nsb3NlIG1lc3NhZ2UnKQorICAgIGNvbXBy
ZXNzZWRfbWVzc2FnZSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICBj
b21wcmVzc2VkX21lc3NhZ2UgPSBjb21wcmVzc2VkX21lc3NhZ2VbOi00XQorICAgIGhlYWRlciA9
IHN0cmVhbS5jcmVhdGVfaGVhZGVyKAorICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DTE9T
RSwgcGF5bG9hZF9sZW5ndGg9bGVuKGNvbXByZXNzZWRfbWVzc2FnZSksCisgICAgICAgIGZpbj0x
LCByc3YxPTEsIHJzdjI9MCwgcnN2Mz0wLCBtYXNrPUZhbHNlKQorICAgIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0ZShoZWFkZXIgKyBjb21wcmVzc2VkX21lc3NhZ2UpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29t
cC1iaXQtb25vZmYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NjJmZWYzZGU2ZjBmZTQwODBlYTJkMzUyM2YyOTViNDM4NjIzZjMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIw
IEBACitUZXN0IGNvbXByZXNzaW9uIGVuYWJsZWQvZGlzYWJsZWQgZnJhbWUgcmVjZWl2aW5nLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1NlbmRpbmcgbWVzc2FnZTogIkhlbGxvIgor
UEFTUyBldmVudC5kYXRhIGlzICdIZWxsbycKK1NlbmRpbmcgbWVzc2FnZTogIkRpc2FibGVDb21w
cmVzc2lvbiIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnRGlzYWJsZUNvbXByZXNzaW9uJworU2VuZGlu
ZyBtZXNzYWdlOiAiV29ybGQiCitQQVNTIGV2ZW50LmRhdGEgaXMgJ1dvcmxkJworU2VuZGluZyBt
ZXNzYWdlOiAiRW5hYmxlQ29tcHJlc3Npb24iCitQQVNTIGV2ZW50LmRhdGEgaXMgJ0VuYWJsZUNv
bXByZXNzaW9uJworU2VuZGluZyBtZXNzYWdlOiAiR29vZGJ5ZSIKK1BBU1MgZXZlbnQuZGF0YSBp
cyAnR29vZGJ5ZScKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9m
Zi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUzMmFjNTdiYjhmOGJiOTA2ZmFhNDJiNDMzNGJmMmZjMjc4YTY3
NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbApAQCAtMCwwICsxLDYw
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBjb21wcmVzc2lvbiBlbmFibGVk
L2Rpc2FibGVkIGZyYW1lIHJlY2VpdmluZy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgd3M7Cit2YXIgbWVzc2FnZUlu
ZGV4OworCit2YXIgbWVzc2FnZXMgPSBbCisgICAgIkhlbGxvIiwKKyAgICAiRGlzYWJsZUNvbXBy
ZXNzaW9uIiwgLy8gVGhpcyBkaXNhYmxlcyBjb21wcmVzc2lvbgorICAgICJXb3JsZCIsCisgICAg
IkVuYWJsZUNvbXByZXNzaW9uIiwgLy8gVGhpcyBlbmFibGVzIGNvbXByZXNzaW9uCisgICAgIkdv
b2RieWUiCitdOworCit3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZSIpOworCit3cy5vbm9wZW4gPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICBtZXNzYWdlSW5kZXggPSAwOworICAgIGRlYnVnKCJTZW5kaW5nIG1l
c3NhZ2U6IFwiIiArIG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0gKyAiXCIiKTsKKyAgICB3cy5zZW5k
KG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0pOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAiJyIgKyBtZXNzYWdlc1ttZXNz
YWdlSW5kZXhdICsgIiciKTsKKyAgICBpZiAobWVzc2FnZUluZGV4ID09PSBtZXNzYWdlcy5sZW5n
dGggLSAxKQorICAgICAgICB3cy5jbG9zZSgpOworICAgIGVsc2UgeworICAgICAgICBtZXNzYWdl
SW5kZXggKz0gMTsKKyAgICAgICAgZGVidWcoIlNlbmRpbmcgbWVzc2FnZTogXCIiICsgbWVzc2Fn
ZXNbbWVzc2FnZUluZGV4XSArICJcIiIpOworICAgICAgICB3cy5zZW5kKG1lc3NhZ2VzW21lc3Nh
Z2VJbmRleF0pOworICAgIH0KK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sK
KyAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2
ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxp
ZC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYTI0ZDI4Y2MyMzNiN2E1ZjYz
NDkzYjk1ZDBmODFiYTdmMzRkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVjZWl2
ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRlcgorQ09OU09MRSBNRVNTQUdFOiBS
ZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJhbWV0ZXIKK0NPTlNPTEUgTUVTU0FH
RTogUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93X2JpdHMgcGFyYW1ldGVyCitDT05TT0xFIE1F
U1NBR0U6IFJlY2VpdmVkIGludmFsaWQgbm9fY29udGV4dF90YWtlb3ZlciBwYXJhbWV0ZXIKK0NP
TlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRl
cgorVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGludmFsaWQgZGVmbGF0ZS1mcmFtZSBw
YXJhbWV0ZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3RpbmcgcGFyYW1l
dGVyOiAieC1mb28iCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXND
bGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6ICJtYXhfd2luZG93X2JpdHM9NyIKK29u
Y2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitU
ZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0cz0xNiIKK29uY2xvc2UoKSB3YXMgY2Fs
bGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitUZXN0aW5nIHBhcmFtZXRl
cjogIm5vX2NvbnRleHRfdGFrZW92ZXI9Zm9vIgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNT
IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3RpbmcgcGFyYW1ldGVyOiAibWF4X3dp
bmRvd19iaXRzPTg7IG5vX2NvbnRleHRfdGFrZW92ZXI7IHgtZm9vIgorb25jbG9zZSgpIHdhcyBj
YWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxp
ZC1wYXJhbWV0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVh
NWZiZDA2ZDIwMmEzZWNjODAyYWUyNGE3NzllZjY0YjkzOWE5YzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgSFRN
TD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGludmFsaWQgZGVm
bGF0ZS1mcmFtZSBwYXJhbWV0ZXJzLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5h
YmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKKwordmFyIHRlc3RDYXNlID0gWworICAgICJ4
LWZvbyIsCisgICAgIm1heF93aW5kb3dfYml0cz03IiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTE2
IiwKKyAgICAibm9fY29udGV4dF90YWtlb3Zlcj1mb28iLAorICAgICJtYXhfd2luZG93X2JpdHM9
ODsgbm9fY29udGV4dF90YWtlb3ZlcjsgeC1mb28iCitdOworCitmdW5jdGlvbiBkb1Rlc3QoaW5k
ZXgpCit7CisgICAgdmFyIHBhcmFtZXRlciA9IHRlc3RDYXNlW2luZGV4XTsKKyAgICB2YXIgdXJs
ID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1pbnZhbGlkLXBhcmFtZXRlcj8iICsgZW5jb2RlVVJJKHBhcmFtZXRlcik7CisgICAgdmFyIHdz
ID0gbmV3IFdlYlNvY2tldCh1cmwpOworCisgICAgZGVidWcoIlRlc3RpbmcgcGFyYW1ldGVyOiBc
IiIgKyBwYXJhbWV0ZXIgKyAiXCIiKTsKKworICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgICAgICB0
ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3Nh
Z2UgKyAiXCIpIik7CisgICAgfTsKKworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICAgICAg
Y2xvc2VFdmVudCA9IGV2ZW50OworICAgICAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50Lndh
c0NsZWFuIik7CisgICAgICAgIGlmIChpbmRleCA9PT0gdGVzdENhc2UubGVuZ3RoIC0gMSkKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb1Rl
c3QoaW5kZXggKyAxKTsKKyAgICB9OworfQorCitkb1Rlc3QoMCk7CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0
ZXJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9k
ZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGNjMjVj
OGQ3Y2NjMWE2NzZhZDFlZjY4NGQ2MzA5OTEyOGZmMDA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWlu
dmFsaWQtcGFyYW1ldGVyX3dzaC5weQpAQCAtMCwwICsxLDU2IEBACisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworaW1wb3J0IHVybGxpYgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkgaW1wb3J0IGNvbXB1dGVfYWNjZXB0
CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJl
c291cmNlcyA9IHJlcXVlc3Qud3NfcmVzb3VyY2Uuc3BsaXQoJz8nLCAxKQorICAgIHBhcmFtZXRl
cnMgPSBOb25lCisgICAgaWYgbGVuKHJlc291cmNlcykgPT0gMjoKKyAgICAgICAgcGFyYW1ldGVy
cyA9IHVybGxpYi51bnF1b3RlKHJlc291cmNlc1sxXSkKKworICAgIG1lc3NhZ2UgPSAnSFRUUC8x
LjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIG1lc3NhZ2UgKz0gJ1VwZ3JhZGU6
IHdlYnNvY2tldFxyXG4nCisgICAgbWVzc2FnZSArPSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4n
CisgICAgbWVzc2FnZSArPSAnU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVzXHJcbicgJSBjb21wdXRl
X2FjY2VwdChyZXF1ZXN0LmhlYWRlcnNfaW5bJ1NlYy1XZWJTb2NrZXQtS2V5J10pWzBdCisgICAg
bWVzc2FnZSArPSAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiB4LXdlYmtpdC1kZWZsYXRlLWZy
YW1lJworICAgIGlmIHBhcmFtZXRlcnM6CisgICAgICAgIG1lc3NhZ2UgKz0gJzsgJXNcclxuJyAl
IHBhcmFtZXRlcnMKKyAgICBlbHNlOgorICAgICAgICBtZXNzYWdlICs9ICdcclxuJworICAgIG1l
c3NhZ2UgKz0gJ1xyXG4nCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1lc3NhZ2UpCisg
ICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oJ0Fib3J0IHRoZSBjb25u
ZWN0aW9uJykgIyBQcmV2ZW50cyBweXdlYnNvY2tldCBmcm9tIHNlbmRpbmcgaXRzIG93biBoYW5k
c2hha2UgbWVzc2FnZS4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFt
ZXRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2M2ZlMzk0YTQ2MjRhMTg0YzNkYjJmNDcy
ODk0NDQ5ZDBkNDA0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3QgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9u
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3RpbmcgcXVlcnk6ICJtYXhfd2lu
ZG93X2JpdHM9OCIKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gtd2Via2l0LWRlZmxhdGUt
ZnJhbWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNoKCdtYXhfd2lu
ZG93X2JpdHM9OCcpICE9IC0xIGlzIHRydWUKK1BBU1MgZXZlbnQuZGF0YSBpcyBmaXJzdE1lc3Nh
Z2UKK1BBU1MgZXZlbnQuZGF0YSBpcyBzZWNvbmRNZXNzYWdlCitvbmNsb3NlKCkgd2FzIGNhbGxl
ZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitUZXN0aW5nIHF1ZXJ5OiAibm9f
Y29udGV4dF90YWtlb3ZlciIKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gtd2Via2l0LWRl
ZmxhdGUtZnJhbWUnKSAhPSAtMSBpcyB0cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNoKCdu
b19jb250ZXh0X3Rha2VvdmVyJykgIT0gLTEgaXMgdHJ1ZQorUEFTUyBldmVudC5kYXRhIGlzIGZp
cnN0TWVzc2FnZQorUEFTUyBldmVudC5kYXRhIGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3
YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1Rlc3RpbmcgcXVl
cnk6ICJtYXhfd2luZG93X2JpdHM9OCZub19jb250ZXh0X3Rha2VvdmVyIgorUEFTUyB3cy5leHRl
bnNpb25zLnNlYXJjaCgneC13ZWJraXQtZGVmbGF0ZS1mcmFtZScpICE9IC0xIGlzIHRydWUKK1BB
U1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2goJ21heF93aW5kb3dfYml0cz04JykgIT0gLTEgaXMgdHJ1
ZQorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbm9fY29udGV4dF90YWtlb3ZlcicpICE9IC0x
IGlzIHRydWUKK1BBU1MgZXZlbnQuZGF0YSBpcyBmaXJzdE1lc3NhZ2UKK1BBU1MgZXZlbnQuZGF0
YSBpcyBzZWNvbmRNZXNzYWdlCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVu
dC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiNzdlNDcxODE3ZTIzNDdjZmI4MzZmZDllM2FhYTNlZmI4NWM2ZjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0
ZW5zaW9uLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2
YXIgY2xvc2VFdmVudDsKK3ZhciB3czsKK3ZhciBtZXNzYWdlSW5kZXg7CisKK3ZhciBxdWVyaWVz
ID0gWworICAgICJtYXhfd2luZG93X2JpdHM9OCIsCisgICAgIm5vX2NvbnRleHRfdGFrZW92ZXIi
LAorICAgICJtYXhfd2luZG93X2JpdHM9OCZub19jb250ZXh0X3Rha2VvdmVyIgorXTsKKworLy8g
VGhlIGZpcnN0IG1lc3NhZ2UgY29uc2lzdHMgb2YgYSBsb3Qgb2YgJ2InIGFuZCBhIGZldyAnYScg
YXQgdGhlIGhlYWQgYW5kCisvLyB0aGUgdGFpbCwgd2hpbGUgdGhlIHNlY29uZCBvbmUgY29uc2lz
dHMgb2YgJ2EnLgordmFyIGZpcnN0TWVzc2FnZSA9ICcnOwordmFyIHNlY29uZE1lc3NhZ2UgPSAn
JzsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgIGZpcnN0TWVzc2FnZSArPSAn
YSc7CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDEw
MjQ7ICsraSkgeworICAgIGZpcnN0TWVzc2FnZSArPSAnYic7CisgICAgc2Vjb25kTWVzc2FnZSAr
PSAnYSc7Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICBmaXJzdE1lc3Nh
Z2UgKz0gJ2EnOworICAgIHNlY29uZE1lc3NhZ2UgKz0gJ2EnOworfQorCitmdW5jdGlvbiBkb1Rl
c3QocXVlcnlJbmRleCkKK3sKKyAgICB2YXIgcXVlcnkgPSBxdWVyaWVzW3F1ZXJ5SW5kZXhdOwor
ICAgIGRlYnVnKCJUZXN0aW5nIHF1ZXJ5OiBcIiIgKyBxdWVyeSArICJcIiIpOworCisgICAgdmFy
IHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWU/IiArIHF1ZXJ5OworICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAgIG1lc3Nh
Z2VJbmRleCA9IDA7CisKKyAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgid3MuZXh0ZW5zaW9ucy5zZWFyY2goJ3gtd2Via2l0LWRlZmxh
dGUtZnJhbWUnKSAhPSAtMSIpOworICAgICAgICBwYXJhbWV0ZXJzID0gcXVlcnkuc3BsaXQoJyYn
KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ3cy5leHRlbnNpb25zLnNlYXJjaCgnIiArIHBhcmFt
ZXRlcnNbaV0gKyAiJykgIT0gLTEiKTsKKyAgICAgICAgd3Muc2VuZChmaXJzdE1lc3NhZ2UpOwor
ICAgIH07CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIGlmIChtZXNzYWdlSW5kZXggPT09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVu
dC5kYXRhIiwgImZpcnN0TWVzc2FnZSIpOworICAgICAgICAgICAgbWVzc2FnZUluZGV4ICs9IDEK
KyAgICAgICAgICAgIHdzLnNlbmQoc2Vjb25kTWVzc2FnZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICJzZWNvbmRNZXNzYWdlIik7CisgICAg
ICAgICAgICB3cy5jbG9zZSgpOworICAgICAgICB9CisgICAgfTsKKworICAgIHdzLm9uY2xvc2Ug
PSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNh
bGxlZC4iKTsKKyAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgICAgICBzaG91bGRCZVRy
dWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAgaWYgKHF1ZXJ5SW5kZXggPT09IHF1
ZXJpZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBkb1Rlc3QocXVlcnlJbmRleCArIDEpOworICAgIH07Cit9CisKK2Rv
VGVzdCgwKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYjc4Mzg1NTA0Mjc0ODNh
OTMyNmNlOGZhNjBjMTc5ODFhZGJkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWVfd3NoLnB5CkBAIC0w
LDAgKzEsODIgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgdXJscGFyc2UKK2Zyb20gbW9k
X3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nl
c3NvcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRXh0ZW5zaW9uUHJv
Y2Vzc29ySW50ZXJmYWNlCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4dGVu
c2lvblBhcmFtZXRlcgorCisKK19HT09EQllFX01FU1NBR0UgPSB1J0dvb2RieWUnCitfRU5BQkxF
X01FU1NBR0UgPSB1J0VuYWJsZUNvbXByZXNzaW9uJworX0RJU0FCTEVfTUVTU0FHRSA9IHUnRGlz
YWJsZUNvbXByZXNzaW9uJworCisKK2RlZiBfZ2V0X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9uX3By
b2Nlc3NvcihyZXF1ZXN0KToKKyAgICBmb3IgZXh0ZW5zaW9uX3Byb2Nlc3NvciBpbiByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV4dGVuc2lv
bl9wcm9jZXNzb3IsIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgICAg
ICByZXR1cm4gZXh0ZW5zaW9uX3Byb2Nlc3NvcgorICAgIHJldHVybiBOb25lCisKKworZGVmIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHByb2Nlc3NvciA9IF9n
ZXRfZGVmbGF0ZV9mcmFtZV9leHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpCisgICAgaWYgbm90
IHByb2Nlc3NvcjoKKyAgICAgICAgcmV0dXJuCisgICAgciA9IHJlcXVlc3Qud3NfcmVzb3VyY2Uu
c3BsaXQoJz8nLCAxKQorICAgIGlmIGxlbihyKSA9PSAxOgorICAgICAgICByZXR1cm4KKyAgICBw
YXJhbWV0ZXJzID0gdXJscGFyc2UucGFyc2VfcXMoclsxXSwga2VlcF9ibGFua192YWx1ZXM9VHJ1
ZSkKKyAgICBpZiAnbWF4X3dpbmRvd19iaXRzJyBpbiBwYXJhbWV0ZXJzOgorICAgICAgICB3aW5k
b3dfYml0cyA9IGludChwYXJhbWV0ZXJzWydtYXhfd2luZG93X2JpdHMnXVswXSkKKyAgICAgICAg
cHJvY2Vzc29yLnNldF9yZXNwb25zZV93aW5kb3dfYml0cyh3aW5kb3dfYml0cykKKyAgICBpZiAn
bm9fY29udGV4dF90YWtlb3ZlcicgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgcHJvY2Vzc29yLnNl
dF9yZXNwb25zZV9ub19jb250ZXh0X3Rha2VvdmVyKFRydWUpCisKKworZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBwcm9jZXNzb3IgPSBfZ2V0X2RlZmxhdGVfZnJh
bWVfZXh0ZW5zaW9uX3Byb2Nlc3NvcihyZXF1ZXN0KQorICAgIHdoaWxlIFRydWU6CisgICAgICAg
IGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICBpZiBs
aW5lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShs
aW5lLCB1bmljb2RlKToKKyAgICAgICAgICAgIGlmIHByb2Nlc3NvcjoKKyAgICAgICAgICAgICAg
ICBpZiBsaW5lID09IF9FTkFCTEVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vz
c29yLmVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbigpCisgICAgICAgICAgICAgICAgZWxpZiBs
aW5lID09IF9ESVNBQkxFX01FU1NBR0U6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5k
aXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3Ry
ZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9RmFsc2UpCisgICAgICAgICAgICBpZiBsaW5l
ID09IF9HT09EQllFX01FU1NBR0U6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmlu
YXJ5PVRydWUpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVu
c2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0
ZWQudHh0CmluZGV4IGFkZjA2YjY1MWQ2YjQ3MTViNGExYjk3Yzg3Yzk2MDIzM2FhZTFmYTAuLmNj
OTlhZjBkZDE2NWQ1M2Y0MDY3MGM1YzU4NmFlYzk5ZWZiNjgzY2EgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnkt
ZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFk
ZXItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZl
ZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIKK0NPTlNPTEUgTUVT
U0FHRTogUmVjZWl2ZWQgdW5leHBlY3RlZCBleHRlbnNpb246IHgtZm9vCiBUZXN0IHdoZXRoZXIg
V2ViU29ja2V0IGhhbmRzaGFrZSBmYWlscyBpZiB0aGUgc2VydmVyIHNlbmRzIFNlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9ucyBoZWFkZXIuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1m
aWxlLWJsb2Jfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9zZW5kLWZpbGUtYmxvYl93c2gucHkKaW5kZXggZGFhNDQwNDcxYWY4M2FiMjYyODY3NTFj
M2UxODg4MmY0ODRkYjc4Yy4uNzkyMDM0Y2ZlM2I3MGUwNDgzYjVkZTk1ZTRlMTcwMWQ5Nzc4MmNh
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLWZpbGUtYmxvYl93c2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYl93c2gucHkKQEAgLTIsNiArMiwxNCBAQCBm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCiBmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgbXNndXRpbAogCiAKK2RlZiBfcmV0cmlldmVfZnJhbWUoc3RyZWFtKToKKyAgICAjIEZJ
WE1FOiBVc2UgYmV0dGVyIEFQSS4KKyAgICBmcmFtZSA9IHN0cmVhbS5fcmVjZWl2ZV9mcmFtZV9h
c19mcmFtZV9vYmplY3QoKQorICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gc3RyZWFtLl9vcHRpb25z
LmluY29taW5nX2ZyYW1lX2ZpbHRlcnM6CisgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJh
bWUpCisgICAgcmV0dXJuIGZyYW1lCisKKwogZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgogICAgIHBhc3MgIyBBbHdheXMgYWNjZXB0LgogCkBAIC0xMCwxMiArMTgs
MTEgQEAgZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKICAgICBleHBlY3Rl
ZF9tZXNzYWdlcyA9IFsnSGVsbG8sIHdvcmxkISddCiAKICAgICBmb3IgdGVzdF9udW1iZXIsIGV4
cGVjdGVkX21lc3NhZ2UgaW4gZW51bWVyYXRlKGV4cGVjdGVkX21lc3NhZ2VzKToKLSAgICAgICAg
IyBGSVhNRTogVXNlIGJldHRlciBBUEkuCi0gICAgICAgIG9wY29kZSwgcGF5bG9hZCwgZmluYWws
IHVudXNlZF9yZXNlcnZlZDEsIHVudXNlZF9yZXNlcnZlZDIsIHVudXNlZF9yZXNlcnZlZDMgPSBy
ZXF1ZXN0LndzX3N0cmVhbS5fcmVjZWl2ZV9mcmFtZSgpCi0gICAgICAgIGlmIG9wY29kZSA9PSBj
b21tb24uT1BDT0RFX0JJTkFSWSBhbmQgcGF5bG9hZCA9PSBleHBlY3RlZF9tZXNzYWdlIGFuZCBm
aW5hbDoKKyAgICAgICAgZnJhbWUgPSBfcmV0cmlldmVfZnJhbWUocmVxdWVzdC53c19zdHJlYW0p
CisgICAgICAgIGlmIGZyYW1lLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWSBhbmQgZnJh
bWUucGF5bG9hZCA9PSBleHBlY3RlZF9tZXNzYWdlIGFuZCBmcmFtZS5maW46CiAgICAgICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnUEFTUzogTWVzc2FnZSAjJWQuJyAlIHRl
c3RfbnVtYmVyKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgJ0ZBSUw6IE1lc3NhZ2UgIyVkOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGZyYW1l
OiBvcGNvZGUgPSAlciwgcGF5bG9hZCA9ICVyLCBmaW5hbCA9ICVyJyAlICh0ZXN0X251bWJlciwg
b3Bjb2RlLCBwYXlsb2FkLCBmaW5hbCkpCisgICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAjJWQ6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZnJhbWU6
IG9wY29kZSA9ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0gJXInICUgKHRlc3RfbnVtYmVyLCBm
cmFtZS5vcGNvZGUsIGZyYW1lLnBheWxvYWQsIGZyYW1lLmZpbikpCiAKIAogZGVmIGFsbF9kaXN0
aW5jdF9ieXRlcygpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAwYmZmZTFiYzZkNzFl
NWI1OTlkNjJmMmUwZTMwMTliNjg3ODY2ZDczLi42NTE3Y2E5MDcyMDRjYTY5ZTE1ODBhY2EwYWZm
M2Q0YzhmYTRjZTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMTI4MCw2ICsxMjgw
LDEyIEBAIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm91dHNpZGVzb3VyY2UuaHRt
bAogIyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIG1pc21hdGNoIHJlZnRlc3Qgd2lsbCBmYWls
IGFzIGludGVuZGVkIGlmIGJvdGggcmVzdWx0cyBhcmUgc2FtZS4KIGZhc3QvaGFybmVzcy9zYW1w
bGUtZmFpbC1taXNtYXRjaC1yZWZ0ZXN0Lmh0bWwKIAorIyBVU0UoWkxJQikgaXMgZGlzYWJsZWQK
K2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1l
Lmh0bWwKK2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZh
bGlkLXBhcmFtZXRlci5odG1sCitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxh
dGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwKK2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
aGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFkZXIuaHRtbAorCiAjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVGVzdHMgd2hpY2ggYWxzbyBmYWlsIGlu
IG90aGVyIHBsYXRmb3JtcwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBmNTY3Mzk2M2EyOTQ5Yzk0NmNlYTdjZjE5
M2M0NTBkOTcwZmE4ZmNmLi43NWFiOGQ4ZmUyMzRhNjVjYTM2ZWIzNjJiZmIzOGFiMTliOWY0Yjg1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTI1Niw2ICsyNTYsMTIgQEAgZmFzdC9tdXRh
dGlvbi9vYnNlcnZlLWNoaWxkTGlzdC5odG1sCiBmYXN0L211dGF0aW9uL29ic2VydmUtZXhjZXB0
aW9ucy5odG1sCiBmYXN0L211dGF0aW9uL29ic2VydmUtc3VidHJlZS5odG1sCiAKKyMgVVNFKFpM
SUIpIGlzIGRpc2FibGVkLgoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVz
c2VkLWNvbnRyb2wtZnJhbWUuaHRtbAoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9k
ZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKK2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbAoraHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1s
CisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgICAgICAgRmVhdHVyZSBub3QgeWV0IHN1cHBv
cnRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ICMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129786</attachid>
            <date>2012-03-01 18:00:08 -0800</date>
            <delta_ts>2012-03-02 02:25:01 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77522-20120302110006.patch</filename>
            <type>text/plain</type>
            <size>59249</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MGQ3OGQ0NWJhOTkzMjIxOTE0ZTU2NzQyZDZhNWVlOGJhNTI3MWFlLi40NmVmMzBjMWZiZjViNTMw
ZWUzMGFhYmZjMWZkNTk2NzNlNjVmYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMy0wMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIFdlYlNvY2tldCBwZXItZnJhbWUgREVGTEFURSBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTIyCisKKyAgICAgICAgQWRkZWQgVVNFKFpMSUIpIGZsYWcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wMy0w
MSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
RVM1LjEtMTUuMy41LjQuIHByb2hpYml0cyBGdW5jdGlvbi5jYWxsZXIgZnJvbSBbW0dldF1ddGlu
ZyBhIHN0cmljdCBjYWxsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MmQ1YTA2NDIzY2JlNjcwNGRmZmU0YjU1
ZTFhZDI5MjA3Y2RmNmM3Li5iYjMwOTM0N2U2OTg5MGJjNWVmNDVmYjUxYmUxODJiYWVhZGE0Y2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTItMDMtMDEgIEtlbmljaGkgSXNoaWJh
c2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGluZyBXZWJTb2NrZXQgcGVy
LWZyYW1lIERFRkxBVEUgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NzUyMgorCisgICAgICAgIEFkZCBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyIGNsYXNzIHdoaWNoIGhhbmRsZXMgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uCisgICAgICAg
IFRoaXMgY2xhc3MgZW5jYXBzdWxhdGVzIFdlYlNvY2tldERlZmxhdGVyIGFuZCBXZWJTb2NrZXRJ
bmZsYXRlciBjbGFzc2VzLAorICAgICAgICB3aGljaCBkZXBlbmQgb24gemxpYiwgc28gdGhhdCBX
ZWJTb2NrZXRDaGFubmVsIGlzIG5vdCBuZWNlc3NhcnkgdG8gYXdhcmUKKyAgICAgICAgemxpYiBk
ZXBlbmRlbmN5LgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJv
bC1mcmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1l
dGVyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZGVkIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuKGNwcHxoKQorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXA6IEFkZGVkIHpsaWIgZGVwZW5kZW5jeS4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajogQWRkZWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lci4oY3BwfGgpCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRp
ZENvbm5lY3QpOiBTZXQgbV9leHRlbnNpb25zLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25u
ZWN0KTogQWRkIGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uIHByb2Nlc3NvciB0byBXZWJTb2NrZXRI
YW5zaGFrZSBpZiBkZWZsYXRlIGNhbiB1c2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsOjpmYWlsKTogQ2FsbCBtX2RlZmxhdGVGcmFtZXIuZGlkRmFpbCgpLgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKTogRGVjb21wcmVzcyBmcmFt
ZXMgaWYgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZy
YW1lKTogQ29tcHJlc3MgZnJhbWVzIGlmIHBvc3NpYmxlLgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZUZyYW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2Nr
ZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjp+V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4
dGVuc2lvbkRlZmxhdGVGcmFtZTo6aGFuZHNoYWtlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6OkRlZmxhdGVSZXN1bHRIb2xkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6fkRlZmxhdGVSZXN1bHRIb2xk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0ZVJlc3VsdEhvbGRlcjo6ZmFpbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmZsYXRlUmVzdWx0SG9sZGVyOjpJbmZsYXRlUmVzdWx0SG9sZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0SG9s
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6Y2FuRGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjplbmFibGVEZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6cmVzZXREZWZsYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVG
cmFtZXI6OnJlc2V0SW5mbGF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6ZGlkRmFpbCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWZs
YXRlUmVzdWx0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVSZXN1bHRIb2xkZXI6
OnN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZsYXRlUmVzdWx0SG9sZGVyOjpmYWls
dXJlUmVhc29uKToKKyAgICAgICAgKEluZmxhdGVSZXN1bHRIb2xkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5mbGF0ZVJlc3VsdEhvbGRlcjo6c3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViU29ja2V0
RGVmbGF0ZUZyYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjplbmFibGVkKToKKwogMjAxMi0wMy0wMSAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhhbmRsZSBDU1NQcm9wZXJ0eUJveFNpemluZyBpbiBD
U1NTdHlsZUFwcGx5UHJvcGVydHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggMzc1NzA1YTkyZDkzZmJhZWYxOTFlYjVjZTYzYmI5YWE5NDY5ZjZkNC4uZmE0ZjNkZmM5NDVm
ZDA5MDIyYTNhZGMxYTI3ODliNDMwYmQ0NzMwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaApAQCAtMTIwMyw0ICsxMjAzLDggQEAKICNkZWZpbmUgV1RGX1VTRV9XVEZVUkwgMAog
I2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCisjZGVmaW5lIFdU
Rl9VU0VfWkxJQiAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDYyZjE1MzUxZGYzZmNjMDllNGY0M2U2NWRlZDhhNWE2MWIwNDk4
OWMuLmQ5Y2Y5OTE5MzQ4YWY3YjQzMDc3YWU1YzEwMTU4ZTk0M2NlODU5MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0yMDY3LDYgKzIwNjcsNyBAQCBJRiAoRU5BQkxFX1dFQl9TT0NLRVRTKQog
ICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAog
ICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKyAgICAgICAg
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCiAgICAgICAgIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAogICAgICAg
ICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAogICAgICAgICBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDYxY2UxMDI2MWRkNmMwMGU5MGZhYjljMDQzY2Q2MzhjMDMx
NzgxZWUuLjUxMzRjZTE4M2RkOTliNDk1ZjM2ZTQyNjdlMWE5MGNhMjFiZmY5MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTAwNyw2ICsxMDA3LDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXREZWZsYXRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCAzNmRiYjZmMzJjMjQ5ODNjMjBmODU4ZTBk
YWM3NzYxZmI2OWIxMmE0Li43ZGQ4NTRlZDE1MmEzMjFmMDQ5MjExMmNlNTVhN2YxMDllODkzM2U3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cApAQCAtNDc4LDYgKzQ3OCw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKICAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBtX3N0YXRlID0gT1BFTjsKICAg
ICBtX3N1YnByb3RvY29sID0gbV9jaGFubmVsLT5zdWJwcm90b2NvbCgpOworICAgIG1fZXh0ZW5z
aW9ucyA9IG1fY2hhbm5lbC0+ZXh0ZW5zaW9ucygpOwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCmluZGV4IGVjMDcwNmRiNGY4NDhmNTc1NTFjOTg3ZjI3YmM0NGUyZGM4MDQyNjguLjFl
YzI1OWY3ODg0MWJmOTExM2Q1ZmQ0Mjg0NGNkYmQxYzUyOTk3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAg
LTEyNyw2ICsxMjcsOCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQp
OwogICAgIG1faGFuZHNoYWtlID0gYWRvcHRQdHIobmV3IFdlYlNvY2tldEhhbmRzaGFrZSh1cmws
IHByb3RvY29sLCBtX2RvY3VtZW50LCBtX3VzZUhpeGllNzZQcm90b2NvbCkpOwogICAgIG1faGFu
ZHNoYWtlLT5yZXNldCgpOworICAgIGlmICghbV91c2VIaXhpZTc2UHJvdG9jb2wgJiYgbV9kZWZs
YXRlRnJhbWVyLmNhbkRlZmxhdGUoKSkKKyAgICAgICAgbV9oYW5kc2hha2UtPmFkZEV4dGVuc2lv
blByb2Nlc3NvcihtX2RlZmxhdGVGcmFtZXIuY3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkpOwog
ICAgIGlmIChtX2lkZW50aWZpZXIpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlV2ViU29ja2V0KG1fZG9jdW1lbnQsIG1faWRlbnRpZmllciwgdXJsLCBtX2RvY3Vt
ZW50LT51cmwoKSk7CiAgICAgcmVmKCk7CkBAIC0yMjgsNiArMjMwLDcgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICBtX3Nob3VsZERp
c2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwogICAgICAgICBpZiAobV9idWZmZXIpCiAgICAgICAg
ICAgICBza2lwQnVmZmVyKG1fYnVmZmVyU2l6ZSk7IC8vIFNhdmUgbWVtb3J5LgorICAgICAgICBt
X2RlZmxhdGVGcmFtZXIuZGlkRmFpbCgpOwogICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9
IGZhbHNlOwogICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuY2xlYXIoKTsKICAgICB9CkBA
IC02MTgsNiArNjIxLDEyIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkK
ICAgICBBU1NFUlQobV9idWZmZXIgPCBmcmFtZUVuZCk7CiAgICAgQVNTRVJUKGZyYW1lRW5kIDw9
IG1fYnVmZmVyICsgbV9idWZmZXJTaXplKTsKIAorICAgIE93blB0cjxJbmZsYXRlUmVzdWx0SG9s
ZGVyPiBpbmZsYXRlUmVzdWx0ID0gbV9kZWZsYXRlRnJhbWVyLmluZmxhdGUoZnJhbWUpOworICAg
IGlmICghaW5mbGF0ZVJlc3VsdC0+c3VjY2VlZGVkKCkpIHsKKyAgICAgICAgZmFpbChpbmZsYXRl
UmVzdWx0LT5mYWlsdXJlUmVhc29uKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CiAgICAgLy8gVmFsaWRhdGUgdGhlIGZyYW1lIGRhdGEuCiAgICAgaWYgKFdlYlNvY2tldEZyYW1l
Ojppc1Jlc2VydmVkT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKICAgICAgICAgZmFpbCgiVW5yZWNv
Z25pemVkIGZyYW1lIG9wY29kZTogIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwpA
QCAtMTAxMSw2ICsxMDIwLDEzIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdl
YlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAKICAgICBBU1NF
UlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBm
aXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lKG9w
Q29kZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgT3duUHRy
PERlZmxhdGVSZXN1bHRIb2xkZXI+IGRlZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIuZGVm
bGF0ZShmcmFtZSk7CisgICAgaWYgKCFkZWZsYXRlUmVzdWx0LT5zdWNjZWVkZWQoKSkgeworICAg
ICAgICBmYWlsKGRlZmxhdGVSZXN1bHQtPmZhaWx1cmVSZWFzb24oKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKICAgICBWZWN0b3I8Y2hhcj4gZnJhbWVEYXRhOwogICAgIG1ha2VG
cmFtZURhdGEoZnJhbWUsIGZyYW1lRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDRiYjI4YzlmMmIwNWFm
MzQ5OTdiZTA3YTYyZjEyYmM0ZTk4MzU4MTguLjZkMWZlYmJjYTA2ZTFlZDdkNWNlZTE1MGQ4NzYw
YWY3ODA0NjIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRI
YW5kc2hha2UuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTIzMSw2ICsyMzIsOCBAQCBw
cml2YXRlOgogICAgIE93blB0cjxGaWxlUmVhZGVyTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAg
QmxvYkxvYWRlclN0YXR1cyBtX2Jsb2JMb2FkZXJTdGF0dXM7CiAjZW5kaWYKKworICAgIFdlYlNv
Y2tldERlZmxhdGVGcmFtZXIgbV9kZWZsYXRlRnJhbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3Zjk1MzNhYmVlZWRl
MGJjODAzMjY1MTQ4Mjk3MTQ2YzQ3MjU2OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTAs
MCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgorCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2Vi
U29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3NvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5z
aW9uRGVmbGF0ZUZyYW1lPiBjcmVhdGUoV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogZnJhbWVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWUoZnJhbWVyKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZSgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5n
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1
cmVSZWFzb24oKSBPVkVSUklERSB7IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KKworcHJpdmF0
ZToKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29ja2V0RGVmbGF0ZUZy
YW1lciopOworCisgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciogbV9mcmFtZXI7CisgICAgYm9v
bCBtX3Jlc3BvbnNlUHJvY2Vzc2VkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9Owor
CisvLyBGWElNRTogUmVtb3ZlIHZlbmRvciBwcmVmaXggYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24g
bWF0dXJlZC4KK1dlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5z
aW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKKyAgICA6IFdl
YlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcigieC13ZWJraXQtZGVmbGF0ZS1mcmFtZSIpCisgICAg
LCBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3Jlc3BvbnNlUHJvY2Vzc2VkKGZhbHNlKQorewor
ICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU6OmhhbmRzaGFrZVN0cmluZygpCit7CisgICAgcmV0dXJuIGV4dGVuc2lvblRva2Vu
KCk7IC8vIE5vIHBhcmFtZXRlcgorfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVG
cmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBzZXJ2
ZXJQYXJhbWV0ZXJzKQoreworI2lmIFVTRShaTElCKQorICAgIGlmIChtX3Jlc3BvbnNlUHJvY2Vz
c2VkKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBkdXBsaWNhdGUgZGVm
bGF0ZS1mcmFtZSByZXNwb25zZSI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
bV9yZXNwb25zZVByb2Nlc3NlZCA9IHRydWU7CisKKyAgICBpbnQgZXhwZWN0ZWROdW1QYXJhbWV0
ZXJzID0gMDsKKyAgICBpbnQgd2luZG93Qml0cyA9IDE1OworICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQo
Im1heF93aW5kb3dfYml0cyIpOworICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVy
cy5lbmQoKSkgeworICAgICAgICB3aW5kb3dCaXRzID0gcGFyYW1ldGVyLT5zZWNvbmQudG9JbnQo
KTsKKyAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkgeworICAg
ICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19i
aXRzIHBhcmFtZXRlciI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzKys7CisgICAgfQorCisgICAgV2ViU29ja2V0RGVm
bGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSA9IFdlYlNvY2tldERlZmxhdGVyOjpUYWtl
T3ZlckNvbnRleHQ7CisgICAgcGFyYW1ldGVyID0gc2VydmVyUGFyYW1ldGVycy5maW5kKCJub19j
b250ZXh0X3Rha2VvdmVyIik7CisgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJz
LmVuZCgpKSB7CisgICAgICAgIGlmICghcGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpIHsKKyAg
ICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRf
dGFrZW92ZXIgcGFyYW1ldGVyIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0
OworICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKKyAgICB9CisKKyAgICBpZiAoZXhw
ZWN0ZWROdW1QYXJhbWV0ZXJzICE9IHNlcnZlclBhcmFtZXRlcnMuc2l6ZSgpKSB7CisgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFy
YW1ldGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fZnJhbWVyLT5l
bmFibGVEZWZsYXRlKHdpbmRvd0JpdHMsIG1vZGUpOworICAgIHJldHVybiB0cnVlOworI2Vsc2UK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KworRGVmbGF0ZVJlc3VsdEhvbGRlcjo6RGVmbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZs
YXRlRnJhbWVyKiBmcmFtZXIpCisgICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2Nl
ZWRlZCh0cnVlKQoreworICAgIEFTU0VSVChtX2ZyYW1lcik7Cit9CisKK0RlZmxhdGVSZXN1bHRI
b2xkZXI6On5EZWZsYXRlUmVzdWx0SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVzZXREZWZs
YXRlQ29udGV4dCgpOworfQorCit2b2lkIERlZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3Qg
U3RyaW5nJiBmYWlsdXJlUmVhc29uKQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAg
bV9mYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbjsKK30KKworSW5mbGF0ZVJlc3VsdEhvbGRl
cjo6SW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBmcmFtZXIpCisg
ICAgOiBtX2ZyYW1lcihmcmFtZXIpCisgICAgLCBtX3N1Y2NlZWRlZCh0cnVlKQoreworICAgIEFT
U0VSVChtX2ZyYW1lcik7Cit9CisKK0luZmxhdGVSZXN1bHRIb2xkZXI6On5JbmZsYXRlUmVzdWx0
SG9sZGVyKCkKK3sKKyAgICBtX2ZyYW1lci0+cmVzZXRJbmZsYXRlQ29udGV4dCgpOworfQorCit2
b2lkIEluZmxhdGVSZXN1bHRIb2xkZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBmYWlsdXJlUmVhc29u
KQoreworICAgIG1fc3VjY2VlZGVkID0gZmFsc2U7CisgICAgbV9mYWlsdXJlUmVhc29uID0gZmFp
bHVyZVJlYXNvbjsKK30KKworV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcigpCisgICAgOiBtX2VuYWJsZWQoZmFsc2UpCit7Cit9CisKK1Bhc3NPd25QdHI8V2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKQoreworICAgIHJldHVybiBXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU6OmNyZWF0ZSh0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjpjYW5EZWZsYXRlKCkgY29uc3QKK3sKKyNpZiBVU0UoWkxJQikKKyAgICByZXR1cm4gdHJ1ZTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBVU0UoWkxJQikKK3Zv
aWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywg
V2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSkKK3sKKyAgICBtX2Rl
ZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSh3aW5kb3dCaXRzLCBtb2RlKTsKKyAg
ICBtX2luZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAgIGlmICghbV9k
ZWZsYXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKKyAg
ICAgICAgbV9kZWZsYXRlci5jbGVhcigpOworICAgICAgICBtX2luZmxhdGVyLmNsZWFyKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKK30KKyNlbmRpZgor
CitQYXNzT3duUHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQoreworI2lmIFVTRShaTElCKQorICAgIE93
blB0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiByZXN1bHQgPSBEZWZsYXRlUmVzdWx0SG9sZGVyOjpj
cmVhdGUodGhpcyk7CisgICAgaWYgKCFlbmFibGVkKCkgfHwgIVdlYlNvY2tldEZyYW1lOjppc05v
bkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSB8fCAhZnJhbWUucGF5bG9hZExlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgaWYgKCFtX2RlZmxhdGVyLT5hZGRC
eXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRlci0+
ZmluaXNoKCkpIHsKKyAgICAgICAgcmVzdWx0LT5mYWlsKCJGYWlsZWQgdG8gY29tcHJlc3MgZnJh
bWUiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgfQorICAgIGZyYW1l
LmNvbXByZXNzID0gdHJ1ZTsKKyAgICBmcmFtZS5wYXlsb2FkID0gbV9kZWZsYXRlci0+ZGF0YSgp
OworICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2RlZmxhdGVyLT5zaXplKCk7CisgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisjZWxzZQorICAgIHJldHVybiBEZWZsYXRlUmVzdWx0SG9s
ZGVyOjpjcmVhdGUodGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjpyZXNldERlZmxhdGVDb250ZXh0KCkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBpZiAobV9k
ZWZsYXRlcikKKyAgICAgICAgbV9kZWZsYXRlci0+cmVzZXQoKTsKKyNlbmRpZgorfQorCitQYXNz
T3duUHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmluZmxh
dGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQoreworI2lmIFVTRShaTElCKQorICAgIE93blB0cjxJ
bmZsYXRlUmVzdWx0SG9sZGVyPiByZXN1bHQgPSBJbmZsYXRlUmVzdWx0SG9sZGVyOjpjcmVhdGUo
dGhpcyk7CisgICAgaWYgKCFmcmFtZS5jb21wcmVzcykKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CisgICAgaWYgKCFlbmFibGVkKCkgfHwgIVdlYlNvY2tldEZyYW1lOjppc05vbkNv
bnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSkgeworICAgICAgICByZXN1bHQtPmZhaWwoIlJlY2Vp
dmVkIHVuZXhwZWN0ZWQgY29tcHJlc3NlZCBmcmFtZSIpOworICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKKyAgICB9CisgICAgaWYgKCFtX2luZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5w
YXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9pbmZsYXRlci0+ZmluaXNoKCkpIHsK
KyAgICAgICAgcmVzdWx0LT5mYWlsKCJGYWlsZWQgdG8gZGVjb21wcmVzcyBmcmFtZSIpOworICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisgICAgZnJhbWUuY29tcHJlc3Mg
PSBmYWxzZTsKKyAgICBmcmFtZS5wYXlsb2FkID0gbV9pbmZsYXRlci0+ZGF0YSgpOworICAgIGZy
YW1lLnBheWxvYWRMZW5ndGggPSBtX2luZmxhdGVyLT5zaXplKCk7CisgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlKCk7CisjZWxzZQorICAgIHJldHVybiBJbmZsYXRlUmVzdWx0SG9sZGVyOjpjcmVh
dGUodGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNl
dEluZmxhdGVDb250ZXh0KCkKK3sKKyNpZiBVU0UoWkxJQikKKyAgICBpZiAobV9pbmZsYXRlcikK
KyAgICAgICAgbV9pbmZsYXRlci0+cmVzZXQoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmRpZEZhaWwoKQoreworICAgIHJlc2V0RGVmbGF0ZUNvbnRleHQoKTsK
KyAgICByZXNldEluZmxhdGVDb250ZXh0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEzNTUyNjgyMTBkMGY3Mjg2OGI2YjI4MzljZTk3NTRlZmQ5NTE1OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcl9oCisjZGVmaW5lIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaAorCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorCisjaWYgVVNFKFpMSUIpCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIu
aCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIgorI2lu
Y2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lcjsKKworY2xhc3MgRGVmbGF0ZVJlc3VsdEhvbGRlciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gY3JlYXRlKFdl
YlNvY2tldERlZmxhdGVGcmFtZXIqIGZyYW1lcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgRGVmbGF0ZVJlc3VsdEhvbGRlcihmcmFtZXIpKTsKKyAgICB9CisKKyAgICB+RGVm
bGF0ZVJlc3VsdEhvbGRlcigpOworCisgICAgYm9vbCBzdWNjZWVkZWQoKSBjb25zdCB7IHJldHVy
biBtX3N1Y2NlZWRlZDsgfQorICAgIFN0cmluZyBmYWlsdXJlUmVhc29uKCkgY29uc3QgeyByZXR1
cm4gbV9mYWlsdXJlUmVhc29uOyB9CisKKyAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiBmYWls
dXJlUmVhc29uKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEZWZsYXRlUmVzdWx0SG9sZGVy
KFdlYlNvY2tldERlZmxhdGVGcmFtZXIqKTsKKworICAgIFdlYlNvY2tldERlZmxhdGVGcmFtZXIq
IG1fZnJhbWVyOworICAgIGJvb2wgbV9zdWNjZWVkZWQ7CisgICAgU3RyaW5nIG1fZmFpbHVyZVJl
YXNvbjsKK307CisKK2NsYXNzIEluZmxhdGVSZXN1bHRIb2xkZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IGNyZWF0ZShXZWJTb2NrZXREZWZs
YXRlRnJhbWVyKiBmcmFtZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IElu
ZmxhdGVSZXN1bHRIb2xkZXIoZnJhbWVyKSk7CisgICAgfQorCisgICAgfkluZmxhdGVSZXN1bHRI
b2xkZXIoKTsKKworICAgIGJvb2wgc3VjY2VlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZWVk
ZWQ7IH0KKyAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbHVy
ZVJlYXNvbjsgfQorCisgICAgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgZmFpbHVyZVJlYXNvbik7
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgSW5mbGF0ZVJlc3VsdEhvbGRlcihXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyKik7CisKKyAgICBXZWJTb2NrZXREZWZsYXRlRnJhbWVyKiBtX2ZyYW1lcjsK
KyAgICBib29sIG1fc3VjY2VlZGVkOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9Owor
CitjbGFzcyBXZWJTb2NrZXREZWZsYXRlRnJhbWVyIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyKCk7CisKKyAgICBQYXNzT3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvcj4gY3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCk7CisKKyAgICBib29sIGNhbkRlZmxhdGUo
KSBjb25zdDsKKyAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0K
KworICAgIFBhc3NPd25QdHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gZGVmbGF0ZShXZWJTb2NrZXRG
cmFtZSYpOworICAgIHZvaWQgcmVzZXREZWZsYXRlQ29udGV4dCgpOworICAgIFBhc3NPd25QdHI8
SW5mbGF0ZVJlc3VsdEhvbGRlcj4gaW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYpOworICAgIHZvaWQg
cmVzZXRJbmZsYXRlQ29udGV4dCgpOworCisgICAgdm9pZCBkaWRGYWlsKCk7CisKKyNpZiBVU0Uo
WkxJQikKKyAgICB2b2lkIGVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERl
ZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIGJv
b2wgbV9lbmFibGVkOworI2lmIFVTRShaTElCKQorICAgIE93blB0cjxXZWJTb2NrZXREZWZsYXRl
cj4gbV9kZWZsYXRlcjsKKyAgICBPd25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IG1faW5mbGF0ZXI7
CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2Vu
ZGlmIC8vIFdlYlNvY2tldERlZmxhdGVGcmFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMTNlMTA0YmI4
NDMwYjAxODA3YzI0N2ViOTE2NzcxYWNmOWViOGU0MC4uMjNiYTA4MGI2ZmIxOGQxYzVmNDBkNTNi
NjY4Yjk1YjU1NjE1MjJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNjc1LDYgKzM2NzUsNyBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmggXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCBcCisgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmggXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZy
YW1lLmggXApAQCAtMzY4Niw2ICszNjg3LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dF
Ql9TT0NLRVRTPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZUZyYW1lci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmlu
ZGV4IGNlYzgwZjVkOGQ1ZTc2NjQ5OTU1MmQ3MjFjM2Q2MzUxYjU2YWY0NDYuLmI3MTc4NDQxYTQx
YjVjZDYzZjZkMmQwMWY1NzQ2N2E3NGVhMTVmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCkBAIC0xMTk0LDYgKzExOTQsNyBAQAogICAgICAgICAnPChjaHJvbWl1bV9z
cmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvb3RzLmd5cDpvdHMnLAogICAgICAgICAnPChjaHJvbWl1
bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9zcWxpdGUvc3FsaXRlLmd5cDpzcWxpdGUnLAogICAgICAg
ICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvYnVpbGRfYW5nbGUu
Z3lwOnRyYW5zbGF0b3JfZ2xzbCcsCisgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJk
X3BhcnR5L3psaWIvemxpYi5neXA6emxpYicsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAogICAgICAgICAnPChsaWJqcGVnX2d5cF9wYXRoKTps
aWJqcGVnJywKICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTk4OGVmZTc3ZmZjM2U1Y2E0
NGIwN2JkMzVkNmM1OTllMDI1OWNjMS4uNDJjMDQwOTU0ZDJkYzBhNjJiNDVlMTRkNmEyM2NjNzVj
MGUwZDcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTM0Miw2ICsxMzQyLDggQEAKICAgICAgICAg
ICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDZkOWNlZWFmYzhhMmIzNWJlZTQ5NTM5NjU1NTEyYTNiODI1ODcxNTYuLjk0ZDE2MmY5YTNi
ZWRlYjAzZmE5Y2RjNGI4ZWQ1YzE2OTI2MTBmYzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDE1Myw2ICsyNDE1MywxNCBAQAogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3
ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXFdl
YlNvY2tldERlZmxhdGVGcmFtZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2NrZXREZWZsYXRl
ci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjgwNzk3YjAxODc2MjUxODE2YmJkNWYx
OTZjNzdhZjk4NDMxMTJlNy4uNGE4NjNjM2QxNGUyZWEyZTU4ZDgyODlmYzM4YmNkZTZmODM2MDU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTM2Nyw2ICsxMzY3LDggQEAKIAkJNEExRTcxOTYxNEUxMDFGOTAwNjI2RjlEIC8q
IEpTSFRNTFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRBMUU3MTk0MTRFMTAxRjkwMDYyNkY5RCAvKiBKU0hUTUxTaGFkb3dFbGVt
ZW50LmggKi87IH07CiAJCTRBMUU3MUE1MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEExRTcx
QTMxNEUxMDZBQzAwNjI2RjlEIC8qIEpTU2hhZG93Um9vdC5jcHAgKi87IH07CiAJCTRBMUU3MUE2
MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1No
YWRvd1Jvb3QuaCAqLzsgfTsKKwkJNEEzOEJGNTAxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEEzOEJGNEUxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIuY3BwICovOyB9OworCQk0QTM4QkY1MTE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEEzOEJGNEYxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaCAq
LzsgfTsKIAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzEx
M0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovOyB9OwogCQk0QTZFOUZD
NDEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8q
IEZvbnRGZWF0dXJlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0QTZFOUZDNzEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0
aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgKi87IH07
CkBAIC04MjM3LDYgKzgyMzksOCBAQAogCQk0QTFFNzE5NDE0RTEwMUY5MDA2MjZGOUQgLyogSlNI
VE1MU2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hU
TUxTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMUU3MUEz
MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSb290LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEExRTcxQTQxNEUxMDZBQzAwNjI2RjlEIC8qIEpTU2hhZG93Um9vdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1Jvb3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNEEzOEJGNEUxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBMzhC
RjRGMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuaDsgcGF0aCA9
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBNkU5RkMxMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVy
ZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0
dXJlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDMjEzQzE3
RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb250RmVhdHVyZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRBNkU5RkM1MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0dGluZ3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyMzIsNiArMTcyMzYsOCBAQAog
CQkJCTk3QUFCRDAyMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywK
IAkJCQk5N0FBQkQwMzE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAog
CQkJCTk3QUFCRDA0MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgg
Ki8sCisJCQkJNEEzOEJGNEUxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIuY3BwICovLAorCQkJCTRBMzhCRjRGMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmggKi8sCiAJCQkJOTdBQUJEMDUxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tl
dERlZmxhdGVyLmNwcCAqLywKIAkJCQk5N0FBQkQwNjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29j
a2V0RGVmbGF0ZXIuaCAqLywKIAkJCQk5N0FBQkQwNzE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8sCkBAIC0yNDI4MCw2ICsyNDI4Niw3IEBACiAJ
CQkJOTdBQUJEMUIxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTdBQUJEMUUxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3QUFCRDFGMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QTM4QkY1MTE0RkUxQzA5MDA2MTI1MTIg
LyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjEx
NEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5N0FBQkQyMzE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjQxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI0Myw2ICsyNzI1
MCw3IEBACiAJCQkJMUNBRjM0ODIwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDFBMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMUQxNEZBMDlENTAwNzQ1N0FFIC8qIFdl
YlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEEzOEJGNTAxNEZFMUMwOTAw
NjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTdBQUJEMjAxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QUFCRDIyMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDI2MTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzFl
MzkzZjQ4YzliMmM3MGM2ZTE2YTc4YmFjYTM5ZmI0MzYwNjQ1ZC4uZTNiM2I0YzdmOWMyYjExZDEy
MDRiOGMzOGQzODJkYTdlZTU3NDA5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAzLTAx
ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRp
bmcgV2ViU29ja2V0IHBlci1mcmFtZSBERUZMQVRFIGV4dGVuc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MjIKKworICAgICAgICBBZGRlZCB0
ZXN0cyBmb3IgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLiBBbHNvIHVwZGF0ZWQg
c29tZQorICAgICAgICB0ZXN0cyB0byBmb2xsb3cgdGhlIGNoYW5nZS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY29tcHJlc3NlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRy
b2wtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAg
KHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9k
ZWZsYXRlLWZyYW1lLWNvbXAtYml0LW9ub2ZmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAtYml0
LW9ub2ZmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5
OiBBZGRlZC4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAg
ICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZS1wYXJhbWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgIChfZ2V0
X2RlZmxhdGVfZnJhbWVfZXh0ZW5zaW9uX3Byb2Nlc3Nvcik6CisgICAgICAgICh3ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEp
OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZh
aWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Jfd3NoLnB5OgorICAgICAgICAo
X3JldHJpZXZlX2ZyYW1lKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6IFNraXBzIHRlc3RzIHJlbHkgb24gemxpYgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IERpdHRvLgorCiAyMDEyLTAzLTAxICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLiBNYXJrIGEgSlMgc3RyaWN0IG1vZGUgdGVzdCBhcyBmYWlsaW5nIGluIFY4LApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVz
c2VkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY0MWVjNDczZDZiZTIxYzFjMDYwMTAyOWZmYzVmYTM5Y2NiZjM4MjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUK
K1Rlc3Qgd2hldGhlciBhIGNvbXByZXNzZWQgY29udHJvbCBmcmFtZSBpcyByZWplY3RlZAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3Nl
KCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29tcHJlc3NlZC1j
b250cm9sLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMDg4Yzc5
OWJlNDExYzEyMjgxMmE1MDk0MmZhODM5ODM4MDA5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJv
bC1mcmFtZS5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBhIGNvbXByZXNzZWQgY29udHJv
bCBmcmFtZSBpcyByZWplY3RlZCIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDApOworCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFtZSIpOwordmFyIGNsb3Nl
RXZlbnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkg
d2FzIGNhbGxlZC4iKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2Uo
KSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7Cit9OworCit3
cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMg
Y2FsbGVkLiIpOworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNlKCJj
bG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJh
bWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
b21wcmVzc2VkLWNvbnRyb2wtZnJhbWVfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMTJlOWM0NTIyYjMx
ODU4Nzg0NmZiMTYwMTYxOTc5YThiM2IyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJvbC1mcmFt
ZV93c2gucHkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2Zyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJl
YW0KK2ltcG9ydCB6bGliCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgorICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKKyAgICAgICAgemxpYi5aX0RF
RkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKKyAgICBj
b21wcmVzc2VkX21lc3NhZ2UgPSBjb21wcmVzcy5jb21wcmVzcygnY2xvc2UgbWVzc2FnZScpCisg
ICAgY29tcHJlc3NlZF9tZXNzYWdlICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNI
KQorICAgIGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzZWRfbWVzc2FnZVs6LTRdCisgICAg
aGVhZGVyID0gc3RyZWFtLmNyZWF0ZV9oZWFkZXIoCisgICAgICAgIG9wY29kZT1jb21tb24uT1BD
T0RFX0NMT1NFLCBwYXlsb2FkX2xlbmd0aD1sZW4oY29tcHJlc3NlZF9tZXNzYWdlKSwKKyAgICAg
ICAgZmluPTEsIHJzdjE9MSwgcnN2Mj0wLCByc3YzPTAsIG1hc2s9RmFsc2UpCisgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXRlKGhlYWRlciArIGNvbXByZXNzZWRfbWVzc2FnZSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1m
cmFtZS1jb21wLWJpdC1vbm9mZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU2MmZlZjNkZTZmMGZlNDA4MGVhMmQzNTIzZjI5NWI0Mzg2MjNm
MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjAgQEAKK1Rlc3QgY29tcHJlc3Npb24gZW5hYmxlZC9kaXNhYmxlZCBmcmFtZSByZWNl
aXZpbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU2VuZGluZyBtZXNzYWdlOiAi
SGVsbG8iCitQQVNTIGV2ZW50LmRhdGEgaXMgJ0hlbGxvJworU2VuZGluZyBtZXNzYWdlOiAiRGlz
YWJsZUNvbXByZXNzaW9uIgorUEFTUyBldmVudC5kYXRhIGlzICdEaXNhYmxlQ29tcHJlc3Npb24n
CitTZW5kaW5nIG1lc3NhZ2U6ICJXb3JsZCIKK1BBU1MgZXZlbnQuZGF0YSBpcyAnV29ybGQnCitT
ZW5kaW5nIG1lc3NhZ2U6ICJFbmFibGVDb21wcmVzc2lvbiIKK1BBU1MgZXZlbnQuZGF0YSBpcyAn
RW5hYmxlQ29tcHJlc3Npb24nCitTZW5kaW5nIG1lc3NhZ2U6ICJHb29kYnllIgorUEFTUyBldmVu
dC5kYXRhIGlzICdHb29kYnllJworb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZl
bnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWNvbXAt
Yml0LW9ub2ZmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTMyYWM1N2JiOGY4YmI5MDZmYWE0MmI0MzM0YmYy
ZmMyNzhhNjc2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sCkBAIC0w
LDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGNvbXByZXNzaW9u
IGVuYWJsZWQvZGlzYWJsZWQgZnJhbWUgcmVjZWl2aW5nLiIpOworCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tl
dFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKK3ZhciB3czsKK3ZhciBt
ZXNzYWdlSW5kZXg7CisKK3ZhciBtZXNzYWdlcyA9IFsKKyAgICAiSGVsbG8iLAorICAgICJEaXNh
YmxlQ29tcHJlc3Npb24iLCAvLyBUaGlzIGRpc2FibGVzIGNvbXByZXNzaW9uCisgICAgIldvcmxk
IiwKKyAgICAiRW5hYmxlQ29tcHJlc3Npb24iLCAvLyBUaGlzIGVuYWJsZXMgY29tcHJlc3Npb24K
KyAgICAiR29vZGJ5ZSIKK107CisKK3dzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6
ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lIik7CisKK3dzLm9ub3BlbiA9
IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIG1lc3NhZ2VJbmRleCA9IDA7CisgICAgZGVidWcoIlNl
bmRpbmcgbWVzc2FnZTogXCIiICsgbWVzc2FnZXNbbWVzc2FnZUluZGV4XSArICJcIiIpOworICAg
IHdzLnNlbmQobWVzc2FnZXNbbWVzc2FnZUluZGV4XSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldmVudCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICInIiArIG1lc3Nh
Z2VzW21lc3NhZ2VJbmRleF0gKyAiJyIpOworICAgIGlmIChtZXNzYWdlSW5kZXggPT09IG1lc3Nh
Z2VzLmxlbmd0aCAtIDEpCisgICAgICAgIHdzLmNsb3NlKCk7CisgICAgZWxzZSB7CisgICAgICAg
IG1lc3NhZ2VJbmRleCArPSAxOworICAgICAgICBkZWJ1ZygiU2VuZGluZyBtZXNzYWdlOiBcIiIg
KyBtZXNzYWdlc1ttZXNzYWdlSW5kZXhdICsgIlwiIik7CisgICAgICAgIHdzLnNlbmQobWVzc2Fn
ZXNbbWVzc2FnZUluZGV4XSk7CisgICAgfQorfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2
ZW50KQoreworICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2
ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1pbnZhbGlkLXBhcmFtZXRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNhMjRkMjhjYzIz
M2I3YTVmNjM0OTNiOTVkMGY4MWJhN2YzNGRiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlk
LXBhcmFtZXRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorQ09OU09MRSBNRVNTQUdF
OiBSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyCitDT05TT0xFIE1F
U1NBR0U6IFJlY2VpdmVkIGludmFsaWQgbWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlcgorQ09OU09M
RSBNRVNTQUdFOiBSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJhbWV0ZXIKK0NP
TlNPTEUgTUVTU0FHRTogUmVjZWl2ZWQgaW52YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFt
ZXRlcgorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUg
cGFyYW1ldGVyCitUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgaW52YWxpZCBkZWZsYXRl
LWZyYW1lIHBhcmFtZXRlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdGlu
ZyBwYXJhbWV0ZXI6ICJ4LWZvbyIKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitUZXN0aW5nIHBhcmFtZXRlcjogIm1heF93aW5kb3dfYml0
cz03Igorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMg
ZmFsc2UKK1Rlc3RpbmcgcGFyYW1ldGVyOiAibWF4X3dpbmRvd19iaXRzPTE2Igorb25jbG9zZSgp
IHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1Rlc3Rpbmcg
cGFyYW1ldGVyOiAibm9fY29udGV4dF90YWtlb3Zlcj1mb28iCitvbmNsb3NlKCkgd2FzIGNhbGxl
ZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorVGVzdGluZyBwYXJhbWV0ZXI6
ICJtYXhfd2luZG93X2JpdHM9ODsgbm9fY29udGV4dF90YWtlb3ZlcjsgeC1mb28iCitvbmNsb3Nl
KCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFt
ZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWE1ZmJkMDZkMjAyYTNlY2M4MDJhZTI0YTc3OWVmNjRiOTM5YTljMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVm
bGF0ZS1mcmFtZS1pbnZhbGlkLXBhcmFtZXRlci5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgaW52
YWxpZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRlcnMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJv
dG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciBjbG9zZUV2ZW50OworCit2YXIgdGVzdENhc2UgPSBb
CisgICAgIngtZm9vIiwKKyAgICAibWF4X3dpbmRvd19iaXRzPTciLAorICAgICJtYXhfd2luZG93
X2JpdHM9MTYiLAorICAgICJub19jb250ZXh0X3Rha2VvdmVyPWZvbyIsCisgICAgIm1heF93aW5k
b3dfYml0cz04OyBub19jb250ZXh0X3Rha2VvdmVyOyB4LWZvbyIKK107CisKK2Z1bmN0aW9uIGRv
VGVzdChpbmRleCkKK3sKKyAgICB2YXIgcGFyYW1ldGVyID0gdGVzdENhc2VbaW5kZXhdOworICAg
IHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZs
YXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyPyIgKyBlbmNvZGVVUkkocGFyYW1ldGVyKTsKKyAg
ICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisKKyAgICBkZWJ1ZygiVGVzdGluZyBwYXJh
bWV0ZXI6IFwiIiArIHBhcmFtZXRlciArICJcIiIpOworCisgICAgd3Mub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIi
ICsgbWVzc2FnZSArICJcIikiKTsKKyAgICB9OworCisgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOwor
ICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3Nl
RXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAgaWYgKGluZGV4ID09PSB0ZXN0Q2FzZS5sZW5ndGgg
LSAxKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGRvVGVzdChpbmRleCArIDEpOworICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1pbnZhbGlk
LXBhcmFtZXRlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE4Y2MyNWM4ZDdjY2MxYTY3NmFkMWVmNjg0ZDYzMDk5MTI4ZmYwMDQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUt
ZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXJfd3NoLnB5CkBAIC0wLDAgKzEsNTYgQEAKKyMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgdXJsbGliCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFu
ZHNoYWtlCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBpbXBvcnQgY29tcHV0
ZV9hY2NlcHQKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
CisgICAgcmVzb3VyY2VzID0gcmVxdWVzdC53c19yZXNvdXJjZS5zcGxpdCgnPycsIDEpCisgICAg
cGFyYW1ldGVycyA9IE5vbmUKKyAgICBpZiBsZW4ocmVzb3VyY2VzKSA9PSAyOgorICAgICAgICBw
YXJhbWV0ZXJzID0gdXJsbGliLnVucXVvdGUocmVzb3VyY2VzWzFdKQorCisgICAgbWVzc2FnZSA9
ICdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisgICAgbWVzc2FnZSArPSAn
VXBncmFkZTogd2Vic29ja2V0XHJcbicKKyAgICBtZXNzYWdlICs9ICdDb25uZWN0aW9uOiBVcGdy
YWRlXHJcbicKKyAgICBtZXNzYWdlICs9ICdTZWMtV2ViU29ja2V0LUFjY2VwdDogJXNcclxuJyAl
IGNvbXB1dGVfYWNjZXB0KHJlcXVlc3QuaGVhZGVyc19pblsnU2VjLVdlYlNvY2tldC1LZXknXSlb
MF0KKyAgICBtZXNzYWdlICs9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6IHgtd2Via2l0LWRl
ZmxhdGUtZnJhbWUnCisgICAgaWYgcGFyYW1ldGVyczoKKyAgICAgICAgbWVzc2FnZSArPSAnOyAl
c1xyXG4nICUgcGFyYW1ldGVycworICAgIGVsc2U6CisgICAgICAgIG1lc3NhZ2UgKz0gJ1xyXG4n
CisgICAgbWVzc2FnZSArPSAnXHJcbicKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVz
c2FnZSkKKyAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQWJvcnQg
dGhlIGNvbm5lY3Rpb24nKSAjIFByZXZlbnRzIHB5d2Vic29ja2V0IGZyb20gc2VuZGluZyBpdHMg
b3duIGhhbmRzaGFrZSBtZXNzYWdlLgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEo
cmVxdWVzdCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjYzZmUzOTRhNDYyNGExODRj
M2RiMmY0NzI4OTQ0NDlkMGQ0MDRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzMCBAQAorVGVzdCBXZWJTb2NrZXQgZGVmbGF0ZS1mcmFtZSBl
eHRlbnNpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdGluZyBxdWVyeTog
Im1heF93aW5kb3dfYml0cz04IgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJraXQt
ZGVmbGF0ZS1mcmFtZScpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5zZWFyY2go
J21heF93aW5kb3dfYml0cz04JykgIT0gLTEgaXMgdHJ1ZQorUEFTUyBldmVudC5kYXRhIGlzIGZp
cnN0TWVzc2FnZQorUEFTUyBldmVudC5kYXRhIGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3
YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1Rlc3RpbmcgcXVl
cnk6ICJub19jb250ZXh0X3Rha2VvdmVyIgorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgneC13
ZWJraXQtZGVmbGF0ZS1mcmFtZScpICE9IC0xIGlzIHRydWUKK1BBU1Mgd3MuZXh0ZW5zaW9ucy5z
ZWFyY2goJ25vX2NvbnRleHRfdGFrZW92ZXInKSAhPSAtMSBpcyB0cnVlCitQQVNTIGV2ZW50LmRh
dGEgaXMgZmlyc3RNZXNzYWdlCitQQVNTIGV2ZW50LmRhdGEgaXMgc2Vjb25kTWVzc2FnZQorb25j
bG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorVGVz
dGluZyBxdWVyeTogIm1heF93aW5kb3dfYml0cz04Jm5vX2NvbnRleHRfdGFrZW92ZXIiCitQQVNT
IHdzLmV4dGVuc2lvbnMuc2VhcmNoKCd4LXdlYmtpdC1kZWZsYXRlLWZyYW1lJykgIT0gLTEgaXMg
dHJ1ZQorUEFTUyB3cy5leHRlbnNpb25zLnNlYXJjaCgnbWF4X3dpbmRvd19iaXRzPTgnKSAhPSAt
MSBpcyB0cnVlCitQQVNTIHdzLmV4dGVuc2lvbnMuc2VhcmNoKCdub19jb250ZXh0X3Rha2VvdmVy
JykgIT0gLTEgaXMgdHJ1ZQorUEFTUyBldmVudC5kYXRhIGlzIGZpcnN0TWVzc2FnZQorUEFTUyBl
dmVudC5kYXRhIGlzIHNlY29uZE1lc3NhZ2UKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBj
bG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtcGFy
YW1ldGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI3N2U0NzE4MTdlMjM0N2NmYjgzNmZkOWUzYWFhM2Vm
Yjg1YzZmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDkw
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgZGVmbGF0ZS1m
cmFtZSBleHRlbnNpb24uIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MCk7CisKK3ZhciBjbG9zZUV2ZW50OwordmFyIHdzOwordmFyIG1lc3NhZ2VJbmRleDsKKwordmFy
IHF1ZXJpZXMgPSBbCisgICAgIm1heF93aW5kb3dfYml0cz04IiwKKyAgICAibm9fY29udGV4dF90
YWtlb3ZlciIsCisgICAgIm1heF93aW5kb3dfYml0cz04Jm5vX2NvbnRleHRfdGFrZW92ZXIiCitd
OworCisvLyBUaGUgZmlyc3QgbWVzc2FnZSBjb25zaXN0cyBvZiBhIGxvdCBvZiAnYicgYW5kIGEg
ZmV3ICdhJyBhdCB0aGUgaGVhZCBhbmQKKy8vIHRoZSB0YWlsLCB3aGlsZSB0aGUgc2Vjb25kIG9u
ZSBjb25zaXN0cyBvZiAnYScuCit2YXIgZmlyc3RNZXNzYWdlID0gJyc7Cit2YXIgc2Vjb25kTWVz
c2FnZSA9ICcnOworZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgZmlyc3RNZXNz
YWdlICs9ICdhJzsKKyAgICBzZWNvbmRNZXNzYWdlICs9ICdhJzsKK30KK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAyNDsgKytpKSB7CisgICAgZmlyc3RNZXNzYWdlICs9ICdiJzsKKyAgICBzZWNvbmRN
ZXNzYWdlICs9ICdhJzsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgIGZp
cnN0TWVzc2FnZSArPSAnYSc7CisgICAgc2Vjb25kTWVzc2FnZSArPSAnYSc7Cit9CisKK2Z1bmN0
aW9uIGRvVGVzdChxdWVyeUluZGV4KQoreworICAgIHZhciBxdWVyeSA9IHF1ZXJpZXNbcXVlcnlJ
bmRleF07CisgICAgZGVidWcoIlRlc3RpbmcgcXVlcnk6IFwiIiArIHF1ZXJ5ICsgIlwiIik7CisK
KyAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZGVmbGF0ZS1mcmFtZT8iICsgcXVlcnk7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7Cisg
ICAgbWVzc2FnZUluZGV4ID0gMDsKKworICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ3cy5leHRlbnNpb25zLnNlYXJjaCgneC13ZWJr
aXQtZGVmbGF0ZS1mcmFtZScpICE9IC0xIik7CisgICAgICAgIHBhcmFtZXRlcnMgPSBxdWVyeS5z
cGxpdCgnJicpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICBzaG91bGRCZVRydWUoIndzLmV4dGVuc2lvbnMuc2VhcmNoKCci
ICsgcGFyYW1ldGVyc1tpXSArICInKSAhPSAtMSIpOworICAgICAgICB3cy5zZW5kKGZpcnN0TWVz
c2FnZSk7CisgICAgfTsKKworICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgaWYgKG1lc3NhZ2VJbmRleCA9PT0gMCkgeworICAgICAgICAgICAgc2hvdWxk
QmUoImV2ZW50LmRhdGEiLCAiZmlyc3RNZXNzYWdlIik7CisgICAgICAgICAgICBtZXNzYWdlSW5k
ZXggKz0gMQorICAgICAgICAgICAgd3Muc2VuZChzZWNvbmRNZXNzYWdlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC5kYXRhIiwgInNlY29uZE1lc3NhZ2Ui
KTsKKyAgICAgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgd3Mu
b25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoIm9uY2xvc2Uo
KSB3YXMgY2FsbGVkLiIpOworICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAocXVlcnlJbmRl
eCA9PT0gcXVlcmllcy5sZW5ndGggLSAxKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvVGVzdChxdWVyeUluZGV4ICsgMSk7CisgICAgfTsK
K30KKworZG9UZXN0KDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9kZWZsYXRlLWZyYW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNiNzgzODU1
MDQyNzQ4M2E5MzI2Y2U4ZmE2MGMxNzk4MWFkYmQ1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZV93c2gu
cHkKQEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCB1cmxwYXJzZQor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0ZW5z
aW9uUHJvY2Vzc29yCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBFeHRl
bnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBv
cnQgRXh0ZW5zaW9uUGFyYW1ldGVyCisKKworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScK
K19FTkFCTEVfTUVTU0FHRSA9IHUnRW5hYmxlQ29tcHJlc3Npb24nCitfRElTQUJMRV9NRVNTQUdF
ID0gdSdEaXNhYmxlQ29tcHJlc3Npb24nCisKKworZGVmIF9nZXRfZGVmbGF0ZV9mcmFtZV9leHRl
bnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpOgorICAgIGZvciBleHRlbnNpb25fcHJvY2Vzc29yIGlu
IHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnM6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
ZXh0ZW5zaW9uX3Byb2Nlc3NvciwgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAg
ICAgICAgICAgIHJldHVybiBleHRlbnNpb25fcHJvY2Vzc29yCisgICAgcmV0dXJuIE5vbmUKKwor
CitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcHJvY2Vz
c29yID0gX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9wcm9jZXNzb3IocmVxdWVzdCkKKyAg
ICBpZiBub3QgcHJvY2Vzc29yOgorICAgICAgICByZXR1cm4KKyAgICByID0gcmVxdWVzdC53c19y
ZXNvdXJjZS5zcGxpdCgnPycsIDEpCisgICAgaWYgbGVuKHIpID09IDE6CisgICAgICAgIHJldHVy
bgorICAgIHBhcmFtZXRlcnMgPSB1cmxwYXJzZS5wYXJzZV9xcyhyWzFdLCBrZWVwX2JsYW5rX3Zh
bHVlcz1UcnVlKQorICAgIGlmICdtYXhfd2luZG93X2JpdHMnIGluIHBhcmFtZXRlcnM6CisgICAg
ICAgIHdpbmRvd19iaXRzID0gaW50KHBhcmFtZXRlcnNbJ21heF93aW5kb3dfYml0cyddWzBdKQor
ICAgICAgICBwcm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX3dpbmRvd19iaXRzKHdpbmRvd19iaXRzKQor
ICAgIGlmICdub19jb250ZXh0X3Rha2VvdmVyJyBpbiBwYXJhbWV0ZXJzOgorICAgICAgICBwcm9j
ZXNzb3Iuc2V0X3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1ZSkKKworCitkZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHByb2Nlc3NvciA9IF9nZXRfZGVm
bGF0ZV9mcmFtZV9leHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpCisgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAg
ICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2lu
c3RhbmNlKGxpbmUsIHVuaWNvZGUpOgorICAgICAgICAgICAgaWYgcHJvY2Vzc29yOgorICAgICAg
ICAgICAgICAgIGlmIGxpbmUgPT0gX0VOQUJMRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgICAg
ICBwcm9jZXNzb3IuZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKKyAgICAgICAgICAgICAg
ICBlbGlmIGxpbmUgPT0gX0RJU0FCTEVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICAgICAgcHJv
Y2Vzc29yLmRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oKQorICAgICAgICAgICAgcmVxdWVz
dC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAg
IGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShs
aW5lLCBiaW5hcnk9VHJ1ZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwt
YnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRl
ci1leHBlY3RlZC50eHQKaW5kZXggYWRmMDZiNjUxZDZiNDcxNWI0YTFiOTdjODdjOTYwMjMzYWFl
MWZhMC4uY2M5OWFmMGRkMTY1ZDUzZjQwNjcwYzVjNTg2YWVjOTllZmI2ODNjYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2Ut
ZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNp
b25zLWhlYWRlci1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6
IFJlY2VpdmVkIHVuZXhwZWN0ZWQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcgorQ09O
U09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGV4dGVuc2lvbjogeC1mb28KIFRlc3Qg
d2hldGhlciBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgU2Vj
LVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLWZpbGUtYmxvYl93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQppbmRleCBkYWE0NDA0NzFhZjgzYWIy
NjI4Njc1MWMzZTE4ODgyZjQ4NGRiNzhjLi43OTIwMzRjZmUzYjcwZTA0ODNiNWRlOTVlNGUxNzAx
ZDk3NzgyY2EzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iX3dzaC5weQpAQCAtMiw2ICsy
LDE0IEBAIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KIGZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBtc2d1dGlsCiAKIAorZGVmIF9yZXRyaWV2ZV9mcmFtZShzdHJlYW0pOgor
ICAgICMgRklYTUU6IFVzZSBiZXR0ZXIgQVBJLgorICAgIGZyYW1lID0gc3RyZWFtLl9yZWNlaXZl
X2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCisgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzdHJlYW0u
X29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKKyAgICAgICAgZnJhbWVfZmlsdGVyLmZp
bHRlcihmcmFtZSkKKyAgICByZXR1cm4gZnJhbWUKKworCiBkZWYgd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UocmVxdWVzdCk6CiAgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCiAKQEAgLTEw
LDEyICsxOCwxMSBAQCBkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgogICAg
IGV4cGVjdGVkX21lc3NhZ2VzID0gWydIZWxsbywgd29ybGQhJ10KIAogICAgIGZvciB0ZXN0X251
bWJlciwgZXhwZWN0ZWRfbWVzc2FnZSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfbWVzc2FnZXMpOgot
ICAgICAgICAjIEZJWE1FOiBVc2UgYmV0dGVyIEFQSS4KLSAgICAgICAgb3Bjb2RlLCBwYXlsb2Fk
LCBmaW5hbCwgdW51c2VkX3Jlc2VydmVkMSwgdW51c2VkX3Jlc2VydmVkMiwgdW51c2VkX3Jlc2Vy
dmVkMyA9IHJlcXVlc3Qud3Nfc3RyZWFtLl9yZWNlaXZlX2ZyYW1lKCkKLSAgICAgICAgaWYgb3Bj
b2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZIGFuZCBwYXlsb2FkID09IGV4cGVjdGVkX21lc3Nh
Z2UgYW5kIGZpbmFsOgorICAgICAgICBmcmFtZSA9IF9yZXRyaWV2ZV9mcmFtZShyZXF1ZXN0Lndz
X3N0cmVhbSkKKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZ
IGFuZCBmcmFtZS5wYXlsb2FkID09IGV4cGVjdGVkX21lc3NhZ2UgYW5kIGZyYW1lLmZpbjoKICAg
ICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdQQVNTOiBNZXNzYWdlICMl
ZC4nICUgdGVzdF9udW1iZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAjJWQ6IFJlY2VpdmVkIHVuZXhwZWN0
ZWQgZnJhbWU6IG9wY29kZSA9ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0gJXInICUgKHRlc3Rf
bnVtYmVyLCBvcGNvZGUsIHBheWxvYWQsIGZpbmFsKSkKKyAgICAgICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICdGQUlMOiBNZXNzYWdlICMlZDogUmVjZWl2ZWQgdW5leHBlY3Rl
ZCBmcmFtZTogb3Bjb2RlID0gJXIsIHBheWxvYWQgPSAlciwgZmluYWwgPSAlcicgJSAodGVzdF9u
dW1iZXIsIGZyYW1lLm9wY29kZSwgZnJhbWUucGF5bG9hZCwgZnJhbWUuZmluKSkKIAogCiBkZWYg
YWxsX2Rpc3RpbmN0X2J5dGVzKCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDAyOTAz
Y2NhMzA1NGI3OGZmZjY5ZmUzMDhjY2YwMGQxODE4NDNkZWYuLjc1YjEzZWQ2ZjRlYjRmNmRjOWUw
OGViNDNkM2ViN2YwMjE0YWE1MDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xMjgw
LDYgKzEyODAsMTIgQEAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2Uub3V0c2lkZXNv
dXJjZS5odG1sCiAjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgbWlzbWF0Y2ggcmVmdGVzdCB3
aWxsIGZhaWwgYXMgaW50ZW5kZWQgaWYgYm90aCByZXN1bHRzIGFyZSBzYW1lLgogZmFzdC9oYXJu
ZXNzL3NhbXBsZS1mYWlsLW1pc21hdGNoLXJlZnRlc3QuaHRtbAogCisjIFVTRShaTElCKSBpcyBk
aXNhYmxlZAoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRy
b2wtZnJhbWUuaHRtbAoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZy
YW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwKK2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbAoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1sCisKICMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBUZXN0cyB3aGljaCBhbHNv
IGZhaWwgaW4gb3RoZXIgcGxhdGZvcm1zCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDY2NTI5YTk5ZjhlZGM4YTEx
ZDE4ZmI2NWI1ZTYwMGU4MDg5ZDc5NTguLjA5OGNjM2UzN2U1ZTIzZmQ2YmUzYjU2MWEyNDRmMDU0
ODc4ZTEwZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjU3LDYgKzI1NywxMiBAQCBm
YXN0L211dGF0aW9uL29ic2VydmUtY2hpbGRMaXN0Lmh0bWwKIGZhc3QvbXV0YXRpb24vb2JzZXJ2
ZS1leGNlcHRpb25zLmh0bWwKIGZhc3QvbXV0YXRpb24vb2JzZXJ2ZS1zdWJ0cmVlLmh0bWwKIAor
IyBVU0UoWkxJQikgaXMgZGlzYWJsZWQuCitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbAoraHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sCitodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVh
ZGVyLmh0bWwKKwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyAgICAgICBGZWF0dXJlIG5vdCB5
ZXQgc3VwcG9ydGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0gIwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>