<?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>64522</bug_id>
          
          <creation_ts>2011-07-14 05:21:13 -0700</creation_ts>
          <short_desc>WebSocket: Implement hybi framing</short_desc>
          <delta_ts>2011-07-19 01:57:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>50099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>437034</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-14 05:21:13 -0700</bug_when>
    <thetext>Implement hybi WebSocket framing.

http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10#section-4 (Data Framing)
http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10#section-6 (Sending and Receiving Data)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437065</commentid>
    <comment_count>1</comment_count>
      <attachid>100803</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-14 07:03:59 -0700</bug_when>
    <thetext>Created attachment 100803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437067</commentid>
    <comment_count>2</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-14 07:08:24 -0700</bug_when>
    <thetext>This patch is big, but most of the patch is occupied by newly added tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437069</commentid>
    <comment_count>3</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-14 07:11:05 -0700</bug_when>
    <thetext>Not sure why style bot turned red. When I run check-webkit-style locally, it passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437574</commentid>
    <comment_count>4</comment_count>
      <attachid>100803</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-14 23:02:18 -0700</bug_when>
    <thetext>Comment on attachment 100803
Patch

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

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:412
&gt; +const WebSocketChannel::OpCode WebSocketChannel::OpCodeContinuation = 0x0;
&gt; +const WebSocketChannel::OpCode WebSocketChannel::OpCodeText = 0x1;
&gt; +const WebSocketChannel::OpCode WebSocketChannel::OpCodeBinary = 0x2;
&gt; +const WebSocketChannel::OpCode WebSocketChannel::OpCodeClose = 0x8;
&gt; +const WebSocketChannel::OpCode WebSocketChannel::OpCodePing = 0x9;
&gt; +const WebSocketChannel::OpCode WebSocketChannel::OpCodePong = 0xA;
&gt; +

I think we had better move them to the upper place of this file.
These symbols are used before here, and I&apos;m afraid defining them here prevents constant value folding optimization.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:413
&gt; +bool WebSocketChannel::processFrame()

This function is too large.  Please consider splitting it.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:417
&gt; +    char* p = m_buffer;
&gt; +    char* end = m_buffer + m_bufferSize;

&apos;p&apos; and &apos;end&apos; should be &apos;const char*&apos;.
Use another non-const variable or const_cast&lt;&gt; when we unmask the payload.

&apos;end&apos; should be &apos;bufferEnd&apos; to avoid confusion with frameEnd&apos;.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:420
&gt; +    if (m_bufferSize &lt; 2) // Frame incomplete.
&gt; +        return false;

The comment should be a complete sentence as possible.  Probably &quot;The frame is incomplete.&quot;

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:434
&gt; +    if (payloadLength64 &gt;= 126) {
&gt; +        int extendedPayloadLengthSize = payloadLength64 == 126 ? 2 : 8;

126 is a magic number.
Please introduce a meaningful name.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:448
&gt; +#if OS(WINDOWS)
&gt; +    static const uint64_t maxPayloadLength = 0x7FFFFFFFFFFFFFFFui64;
&gt; +#else
&gt; +    static const uint64_t maxPayloadLength = 0x7FFFFFFFFFFFFFFFull;
&gt; +#endif

It&apos;s not OS-dependent but compiler-dependent.

You assume uint64_t is available on any platforms.  So can you use UINT64_C(0x7FFFFFFFFFFFFFFF) ?

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:449
&gt; +    size_t maskingKeyLength = masked ? 4 : 0;

4 is a magic number.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:464
&gt; +    char* payload = p + maskingKeyLength;
&gt; +    char* frameEnd = p + maskingKeyLength + payloadLength;

They should be const char*.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:677
&gt; +    frame.append(0x80 | opCode); // 0x80 is for &quot;fin&quot; bit; we do not fragment a frame on sending.
&gt; +    if (dataLength &lt; 126)
&gt; +        frame.append(0x80 | dataLength); // 0x80 is for &quot;MASK&quot; bit; a client must mask frames so it is always on.

So we should have FinBit = 0x80 and MaskBit = 0x80, or something like them.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:703
&gt; +    frame.append(&quot;....&quot;, 4); // Four-byte placeholder for masking key. Will be overwritten.
&gt; +    size_t payloadStart = frame.size();
&gt; +    frame.append(data, dataLength);
&gt; +
&gt; +    cryptographicallyRandomValues(frame.data() + maskingKeyStart, 4);
&gt; +    for (size_t i = 0; i &lt; dataLength; ++i)
&gt; +        frame[payloadStart + i] ^= frame[maskingKeyStart + i % 4];

4 is a magic number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437672</commentid>
    <comment_count>5</comment_count>
      <attachid>100959</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-15 05:27:41 -0700</bug_when>
    <thetext>Created attachment 100959
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437675</commentid>
    <comment_count>6</comment_count>
      <attachid>100803</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-15 05:35:07 -0700</bug_when>
    <thetext>Comment on attachment 100803
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:412
&gt;&gt; +
&gt; 
&gt; I think we had better move them to the upper place of this file.
&gt; These symbols are used before here, and I&apos;m afraid defining them here prevents constant value folding optimization.

Fixed.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:413
&gt;&gt; +bool WebSocketChannel::processFrame()
&gt; 
&gt; This function is too large.  Please consider splitting it.

The first half has been moved to a new function parseFrame().

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:417
&gt;&gt; +    char* end = m_buffer + m_bufferSize;
&gt; 
&gt; &apos;p&apos; and &apos;end&apos; should be &apos;const char*&apos;.
&gt; Use another non-const variable or const_cast&lt;&gt; when we unmask the payload.
&gt; 
&gt; &apos;end&apos; should be &apos;bufferEnd&apos; to avoid confusion with frameEnd&apos;.

Fixed.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:420
&gt;&gt; +        return false;
&gt; 
&gt; The comment should be a complete sentence as possible.  Probably &quot;The frame is incomplete.&quot;

Removed this comment because this &quot;return&quot; statement has been changed to &quot;return FrameIncomplete;&quot; (FrameIncomplete is a member of a new enum ParseFrameResult) and the code looked self-documenting to me.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:434
&gt;&gt; +        int extendedPayloadLengthSize = payloadLength64 == 126 ? 2 : 8;
&gt; 
&gt; 126 is a magic number.
&gt; Please introduce a meaningful name.

Fixed. I gave names to 125, 126 and 127.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:448
&gt;&gt; +#endif
&gt; 
&gt; It&apos;s not OS-dependent but compiler-dependent.
&gt; 
&gt; You assume uint64_t is available on any platforms.  So can you use UINT64_C(0x7FFFFFFFFFFFFFFF) ?

I didn&apos;t know UINT64_C, and it seems to work fine. Fixed.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:449
&gt;&gt; +    size_t maskingKeyLength = masked ? 4 : 0;
&gt; 
&gt; 4 is a magic number.

Created a new constant.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:464
&gt;&gt; +    char* frameEnd = p + maskingKeyLength + payloadLength;
&gt; 
&gt; They should be const char*.

Fixed.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:677
&gt;&gt; +        frame.append(0x80 | dataLength); // 0x80 is for &quot;MASK&quot; bit; a client must mask frames so it is always on.
&gt; 
&gt; So we should have FinBit = 0x80 and MaskBit = 0x80, or something like them.

Fixed.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:703
&gt;&gt; +        frame[payloadStart + i] ^= frame[maskingKeyStart + i % 4];
&gt; 
&gt; 4 is a magic number.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437676</commentid>
    <comment_count>7</comment_count>
      <attachid>100959</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-15 05:35:20 -0700</bug_when>
    <thetext>Comment on attachment 100959
Patch v2

Attachment 100959 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9095202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437712</commentid>
    <comment_count>8</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-15 06:55:39 -0700</bug_when>
    <thetext>Oh no, Qt doesn&apos;t have UINT64_C...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437719</commentid>
    <comment_count>9</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-15 07:03:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Oh no, Qt doesn&apos;t have UINT64_C...

I&apos;m not sure about how to resolve this. Maybe I should use &quot;#if PLATFORM(QT)&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438097</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-15 18:24:27 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Oh no, Qt doesn&apos;t have UINT64_C...
&gt; 
&gt; I&apos;m not sure about how to resolve this. Maybe I should use &quot;#if PLATFORM(QT)&quot;?

How about including stdint.h explicitly?
BTW, I wonder whether UINT64_C is available on Chromium-win (VC++ 2008).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438969</commentid>
    <comment_count>11</comment_count>
      <attachid>101269</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-18 22:46:59 -0700</bug_when>
    <thetext>Created attachment 101269
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438971</commentid>
    <comment_count>12</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-18 22:51:53 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=101269) [details]
&gt; Patch v3

Added #include &lt;stdint.h&gt;.

I posted try jobs to Chromium tryserver to see if this patch works (they are not finished yet).

http://build.chromium.org/p/tryserver.chromium/builders/linux_layout/builds/953
http://build.chromium.org/p/tryserver.chromium/builders/mac_layout/builds/764
http://build.chromium.org/p/tryserver.chromium/builders/win_layout/builds/1125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438974</commentid>
    <comment_count>13</comment_count>
      <attachid>101269</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-18 22:56:10 -0700</bug_when>
    <thetext>Comment on attachment 101269
Patch v3

Attachment 101269 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9149039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438979</commentid>
    <comment_count>14</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-18 23:21:08 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 101269 [details])
&gt; Attachment 101269 [details] did not pass qt-ews (qt):
&gt; Output: http://queues.webkit.org/results/9149039

Umm, Qt still doesn&apos;t compile...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438999</commentid>
    <comment_count>15</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-19 00:00:32 -0700</bug_when>
    <thetext>As discussed off-line, we&apos;ve decided to go with the first version with a slight modification (&quot;ui64&quot; for #if COMPILER(MSVC), &quot;ull&quot; otherwise).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439001</commentid>
    <comment_count>16</comment_count>
      <attachid>101281</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-19 00:06:36 -0700</bug_when>
    <thetext>Created attachment 101281
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439006</commentid>
    <comment_count>17</comment_count>
      <attachid>101281</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-19 00:21:00 -0700</bug_when>
    <thetext>Comment on attachment 101281
Patch v4

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

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:466
&gt; +#if COMPILER(MSVC)
&gt; +    static const uint64_t maxPayloadLength = 0x7FFFFFFFFFFFFFFFui64;
&gt; +#else
&gt; +    static const uint64_t maxPayloadLength = 0x7FFFFFFFFFFFFFFFull;
&gt; +#endif

nit: It&apos;s nice to have a comment that we wanted to use UINT64_C.

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:468
&gt; +    if (payloadLength64 &gt; maxPayloadLength || payloadLength64 + maskingKeyLength &gt; std::numeric_limits&lt;size_t&gt;::max()) {

nit: We usually declare &quot;using namespace std;&quot; at the beginning of the file and omit std::.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439007</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-19 00:21:33 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; nit: It&apos;s nice to have a comment that we wanted to use UINT64_C.

I meant a FIXME comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439022</commentid>
    <comment_count>19</comment_count>
      <attachid>101284</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-19 00:56:52 -0700</bug_when>
    <thetext>Created attachment 101284
Patch to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439024</commentid>
    <comment_count>20</comment_count>
      <attachid>101281</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-19 00:59:22 -0700</bug_when>
    <thetext>Comment on attachment 101281
Patch v4

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

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:466
&gt;&gt; +#endif
&gt; 
&gt; nit: It&apos;s nice to have a comment that we wanted to use UINT64_C.

Added.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:468
&gt;&gt; +    if (payloadLength64 &gt; maxPayloadLength || payloadLength64 + maskingKeyLength &gt; std::numeric_limits&lt;size_t&gt;::max()) {
&gt; 
&gt; nit: We usually declare &quot;using namespace std;&quot; at the beginning of the file and omit std::.

Fixed. Removed a couple of occurrences of &quot;std::&quot; in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439046</commentid>
    <comment_count>21</comment_count>
      <attachid>101284</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-19 01:57:45 -0700</bug_when>
    <thetext>Comment on attachment 101284
Patch to land

Clearing flags on attachment: 101284

Committed r91243: &lt;http://trac.webkit.org/changeset/91243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439047</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-19 01:57:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100803</attachid>
            <date>2011-07-14 07:03:59 -0700</date>
            <delta_ts>2011-07-15 05:35:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64522-20110714230357.patch</filename>
            <type>text/plain</type>
            <size>70491</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA5OTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNGFjODU0N2Q1YWVmODg4ZjM2Yjg5
ZWE3MWRiMjQ4ZmM0OGRjMjQ0Li5jYTZlNTliNGM2MWI4MDFiMjI3OTdkMWE2OTZlOTU5ZjJkMzlh
OGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDctMTQgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBJbXBsZW1lbnQgaHliaSBm
cmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBleGlzdGluZyB0ZXN0cyBzbyB0aGV5IG1hdGNoIHRoZSBuZXcgZnJhbWUgZm9ybWF0LCBhbmQg
YWRkIHRlc3RzIGZvciB0aGUgbmV3IGZyYW1lIHR5cGVzCisgICAgICAgIGFuZCBlcnJvciBjb25k
aXRpb25zIHJlbGF0ZWQgdG8gdGhlIG5ldyBmcmFtZSBmb3JtYXQuCisKKyAgICAgICAgVW5za2lw
IGh5YmkgdGVzdHMgb24gbWFjLCB3aW4gYW5kIGNocm9taXVtLiBPdGhlciBwb3J0cyAod2syLCBx
dCBhbmQgZ3RrKSBzdGlsbCBza2lwIHRoZXNlIHRlc3RzCisgICAgICAgIGJlY2F1c2UgdGhleSBk
byBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiCisgICAgICAgIHByZWZlcmVuY2Uga2V5IHZpYSBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2VzKCkgeWV0LgorCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0Zjgu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9i
cm9rZW4tdXRmOF93c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZS5odG1sOgorICAgICAgICBUaGUg
Zm9ybWF0IG9mIGEgY2xvc2UgZnJhbWUgaGFzIGJlZW4gY2hhbmdlZC4gQ3VycmVudGx5LCB3ZSBk
byBub3QgaW5jbHVkZSBhbnkgcGF5bG9hZAorICAgICAgICBpbiBhIGNsb3NlIGZyYW1lLCB0aHVz
IGl0IG11c3Qgc3RhcnQgd2l0aCAiXHg4OFx4ODAiIChzZWUgc2VjdGlvbiA0LjEgb2YgaHliaS0x
MAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMpLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlX3dzaC5weToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1m
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZy
YW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVk
LWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVu
dHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1j
b250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNr
ZWQtZnJhbWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvbWFza2VkLWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Bvbmdfd3NoLnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJp
dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weTogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1vcGNvZGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlc193c2gucHk6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5OgorICAg
ICAgICBTZW5kIHR3byB0ZXh0IGZyYW1lcyBhdCBvbmNlLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5
bG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Rvby1sb25nLXBheWxvYWRfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgIERlcml2ZSB0ZXN0IGV4cGVj
dGF0aW9ucyBvZiBoaXhpZTc2IHRlc3RzLCBiZWNhdXNlIHRoZXNlIHRlc3RzIGFyZSBsaWtlbHkg
dG8gYmVoYXZlCisgICAgICAgIHRoZSBzYW1lIHdheSBhcyBoaXhpZTc2IHRlc3RzLiBXaWxsIGJl
IGNoZWNrZWQgbGF0ZXIgd2hldGhlciB0aGV5IHJlYWxseSBkby4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0w
Ny0xNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtR
dF1zdmcvYW5pbWF0aW9ucy9zdmd0cmFuc2Zvcm0tYW5pbWF0aW9uLTEuaHRtbCBhc3NlcnRzIGlu
dGVybWl0dGVudGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjgtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM4Yjk2ZGRkMGFiOTk4MDlmZWRhNDIzNmRjNjAxNWFlNWI1YTQ5NTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Jy
b2tlbi11dGY4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMDogQ291bGQgbm90IGRlY29kZSBhIHRleHQgZnJhbWUgYXMgVVRGLTguCitUZXN0IHdo
ZXRoZXIgV2ViU29ja2V0IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3aGVuIGl0IHJlY2VpdmVzIGEg
dGV4dCBmcmFtZSBjb250YWluaW5nIGJyb2tlbiBVVEYtOCBkYXRhLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxl
ZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNjQ0YTZhN2VlMDVkZWM3M2YyNzdjYTk3OTM5OGExYjVlYWM5ZjVkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9icm9rZW4tdXRmOC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgYWJv
cnRzIHRoZSBjb25uZWN0aW9uIHdoZW4gaXQgcmVjZWl2ZXMgYSB0ZXh0IGZyYW1lIGNvbnRhaW5p
bmcgYnJva2VuIFVURi04IGRhdGEuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjgiKTsKK3ZhciBjbG9zZUV2ZW50OworCit3
cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQu
Iik7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIgbWVz
c2FnZSA9IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxl
ZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9
IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsK
KyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53
YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9i
cm9rZW4tdXRmOF93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Jyb2tlbi11dGY4X3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTBiNTc0ZmFmYWUzNDZhM2I5
MWUxYzg2ODY4YjhlMjgyNTgyOGNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOF93c2gucHkKQEAgLTAsMCAr
MSwxMSBAQAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YShyZXF1ZXN0KToKKyAgICBwYXlsb2FkID0gJ1RoaXMgdGV4dCBzaG91bGQgYmUgaWdub3JlZC4g
XHhmZicgIyAnXHhmZicgd2lsbCBuZXZlciBhcHBlYXIgaW4gVVRGLTggZW5jb2RlZCBkYXRhLgor
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX2hlYWRlcihjb21tb24u
T1BDT0RFX1RFWFQsIGxlbihwYXlsb2FkKSwgMSwgMCwgMCwgMCwgMCkgKyBwYXlsb2FkKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGll
bnQtY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jbGllbnQtY2xvc2UtZXhwZWN0ZWQudHh0CmluZGV4IDI2NjhmZDk0MjMyNDkx
ZjdhZmU4ZDU3ZDExMTUyMDNlZjRlNTkwOTMuLmIxMjAwOTRmMTljZDgxM2RjZjY4OGZlN2I2ODdh
YTI2M2FkYmQ5NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZS1leHBlY3RlZC50eHQK
QEAgLTMsOSArMyw5IEBAIFdlYlNvY2tldDogVGVzdCBjbGllbnQtaW5pdGlhdGVkIGNsb3NlLgog
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiBDb25uZWN0ZWQKLVJlY2VpdmVkOiBjbG9zZV9m
cmFtZT0nXHhmZlx4MDAnCitSZWNlaXZlZDogY2xvc2VfZnJhbWVbOjJdPSdceDg4XHg4MCcKIENs
b3NlZAotUEFTUyByZWNlaXZlZE1lc3NhZ2UgaXMgImNsb3NlX2ZyYW1lPSdcXHhmZlxceDAwJyIK
K1BBU1MgcmVjZWl2ZWRNZXNzYWdlIGlzICJjbG9zZV9mcmFtZVs6Ml09J1xceDg4XFx4ODAnIgog
UEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jbGllbnQtY2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLmh0bWwKaW5kZXggYmRhNTE0MzMyOGYyM2E2
ZjA3YzVhMjA2YzYwMTRjOTMzMDcwOTY3MS4uYWMyOWU3ZmM2YjU0ZGJjNTJmOWVkMTU4ZDk0M2Nh
ODk1ZjcxZjczNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jbGllbnQtY2xvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZS5odG1sCkBAIC0zNCw3ICszNCw3IEBA
IHdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBkZWJ1ZygiQ2xvc2VkIik7CiAg
ICAgY2xvc2VFdmVudCA9IGV2ZW50OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVjZWl2
ZWRNZXNzYWdlIiwgImNsb3NlX2ZyYW1lPSdcXHhmZlxceDAwJyIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygicmVjZWl2ZWRNZXNzYWdlIiwgImNsb3NlX2ZyYW1lWzoyXT0nXFx4ODhcXHg4
MCciKTsKICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKICAgICBmaW5p
c2hKU1Rlc3QoKTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZV93c2gucHkKaW5kZXggN2VkMjhi
ZmZmZjAyNDlmNGEwZDdiYmNjM2ZiODMyYWI4NzljMDgyMC4uODY4ZTA2Y2I3MWI2OTk5OWQ5MGZj
MGIyYThiODhjYWEwNTc4ZjBiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xvc2Vfd3NoLnB5CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlX3dzaC5weQpAQCAt
NywxNiArNywxNyBAQCBkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
CiAKIGRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CiAgICAgIyBXYWl0IGZv
ciBhIGNsb3NlIGZyYW1lIHNlbnQgZnJvbSB0aGUgY2xpZW50LgotICAgIGNsb3NlX2ZyYW1lID0g
cmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9ieXRlcygyKQorICAgIGNsb3NlX2ZyYW1lID0gcmVx
dWVzdC53c19zdHJlYW0ucmVjZWl2ZV9ieXRlcyg2KQogCi0gICAgIyBUZWxsIHRoZSBjbGllbnQg
d2hhdCB3ZSBoYXZlIHJlY2VpdmVkLgotICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdjbG9zZV9mcmFtZT0lcicgJSBjbG9zZV9mcmFtZSkKKyAgICAjIFNlbmQgb25seSBmaXJzdCB0
d28gYnl0ZXMgb2YgdGhlIHJlY2VpdmVkIGZyYW1lLiBUaGUgcmVtYWluaW5nIGZvdXIgYnl0ZXMg
YXJlCisgICAgIyAibWFza2luZyBrZXkiLCB3aGljaCBjaGFuZ2VzIGV2ZXJ5IHRpbWUgdGhlIHRl
c3QgcnVucy4KKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnY2xvc2VfZnJhbWVb
OjJdPSVyJyAlIGNsb3NlX2ZyYW1lWzoyXSkKIAogICAgICMgSWYgdGhlIGZvbGxvd2luZyBhc3Nl
cnRpb24gZmFpbHMsIEFzc2VydGlvbkVycm9yIHdpbGwgYmUgcmFpc2VkLAogICAgICMgd2hpY2gg
d2lsbCBwcmV2ZW50IHB5d2Vic29ja2V0IGZyb20gc2VuZGluZyBhIGNsb3NlIGZyYW1lLgogICAg
ICMgSW4gdGhpcyBjYXNlLCB0aGUgY2xpZW50IHdpbGwgZmFpbCB0byBmaW5pc2ggY2xvc2luZyBo
YW5kc2hha2UsIHRodXMKICAgICAjIGNsb3NlRXZlbnQud2FzQ2xlYW4gd2lsbCBiZWNvbWUgZmFs
c2UuCi0gICAgYXNzZXJ0IGNsb3NlX2ZyYW1lID09ICdceGZmXHgwMCcKKyAgICBhc3NlcnQgY2xv
c2VfZnJhbWVbOjJdID09ICdceDg4XHg4MCcKIAogICAgICMgUHJldGVuZCB3ZSBoYXZlIHJlY2Vp
dmVkIGEgY2xvc2UgZnJhbWUgZnJvbSB0aGUgY2xpZW50LgogICAgICMgQWZ0ZXIgdGhpcyBmdW5j
dGlvbiBleGl0cywgcHl3ZWJzb2NrZXQgd2lsbCBzZW5kIGEgY2xvc2UgZnJhbWUgYXV0b21hdGlj
YWxseS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1l
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGM2Yjk5NTkwMGQ2NjZiYmMxY2VjZTlhNDc4NTQ1
YjBlYzJiYTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBSZWNlaXZlZCBmcmFnbWVu
dGVkIGNvbnRyb2wgZnJhbWU6IG9wY29kZSA9IDkKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVq
ZWN0cyBhIGZyYWdtZW50ZWQgY29udHJvbCBmcmFtZSBhbmQgYWJvcnRzIHRoZSBjb25uZWN0aW9u
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitQ
QVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVk
LWNvbnRyb2wtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDZkOTEzNDM5MjYzMGQ4M2JhMDA1OGQ5
NzYxZDEzMzEyZjE4NTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUuaHRtbApAQCAt
MCwwICsxLDQzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgYSBmcmFnbWVudGVkIGNvbnRy
b2wgZnJhbWUgYW5kIGFib3J0cyB0aGUgY29ubmVjdGlvbi4iKTsKKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgw
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZSI7Cit2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVu
Y3Rpb24oKQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5k
YXRhOworICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0g
XCIiICsgbWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVu
dCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VF
dmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWVfd3NoLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEwMTZlNzdkMjZjMTQzMmJkOWZhOWI3MmQ5OGFlM2ZkN2QyZmY5MTYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZV93c2gucHkKQEAgLTAsMCArMSwxMiBAQAorZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IG1zZ3V0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KKworCitkZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2Rl
ZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgIyBGcmFnbWVudGVkIGNv
bnRyb2wgZnJhbWUgaXMgcHJvaGliaXRlZC4gVGhlIGNsaWVudCBtdXN0IGFib3J0IHRoZSBjb25u
ZWN0aW9uLgorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRf
ZnJhbWUoJ1RoaXMgbWVzc2FnZSBzaG91bGQgYmUgaWdub3JlZC4nLCBvcGNvZGU9Y29tbW9uLk9Q
Q09ERV9QSU5HLCBmaW49MCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNjdkOWEzYzJlZjcyMzQyNGFhNWE2ZjQ4NTFjOWU1
ODA1MmVjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE3IEBACitSZWNlaXZlIGZyYWdtZW50ZWQgV2ViU29ja2V0IGZyYW1lcy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25tZXNzYWdlKCkgd2Fz
IGNhbGxlZC4gKG1lc3NhZ2UgPSAiRmlyc3QgbWVzc2FnZSIpCitvbm1lc3NhZ2UoKSB3YXMgY2Fs
bGVkLiAobWVzc2FnZSA9ICJTZWNvbmQgbWVzc2FnZSIpCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVk
LiAobWVzc2FnZSA9ICJUaGlyZCBtZXNzYWdlIikKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBp
cyB0cnVlCitQQVNTIGFjdHVhbE1lc3NhZ2VzLmxlbmd0aCA9PT0gZXhwZWN0ZWRNZXNzYWdlcy5s
ZW5ndGggaXMgdHJ1ZQorUEFTUyBhY3R1YWxNZXNzYWdlc1swXSBpcyAiRmlyc3QgbWVzc2FnZSIK
K1BBU1MgYWN0dWFsTWVzc2FnZXNbMV0gaXMgIlNlY29uZCBtZXNzYWdlIgorUEFTUyBhY3R1YWxN
ZXNzYWdlc1syXSBpcyAiVGhpcmQgbWVzc2FnZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjA4MDc4Nzc2ZmU4ZDg5ODRjOTcxMWRiNWE0ZjkzYTM1MGZmMDM3MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZnJhZ21lbnRlZC1mcmFtZXMuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUg
SFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJSZWNlaXZlIGZyYWdtZW50
ZWQgV2ViU29ja2V0IGZyYW1lcy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKKwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsK
K3ZhciBjbG9zZUV2ZW50OwordmFyIGV4cGVjdGVkTWVzc2FnZXMgPSBbIkZpcnN0IG1lc3NhZ2Ui
LCAiU2Vjb25kIG1lc3NhZ2UiLCAiVGhpcmQgbWVzc2FnZSJdOwordmFyIGFjdHVhbE1lc3NhZ2Vz
ID0gW107CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkg
d2FzIGNhbGxlZC4iKTsKKyAgICB3cy5jbG9zZSgpOworfTsKKword3Mub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGRlYnVn
KCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIp
Iik7CisgICAgYWN0dWFsTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKK307CisKK3dzLm9uY2xvc2Ug
PSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxk
QmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgc2hvdWxkQmVUcnVlKCJhY3R1YWxN
ZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIik7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBleHBlY3RlZE1lc3NhZ2VzLmxlbmd0aDsgKytpKQorICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImFjdHVhbE1lc3NhZ2VzWyIgKyBpICsgIl0iLCBleHBlY3RlZE1l
c3NhZ2VzW2ldKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZnJhZ21lbnRlZC1mcmFtZXNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1lc193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZmM2U1
OGVlNDUxM2Q1ZWE5Zjc0N2MyM2I1YTA4MGNhMTkzYmE2MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFt
ZXNfd3NoLnB5CkBAIC0wLDAgKzEsMzQgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBt
c2d1dGlsCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgor
ICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAg
ICMgc2VuZF9tZXNzYWdlJ3MgdGhpcmQgYXJndW1lbnQgY29ycmVzcG9uZHMgdG8gImZpbiIgYml0
OworICAgICMgaXQgaXMgc2V0IHRvIFRydWUgaWYgdGhpcyBmcmFtZSBpcyB0aGUgZmluYWwgZnJh
Z21lbnQgb2YgYSBtZXNzYWdlLgorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdG
aXJzdCAnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnbWVzc2Fn
ZScsIFRydWUpCisKKyAgICAjIEVtcHR5IGZyYWdtZW50IGlzIGFsbG93ZWQuCisgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdTZWNvbmQgJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJycsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdt
ZXNzYWdlJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIFRy
dWUpCisKKyAgICAjIEZyYWdtZW50IGFnZ3Jlc3NpdmVseS4KKyAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnVCcsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsICdoJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2knLCBG
YWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAncicsIEZhbHNlKQorICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdkJywgRmFsc2UpCisgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnbScsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdlJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ3MnLCBGYWxz
ZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAncycsIEZhbHNlKQorICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdhJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ2cnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnZScsIFRydWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZy
YWdtZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJjMjgxM2UzYjk1NGYyNzVjYzg4NTkx
YTg0YWFlYjFkMGJiYTliOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogUmVjZWl2ZWQgbmV3
IGRhdGEgZnJhbWUgYnV0IHByZXZpb3VzIGNvbnRpbnVvdXMgZnJhbWUgaXMgdW5maW5pc2hlZC4K
K1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBpbnRlcmxlYXZlZCBmcmFnbWVudGVkIGZy
YW1lcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVk
LgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW50ZXJsZWF2
ZWQtZnJhZ21lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEzMjA4YjIxOWE5NjAyZmIyMTgxYmI4ZGU0
N2E1YTVmOWE2ZGE1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLmh0bWwKQEAgLTAsMCAr
MSw0MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGludGVybGVhdmVkIGZyYWdtZW50ZWQg
ZnJhbWVzLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2
YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW50ZXJs
ZWF2ZWQtZnJhZ21lbnRzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9z
ZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3Blbigp
IHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sK
KyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdl
KCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworfTsKKwor
d3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGNsb3NlRXZlbnQgPSBldmVudDsK
KyAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50c193c2gu
cHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVh
dmVkLWZyYWdtZW50c193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVkYWVjYWYyNTE1MWUwM2QzM2RhYjE1
YzljZjU1NDYwZWY2NmRjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzX3dzaC5weQpAQCAt
MCwwICsxLDEyIEBACitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgICMgQSBuZXcgZnJhbWUgaXMgYXJyaXZlZCBiZWZvcmUgdGhl
IHByZXZpb3VzIGZyYWdtZW50ZWQgZnJhbWUgaGFzIGZpbmlzaGVkLgorICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ1RoaXMgbWVzc2FnZSAnLCBv
cGNvZGU9Y29tbW9uLk9QQ09ERV9URVhULCBmaW49MCkpCisgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnc2hvdWxkIGJlIGlnbm9yZWQuJywgb3Bj
b2RlPWNvbW1vbi5PUENPREVfVEVYVCwgZmluPTEpKSAjIE5vdCBPUENPREVfQ09OVElOVUFUSU9O
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9sb25nLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg3MDM5NWRjZjYxNmEzYzAwZTNmMjY4Y2U2NGI3YmU5NmQ5ODk3N2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2xvbmctY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFJlY2VpdmVkIGNvbnRyb2wgZnJhbWUgaGF2aW5nIHRvbyBsb25n
IHBheWxvYWQ6IDEyNiBieXRlcworVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGNvbnRy
b2wgZnJhbWVzIGxvbmdlciB0aGFuIDEyNSBieXRlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9sb25nLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNlMTg0
OGMyMzI2OTEwODMxNTQwNmI2MTExYzQxYTQ2YzAzZGIxMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZy
YW1lLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGNvbnRy
b2wgZnJhbWVzIGxvbmdlciB0aGFuIDEyNSBieXRlcy4iKTsKKword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQ
cm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZSI7Cit2YXIgd3MgPSBuZXcgV2Vi
U29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBtZXNzYWdlOworCit3cy5vbm9wZW4g
PSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9Owor
Cit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50
OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250
cm9sLWZyYW1lX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWY0OGEzNWI5ZWJkOWE4MmU2OTA4ZDYyNWY0
ZDE3YTFkMmNkMGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWVfd3NoLnB5CkBAIC0wLDAgKzEs
MTIgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBzdHJlYW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEo
cmVxdWVzdCk6CisgICAgIyBBbGwgY29udHJvbCBmcmFtZXMgbXVzdCBoYXZlIGEgcGF5bG9hZCBs
ZW5ndGggb2YgMTI1IGJ5dGVzIG9yIGxlc3MuCisgICAgbWVzc2FnZSA9ICdYJyAqIDEyNgorICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUobWVzc2Fn
ZSwgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORywgZmluPTEpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFz
a2VkLWZyYW1lcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY3YjAxN2VlMjA3OWFhZjUxMWIw
ZjFiZWUwYjRiZThkYjdiNjExZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxOCBAQAorUmVjZWl2ZSBtYXNrZWQgV2ViU29ja2V0IGZyYW1lcy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25tZXNzYWdlKCkg
d2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiRmlyc3QgbWVzc2FnZSIpCitvbm1lc3NhZ2UoKSB3YXMg
Y2FsbGVkLiAobWVzc2FnZSA9ICJGcmFnbWVudGVkIG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2Fz
IGNhbGxlZC4gKG1lc3NhZ2UgPSAiIikKK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdl
ID0gIkVORCIpCitQQVNTIGFjdHVhbE1lc3NhZ2VzLmxlbmd0aCA9PT0gZXhwZWN0ZWRNZXNzYWdl
cy5sZW5ndGggaXMgdHJ1ZQorUEFTUyBhY3R1YWxNZXNzYWdlc1swXSBpcyAiRmlyc3QgbWVzc2Fn
ZSIKK1BBU1MgYWN0dWFsTWVzc2FnZXNbMV0gaXMgIkZyYWdtZW50ZWQgbWVzc2FnZSIKK1BBU1Mg
YWN0dWFsTWVzc2FnZXNbMl0gaXMgIiIKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNr
ZWQtZnJhbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL21hc2tlZC1mcmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjBjOTI0MDY0ZjkxMzY3MjZhMTEy
NTAwYjNkNDc5NjY1OTk1Y2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLmh0bWwKQEAgLTAsMCArMSw1
NCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
UmVjZWl2ZSBtYXNrZWQgV2ViU29ja2V0IGZyYW1lcy4iKTsKKword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQ
cm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMiOwordmFyIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgZXhwZWN0ZWRNZXNzYWdlcyA9IFsiRmlyc3Qg
bWVzc2FnZSIsICJGcmFnbWVudGVkIG1lc3NhZ2UiLCAiIl07Cit2YXIgYWN0dWFsTWVzc2FnZXMg
PSBbXTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3
YXMgY2FsbGVkLiIpOworICAgIHdzLmNsb3NlKCk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgZGVidWco
Im9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJcIiki
KTsKKyAgICBpZiAobWVzc2FnZSA9PT0gIkVORCIpIHsKKyAgICAgICAgd3MuY2xvc2UoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhY3R1YWxNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOwor
fTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGNsb3NlRXZlbnQgPSBl
dmVudDsKKyAgICBzaG91bGRCZVRydWUoImFjdHVhbE1lc3NhZ2VzLmxlbmd0aCA9PT0gZXhwZWN0
ZWRNZXNzYWdlcy5sZW5ndGgiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkTWVz
c2FnZXMubGVuZ3RoOyArK2kpCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiYWN0dWFs
TWVzc2FnZXNbIiArIGkgKyAiXSIsIGV4cGVjdGVkTWVzc2FnZXNbaV0pOworICAgIHNob3VsZEJl
VHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lc193c2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjA5OTY3YWRjNTM3OGJhODA0OTAxNTVkYzBkNzM4MTMzZmRiYjFhMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2Vk
LWZyYW1lc193c2gucHkKQEAgLTAsMCArMSwzNCBAQAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEocmVxdWVzdCk6CisgICAgIyBweXdlYnNvY2tldCBkb2VzIG5vdCBtYXNrIG1lc3NhZ2Ug
YnkgZGVmYXVsdC4gV2UgbmVlZCB0byBidWlsZCBhIGZyYW1lIG1hbnVhbGx5IHRvIG1hc2sgaXQu
CisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgn
Rmlyc3QgbWVzc2FnZScsIG1hc2s9VHJ1ZSkpCisKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdGcmFnbWVudGVkICcsIG9wY29kZT1jb21tb24u
T1BDT0RFX1RFWFQsIGZpbj0wLCBtYXNrPVRydWUpKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ21lc3NhZ2UnLCBvcGNvZGU9Y29tbW9uLk9Q
Q09ERV9DT05USU5VQVRJT04sIGZpbj0xLCBtYXNrPVRydWUpKQorCisgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnJywgbWFzaz1UcnVlKSkKKwor
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdFTkQnKQorCisgICAgIyBXYWl0IGZv
ciB0aGUgY2xpZW50IHRvIHN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgorICAgICMgVG8gcmVjZWl2
ZSBhIGNsb3NlIGZyYW1lLCB3ZSBtdXN0IHVzZSBhbiBpbnRlcm5hbCBtZXRob2Qgb2YgcmVxdWVz
dC53c19zdHJlYW0uCisgICAgb3Bjb2RlLCBwYXlsb2FkLCBmaW5hbCwgcmVzZXJ2ZWQxLCByZXNl
cnZlZDIsIHJlc2VydmVkMyA9IHJlcXVlc3Qud3Nfc3RyZWFtLl9yZWNlaXZlX2ZyYW1lKCkKKyAg
ICBhc3NlcnQgb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQ0xPU0UKKyAgICBhc3NlcnQgZmluYWwK
KyAgICBhc3NlcnQgbm90IHJlc2VydmVkMQorICAgIGFzc2VydCBub3QgcmVzZXJ2ZWQyCisgICAg
YXNzZXJ0IG5vdCByZXNlcnZlZDMKKworICAgICMgU2VuZCBhIG1hc2tlZCBjbG9zZSBmcmFtZS4g
Q2xpZW50cyBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcyBmcmFtZSBhbmQKKyAgICAjIHRo
ZSBXZWJTb2NrZXQgb2JqZWN0IHNob3VsZCBiZSBjbG9zZWQgY2xlYW5seS4KKyAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9jbG9zZV9mcmFtZSgnJywgbWFzaz1UcnVl
KSkKKworICAgIHJhaXNlIEV4Y2VwdGlvbignQWJvcnQgdGhlIGNvbm5lY3Rpb24nKSAjIFByZXZl
bnRzIHB5d2Vic29ja2V0IGZyb20gc3RhcnRpbmcgaXRzIG93biBjbG9zaW5nIGhhbmRzaGFrZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
cG9uZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3BvbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NGZkMWViYTVjNTE2NmMyOTA1
YTQ2ZGFjMDM3OGQ2YzgzZDdiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTIgQEAKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgY29ycmVjdGx5IHJlc3BvbmRzIHRvIGEgcGlu
ZyBtZXNzYWdlIHNlbnQgZnJvbSB0aGUgc2VydmVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVz
c2FnZSA9ICJQQVNTIikKK1BBU1MgbWVzc2FnZSBpcyAiUEFTUyIKK1BBU1MgY2xvc2VFdmVudC53
YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9wb25nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3BvbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWFkMDQwZjgxOGE5YThiY2NmMWE3ZGY2
MTUxZDAwNGE2Y2Y1OGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVy
IFdlYlNvY2tldCBjb3JyZWN0bHkgcmVzcG9uZHMgdG8gYSBwaW5nIG1lc3NhZ2Ugc2VudCBmcm9t
IHRoZSBzZXJ2ZXIuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9w
b25nIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50OwordmFy
IG1lc3NhZ2U7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVu
KCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQor
eworICAgIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGRlYnVnKCJvbm1lc3NhZ2UoKSB3YXMg
Y2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJtZXNzYWdlIiwgIlBBU1MiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5j
dGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVl
KCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3Bvbmdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9wb25nX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTJhYWM1ZjgzZjYwN2UyMzg5
NjI4MGExNTA3YWNiNzNiOTAxNTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nX3dzaC5weQpAQCAtMCwwICsxLDE5IEBA
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShy
ZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1
ZXN0KToKKyAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSGVsbG8sIHdvcmxkIScpCisK
KyAgICAjIFdlIG5lZWQgdG8gdXNlIGFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGRldGVjdCBhIHBv
bmcgZnJhbWUgZnJvbSB0aGUgY2xpZW50LgorICAgIG9wY29kZSwgcGF5bG9hZCwgZmluYWwsIHJl
c2VydmVkMSwgcmVzZXJ2ZWQyLCByZXNlcnZlZDMgPSByZXF1ZXN0LndzX3N0cmVhbS5fcmVjZWl2
ZV9mcmFtZSgpCisgICAgaWYgb3Bjb2RlID09IGNvbW1vbi5PUENPREVfUE9ORyBhbmQgcGF5bG9h
ZCA9PSAnSGVsbG8sIHdvcmxkIScgYW5kIGZpbmFsIGFuZCBub3QgcmVzZXJ2ZWQxIGFuZCBub3Qg
cmVzZXJ2ZWQyIGFuZCBub3QgcmVzZXJ2ZWQzOgorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnUEFTUycpCisgICAgZWxzZToKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZBSUw6IFJlY2VpdmVk
IHVuZXhwZWN0ZWQgZnJhbWU6IG9wY29kZSA9ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0gJXIs
IHJlc2VydmVkMSA9ICVyLCByZXNlcnZlZDIgPSAlciwgcmVzZXJ2ZWQzID0gJXInICUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG9wY29kZSwgcGF5bG9hZCwgZmluYWwsIHJlc2VydmVk
MSwgcmVzZXJ2ZWQyLCByZXNlcnZlZDMpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMwNzI2YTRhZGQwYjI1M2QwMDA1ZGE2MjM2NWY5YzNl
MTY2MTI1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBA
QAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE9uZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJl
IG9uOiByZXNlcnZlZDEgPSAxLCByZXNlcnZlZDIgPSAwLCByZXNlcnZlZDMgPSAwCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2Vy
dmVkMSA9IDAsIHJlc2VydmVkMiA9IDEsIHJlc2VydmVkMyA9IDAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gMCwg
cmVzZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQzID0gMQorVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWpl
Y3RzIGZyYW1lcyB3aG9zZSByZXNlcnZlZCBiaXQgaXMgb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworQml0IDE6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitv
bmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQor
Qml0IDI6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorQml0IDM6IFRlc3Qg
c3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BB
U1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2I2NjIxZmEyMWMyODFhYTViMTU5M2Y1ZTVjMTZmZTA4MGZiYmJkNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
cmVzZXJ2ZWQtYml0cy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVq
ZWN0cyBmcmFtZXMgd2hvc2UgcmVzZXJ2ZWQgYml0IGlzIG9uLiIpOworCit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNv
Y2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKKworLy8gYml0TnVt
YmVyIG11c3QgYmUgMSwgMiwgb3IgMy4KK2Z1bmN0aW9uIGRvVGVzdChiaXROdW1iZXIpCit7Cisg
ICAgdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jl
c2VydmVkLWJpdHM/Yml0PSIgKyBiaXROdW1iZXI7CisgICAgdmFyIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOworCisgICAgZGVidWcoIkJpdCAiICsgYml0TnVtYmVyICsgIjogVGVzdCBzdGFydGVk
LiIpOworCisgICAgd3Mub25vcGVuID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVidWco
Im9ub3BlbigpIHdhcyBjYWxsZWQuIik7CisgICAgfTsKKworICAgIHdzLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOwor
ICAgICAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwi
IiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgfTsKKworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsK
KyAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgICAgICBzaG91bGRCZUZhbHNlKCJjbG9z
ZUV2ZW50Lndhc0NsZWFuIik7CisgICAgICAgIGlmIChiaXROdW1iZXIgPT09IDMpCisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9UZXN0KGJp
dE51bWJlciArIDEpOworICAgIH07Cit9CisKK2RvVGVzdCgxKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9yZXNlcnZlZC1iaXRzX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFkMGRmZGM1NTFi
MDY1NTE1NmE2YWUxMjA4NTU0NGRkM2E4ZmVhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkK
QEAgLTAsMCArMSwyNiBAQAoraW1wb3J0IHJlCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
Y29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisKKworZGVmIHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1hdGNoID0gcmUuc2VhcmNoKHIn
XD9iaXQ9KFxkKykkJywgcmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICBpZiBtYXRjaCBpcyBOb25l
OgorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogUXVlcnkgdmFs
dWUgaXMgaW5jb3JyZWN0IG9yIG1pc3NpbmcnKQorICAgICAgICByZXR1cm4KKworICAgIGJpdCA9
IGludChtYXRjaC5ncm91cCgxKSkKKyAgICBtZXNzYWdlID0gIlRoaXMgbWVzc2FnZSBzaG91bGQg
YmUgaWdub3JlZC4iCisgICAgaWYgYml0ID09IDE6CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmNy
ZWF0ZV9oZWFkZXIoY29tbW9uLk9QQ09ERV9URVhULCBsZW4obWVzc2FnZSksIDEsIDEsIDAsIDAs
IDApICsgbWVzc2FnZQorICAgIGVsaWYgYml0ID09IDI6CisgICAgICAgIGZyYW1lID0gc3RyZWFt
LmNyZWF0ZV9oZWFkZXIoY29tbW9uLk9QQ09ERV9URVhULCBsZW4obWVzc2FnZSksIDEsIDAsIDEs
IDAsIDApICsgbWVzc2FnZQorICAgIGVsaWYgYml0ID09IDM6CisgICAgICAgIGZyYW1lID0gc3Ry
ZWFtLmNyZWF0ZV9oZWFkZXIoY29tbW9uLk9QQ09ERV9URVhULCBsZW4obWVzc2FnZSksIDEsIDAs
IDAsIDEsIDApICsgbWVzc2FnZQorICAgIGVsc2U6CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmNy
ZWF0ZV90ZXh0X2ZyYW1lKCdGQUlMOiBJbnZhbGlkIGJpdCBudW1iZXI6ICVkJyAlIGJpdCkKKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoZnJhbWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29kZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNl
cnZlZC1vcGNvZGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTU5MGM2NDk4NzhiYzUxMGY3
N2M0ZDRhNmQ1N2Y4ZjVhN2NkNjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDU4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVk
IGZyYW1lIG9wY29kZTogMworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBm
cmFtZSBvcGNvZGU6IDQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJh
bWUgb3Bjb2RlOiA1CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1l
IG9wY29kZTogNgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBv
cGNvZGU6IDcKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bj
b2RlOiAxMQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNv
ZGU6IDEyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29k
ZTogMTMKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2Rl
OiAxNAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6
IDE1CitUZXN0cyB3aGV0aGVyIFdlYlNvY2tldCBpZ25vcmVzIGZyYW1lcyB3aXRoIHJlc2VydmVk
IG9wY29kZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitPcGNvZGUgMzogVGVzdCBz
dGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFT
UyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitPcGNvZGUgNDogVGVzdCBzdGFydGVkLgor
b25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitPcGNvZGUgNTogVGVzdCBzdGFydGVkLgorb25vcGVuKCkg
d2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitPcGNvZGUgNjogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxl
ZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZh
bHNlCitPcGNvZGUgNzogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xv
c2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitPcGNv
ZGUgMTE6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDEyOiBU
ZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQu
CitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK09wY29kZSAxMzogVGVzdCBzdGFy
dGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBj
bG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitPcGNvZGUgMTQ6IFRlc3Qgc3RhcnRlZC4KK29u
b3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVu
dC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDE1OiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3
YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3Jlc2VydmVkLW9wY29kZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTk1
YzY4MWE0NmQ2NzZkYWQyYTRlZTdmNGYwMDY3ZTQyMzZiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29k
ZXMuaHRtbApAQCAtMCwwICsxLDYxIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlRlc3RzIHdoZXRoZXIg
V2ViU29ja2V0IGlnbm9yZXMgZnJhbWVzIHdpdGggcmVzZXJ2ZWQgb3Bjb2RlLiIpOworCit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4
aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKKwor
ZnVuY3Rpb24gZG9UZXN0KG9wY29kZSkKK3sKKyAgICBpZiAob3Bjb2RlID49IDB4MTApIHsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG9w
Y29kZSA9PSAweDAgfHwgb3Bjb2RlID09IDB4MSB8fCBvcGNvZGUgPT0gMHgyIHx8IG9wY29kZSA9
PSAweDggfHwgb3Bjb2RlID09IDB4OSB8fCBvcGNvZGUgPT0gMHhBKSB7CisgICAgICAgIGRvVGVz
dChvcGNvZGUgKyAxKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlYnVnKCJPcGNv
ZGUgIiArIG9wY29kZSArICI6IFRlc3Qgc3RhcnRlZC4iKTsKKworICAgIHZhciB1cmwgPSAid3M6
Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzP29w
Y29kZT0iICsgb3Bjb2RlOworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKworICAg
IHdzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbm9wZW4oKSB3
YXMgY2FsbGVkLiIpOworICAgIH07CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGVz
dEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdl
ICsgIlwiKSIpOworICAgIH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNs
b3NlRXZlbnQgPSBldmVudDsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXND
bGVhbiIpOworICAgICAgICBkb1Rlc3Qob3Bjb2RlICsgMSk7CisgICAgfTsKK30KKworZG9UZXN0
KDApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29kZXNfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzX3dz
aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NjQ5NWM4OGE5ODAzOTcyZTFlZjUwZTcxZDczYzkyYWFiNzEwODIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzX3dzaC5weQpAQCAtMCwwICsxLDE5IEBACitpbXBvcnQg
cmUKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBzdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCisK
KworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MK
KworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1hdGNoID0g
cmUuc2VhcmNoKHInXD9vcGNvZGU9KFxkKykkJywgcmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICBp
ZiBtYXRjaCBpcyBOb25lOgorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAn
RkFJTDogUXVlcnkgdmFsdWUgaXMgaW5jb3JyZWN0IG9yIG1pc3NpbmcnKQorICAgICAgICByZXR1
cm4KKworICAgIG9wY29kZSA9IGludChtYXRjaC5ncm91cCgxKSkKKyAgICBwYXlsb2FkID0gJ1Ro
aXMgdGV4dCBzaG91bGQgYmUgaWdub3JlZC4gKG9wY29kZSA9ICVkKScgJSBvcGNvZGUKKyAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBsZW4o
cGF5bG9hZCksIDEsIDAsIDAsIDAsIDApICsgcGF5bG9hZCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kMl93c2gucHkKaW5kZXgg
ZTIyMTdmYTNkNTJjMGZlM2Q5OGQ2MmM0ZDE4MTQyNzA5ZGFjZjE3Mi4uNTNiNmQ4MTBhMDM3YmFj
YTUwYzc2ZmNlY2VmMDc5MTU1YzI0YWUwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kMl93c2gucHkKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kMl93c2gucHkKQEAgLTEsOCArMSwx
MCBAQAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorCisKIGRlZiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKICAgICBwYXNzICMgQWx3YXlzIGFjY2Vw
dC4KIAogCiBkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgogICAgICMgc2Vu
ZCAyIG1lc3NhZ2VzIGluIG9uZSBwYWNrZXQuCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRl
KCJceDAwIiArICJmaXJzdCBtZXNzYWdlIiArICJceGZmIiArCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJceDAwIiArICJzZWNvbmQgbWVzc2FnZSIgKyAiXHhmZiIpCisgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgiZmlyc3QgbWVzc2Fn
ZSIpICsgc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCJzZWNvbmQgbWVzc2FnZSIpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9u
Zy1wYXlsb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAx
YjZkYzk3MDdmMDMxZDNlZWU1MDM1NWUzYTFiNzk0NDc1MzRiZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5
bG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDA6IFdlYlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiA5MjIzMzcyMDM2ODU0Nzc1ODA4
IGJ5dGVzCitUZXN0cyB3aGV0aGVyIFdlYlNvY2tldCBjb3JyZWN0bHkgYWJvcnRzIHRoZSBjb25u
ZWN0aW9uIHdoZW4gaXQgcmVjZWl2ZXMgYSBmcmFtZSB3aXRoIHRvbyBsb25nIHBheWxvYWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xv
c2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1w
YXlsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3Rvby1sb25nLXBheWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDRiZTNhN2UyYjg2ZjBhOWUxZjY1
MWRiYTdkYjFjYmIwMzg0OGFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkLmh0bWwKQEAgLTAsMCAr
MSw0MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB3aGV0aGVyIFdlYlNvY2tldCBjb3JyZWN0
bHkgYWJvcnRzIHRoZSBjb25uZWN0aW9uIHdoZW4gaXQgcmVjZWl2ZXMgYSBmcmFtZSB3aXRoIHRv
byBsb25nIHBheWxvYWQuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZCIpOwordmFyIGNsb3NlRXZlbnQ7CisKK3dz
Lm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4i
KTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciBtZXNz
YWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVk
LiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7Cit9OworCit3cy5vbmNsb3NlID0g
ZnVuY3Rpb24oZXZlbnQpCit7CisgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOwor
ICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50Lndh
c0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rv
by1sb25nLXBheWxvYWRfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWNkYTM0OGEw
NjEzNmRjMjllNTAyNzU1Zjk4ZWM4OTk2YzZiMzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkX3dz
aC5weQpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgc3RydWN0CitpbXBvcnQgdGltZQorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJh
X2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KToKKyAgICBsZW5ndGggPSAweDgwMDAwMDAwMDAwMDAwMDAKKworICAg
ICMgcHl3ZWJzb2NrZXQgcmVmdXNlcyB0byBzZW5kIGEgZnJhbWUgd2l0aCB0b28gbG9uZyBwYXls
b2FkLgorICAgICMgVGh1cywgd2UgbmVlZCB0byBidWlsZCBhIGZyYW1lIG1hbnVhbGx5LgorICAg
IGhlYWRlciA9IGNocigweDgwIHwgY29tbW9uLk9QQ09ERV9URVhUKSAjIDB4ODAgaXMgZm9yICJm
aW4iIGJpdC4KKyAgICBoZWFkZXIgKz0gY2hyKDEyNykKKyAgICBoZWFkZXIgKz0gc3RydWN0LnBh
Y2soJyFRJywgbGVuZ3RoKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShoZWFkZXIpCisK
KyAgICAjIFNlbmQgZGF0YSBpbmRlZmluaXRlbHkgdG8gc2ltdWxhdGUgYSByZWFsIChicm9rZW4p
IHNlcnZlciBzZW5kaW5nIGEgYmlnIGZyYW1lLgorICAgICMgQSBjbGllbnQgc2hvdWxkIGlnbm9y
ZSB0aGVzZSBieXRlcyBhbmQgYWJvcnQgdGhlIGNvbm5lY3Rpb24uCisgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdYJyAqIDQwOTYpCisgICAgICAgIHRp
bWUuc2xlZXAoMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAppbmRleCBkOWJmZWEzMzRjMjFjYWEwYmY0MTY0OTQzZjFkMjI1Njc1
OWM3ZTM2Li5iMWY3OWJhOTc1MDA5YzJiZTI5MTYyYjVhMDc3YjlmN2YwMGZjNzc2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CkBAIC00Niw2ICs0Niw3IEBAIEJVR0NSMTg3MDIgV0lOIDogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCA9IFBBCiBCVUdDUjM2NTM5IFNM
T1cgOiBodHRwL3Rlc3RzL21pc2MvdW5jYWNoZWFibGUtc2NyaXB0LXJlcGVhdGVkLmh0bWwgPSBQ
QVNTCiAKIEJVR0NSMzIwMTggU0xPVyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGll
NzYvZnJhbWUtbGVuZ3Rocy5odG1sID0gUEFTUworQlVHQ1IzMjAxOCBTTE9XIDogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFtZS1sZW5ndGhzLmh0bWwgPSBQQVNTCiBCVUdDUjY5
NTEzIERFQlVHIFNMT1cgOiBodG1sNWxpYi93ZWJraXQtcmVzdW1lci5odG1sID0gUEFTUwogCiBC
VUdXSzU1OTEzIFJFTEVBU0UgU0xPVyA6IGpxdWVyeS9lZmZlY3RzLmh0bWwgPSBQQVNTCkBAIC0x
MDUsNiArMTA2LDcgQEAgV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy93b3JrZXJzID0gUEFTUyBU
SU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29y
a2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2V2ZW50
c291cmNlL3dvcmtlcnMgPSBQQVNTIFRJTUVPVVQgRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93b3JrZXJzLyA9IFBBU1MgVElNRU9VVCBGQUlM
CitXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMv
ID0gUEFTUyBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHQtZm9ybWF0dGVyLmh0bWwgPSBQQVNTIFRJTUVPVVQgRkFJTAogCiAvLyBQYWdlIENhY2hl
IC0gYmFzZWQgdGVzdHMuIENocm9taXVtIGRpc2FibGVzIHBhZ2UgY2FjaGUgYmVjYXVzZSB0aGUg
V2ViS2l0IHBhZ2UgY2FjaGUga2VlcHMgcHJldmlvdXNseQpAQCAtMTYxLDkgKzE2Myw2IEBAIFdP
TlRGSVggU0tJUCA6IGFuaW1hdGlvbnMvYW5pbWF0aW9uLWFwaS0xLmh0bWwgPSBGQUlMCiAvLyBV
bnNraXAgYWZ0ZXIgaW1wbGVtZW50aW5nIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREZWZlcnNM
b2FkaW5nIGFuZCA6OmdvQmFjay4KIEJVR1dLNjA4NzcgU0tJUCA6IGxvYWRlci9uYXZpZ2F0aW9u
LXdoaWxlLWRlZmVycmluZy1sb2Fkcy5odG1sID0gRkFJTAogCi0vLyBTa2lwcGVkIHVudGlsIG5l
dyBXZWJTb2NrZXQgcHJvdG9jb2wgaXMgaW1wbGVtZW50ZWQuCi1CVUdXSzUwMDk5IFNLSVAgOiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLyA9IFBBU1MgRkFJTCBUSU1FT1VUCi0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAvLyBXT05URklYIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTcyMiw2ICsxNzIx
LDcgQEAgQlVHQ1IzMTYyMyBXSU4gOiBodHRwL3Rlc3RzL2FwcGNhY2hlL3JlbW92ZS1jYWNoZS5o
dG1sID0gUEFTUyBURVhUIFRJTUVPVVQKIAogLy8gV2ViS2l0IHJvbGwgNTI4NTIgLT4gNTI4NjcK
IEJVR0NSMzIwMTggREVCVUcgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3Np
bXBsZS1zdHJlc3MuaHRtbCA9IFBBU1MgVEVYVCBUSU1FT1VUCitCVUdDUjMyMDE4IERFQlVHIDog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zaW1wbGUtc3RyZXNzLmh0bWwgPSBQQVNT
IFRFWFQgVElNRU9VVAogCiAvLyBWOCdzIGltcGxlbWVudGF0aW9uIG9mIGdldE93blByb3BlcnR5
TmFtZXMgaGFzIGRpZmZlcmVudCByZXN1bHRzIGZvciBidWlsdC1pbgogLy8gZnVuY3Rpb25zLgpA
QCAtMjgwMSw2ICsyODAxLDcgQEAgQlVHQ1I3MzA4MCBMSU5VWCBERUJVRyA6IGZhc3QvZm9ybXMv
Zm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbCA9IFBBU1MgVEkKIEJVR0NSNzMwOTEg
OiBhbmltYXRpb25zL3BsYXktc3RhdGUtc3VzcGVuZC5odG1sID0gUEFTUyBURVhUCiBCVUdDUjcz
MDkyIFdJTiA6IGZhc3QvZG9tL2djLTExLmh0bWwgPSBQQVNTIFRFWFQKIEJVR0NSNzMwOTQgTElO
VVggOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NlbmQtYWZ0ZXItY2xvc2Ut
b24tdW5sb2FkLmh0bWwgPSBQQVNTIFRJTUVPVVQKK0JVR0NSNzMwOTQgTElOVVggOiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYWZ0ZXItY2xvc2Utb24tdW5sb2FkLmh0bWwg
PSBQQVNTIFRJTUVPVVQKIAogQlVHVjhfMTE2OCA6IGZhc3QvanMvbW96aWxsYS9ldmFsL2V4aGF1
c3RpdmUtZnVuLW5vcm1hbGNhbGxlci1pbmRpcmVjdC1zdHJpY3Rjb2RlLmh0bWwgPSBURVhUCiBC
VUdWOF8xMTY4IDogZmFzdC9qcy9tb3ppbGxhL2V2YWwvZXhoYXVzdGl2ZS1mdW4tc3RyaWN0Y2Fs
bGVyLWluZGlyZWN0LXN0cmljdGNvZGUuaHRtbCA9IFRFWFQKQEAgLTM2NTEsNiArMzY1Miw3IEBA
IEJVR1dLNjE2NjQgTElOVVggOiBzdmcvem9vbS9wYWdlL3JlbGF0aXZlLXNpemVkLWRvY3VtZW50
LXNjcm9sbGJhcnMuc3ZnID0gSU1BR0UKIEJVR0NSODQzMTcgREVCVUcgOiBzdmcvd2ljZC90ZXN0
LXNjYWxhYmxlLWJhY2tncm91bmQtaW1hZ2UxLnhodG1sID0gQ1JBU0gKIAogQlVHV0s2MTc2NyBX
SU4gREVCVUcgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2NsaWVudC1jbG9z
ZS5odG1sID0gUEFTUyBURVhUCitCVUdXSzYxNzY3IFdJTiBERUJVRyA6IGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLmh0bWwgPSBQQVNTIFRFWFQKIAogQlVHV0s1
OTc4MiBXSU4gTElOVVggREVCVUcgOiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQtZG9tLWR4LWF0dHIuaHRtbCA9IFRJTUVPVVQKIEJVR1dLNTk3ODIgV0lOIExJTlVY
IERFQlVHIDogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LWRvbS1k
eS1hdHRyLmh0bWwgPSBUSU1FT1VUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDg4MjVk
MTFkYmRiYTEzOThjMWIyYjE1MTlhNDVlMzM5YzZjNmYyODkuLmM0OTY2NmM4Zjc1OWMxMDJlYzA3
NzMzN2IwOGU4NDI0NTM0OTIxNzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0zODYs
NiArMzg2LDMgQEAgY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtZml4ZWQtb3ZlcmZsb3ctc2Ny
b2xsZWQuaHRtbAogY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtZml4ZWQtb3ZlcmZsb3cuaHRt
bAogY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtZml4ZWQuaHRtbAogY29tcG9zaXRpbmcvcnRs
L3J0bC1pZnJhbWUtcmVsYXRpdmUuaHRtbAotCi0jIFNraXBwZWQgdW50aWwgbmV3IFdlYlNvY2tl
dCBwcm90b2NvbCBpcyBpbXBsZW1lbnRlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81MDA5OQotaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5k
ZXggNDU4NTZmYzA3MzcxN2U5ZDhmOWJkMGI4N2FjMzI4NjdkN2Q3NTc2Zi4uZmZiNmYwZGY1MDVm
NjU5ZTc3MmJhNWU4ZDNkODM2ODgyM2U1OTE0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
QEAgLTEzNDUsNiArMTM0NSwzIEBAIGZhc3Qvd29ya2Vycy93b3JrZXItY3Jhc2gtd2l0aC1pbnZh
bGlkLWxvY2F0aW9uLmh0bWwKIAogIyBOZWVkIHRvIGltcGxlbWVudCBnZXRGb3JtVmFsdWUoKS4K
IHBsdWdpbnMvZm9ybS12YWx1ZS5odG1sCi0KLSMgU2tpcHBlZCB1bnRpbCBuZXcgV2ViU29ja2V0
IHByb3RvY29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzUwMDk5Ci1odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVkMGNlODcxMGFjNTg4
NzdjMzkxMDNhYWRhMDE0YzdiYTYzNGZiYjcuLmVhYmFmZDE5NDhmZTc4MDRjYzAxMDI2OTA4Yzg1
NTVmMWViYzVlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMS0wNy0xNCAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJTb2NrZXQ6IElt
cGxlbWVudCBoeWJpIGZyYW1pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlNvY2tldCBmcmFtaW5nIHByb3RvY29sIHdoaWNoIGlz
IG1haW5seSBkZXNjcmliZWQgaW4KKyAgICAgICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1s
L2RyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0xMCNzZWN0aW9uLTQ+IGFuZAor
ICAgICAgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdl
YnNvY2tldHByb3RvY29sLTEwI3NlY3Rpb24tNj4uCisKKyAgICAgICAgSHliaSBwcm90b2NvbCBp
bnRyb2R1Y2VzIGEgbmV3IGZyYW1lIGZvcm1hdCB3aGljaCBpcyBkcmFzdGljYWxseSBkaWZmZXJl
bnQgZnJvbQorICAgICAgICB0aGUgb2xkIG9uZS4gTm90YWJsZSBkaWZmZXJlbmNlcyBhcmU6Cisg
ICAgICAgIC0gQmluYXJ5IGRhdGEgc3VwcG9ydC4KKyAgICAgICAgLSBGcmFnbWVudGF0aW9uIHN1
cHBvcnQ6IGEgc2luZ2xlIG1lc3NhZ2UgY2FuIGJlIGZyYWdtZW50ZWQgdG8gbXVsdGlwbGUgZnJh
bWVzLgorICAgICAgICAtIFBpbmctcG9uZyBzdXBwb3J0LgorICAgICAgICAtIE1hc2tpbmc6IGZy
YW1lIGNvbnRlbnQgb2YgYSBjbGllbnQgbXVzdCBiZSBtYXNrZWQgdG8gcHJldmVudCBjcm9zcy1w
cm90b2NvbCBhdHRhY2tzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY292ZXJzIHRoZSBmb2xsb3dp
bmcgZmVhdHVyZXM6CisgICAgICAgIC0gU2VuZCBhIHBvbmcgZnJhbWUgd2hlbiBhIHBpbmcgZnJh
bWUgaXMgcmVjZWl2ZWQuCisgICAgICAgIC0gUmVjZWl2ZSBmcmFnbWVudGVkIGZyYW1lcy4KKyAg
ICAgICAgLSBSZWNlaXZlIG1hc2tlZCBmcmFtZXMuIChTZXJ2ZXJzIGRvIG5vdCBoYXZlIHRvIG1h
c2sgZnJhbWVzLCBidXQgdGhleSBtYXkgaWYgdGhleSB3aXNoLikKKworICAgICAgICBUaGUgZm9s
bG93aW5nIGZlYXR1cmVzIGFyZSBOT1QgaW1wbGVtZW50ZWQgeWV0OgorICAgICAgICAtIFNlbmQg
b3IgcmVjZWl2ZSBiaW5hcnkgbWVzc2FnZXMuCisgICAgICAgIC0gU2VuZCBhIHBpbmcgbWVzc2Fn
ZS4KKyAgICAgICAgLSBTZW5kIGZyYWdtZW50ZWQgZnJhbWVzLiAoSXQgaXMgdW5jbGVhciB3aGV0
aGVyIHRoaXMgaXMgbmVjZXNzYXJ5LikKKyAgICAgICAgLSBSZXdyaXRlIHRoZSBmcmFtZSBjb250
ZW50IGJ5IFdlYlNvY2tldCBwcm90b2NvbCBleHRlbnNpb25zIChsaWtlIGZyYW1lIGNvbXByZXNz
aW9uKS4KKworICAgICAgICBOZXcgdGVzdHM6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvYnJva2VuLXV0ZjguaHRtbAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVz
Lmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2ludGVybGVhdmVkLWZyYWdtZW50cy5odG1sCisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWUuaHRtbAorICAgICAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy5o
dG1sCisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9w
b25nLmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Jlc2VydmVkLWJpdHMuaHRtbAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy5odG1sCisgICAgICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkLmh0bWwK
KworICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAgICBUaGUgb3JpZ2luYWwgY29u
dGVudCBvZiBzZW5kKCkgd2FzIG1vdmVkIHRvIGEgcHJpdmF0ZSBtZXRob2Qgc2VuZEZyYW1lSGl4
aWU3NigpLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6CisgICAg
ICAgIFN0b3AgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBhZnRlciB0aGUgV2ViU29ja2V0IGNvbm5l
Y3Rpb24gaXMgZmFpbGVkLgorICAgICAgICBJdCB3YXMgdW5jbGVhciB0byBtZSB3aGV0aGVyIHdl
IHNob3VsZCBkbyB0aGUgc2FtZSB0aGluZyBmb3IgaGl4aWUtNzYgY29ubmVjdGlvbjsKKyAgICAg
ICAgZm9yIG5vdywgSSBrZXB0IHRoZSBvcmlnaW5hbCBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZCk6IFVuY2hhbmdlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lSGl4aWU3Nik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lSGl4aWU3Nik6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjppc05vbkNvbnRyb2xPcENvZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6aXNDb250cm9sT3BDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OmlzUmVzZXJ2ZWRPcENvZGUpOgorCiAyMDExLTA3LTE0ICBBbmRyZXkgS29zeWFrb3YgIDxj
YXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIG1vcmUg
ZGVhZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCA2ZmIzMWFmMDNhZmNjMWNlYTAxNGVlYTdhMzhjMTFmZWM3ZjM2YTI5Li4yOWE5
YjBjZjUzYmQyZjU4YmZjM2RjN2VhYTFkNjAzN2U5Y2YzNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ4LDEyICs0OCwxMyBAQAog
I2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRI
YW5kc2hha2UuaCIKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Cisj
aW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzQsNiArNzUsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpX
ZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tl
dENoYQogICAgICwgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudCgwKQogICAgICwgbV9pZGVudGlm
aWVyKDApCiAgICAgLCBtX3VzZUhpeGllNzZQcm90b2NvbCh0cnVlKQorICAgICwgbV9oYXNDb250
aW51b3VzRnJhbWUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dC0+aXNEb2N1bWVudCgp
KTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29u
dGV4dCk7CkBAIC0xMDIsMTcgKzEwNCwxMyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5l
Y3QoKQogICAgIG1faGFuZGxlID0gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUobV9oYW5kc2hh
a2UtPnVybCgpLCB0aGlzKTsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IFN0cmluZyYgbXNnKQorYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCAl
cyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQobV9oYW5kbGUpOwotICAg
IEFTU0VSVCghbV9zdXNwZW5kZWQpOwotICAgIFZlY3RvcjxjaGFyPiBidWY7Ci0gICAgYnVmLmFw
cGVuZCgnXDAnKTsgIC8vIGZyYW1lIHR5cGUKLSAgICBDU3RyaW5nIHV0ZjggPSBtc2cudXRmOCgp
OwotICAgIGJ1Zi5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwotICAgIGJ1Zi5h
cHBlbmQoJ1x4ZmYnKTsgIC8vIGZyYW1lIGVuZAotICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChi
dWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgQ1N0cmlu
ZyB1dGY4ID0gbWVzc2FnZS51dGY4KCk7CisgICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKQor
ICAgICAgICByZXR1cm4gc2VuZEZyYW1lSGl4aWU3Nih1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CisgICAgcmV0dXJuIHNlbmRGcmFtZShPcENvZGVUZXh0LCB1dGY4LmRhdGEoKSwgdXRmOC5s
ZW5ndGgoKSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRB
bW91bnQoKSBjb25zdApAQCAtMTQwLDYgKzEzOCwxNiBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAg
ICAgaWYgKG1fY29udGV4dCkKICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCByZWFzb24sIDAsIG1f
aGFuZHNoYWtlLT5jbGllbnRPcmlnaW4oKSwgMCk7CisgICAgaWYgKCFtX3VzZUhpeGllNzZQcm90
b2NvbCkgeworICAgICAgICAvLyBIeWJpLTEwIHNwZWNpZmljYXRpb24gZXhwbGljaXRseSBzdGF0
ZXMgd2UgbXVzdCBub3QgY29udGludWUgdG8gaGFuZGxlIGluY29taW5nIGRhdGEKKyAgICAgICAg
Ly8gb25jZSB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgZmFpbGVkIChzZWN0aW9uIDcuMS43
KS4KKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyB0aGlzIGluIGhpeGllLTc2IHRvbz8K
KyAgICAgICAgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKKyAgICAgICAgaWYg
KG1fYnVmZmVyKQorICAgICAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOyAvLyBTYXZl
IG1lbW9yeS4KKyAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKKyAgICAgICAg
bV9jb250aW51b3VzRnJhbWVEYXRhLmNsZWFyKCk7CisgICAgfQogICAgIGlmIChtX2hhbmRsZSAm
JiAhbV9jbG9zZWQpCiAgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7IC8vIFdpbGwgY2Fs
bCBkaWRDbG9zZSgpLgogfQpAQCAtMzQ1LDYgKzM1MywyMzcgQEAgYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICBpZiAobV9oYW5kc2hha2UtPm1vZGUoKSAhPSBXZWJT
b2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAg
aWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKQorICAgICAgICByZXR1cm4gcHJvY2Vzc0ZyYW1lSGl4
aWU3NigpOworCisgICAgcmV0dXJuIHByb2Nlc3NGcmFtZSgpOworfQorCit2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVy
KQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3Jlc3VtZVRpbWVyKTsK
KworICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KHRoaXMpOyAvLyBUaGUgY2xp
ZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3Qg
cmVmZXJlbmNlLgorICAgIHdoaWxlICghbV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9idWZm
ZXIpCisgICAgICAgIGlmICghcHJvY2Vzc0J1ZmZlcigpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgaWYgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiBtX2Nsb3NlZCAmJiBtX2hhbmRsZSkK
KyAgICAgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0KCkpOworfQorCit2b2lkIFdlYlNvY2tldENo
YW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0aGlzLCBtX2Nsb3NpbmcsIG1fcmVjZWl2
ZWRDbG9zaW5nSGFuZHNoYWtlKTsKKyAgICBpZiAobV9jbG9zaW5nKQorICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKG1faGFuZGxlKTsKKyAgICBib29sIHNlbnRTdWNjZXNzZnVsbHk7CisgICAg
aWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKSB7CisgICAgICAgIFZlY3RvcjxjaGFyPiBidWY7Cisg
ICAgICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsKKyAgICAgICAgYnVmLmFwcGVuZCgnXDAnKTsKKyAg
ICAgICAgc2VudFN1Y2Nlc3NmdWxseSA9IG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5z
aXplKCkpOworICAgIH0gZWxzZQorICAgICAgICBzZW50U3VjY2Vzc2Z1bGx5ID0gc2VuZEZyYW1l
KE9wQ29kZUNsb3NlLCAiIiwgMCk7IC8vIEZJWE1FOiBTZW5kIHN0YXR1cyBjb2RlIGFuZCByZWFz
b24gbWVzc2FnZS4KKworICAgIGlmICghc2VudFN1Y2Nlc3NmdWxseSkgeworICAgICAgICBtX2hh
bmRsZS0+ZGlzY29ubmVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY2xvc2lu
ZyA9IHRydWU7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRD
bG9zaW5nSGFuZHNoYWtlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1Rp
bWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQoreworICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zaW5nIHRpbWVyIiwgdGhpcyk7CisgICAgQVNT
RVJUX1VOVVNFRCh0aW1lciwgJm1fY2xvc2luZ1RpbWVyID09IHRpbWVyKTsKKyAgICBpZiAobV9o
YW5kbGUpCisgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7Cit9CisKK2NvbnN0IFdlYlNv
Y2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVDb250aW51YXRpb24g
PSAweDA7Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6
T3BDb2RlVGV4dCA9IDB4MTsKK2NvbnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2Nr
ZXRDaGFubmVsOjpPcENvZGVCaW5hcnkgPSAweDI7Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpP
cENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlQ2xvc2UgPSAweDg7Citjb25zdCBXZWJTb2Nr
ZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlUGluZyA9IDB4OTsKK2Nv
bnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVQb25n
ID0gMHhBOworCitib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCit7CisgICAg
QVNTRVJUKG1fYnVmZmVyKTsKKyAgICBjaGFyKiBwID0gbV9idWZmZXI7CisgICAgY2hhciogZW5k
ID0gbV9idWZmZXIgKyBtX2J1ZmZlclNpemU7CisKKyAgICBpZiAobV9idWZmZXJTaXplIDwgMikg
Ly8gRnJhbWUgaW5jb21wbGV0ZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWdu
ZWQgY2hhciBmaXJzdEJ5dGUgPSAqcCsrOworICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kQnl0ZSA9
ICpwKys7CisKKyAgICBib29sIGZpbmFsID0gZmlyc3RCeXRlICYgMHg4MDsKKyAgICBib29sIHJl
c2VydmVkMSA9IGZpcnN0Qnl0ZSAmIDB4NDA7CisgICAgYm9vbCByZXNlcnZlZDIgPSBmaXJzdEJ5
dGUgJiAweDIwOworICAgIGJvb2wgcmVzZXJ2ZWQzID0gZmlyc3RCeXRlICYgMHgxMDsKKyAgICBP
cENvZGUgb3BDb2RlID0gZmlyc3RCeXRlICYgMHgwRjsKKworICAgIGJvb2wgbWFza2VkID0gc2Vj
b25kQnl0ZSAmIDB4ODA7CisgICAgdWludDY0X3QgcGF5bG9hZExlbmd0aDY0ID0gc2Vjb25kQnl0
ZSAmIDB4N0Y7CisgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+PSAxMjYpIHsKKyAgICAgICAgaW50
IGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUgPSBwYXlsb2FkTGVuZ3RoNjQgPT0gMTI2ID8gMiA6
IDg7CisgICAgICAgIGlmIChlbmQgLSBwIDwgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSkgLy8g
RnJhbWUgaW5jb21wbGV0ZS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcGF5
bG9hZExlbmd0aDY0ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRlbmRlZFBh
eWxvYWRMZW5ndGhTaXplOyArK2kpIHsKKyAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCA8PD0g
ODsKKyAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPigqcCsrKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmIE9TKFdJTkRPV1MpCisgICAgc3Rh
dGljIGNvbnN0IHVpbnQ2NF90IG1heFBheWxvYWRMZW5ndGggPSAweDdGRkZGRkZGRkZGRkZGRkZ1
aTY0OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9
IDB4N0ZGRkZGRkZGRkZGRkZGRnVsbDsKKyNlbmRpZgorICAgIHNpemVfdCBtYXNraW5nS2V5TGVu
Z3RoID0gbWFza2VkID8gNCA6IDA7CisgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxv
YWRMZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0ICsgbWFza2luZ0tleUxlbmd0aCA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsKKyAgICAgICAgZmFpbCgiV2ViU29ja2V0IGZy
YW1lIGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJpbmc6Om51bWJlcihwYXlsb2FkTGVuZ3RoNjQp
ICsgIiBieXRlcyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHNpemVfdCBw
YXlsb2FkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXlsb2FkTGVuZ3RoNjQpOworCisg
ICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oZW5kIC0gcCkgPCBtYXNraW5nS2V5TGVuZ3RoICsg
cGF5bG9hZExlbmd0aCkgLy8gRnJhbWUgaW5jb21wbGV0ZS4KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKG1hc2tlZCkKKyAgICAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IHBh
eWxvYWRMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHBbaSArIDRdIF49IHBbaSAlIDRdOyAvLyBV
bm1hc2sgdGhlIHBheWxvYWQuCisKKyAgICBjaGFyKiBwYXlsb2FkID0gcCArIG1hc2tpbmdLZXlM
ZW5ndGg7CisgICAgY2hhciogZnJhbWVFbmQgPSBwICsgbWFza2luZ0tleUxlbmd0aCArIHBheWxv
YWRMZW5ndGg7CisKKyAgICAvLyBWYWxpZGF0ZSB0aGUgZnJhbWUgZGF0YS4KKyAgICBpZiAoaXNS
ZXNlcnZlZE9wQ29kZShvcENvZGUpKSB7CisgICAgICAgIGZhaWwoIlVucmVjb2duaXplZCBmcmFt
ZSBvcGNvZGU6ICIgKyBTdHJpbmc6Om51bWJlcihvcENvZGUpKTsKKyAgICAgICAgcmV0dXJuIG1f
YnVmZmVyOworICAgIH0KKworICAgIGlmIChyZXNlcnZlZDEgfHwgcmVzZXJ2ZWQyIHx8IHJlc2Vy
dmVkMykgeworICAgICAgICBmYWlsKCJPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjog
cmVzZXJ2ZWQxID0gIiArIFN0cmluZzo6bnVtYmVyKHJlc2VydmVkMSkgKyAiLCByZXNlcnZlZDIg
PSAiICsgU3RyaW5nOjpudW1iZXIocmVzZXJ2ZWQyKSArICIsIHJlc2VydmVkMyA9ICIgKyBTdHJp
bmc6Om51bWJlcihyZXNlcnZlZDMpKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyOworICAgIH0K
KworICAgIC8vIEFsbCBjb250cm9sIGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVkLgorICAg
IGlmIChpc0NvbnRyb2xPcENvZGUob3BDb2RlKSAmJiAhZmluYWwpIHsKKyAgICAgICAgZmFpbCgi
UmVjZWl2ZWQgZnJhZ21lbnRlZCBjb250cm9sIGZyYW1lOiBvcGNvZGUgPSAiICsgU3RyaW5nOjpu
dW1iZXIob3BDb2RlKSk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKKyAgICB9CisKKyAgICAv
LyBBbGwgY29udHJvbCBmcmFtZXMgbXVzdCBoYXZlIGEgcGF5bG9hZCBvZiAxMjUgYnl0ZXMgb3Ig
bGVzcy4KKyAgICBpZiAoaXNDb250cm9sT3BDb2RlKG9wQ29kZSkgJiYgcGF5bG9hZExlbmd0aCA+
IDEyNSkgeworICAgICAgICBmYWlsKCJSZWNlaXZlZCBjb250cm9sIGZyYW1lIGhhdmluZyB0b28g
bG9uZyBwYXlsb2FkOiAiICsgU3RyaW5nOjpudW1iZXIocGF5bG9hZExlbmd0aCkgKyAiIGJ5dGVz
Iik7CisgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKKyAgICB9CisKKyAgICAvLyBBIG5ldyBkYXRh
IGZyYW1lIGlzIHJlY2VpdmVkIGJlZm9yZSB0aGUgcHJldmlvdXMgY29udGludW91cyBmcmFtZSBm
aW5pc2hlcy4KKyAgICAvLyBOb3RlIHRoYXQgY29udHJvbCBmcmFtZXMgYXJlIGFsbG93ZWQgdG8g
Y29tZSBpbiB0aGUgbWlkZGxlIG9mIGNvbnRpbnVvdXMgZnJhbWVzLgorICAgIGlmIChtX2hhc0Nv
bnRpbnVvdXNGcmFtZSAmJiBvcENvZGUgIT0gT3BDb2RlQ29udGludWF0aW9uICYmICFpc0NvbnRy
b2xPcENvZGUob3BDb2RlKSkgeworICAgICAgICBmYWlsKCJSZWNlaXZlZCBuZXcgZGF0YSBmcmFt
ZSBidXQgcHJldmlvdXMgY29udGludW91cyBmcmFtZSBpcyB1bmZpbmlzaGVkLiIpOworICAgICAg
ICByZXR1cm4gbV9idWZmZXI7CisgICAgfQorCisgICAgc3dpdGNoIChvcENvZGUpIHsKKyAgICBj
YXNlIE9wQ29kZUNvbnRpbnVhdGlvbjoKKyAgICAgICAgLy8gVGhyb3cgYXdheSBjb250ZW50IG9m
IGEgYmluYXJ5IG1lc3NhZ2UgYmVjYXVzZSBiaW5hcnkgbWVzc2FnZXMgYXJlIG5vdCBzdXBwb3J0
ZWQgeWV0LgorICAgICAgICBpZiAobV9jb250aW51b3VzRnJhbWVPcENvZGUgPT0gT3BDb2RlVGV4
dCkKKyAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lRGF0YS5hcHBlbmQocGF5bG9hZCwgcGF5
bG9hZExlbmd0aCk7CisgICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlcik7Cisg
ICAgICAgIGlmIChmaW5hbCkgeworICAgICAgICAgICAgLy8gb25tZXNzYWdlIGhhbmRsZXIgbWF5
IGV2ZW50dWFsbHkgY2FsbCB0aGUgb3RoZXIgbWV0aG9kcyBvZiB0aGlzIGNoYW5uZWwsCisgICAg
ICAgICAgICAvLyBzbyB3ZSBzaG91bGQgcHJldGVuZCB0aGF0IHdlIGhhdmUgZmluaXNoZWQgdG8g
cmVhZCB0aGlzIGZyYW1lIGFuZAorICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIG1l
bWJlciB2YXJpYWJsZXMgYXJlIGluIGEgY29uc2lzdGVudCBzdGF0ZSBiZWZvcmUKKyAgICAgICAg
ICAgIC8vIHRoZSBoYW5kbGVyIGlzIGludm9rZWQuCisgICAgICAgICAgICAvLyBWZWN0b3I8Y2hh
cj46OnN3YXAoKSBpcyB1c2VkIGhlcmUgdG8gY2xlYXIgbV9jb250aW51b3VzRnJhbWVEYXRhLgor
ICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNvbnRpbnVvdXNGcmFtZURhdGE7CisgICAgICAgICAg
ICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuc3dhcChjb250aW51b3VzRnJhbWVEYXRhKTsKKyAgICAg
ICAgICAgIG1faGFzQ29udGludW91c0ZyYW1lID0gZmFsc2U7CisgICAgICAgICAgICBpZiAobV9j
b250aW51b3VzRnJhbWVPcENvZGUgPT0gT3BDb2RlVGV4dCkgeworICAgICAgICAgICAgICAgIFN0
cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChjb250aW51b3VzRnJhbWVEYXRhLmRhdGEo
KSwgY29udGludW91c0ZyYW1lRGF0YS5zaXplKCkpOworICAgICAgICAgICAgICAgIGlmIChtZXNz
YWdlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBmYWlsKCJDb3VsZCBub3QgZGVjb2Rl
IGEgdGV4dCBmcmFtZSBhcyBVVEYtOC4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAobV9jb250aW51b3VzRnJhbWVPcENvZGUgPT0gT3BDb2RlQmluYXJ5
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fY29udGludW91c0ZyYW1lRGF0YS5pc0VtcHR5
KCkpOworICAgICAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGEgYmluYXJ5IGZyYW1lIHdoaWNo
IGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBPcENvZGVUZXh0OgorICAgICAgICBpZiAoZmluYWwpIHsK
KyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChwYXlsb2FkLCBw
YXlsb2FkTGVuZ3RoKTsKKyAgICAgICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZl
cik7CisgICAgICAgICAgICBpZiAobWVzc2FnZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBm
YWlsKCJDb3VsZCBub3QgZGVjb2RlIGEgdGV4dCBmcmFtZSBhcyBVVEYtOC4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVz
c2FnZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFt
ZSA9IHRydWU7CisgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9IE9wQ29kZVRl
eHQ7CisgICAgICAgICAgICBBU1NFUlQobV9jb250aW51b3VzRnJhbWVEYXRhLmlzRW1wdHkoKSk7
CisgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuYXBwZW5kKHBheWxvYWQsIHBheWxv
YWRMZW5ndGgpOworICAgICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZUVuZCAtIG1fYnVmZmVyKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgT3BDb2RlQmluYXJ5OgorICAg
ICAgICBpZiAoZmluYWwpCisgICAgICAgICAgICBmYWlsKCJSZWNlaXZlZCBhIGJpbmFyeSBmcmFt
ZSB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIHlldC4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IHRydWU7CisgICAgICAgICAgICBtX2NvbnRpbnVv
dXNGcmFtZU9wQ29kZSA9IE9wQ29kZUJpbmFyeTsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvbnRp
bnVvdXNGcmFtZURhdGEuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIC8vIERvIG5vdCBzdG9yZSBk
YXRhIG9mIGEgYmluYXJ5IG1lc3NhZ2UgdG8gbV9jb250aW51b3VzRnJhbWVEYXRhIHRvIHNhdmUg
bWVtb3J5LgorICAgICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZUVuZCAtIG1fYnVmZmVyKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgT3BDb2RlQ2xvc2U6CisgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgcGF5bG9hZC4KKyAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZUVuZCAt
IG1fYnVmZmVyKTsKKyAgICAgICAgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPSB0cnVlOwor
ICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICAgICAgaWYgKG1fY2xvc2luZykK
KyAgICAgICAgICAgIG1faGFuZGxlLT5jbG9zZSgpOyAvLyBDbG9zZSBhZnRlciBzZW5kaW5nIGEg
Y2xvc2UgZnJhbWUuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBPcENvZGVQaW5nOiB7Cisg
ICAgICAgIGJvb2wgcmVzdWx0ID0gc2VuZEZyYW1lKE9wQ29kZVBvbmcsIHBheWxvYWQsIHBheWxv
YWRMZW5ndGgpOworICAgICAgICBza2lwQnVmZmVyKGZyYW1lRW5kIC0gbV9idWZmZXIpOworICAg
ICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGZhaWwoIkZhaWxlZCB0byBzZW5kIGEgcG9u
ZyBmcmFtZS4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBPcENvZGVQb25n
OgorICAgICAgICAvLyBBIHNlcnZlciBtYXkgc2VuZCBhIHBvbmcgaW4gcmVzcG9uc2UgdG8gb3Vy
IHBpbmcsIG9yIGFuIHVuc29saWNpdGVkIHBvbmcgd2hpY2ggaXMgbm90IGFzc29jaWF0ZWQgd2l0
aAorICAgICAgICAvLyBhbnkgc3BlY2lmaWMgcGluZy4gRWl0aGVyIHdheSwgdGhlcmUncyBub3Ro
aW5nIHRvIGRvIG9uIHJlY2VpcHQgb2YgcG9uZy4KKyAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZUVu
ZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZUVuZCAtIG1fYnVm
ZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG1fYnVmZmVyOworfQor
Citib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYoKQorewogICAgIGNv
bnN0IGNoYXIqIG5leHRGcmFtZSA9IG1fYnVmZmVyOwogICAgIGNvbnN0IGNoYXIqIHAgPSBtX2J1
ZmZlcjsKICAgICBjb25zdCBjaGFyKiBlbmQgPSBwICsgbV9idWZmZXJTaXplOwpAQCAtNDI3LDQy
ICs2NjYsNTUgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJl
ZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCitib29sIFdlYlNvY2tldENoYW5uZWw6
OnNlbmRGcmFtZShPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9yZXN1bWVUaW1l
cik7CisgICAgQVNTRVJUKG1faGFuZGxlKTsKKyAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKIAot
ICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KHRoaXMpOyAvLyBUaGUgY2xpZW50
IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVm
ZXJlbmNlLgotICAgIHdoaWxlICghbV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9idWZmZXIp
Ci0gICAgICAgIGlmICghcHJvY2Vzc0J1ZmZlcigpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
aWYgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiBtX2Nsb3NlZCAmJiBtX2hhbmRsZSkKLSAg
ICAgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0KCkpOworICAgIFZlY3RvcjxjaGFyPiBmcmFtZTsK
KyAgICBmcmFtZS5hcHBlbmQoMHg4MCB8IG9wQ29kZSk7IC8vIDB4ODAgaXMgZm9yICJmaW4iIGJp
dDsgd2UgZG8gbm90IGZyYWdtZW50IGEgZnJhbWUgb24gc2VuZGluZy4KKyAgICBpZiAoZGF0YUxl
bmd0aCA8IDEyNikKKyAgICAgICAgZnJhbWUuYXBwZW5kKDB4ODAgfCBkYXRhTGVuZ3RoKTsgLy8g
MHg4MCBpcyBmb3IgIk1BU0siIGJpdDsgYSBjbGllbnQgbXVzdCBtYXNrIGZyYW1lcyBzbyBpdCBp
cyBhbHdheXMgb24uCisgICAgZWxzZSBpZiAoZGF0YUxlbmd0aCA8PSAweEZGRkYpIHsKKyAgICAg
ICAgZnJhbWUuYXBwZW5kKDB4ODAgfCAxMjYpOworICAgICAgICBmcmFtZS5hcHBlbmQoKGRhdGFM
ZW5ndGggJiAweEZGMDApID4+IDgpOworICAgICAgICBmcmFtZS5hcHBlbmQoZGF0YUxlbmd0aCAm
IDB4RkYpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lLmFwcGVuZCgweDgwIHwgMTI3KTsK
KyAgICAgICAgY2hhciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07CisgICAgICAgIHNpemVfdCBy
ZW1haW5pbmcgPSBkYXRhTGVuZ3RoOworICAgICAgICAvLyBGaWxsIHRoZSBsZW5ndGggaW50byBl
eHRlbmRlZFBheWxvYWRMZW5ndGggaW4gdGhlIG5ldHdvcmsgYnl0ZSBvcmRlci4KKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAgICAgICAgICAgIGV4dGVuZGVkUGF5bG9h
ZExlbmd0aFs3IC0gaV0gPSByZW1haW5pbmcgJiAweEZGOworICAgICAgICAgICAgcmVtYWluaW5n
ID4+PSA4OworICAgICAgICB9CisgICAgICAgIEFTU0VSVCghcmVtYWluaW5nKTsKKyAgICAgICAg
ZnJhbWUuYXBwZW5kKGV4dGVuZGVkUGF5bG9hZExlbmd0aCwgOCk7CisgICAgfQorCisgICAgLy8g
TWFzayB0aGUgZnJhbWUuCisgICAgc2l6ZV90IG1hc2tpbmdLZXlTdGFydCA9IGZyYW1lLnNpemUo
KTsKKyAgICBmcmFtZS5hcHBlbmQoIi4uLi4iLCA0KTsgLy8gRm91ci1ieXRlIHBsYWNlaG9sZGVy
IGZvciBtYXNraW5nIGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4KKyAgICBzaXplX3QgcGF5bG9h
ZFN0YXJ0ID0gZnJhbWUuc2l6ZSgpOworICAgIGZyYW1lLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKKworICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGZyYW1lLmRhdGEoKSArIG1h
c2tpbmdLZXlTdGFydCwgNCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhTGVuZ3Ro
OyArK2kpCisgICAgICAgIGZyYW1lW3BheWxvYWRTdGFydCArIGldIF49IGZyYW1lW21hc2tpbmdL
ZXlTdGFydCArIGkgJSA0XTsKKworICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChmcmFtZS5kYXRh
KCksIGZyYW1lLnNpemUoKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9z
aW5nSGFuZHNoYWtlKCkKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lSGl4aWU3Nihj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xvc2luZywgbV9y
ZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOwotICAgIGlmIChtX2Nsb3NpbmcpCi0gICAgICAgIHJl
dHVybjsKICAgICBBU1NFUlQobV9oYW5kbGUpOwotICAgIFZlY3RvcjxjaGFyPiBidWY7Ci0gICAg
YnVmLmFwcGVuZCgnXHhmZicpOwotICAgIGJ1Zi5hcHBlbmQoJ1wwJyk7Ci0gICAgaWYgKCFtX2hh
bmRsZS0+c2VuZChidWYuZGF0YSgpLCBidWYuc2l6ZSgpKSkgewotICAgICAgICBtX2hhbmRsZS0+
ZGlzY29ubmVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fY2xvc2luZyA9IHRy
dWU7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5n
SGFuZHNoYWtlKCk7Ci19CisgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAKLXZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRp
bWVyKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zaW5nIHRp
bWVyIiwgdGhpcyk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgJm1fY2xvc2luZ1RpbWVyID09
IHRpbWVyKTsKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0
KCk7CisgICAgVmVjdG9yPGNoYXI+IGZyYW1lOworICAgIGZyYW1lLmFwcGVuZCgnXDAnKTsgLy8g
RnJhbWUgdHlwZS4KKyAgICBmcmFtZS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgZnJh
bWUuYXBwZW5kKCdceGZmJyk7IC8vIEZyYW1lIGVuZC4KKyAgICByZXR1cm4gbV9oYW5kbGUtPnNl
bmQoZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRl
eCA2NDIxZmViOGNlMDQzNWQwNDQ5YzE1ZDhkZDNiODMyMzljYWMyMGE4Li45OTJlYjMyYmNhZWI3
NmU0OTBmY2JiNjFkMmMwMzE5YTc0N2EzMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC04OCw2ICs4OCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiAgICAgICAgIHZvaWQg
Y2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKIAorICAgICAgICAv
LyBIeWJpLTEwIG9wY29kZXMuCisgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IE9wQ29kZTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IE9wQ29kZSBPcENvZGVDb250aW51YXRpb247CisgICAgICAg
IHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlVGV4dDsKKyAgICAgICAgc3RhdGljIGNvbnN0IE9w
Q29kZSBPcENvZGVCaW5hcnk7CisgICAgICAgIHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlQ2xv
c2U7CisgICAgICAgIHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlUGluZzsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IE9wQ29kZSBPcENvZGVQb25nOworCisgICAgICAgIHN0YXRpYyBib29sIGlzTm9u
Q29udHJvbE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0gT3BDb2RlQ29u
dGludWF0aW9uIHx8IG9wQ29kZSA9PSBPcENvZGVUZXh0IHx8IG9wQ29kZSA9PSBPcENvZGVCaW5h
cnk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNDb250cm9sT3BDb2RlKE9wQ29kZSBvcENvZGUp
IHsgcmV0dXJuIG9wQ29kZSA9PSBPcENvZGVDbG9zZSB8fCBvcENvZGUgPT0gT3BDb2RlUGluZyB8
fCBvcENvZGUgPT0gT3BDb2RlUG9uZzsgfQorICAgICAgICBzdGF0aWMgYm9vbCBpc1Jlc2VydmVk
T3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuICFpc05vbkNvbnRyb2xPcENvZGUob3BDb2Rl
KSAmJiAhaXNDb250cm9sT3BDb2RlKG9wQ29kZSk7IH0KKworICAgICAgICBib29sIHByb2Nlc3NG
cmFtZSgpOworICAgICAgICBib29sIHByb2Nlc3NGcmFtZUhpeGllNzYoKTsKKyAgICAgICAgYm9v
bCBzZW5kRnJhbWUoT3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7
CisgICAgICAgIGJvb2wgc2VuZEZyYW1lSGl4aWU3Nihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCk7CisKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0
OwogICAgICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgT3du
UHRyPFdlYlNvY2tldEhhbmRzaGFrZT4gbV9oYW5kc2hha2U7CkBAIC0xMDcsNiArMTI1LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7
IC8vIG1faWRlbnRpZmllciA9PSAwIG1lYW5zIHRoYXQgd2UgY291bGQgbm90IG9idGFpbiBhIHZh
bGlkIGlkZW50aWZpZXIuCiAKICAgICAgICAgYm9vbCBtX3VzZUhpeGllNzZQcm90b2NvbDsKKwor
ICAgICAgICAvLyBQcml2YXRlIG1lbWJlcnMgb25seSBmb3IgaHliaS0xMCBwcm90b2NvbC4KKyAg
ICAgICAgYm9vbCBtX2hhc0NvbnRpbnVvdXNGcmFtZTsKKyAgICAgICAgT3BDb2RlIG1fY29udGlu
dW91c0ZyYW1lT3BDb2RlOworICAgICAgICBWZWN0b3I8Y2hhcj4gbV9jb250aW51b3VzRnJhbWVE
YXRhOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100959</attachid>
            <date>2011-07-15 05:27:41 -0700</date>
            <delta_ts>2011-07-18 22:46:52 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-64522-20110715212739.patch</filename>
            <type>text/plain</type>
            <size>73228</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwMzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YjBkZWU4NzNhZWU2MTU2OTYzOTdh
MGJkNTI2MWRkOGM1MTJhZTkxLi4wMjg5YjQ3NTFhMDIzOWFlOWQ3YjI3Zjk5ZTNjNTRkOTQ4YjVh
NDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDctMTUgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBJbXBsZW1lbnQgaHliaSBm
cmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBleGlzdGluZyB0ZXN0cyBzbyB0aGV5IG1hdGNoIHRoZSBuZXcgZnJhbWUgZm9ybWF0LCBhbmQg
YWRkIHRlc3RzIGZvciB0aGUgbmV3IGZyYW1lIHR5cGVzCisgICAgICAgIGFuZCBlcnJvciBjb25k
aXRpb25zIHJlbGF0ZWQgdG8gdGhlIG5ldyBmcmFtZSBmb3JtYXQuCisKKyAgICAgICAgVW5za2lw
IGh5YmkgdGVzdHMgb24gbWFjLCB3aW4gYW5kIGNocm9taXVtLiBPdGhlciBwb3J0cyAod2syLCBx
dCBhbmQgZ3RrKSBzdGlsbCBza2lwIHRoZXNlIHRlc3RzCisgICAgICAgIGJlY2F1c2UgdGhleSBk
byBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiCisgICAgICAgIHByZWZlcmVuY2Uga2V5IHZpYSBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2VzKCkgeWV0LgorCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0Zjgu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9i
cm9rZW4tdXRmOF93c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZS5odG1sOgorICAgICAgICBUaGUg
Zm9ybWF0IG9mIGEgY2xvc2UgZnJhbWUgaGFzIGJlZW4gY2hhbmdlZC4gQ3VycmVudGx5LCB3ZSBk
byBub3QgaW5jbHVkZSBhbnkgcGF5bG9hZAorICAgICAgICBpbiBhIGNsb3NlIGZyYW1lLCB0aHVz
IGl0IG11c3Qgc3RhcnQgd2l0aCAiXHg4OFx4ODAiIChzZWUgc2VjdGlvbiA0LjEgb2YgaHliaS0x
MAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMpLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlX3dzaC5weToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1m
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZy
YW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVk
LWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVu
dHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1j
b250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNr
ZWQtZnJhbWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvbWFza2VkLWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Bvbmdfd3NoLnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJp
dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weTogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1vcGNvZGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlc193c2gucHk6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5OgorICAg
ICAgICBTZW5kIHR3byB0ZXh0IGZyYW1lcyBhdCBvbmNlLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5
bG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Rvby1sb25nLXBheWxvYWRfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgIERlcml2ZSB0ZXN0IGV4cGVj
dGF0aW9ucyBvZiBoaXhpZTc2IHRlc3RzLCBiZWNhdXNlIHRoZXNlIHRlc3RzIGFyZSBsaWtlbHkg
dG8gYmVoYXZlCisgICAgICAgIHRoZSBzYW1lIHdheSBhcyBoaXhpZTc2IHRlc3RzLiBXaWxsIGJl
IGNoZWNrZWQgbGF0ZXIgd2hldGhlciB0aGV5IHJlYWxseSBkby4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0w
Ny0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBKSVQg
Y3Jhc2hlcyBvbiBob3N0IGNvbnN0cnVjdG9yIGNhbGxzIGluIGRlYnVnIG1vZGUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Jyb2tlbi11
dGY4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvYnJva2VuLXV0ZjgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4Yjk2ZGRkMGFiOTk4
MDlmZWRhNDIzNmRjNjAxNWFlNWI1YTQ5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogQ291bGQgbm90IGRl
Y29kZSBhIHRleHQgZnJhbWUgYXMgVVRGLTguCitUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGFib3J0
cyB0aGUgY29ubmVjdGlvbiB3aGVuIGl0IHJlY2VpdmVzIGEgdGV4dCBmcmFtZSBjb250YWluaW5n
IGJyb2tlbiBVVEYtOCBkYXRhLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK29ub3Bl
bigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53
YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjQ0YTZhN2Vl
MDVkZWM3M2YyNzdjYTk3OTM5OGExYjVlYWM5ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC5odG1sCkBA
IC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgYWJvcnRzIHRoZSBjb25uZWN0aW9uIHdo
ZW4gaXQgcmVjZWl2ZXMgYSB0ZXh0IGZyYW1lIGNvbnRhaW5pbmcgYnJva2VuIFVURi04IGRhdGEu
Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9
IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
YnJva2VuLXV0ZjgiKTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigp
Cit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7Cisg
ICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBt
ZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2ZW50ID0gZXZl
bnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOF93c2gucHkgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4X3dz
aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NTBiNTc0ZmFmYWUzNDZhM2I5MWUxYzg2ODY4YjhlMjgyNTgyOGNi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9icm9rZW4tdXRmOF93c2gucHkKQEAgLTAsMCArMSwxMSBAQAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVh
bQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBw
YXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBwYXls
b2FkID0gJ1RoaXMgdGV4dCBzaG91bGQgYmUgaWdub3JlZC4gXHhmZicgIyAnXHhmZicgd2lsbCBu
ZXZlciBhcHBlYXIgaW4gVVRGLTggZW5jb2RlZCBkYXRhLgorICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0ZShzdHJlYW0uY3JlYXRlX2hlYWRlcihjb21tb24uT1BDT0RFX1RFWFQsIGxlbihwYXls
b2FkKSwgMSwgMCwgMCwgMCwgMCkgKyBwYXlsb2FkKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xvc2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xv
c2UtZXhwZWN0ZWQudHh0CmluZGV4IDI2NjhmZDk0MjMyNDkxZjdhZmU4ZDU3ZDExMTUyMDNlZjRl
NTkwOTMuLmIxMjAwOTRmMTljZDgxM2RjZjY4OGZlN2I2ODdhYTI2M2FkYmQ5NTQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNs
b3NlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2NsaWVudC1jbG9zZS1leHBlY3RlZC50eHQKQEAgLTMsOSArMyw5IEBAIFdlYlNv
Y2tldDogVGVzdCBjbGllbnQtaW5pdGlhdGVkIGNsb3NlLgogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCiBDb25uZWN0ZWQKLVJlY2VpdmVkOiBjbG9zZV9mcmFtZT0nXHhmZlx4MDAnCitSZWNl
aXZlZDogY2xvc2VfZnJhbWVbOjJdPSdceDg4XHg4MCcKIENsb3NlZAotUEFTUyByZWNlaXZlZE1l
c3NhZ2UgaXMgImNsb3NlX2ZyYW1lPSdcXHhmZlxceDAwJyIKK1BBU1MgcmVjZWl2ZWRNZXNzYWdl
IGlzICJjbG9zZV9mcmFtZVs6Ml09J1xceDg4XFx4ODAnIgogUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xv
c2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xp
ZW50LWNsb3NlLmh0bWwKaW5kZXggYmRhNTE0MzMyOGYyM2E2ZjA3YzVhMjA2YzYwMTRjOTMzMDcw
OTY3MS4uYWMyOWU3ZmM2YjU0ZGJjNTJmOWVkMTU4ZDk0M2NhODk1ZjcxZjczNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xv
c2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2NsaWVudC1jbG9zZS5odG1sCkBAIC0zNCw3ICszNCw3IEBAIHdzLm9uY2xvc2UgPSBmdW5jdGlv
bihldmVudCkKIHsKICAgICBkZWJ1ZygiQ2xvc2VkIik7CiAgICAgY2xvc2VFdmVudCA9IGV2ZW50
OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVjZWl2ZWRNZXNzYWdlIiwgImNsb3NlX2Zy
YW1lPSdcXHhmZlxceDAwJyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVjZWl2ZWRN
ZXNzYWdlIiwgImNsb3NlX2ZyYW1lWzoyXT0nXFx4ODhcXHg4MCciKTsKICAgICBzaG91bGRCZVRy
dWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH07CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVu
dC1jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2NsaWVudC1jbG9zZV93c2gucHkKaW5kZXggN2VkMjhiZmZmZjAyNDlmNGEwZDdiYmNjM2Zi
ODMyYWI4NzljMDgyMC4uODY4ZTA2Y2I3MWI2OTk5OWQ5MGZjMGIyYThiODhjYWEwNTc4ZjBiZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
bGllbnQtY2xvc2Vfd3NoLnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlX3dzaC5weQpAQCAtNywxNiArNywxNyBAQCBkZWYgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CiAKIGRlZiB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEocmVxdWVzdCk6CiAgICAgIyBXYWl0IGZvciBhIGNsb3NlIGZyYW1lIHNlbnQg
ZnJvbSB0aGUgY2xpZW50LgotICAgIGNsb3NlX2ZyYW1lID0gcmVxdWVzdC53c19zdHJlYW0ucmVj
ZWl2ZV9ieXRlcygyKQorICAgIGNsb3NlX2ZyYW1lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2
ZV9ieXRlcyg2KQogCi0gICAgIyBUZWxsIHRoZSBjbGllbnQgd2hhdCB3ZSBoYXZlIHJlY2VpdmVk
LgotICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdjbG9zZV9mcmFtZT0lcicgJSBj
bG9zZV9mcmFtZSkKKyAgICAjIFNlbmQgb25seSBmaXJzdCB0d28gYnl0ZXMgb2YgdGhlIHJlY2Vp
dmVkIGZyYW1lLiBUaGUgcmVtYWluaW5nIGZvdXIgYnl0ZXMgYXJlCisgICAgIyAibWFza2luZyBr
ZXkiLCB3aGljaCBjaGFuZ2VzIGV2ZXJ5IHRpbWUgdGhlIHRlc3QgcnVucy4KKyAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnY2xvc2VfZnJhbWVbOjJdPSVyJyAlIGNsb3NlX2ZyYW1l
WzoyXSkKIAogICAgICMgSWYgdGhlIGZvbGxvd2luZyBhc3NlcnRpb24gZmFpbHMsIEFzc2VydGlv
bkVycm9yIHdpbGwgYmUgcmFpc2VkLAogICAgICMgd2hpY2ggd2lsbCBwcmV2ZW50IHB5d2Vic29j
a2V0IGZyb20gc2VuZGluZyBhIGNsb3NlIGZyYW1lLgogICAgICMgSW4gdGhpcyBjYXNlLCB0aGUg
Y2xpZW50IHdpbGwgZmFpbCB0byBmaW5pc2ggY2xvc2luZyBoYW5kc2hha2UsIHRodXMKICAgICAj
IGNsb3NlRXZlbnQud2FzQ2xlYW4gd2lsbCBiZWNvbWUgZmFsc2UuCi0gICAgYXNzZXJ0IGNsb3Nl
X2ZyYW1lID09ICdceGZmXHgwMCcKKyAgICBhc3NlcnQgY2xvc2VfZnJhbWVbOjJdID09ICdceDg4
XHg4MCcKIAogICAgICMgUHJldGVuZCB3ZSBoYXZlIHJlY2VpdmVkIGEgY2xvc2UgZnJhbWUgZnJv
bSB0aGUgY2xpZW50LgogICAgICMgQWZ0ZXIgdGhpcyBmdW5jdGlvbiBleGl0cywgcHl3ZWJzb2Nr
ZXQgd2lsbCBzZW5kIGEgY2xvc2UgZnJhbWUgYXV0b21hdGljYWxseS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250
cm9sLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNGM2Yjk5NTkwMGQ2NjZiYmMxY2VjZTlhNDc4NTQ1YjBlYzJiYTJhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFn
bWVudGVkLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAwOiBSZWNlaXZlZCBmcmFnbWVudGVkIGNvbnRyb2wgZnJhbWU6IG9w
Y29kZSA9IDkKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBhIGZyYWdtZW50ZWQgY29u
dHJvbCBmcmFtZSBhbmQgYWJvcnRzIHRoZSBjb25uZWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMDZkOTEzNDM5MjYzMGQ4M2JhMDA1OGQ5NzYxZDEzMzEyZjE4NTVlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIg
V2ViU29ja2V0IHJlamVjdHMgYSBmcmFnbWVudGVkIGNvbnRyb2wgZnJhbWUgYW5kIGFib3J0cyB0
aGUgY29ubmVjdGlvbi4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAw
KTsKKwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZSI7Cit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7
Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVn
KCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIHRlc3RGYWlsZWQo
Im9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJcIiki
KTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50
ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRy
b2wtZnJhbWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWVfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMTZlNzdk
MjZjMTQzMmJkOWZhOWI3MmQ5OGFlM2ZkN2QyZmY5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJv
bC1mcmFtZV93c2gucHkKQEAgLTAsMCArMSwxMiBAQAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEocmVxdWVzdCk6CisgICAgIyBGcmFnbWVudGVkIGNvbnRyb2wgZnJhbWUgaXMgcHJvaGli
aXRlZC4gVGhlIGNsaWVudCBtdXN0IGFib3J0IHRoZSBjb25uZWN0aW9uLgorICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ1RoaXMgbWVzc2FnZSBz
aG91bGQgYmUgaWdub3JlZC4nLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HLCBmaW49MCkpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Zy
YWdtZW50ZWQtZnJhbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNjNjdkOWEzYzJlZjcyMzQyNGFhNWE2ZjQ4NTFjOWU1ODA1MmVjYjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdt
ZW50ZWQtZnJhbWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitSZWNlaXZlIGZyYWdt
ZW50ZWQgV2ViU29ja2V0IGZyYW1lcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitv
bm9wZW4oKSB3YXMgY2FsbGVkLgorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAi
Rmlyc3QgbWVzc2FnZSIpCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJTZWNv
bmQgbWVzc2FnZSIpCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJUaGlyZCBt
ZXNzYWdlIikKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGFjdHVhbE1l
c3NhZ2VzLmxlbmd0aCA9PT0gZXhwZWN0ZWRNZXNzYWdlcy5sZW5ndGggaXMgdHJ1ZQorUEFTUyBh
Y3R1YWxNZXNzYWdlc1swXSBpcyAiRmlyc3QgbWVzc2FnZSIKK1BBU1MgYWN0dWFsTWVzc2FnZXNb
MV0gaXMgIlNlY29uZCBtZXNzYWdlIgorUEFTUyBhY3R1YWxNZXNzYWdlc1syXSBpcyAiVGhpcmQg
bWVzc2FnZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2ZyYWdtZW50ZWQtZnJhbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA4MDc4
Nzc2ZmU4ZDg5ODRjOTcxMWRiNWE0ZjkzYTM1MGZmMDM3MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFt
ZXMuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJSZWNlaXZlIGZyYWdtZW50ZWQgV2ViU29ja2V0IGZyYW1lcy4i
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHVybCA9
ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJh
bWVzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50OwordmFy
IGV4cGVjdGVkTWVzc2FnZXMgPSBbIkZpcnN0IG1lc3NhZ2UiLCAiU2Vjb25kIG1lc3NhZ2UiLCAi
VGhpcmQgbWVzc2FnZSJdOwordmFyIGFjdHVhbE1lc3NhZ2VzID0gW107CisKK3dzLm9ub3BlbiA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKKyAgICB3
cy5jbG9zZSgpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAg
dmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGRlYnVnKCJvbm1lc3NhZ2UoKSB3YXMgY2Fs
bGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgYWN0dWFsTWVzc2Fn
ZXMucHVzaChtZXNzYWdlKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sK
KyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndh
c0NsZWFuIik7CisgICAgc2hvdWxkQmVUcnVlKCJhY3R1YWxNZXNzYWdlcy5sZW5ndGggPT09IGV4
cGVjdGVkTWVzc2FnZXMubGVuZ3RoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3Rl
ZE1lc3NhZ2VzLmxlbmd0aDsgKytpKQorICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImFj
dHVhbE1lc3NhZ2VzWyIgKyBpICsgIl0iLCBleHBlY3RlZE1lc3NhZ2VzW2ldKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXNfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVu
dGVkLWZyYW1lc193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZmM2U1OGVlNDUxM2Q1ZWE5Zjc0N2MyM2I1
YTA4MGNhMTkzYmE2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXNfd3NoLnB5CkBAIC0wLDAgKzEs
MzQgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCisKKworZGVmIHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgICMgc2VuZF9tZXNzYWdlJ3MgdGhp
cmQgYXJndW1lbnQgY29ycmVzcG9uZHMgdG8gImZpbiIgYml0OworICAgICMgaXQgaXMgc2V0IHRv
IFRydWUgaWYgdGhpcyBmcmFtZSBpcyB0aGUgZmluYWwgZnJhZ21lbnQgb2YgYSBtZXNzYWdlLgor
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdGaXJzdCAnLCBGYWxzZSkKKyAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnbWVzc2FnZScsIFRydWUpCisKKyAgICAjIEVt
cHR5IGZyYWdtZW50IGlzIGFsbG93ZWQuCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgJycsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdTZWNvbmQg
JywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIEZhbHNlKQor
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdtZXNzYWdlJywgRmFsc2UpCisgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIFRydWUpCisKKyAgICAjIEZyYWdtZW50
IGFnZ3Jlc3NpdmVseS4KKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnVCcsIEZh
bHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdoJywgRmFsc2UpCisgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2knLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAncicsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsICdkJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwg
JyAnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnbScsIEZhbHNl
KQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdlJywgRmFsc2UpCisgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ3MnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAncycsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsICdhJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2cn
LCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnZScsIFRydWUpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2lu
dGVybGVhdmVkLWZyYWdtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmJjMjgxM2UzYjk1NGYyNzVjYzg4NTkxYTg0YWFlYjFkMGJiYTliOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMDogUmVjZWl2ZWQgbmV3IGRhdGEgZnJhbWUgYnV0IHByZXZp
b3VzIGNvbnRpbnVvdXMgZnJhbWUgaXMgdW5maW5pc2hlZC4KK1Rlc3Qgd2hldGhlciBXZWJTb2Nr
ZXQgcmVqZWN0cyBpbnRlcmxlYXZlZCBmcmFnbWVudGVkIGZyYW1lcy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWEzMjA4YjIxOWE5NjAyZmIyMTgxYmI4ZGU0N2E1YTVmOWE2ZGE1NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
aW50ZXJsZWF2ZWQtZnJhZ21lbnRzLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNv
Y2tldCByZWplY3RzIGludGVybGVhdmVkIGZyYWdtZW50ZWQgZnJhbWVzLiIpOworCit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgdXJsID0gIndzOi8vbG9jYWxo
b3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzIjsKK3Zh
ciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4g
PSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9Owor
Cit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2
ZW50LmRhdGE7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3Nh
Z2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9u
KGV2ZW50KQoreworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNlKCJj
bG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50c193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50c193c2gucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTVkYWVjYWYyNTE1MWUwM2QzM2RhYjE1YzljZjU1NDYwZWY2NmRjZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzX3dzaC5weQpAQCAtMCwwICsxLDEyIEBACitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
c3RyZWFtCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgor
ICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAg
ICMgQSBuZXcgZnJhbWUgaXMgYXJyaXZlZCBiZWZvcmUgdGhlIHByZXZpb3VzIGZyYWdtZW50ZWQg
ZnJhbWUgaGFzIGZpbmlzaGVkLgorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0u
Y3JlYXRlX3RleHRfZnJhbWUoJ1RoaXMgbWVzc2FnZSAnLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9U
RVhULCBmaW49MCkpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVf
dGV4dF9mcmFtZSgnc2hvdWxkIGJlIGlnbm9yZWQuJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVY
VCwgZmluPTEpKSAjIE5vdCBPUENPREVfQ09OVElOVUFUSU9OLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9sb25nLWNvbnRyb2wtZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MDM5NWRjZjYx
NmEzYzAwZTNmMjY4Y2U2NGI3YmU5NmQ5ODk3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFJl
Y2VpdmVkIGNvbnRyb2wgZnJhbWUgaGF2aW5nIHRvbyBsb25nIHBheWxvYWQ6IDEyNiBieXRlcwor
VGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGNvbnRyb2wgZnJhbWVzIGxvbmdlciB0aGFu
IDEyNSBieXRlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMg
Y2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWUu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1j
b250cm9sLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNlMTg0OGMyMzI2OTEwODMxNTQwNmI2MTEx
YzQxYTQ2YzAzZGIxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGNvbnRyb2wgZnJhbWVzIGxvbmdlciB0aGFu
IDEyNSBieXRlcy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsK
KwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xv
bmctY29udHJvbC1mcmFtZSI7Cit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7Cit2YXIgY2xv
c2VFdmVudDsKK3ZhciBtZXNzYWdlOworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAg
ZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rp
b24oZXZlbnQpCit7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlRmFsc2Uo
ImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lX3dzaC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MWY0OGEzNWI5ZWJkOWE4MmU2OTA4ZDYyNWY0ZDE3YTFkMmNkMGMwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9s
b25nLWNvbnRyb2wtZnJhbWVfd3NoLnB5CkBAIC0wLDAgKzEsMTIgQEAKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0K
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFz
cworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgIyBBbGwg
Y29udHJvbCBmcmFtZXMgbXVzdCBoYXZlIGEgcGF5bG9hZCBsZW5ndGggb2YgMTI1IGJ5dGVzIG9y
IGxlc3MuCisgICAgbWVzc2FnZSA9ICdYJyAqIDEyNgorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUobWVzc2FnZSwgb3Bjb2RlPWNvbW1vbi5PUENP
REVfUElORywgZmluPTEpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGY3YjAxN2VlMjA3OWFhZjUxMWIwZjFiZWUwYjRiZThkYjdiNjExZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvbWFza2VkLWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorUmVjZWl2
ZSBtYXNrZWQgV2ViU29ja2V0IGZyYW1lcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
Citvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2Ug
PSAiRmlyc3QgbWVzc2FnZSIpCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJG
cmFnbWVudGVkIG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAi
IikKK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gIkVORCIpCitQQVNTIGFjdHVh
bE1lc3NhZ2VzLmxlbmd0aCA9PT0gZXhwZWN0ZWRNZXNzYWdlcy5sZW5ndGggaXMgdHJ1ZQorUEFT
UyBhY3R1YWxNZXNzYWdlc1swXSBpcyAiRmlyc3QgbWVzc2FnZSIKK1BBU1MgYWN0dWFsTWVzc2Fn
ZXNbMV0gaXMgIkZyYWdtZW50ZWQgbWVzc2FnZSIKK1BBU1MgYWN0dWFsTWVzc2FnZXNbMl0gaXMg
IiIKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZjBjOTI0MDY0ZjkxMzY3MjZhMTEyNTAwYjNkNDc5NjY1OTk1Y2Y0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9tYXNrZWQtZnJhbWVzLmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiUmVjZWl2ZSBtYXNrZWQgV2ViU29j
a2V0IGZyYW1lcy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsK
KwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL21h
c2tlZC1mcmFtZXMiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwordmFyIGNsb3NlRXZl
bnQ7Cit2YXIgZXhwZWN0ZWRNZXNzYWdlcyA9IFsiRmlyc3QgbWVzc2FnZSIsICJGcmFnbWVudGVk
IG1lc3NhZ2UiLCAiIl07Cit2YXIgYWN0dWFsTWVzc2FnZXMgPSBbXTsKKword3Mub25vcGVuID0g
ZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworICAgIHdz
LmNsb3NlKCk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2
YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgZGVidWcoIm9ubWVzc2FnZSgpIHdhcyBjYWxs
ZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKKyAgICBpZiAobWVzc2FnZSA9
PT0gIkVORCIpIHsKKyAgICAgICAgd3MuY2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBhY3R1YWxNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOworfTsKKword3Mub25jbG9zZSA9IGZ1
bmN0aW9uKGV2ZW50KQoreworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZVRy
dWUoImFjdHVhbE1lc3NhZ2VzLmxlbmd0aCA9PT0gZXhwZWN0ZWRNZXNzYWdlcy5sZW5ndGgiKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoOyArK2kpCisg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiYWN0dWFsTWVzc2FnZXNbIiArIGkgKyAiXSIs
IGV4cGVjdGVkTWVzc2FnZXNbaV0pOworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXND
bGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNr
ZWQtZnJhbWVzX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvbWFza2VkLWZyYW1lc193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5OTY3YWRjNTM3OGJhODA0
OTAxNTVkYzBkNzM4MTMzZmRiYjFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lc193c2gucHkKQEAgLTAs
MCArMSwzNCBAQAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1z
Z3V0aWwKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Cisg
ICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAg
IyBweXdlYnNvY2tldCBkb2VzIG5vdCBtYXNrIG1lc3NhZ2UgYnkgZGVmYXVsdC4gV2UgbmVlZCB0
byBidWlsZCBhIGZyYW1lIG1hbnVhbGx5IHRvIG1hc2sgaXQuCisgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnRmlyc3QgbWVzc2FnZScsIG1hc2s9
VHJ1ZSkpCisKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0
X2ZyYW1lKCdGcmFnbWVudGVkICcsIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQsIGZpbj0wLCBt
YXNrPVRydWUpKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3Rl
eHRfZnJhbWUoJ21lc3NhZ2UnLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04sIGZp
bj0xLCBtYXNrPVRydWUpKQorCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5j
cmVhdGVfdGV4dF9mcmFtZSgnJywgbWFzaz1UcnVlKSkKKworICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdFTkQnKQorCisgICAgIyBXYWl0IGZvciB0aGUgY2xpZW50IHRvIHN0YXJ0
IGNsb3NpbmcgaGFuZHNoYWtlLgorICAgICMgVG8gcmVjZWl2ZSBhIGNsb3NlIGZyYW1lLCB3ZSBt
dXN0IHVzZSBhbiBpbnRlcm5hbCBtZXRob2Qgb2YgcmVxdWVzdC53c19zdHJlYW0uCisgICAgb3Bj
b2RlLCBwYXlsb2FkLCBmaW5hbCwgcmVzZXJ2ZWQxLCByZXNlcnZlZDIsIHJlc2VydmVkMyA9IHJl
cXVlc3Qud3Nfc3RyZWFtLl9yZWNlaXZlX2ZyYW1lKCkKKyAgICBhc3NlcnQgb3Bjb2RlID09IGNv
bW1vbi5PUENPREVfQ0xPU0UKKyAgICBhc3NlcnQgZmluYWwKKyAgICBhc3NlcnQgbm90IHJlc2Vy
dmVkMQorICAgIGFzc2VydCBub3QgcmVzZXJ2ZWQyCisgICAgYXNzZXJ0IG5vdCByZXNlcnZlZDMK
KworICAgICMgU2VuZCBhIG1hc2tlZCBjbG9zZSBmcmFtZS4gQ2xpZW50cyBzaG91bGQgYmUgYWJs
ZSB0byBoYW5kbGUgdGhpcyBmcmFtZSBhbmQKKyAgICAjIHRoZSBXZWJTb2NrZXQgb2JqZWN0IHNo
b3VsZCBiZSBjbG9zZWQgY2xlYW5seS4KKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3Ry
ZWFtLmNyZWF0ZV9jbG9zZV9mcmFtZSgnJywgbWFzaz1UcnVlKSkKKworICAgIHJhaXNlIEV4Y2Vw
dGlvbignQWJvcnQgdGhlIGNvbm5lY3Rpb24nKSAjIFByZXZlbnRzIHB5d2Vic29ja2V0IGZyb20g
c3RhcnRpbmcgaXRzIG93biBjbG9zaW5nIGhhbmRzaGFrZS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvbmctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc3NGZkMWViYTVjNTE2NmMyOTA1YTQ2ZGFjMDM3OGQ2YzgzZDdiZGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3BvbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3Qgd2hldGhlciBX
ZWJTb2NrZXQgY29ycmVjdGx5IHJlc3BvbmRzIHRvIGEgcGluZyBtZXNzYWdlIHNlbnQgZnJvbSB0
aGUgc2VydmVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK29ub3BlbigpIHdhcyBj
YWxsZWQuCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJQQVNTIikKK1BBU1Mg
bWVzc2FnZSBpcyAiUEFTUyIKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NWFkMDQwZjgxOGE5YThiY2NmMWE3ZGY2MTUxZDAwNGE2Y2Y1OGQwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9wb25nLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBjb3JyZWN0bHkg
cmVzcG9uZHMgdG8gYSBwaW5nIG1lc3NhZ2Ugc2VudCBmcm9tIHRoZSBzZXJ2ZXIuIik7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB1cmwgPSAid3M6Ly9s
b2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nIjsKK3ZhciB3cyA9IG5ldyBX
ZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50OwordmFyIG1lc3NhZ2U7CisKK3dzLm9ub3Bl
biA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKK307
CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIG1lc3NhZ2UgPSBldmVu
dC5kYXRhOworICAgIGRlYnVnKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwi
IiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtZXNzYWdl
IiwgIlBBU1MiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBj
bG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFu
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Bvbmdfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nX3dz
aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MTJhYWM1ZjgzZjYwN2UyMzg5NjI4MGExNTA3YWNiNzNiOTAxNTlk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9wb25nX3dzaC5weQpAQCAtMCwwICsxLDE5IEBACitmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisK
K2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisK
KworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtc2d1dGlsLnNl
bmRfcGluZyhyZXF1ZXN0LCAnSGVsbG8sIHdvcmxkIScpCisKKyAgICAjIFdlIG5lZWQgdG8gdXNl
IGFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGRldGVjdCBhIHBvbmcgZnJhbWUgZnJvbSB0aGUgY2xp
ZW50LgorICAgIG9wY29kZSwgcGF5bG9hZCwgZmluYWwsIHJlc2VydmVkMSwgcmVzZXJ2ZWQyLCBy
ZXNlcnZlZDMgPSByZXF1ZXN0LndzX3N0cmVhbS5fcmVjZWl2ZV9mcmFtZSgpCisgICAgaWYgb3Bj
b2RlID09IGNvbW1vbi5PUENPREVfUE9ORyBhbmQgcGF5bG9hZCA9PSAnSGVsbG8sIHdvcmxkIScg
YW5kIGZpbmFsIGFuZCBub3QgcmVzZXJ2ZWQxIGFuZCBub3QgcmVzZXJ2ZWQyIGFuZCBub3QgcmVz
ZXJ2ZWQzOgorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnUEFTUycpCisg
ICAgZWxzZToKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0ZBSUw6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgZnJhbWU6IG9w
Y29kZSA9ICVyLCBwYXlsb2FkID0gJXIsIGZpbmFsID0gJXIsIHJlc2VydmVkMSA9ICVyLCByZXNl
cnZlZDIgPSAlciwgcmVzZXJ2ZWQzID0gJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG9wY29kZSwgcGF5bG9hZCwgZmluYWwsIHJlc2VydmVkMSwgcmVzZXJ2ZWQyLCByZXNlcnZl
ZDMpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDMwNzI2YTRhZGQwYjI1M2QwMDA1ZGE2MjM2NWY5YzNlMTY2MTI1NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2
ZWQtYml0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDA6IE9uZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZlZDEgPSAxLCBy
ZXNlcnZlZDIgPSAwLCByZXNlcnZlZDMgPSAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogT25l
IG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMSA9IDAsIHJlc2VydmVkMiA9
IDEsIHJlc2VydmVkMyA9IDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBPbmUgb3IgbW9yZSBy
ZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gMCwgcmVzZXJ2ZWQyID0gMCwgcmVzZXJ2
ZWQzID0gMQorVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGZyYW1lcyB3aG9zZSByZXNl
cnZlZCBiaXQgaXMgb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworQml0IDE6IFRl
c3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4K
K1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorQml0IDI6IFRlc3Qgc3RhcnRlZC4K
K29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VF
dmVudC53YXNDbGVhbiBpcyBmYWxzZQorQml0IDM6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdh
cyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVh
biBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I2NjIxZmEyMWMy
ODFhYTViMTU5M2Y1ZTVjMTZmZTA4MGZiYmJkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCkBA
IC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBmcmFtZXMgd2hvc2UgcmVz
ZXJ2ZWQgYml0IGlzIG9uLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIs
IDApOworCit2YXIgY2xvc2VFdmVudDsKKworLy8gYml0TnVtYmVyIG11c3QgYmUgMSwgMiwgb3Ig
My4KK2Z1bmN0aW9uIGRvVGVzdChiaXROdW1iZXIpCit7CisgICAgdmFyIHVybCA9ICJ3czovL2xv
Y2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHM/Yml0PSIgKyBi
aXROdW1iZXI7CisgICAgdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworCisgICAgZGVidWco
IkJpdCAiICsgYml0TnVtYmVyICsgIjogVGVzdCBzdGFydGVkLiIpOworCisgICAgd3Mub25vcGVu
ID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQu
Iik7CisgICAgfTsKKworICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgICAgICB0ZXN0RmFpbGVkKCJv
bm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7
CisgICAgfTsKKworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICAgICAgY2xvc2VFdmVudCA9
IGV2ZW50OworICAgICAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7Cisg
ICAgICAgIGlmIChiaXROdW1iZXIgPT09IDMpCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9UZXN0KGJpdE51bWJlciArIDEpOworICAgIH07
Cit9CisKK2RvVGVzdCgxKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQt
Yml0c193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFkMGRmZGM1NTFiMDY1NTE1NmE2YWUxMjA4NTU0NGRk
M2E4ZmVhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkKQEAgLTAsMCArMSwyNiBAQAoraW1w
b3J0IHJlCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgc3RyZWFtCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpOgorICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXD9iaXQ9KFxkKykkJywgcmVxdWVz
dC53c19yZXNvdXJjZSkKKyAgICBpZiBtYXRjaCBpcyBOb25lOgorICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogUXVlcnkgdmFsdWUgaXMgaW5jb3JyZWN0IG9yIG1p
c3NpbmcnKQorICAgICAgICByZXR1cm4KKworICAgIGJpdCA9IGludChtYXRjaC5ncm91cCgxKSkK
KyAgICBtZXNzYWdlID0gIlRoaXMgbWVzc2FnZSBzaG91bGQgYmUgaWdub3JlZC4iCisgICAgaWYg
Yml0ID09IDE6CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmNyZWF0ZV9oZWFkZXIoY29tbW9uLk9Q
Q09ERV9URVhULCBsZW4obWVzc2FnZSksIDEsIDEsIDAsIDAsIDApICsgbWVzc2FnZQorICAgIGVs
aWYgYml0ID09IDI6CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmNyZWF0ZV9oZWFkZXIoY29tbW9u
Lk9QQ09ERV9URVhULCBsZW4obWVzc2FnZSksIDEsIDAsIDEsIDAsIDApICsgbWVzc2FnZQorICAg
IGVsaWYgYml0ID09IDM6CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmNyZWF0ZV9oZWFkZXIoY29t
bW9uLk9QQ09ERV9URVhULCBsZW4obWVzc2FnZSksIDEsIDAsIDAsIDEsIDApICsgbWVzc2FnZQor
ICAgIGVsc2U6CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdGQUlM
OiBJbnZhbGlkIGJpdCBudW1iZXI6ICVkJyAlIGJpdCkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGUoZnJhbWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29kZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNTU5MGM2NDk4NzhiYzUxMGY3N2M0ZDRhNmQ1N2Y4ZjVhN2NkNjA5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU4IEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogMworQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDQKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiA1CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogNgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDcKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAxMQorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDEyCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogMTMKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAxNAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDE1CitUZXN0cyB3aGV0aGVyIFdl
YlNvY2tldCBpZ25vcmVzIGZyYW1lcyB3aXRoIHJlc2VydmVkIG9wY29kZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitPcGNvZGUgMzogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2Fz
IGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFu
IGlzIGZhbHNlCitPcGNvZGUgNDogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4K
K29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNl
CitPcGNvZGUgNTogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2Uo
KSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitPcGNvZGUg
NjogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2Fs
bGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitPcGNvZGUgNzogVGVzdCBz
dGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFT
UyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitPcGNvZGUgMTE6IFRlc3Qgc3RhcnRlZC4K
K29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VF
dmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDEyOiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4o
KSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgZmFsc2UKK09wY29kZSAxMzogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNh
bGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IGZhbHNlCitPcGNvZGUgMTQ6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitv
bmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQor
T3Bjb2RlIDE1OiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgp
IHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29k
ZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVz
ZXJ2ZWQtb3Bjb2Rlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTk1YzY4MWE0NmQ2NzZkYWQyYTRlZTdm
NGYwMDY3ZTQyMzZiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29kZXMuaHRtbApAQCAtMCwwICsxLDYx
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorZGVzY3JpcHRpb24oIlRlc3RzIHdoZXRoZXIgV2ViU29ja2V0IGlnbm9yZXMgZnJh
bWVzIHdpdGggcmVzZXJ2ZWQgb3Bjb2RlLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZCIsIDApOworCit2YXIgY2xvc2VFdmVudDsKKworZnVuY3Rpb24gZG9UZXN0KG9wY29k
ZSkKK3sKKyAgICBpZiAob3Bjb2RlID49IDB4MTApIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG9wY29kZSA9PSAweDAgfHwgb3Bjb2Rl
ID09IDB4MSB8fCBvcGNvZGUgPT0gMHgyIHx8IG9wY29kZSA9PSAweDggfHwgb3Bjb2RlID09IDB4
OSB8fCBvcGNvZGUgPT0gMHhBKSB7CisgICAgICAgIGRvVGVzdChvcGNvZGUgKyAxKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGRlYnVnKCJPcGNvZGUgIiArIG9wY29kZSArICI6IFRl
c3Qgc3RhcnRlZC4iKTsKKworICAgIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJz
b2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzP29wY29kZT0iICsgb3Bjb2RlOworICAg
IHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKworICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworICAgIH07
CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZh
ciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkg
d2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIH07CisK
KyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWJ1Zygi
b25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAg
ICAgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBkb1Rl
c3Qob3Bjb2RlICsgMSk7CisgICAgfTsKK30KKworZG9UZXN0KDApOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Jlc2VydmVkLW9wY29kZXNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjQ5
NWM4OGE5ODAzOTcyZTFlZjUwZTcxZDczYzkyYWFiNzEwODIyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNv
ZGVzX3dzaC5weQpAQCAtMCwwICsxLDE5IEBACitpbXBvcnQgcmUKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCisKKworZGVmIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXD9vcGNvZGU9
KFxkKykkJywgcmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICBpZiBtYXRjaCBpcyBOb25lOgorICAg
ICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogUXVlcnkgdmFsdWUgaXMg
aW5jb3JyZWN0IG9yIG1pc3NpbmcnKQorICAgICAgICByZXR1cm4KKworICAgIG9wY29kZSA9IGlu
dChtYXRjaC5ncm91cCgxKSkKKyAgICBwYXlsb2FkID0gJ1RoaXMgdGV4dCBzaG91bGQgYmUgaWdu
b3JlZC4gKG9wY29kZSA9ICVkKScgJSBvcGNvZGUKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dGUoc3RyZWFtLmNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBsZW4ocGF5bG9hZCksIDEsIDAsIDAsIDAs
IDApICsgcGF5bG9hZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9zZW5kMl93c2gucHkKaW5kZXggZTIyMTdmYTNkNTJjMGZlM2Q5OGQ2
MmM0ZDE4MTQyNzA5ZGFjZjE3Mi4uNTNiNmQ4MTBhMDM3YmFjYTUwYzc2ZmNlY2VmMDc5MTU1YzI0
YWUwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9zZW5kMl93c2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9zZW5kMl93c2gucHkKQEAgLTEsOCArMSwxMCBAQAorZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IHN0cmVhbQorCisKIGRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KToKICAgICBwYXNzICMgQWx3YXlzIGFjY2VwdC4KIAogCiBkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgogICAgICMgc2VuZCAyIG1lc3NhZ2VzIGluIG9uZSBw
YWNrZXQuCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCJceDAwIiArICJmaXJzdCBtZXNz
YWdlIiArICJceGZmIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJceDAwIiArICJz
ZWNvbmQgbWVzc2FnZSIgKyAiXHhmZiIpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0
cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgiZmlyc3QgbWVzc2FnZSIpICsgc3RyZWFtLmNyZWF0ZV90
ZXh0X2ZyYW1lKCJzZWNvbmQgbWVzc2FnZSIpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmct
cGF5bG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAxYjZkYzk3MDdmMDMxZDNlZWU1MDM1
NWUzYTFiNzk0NDc1MzRiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBmcmFtZSBs
ZW5ndGggdG9vIGxhcmdlOiA5MjIzMzcyMDM2ODU0Nzc1ODA4IGJ5dGVzCitUZXN0cyB3aGV0aGVy
IFdlYlNvY2tldCBjb3JyZWN0bHkgYWJvcnRzIHRoZSBjb25uZWN0aW9uIHdoZW4gaXQgcmVjZWl2
ZXMgYSBmcmFtZSB3aXRoIHRvbyBsb25nIHBheWxvYWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFT
UyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25nLXBheWxvYWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MDRiZTNhN2UyYjg2ZjBhOWUxZjY1MWRiYTdkYjFjYmIwMzg0OGFjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS90b28tbG9uZy1wYXlsb2FkLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0
aW9uKCJUZXN0cyB3aGV0aGVyIFdlYlNvY2tldCBjb3JyZWN0bHkgYWJvcnRzIHRoZSBjb25uZWN0
aW9uIHdoZW4gaXQgcmVjZWl2ZXMgYSBmcmFtZSB3aXRoIHRvbyBsb25nIHBheWxvYWQuIik7CisK
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBX
ZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxv
bmctcGF5bG9hZCIpOwordmFyIGNsb3NlRXZlbnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3dzLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAg
ICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1l
c3NhZ2UgKyAiXCIpIik7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7Cisg
ICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAgIGNsb3NlRXZlbnQgPSBldmVu
dDsKKyAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25nLXBheWxvYWRfd3NoLnB5
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1w
YXlsb2FkX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWNkYTM0OGEwNjEzNmRjMjllNTAyNzU1Zjk4ZWM4
OTk2YzZiMzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkX3dzaC5weQpAQCAtMCwwICsxLDI0IEBA
CitpbXBvcnQgc3RydWN0CitpbXBvcnQgdGltZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IGNvbW1vbgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
KyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAg
ICBsZW5ndGggPSAweDgwMDAwMDAwMDAwMDAwMDAKKworICAgICMgcHl3ZWJzb2NrZXQgcmVmdXNl
cyB0byBzZW5kIGEgZnJhbWUgd2l0aCB0b28gbG9uZyBwYXlsb2FkLgorICAgICMgVGh1cywgd2Ug
bmVlZCB0byBidWlsZCBhIGZyYW1lIG1hbnVhbGx5LgorICAgIGhlYWRlciA9IGNocigweDgwIHwg
Y29tbW9uLk9QQ09ERV9URVhUKSAjIDB4ODAgaXMgZm9yICJmaW4iIGJpdC4KKyAgICBoZWFkZXIg
Kz0gY2hyKDEyNykKKyAgICBoZWFkZXIgKz0gc3RydWN0LnBhY2soJyFRJywgbGVuZ3RoKQorICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShoZWFkZXIpCisKKyAgICAjIFNlbmQgZGF0YSBpbmRl
ZmluaXRlbHkgdG8gc2ltdWxhdGUgYSByZWFsIChicm9rZW4pIHNlcnZlciBzZW5kaW5nIGEgYmln
IGZyYW1lLgorICAgICMgQSBjbGllbnQgc2hvdWxkIGlnbm9yZSB0aGVzZSBieXRlcyBhbmQgYWJv
cnQgdGhlIGNvbm5lY3Rpb24uCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlKCdYJyAqIDQwOTYpCisgICAgICAgIHRpbWUuc2xlZXAoMSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRl
eCAxZjJlZGIwY2VmOWZkZDc2YzRlN2M2MDdkNDQ0Zjk0MjYyMzNmNjI5Li44MmQ5ZDUwYWYzZjlm
NTA3ZWMzNWM5NjJkNDBjMTM0OTliNmQ0NDA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00Niw2ICs0Niw3IEBAIEJV
R0NSMTg3MDIgV0lOIDogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNv
bnRlbnQtdHlwZXMuaHRtbCA9IFBBCiBCVUdDUjM2NTM5IFNMT1cgOiBodHRwL3Rlc3RzL21pc2Mv
dW5jYWNoZWFibGUtc2NyaXB0LXJlcGVhdGVkLmh0bWwgPSBQQVNTCiAKIEJVR0NSMzIwMTggU0xP
VyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvZnJhbWUtbGVuZ3Rocy5odG1s
ID0gUEFTUworQlVHQ1IzMjAxOCBTTE9XIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9mcmFtZS1sZW5ndGhzLmh0bWwgPSBQQVNTCiBCVUdDUjY5NTEzIERFQlVHIFNMT1cgOiBodG1s
NWxpYi93ZWJraXQtcmVzdW1lci5odG1sID0gUEFTUwogCiBCVUdXSzU1OTEzIFJFTEVBU0UgU0xP
VyA6IGpxdWVyeS9lZmZlY3RzLmh0bWwgPSBQQVNTCkBAIC0xMDUsNiArMTA2LDcgQEAgV09OVEZJ
WCBTS0lQIDogaHR0cC90ZXN0cy93b3JrZXJzID0gUEFTUyBUSU1FT1VUIEZBSUwKIFdPTlRGSVgg
U0tJUCA6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2VycyA9IFBBU1MgVElNRU9VVCBG
QUlMCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2V2ZW50c291cmNlL3dvcmtlcnMgPSBQQVNT
IFRJTUVPVVQgRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aGl4aWU3Ni93b3JrZXJzLyA9IFBBU1MgVElNRU9VVCBGQUlMCitXT05URklYIFNLSVAgOiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvID0gUEFTUyBUSU1FT1VUIEZBSUwK
IFdPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwg
PSBQQVNTIFRJTUVPVVQgRkFJTAogCiAvLyBQYWdlIENhY2hlIC0gYmFzZWQgdGVzdHMuIENocm9t
aXVtIGRpc2FibGVzIHBhZ2UgY2FjaGUgYmVjYXVzZSB0aGUgV2ViS2l0IHBhZ2UgY2FjaGUga2Vl
cHMgcHJldmlvdXNseQpAQCAtMTYxLDkgKzE2Myw2IEBAIFdPTlRGSVggU0tJUCA6IGFuaW1hdGlv
bnMvYW5pbWF0aW9uLWFwaS0xLmh0bWwgPSBGQUlMCiAvLyBVbnNraXAgYWZ0ZXIgaW1wbGVtZW50
aW5nIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREZWZlcnNMb2FkaW5nIGFuZCA6OmdvQmFjay4K
IEJVR1dLNjA4NzcgU0tJUCA6IGxvYWRlci9uYXZpZ2F0aW9uLXdoaWxlLWRlZmVycmluZy1sb2Fk
cy5odG1sID0gRkFJTAogCi0vLyBTa2lwcGVkIHVudGlsIG5ldyBXZWJTb2NrZXQgcHJvdG9jb2wg
aXMgaW1wbGVtZW50ZWQuCi1CVUdXSzUwMDk5IFNLSVAgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpLyA9IFBBU1MgRkFJTCBUSU1FT1VUCi0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBXT05URklY
IFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTcyMyw2ICsxNzIyLDcgQEAgQlVHQ1IzMTYyMyBXSU4g
OiBodHRwL3Rlc3RzL2FwcGNhY2hlL3JlbW92ZS1jYWNoZS5odG1sID0gUEFTUyBURVhUIFRJTUVP
VVQKIAogLy8gV2ViS2l0IHJvbGwgNTI4NTIgLT4gNTI4NjcKIEJVR0NSMzIwMTggREVCVUcgOiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NpbXBsZS1zdHJlc3MuaHRtbCA9IFBB
U1MgVEVYVCBUSU1FT1VUCitCVUdDUjMyMDE4IERFQlVHIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9zaW1wbGUtc3RyZXNzLmh0bWwgPSBQQVNTIFRFWFQgVElNRU9VVAogCiAvLyBW
OCdzIGltcGxlbWVudGF0aW9uIG9mIGdldE93blByb3BlcnR5TmFtZXMgaGFzIGRpZmZlcmVudCBy
ZXN1bHRzIGZvciBidWlsdC1pbgogLy8gZnVuY3Rpb25zLgpAQCAtMjgwMiw2ICsyODAyLDcgQEAg
QlVHQ1I3MzA4MCBMSU5VWCBERUJVRyA6IGZhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVu
dHMtb3JkZXIuaHRtbCA9IFBBU1MgVEkKIEJVR0NSNzMwOTEgOiBhbmltYXRpb25zL3BsYXktc3Rh
dGUtc3VzcGVuZC5odG1sID0gUEFTUyBURVhUCiBCVUdDUjczMDkyIFdJTiA6IGZhc3QvZG9tL2dj
LTExLmh0bWwgPSBQQVNTIFRFWFQKIEJVR0NSNzMwOTQgTElOVVggOiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oaXhpZTc2L3NlbmQtYWZ0ZXItY2xvc2Utb24tdW5sb2FkLmh0bWwgPSBQQVNT
IFRJTUVPVVQKK0JVR0NSNzMwOTQgTElOVVggOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtYWZ0ZXItY2xvc2Utb24tdW5sb2FkLmh0bWwgPSBQQVNTIFRJTUVPVVQKIAogQlVH
VjhfMTE2OCA6IGZhc3QvanMvbW96aWxsYS9ldmFsL2V4aGF1c3RpdmUtZnVuLW5vcm1hbGNhbGxl
ci1pbmRpcmVjdC1zdHJpY3Rjb2RlLmh0bWwgPSBURVhUCiBCVUdWOF8xMTY4IDogZmFzdC9qcy9t
b3ppbGxhL2V2YWwvZXhoYXVzdGl2ZS1mdW4tc3RyaWN0Y2FsbGVyLWluZGlyZWN0LXN0cmljdGNv
ZGUuaHRtbCA9IFRFWFQKQEAgLTM2NTIsNiArMzY1Myw3IEBAIEJVR1dLNjE2NjQgTElOVVggOiBz
dmcvem9vbS9wYWdlL3JlbGF0aXZlLXNpemVkLWRvY3VtZW50LXNjcm9sbGJhcnMuc3ZnID0gSU1B
R0UKIEJVR0NSODQzMTcgREVCVUcgOiBzdmcvd2ljZC90ZXN0LXNjYWxhYmxlLWJhY2tncm91bmQt
aW1hZ2UxLnhodG1sID0gQ1JBU0gKIAogQlVHV0s2MTc2NyBXSU4gREVCVUcgOiBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2NsaWVudC1jbG9zZS5odG1sID0gUEFTUyBURVhUCitC
VUdXSzYxNzY3IFdJTiBERUJVRyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xp
ZW50LWNsb3NlLmh0bWwgPSBQQVNTIFRFWFQKIAogQlVHV0s1OTc4MiBXSU4gTElOVVggREVCVUcg
OiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQtZG9tLWR4LWF0dHIu
aHRtbCA9IFRJTUVPVVQKIEJVR1dLNTk3ODIgV0lOIExJTlVYIERFQlVHIDogc3ZnL2R5bmFtaWMt
dXBkYXRlcy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LWRvbS1keS1hdHRyLmh0bWwgPSBUSU1FT1VU
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDg4MjVkMTFkYmRiYTEzOThjMWIyYjE1MTlh
NDVlMzM5YzZjNmYyODkuLmM0OTY2NmM4Zjc1OWMxMDJlYzA3NzMzN2IwOGU4NDI0NTM0OTIxNzQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0zODYsNiArMzg2LDMgQEAgY29tcG9zaXRp
bmcvcnRsL3J0bC1pZnJhbWUtZml4ZWQtb3ZlcmZsb3ctc2Nyb2xsZWQuaHRtbAogY29tcG9zaXRp
bmcvcnRsL3J0bC1pZnJhbWUtZml4ZWQtb3ZlcmZsb3cuaHRtbAogY29tcG9zaXRpbmcvcnRsL3J0
bC1pZnJhbWUtZml4ZWQuaHRtbAogY29tcG9zaXRpbmcvcnRsL3J0bC1pZnJhbWUtcmVsYXRpdmUu
aHRtbAotCi0jIFNraXBwZWQgdW50aWwgbmV3IFdlYlNvY2tldCBwcm90b2NvbCBpcyBpbXBsZW1l
bnRlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81MDA5OQotaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggNDU4NTZmYzA3MzcxN2U5ZDhm
OWJkMGI4N2FjMzI4NjdkN2Q3NTc2Zi4uZmZiNmYwZGY1MDVmNjU5ZTc3MmJhNWU4ZDNkODM2ODgy
M2U1OTE0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTEzNDUsNiArMTM0NSwzIEBA
IGZhc3Qvd29ya2Vycy93b3JrZXItY3Jhc2gtd2l0aC1pbnZhbGlkLWxvY2F0aW9uLmh0bWwKIAog
IyBOZWVkIHRvIGltcGxlbWVudCBnZXRGb3JtVmFsdWUoKS4KIHBsdWdpbnMvZm9ybS12YWx1ZS5o
dG1sCi0KLSMgU2tpcHBlZCB1bnRpbCBuZXcgV2ViU29ja2V0IHByb3RvY29sIGlzIGltcGxlbWVu
dGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzUwMDk5Ci1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyYTlhNGI3MjZkYWJhYmM1MzA1ZDk1ZmViNTVjNGQxZGI1
YmUxZGMuLmZhOTYzNjQ5ZmZhMDc2OTczNzFhNjMwMzhlYjA2OGQ4NTgzNWY1ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMS0wNy0xNSAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWJTb2NrZXQ6IEltcGxlbWVudCBoeWJpIGZyYW1pbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IFdlYlNvY2tldCBmcmFtaW5nIHByb3RvY29sIHdoaWNoIGlzIG1haW5seSBkZXNjcmliZWQgaW4K
KyAgICAgICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS10aGV3
ZWJzb2NrZXRwcm90b2NvbC0xMCNzZWN0aW9uLTQ+IGFuZAorICAgICAgICA8aHR0cDovL3Rvb2xz
LmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3RvY29sLTEwI3Nl
Y3Rpb24tNj4uCisKKyAgICAgICAgSHliaSBwcm90b2NvbCBpbnRyb2R1Y2VzIGEgbmV3IGZyYW1l
IGZvcm1hdCB3aGljaCBpcyBkcmFzdGljYWxseSBkaWZmZXJlbnQgZnJvbQorICAgICAgICB0aGUg
b2xkIG9uZS4gTm90YWJsZSBkaWZmZXJlbmNlcyBhcmU6CisgICAgICAgIC0gQmluYXJ5IGRhdGEg
c3VwcG9ydC4KKyAgICAgICAgLSBGcmFnbWVudGF0aW9uIHN1cHBvcnQ6IGEgc2luZ2xlIG1lc3Nh
Z2UgY2FuIGJlIGZyYWdtZW50ZWQgdG8gbXVsdGlwbGUgZnJhbWVzLgorICAgICAgICAtIFBpbmct
cG9uZyBzdXBwb3J0LgorICAgICAgICAtIE1hc2tpbmc6IGZyYW1lIGNvbnRlbnQgb2YgYSBjbGll
bnQgbXVzdCBiZSBtYXNrZWQgdG8gcHJldmVudCBjcm9zcy1wcm90b2NvbCBhdHRhY2tzLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggY292ZXJzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6CisgICAgICAg
IC0gU2VuZCBhIHBvbmcgZnJhbWUgd2hlbiBhIHBpbmcgZnJhbWUgaXMgcmVjZWl2ZWQuCisgICAg
ICAgIC0gUmVjZWl2ZSBmcmFnbWVudGVkIGZyYW1lcy4KKyAgICAgICAgLSBSZWNlaXZlIG1hc2tl
ZCBmcmFtZXMuIChTZXJ2ZXJzIGRvIG5vdCBoYXZlIHRvIG1hc2sgZnJhbWVzLCBidXQgdGhleSBt
YXkgaWYgdGhleSB3aXNoLikKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBO
T1QgaW1wbGVtZW50ZWQgeWV0OgorICAgICAgICAtIFNlbmQgb3IgcmVjZWl2ZSBiaW5hcnkgbWVz
c2FnZXMuCisgICAgICAgIC0gU2VuZCBhIHBpbmcgbWVzc2FnZS4KKyAgICAgICAgLSBTZW5kIGZy
YWdtZW50ZWQgZnJhbWVzLiAoSXQgaXMgdW5jbGVhciB3aGV0aGVyIHRoaXMgaXMgbmVjZXNzYXJ5
LikKKyAgICAgICAgLSBSZXdyaXRlIHRoZSBmcmFtZSBjb250ZW50IGJ5IFdlYlNvY2tldCBwcm90
b2NvbCBleHRlbnNpb25zIChsaWtlIGZyYW1lIGNvbXByZXNzaW9uKS4KKworICAgICAgICBOZXcg
dGVzdHM6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRtbAor
ICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21l
bnRlZC1jb250cm9sLWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLmh0bWwKKyAgICAgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50
cy5odG1sCisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9sb25nLWNvbnRyb2wtZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy5odG1sCisgICAgICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLmh0bWwKKyAgICAgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRt
bAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVz
ZXJ2ZWQtb3Bjb2Rlcy5odG1sCisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkLmh0bWwKKworICAgICAgICAqIHdlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OnNlbmQpOgorICAgICAgICBUaGUgb3JpZ2luYWwgY29udGVudCBvZiBzZW5kKCkgd2FzIG1v
dmVkIHRvIGEgcHJpdmF0ZSBtZXRob2Qgc2VuZEZyYW1lSGl4aWU3NigpLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6CisgICAgICAgIFN0b3AgaGFuZGxpbmcgaW5j
b21pbmcgZGF0YSBhZnRlciB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgZmFpbGVkLgorICAg
ICAgICBJdCB3YXMgdW5jbGVhciB0byBtZSB3aGV0aGVyIHdlIHNob3VsZCBkbyB0aGUgc2FtZSB0
aGluZyBmb3IgaGl4aWUtNzYgY29ubmVjdGlvbjsKKyAgICAgICAgZm9yIG5vdywgSSBrZXB0IHRo
ZSBvcmlnaW5hbCBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OnByb2Nlc3NCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cmVz
dW1lVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzdGFy
dENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
Y2xvc2luZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
cGFyc2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1l
SGl4aWU3Nik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lSGl4aWU3Nik6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjppc05vbkNvbnRyb2xPcENvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6aXNDb250cm9sT3BDb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OmlzUmVzZXJ2ZWRPcENvZGUpOgorCiAyMDExLTA3LTE0ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBT
aG91bGQgbm90IGRpc3BhdGNoIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBmb3IgdGhl
IGluaXRpYWwgZW1wdHkgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDZmYjMxYWYwM2FmY2MxY2VhMDE0ZWVhN2EzOGMxMWZl
YzdmMzZhMjkuLjc5NzJjMjdkMDY4YTdmNjIyN2M1MjAwYWNlNTM4NDFlMTk1OGQyNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDgs
MTcgKzQ4LDM4IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgogI2luY2x1
ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBkb3VibGUgVENQTWF4aW11
bVNlZ21lbnRMaWZldGltZSA9IDIgKiA2MC4wOwogCisvLyBDb25zdGFudHMgZm9yIGh5YmktMTAg
ZnJhbWUgZm9ybWF0LgorY29uc3QgdW5zaWduZWQgY2hhciBmaW5hbEJpdCA9IDB4ODA7Citjb25z
dCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkMUJpdCA9IDB4NDA7Citjb25zdCB1bnNpZ25lZCBjaGFy
IHJlc2VydmVkMkJpdCA9IDB4MjA7Citjb25zdCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkM0JpdCA9
IDB4MTA7Citjb25zdCB1bnNpZ25lZCBjaGFyIG9wQ29kZU1hc2sgPSAweEY7Citjb25zdCB1bnNp
Z25lZCBjaGFyIG1hc2tCaXQgPSAweDgwOworY29uc3QgdW5zaWduZWQgY2hhciBwYXlsb2FkTGVu
Z3RoTWFzayA9IDB4N0Y7Citjb25zdCBzaXplX3QgbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkID0gMTI1OworY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoVHdv
Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjY7Citjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0
aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkID0gMTI3OworY29uc3Qgc2l6ZV90IG1h
c2tpbmdLZXlXaWR0aEluQnl0ZXMgPSA0OworCitjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENv
ZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlQ29udGludWF0aW9uID0gMHgwOworY29uc3QgV2Vi
U29ja2V0Q2hhbm5lbDo6T3BDb2RlIFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZVRleHQgPSAweDE7
Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2Rl
QmluYXJ5ID0gMHgyOworY29uc3QgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlIFdlYlNvY2tldENo
YW5uZWw6Ok9wQ29kZUNsb3NlID0gMHg4OworY29uc3QgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2Rl
IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZVBpbmcgPSAweDk7Citjb25zdCBXZWJTb2NrZXRDaGFu
bmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlUG9uZyA9IDB4QTsKKwogV2ViU29j
a2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9j
bGllbnQoY2xpZW50KQpAQCAtNzQsNiArOTUsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2Nr
ZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYQog
ICAgICwgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudCgwKQogICAgICwgbV9pZGVudGlmaWVyKDAp
CiAgICAgLCBtX3VzZUhpeGllNzZQcm90b2NvbCh0cnVlKQorICAgICwgbV9oYXNDb250aW51b3Vz
RnJhbWUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7
CkBAIC0xMDIsMTcgKzEyNCwxMyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoKQog
ICAgIG1faGFuZGxlID0gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUobV9oYW5kc2hha2UtPnVy
bCgpLCB0aGlzKTsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmlu
ZyYgbXNnKQorYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCAlcyIsIHRo
aXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQobV9oYW5kbGUpOwotICAgIEFTU0VS
VCghbV9zdXNwZW5kZWQpOwotICAgIFZlY3RvcjxjaGFyPiBidWY7Ci0gICAgYnVmLmFwcGVuZCgn
XDAnKTsgIC8vIGZyYW1lIHR5cGUKLSAgICBDU3RyaW5nIHV0ZjggPSBtc2cudXRmOCgpOwotICAg
IGJ1Zi5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwotICAgIGJ1Zi5hcHBlbmQo
J1x4ZmYnKTsgIC8vIGZyYW1lIGVuZAotICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChidWYuZGF0
YSgpLCBidWYuc2l6ZSgpKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAg
c2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgQ1N0cmluZyB1dGY4
ID0gbWVzc2FnZS51dGY4KCk7CisgICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKQorICAgICAg
ICByZXR1cm4gc2VuZEZyYW1lSGl4aWU3Nih1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIHNlbmRGcmFtZShPcENvZGVUZXh0LCB1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQo
KSBjb25zdApAQCAtMTQwLDYgKzE1OCwxNiBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmZhaWwo
Y29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAgICAgaWYg
KG1fY29udGV4dCkKICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCByZWFzb24sIDAsIG1faGFuZHNo
YWtlLT5jbGllbnRPcmlnaW4oKSwgMCk7CisgICAgaWYgKCFtX3VzZUhpeGllNzZQcm90b2NvbCkg
eworICAgICAgICAvLyBIeWJpLTEwIHNwZWNpZmljYXRpb24gZXhwbGljaXRseSBzdGF0ZXMgd2Ug
bXVzdCBub3QgY29udGludWUgdG8gaGFuZGxlIGluY29taW5nIGRhdGEKKyAgICAgICAgLy8gb25j
ZSB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgZmFpbGVkIChzZWN0aW9uIDcuMS43KS4KKyAg
ICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyB0aGlzIGluIGhpeGllLTc2IHRvbz8KKyAgICAg
ICAgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1fYnVm
ZmVyKQorICAgICAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOyAvLyBTYXZlIG1lbW9y
eS4KKyAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKKyAgICAgICAgbV9jb250
aW51b3VzRnJhbWVEYXRhLmNsZWFyKCk7CisgICAgfQogICAgIGlmIChtX2hhbmRsZSAmJiAhbV9j
bG9zZWQpCiAgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7IC8vIFdpbGwgY2FsbCBkaWRD
bG9zZSgpLgogfQpAQCAtMzQ1LDYgKzM3MywyNTIgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpw
cm9jZXNzQnVmZmVyKCkKICAgICBpZiAobV9oYW5kc2hha2UtPm1vZGUoKSAhPSBXZWJTb2NrZXRI
YW5kc2hha2U6OkNvbm5lY3RlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKG1f
dXNlSGl4aWU3NlByb3RvY29sKQorICAgICAgICByZXR1cm4gcHJvY2Vzc0ZyYW1lSGl4aWU3Nigp
OworCisgICAgcmV0dXJuIHByb2Nlc3NGcmFtZSgpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQorewor
ICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3Jlc3VtZVRpbWVyKTsKKworICAg
IFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KHRoaXMpOyAvLyBUaGUgY2xpZW50IGNh
biBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJl
bmNlLgorICAgIHdoaWxlICghbV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9idWZmZXIpCisg
ICAgICAgIGlmICghcHJvY2Vzc0J1ZmZlcigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgaWYg
KCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiBtX2Nsb3NlZCAmJiBtX2hhbmRsZSkKKyAgICAg
ICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0KCkpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0aGlzLCBtX2Nsb3NpbmcsIG1fcmVjZWl2ZWRDbG9z
aW5nSGFuZHNoYWtlKTsKKyAgICBpZiAobV9jbG9zaW5nKQorICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKG1faGFuZGxlKTsKKyAgICBib29sIHNlbnRTdWNjZXNzZnVsbHk7CisgICAgaWYgKG1f
dXNlSGl4aWU3NlByb3RvY29sKSB7CisgICAgICAgIFZlY3RvcjxjaGFyPiBidWY7CisgICAgICAg
IGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsKKyAgICAgICAgYnVmLmFwcGVuZCgnXDAnKTsKKyAgICAgICAg
c2VudFN1Y2Nlc3NmdWxseSA9IG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkp
OworICAgIH0gZWxzZQorICAgICAgICBzZW50U3VjY2Vzc2Z1bGx5ID0gc2VuZEZyYW1lKE9wQ29k
ZUNsb3NlLCAiIiwgMCk7IC8vIEZJWE1FOiBTZW5kIHN0YXR1cyBjb2RlIGFuZCByZWFzb24gbWVz
c2FnZS4KKworICAgIGlmICghc2VudFN1Y2Nlc3NmdWxseSkgeworICAgICAgICBtX2hhbmRsZS0+
ZGlzY29ubmVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY2xvc2luZyA9IHRy
dWU7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5n
SGFuZHNoYWtlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmly
ZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQoreworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zaW5nIHRpbWVyIiwgdGhpcyk7CisgICAgQVNTRVJUX1VO
VVNFRCh0aW1lciwgJm1fY2xvc2luZ1RpbWVyID09IHRpbWVyKTsKKyAgICBpZiAobV9oYW5kbGUp
CisgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7Cit9CisKK1dlYlNvY2tldENoYW5uZWw6
OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShGcmFtZURhdGEm
IGZyYW1lKQoreworICAgIGNvbnN0IGNoYXIqIHAgPSBtX2J1ZmZlcjsKKyAgICBjb25zdCBjaGFy
KiBidWZmZXJFbmQgPSBtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZTsKKworICAgIGlmIChtX2J1ZmZl
clNpemUgPCAyKQorICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOworCisgICAgdW5zaWdu
ZWQgY2hhciBmaXJzdEJ5dGUgPSAqcCsrOworICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kQnl0ZSA9
ICpwKys7CisKKyAgICBib29sIGZpbmFsID0gZmlyc3RCeXRlICYgZmluYWxCaXQ7CisgICAgYm9v
bCByZXNlcnZlZDEgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDFCaXQ7CisgICAgYm9vbCByZXNlcnZl
ZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDJCaXQ7CisgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJz
dEJ5dGUgJiByZXNlcnZlZDNCaXQ7CisgICAgT3BDb2RlIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9w
Q29kZU1hc2s7CisKKyAgICBib29sIG1hc2tlZCA9IHNlY29uZEJ5dGUgJiBtYXNrQml0OworICAg
IHVpbnQ2NF90IHBheWxvYWRMZW5ndGg2NCA9IHNlY29uZEJ5dGUgJiBwYXlsb2FkTGVuZ3RoTWFz
azsKKyAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkKSB7CisgICAgICAgIGludCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXpl
OworICAgICAgICBpZiAocGF5bG9hZExlbmd0aDY0ID09IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0
ZUV4dGVuZGVkTGVuZ3RoRmllbGQpCisgICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5ndGhT
aXplID0gMjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQocGF5bG9hZExlbmd0
aDY0ID09IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7Cisg
ICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplID0gODsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoYnVmZmVyRW5kIC0gcCA8IGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUpCisgICAg
ICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOworICAgICAgICBwYXlsb2FkTGVuZ3RoNjQg
PSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVkUGF5bG9hZExlbmd0aFNp
emU7ICsraSkgeworICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8PSA4OworICAgICAgICAg
ICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpwKyspOwor
ICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG1heFBheWxvYWRM
ZW5ndGggPSBVSU5UNjRfQygweDdGRkZGRkZGRkZGRkZGRkYpOworICAgIHNpemVfdCBtYXNraW5n
S2V5TGVuZ3RoID0gbWFza2VkID8gbWFza2luZ0tleVdpZHRoSW5CeXRlcyA6IDA7CisgICAgaWYg
KHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0ICsg
bWFza2luZ0tleUxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsK
KyAgICAgICAgZmFpbCgiV2ViU29ja2V0IGZyYW1lIGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJp
bmc6Om51bWJlcihwYXlsb2FkTGVuZ3RoNjQpICsgIiBieXRlcyIpOworICAgICAgICByZXR1cm4g
RnJhbWVFcnJvcjsKKyAgICB9CisgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHBheWxvYWRMZW5ndGg2NCk7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90
PihidWZmZXJFbmQgLSBwKSA8IG1hc2tpbmdLZXlMZW5ndGggKyBwYXlsb2FkTGVuZ3RoKQorICAg
ICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOworCisgICAgaWYgKG1hc2tlZCkgeworICAgICAg
ICBjb25zdCBjaGFyKiBtYXNraW5nS2V5ID0gcDsKKyAgICAgICAgY2hhciogcGF5bG9hZCA9IGNv
bnN0X2Nhc3Q8Y2hhcio+KHAgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkTGVuZ3RoOyArK2kpCisgICAgICAgICAgICBwYXls
b2FkW2ldIF49IG1hc2tpbmdLZXlbaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOyAvLyBVbm1h
c2sgdGhlIHBheWxvYWQuCisgICAgfQorCisgICAgZnJhbWUub3BDb2RlID0gb3BDb2RlOworICAg
IGZyYW1lLmZpbmFsID0gZmluYWw7CisgICAgZnJhbWUucmVzZXJ2ZWQxID0gcmVzZXJ2ZWQxOwor
ICAgIGZyYW1lLnJlc2VydmVkMiA9IHJlc2VydmVkMjsKKyAgICBmcmFtZS5yZXNlcnZlZDMgPSBy
ZXNlcnZlZDM7CisgICAgZnJhbWUubWFza2VkID0gbWFza2VkOworICAgIGZyYW1lLnBheWxvYWQg
PSBwICsgbWFza2luZ0tleUxlbmd0aDsKKyAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gcGF5bG9h
ZExlbmd0aDsKKyAgICBmcmFtZS5mcmFtZUVuZCA9IHAgKyBtYXNraW5nS2V5TGVuZ3RoICsgcGF5
bG9hZExlbmd0aDsKKyAgICByZXR1cm4gRnJhbWVPSzsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzRnJhbWUoKQoreworICAgIEFTU0VSVChtX2J1ZmZlcik7CisKKyAgICBGcmFt
ZURhdGEgZnJhbWU7CisgICAgaWYgKHBhcnNlRnJhbWUoZnJhbWUpICE9IEZyYW1lT0spCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFZhbGlkYXRlIHRoZSBmcmFtZSBkYXRhLgorICAg
IGlmIChpc1Jlc2VydmVkT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKKyAgICAgICAgZmFpbCgiVW5y
ZWNvZ25pemVkIGZyYW1lIG9wY29kZTogIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGZyYW1lLnJlc2VydmVk
MSB8fCBmcmFtZS5yZXNlcnZlZDIgfHwgZnJhbWUucmVzZXJ2ZWQzKSB7CisgICAgICAgIGZhaWwo
Ik9uZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZlZDEgPSAiICsgU3RyaW5n
OjpudW1iZXIoZnJhbWUucmVzZXJ2ZWQxKSArICIsIHJlc2VydmVkMiA9ICIgKyBTdHJpbmc6Om51
bWJlcihmcmFtZS5yZXNlcnZlZDIpICsgIiwgcmVzZXJ2ZWQzID0gIiArIFN0cmluZzo6bnVtYmVy
KGZyYW1lLnJlc2VydmVkMykpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Ly8gQWxsIGNvbnRyb2wgZnJhbWVzIG11c3Qgbm90IGJlIGZyYWdtZW50ZWQuCisgICAgaWYgKGlz
Q29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmICFmcmFtZS5maW5hbCkgeworICAgICAgICBm
YWlsKCJSZWNlaXZlZCBmcmFnbWVudGVkIGNvbnRyb2wgZnJhbWU6IG9wY29kZSA9ICIgKyBTdHJp
bmc6Om51bWJlcihmcmFtZS5vcENvZGUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIC8vIEFsbCBjb250cm9sIGZyYW1lcyBtdXN0IGhhdmUgYSBwYXlsb2FkIG9mIDEyNSBi
eXRlcyBvciBsZXNzLCB3aGljaCBtZWFucyB0aGUgZnJhbWUgbXVzdCBub3QgY29udGFpbgorICAg
IC8vIHRoZSAiZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgiIGZpZWxkLgorICAgIGlmIChpc0NvbnRy
b2xPcENvZGUoZnJhbWUub3BDb2RlKSAmJiBmcmFtZS5wYXlsb2FkTGVuZ3RoID4gbWF4UGF5bG9h
ZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKSB7CisgICAgICAgIGZhaWwoIlJlY2Vp
dmVkIGNvbnRyb2wgZnJhbWUgaGF2aW5nIHRvbyBsb25nIHBheWxvYWQ6ICIgKyBTdHJpbmc6Om51
bWJlcihmcmFtZS5wYXlsb2FkTGVuZ3RoKSArICIgYnl0ZXMiKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIC8vIEEgbmV3IGRhdGEgZnJhbWUgaXMgcmVjZWl2ZWQgYmVmb3Jl
IHRoZSBwcmV2aW91cyBjb250aW51b3VzIGZyYW1lIGZpbmlzaGVzLgorICAgIC8vIE5vdGUgdGhh
dCBjb250cm9sIGZyYW1lcyBhcmUgYWxsb3dlZCB0byBjb21lIGluIHRoZSBtaWRkbGUgb2YgY29u
dGludW91cyBmcmFtZXMuCisgICAgaWYgKG1faGFzQ29udGludW91c0ZyYW1lICYmIGZyYW1lLm9w
Q29kZSAhPSBPcENvZGVDb250aW51YXRpb24gJiYgIWlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENv
ZGUpKSB7CisgICAgICAgIGZhaWwoIlJlY2VpdmVkIG5ldyBkYXRhIGZyYW1lIGJ1dCBwcmV2aW91
cyBjb250aW51b3VzIGZyYW1lIGlzIHVuZmluaXNoZWQuIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGZyYW1lLm9wQ29kZSkgeworICAgIGNhc2UgT3BDb2Rl
Q29udGludWF0aW9uOgorICAgICAgICAvLyBUaHJvdyBhd2F5IGNvbnRlbnQgb2YgYSBiaW5hcnkg
bWVzc2FnZSBiZWNhdXNlIGJpbmFyeSBtZXNzYWdlcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCisg
ICAgICAgIGlmIChtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9PSBPcENvZGVUZXh0KQorICAgICAg
ICAgICAgbV9jb250aW51b3VzRnJhbWVEYXRhLmFwcGVuZChmcmFtZS5wYXlsb2FkLCBmcmFtZS5w
YXlsb2FkTGVuZ3RoKTsKKyAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVm
ZmVyKTsKKyAgICAgICAgaWYgKGZyYW1lLmZpbmFsKSB7CisgICAgICAgICAgICAvLyBvbm1lc3Nh
Z2UgaGFuZGxlciBtYXkgZXZlbnR1YWxseSBjYWxsIHRoZSBvdGhlciBtZXRob2RzIG9mIHRoaXMg
Y2hhbm5lbCwKKyAgICAgICAgICAgIC8vIHNvIHdlIHNob3VsZCBwcmV0ZW5kIHRoYXQgd2UgaGF2
ZSBmaW5pc2hlZCB0byByZWFkIHRoaXMgZnJhbWUgYW5kCisgICAgICAgICAgICAvLyBtYWtlIHN1
cmUgdGhhdCB0aGUgbWVtYmVyIHZhcmlhYmxlcyBhcmUgaW4gYSBjb25zaXN0ZW50IHN0YXRlIGJl
Zm9yZQorICAgICAgICAgICAgLy8gdGhlIGhhbmRsZXIgaXMgaW52b2tlZC4KKyAgICAgICAgICAg
IC8vIFZlY3RvcjxjaGFyPjo6c3dhcCgpIGlzIHVzZWQgaGVyZSB0byBjbGVhciBtX2NvbnRpbnVv
dXNGcmFtZURhdGEuCisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gY29udGludW91c0ZyYW1lRGF0
YTsKKyAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lRGF0YS5zd2FwKGNvbnRpbnVvdXNGcmFt
ZURhdGEpOworICAgICAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9PSBPcENvZGVUZXh0KSB7CisgICAg
ICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZyb21VVEY4KGNvbnRpbnVvdXNG
cmFtZURhdGEuZGF0YSgpLCBjb250aW51b3VzRnJhbWVEYXRhLnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKG1lc3NhZ2UuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIGZhaWwoIkNv
dWxkIG5vdCBkZWNvZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04LiIpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1l
c3NhZ2UpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9
PSBPcENvZGVCaW5hcnkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9jb250aW51b3VzRnJh
bWVEYXRhLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAgZmFpbCgiUmVjZWl2ZWQgYSBiaW5h
cnkgZnJhbWUgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCB5ZXQuIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE9wQ29kZVRleHQ6CisgICAgICAg
IGlmIChmcmFtZS5maW5hbCkgeworICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6
OmZyb21VVEY4KGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOworICAgICAgICAg
ICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgICAgIGlm
IChtZXNzYWdlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGZhaWwoIkNvdWxkIG5vdCBkZWNv
ZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1faGFzQ29udGludW91c0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fY29udGludW91c0ZyYW1lT3BDb2RlID0gT3BDb2RlVGV4dDsKKyAgICAgICAgICAgIEFT
U0VSVChtX2NvbnRpbnVvdXNGcmFtZURhdGEuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIG1fY29u
dGludW91c0ZyYW1lRGF0YS5hcHBlbmQoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0
aCk7CisgICAgICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBPcENvZGVCaW5hcnk6CisgICAg
ICAgIGlmIChmcmFtZS5maW5hbCkKKyAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGEgYmluYXJ5
IGZyYW1lIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiIpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIG1faGFzQ29udGludW91c0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY29u
dGludW91c0ZyYW1lT3BDb2RlID0gT3BDb2RlQmluYXJ5OworICAgICAgICAgICAgQVNTRVJUKG1f
Y29udGludW91c0ZyYW1lRGF0YS5pc0VtcHR5KCkpOworICAgICAgICAgICAgLy8gRG8gbm90IHN0
b3JlIGRhdGEgb2YgYSBiaW5hcnkgbWVzc2FnZSB0byBtX2NvbnRpbnVvdXNGcmFtZURhdGEgdG8g
c2F2ZSBtZW1vcnkuCisgICAgICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9i
dWZmZXIpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBPcENvZGVDbG9z
ZToKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBwYXlsb2FkLgorICAgICAgICBza2lwQnVmZmVy
KGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOworICAgICAgICBtX3JlY2VpdmVkQ2xvc2luZ0hh
bmRzaGFrZSA9IHRydWU7CisgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOworICAgICAg
ICBpZiAobV9jbG9zaW5nKQorICAgICAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7IC8vIENsb3Nl
IGFmdGVyIHNlbmRpbmcgYSBjbG9zZSBmcmFtZS4KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IE9wQ29kZVBpbmc6IHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBzZW5kRnJhbWUoT3BDb2RlUG9u
ZywgZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7CisgICAgICAgIHNraXBCdWZm
ZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CisgICAgICAgIGlmICghcmVzdWx0KQorICAg
ICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgYSBwb25nIGZyYW1lLiIpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIE9wQ29kZVBvbmc6CisgICAgICAgIC8vIEEgc2VydmVy
IG1heSBzZW5kIGEgcG9uZyBpbiByZXNwb25zZSB0byBvdXIgcGluZywgb3IgYW4gdW5zb2xpY2l0
ZWQgcG9uZyB3aGljaCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoCisgICAgICAgIC8vIGFueSBzcGVj
aWZpYyBwaW5nLiBFaXRoZXIgd2F5LCB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gb24gcmVjZWlwdCBv
ZiBwb25nLgorICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOwor
ICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gbV9idWZmZXI7Cit9CisKK2Jvb2wgV2Vi
U29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lSGl4aWU3NigpCit7CiAgICAgY29uc3QgY2hhciog
bmV4dEZyYW1lID0gbV9idWZmZXI7CiAgICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVyOwogICAg
IGNvbnN0IGNoYXIqIGVuZCA9IHAgKyBtX2J1ZmZlclNpemU7CkBAIC00MjcsNDIgKzcwMSw1NiBA
QCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdl
YlNvY2tldENoYW5uZWw+KiB0aW1lcikKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1l
KE9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewot
ICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3Jlc3VtZVRpbWVyKTsKKyAgICBB
U1NFUlQobV9oYW5kbGUpOworICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogCi0gICAgUmVmUHRy
PFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QodGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3Nl
IHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCi0g
ICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiBtX2J1ZmZlcikKLSAgICAgICAg
aWYgKCFwcm9jZXNzQnVmZmVyKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICBpZiAoIW1fc3Vz
cGVuZGVkICYmIG1fY2xpZW50ICYmIG1fY2xvc2VkICYmIG1faGFuZGxlKQotICAgICAgICBkaWRD
bG9zZShtX2hhbmRsZS5nZXQoKSk7CisgICAgVmVjdG9yPGNoYXI+IGZyYW1lOworICAgIEFTU0VS
VCghKG9wQ29kZSAmIH5vcENvZGVNYXNrKSk7IC8vIENoZWNrcyB3aGV0aGVyICJvcENvZGUiIGZp
dHMgaW4gdGhlIHJhbmdlIG9mIG9wQ29kZXMuCisgICAgZnJhbWUuYXBwZW5kKGZpbmFsQml0IHwg
b3BDb2RlKTsKKyAgICBpZiAoZGF0YUxlbmd0aCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4
dGVuZGVkTGVuZ3RoRmllbGQpCisgICAgICAgIGZyYW1lLmFwcGVuZChtYXNrQml0IHwgZGF0YUxl
bmd0aCk7CisgICAgZWxzZSBpZiAoZGF0YUxlbmd0aCA8PSAweEZGRkYpIHsKKyAgICAgICAgZnJh
bWUuYXBwZW5kKG1hc2tCaXQgfCBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRlZExlbmd0
aEZpZWxkKTsKKyAgICAgICAgZnJhbWUuYXBwZW5kKChkYXRhTGVuZ3RoICYgMHhGRjAwKSA+PiA4
KTsKKyAgICAgICAgZnJhbWUuYXBwZW5kKGRhdGFMZW5ndGggJiAweEZGKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBmcmFtZS5hcHBlbmQobWFza0JpdCB8IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRC
eXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7CisgICAgICAgIGNoYXIgZXh0ZW5kZWRQYXlsb2FkTGVu
Z3RoWzhdOworICAgICAgICBzaXplX3QgcmVtYWluaW5nID0gZGF0YUxlbmd0aDsKKyAgICAgICAg
Ly8gRmlsbCB0aGUgbGVuZ3RoIGludG8gZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoIGluIHRoZSBuZXR3
b3JrIGJ5dGUgb3JkZXIuCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7Cisg
ICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5ndGhbNyAtIGldID0gcmVtYWluaW5nICYgMHhG
RjsKKyAgICAgICAgICAgIHJlbWFpbmluZyA+Pj0gODsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQoIXJlbWFpbmluZyk7CisgICAgICAgIGZyYW1lLmFwcGVuZChleHRlbmRlZFBheWxvYWRMZW5n
dGgsIDgpOworICAgIH0KKworICAgIC8vIE1hc2sgdGhlIGZyYW1lLgorICAgIHNpemVfdCBtYXNr
aW5nS2V5U3RhcnQgPSBmcmFtZS5zaXplKCk7CisgICAgZnJhbWUuZ3JvdyhmcmFtZS5zaXplKCkg
KyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsgLy8gQWRkIHBsYWNlaG9sZGVyIGZvciBtYXNraW5n
IGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4KKyAgICBzaXplX3QgcGF5bG9hZFN0YXJ0ID0gZnJh
bWUuc2l6ZSgpOworICAgIGZyYW1lLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKworICAgIGNy
eXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGZyYW1lLmRhdGEoKSArIG1hc2tpbmdLZXlTdGFy
dCwgbWFza2luZ0tleVdpZHRoSW5CeXRlcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBk
YXRhTGVuZ3RoOyArK2kpCisgICAgICAgIGZyYW1lW3BheWxvYWRTdGFydCArIGldIF49IGZyYW1l
W21hc2tpbmdLZXlTdGFydCArIGkgJSBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzXTsKKworICAgIHJl
dHVybiBtX2hhbmRsZS0+c2VuZChmcmFtZS5kYXRhKCksIGZyYW1lLnNpemUoKSk7CiB9CiAKLXZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKK2Jvb2wgV2ViU29j
a2V0Q2hhbm5lbDo6c2VuZEZyYW1lSGl4aWU3Nihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2lu
ZyAlZCAlZCIsIHRoaXMsIG1fY2xvc2luZywgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOwot
ICAgIGlmIChtX2Nsb3NpbmcpCi0gICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9oYW5kbGUp
OwotICAgIFZlY3RvcjxjaGFyPiBidWY7Ci0gICAgYnVmLmFwcGVuZCgnXHhmZicpOwotICAgIGJ1
Zi5hcHBlbmQoJ1wwJyk7Ci0gICAgaWYgKCFtX2hhbmRsZS0+c2VuZChidWYuZGF0YSgpLCBidWYu
c2l6ZSgpKSkgewotICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fY2xvc2luZyA9IHRydWU7Ci0gICAgaWYgKG1fY2xpZW50KQotICAg
ICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7Ci19CisgICAgQVNTRVJU
KCFtX3N1c3BlbmRlZCk7CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmly
ZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQotewotICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zaW5nIHRpbWVyIiwgdGhpcyk7Ci0gICAgQVNTRVJUX1VO
VVNFRCh0aW1lciwgJm1fY2xvc2luZ1RpbWVyID09IHRpbWVyKTsKLSAgICBpZiAobV9oYW5kbGUp
Ci0gICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CisgICAgVmVjdG9yPGNoYXI+IGZyYW1l
OworICAgIGZyYW1lLmFwcGVuZCgnXDAnKTsgLy8gRnJhbWUgdHlwZS4KKyAgICBmcmFtZS5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgZnJhbWUuYXBwZW5kKCdceGZmJyk7IC8vIEZyYW1l
IGVuZC4KKyAgICByZXR1cm4gbV9oYW5kbGUtPnNlbmQoZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXpl
KCkpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA2NDIxZmViOGNlMDQzNWQwNDQ5YzE1ZDhk
ZDNiODMyMzljYWMyMGE4Li5mN2E0NzBlMTNkMmQwNmRlOGE3NGI5NmFmNTgzYjU1ZDM4NTExMzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC04
OCw2ICs4OCw0NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3RhcnRDbG9z
aW5nSGFuZHNoYWtlKCk7CiAgICAgICAgIHZvaWQgY2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2Vi
U29ja2V0Q2hhbm5lbD4qKTsKIAorICAgICAgICAvLyBIeWJpLTEwIG9wY29kZXMuCisgICAgICAg
IHR5cGVkZWYgdW5zaWduZWQgaW50IE9wQ29kZTsKKyAgICAgICAgc3RhdGljIGNvbnN0IE9wQ29k
ZSBPcENvZGVDb250aW51YXRpb247CisgICAgICAgIHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2Rl
VGV4dDsKKyAgICAgICAgc3RhdGljIGNvbnN0IE9wQ29kZSBPcENvZGVCaW5hcnk7CisgICAgICAg
IHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlQ2xvc2U7CisgICAgICAgIHN0YXRpYyBjb25zdCBP
cENvZGUgT3BDb2RlUGluZzsKKyAgICAgICAgc3RhdGljIGNvbnN0IE9wQ29kZSBPcENvZGVQb25n
OworCisgICAgICAgIHN0YXRpYyBib29sIGlzTm9uQ29udHJvbE9wQ29kZShPcENvZGUgb3BDb2Rl
KSB7IHJldHVybiBvcENvZGUgPT0gT3BDb2RlQ29udGludWF0aW9uIHx8IG9wQ29kZSA9PSBPcENv
ZGVUZXh0IHx8IG9wQ29kZSA9PSBPcENvZGVCaW5hcnk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wg
aXNDb250cm9sT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuIG9wQ29kZSA9PSBPcENvZGVD
bG9zZSB8fCBvcENvZGUgPT0gT3BDb2RlUGluZyB8fCBvcENvZGUgPT0gT3BDb2RlUG9uZzsgfQor
ICAgICAgICBzdGF0aWMgYm9vbCBpc1Jlc2VydmVkT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0
dXJuICFpc05vbkNvbnRyb2xPcENvZGUob3BDb2RlKSAmJiAhaXNDb250cm9sT3BDb2RlKG9wQ29k
ZSk7IH0KKworICAgICAgICBlbnVtIFBhcnNlRnJhbWVSZXN1bHQgeworICAgICAgICAgICAgRnJh
bWVPSywKKyAgICAgICAgICAgIEZyYW1lSW5jb21wbGV0ZSwKKyAgICAgICAgICAgIEZyYW1lRXJy
b3IKKyAgICAgICAgfTsKKworICAgICAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKKyAgICAgICAgICAg
IE9wQ29kZSBvcENvZGU7CisgICAgICAgICAgICBib29sIGZpbmFsOworICAgICAgICAgICAgYm9v
bCByZXNlcnZlZDE7CisgICAgICAgICAgICBib29sIHJlc2VydmVkMjsKKyAgICAgICAgICAgIGJv
b2wgcmVzZXJ2ZWQzOworICAgICAgICAgICAgYm9vbCBtYXNrZWQ7CisgICAgICAgICAgICBjb25z
dCBjaGFyKiBwYXlsb2FkOworICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRMZW5ndGg7CisgICAg
ICAgICAgICBjb25zdCBjaGFyKiBmcmFtZUVuZDsKKyAgICAgICAgfTsKKworICAgICAgICBQYXJz
ZUZyYW1lUmVzdWx0IHBhcnNlRnJhbWUoRnJhbWVEYXRhJik7IC8vIE1heSBtb2RpZnkgcGFydCBv
ZiBtX2J1ZmZlciB0byB1bm1hc2sgdGhlIGZyYW1lLgorCisgICAgICAgIGJvb2wgcHJvY2Vzc0Zy
YW1lKCk7CisgICAgICAgIGJvb2wgcHJvY2Vzc0ZyYW1lSGl4aWU3NigpOworCisgICAgICAgIGJv
b2wgc2VuZEZyYW1lKE9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgp
OworICAgICAgICBib29sIHNlbmRGcmFtZUhpeGllNzYoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpOworCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4
dDsKICAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9jbGllbnQ7CiAgICAgICAgIE93
blB0cjxXZWJTb2NrZXRIYW5kc2hha2U+IG1faGFuZHNoYWtlOwpAQCAtMTA3LDYgKzE0NiwxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVy
OyAvLyBtX2lkZW50aWZpZXIgPT0gMCBtZWFucyB0aGF0IHdlIGNvdWxkIG5vdCBvYnRhaW4gYSB2
YWxpZCBpZGVudGlmaWVyLgogCiAgICAgICAgIGJvb2wgbV91c2VIaXhpZTc2UHJvdG9jb2w7CisK
KyAgICAgICAgLy8gUHJpdmF0ZSBtZW1iZXJzIG9ubHkgZm9yIGh5YmktMTAgcHJvdG9jb2wuCisg
ICAgICAgIGJvb2wgbV9oYXNDb250aW51b3VzRnJhbWU7CisgICAgICAgIE9wQ29kZSBtX2NvbnRp
bnVvdXNGcmFtZU9wQ29kZTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IG1fY29udGludW91c0ZyYW1l
RGF0YTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101269</attachid>
            <date>2011-07-18 22:46:59 -0700</date>
            <delta_ts>2011-07-19 00:06:27 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-64522-20110719144657.patch</filename>
            <type>text/plain</type>
            <size>73191</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTExODYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTA4MjkxNzBmMjk4NmY3MThhYmRh
N2I5YWI4ZmNmODViZWY0ZDQ1Li4zN2NjNWVhOGIxYzkyYjVhNGM4ZjhkYjM0NGZjM2RlMWFiODBk
OTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDctMTggIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBJbXBsZW1lbnQgaHliaSBm
cmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBleGlzdGluZyB0ZXN0cyBzbyB0aGV5IG1hdGNoIHRoZSBuZXcgZnJhbWUgZm9ybWF0LCBhbmQg
YWRkIHRlc3RzIGZvciB0aGUgbmV3IGZyYW1lIHR5cGVzCisgICAgICAgIGFuZCBlcnJvciBjb25k
aXRpb25zIHJlbGF0ZWQgdG8gdGhlIG5ldyBmcmFtZSBmb3JtYXQuCisKKyAgICAgICAgVW5za2lw
IGh5YmkgdGVzdHMgb24gbWFjLCB3aW4gYW5kIGNocm9taXVtLiBPdGhlciBwb3J0cyAod2syLCBx
dCBhbmQgZ3RrKSBzdGlsbCBza2lwIHRoZXNlIHRlc3RzCisgICAgICAgIGJlY2F1c2UgdGhleSBk
byBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiCisgICAgICAgIHByZWZlcmVuY2Uga2V5IHZpYSBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2VzKCkgeWV0LgorCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0Zjgu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9i
cm9rZW4tdXRmOF93c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZS5odG1sOgorICAgICAgICBUaGUg
Zm9ybWF0IG9mIGEgY2xvc2UgZnJhbWUgaGFzIGJlZW4gY2hhbmdlZC4gQ3VycmVudGx5LCB3ZSBk
byBub3QgaW5jbHVkZSBhbnkgcGF5bG9hZAorICAgICAgICBpbiBhIGNsb3NlIGZyYW1lLCB0aHVz
IGl0IG11c3Qgc3RhcnQgd2l0aCAiXHg4OFx4ODAiIChzZWUgc2VjdGlvbiA0LjEgb2YgaHliaS0x
MAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMpLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlX3dzaC5weToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1m
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZy
YW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVk
LWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVu
dHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1j
b250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNr
ZWQtZnJhbWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvbWFza2VkLWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Bvbmdfd3NoLnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJp
dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weTogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1vcGNvZGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlc193c2gucHk6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5OgorICAg
ICAgICBTZW5kIHR3byB0ZXh0IGZyYW1lcyBhdCBvbmNlLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5
bG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Rvby1sb25nLXBheWxvYWRfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgIERlcml2ZSB0ZXN0IGV4cGVj
dGF0aW9ucyBvZiBoaXhpZTc2IHRlc3RzLCBiZWNhdXNlIHRoZXNlIHRlc3RzIGFyZSBsaWtlbHkg
dG8gYmVoYXZlCisgICAgICAgIHRoZSBzYW1lIHdheSBhcyBoaXhpZTc2IHRlc3RzLiBXaWxsIGJl
IGNoZWNrZWQgbGF0ZXIgd2hldGhlciB0aGV5IHJlYWxseSBkby4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0w
Ny0xOCAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkOyB1cGRhdGVkIGNocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4t
dXRmOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Jyb2tlbi11dGY4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGI5NmRkZDBhYjk5
ODA5ZmVkYTQyMzZkYzYwMTVhZTViNWE0OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IENvdWxkIG5vdCBk
ZWNvZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04LgorVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBhYm9y
dHMgdGhlIGNvbm5lY3Rpb24gd2hlbiBpdCByZWNlaXZlcyBhIHRleHQgZnJhbWUgY29udGFpbmlu
ZyBicm9rZW4gVVRGLTggZGF0YS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9w
ZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQu
d2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY0NGE2YTdl
ZTA1ZGVjNzNmMjc3Y2E5NzkzOThhMWI1ZWFjOWY1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRtbApA
QCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3
aGVuIGl0IHJlY2VpdmVzIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGJyb2tlbiBVVEYtOCBkYXRh
LiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2Jyb2tlbi11dGY4Iik7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24o
KQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOwor
ICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsg
bWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sK
KyAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2
ZW50OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0Zjhfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOF93
c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTUwYjU3NGZhZmFlMzQ2YTNiOTFlMWM4Njg2OGI4ZTI4MjU4Mjhj
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvYnJva2VuLXV0Zjhfd3NoLnB5CkBAIC0wLDAgKzEsMTEgQEAKK2Zyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJl
YW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAg
cGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGF5
bG9hZCA9ICdUaGlzIHRleHQgc2hvdWxkIGJlIGlnbm9yZWQuIFx4ZmYnICMgJ1x4ZmYnIHdpbGwg
bmV2ZXIgYXBwZWFyIGluIFVURi04IGVuY29kZWQgZGF0YS4KKyAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9oZWFkZXIoY29tbW9uLk9QQ09ERV9URVhULCBsZW4ocGF5
bG9hZCksIDEsIDAsIDAsIDAsIDApICsgcGF5bG9hZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNs
b3NlLWV4cGVjdGVkLnR4dAppbmRleCAyNjY4ZmQ5NDIzMjQ5MWY3YWZlOGQ1N2QxMTE1MjAzZWY0
ZTU5MDkzLi5iMTIwMDk0ZjE5Y2Q4MTNkY2Y2ODhmZTdiNjg3YWEyNjNhZGJkOTU0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1j
bG9zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jbGllbnQtY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsOSBAQCBXZWJT
b2NrZXQ6IFRlc3QgY2xpZW50LWluaXRpYXRlZCBjbG9zZS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogQ29ubmVjdGVkCi1SZWNlaXZlZDogY2xvc2VfZnJhbWU9J1x4ZmZceDAwJworUmVj
ZWl2ZWQ6IGNsb3NlX2ZyYW1lWzoyXT0nXHg4OFx4ODAnCiBDbG9zZWQKLVBBU1MgcmVjZWl2ZWRN
ZXNzYWdlIGlzICJjbG9zZV9mcmFtZT0nXFx4ZmZcXHgwMCciCitQQVNTIHJlY2VpdmVkTWVzc2Fn
ZSBpcyAiY2xvc2VfZnJhbWVbOjJdPSdcXHg4OFxceDgwJyIKIFBBU1MgY2xvc2VFdmVudC53YXND
bGVhbiBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNs
b3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
aWVudC1jbG9zZS5odG1sCmluZGV4IGJkYTUxNDMzMjhmMjNhNmYwN2M1YTIwNmM2MDE0YzkzMzA3
MDk2NzEuLmFjMjllN2ZjNmI1NGRiYzUyZjllZDE1OGQ5NDNjYTg5NWY3MWY3MzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNs
b3NlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9jbGllbnQtY2xvc2UuaHRtbApAQCAtMzQsNyArMzQsNyBAQCB3cy5vbmNsb3NlID0gZnVuY3Rp
b24oZXZlbnQpCiB7CiAgICAgZGVidWcoIkNsb3NlZCIpOwogICAgIGNsb3NlRXZlbnQgPSBldmVu
dDsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY2VpdmVkTWVzc2FnZSIsICJjbG9zZV9m
cmFtZT0nXFx4ZmZcXHgwMCciKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY2VpdmVk
TWVzc2FnZSIsICJjbG9zZV9mcmFtZVs6Ml09J1xceDg4XFx4ODAnIik7CiAgICAgc2hvdWxkQmVU
cnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGll
bnQtY2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9jbGllbnQtY2xvc2Vfd3NoLnB5CmluZGV4IDdlZDI4YmZmZmYwMjQ5ZjRhMGQ3YmJjYzNm
YjgzMmFiODc5YzA4MjAuLjg2OGUwNmNiNzFiNjk5OTlkOTBmYzBiMmE4Yjg4Y2FhMDU3OGYwYmQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xpZW50LWNsb3NlX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZV93c2gucHkKQEAgLTcsMTYgKzcsMTcgQEAgZGVmIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogCiBkZWYgd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgogICAgICMgV2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBzZW50
IGZyb20gdGhlIGNsaWVudC4KLSAgICBjbG9zZV9mcmFtZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJl
Y2VpdmVfYnl0ZXMoMikKKyAgICBjbG9zZV9mcmFtZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2Vp
dmVfYnl0ZXMoNikKIAotICAgICMgVGVsbCB0aGUgY2xpZW50IHdoYXQgd2UgaGF2ZSByZWNlaXZl
ZC4KLSAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnY2xvc2VfZnJhbWU9JXInICUg
Y2xvc2VfZnJhbWUpCisgICAgIyBTZW5kIG9ubHkgZmlyc3QgdHdvIGJ5dGVzIG9mIHRoZSByZWNl
aXZlZCBmcmFtZS4gVGhlIHJlbWFpbmluZyBmb3VyIGJ5dGVzIGFyZQorICAgICMgIm1hc2tpbmcg
a2V5Iiwgd2hpY2ggY2hhbmdlcyBldmVyeSB0aW1lIHRoZSB0ZXN0IHJ1bnMuCisgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2Nsb3NlX2ZyYW1lWzoyXT0lcicgJSBjbG9zZV9mcmFt
ZVs6Ml0pCiAKICAgICAjIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBBc3NlcnRp
b25FcnJvciB3aWxsIGJlIHJhaXNlZCwKICAgICAjIHdoaWNoIHdpbGwgcHJldmVudCBweXdlYnNv
Y2tldCBmcm9tIHNlbmRpbmcgYSBjbG9zZSBmcmFtZS4KICAgICAjIEluIHRoaXMgY2FzZSwgdGhl
IGNsaWVudCB3aWxsIGZhaWwgdG8gZmluaXNoIGNsb3NpbmcgaGFuZHNoYWtlLCB0aHVzCiAgICAg
IyBjbG9zZUV2ZW50Lndhc0NsZWFuIHdpbGwgYmVjb21lIGZhbHNlLgotICAgIGFzc2VydCBjbG9z
ZV9mcmFtZSA9PSAnXHhmZlx4MDAnCisgICAgYXNzZXJ0IGNsb3NlX2ZyYW1lWzoyXSA9PSAnXHg4
OFx4ODAnCiAKICAgICAjIFByZXRlbmQgd2UgaGF2ZSByZWNlaXZlZCBhIGNsb3NlIGZyYW1lIGZy
b20gdGhlIGNsaWVudC4KICAgICAjIEFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMsIHB5d2Vic29j
a2V0IHdpbGwgc2VuZCBhIGNsb3NlIGZyYW1lIGF1dG9tYXRpY2FsbHkuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29u
dHJvbC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjRjNmI5OTU5MDBkNjY2YmJjMWNlY2U5YTQ3ODU0NWIwZWMyYmEyYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJh
Z21lbnRlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMDogUmVjZWl2ZWQgZnJhZ21lbnRlZCBjb250cm9sIGZyYW1lOiBv
cGNvZGUgPSA5CitUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgYSBmcmFnbWVudGVkIGNv
bnRyb2wgZnJhbWUgYW5kIGFib3J0cyB0aGUgY29ubmVjdGlvbi4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDA2ZDkxMzQzOTI2MzBkODNiYTAwNThkOTc2MWQxMzMxMmYxODU1ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVy
IFdlYlNvY2tldCByZWplY3RzIGEgZnJhZ21lbnRlZCBjb250cm9sIGZyYW1lIGFuZCBhYm9ydHMg
dGhlIGNvbm5lY3Rpb24uIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MCk7CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwp
OwordmFyIGNsb3NlRXZlbnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1
Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2ZW50KQoreworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVk
KCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIp
Iik7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgY2xvc2VFdmVu
dCA9IGV2ZW50OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250
cm9sLWZyYW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDE2ZTc3
ZDI2YzE0MzJiZDlmYTliNzJkOThhZTNmZDdkMmZmOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRy
b2wtZnJhbWVfd3NoLnB5CkBAIC0wLDAgKzEsMTIgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgICMgRnJhZ21lbnRlZCBjb250cm9sIGZyYW1lIGlzIHByb2hp
Yml0ZWQuIFRoZSBjbGllbnQgbXVzdCBhYm9ydCB0aGUgY29ubmVjdGlvbi4KKyAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdUaGlzIG1lc3NhZ2Ug
c2hvdWxkIGJlIGlnbm9yZWQuJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORywgZmluPTApKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9m
cmFnbWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYzY3ZDlhM2MyZWY3MjM0MjRhYTVhNmY0ODUxYzllNTgwNTJlY2IxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFn
bWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorUmVjZWl2ZSBmcmFn
bWVudGVkIFdlYlNvY2tldCBmcmFtZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
b25vcGVuKCkgd2FzIGNhbGxlZC4KK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0g
IkZpcnN0IG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiU2Vj
b25kIG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiVGhpcmQg
bWVzc2FnZSIpCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBhY3R1YWxN
ZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIGlzIHRydWUKK1BBU1Mg
YWN0dWFsTWVzc2FnZXNbMF0gaXMgIkZpcnN0IG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3NhZ2Vz
WzFdIGlzICJTZWNvbmQgbWVzc2FnZSIKK1BBU1MgYWN0dWFsTWVzc2FnZXNbMl0gaXMgIlRoaXJk
IG1lc3NhZ2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwODA3
ODc3NmZlOGQ4OTg0Yzk3MTFkYjVhNGY5M2EzNTBmZjAzNzEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJh
bWVzLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiUmVjZWl2ZSBmcmFnbWVudGVkIFdlYlNvY2tldCBmcmFtZXMu
Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB1cmwg
PSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZy
YW1lcyI7Cit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKK3Zh
ciBleHBlY3RlZE1lc3NhZ2VzID0gWyJGaXJzdCBtZXNzYWdlIiwgIlNlY29uZCBtZXNzYWdlIiwg
IlRoaXJkIG1lc3NhZ2UiXTsKK3ZhciBhY3R1YWxNZXNzYWdlcyA9IFtdOworCit3cy5vbm9wZW4g
PSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7CisgICAg
d3MuY2xvc2UoKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAg
IHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICBkZWJ1Zygib25tZXNzYWdlKCkgd2FzIGNh
bGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIGFjdHVhbE1lc3Nh
Z2VzLnB1c2gobWVzc2FnZSk7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7
CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53
YXNDbGVhbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiYWN0dWFsTWVzc2FnZXMubGVuZ3RoID09PSBl
eHBlY3RlZE1lc3NhZ2VzLmxlbmd0aCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0
ZWRNZXNzYWdlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJh
Y3R1YWxNZXNzYWdlc1siICsgaSArICJdIiwgZXhwZWN0ZWRNZXNzYWdlc1tpXSk7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzX3dz
aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21l
bnRlZC1mcmFtZXNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZjNlNThlZTQ1MTNkNWVhOWY3NDdjMjNi
NWEwODBjYTE5M2JhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzX3dzaC5weQpAQCAtMCwwICsx
LDM0IEBACitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAjIHNlbmRfbWVzc2FnZSdzIHRo
aXJkIGFyZ3VtZW50IGNvcnJlc3BvbmRzIHRvICJmaW4iIGJpdDsKKyAgICAjIGl0IGlzIHNldCB0
byBUcnVlIGlmIHRoaXMgZnJhbWUgaXMgdGhlIGZpbmFsIGZyYWdtZW50IG9mIGEgbWVzc2FnZS4K
KyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRmlyc3QgJywgRmFsc2UpCisgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ21lc3NhZ2UnLCBUcnVlKQorCisgICAgIyBF
bXB0eSBmcmFnbWVudCBpcyBhbGxvd2VkLgorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsICcnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnU2Vjb25k
ICcsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBGYWxzZSkK
KyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnbWVzc2FnZScsIEZhbHNlKQorICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBUcnVlKQorCisgICAgIyBGcmFnbWVu
dCBhZ2dyZXNzaXZlbHkuCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1QnLCBG
YWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnaCcsIEZhbHNlKQorICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdpJywgRmFsc2UpCisgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ3InLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnZCcsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICcgJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ20nLCBGYWxz
ZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnZScsIEZhbHNlKQorICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdzJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ3MnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnYScsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdn
JywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2UnLCBUcnVlKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9p
bnRlcmxlYXZlZC1mcmFnbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZiYzI4MTNlM2I5NTRmMjc1Y2M4ODU5MWE4NGFhZWIxZDBiYmE5YjgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2ludGVybGVhdmVkLWZyYWdtZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFJlY2VpdmVkIG5ldyBkYXRhIGZyYW1lIGJ1dCBwcmV2
aW91cyBjb250aW51b3VzIGZyYW1lIGlzIHVuZmluaXNoZWQuCitUZXN0IHdoZXRoZXIgV2ViU29j
a2V0IHJlamVjdHMgaW50ZXJsZWF2ZWQgZnJhZ21lbnRlZCBmcmFtZXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworb25vcGVuKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53
YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhMzIwOGIyMTlhOTYwMmZiMjE4MWJiOGRlNDdhNWE1ZjlhNmRhNTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2ludGVybGVhdmVkLWZyYWdtZW50cy5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJT
b2NrZXQgcmVqZWN0cyBpbnRlcmxlYXZlZCBmcmFnbWVudGVkIGZyYW1lcy4iKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHVybCA9ICJ3czovL2xvY2Fs
aG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cyI7Cit2
YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVu
ID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsK
Kword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBl
dmVudC5kYXRhOworICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNz
YWdlID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgi
Y2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE1ZGFlY2FmMjUxNTFlMDNkMzNkYWIxNWM5Y2Y1NTQ2MGVmNjZkY2QKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2ludGVybGVhdmVkLWZyYWdtZW50c193c2gucHkKQEAgLTAsMCArMSwxMiBAQAorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IHN0cmVhbQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
KyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAg
ICAjIEEgbmV3IGZyYW1lIGlzIGFycml2ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBmcmFnbWVudGVk
IGZyYW1lIGhhcyBmaW5pc2hlZC4KKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFt
LmNyZWF0ZV90ZXh0X2ZyYW1lKCdUaGlzIG1lc3NhZ2UgJywgb3Bjb2RlPWNvbW1vbi5PUENPREVf
VEVYVCwgZmluPTApKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRl
X3RleHRfZnJhbWUoJ3Nob3VsZCBiZSBpZ25vcmVkLicsIG9wY29kZT1jb21tb24uT1BDT0RFX1RF
WFQsIGZpbj0xKSkgIyBOb3QgT1BDT0RFX0NPTlRJTlVBVElPTi4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1l
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvbG9uZy1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzAzOTVkY2Y2
MTZhM2MwMGUzZjI2OGNlNjRiN2JlOTZkOTg5NzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBS
ZWNlaXZlZCBjb250cm9sIGZyYW1lIGhhdmluZyB0b28gbG9uZyBwYXlsb2FkOiAxMjYgYnl0ZXMK
K1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBjb250cm9sIGZyYW1lcyBsb25nZXIgdGhh
biAxMjUgYnl0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25vcGVuKCkgd2Fz
IGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmct
Y29udHJvbC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZTE4NDhjMjMyNjkxMDgzMTU0MDZiNjEx
MWM0MWE0NmMwM2RiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS5odG1sCkBAIC0wLDAgKzEs
MzggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBjb250cm9sIGZyYW1lcyBsb25nZXIgdGhh
biAxMjUgYnl0ZXMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9s
b25nLWNvbnRyb2wtZnJhbWUiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwordmFyIGNs
b3NlRXZlbnQ7Cit2YXIgbWVzc2FnZTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAg
IGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0
aW9uKGV2ZW50KQoreworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNl
KCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZV93c2gucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDFmNDhhMzViOWViZDlhODJlNjkwOGQ2MjVmNGQxN2ExZDJjZDBjMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
bG9uZy1jb250cm9sLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDEyIEBACitmcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFt
CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBh
c3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgICMgQWxs
IGNvbnRyb2wgZnJhbWVzIG11c3QgaGF2ZSBhIHBheWxvYWQgbGVuZ3RoIG9mIDEyNSBieXRlcyBv
ciBsZXNzLgorICAgIG1lc3NhZ2UgPSAnWCcgKiAxMjYKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BD
T0RFX1BJTkcsIGZpbj0xKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhmN2IwMTdlZTIwNzlhYWY1MTFiMGYxYmVlMGI0YmU4ZGI3YjYxMWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL21hc2tlZC1mcmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1JlY2Vp
dmUgbWFza2VkIFdlYlNvY2tldCBmcmFtZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
Kworb25vcGVuKCkgd2FzIGNhbGxlZC4KK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdl
ID0gIkZpcnN0IG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAi
RnJhZ21lbnRlZCBtZXNzYWdlIikKK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0g
IiIpCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJFTkQiKQorUEFTUyBhY3R1
YWxNZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIGlzIHRydWUKK1BB
U1MgYWN0dWFsTWVzc2FnZXNbMF0gaXMgIkZpcnN0IG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3Nh
Z2VzWzFdIGlzICJGcmFnbWVudGVkIG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3NhZ2VzWzJdIGlz
ICIiCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmYwYzkyNDA2NGY5MTM2NzI2YTExMjUwMGIzZDQ3OTY2NTk5NWNmNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvbWFza2VkLWZyYW1lcy5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlJlY2VpdmUgbWFza2VkIFdlYlNv
Y2tldCBmcmFtZXMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9t
YXNrZWQtZnJhbWVzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2
ZW50OwordmFyIGV4cGVjdGVkTWVzc2FnZXMgPSBbIkZpcnN0IG1lc3NhZ2UiLCAiRnJhZ21lbnRl
ZCBtZXNzYWdlIiwgIiJdOwordmFyIGFjdHVhbE1lc3NhZ2VzID0gW107CisKK3dzLm9ub3BlbiA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKKyAgICB3
cy5jbG9zZSgpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAg
dmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGRlYnVnKCJvbm1lc3NhZ2UoKSB3YXMgY2Fs
bGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgaWYgKG1lc3NhZ2Ug
PT09ICJFTkQiKSB7CisgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYWN0dWFsTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKK307CisKK3dzLm9uY2xvc2UgPSBm
dW5jdGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVU
cnVlKCJhY3R1YWxNZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZE1lc3NhZ2VzLmxlbmd0aDsgKytpKQor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImFjdHVhbE1lc3NhZ2VzWyIgKyBpICsgIl0i
LCBleHBlY3RlZE1lc3NhZ2VzW2ldKTsKKyAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2Fz
Q2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFz
a2VkLWZyYW1lc193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL21hc2tlZC1mcmFtZXNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwOTk2N2FkYzUzNzhiYTgw
NDkwMTU1ZGMwZDczODEzM2ZkYmIxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXNfd3NoLnB5CkBAIC0w
LDAgKzEsMzQgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBt
c2d1dGlsCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgor
ICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAg
ICMgcHl3ZWJzb2NrZXQgZG9lcyBub3QgbWFzayBtZXNzYWdlIGJ5IGRlZmF1bHQuIFdlIG5lZWQg
dG8gYnVpbGQgYSBmcmFtZSBtYW51YWxseSB0byBtYXNrIGl0LgorICAgIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ0ZpcnN0IG1lc3NhZ2UnLCBtYXNr
PVRydWUpKQorCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4
dF9mcmFtZSgnRnJhZ21lbnRlZCAnLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhULCBmaW49MCwg
bWFzaz1UcnVlKSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90
ZXh0X2ZyYW1lKCdtZXNzYWdlJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OLCBm
aW49MSwgbWFzaz1UcnVlKSkKKworICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0u
Y3JlYXRlX3RleHRfZnJhbWUoJycsIG1hc2s9VHJ1ZSkpCisKKyAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnRU5EJykKKworICAgICMgV2FpdCBmb3IgdGhlIGNsaWVudCB0byBzdGFy
dCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAjIFRvIHJlY2VpdmUgYSBjbG9zZSBmcmFtZSwgd2Ug
bXVzdCB1c2UgYW4gaW50ZXJuYWwgbWV0aG9kIG9mIHJlcXVlc3Qud3Nfc3RyZWFtLgorICAgIG9w
Y29kZSwgcGF5bG9hZCwgZmluYWwsIHJlc2VydmVkMSwgcmVzZXJ2ZWQyLCByZXNlcnZlZDMgPSBy
ZXF1ZXN0LndzX3N0cmVhbS5fcmVjZWl2ZV9mcmFtZSgpCisgICAgYXNzZXJ0IG9wY29kZSA9PSBj
b21tb24uT1BDT0RFX0NMT1NFCisgICAgYXNzZXJ0IGZpbmFsCisgICAgYXNzZXJ0IG5vdCByZXNl
cnZlZDEKKyAgICBhc3NlcnQgbm90IHJlc2VydmVkMgorICAgIGFzc2VydCBub3QgcmVzZXJ2ZWQz
CisKKyAgICAjIFNlbmQgYSBtYXNrZWQgY2xvc2UgZnJhbWUuIENsaWVudHMgc2hvdWxkIGJlIGFi
bGUgdG8gaGFuZGxlIHRoaXMgZnJhbWUgYW5kCisgICAgIyB0aGUgV2ViU29ja2V0IG9iamVjdCBz
aG91bGQgYmUgY2xvc2VkIGNsZWFubHkuCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0
cmVhbS5jcmVhdGVfY2xvc2VfZnJhbWUoJycsIG1hc2s9VHJ1ZSkpCisKKyAgICByYWlzZSBFeGNl
cHRpb24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50cyBweXdlYnNvY2tldCBmcm9t
IHN0YXJ0aW5nIGl0cyBvd24gY2xvc2luZyBoYW5kc2hha2UuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NzRmZDFlYmE1YzUxNjZjMjkwNWE0NmRhYzAzNzhkNmM4M2Q3YmRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9wb25nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0IHdoZXRoZXIg
V2ViU29ja2V0IGNvcnJlY3RseSByZXNwb25kcyB0byBhIHBpbmcgbWVzc2FnZSBzZW50IGZyb20g
dGhlIHNlcnZlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMg
Y2FsbGVkLgorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiUEFTUyIpCitQQVNT
IG1lc3NhZ2UgaXMgIlBBU1MiCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjVhZDA0MGY4MThhOWE4YmNjZjFhN2RmNjE1MWQwMDRhNmNmNThkMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcG9uZy5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgY29ycmVjdGx5
IHJlc3BvbmRzIHRvIGEgcGluZyBtZXNzYWdlIHNlbnQgZnJvbSB0aGUgc2VydmVyLiIpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgdXJsID0gIndzOi8v
bG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZyI7Cit2YXIgd3MgPSBuZXcg
V2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBtZXNzYWdlOworCit3cy5vbm9w
ZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9
OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBtZXNzYWdlID0gZXZl
bnQuZGF0YTsKKyAgICBkZWJ1Zygib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBc
IiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWVzc2Fn
ZSIsICJQQVNTIik7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAg
Y2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVh
biIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nX3dz
aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZ193
c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjEyYWFjNWY4M2Y2MDdlMjM4OTYyODBhMTUwN2FjYjczYjkwMTU5
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcG9uZ193c2gucHkKQEAgLTAsMCArMSwxOSBAQAorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKKwor
CitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcwor
CisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbXNndXRpbC5z
ZW5kX3BpbmcocmVxdWVzdCwgJ0hlbGxvLCB3b3JsZCEnKQorCisgICAgIyBXZSBuZWVkIHRvIHVz
ZSBhbiBpbnRlcm5hbCBmdW5jdGlvbiB0byBkZXRlY3QgYSBwb25nIGZyYW1lIGZyb20gdGhlIGNs
aWVudC4KKyAgICBvcGNvZGUsIHBheWxvYWQsIGZpbmFsLCByZXNlcnZlZDEsIHJlc2VydmVkMiwg
cmVzZXJ2ZWQzID0gcmVxdWVzdC53c19zdHJlYW0uX3JlY2VpdmVfZnJhbWUoKQorICAgIGlmIG9w
Y29kZSA9PSBjb21tb24uT1BDT0RFX1BPTkcgYW5kIHBheWxvYWQgPT0gJ0hlbGxvLCB3b3JsZCEn
IGFuZCBmaW5hbCBhbmQgbm90IHJlc2VydmVkMSBhbmQgbm90IHJlc2VydmVkMiBhbmQgbm90IHJl
c2VydmVkMzoKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1BBU1MnKQor
ICAgIGVsc2U6CisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdGQUlMOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBv
cGNvZGUgPSAlciwgcGF5bG9hZCA9ICVyLCBmaW5hbCA9ICVyLCByZXNlcnZlZDEgPSAlciwgcmVz
ZXJ2ZWQyID0gJXIsIHJlc2VydmVkMyA9ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChvcGNvZGUsIHBheWxvYWQsIGZpbmFsLCByZXNlcnZlZDEsIHJlc2VydmVkMiwgcmVzZXJ2
ZWQzKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAzMDcyNmE0YWRkMGIyNTNkMDAwNWRhNjIzNjVmOWMzZTE2NjEyNTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2Vy
dmVkLWJpdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gMSwg
cmVzZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQzID0gMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE9u
ZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZlZDEgPSAwLCByZXNlcnZlZDIg
PSAxLCByZXNlcnZlZDMgPSAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogT25lIG9yIG1vcmUg
cmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMSA9IDAsIHJlc2VydmVkMiA9IDAsIHJlc2Vy
dmVkMyA9IDEKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBmcmFtZXMgd2hvc2UgcmVz
ZXJ2ZWQgYml0IGlzIG9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0JpdCAxOiBU
ZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQu
CitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK0JpdCAyOiBUZXN0IHN0YXJ0ZWQu
Citvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK0JpdCAzOiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3
YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNjYyMWZhMjFj
MjgxYWE1YjE1OTNmNWU1YzE2ZmUwODBmYmJiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbApA
QCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgZnJhbWVzIHdob3NlIHJl
c2VydmVkIGJpdCBpcyBvbi4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7CisKKy8vIGJpdE51bWJlciBtdXN0IGJlIDEsIDIsIG9y
IDMuCitmdW5jdGlvbiBkb1Rlc3QoYml0TnVtYmVyKQoreworICAgIHZhciB1cmwgPSAid3M6Ly9s
b2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzP2JpdD0iICsg
Yml0TnVtYmVyOworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKworICAgIGRlYnVn
KCJCaXQgIiArIGJpdE51bWJlciArICI6IFRlc3Qgc3RhcnRlZC4iKTsKKworICAgIHdzLm9ub3Bl
biA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVk
LiIpOworICAgIH07CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGVzdEZhaWxlZCgi
b25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIp
OworICAgIH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQg
PSBldmVudDsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOwor
ICAgICAgICBpZiAoYml0TnVtYmVyID09PSAzKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvVGVzdChiaXROdW1iZXIgKyAxKTsKKyAgICB9
OworfQorCitkb1Rlc3QoMSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gu
cHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVk
LWJpdHNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZDBkZmRjNTUxYjA2NTUxNTZhNmFlMTIwODU1NDRk
ZDNhOGZlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CkBAIC0wLDAgKzEsMjYgQEAKK2lt
cG9ydCByZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YShyZXF1ZXN0KToKKyAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1w/Yml0PShcZCspJCcsIHJlcXVl
c3Qud3NfcmVzb3VyY2UpCisgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IFF1ZXJ5IHZhbHVlIGlzIGluY29ycmVjdCBvciBt
aXNzaW5nJykKKyAgICAgICAgcmV0dXJuCisKKyAgICBiaXQgPSBpbnQobWF0Y2guZ3JvdXAoMSkp
CisgICAgbWVzc2FnZSA9ICJUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIGlnbm9yZWQuIgorICAgIGlm
IGJpdCA9PSAxOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5P
UENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAxLCAwLCAwLCAwKSArIG1lc3NhZ2UKKyAgICBl
bGlmIGJpdCA9PSAyOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1v
bi5PUENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAwLCAxLCAwLCAwKSArIG1lc3NhZ2UKKyAg
ICBlbGlmIGJpdCA9PSAzOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNv
bW1vbi5PUENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAwLCAwLCAxLCAwKSArIG1lc3NhZ2UK
KyAgICBlbHNlOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnRkFJ
TDogSW52YWxpZCBiaXQgbnVtYmVyOiAlZCcgJSBiaXQpCisgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXRlKGZyYW1lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTU1OTBjNjQ5ODc4YmM1MTBmNzdjNGQ0YTZkNTdmOGY1YTdjZDYw
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1OCBAQAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDMKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiA0CitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogNQorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDYKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiA3CitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogMTEKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAxMgorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDEzCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogMTQKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAxNQorVGVzdHMgd2hldGhlciBX
ZWJTb2NrZXQgaWdub3JlcyBmcmFtZXMgd2l0aCByZXNlcnZlZCBvcGNvZGUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworT3Bjb2RlIDM6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdh
cyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVh
biBpcyBmYWxzZQorT3Bjb2RlIDQ6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQu
CitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxz
ZQorT3Bjb2RlIDU6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3Nl
KCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2Rl
IDY6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNh
bGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDc6IFRlc3Qg
c3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BB
U1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDExOiBUZXN0IHN0YXJ0ZWQu
Citvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK09wY29kZSAxMjogVGVzdCBzdGFydGVkLgorb25vcGVu
KCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIGZhbHNlCitPcGNvZGUgMTM6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBj
YWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBp
cyBmYWxzZQorT3Bjb2RlIDE0OiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgor
b25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UK
K09wY29kZSAxNTogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2Uo
KSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNv
ZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jl
c2VydmVkLW9wY29kZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE5NWM2ODFhNDZkNjc2ZGFkMmE0ZWU3
ZjRmMDA2N2U0MjM2YmJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLmh0bWwKQEAgLTAsMCArMSw2
MSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB3aGV0aGVyIFdlYlNvY2tldCBpZ25vcmVzIGZy
YW1lcyB3aXRoIHJlc2VydmVkIG9wY29kZS4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7CisKK2Z1bmN0aW9uIGRvVGVzdChvcGNv
ZGUpCit7CisgICAgaWYgKG9wY29kZSA+PSAweDEwKSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChvcGNvZGUgPT0gMHgwIHx8IG9wY29k
ZSA9PSAweDEgfHwgb3Bjb2RlID09IDB4MiB8fCBvcGNvZGUgPT0gMHg4IHx8IG9wY29kZSA9PSAw
eDkgfHwgb3Bjb2RlID09IDB4QSkgeworICAgICAgICBkb1Rlc3Qob3Bjb2RlICsgMSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygiT3Bjb2RlICIgKyBvcGNvZGUgKyAiOiBU
ZXN0IHN0YXJ0ZWQuIik7CisKKyAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcz9vcGNvZGU9IiArIG9wY29kZTsKKyAg
ICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisKKyAgICB3cy5vbm9wZW4gPSBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKKyAgICB9
OworCisgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2
YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgp
IHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKKyAgICB9Owor
CisgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWco
Im9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7Cisg
ICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAgZG9U
ZXN0KG9wY29kZSArIDEpOworICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1vcGNvZGVzX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlc193c2gucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0
OTVjODhhOTgwMzk3MmUxZWY1MGU3MWQ3M2M5MmFhYjcxMDgyMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bj
b2Rlc193c2gucHkKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IHJlCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1w/b3Bjb2Rl
PShcZCspJCcsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAg
ICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IFF1ZXJ5IHZhbHVlIGlz
IGluY29ycmVjdCBvciBtaXNzaW5nJykKKyAgICAgICAgcmV0dXJuCisKKyAgICBvcGNvZGUgPSBp
bnQobWF0Y2guZ3JvdXAoMSkpCisgICAgcGF5bG9hZCA9ICdUaGlzIHRleHQgc2hvdWxkIGJlIGln
bm9yZWQuIChvcGNvZGUgPSAlZCknICUgb3Bjb2RlCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXRlKHN0cmVhbS5jcmVhdGVfaGVhZGVyKG9wY29kZSwgbGVuKHBheWxvYWQpLCAxLCAwLCAwLCAw
LCAwKSArIHBheWxvYWQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5CmluZGV4IGUyMjE3ZmEzZDUyYzBmZTNkOThk
NjJjNGQxODE0MjcwOWRhY2YxNzIuLjUzYjZkODEwYTAzN2JhY2E1MGM3NmZjZWNlZjA3OTE1NWMy
NGFlMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZDJfd3NoLnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5CkBAIC0xLDggKzEsMTAgQEAKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBzdHJlYW0KKworCiBkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6CiAgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCiAKIAogZGVmIHdlYl9zb2Nr
ZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKICAgICAjIHNlbmQgMiBtZXNzYWdlcyBpbiBvbmUg
cGFja2V0LgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgiXHgwMCIgKyAiZmlyc3QgbWVz
c2FnZSIgKyAiXHhmZiIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHgwMCIgKyAi
c2Vjb25kIG1lc3NhZ2UiICsgIlx4ZmYiKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShz
dHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoImZpcnN0IG1lc3NhZ2UiKSArIHN0cmVhbS5jcmVhdGVf
dGV4dF9mcmFtZSgic2Vjb25kIG1lc3NhZ2UiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25n
LXBheWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMWI2ZGM5NzA3ZjAzMWQzZWVlNTAz
NTVlM2ExYjc5NDQ3NTM0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25nLXBheWxvYWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBXZWJTb2NrZXQgZnJhbWUg
bGVuZ3RoIHRvbyBsYXJnZTogOTIyMzM3MjAzNjg1NDc3NTgwOCBieXRlcworVGVzdHMgd2hldGhl
ciBXZWJTb2NrZXQgY29ycmVjdGx5IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3aGVuIGl0IHJlY2Vp
dmVzIGEgZnJhbWUgd2l0aCB0b28gbG9uZyBwYXlsb2FkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BB
U1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzA0YmUzYTdlMmI4NmYwYTllMWY2NTFkYmE3ZGIxY2JiMDM4NDhhYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlw
dGlvbigiVGVzdHMgd2hldGhlciBXZWJTb2NrZXQgY29ycmVjdGx5IGFib3J0cyB0aGUgY29ubmVj
dGlvbiB3aGVuIGl0IHJlY2VpdmVzIGEgZnJhbWUgd2l0aCB0b28gbG9uZyBwYXlsb2FkLiIpOwor
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBuZXcg
V2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1s
b25nLXBheWxvYWQiKTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigp
Cit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7Cisg
ICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBt
ZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2ZW50ID0gZXZl
bnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmct
cGF5bG9hZF93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVjZGEzNDhhMDYxMzZkYzI5ZTUwMjc1NWY5OGVj
ODk5NmM2YjM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZF93c2gucHkKQEAgLTAsMCArMSwyNCBA
QAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHRpbWUKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBjb21tb24KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgbGVuZ3RoID0gMHg4MDAwMDAwMDAwMDAwMDAwCisKKyAgICAjIHB5d2Vic29ja2V0IHJlZnVz
ZXMgdG8gc2VuZCBhIGZyYW1lIHdpdGggdG9vIGxvbmcgcGF5bG9hZC4KKyAgICAjIFRodXMsIHdl
IG5lZWQgdG8gYnVpbGQgYSBmcmFtZSBtYW51YWxseS4KKyAgICBoZWFkZXIgPSBjaHIoMHg4MCB8
IGNvbW1vbi5PUENPREVfVEVYVCkgIyAweDgwIGlzIGZvciAiZmluIiBiaXQuCisgICAgaGVhZGVy
ICs9IGNocigxMjcpCisgICAgaGVhZGVyICs9IHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaGVhZGVyKQorCisgICAgIyBTZW5kIGRhdGEgaW5k
ZWZpbml0ZWx5IHRvIHNpbXVsYXRlIGEgcmVhbCAoYnJva2VuKSBzZXJ2ZXIgc2VuZGluZyBhIGJp
ZyBmcmFtZS4KKyAgICAjIEEgY2xpZW50IHNob3VsZCBpZ25vcmUgdGhlc2UgYnl0ZXMgYW5kIGFi
b3J0IHRoZSBjb25uZWN0aW9uLgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0ZSgnWCcgKiA0MDk2KQorICAgICAgICB0aW1lLnNsZWVwKDEpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5k
ZXggZTlkNTk2MTQ2NTExNjM5YWIwMWQ2ZjY3NTBjYTRhNDQyZGRkMDM0NC4uZjhhZWIwNjM3ZjE2
MDQ5M2RlNzkwNTEzZDg5ZjQ4NTQzOWFmNzFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNDYsNiArNDYsNyBAQCBC
VUdDUjE4NzAyIFdJTiA6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1j
b250ZW50LXR5cGVzLmh0bWwgPSBQQQogQlVHQ1IzNjUzOSBTTE9XIDogaHR0cC90ZXN0cy9taXNj
L3VuY2FjaGVhYmxlLXNjcmlwdC1yZXBlYXRlZC5odG1sID0gUEFTUwogCiBCVUdDUjMyMDE4IFNM
T1cgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2ZyYW1lLWxlbmd0aHMuaHRt
bCA9IFBBU1MKK0JVR0NSMzIwMTggU0xPVyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZnJhbWUtbGVuZ3Rocy5odG1sID0gUEFTUwogQlVHQ1I2OTUxMyBERUJVRyBTTE9XIDogaHRt
bDVsaWIvd2Via2l0LXJlc3VtZXIuaHRtbCA9IFBBU1MKIAogQlVHV0s1NTkxMyBSRUxFQVNFIFNM
T1cgOiBqcXVlcnkvZWZmZWN0cy5odG1sID0gUEFTUwpAQCAtMTA1LDYgKzEwNiw3IEBAIFdPTlRG
SVggU0tJUCA6IGh0dHAvdGVzdHMvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklY
IFNLSVAgOiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMgPSBQQVNTIFRJTUVPVVQg
RkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9ldmVudHNvdXJjZS93b3JrZXJzID0gUEFT
UyBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2hpeGllNzYvd29ya2Vycy8gPSBQQVNTIFRJTUVPVVQgRkFJTAorV09OVEZJWCBTS0lQIDogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzLyA9IFBBU1MgVElNRU9VVCBGQUlM
CiBXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1s
ID0gUEFTUyBUSU1FT1VUIEZBSUwKIAogLy8gUGFnZSBDYWNoZSAtIGJhc2VkIHRlc3RzLiBDaHJv
bWl1bSBkaXNhYmxlcyBwYWdlIGNhY2hlIGJlY2F1c2UgdGhlIFdlYktpdCBwYWdlIGNhY2hlIGtl
ZXBzIHByZXZpb3VzbHkKQEAgLTE2MSw5ICsxNjMsNiBAQCBXT05URklYIFNLSVAgOiBhbmltYXRp
b25zL2FuaW1hdGlvbi1hcGktMS5odG1sID0gRkFJTAogLy8gVW5za2lwIGFmdGVyIGltcGxlbWVu
dGluZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGVmZXJzTG9hZGluZyBhbmQgOjpnb0JhY2su
CiBCVUdXSzYwODc3IFNLSVAgOiBsb2FkZXIvbmF2aWdhdGlvbi13aGlsZS1kZWZlcnJpbmctbG9h
ZHMuaHRtbCA9IEZBSUwKIAotLy8gU2tpcHBlZCB1bnRpbCBuZXcgV2ViU29ja2V0IHByb3RvY29s
IGlzIGltcGxlbWVudGVkLgotQlVHV0s1MDA5OSBTS0lQIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS8gPSBQQVNTIEZBSUwgVElNRU9VVAotCiAvLyBDU1MzIFNlbGVjdG9yczMgdGVz
dCBzdWl0ZQogQlVHQ1I4OTQ2OCA6IGNzczMvc2VsZWN0b3JzMyA9IFBBU1MgRkFJTAogCkBAIC0x
NzI2LDYgKzE3MjUsNyBAQCBCVUdDUjMxNjIzIFdJTiA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVt
b3ZlLWNhY2hlLmh0bWwgPSBQQVNTIFRFWFQgVElNRU9VVAogCiAvLyBXZWJLaXQgcm9sbCA1Mjg1
MiAtPiA1Mjg2NwogQlVHQ1IzMjAxOCBERUJVRyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2hpeGllNzYvc2ltcGxlLXN0cmVzcy5odG1sID0gUEFTUyBURVhUIFRJTUVPVVQKK0JVR0NSMzIw
MTggREVCVUcgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NpbXBsZS1zdHJlc3Mu
aHRtbCA9IFBBU1MgVEVYVCBUSU1FT1VUCiAKIC8vIFY4J3MgaW1wbGVtZW50YXRpb24gb2YgZ2V0
T3duUHJvcGVydHlOYW1lcyBoYXMgZGlmZmVyZW50IHJlc3VsdHMgZm9yIGJ1aWx0LWluCiAvLyBm
dW5jdGlvbnMuCkBAIC0yODA1LDYgKzI4MDUsNyBAQCBCVUdDUjczMDgwIExJTlVYIERFQlVHIDog
ZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci5odG1sID0gUEFTUyBUSQog
QlVHQ1I3MzA5MSA6IGFuaW1hdGlvbnMvcGxheS1zdGF0ZS1zdXNwZW5kLmh0bWwgPSBQQVNTIFRF
WFQKIEJVR0NSNzMwOTIgV0lOIDogZmFzdC9kb20vZ2MtMTEuaHRtbCA9IFBBU1MgVEVYVAogQlVH
Q1I3MzA5NCBMSU5VWCA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvc2VuZC1h
ZnRlci1jbG9zZS1vbi11bmxvYWQuaHRtbCA9IFBBU1MgVElNRU9VVAorQlVHQ1I3MzA5NCBMSU5V
WCA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hZnRlci1jbG9zZS1vbi11
bmxvYWQuaHRtbCA9IFBBU1MgVElNRU9VVAogCiBCVUdWOF8xMTY4IDogZmFzdC9qcy9tb3ppbGxh
L2V2YWwvZXhoYXVzdGl2ZS1mdW4tbm9ybWFsY2FsbGVyLWluZGlyZWN0LXN0cmljdGNvZGUuaHRt
bCA9IFRFWFQKIEJVR1Y4XzExNjggOiBmYXN0L2pzL21vemlsbGEvZXZhbC9leGhhdXN0aXZlLWZ1
bi1zdHJpY3RjYWxsZXItaW5kaXJlY3Qtc3RyaWN0Y29kZS5odG1sID0gVEVYVApAQCAtMzY1NSw2
ICszNjU2LDcgQEAgQlVHV0s2MTY2NCBMSU5VWCA6IHN2Zy96b29tL3BhZ2UvcmVsYXRpdmUtc2l6
ZWQtZG9jdW1lbnQtc2Nyb2xsYmFycy5zdmcgPSBJTUFHRQogQlVHQ1I4NDMxNyBERUJVRyA6IHN2
Zy93aWNkL3Rlc3Qtc2NhbGFibGUtYmFja2dyb3VuZC1pbWFnZTEueGh0bWwgPSBDUkFTSAogCiBC
VUdXSzYxNzY3IFdJTiBERUJVRyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
Y2xpZW50LWNsb3NlLmh0bWwgPSBQQVNTIFRFWFQKK0JVR1dLNjE3NjcgV0lOIERFQlVHIDogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xvc2UuaHRtbCA9IFBBU1MgVEVY
VAogCiBCVUdXSzU5NzgyIFdJTiBMSU5VWCBERUJVRyA6IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC1kb20tZHgtYXR0ci5odG1sID0gVElNRU9VVAogQlVHV0s1OTc4
MiBXSU4gTElOVVggREVCVUcgOiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQtZG9tLWR5LWF0dHIuaHRtbCA9IFRJTUVPVVQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
aW5kZXggODgyNWQxMWRiZGJhMTM5OGMxYjJiMTUxOWE0NWUzMzljNmM2ZjI4OS4uYzQ5NjY2Yzhm
NzU5YzEwMmVjMDc3MzM3YjA4ZTg0MjQ1MzQ5MjE3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBw
ZWQKQEAgLTM4Niw2ICszODYsMyBAQCBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC1v
dmVyZmxvdy1zY3JvbGxlZC5odG1sCiBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC1v
dmVyZmxvdy5odG1sCiBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC5odG1sCiBjb21w
b3NpdGluZy9ydGwvcnRsLWlmcmFtZS1yZWxhdGl2ZS5odG1sCi0KLSMgU2tpcHBlZCB1bnRpbCBu
ZXcgV2ViU29ja2V0IHByb3RvY29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9i
LzUwMDk5Ci1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAppbmRleCA1ODFlM2E1ZDI2NzIyYjY4MzE5OWE2NDlmMzc4Mzc1MGJiZGI0ZTU1Li44
NGM3Y2NmMTA3OGZjOTE2OWY3OWJjMjg4YTAyZDM2N2U1NDQ1NGU3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZApAQCAtMTM0Niw4ICsxMzQ2LDUgQEAgZmFzdC93b3JrZXJzL3dvcmtlci1jcmFz
aC13aXRoLWludmFsaWQtbG9jYXRpb24uaHRtbAogIyBOZWVkIHRvIGltcGxlbWVudCBnZXRGb3Jt
VmFsdWUoKS4KIHBsdWdpbnMvZm9ybS12YWx1ZS5odG1sCiAKLSMgU2tpcHBlZCB1bnRpbCBuZXcg
V2ViU29ja2V0IHByb3RvY29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzUw
MDk5Ci1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLwotCiAjIE5lZWRzIGdlbmVyYXRl
ZCByZXN1bHRzCiBjc3MzL3NlbGVjdG9yczMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzIwNTQ3YjVlNDkzM2Qy
Y2Y5NmVjZDliMTNiYzU0OGU5YTNiZDE5Li45NmQ2OTcyYzg3MGZiMjM0MTI1MDUzNzFlMDlkZWZm
OTMwMGE2ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDctMTggIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBJbXBs
ZW1lbnQgaHliaSBmcmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCBXZWJTb2NrZXQgZnJhbWluZyBwcm90b2NvbCB3aGljaCBpcyBt
YWlubHkgZGVzY3JpYmVkIGluCisgICAgICAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9k
cmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMTAjc2VjdGlvbi00PiBhbmQKKyAg
ICAgICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS10aGV3ZWJz
b2NrZXRwcm90b2NvbC0xMCNzZWN0aW9uLTY+LgorCisgICAgICAgIEh5YmkgcHJvdG9jb2wgaW50
cm9kdWNlcyBhIG5ldyBmcmFtZSBmb3JtYXQgd2hpY2ggaXMgZHJhc3RpY2FsbHkgZGlmZmVyZW50
IGZyb20KKyAgICAgICAgdGhlIG9sZCBvbmUuIE5vdGFibGUgZGlmZmVyZW5jZXMgYXJlOgorICAg
ICAgICAtIEJpbmFyeSBkYXRhIHN1cHBvcnQuCisgICAgICAgIC0gRnJhZ21lbnRhdGlvbiBzdXBw
b3J0OiBhIHNpbmdsZSBtZXNzYWdlIGNhbiBiZSBmcmFnbWVudGVkIHRvIG11bHRpcGxlIGZyYW1l
cy4KKyAgICAgICAgLSBQaW5nLXBvbmcgc3VwcG9ydC4KKyAgICAgICAgLSBNYXNraW5nOiBmcmFt
ZSBjb250ZW50IG9mIGEgY2xpZW50IG11c3QgYmUgbWFza2VkIHRvIHByZXZlbnQgY3Jvc3MtcHJv
dG9jb2wgYXR0YWNrcy4KKworICAgICAgICBUaGlzIHBhdGNoIGNvdmVycyB0aGUgZm9sbG93aW5n
IGZlYXR1cmVzOgorICAgICAgICAtIFNlbmQgYSBwb25nIGZyYW1lIHdoZW4gYSBwaW5nIGZyYW1l
IGlzIHJlY2VpdmVkLgorICAgICAgICAtIFJlY2VpdmUgZnJhZ21lbnRlZCBmcmFtZXMuCisgICAg
ICAgIC0gUmVjZWl2ZSBtYXNrZWQgZnJhbWVzLiAoU2VydmVycyBkbyBub3QgaGF2ZSB0byBtYXNr
IGZyYW1lcywgYnV0IHRoZXkgbWF5IGlmIHRoZXkgd2lzaC4pCisKKyAgICAgICAgVGhlIGZvbGxv
d2luZyBmZWF0dXJlcyBhcmUgTk9UIGltcGxlbWVudGVkIHlldDoKKyAgICAgICAgLSBTZW5kIG9y
IHJlY2VpdmUgYmluYXJ5IG1lc3NhZ2VzLgorICAgICAgICAtIFNlbmQgYSBwaW5nIG1lc3NhZ2Uu
CisgICAgICAgIC0gU2VuZCBmcmFnbWVudGVkIGZyYW1lcy4gKEl0IGlzIHVuY2xlYXIgd2hldGhl
ciB0aGlzIGlzIG5lY2Vzc2FyeS4pCisgICAgICAgIC0gUmV3cml0ZSB0aGUgZnJhbWUgY29udGVu
dCBieSBXZWJTb2NrZXQgcHJvdG9jb2wgZXh0ZW5zaW9ucyAobGlrZSBmcmFtZSBjb21wcmVzc2lv
bikuCisKKyAgICAgICAgTmV3IHRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2Jyb2tlbi11dGY4Lmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS5odG1sCisgICAgICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1lcy5o
dG1sCisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9p
bnRlcmxlYXZlZC1mcmFnbWVudHMuaHRtbAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMuaHRt
bAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9u
Zy5odG1sCisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9yZXNlcnZlZC1iaXRzLmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29kZXMuaHRtbAorICAgICAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sCisK
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgVGhlIG9yaWdpbmFsIGNvbnRl
bnQgb2Ygc2VuZCgpIHdhcyBtb3ZlZCB0byBhIHByaXZhdGUgbWV0aG9kIHNlbmRGcmFtZUhpeGll
NzYoKS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmZhaWwpOgorICAgICAg
ICBTdG9wIGhhbmRsaW5nIGluY29taW5nIGRhdGEgYWZ0ZXIgdGhlIFdlYlNvY2tldCBjb25uZWN0
aW9uIGlzIGZhaWxlZC4KKyAgICAgICAgSXQgd2FzIHVuY2xlYXIgdG8gbWUgd2hldGhlciB3ZSBz
aG91bGQgZG8gdGhlIHNhbWUgdGhpbmcgZm9yIGhpeGllLTc2IGNvbm5lY3Rpb247CisgICAgICAg
IGZvciBub3csIEkga2VwdCB0aGUgb3JpZ2luYWwgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OmNsb3NpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6c2VuZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OnNlbmRGcmFtZUhpeGllNzYpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6aXNOb25Db250cm9sT3BD
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmlzQ29udHJvbE9wQ29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjppc1Jlc2VydmVkT3BDb2Rl
KToKKwogMjAxMS0wNy0xOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBXZWIgSW5zcGVjdG9yOiBwcm92aWRlIHVuaXF1ZSBp
ZGVudGlmaWVycyBmb3IgbG9hZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNmZiMzFhZjAzYWZjYzFjZWEwMTRlZWE3YTM4YzExZmVj
N2YzNmEyOS4uMzgyMzczMWQ2NTljYzQ3MWYzN2ZiYzFkOWI0ZjQwYmVjNzMwOTBjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00OCwx
NyArNDgsMzkgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNv
bnN0IGRvdWJsZSBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1lID0gMiAqIDYwLjA7CiAKKy8vIENv
bnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCitjb25zdCB1bnNpZ25lZCBjaGFyIGZp
bmFsQml0ID0gMHg4MDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQxQml0ID0gMHg0MDsK
K2NvbnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0IHVuc2lnbmVk
IGNoYXIgcmVzZXJ2ZWQzQml0ID0gMHgxMDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgb3BDb2RlTWFz
ayA9IDB4RjsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgbWFza0JpdCA9IDB4ODA7Citjb25zdCB1bnNp
Z25lZCBjaGFyIHBheWxvYWRMZW5ndGhNYXNrID0gMHg3RjsKK2NvbnN0IHNpemVfdCBtYXhQYXls
b2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjU7Citjb25zdCBzaXplX3Qg
cGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNjsKK2NvbnN0
IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAx
Mjc7Citjb25zdCBzaXplX3QgbWFza2luZ0tleVdpZHRoSW5CeXRlcyA9IDQ7CisKK2NvbnN0IFdl
YlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVDb250aW51YXRp
b24gPSAweDA7Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5l
bDo6T3BDb2RlVGV4dCA9IDB4MTsKK2NvbnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJT
b2NrZXRDaGFubmVsOjpPcENvZGVCaW5hcnkgPSAweDI7Citjb25zdCBXZWJTb2NrZXRDaGFubmVs
OjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlQ2xvc2UgPSAweDg7Citjb25zdCBXZWJT
b2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlUGluZyA9IDB4OTsK
K2NvbnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVQ
b25nID0gMHhBOworCiBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC03NCw2ICs5Niw3IEBAIFdlYlNv
Y2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgV2ViU29ja2V0Q2hhCiAgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KDApCiAg
ICAgLCBtX2lkZW50aWZpZXIoMCkKICAgICAsIG1fdXNlSGl4aWU3NlByb3RvY29sKHRydWUpCisg
ICAgLCBtX2hhc0NvbnRpbnVvdXNGcmFtZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0
LT5pc0RvY3VtZW50KCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4obV9jb250ZXh0KTsKQEAgLTEwMiwxNyArMTI1LDEzIEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCgpCiAgICAgbV9oYW5kbGUgPSBTb2NrZXRTdHJlYW1IYW5kbGU6OmNy
ZWF0ZShtX2hhbmRzaGFrZS0+dXJsKCksIHRoaXMpOwogfQogCi1ib29sIFdlYlNvY2tldENoYW5u
ZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBzZW5kICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVCht
X2hhbmRsZSk7Ci0gICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1
ZjsKLSAgICBidWYuYXBwZW5kKCdcMCcpOyAgLy8gZnJhbWUgdHlwZQotICAgIENTdHJpbmcgdXRm
OCA9IG1zZy51dGY4KCk7Ci0gICAgYnVmLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7Ci0gICAgYnVmLmFwcGVuZCgnXHhmZicpOyAgLy8gZnJhbWUgZW5kCi0gICAgcmV0dXJuIG1f
aGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgp
KTsKKyAgICBDU3RyaW5nIHV0ZjggPSBtZXNzYWdlLnV0ZjgoKTsKKyAgICBpZiAobV91c2VIaXhp
ZTc2UHJvdG9jb2wpCisgICAgICAgIHJldHVybiBzZW5kRnJhbWVIaXhpZTc2KHV0ZjguZGF0YSgp
LCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gc2VuZEZyYW1lKE9wQ29kZVRleHQsIHV0Zjgu
ZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFu
bmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CkBAIC0xNDAsNiArMTU5LDE2IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQoIW1f
c3VzcGVuZGVkKTsKICAgICBpZiAobV9jb250ZXh0KQogICAgICAgICBtX2NvbnRleHQtPmFkZE1l
c3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IHJlYXNvbiwgMCwgbV9oYW5kc2hha2UtPmNsaWVudE9yaWdpbigpLCAwKTsKKyAgICBpZiAoIW1f
dXNlSGl4aWU3NlByb3RvY29sKSB7CisgICAgICAgIC8vIEh5YmktMTAgc3BlY2lmaWNhdGlvbiBl
eHBsaWNpdGx5IHN0YXRlcyB3ZSBtdXN0IG5vdCBjb250aW51ZSB0byBoYW5kbGUgaW5jb21pbmcg
ZGF0YQorICAgICAgICAvLyBvbmNlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBmYWlsZWQg
KHNlY3Rpb24gNy4xLjcpLgorICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRvIHRoaXMgaW4g
aGl4aWUtNzYgdG9vPworICAgICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVl
OworICAgICAgICBpZiAobV9idWZmZXIpCisgICAgICAgICAgICBza2lwQnVmZmVyKG1fYnVmZmVy
U2l6ZSk7IC8vIFNhdmUgbWVtb3J5LgorICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZh
bHNlOworICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuY2xlYXIoKTsKKyAgICB9CiAgICAg
aWYgKG1faGFuZGxlICYmICFtX2Nsb3NlZCkKICAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3Qo
KTsgLy8gV2lsbCBjYWxsIGRpZENsb3NlKCkuCiB9CkBAIC0zNDUsNiArMzc0LDI1MiBAQCBib29s
IFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQogICAgIGlmIChtX2hhbmRzaGFrZS0+
bW9kZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpCisgICAgICAgIHJldHVybiBw
cm9jZXNzRnJhbWVIaXhpZTc2KCk7CisKKyAgICByZXR1cm4gcHJvY2Vzc0ZyYW1lKCk7Cit9CisK
K3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRD
aGFubmVsPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1f
cmVzdW1lVGltZXIpOworCisgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QodGhp
cyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1v
dmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBtX2Ns
aWVudCAmJiBtX2J1ZmZlcikKKyAgICAgICAgaWYgKCFwcm9jZXNzQnVmZmVyKCkpCisgICAgICAg
ICAgICBicmVhazsKKyAgICBpZiAoIW1fc3VzcGVuZGVkICYmIG1fY2xpZW50ICYmIG1fY2xvc2Vk
ICYmIG1faGFuZGxlKQorICAgICAgICBkaWRDbG9zZShtX2hhbmRsZS5nZXQoKSk7Cit9CisKK3Zv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKK3sKKyAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xv
c2luZywgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOworICAgIGlmIChtX2Nsb3NpbmcpCisg
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9oYW5kbGUpOworICAgIGJvb2wgc2VudFN1Y2Nl
c3NmdWxseTsKKyAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpIHsKKyAgICAgICAgVmVjdG9y
PGNoYXI+IGJ1ZjsKKyAgICAgICAgYnVmLmFwcGVuZCgnXHhmZicpOworICAgICAgICBidWYuYXBw
ZW5kKCdcMCcpOworICAgICAgICBzZW50U3VjY2Vzc2Z1bGx5ID0gbV9oYW5kbGUtPnNlbmQoYnVm
LmRhdGEoKSwgYnVmLnNpemUoKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbnRTdWNjZXNzZnVs
bHkgPSBzZW5kRnJhbWUoT3BDb2RlQ2xvc2UsICIiLCAwKTsgLy8gRklYTUU6IFNlbmQgc3RhdHVz
IGNvZGUgYW5kIHJlYXNvbiBtZXNzYWdlLgorCisgICAgaWYgKCFzZW50U3VjY2Vzc2Z1bGx5KSB7
CisgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgbV9jbG9zaW5nID0gdHJ1ZTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCit7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgdGltZXIiLCB0
aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCAmbV9jbG9zaW5nVGltZXIgPT0gdGltZXIp
OworICAgIGlmIChtX2hhbmRsZSkKKyAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsKK30K
KworV2ViU29ja2V0Q2hhbm5lbDo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpw
YXJzZUZyYW1lKEZyYW1lRGF0YSYgZnJhbWUpCit7CisgICAgY29uc3QgY2hhciogcCA9IG1fYnVm
ZmVyOworICAgIGNvbnN0IGNoYXIqIGJ1ZmZlckVuZCA9IG1fYnVmZmVyICsgbV9idWZmZXJTaXpl
OworCisgICAgaWYgKG1fYnVmZmVyU2l6ZSA8IDIpCisgICAgICAgIHJldHVybiBGcmFtZUluY29t
cGxldGU7CisKKyAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpwKys7CisgICAgdW5zaWdu
ZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKKworICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5dGUg
JiBmaW5hbEJpdDsKKyAgICBib29sIHJlc2VydmVkMSA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkMUJp
dDsKKyAgICBib29sIHJlc2VydmVkMiA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkMkJpdDsKKyAgICBi
b29sIHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0JpdDsKKyAgICBPcENvZGUgb3BD
b2RlID0gZmlyc3RCeXRlICYgb3BDb2RlTWFzazsKKworICAgIGJvb2wgbWFza2VkID0gc2Vjb25k
Qnl0ZSAmIG1hc2tCaXQ7CisgICAgdWludDY0X3QgcGF5bG9hZExlbmd0aDY0ID0gc2Vjb25kQnl0
ZSAmIHBheWxvYWRMZW5ndGhNYXNrOworICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBtYXhQYXls
b2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpIHsKKyAgICAgICAgaW50IGV4dGVu
ZGVkUGF5bG9hZExlbmd0aFNpemU7CisgICAgICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPT0gcGF5
bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCkKKyAgICAgICAgICAgIGV4
dGVuZGVkUGF5bG9hZExlbmd0aFNpemUgPSAyOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IEFTU0VSVChwYXlsb2FkTGVuZ3RoNjQgPT0gcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRl
bmRlZExlbmd0aEZpZWxkKTsKKyAgICAgICAgICAgIGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUg
PSA4OworICAgICAgICB9CisgICAgICAgIGlmIChidWZmZXJFbmQgLSBwIDwgZXh0ZW5kZWRQYXls
b2FkTGVuZ3RoU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CisgICAg
ICAgIHBheWxvYWRMZW5ndGg2NCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0
ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZTsgKytpKSB7CisgICAgICAgICAgICBwYXlsb2FkTGVuZ3Ro
NjQgPDw9IDg7CisgICAgICAgICAgICBwYXlsb2FkTGVuZ3RoNjQgfD0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oKnArKyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
dWludDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IFVJTlQ2NF9DKDB4N0ZGRkZGRkZGRkZGRkZGRik7
CisgICAgc2l6ZV90IG1hc2tpbmdLZXlMZW5ndGggPSBtYXNrZWQgPyBtYXNraW5nS2V5V2lkdGhJ
bkJ5dGVzIDogMDsKKyAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aCB8
fCBwYXlsb2FkTGVuZ3RoNjQgKyBtYXNraW5nS2V5TGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSkgeworICAgICAgICBmYWlsKCJXZWJTb2NrZXQgZnJhbWUgbGVuZ3Ro
IHRvbyBsYXJnZTogIiArIFN0cmluZzo6bnVtYmVyKHBheWxvYWRMZW5ndGg2NCkgKyAiIGJ5dGVz
Iik7CisgICAgICAgIHJldHVybiBGcmFtZUVycm9yOworICAgIH0KKyAgICBzaXplX3QgcGF5bG9h
ZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ocGF5bG9hZExlbmd0aDY0KTsKKworICAgIGlm
IChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckVuZCAtIHApIDwgbWFza2luZ0tleUxlbmd0aCAr
IHBheWxvYWRMZW5ndGgpCisgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CisKKyAgICBp
ZiAobWFza2VkKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIG1hc2tpbmdLZXkgPSBwOworICAgICAg
ICBjaGFyKiBwYXlsb2FkID0gY29uc3RfY2FzdDxjaGFyKj4ocCArIG1hc2tpbmdLZXlXaWR0aElu
Qnl0ZXMpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBheWxvYWRMZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIHBheWxvYWRbaV0gXj0gbWFza2luZ0tleVtpICUgbWFza2luZ0tleVdp
ZHRoSW5CeXRlc107IC8vIFVubWFzayB0aGUgcGF5bG9hZC4KKyAgICB9CisKKyAgICBmcmFtZS5v
cENvZGUgPSBvcENvZGU7CisgICAgZnJhbWUuZmluYWwgPSBmaW5hbDsKKyAgICBmcmFtZS5yZXNl
cnZlZDEgPSByZXNlcnZlZDE7CisgICAgZnJhbWUucmVzZXJ2ZWQyID0gcmVzZXJ2ZWQyOworICAg
IGZyYW1lLnJlc2VydmVkMyA9IHJlc2VydmVkMzsKKyAgICBmcmFtZS5tYXNrZWQgPSBtYXNrZWQ7
CisgICAgZnJhbWUucGF5bG9hZCA9IHAgKyBtYXNraW5nS2V5TGVuZ3RoOworICAgIGZyYW1lLnBh
eWxvYWRMZW5ndGggPSBwYXlsb2FkTGVuZ3RoOworICAgIGZyYW1lLmZyYW1lRW5kID0gcCArIG1h
c2tpbmdLZXlMZW5ndGggKyBwYXlsb2FkTGVuZ3RoOworICAgIHJldHVybiBGcmFtZU9LOworfQor
Citib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCit7CisgICAgQVNTRVJUKG1f
YnVmZmVyKTsKKworICAgIEZyYW1lRGF0YSBmcmFtZTsKKyAgICBpZiAocGFyc2VGcmFtZShmcmFt
ZSkgIT0gRnJhbWVPSykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVmFsaWRhdGUg
dGhlIGZyYW1lIGRhdGEuCisgICAgaWYgKGlzUmVzZXJ2ZWRPcENvZGUoZnJhbWUub3BDb2RlKSkg
eworICAgICAgICBmYWlsKCJVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAiICsgU3RyaW5nOjpu
dW1iZXIoZnJhbWUub3BDb2RlKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoZnJhbWUucmVzZXJ2ZWQxIHx8IGZyYW1lLnJlc2VydmVkMiB8fCBmcmFtZS5yZXNlcnZl
ZDMpIHsKKyAgICAgICAgZmFpbCgiT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJl
c2VydmVkMSA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5yZXNlcnZlZDEpICsgIiwgcmVzZXJ2
ZWQyID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLnJlc2VydmVkMikgKyAiLCByZXNlcnZlZDMg
PSAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUucmVzZXJ2ZWQzKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICAvLyBBbGwgY29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgZnJh
Z21lbnRlZC4KKyAgICBpZiAoaXNDb250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgJiYgIWZyYW1l
LmZpbmFsKSB7CisgICAgICAgIGZhaWwoIlJlY2VpdmVkIGZyYWdtZW50ZWQgY29udHJvbCBmcmFt
ZTogb3Bjb2RlID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQWxsIGNvbnRyb2wgZnJhbWVzIG11c3QgaGF2
ZSBhIHBheWxvYWQgb2YgMTI1IGJ5dGVzIG9yIGxlc3MsIHdoaWNoIG1lYW5zIHRoZSBmcmFtZSBt
dXN0IG5vdCBjb250YWluCisgICAgLy8gdGhlICJleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCIgZmll
bGQuCisgICAgaWYgKGlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmIGZyYW1lLnBheWxv
YWRMZW5ndGggPiBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpIHsK
KyAgICAgICAgZmFpbCgiUmVjZWl2ZWQgY29udHJvbCBmcmFtZSBoYXZpbmcgdG9vIGxvbmcgcGF5
bG9hZDogIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLnBheWxvYWRMZW5ndGgpICsgIiBieXRlcyIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQSBuZXcgZGF0YSBmcmFt
ZSBpcyByZWNlaXZlZCBiZWZvcmUgdGhlIHByZXZpb3VzIGNvbnRpbnVvdXMgZnJhbWUgZmluaXNo
ZXMuCisgICAgLy8gTm90ZSB0aGF0IGNvbnRyb2wgZnJhbWVzIGFyZSBhbGxvd2VkIHRvIGNvbWUg
aW4gdGhlIG1pZGRsZSBvZiBjb250aW51b3VzIGZyYW1lcy4KKyAgICBpZiAobV9oYXNDb250aW51
b3VzRnJhbWUgJiYgZnJhbWUub3BDb2RlICE9IE9wQ29kZUNvbnRpbnVhdGlvbiAmJiAhaXNDb250
cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKKyAgICAgICAgZmFpbCgiUmVjZWl2ZWQgbmV3IGRh
dGEgZnJhbWUgYnV0IHByZXZpb3VzIGNvbnRpbnVvdXMgZnJhbWUgaXMgdW5maW5pc2hlZC4iKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAoZnJhbWUub3BDb2Rl
KSB7CisgICAgY2FzZSBPcENvZGVDb250aW51YXRpb246CisgICAgICAgIC8vIFRocm93IGF3YXkg
Y29udGVudCBvZiBhIGJpbmFyeSBtZXNzYWdlIGJlY2F1c2UgYmluYXJ5IG1lc3NhZ2VzIGFyZSBu
b3Qgc3VwcG9ydGVkIHlldC4KKyAgICAgICAgaWYgKG1fY29udGludW91c0ZyYW1lT3BDb2RlID09
IE9wQ29kZVRleHQpCisgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuYXBwZW5kKGZy
YW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOworICAgICAgICBza2lwQnVmZmVyKGZy
YW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOworICAgICAgICBpZiAoZnJhbWUuZmluYWwpIHsKKyAg
ICAgICAgICAgIC8vIG9ubWVzc2FnZSBoYW5kbGVyIG1heSBldmVudHVhbGx5IGNhbGwgdGhlIG90
aGVyIG1ldGhvZHMgb2YgdGhpcyBjaGFubmVsLAorICAgICAgICAgICAgLy8gc28gd2Ugc2hvdWxk
IHByZXRlbmQgdGhhdCB3ZSBoYXZlIGZpbmlzaGVkIHRvIHJlYWQgdGhpcyBmcmFtZSBhbmQKKyAg
ICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBtZW1iZXIgdmFyaWFibGVzIGFyZSBpbiBh
IGNvbnNpc3RlbnQgc3RhdGUgYmVmb3JlCisgICAgICAgICAgICAvLyB0aGUgaGFuZGxlciBpcyBp
bnZva2VkLgorICAgICAgICAgICAgLy8gVmVjdG9yPGNoYXI+Ojpzd2FwKCkgaXMgdXNlZCBoZXJl
IHRvIGNsZWFyIG1fY29udGludW91c0ZyYW1lRGF0YS4KKyAgICAgICAgICAgIFZlY3RvcjxjaGFy
PiBjb250aW51b3VzRnJhbWVEYXRhOworICAgICAgICAgICAgbV9jb250aW51b3VzRnJhbWVEYXRh
LnN3YXAoY29udGludW91c0ZyYW1lRGF0YSk7CisgICAgICAgICAgICBtX2hhc0NvbnRpbnVvdXNG
cmFtZSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKG1fY29udGludW91c0ZyYW1lT3BDb2RlID09
IE9wQ29kZVRleHQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6
ZnJvbVVURjgoY29udGludW91c0ZyYW1lRGF0YS5kYXRhKCksIGNvbnRpbnVvdXNGcmFtZURhdGEu
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pc051bGwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZmFpbCgiQ291bGQgbm90IGRlY29kZSBhIHRleHQgZnJhbWUgYXMgVVRGLTgu
Iik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1fY29u
dGludW91c0ZyYW1lT3BDb2RlID09IE9wQ29kZUJpbmFyeSkgeworICAgICAgICAgICAgICAgIEFT
U0VSVChtX2NvbnRpbnVvdXNGcmFtZURhdGEuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgICAgICBm
YWlsKCJSZWNlaXZlZCBhIGJpbmFyeSBmcmFtZSB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIHlldC4i
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
T3BDb2RlVGV4dDoKKyAgICAgICAgaWYgKGZyYW1lLmZpbmFsKSB7CisgICAgICAgICAgICBTdHJp
bmcgbWVzc2FnZSA9IFN0cmluZzo6ZnJvbVVURjgoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9h
ZExlbmd0aCk7CisgICAgICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZm
ZXIpOworICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAg
ZmFpbCgiQ291bGQgbm90IGRlY29kZSBhIHRleHQgZnJhbWUgYXMgVVRGLTguIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1l
c3NhZ2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9oYXNDb250aW51b3VzRnJh
bWUgPSB0cnVlOworICAgICAgICAgICAgbV9jb250aW51b3VzRnJhbWVPcENvZGUgPSBPcENvZGVU
ZXh0OworICAgICAgICAgICAgQVNTRVJUKG1fY29udGludW91c0ZyYW1lRGF0YS5pc0VtcHR5KCkp
OworICAgICAgICAgICAgbV9jb250aW51b3VzRnJhbWVEYXRhLmFwcGVuZChmcmFtZS5wYXlsb2Fk
LCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKKyAgICAgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJh
bWVFbmQgLSBtX2J1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IE9wQ29kZUJpbmFyeToKKyAgICAgICAgaWYgKGZyYW1lLmZpbmFsKQorICAgICAgICAgICAgZmFp
bCgiUmVjZWl2ZWQgYSBiaW5hcnkgZnJhbWUgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCB5ZXQuIik7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSB0cnVl
OworICAgICAgICAgICAgbV9jb250aW51b3VzRnJhbWVPcENvZGUgPSBPcENvZGVCaW5hcnk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9jb250aW51b3VzRnJhbWVEYXRhLmlzRW1wdHkoKSk7CisgICAg
ICAgICAgICAvLyBEbyBub3Qgc3RvcmUgZGF0YSBvZiBhIGJpbmFyeSBtZXNzYWdlIHRvIG1fY29u
dGludW91c0ZyYW1lRGF0YSB0byBzYXZlIG1lbW9yeS4KKyAgICAgICAgICAgIHNraXBCdWZmZXIo
ZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIE9wQ29kZUNsb3NlOgorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHBheWxvYWQu
CisgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CisgICAgICAg
IG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKKyAgICAgICAgc3RhcnRDbG9zaW5n
SGFuZHNoYWtlKCk7CisgICAgICAgIGlmIChtX2Nsb3NpbmcpCisgICAgICAgICAgICBtX2hhbmRs
ZS0+Y2xvc2UoKTsgLy8gQ2xvc2UgYWZ0ZXIgc2VuZGluZyBhIGNsb3NlIGZyYW1lLgorICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgT3BDb2RlUGluZzogeworICAgICAgICBib29sIHJlc3VsdCA9
IHNlbmRGcmFtZShPcENvZGVQb25nLCBmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3Ro
KTsKKyAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKKyAgICAg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBhIHBvbmcg
ZnJhbWUuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgT3BDb2RlUG9uZzoK
KyAgICAgICAgLy8gQSBzZXJ2ZXIgbWF5IHNlbmQgYSBwb25nIGluIHJlc3BvbnNlIHRvIG91ciBw
aW5nLCBvciBhbiB1bnNvbGljaXRlZCBwb25nIHdoaWNoIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGgK
KyAgICAgICAgLy8gYW55IHNwZWNpZmljIHBpbmcuIEVpdGhlciB3YXksIHRoZXJlJ3Mgbm90aGlu
ZyB0byBkbyBvbiByZWNlaXB0IG9mIHBvbmcuCisgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJh
bWVFbmQgLSBtX2J1ZmZlcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJhbWVF
bmQgLSBtX2J1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBtX2J1
ZmZlcjsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KCkK
K3sKICAgICBjb25zdCBjaGFyKiBuZXh0RnJhbWUgPSBtX2J1ZmZlcjsKICAgICBjb25zdCBjaGFy
KiBwID0gbV9idWZmZXI7CiAgICAgY29uc3QgY2hhciogZW5kID0gcCArIG1fYnVmZmVyU2l6ZTsK
QEAgLTQyNyw0MiArNzAyLDU2IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZl
cigpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3Vt
ZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQorYm9vbCBXZWJTb2Nr
ZXRDaGFubmVsOjpzZW5kRnJhbWUoT3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1f
cmVzdW1lVGltZXIpOworICAgIEFTU0VSVChtX2hhbmRsZSk7CisgICAgQVNTRVJUKCFtX3N1c3Bl
bmRlZCk7CiAKLSAgICBSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdCh0aGlzKTsgLy8g
VGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRo
ZSBsYXN0IHJlZmVyZW5jZS4KLSAgICB3aGlsZSAoIW1fc3VzcGVuZGVkICYmIG1fY2xpZW50ICYm
IG1fYnVmZmVyKQotICAgICAgICBpZiAoIXByb2Nlc3NCdWZmZXIoKSkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgIGlmICghbV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9jbG9zZWQgJiYgbV9o
YW5kbGUpCi0gICAgICAgIGRpZENsb3NlKG1faGFuZGxlLmdldCgpKTsKKyAgICBWZWN0b3I8Y2hh
cj4gZnJhbWU7CisgICAgQVNTRVJUKCEob3BDb2RlICYgfm9wQ29kZU1hc2spKTsgLy8gQ2hlY2tz
IHdoZXRoZXIgIm9wQ29kZSIgZml0cyBpbiB0aGUgcmFuZ2Ugb2Ygb3BDb2Rlcy4KKyAgICBmcmFt
ZS5hcHBlbmQoZmluYWxCaXQgfCBvcENvZGUpOworICAgIGlmIChkYXRhTGVuZ3RoIDw9IG1heFBh
eWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkKKyAgICAgICAgZnJhbWUuYXBw
ZW5kKG1hc2tCaXQgfCBkYXRhTGVuZ3RoKTsKKyAgICBlbHNlIGlmIChkYXRhTGVuZ3RoIDw9IDB4
RkZGRikgeworICAgICAgICBmcmFtZS5hcHBlbmQobWFza0JpdCB8IHBheWxvYWRMZW5ndGhXaXRo
VHdvQnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpOworICAgICAgICBmcmFtZS5hcHBlbmQoKGRhdGFM
ZW5ndGggJiAweEZGMDApID4+IDgpOworICAgICAgICBmcmFtZS5hcHBlbmQoZGF0YUxlbmd0aCAm
IDB4RkYpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lLmFwcGVuZChtYXNrQml0IHwgcGF5
bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkKTsKKyAgICAgICAgY2hh
ciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07CisgICAgICAgIHNpemVfdCByZW1haW5pbmcgPSBk
YXRhTGVuZ3RoOworICAgICAgICAvLyBGaWxsIHRoZSBsZW5ndGggaW50byBleHRlbmRlZFBheWxv
YWRMZW5ndGggaW4gdGhlIG5ldHdvcmsgYnl0ZSBvcmRlci4KKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCA4OyArK2kpIHsKKyAgICAgICAgICAgIGV4dGVuZGVkUGF5bG9hZExlbmd0aFs3IC0g
aV0gPSByZW1haW5pbmcgJiAweEZGOworICAgICAgICAgICAgcmVtYWluaW5nID4+PSA4OworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVCghcmVtYWluaW5nKTsKKyAgICAgICAgZnJhbWUuYXBwZW5k
KGV4dGVuZGVkUGF5bG9hZExlbmd0aCwgOCk7CisgICAgfQorCisgICAgLy8gTWFzayB0aGUgZnJh
bWUuCisgICAgc2l6ZV90IG1hc2tpbmdLZXlTdGFydCA9IGZyYW1lLnNpemUoKTsKKyAgICBmcmFt
ZS5ncm93KGZyYW1lLnNpemUoKSArIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMpOyAvLyBBZGQgcGxh
Y2Vob2xkZXIgZm9yIG1hc2tpbmcga2V5LiBXaWxsIGJlIG92ZXJ3cml0dGVuLgorICAgIHNpemVf
dCBwYXlsb2FkU3RhcnQgPSBmcmFtZS5zaXplKCk7CisgICAgZnJhbWUuYXBwZW5kKGRhdGEsIGRh
dGFMZW5ndGgpOworCisgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMoZnJhbWUuZGF0
YSgpICsgbWFza2luZ0tleVN0YXJ0LCBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkKKyAgICAgICAgZnJhbWVbcGF5bG9h
ZFN0YXJ0ICsgaV0gXj0gZnJhbWVbbWFza2luZ0tleVN0YXJ0ICsgaSAlIG1hc2tpbmdLZXlXaWR0
aEluQnl0ZXNdOworCisgICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGZyYW1lLmRhdGEoKSwgZnJh
bWUuc2l6ZSgpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5k
c2hha2UoKQorYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWVIaXhpZTc2KGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBjbG9zaW5nICVkICVkIiwgdGhpcywgbV9jbG9zaW5nLCBtX3JlY2VpdmVk
Q2xvc2luZ0hhbmRzaGFrZSk7Ci0gICAgaWYgKG1fY2xvc2luZykKLSAgICAgICAgcmV0dXJuOwog
ICAgIEFTU0VSVChtX2hhbmRsZSk7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZjsKLSAgICBidWYuYXBw
ZW5kKCdceGZmJyk7Ci0gICAgYnVmLmFwcGVuZCgnXDAnKTsKLSAgICBpZiAoIW1faGFuZGxlLT5z
ZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpKSB7Ci0gICAgICAgIG1faGFuZGxlLT5kaXNjb25u
ZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9jbG9zaW5nID0gdHJ1ZTsKLSAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hh
a2UoKTsKLX0KKyAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKIAotdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCi17
Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgdGltZXIiLCB0
aGlzKTsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCAmbV9jbG9zaW5nVGltZXIgPT0gdGltZXIp
OwotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsKKyAg
ICBWZWN0b3I8Y2hhcj4gZnJhbWU7CisgICAgZnJhbWUuYXBwZW5kKCdcMCcpOyAvLyBGcmFtZSB0
eXBlLgorICAgIGZyYW1lLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBmcmFtZS5hcHBl
bmQoJ1x4ZmYnKTsgLy8gRnJhbWUgZW5kLgorICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChmcmFt
ZS5kYXRhKCksIGZyYW1lLnNpemUoKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDY0MjFm
ZWI4Y2UwNDM1ZDA0NDljMTVkOGRkM2I4MzIzOWNhYzIwYTguLmY3YTQ3MGUxM2QyZDA2ZGU4YTc0
Yjk2YWY1ODNiNTVkMzg1MTEzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTg4LDYgKzg4LDQ1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICAgICAgdm9pZCBjbG9zaW5n
VGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwogCisgICAgICAgIC8vIEh5Ymkt
MTAgb3Bjb2Rlcy4KKyAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgT3BDb2RlOworICAgICAg
ICBzdGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZUNvbnRpbnVhdGlvbjsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IE9wQ29kZSBPcENvZGVUZXh0OworICAgICAgICBzdGF0aWMgY29uc3QgT3BDb2RlIE9w
Q29kZUJpbmFyeTsKKyAgICAgICAgc3RhdGljIGNvbnN0IE9wQ29kZSBPcENvZGVDbG9zZTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IE9wQ29kZSBPcENvZGVQaW5nOworICAgICAgICBzdGF0aWMgY29u
c3QgT3BDb2RlIE9wQ29kZVBvbmc7CisKKyAgICAgICAgc3RhdGljIGJvb2wgaXNOb25Db250cm9s
T3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuIG9wQ29kZSA9PSBPcENvZGVDb250aW51YXRp
b24gfHwgb3BDb2RlID09IE9wQ29kZVRleHQgfHwgb3BDb2RlID09IE9wQ29kZUJpbmFyeTsgfQor
ICAgICAgICBzdGF0aWMgYm9vbCBpc0NvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1
cm4gb3BDb2RlID09IE9wQ29kZUNsb3NlIHx8IG9wQ29kZSA9PSBPcENvZGVQaW5nIHx8IG9wQ29k
ZSA9PSBPcENvZGVQb25nOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzUmVzZXJ2ZWRPcENvZGUo
T3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gIWlzTm9uQ29udHJvbE9wQ29kZShvcENvZGUpICYmICFp
c0NvbnRyb2xPcENvZGUob3BDb2RlKTsgfQorCisgICAgICAgIGVudW0gUGFyc2VGcmFtZVJlc3Vs
dCB7CisgICAgICAgICAgICBGcmFtZU9LLAorICAgICAgICAgICAgRnJhbWVJbmNvbXBsZXRlLAor
ICAgICAgICAgICAgRnJhbWVFcnJvcgorICAgICAgICB9OworCisgICAgICAgIHN0cnVjdCBGcmFt
ZURhdGEgeworICAgICAgICAgICAgT3BDb2RlIG9wQ29kZTsKKyAgICAgICAgICAgIGJvb2wgZmlu
YWw7CisgICAgICAgICAgICBib29sIHJlc2VydmVkMTsKKyAgICAgICAgICAgIGJvb2wgcmVzZXJ2
ZWQyOworICAgICAgICAgICAgYm9vbCByZXNlcnZlZDM7CisgICAgICAgICAgICBib29sIG1hc2tl
ZDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBheWxvYWQ7CisgICAgICAgICAgICBzaXplX3Qg
cGF5bG9hZExlbmd0aDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZyYW1lRW5kOworICAgICAg
ICB9OworCisgICAgICAgIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZShGcmFtZURhdGEmKTsg
Ly8gTWF5IG1vZGlmeSBwYXJ0IG9mIG1fYnVmZmVyIHRvIHVubWFzayB0aGUgZnJhbWUuCisKKyAg
ICAgICAgYm9vbCBwcm9jZXNzRnJhbWUoKTsKKyAgICAgICAgYm9vbCBwcm9jZXNzRnJhbWVIaXhp
ZTc2KCk7CisKKyAgICAgICAgYm9vbCBzZW5kRnJhbWUoT3BDb2RlLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIGJvb2wgc2VuZEZyYW1lSGl4aWU3Nihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisKICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9jb250ZXh0OwogICAgICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBt
X2NsaWVudDsKICAgICAgICAgT3duUHRyPFdlYlNvY2tldEhhbmRzaGFrZT4gbV9oYW5kc2hha2U7
CkBAIC0xMDcsNiArMTQ2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtX2lkZW50aWZpZXI7IC8vIG1faWRlbnRpZmllciA9PSAwIG1lYW5zIHRoYXQgd2Ug
Y291bGQgbm90IG9idGFpbiBhIHZhbGlkIGlkZW50aWZpZXIuCiAKICAgICAgICAgYm9vbCBtX3Vz
ZUhpeGllNzZQcm90b2NvbDsKKworICAgICAgICAvLyBQcml2YXRlIG1lbWJlcnMgb25seSBmb3Ig
aHliaS0xMCBwcm90b2NvbC4KKyAgICAgICAgYm9vbCBtX2hhc0NvbnRpbnVvdXNGcmFtZTsKKyAg
ICAgICAgT3BDb2RlIG1fY29udGludW91c0ZyYW1lT3BDb2RlOworICAgICAgICBWZWN0b3I8Y2hh
cj4gbV9jb250aW51b3VzRnJhbWVEYXRhOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101281</attachid>
            <date>2011-07-19 00:06:36 -0700</date>
            <delta_ts>2011-07-19 00:59:22 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-64522-20110719160634.patch</filename>
            <type>text/plain</type>
            <size>73268</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTExODYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTA4MjkxNzBmMjk4NmY3MThhYmRh
N2I5YWI4ZmNmODViZWY0ZDQ1Li4zN2NjNWVhOGIxYzkyYjVhNGM4ZjhkYjM0NGZjM2RlMWFiODBk
OTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDctMTggIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBJbXBsZW1lbnQgaHliaSBm
cmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBleGlzdGluZyB0ZXN0cyBzbyB0aGV5IG1hdGNoIHRoZSBuZXcgZnJhbWUgZm9ybWF0LCBhbmQg
YWRkIHRlc3RzIGZvciB0aGUgbmV3IGZyYW1lIHR5cGVzCisgICAgICAgIGFuZCBlcnJvciBjb25k
aXRpb25zIHJlbGF0ZWQgdG8gdGhlIG5ldyBmcmFtZSBmb3JtYXQuCisKKyAgICAgICAgVW5za2lw
IGh5YmkgdGVzdHMgb24gbWFjLCB3aW4gYW5kIGNocm9taXVtLiBPdGhlciBwb3J0cyAod2syLCBx
dCBhbmQgZ3RrKSBzdGlsbCBza2lwIHRoZXNlIHRlc3RzCisgICAgICAgIGJlY2F1c2UgdGhleSBk
byBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiCisgICAgICAgIHByZWZlcmVuY2Uga2V5IHZpYSBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2VzKCkgeWV0LgorCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0Zjgu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9i
cm9rZW4tdXRmOF93c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZS5odG1sOgorICAgICAgICBUaGUg
Zm9ybWF0IG9mIGEgY2xvc2UgZnJhbWUgaGFzIGJlZW4gY2hhbmdlZC4gQ3VycmVudGx5LCB3ZSBk
byBub3QgaW5jbHVkZSBhbnkgcGF5bG9hZAorICAgICAgICBpbiBhIGNsb3NlIGZyYW1lLCB0aHVz
IGl0IG11c3Qgc3RhcnQgd2l0aCAiXHg4OFx4ODAiIChzZWUgc2VjdGlvbiA0LjEgb2YgaHliaS0x
MAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMpLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlX3dzaC5weToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1m
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZy
YW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVk
LWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVu
dHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1j
b250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNr
ZWQtZnJhbWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvbWFza2VkLWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Bvbmdfd3NoLnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJp
dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weTogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1vcGNvZGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlc193c2gucHk6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5OgorICAg
ICAgICBTZW5kIHR3byB0ZXh0IGZyYW1lcyBhdCBvbmNlLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5
bG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Rvby1sb25nLXBheWxvYWRfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgIERlcml2ZSB0ZXN0IGV4cGVj
dGF0aW9ucyBvZiBoaXhpZTc2IHRlc3RzLCBiZWNhdXNlIHRoZXNlIHRlc3RzIGFyZSBsaWtlbHkg
dG8gYmVoYXZlCisgICAgICAgIHRoZSBzYW1lIHdheSBhcyBoaXhpZTc2IHRlc3RzLiBXaWxsIGJl
IGNoZWNrZWQgbGF0ZXIgd2hldGhlciB0aGV5IHJlYWxseSBkby4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0w
Ny0xOCAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkOyB1cGRhdGVkIGNocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4t
dXRmOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Jyb2tlbi11dGY4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGI5NmRkZDBhYjk5
ODA5ZmVkYTQyMzZkYzYwMTVhZTViNWE0OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IENvdWxkIG5vdCBk
ZWNvZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04LgorVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBhYm9y
dHMgdGhlIGNvbm5lY3Rpb24gd2hlbiBpdCByZWNlaXZlcyBhIHRleHQgZnJhbWUgY29udGFpbmlu
ZyBicm9rZW4gVVRGLTggZGF0YS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9w
ZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQu
d2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY0NGE2YTdl
ZTA1ZGVjNzNmMjc3Y2E5NzkzOThhMWI1ZWFjOWY1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRtbApA
QCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3
aGVuIGl0IHJlY2VpdmVzIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGJyb2tlbiBVVEYtOCBkYXRh
LiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2Jyb2tlbi11dGY4Iik7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24o
KQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOwor
ICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsg
bWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sK
KyAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2
ZW50OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0Zjhfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOF93
c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTUwYjU3NGZhZmFlMzQ2YTNiOTFlMWM4Njg2OGI4ZTI4MjU4Mjhj
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvYnJva2VuLXV0Zjhfd3NoLnB5CkBAIC0wLDAgKzEsMTEgQEAKK2Zyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJl
YW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAg
cGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGF5
bG9hZCA9ICdUaGlzIHRleHQgc2hvdWxkIGJlIGlnbm9yZWQuIFx4ZmYnICMgJ1x4ZmYnIHdpbGwg
bmV2ZXIgYXBwZWFyIGluIFVURi04IGVuY29kZWQgZGF0YS4KKyAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9oZWFkZXIoY29tbW9uLk9QQ09ERV9URVhULCBsZW4ocGF5
bG9hZCksIDEsIDAsIDAsIDAsIDApICsgcGF5bG9hZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNs
b3NlLWV4cGVjdGVkLnR4dAppbmRleCAyNjY4ZmQ5NDIzMjQ5MWY3YWZlOGQ1N2QxMTE1MjAzZWY0
ZTU5MDkzLi5iMTIwMDk0ZjE5Y2Q4MTNkY2Y2ODhmZTdiNjg3YWEyNjNhZGJkOTU0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1j
bG9zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jbGllbnQtY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsOSBAQCBXZWJT
b2NrZXQ6IFRlc3QgY2xpZW50LWluaXRpYXRlZCBjbG9zZS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogQ29ubmVjdGVkCi1SZWNlaXZlZDogY2xvc2VfZnJhbWU9J1x4ZmZceDAwJworUmVj
ZWl2ZWQ6IGNsb3NlX2ZyYW1lWzoyXT0nXHg4OFx4ODAnCiBDbG9zZWQKLVBBU1MgcmVjZWl2ZWRN
ZXNzYWdlIGlzICJjbG9zZV9mcmFtZT0nXFx4ZmZcXHgwMCciCitQQVNTIHJlY2VpdmVkTWVzc2Fn
ZSBpcyAiY2xvc2VfZnJhbWVbOjJdPSdcXHg4OFxceDgwJyIKIFBBU1MgY2xvc2VFdmVudC53YXND
bGVhbiBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNs
b3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
aWVudC1jbG9zZS5odG1sCmluZGV4IGJkYTUxNDMzMjhmMjNhNmYwN2M1YTIwNmM2MDE0YzkzMzA3
MDk2NzEuLmFjMjllN2ZjNmI1NGRiYzUyZjllZDE1OGQ5NDNjYTg5NWY3MWY3MzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNs
b3NlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9jbGllbnQtY2xvc2UuaHRtbApAQCAtMzQsNyArMzQsNyBAQCB3cy5vbmNsb3NlID0gZnVuY3Rp
b24oZXZlbnQpCiB7CiAgICAgZGVidWcoIkNsb3NlZCIpOwogICAgIGNsb3NlRXZlbnQgPSBldmVu
dDsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY2VpdmVkTWVzc2FnZSIsICJjbG9zZV9m
cmFtZT0nXFx4ZmZcXHgwMCciKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY2VpdmVk
TWVzc2FnZSIsICJjbG9zZV9mcmFtZVs6Ml09J1xceDg4XFx4ODAnIik7CiAgICAgc2hvdWxkQmVU
cnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGll
bnQtY2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9jbGllbnQtY2xvc2Vfd3NoLnB5CmluZGV4IDdlZDI4YmZmZmYwMjQ5ZjRhMGQ3YmJjYzNm
YjgzMmFiODc5YzA4MjAuLjg2OGUwNmNiNzFiNjk5OTlkOTBmYzBiMmE4Yjg4Y2FhMDU3OGYwYmQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xpZW50LWNsb3NlX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZV93c2gucHkKQEAgLTcsMTYgKzcsMTcgQEAgZGVmIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogCiBkZWYgd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgogICAgICMgV2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBzZW50
IGZyb20gdGhlIGNsaWVudC4KLSAgICBjbG9zZV9mcmFtZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJl
Y2VpdmVfYnl0ZXMoMikKKyAgICBjbG9zZV9mcmFtZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2Vp
dmVfYnl0ZXMoNikKIAotICAgICMgVGVsbCB0aGUgY2xpZW50IHdoYXQgd2UgaGF2ZSByZWNlaXZl
ZC4KLSAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnY2xvc2VfZnJhbWU9JXInICUg
Y2xvc2VfZnJhbWUpCisgICAgIyBTZW5kIG9ubHkgZmlyc3QgdHdvIGJ5dGVzIG9mIHRoZSByZWNl
aXZlZCBmcmFtZS4gVGhlIHJlbWFpbmluZyBmb3VyIGJ5dGVzIGFyZQorICAgICMgIm1hc2tpbmcg
a2V5Iiwgd2hpY2ggY2hhbmdlcyBldmVyeSB0aW1lIHRoZSB0ZXN0IHJ1bnMuCisgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2Nsb3NlX2ZyYW1lWzoyXT0lcicgJSBjbG9zZV9mcmFt
ZVs6Ml0pCiAKICAgICAjIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBBc3NlcnRp
b25FcnJvciB3aWxsIGJlIHJhaXNlZCwKICAgICAjIHdoaWNoIHdpbGwgcHJldmVudCBweXdlYnNv
Y2tldCBmcm9tIHNlbmRpbmcgYSBjbG9zZSBmcmFtZS4KICAgICAjIEluIHRoaXMgY2FzZSwgdGhl
IGNsaWVudCB3aWxsIGZhaWwgdG8gZmluaXNoIGNsb3NpbmcgaGFuZHNoYWtlLCB0aHVzCiAgICAg
IyBjbG9zZUV2ZW50Lndhc0NsZWFuIHdpbGwgYmVjb21lIGZhbHNlLgotICAgIGFzc2VydCBjbG9z
ZV9mcmFtZSA9PSAnXHhmZlx4MDAnCisgICAgYXNzZXJ0IGNsb3NlX2ZyYW1lWzoyXSA9PSAnXHg4
OFx4ODAnCiAKICAgICAjIFByZXRlbmQgd2UgaGF2ZSByZWNlaXZlZCBhIGNsb3NlIGZyYW1lIGZy
b20gdGhlIGNsaWVudC4KICAgICAjIEFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMsIHB5d2Vic29j
a2V0IHdpbGwgc2VuZCBhIGNsb3NlIGZyYW1lIGF1dG9tYXRpY2FsbHkuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29u
dHJvbC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjRjNmI5OTU5MDBkNjY2YmJjMWNlY2U5YTQ3ODU0NWIwZWMyYmEyYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJh
Z21lbnRlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMDogUmVjZWl2ZWQgZnJhZ21lbnRlZCBjb250cm9sIGZyYW1lOiBv
cGNvZGUgPSA5CitUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgYSBmcmFnbWVudGVkIGNv
bnRyb2wgZnJhbWUgYW5kIGFib3J0cyB0aGUgY29ubmVjdGlvbi4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDA2ZDkxMzQzOTI2MzBkODNiYTAwNThkOTc2MWQxMzMxMmYxODU1ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVy
IFdlYlNvY2tldCByZWplY3RzIGEgZnJhZ21lbnRlZCBjb250cm9sIGZyYW1lIGFuZCBhYm9ydHMg
dGhlIGNvbm5lY3Rpb24uIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MCk7CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwp
OwordmFyIGNsb3NlRXZlbnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1
Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2ZW50KQoreworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVk
KCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIp
Iik7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgY2xvc2VFdmVu
dCA9IGV2ZW50OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250
cm9sLWZyYW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDE2ZTc3
ZDI2YzE0MzJiZDlmYTliNzJkOThhZTNmZDdkMmZmOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRy
b2wtZnJhbWVfd3NoLnB5CkBAIC0wLDAgKzEsMTIgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgICMgRnJhZ21lbnRlZCBjb250cm9sIGZyYW1lIGlzIHByb2hp
Yml0ZWQuIFRoZSBjbGllbnQgbXVzdCBhYm9ydCB0aGUgY29ubmVjdGlvbi4KKyAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdUaGlzIG1lc3NhZ2Ug
c2hvdWxkIGJlIGlnbm9yZWQuJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORywgZmluPTApKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9m
cmFnbWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYzY3ZDlhM2MyZWY3MjM0MjRhYTVhNmY0ODUxYzllNTgwNTJlY2IxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFn
bWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorUmVjZWl2ZSBmcmFn
bWVudGVkIFdlYlNvY2tldCBmcmFtZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
b25vcGVuKCkgd2FzIGNhbGxlZC4KK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0g
IkZpcnN0IG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiU2Vj
b25kIG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiVGhpcmQg
bWVzc2FnZSIpCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBhY3R1YWxN
ZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIGlzIHRydWUKK1BBU1Mg
YWN0dWFsTWVzc2FnZXNbMF0gaXMgIkZpcnN0IG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3NhZ2Vz
WzFdIGlzICJTZWNvbmQgbWVzc2FnZSIKK1BBU1MgYWN0dWFsTWVzc2FnZXNbMl0gaXMgIlRoaXJk
IG1lc3NhZ2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwODA3
ODc3NmZlOGQ4OTg0Yzk3MTFkYjVhNGY5M2EzNTBmZjAzNzEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJh
bWVzLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiUmVjZWl2ZSBmcmFnbWVudGVkIFdlYlNvY2tldCBmcmFtZXMu
Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB1cmwg
PSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZy
YW1lcyI7Cit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKK3Zh
ciBleHBlY3RlZE1lc3NhZ2VzID0gWyJGaXJzdCBtZXNzYWdlIiwgIlNlY29uZCBtZXNzYWdlIiwg
IlRoaXJkIG1lc3NhZ2UiXTsKK3ZhciBhY3R1YWxNZXNzYWdlcyA9IFtdOworCit3cy5vbm9wZW4g
PSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7CisgICAg
d3MuY2xvc2UoKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAg
IHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICBkZWJ1Zygib25tZXNzYWdlKCkgd2FzIGNh
bGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIGFjdHVhbE1lc3Nh
Z2VzLnB1c2gobWVzc2FnZSk7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7
CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53
YXNDbGVhbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiYWN0dWFsTWVzc2FnZXMubGVuZ3RoID09PSBl
eHBlY3RlZE1lc3NhZ2VzLmxlbmd0aCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0
ZWRNZXNzYWdlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJh
Y3R1YWxNZXNzYWdlc1siICsgaSArICJdIiwgZXhwZWN0ZWRNZXNzYWdlc1tpXSk7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzX3dz
aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21l
bnRlZC1mcmFtZXNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZjNlNThlZTQ1MTNkNWVhOWY3NDdjMjNi
NWEwODBjYTE5M2JhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzX3dzaC5weQpAQCAtMCwwICsx
LDM0IEBACitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAjIHNlbmRfbWVzc2FnZSdzIHRo
aXJkIGFyZ3VtZW50IGNvcnJlc3BvbmRzIHRvICJmaW4iIGJpdDsKKyAgICAjIGl0IGlzIHNldCB0
byBUcnVlIGlmIHRoaXMgZnJhbWUgaXMgdGhlIGZpbmFsIGZyYWdtZW50IG9mIGEgbWVzc2FnZS4K
KyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRmlyc3QgJywgRmFsc2UpCisgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ21lc3NhZ2UnLCBUcnVlKQorCisgICAgIyBF
bXB0eSBmcmFnbWVudCBpcyBhbGxvd2VkLgorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsICcnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnU2Vjb25k
ICcsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBGYWxzZSkK
KyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnbWVzc2FnZScsIEZhbHNlKQorICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBUcnVlKQorCisgICAgIyBGcmFnbWVu
dCBhZ2dyZXNzaXZlbHkuCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1QnLCBG
YWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnaCcsIEZhbHNlKQorICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdpJywgRmFsc2UpCisgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ3InLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnZCcsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICcgJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ20nLCBGYWxz
ZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnZScsIEZhbHNlKQorICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdzJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ3MnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnYScsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdn
JywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2UnLCBUcnVlKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9p
bnRlcmxlYXZlZC1mcmFnbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZiYzI4MTNlM2I5NTRmMjc1Y2M4ODU5MWE4NGFhZWIxZDBiYmE5YjgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2ludGVybGVhdmVkLWZyYWdtZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFJlY2VpdmVkIG5ldyBkYXRhIGZyYW1lIGJ1dCBwcmV2
aW91cyBjb250aW51b3VzIGZyYW1lIGlzIHVuZmluaXNoZWQuCitUZXN0IHdoZXRoZXIgV2ViU29j
a2V0IHJlamVjdHMgaW50ZXJsZWF2ZWQgZnJhZ21lbnRlZCBmcmFtZXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworb25vcGVuKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53
YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhMzIwOGIyMTlhOTYwMmZiMjE4MWJiOGRlNDdhNWE1ZjlhNmRhNTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2ludGVybGVhdmVkLWZyYWdtZW50cy5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJT
b2NrZXQgcmVqZWN0cyBpbnRlcmxlYXZlZCBmcmFnbWVudGVkIGZyYW1lcy4iKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHVybCA9ICJ3czovL2xvY2Fs
aG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cyI7Cit2
YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVu
ID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsK
Kword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBl
dmVudC5kYXRhOworICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNz
YWdlID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgi
Y2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE1ZGFlY2FmMjUxNTFlMDNkMzNkYWIxNWM5Y2Y1NTQ2MGVmNjZkY2QKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2ludGVybGVhdmVkLWZyYWdtZW50c193c2gucHkKQEAgLTAsMCArMSwxMiBAQAorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IHN0cmVhbQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
KyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAg
ICAjIEEgbmV3IGZyYW1lIGlzIGFycml2ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBmcmFnbWVudGVk
IGZyYW1lIGhhcyBmaW5pc2hlZC4KKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFt
LmNyZWF0ZV90ZXh0X2ZyYW1lKCdUaGlzIG1lc3NhZ2UgJywgb3Bjb2RlPWNvbW1vbi5PUENPREVf
VEVYVCwgZmluPTApKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRl
X3RleHRfZnJhbWUoJ3Nob3VsZCBiZSBpZ25vcmVkLicsIG9wY29kZT1jb21tb24uT1BDT0RFX1RF
WFQsIGZpbj0xKSkgIyBOb3QgT1BDT0RFX0NPTlRJTlVBVElPTi4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1l
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvbG9uZy1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzAzOTVkY2Y2
MTZhM2MwMGUzZjI2OGNlNjRiN2JlOTZkOTg5NzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBS
ZWNlaXZlZCBjb250cm9sIGZyYW1lIGhhdmluZyB0b28gbG9uZyBwYXlsb2FkOiAxMjYgYnl0ZXMK
K1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBjb250cm9sIGZyYW1lcyBsb25nZXIgdGhh
biAxMjUgYnl0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25vcGVuKCkgd2Fz
IGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmct
Y29udHJvbC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZTE4NDhjMjMyNjkxMDgzMTU0MDZiNjEx
MWM0MWE0NmMwM2RiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS5odG1sCkBAIC0wLDAgKzEs
MzggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBjb250cm9sIGZyYW1lcyBsb25nZXIgdGhh
biAxMjUgYnl0ZXMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9s
b25nLWNvbnRyb2wtZnJhbWUiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwordmFyIGNs
b3NlRXZlbnQ7Cit2YXIgbWVzc2FnZTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAg
IGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0
aW9uKGV2ZW50KQoreworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNl
KCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZV93c2gucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDFmNDhhMzViOWViZDlhODJlNjkwOGQ2MjVmNGQxN2ExZDJjZDBjMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
bG9uZy1jb250cm9sLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDEyIEBACitmcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFt
CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBh
c3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgICMgQWxs
IGNvbnRyb2wgZnJhbWVzIG11c3QgaGF2ZSBhIHBheWxvYWQgbGVuZ3RoIG9mIDEyNSBieXRlcyBv
ciBsZXNzLgorICAgIG1lc3NhZ2UgPSAnWCcgKiAxMjYKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BD
T0RFX1BJTkcsIGZpbj0xKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhmN2IwMTdlZTIwNzlhYWY1MTFiMGYxYmVlMGI0YmU4ZGI3YjYxMWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL21hc2tlZC1mcmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1JlY2Vp
dmUgbWFza2VkIFdlYlNvY2tldCBmcmFtZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
Kworb25vcGVuKCkgd2FzIGNhbGxlZC4KK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdl
ID0gIkZpcnN0IG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAi
RnJhZ21lbnRlZCBtZXNzYWdlIikKK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0g
IiIpCitvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJFTkQiKQorUEFTUyBhY3R1
YWxNZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIGlzIHRydWUKK1BB
U1MgYWN0dWFsTWVzc2FnZXNbMF0gaXMgIkZpcnN0IG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3Nh
Z2VzWzFdIGlzICJGcmFnbWVudGVkIG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3NhZ2VzWzJdIGlz
ICIiCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmYwYzkyNDA2NGY5MTM2NzI2YTExMjUwMGIzZDQ3OTY2NTk5NWNmNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvbWFza2VkLWZyYW1lcy5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlJlY2VpdmUgbWFza2VkIFdlYlNv
Y2tldCBmcmFtZXMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9t
YXNrZWQtZnJhbWVzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2
ZW50OwordmFyIGV4cGVjdGVkTWVzc2FnZXMgPSBbIkZpcnN0IG1lc3NhZ2UiLCAiRnJhZ21lbnRl
ZCBtZXNzYWdlIiwgIiJdOwordmFyIGFjdHVhbE1lc3NhZ2VzID0gW107CisKK3dzLm9ub3BlbiA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKKyAgICB3
cy5jbG9zZSgpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAg
dmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGRlYnVnKCJvbm1lc3NhZ2UoKSB3YXMgY2Fs
bGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgaWYgKG1lc3NhZ2Ug
PT09ICJFTkQiKSB7CisgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYWN0dWFsTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKK307CisKK3dzLm9uY2xvc2UgPSBm
dW5jdGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVU
cnVlKCJhY3R1YWxNZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZE1lc3NhZ2VzLmxlbmd0aDsgKytpKQor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImFjdHVhbE1lc3NhZ2VzWyIgKyBpICsgIl0i
LCBleHBlY3RlZE1lc3NhZ2VzW2ldKTsKKyAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2Fz
Q2xlYW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFz
a2VkLWZyYW1lc193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL21hc2tlZC1mcmFtZXNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwOTk2N2FkYzUzNzhiYTgw
NDkwMTU1ZGMwZDczODEzM2ZkYmIxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXNfd3NoLnB5CkBAIC0w
LDAgKzEsMzQgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBt
c2d1dGlsCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgor
ICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAg
ICMgcHl3ZWJzb2NrZXQgZG9lcyBub3QgbWFzayBtZXNzYWdlIGJ5IGRlZmF1bHQuIFdlIG5lZWQg
dG8gYnVpbGQgYSBmcmFtZSBtYW51YWxseSB0byBtYXNrIGl0LgorICAgIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ0ZpcnN0IG1lc3NhZ2UnLCBtYXNr
PVRydWUpKQorCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4
dF9mcmFtZSgnRnJhZ21lbnRlZCAnLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhULCBmaW49MCwg
bWFzaz1UcnVlKSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90
ZXh0X2ZyYW1lKCdtZXNzYWdlJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OLCBm
aW49MSwgbWFzaz1UcnVlKSkKKworICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0u
Y3JlYXRlX3RleHRfZnJhbWUoJycsIG1hc2s9VHJ1ZSkpCisKKyAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnRU5EJykKKworICAgICMgV2FpdCBmb3IgdGhlIGNsaWVudCB0byBzdGFy
dCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAjIFRvIHJlY2VpdmUgYSBjbG9zZSBmcmFtZSwgd2Ug
bXVzdCB1c2UgYW4gaW50ZXJuYWwgbWV0aG9kIG9mIHJlcXVlc3Qud3Nfc3RyZWFtLgorICAgIG9w
Y29kZSwgcGF5bG9hZCwgZmluYWwsIHJlc2VydmVkMSwgcmVzZXJ2ZWQyLCByZXNlcnZlZDMgPSBy
ZXF1ZXN0LndzX3N0cmVhbS5fcmVjZWl2ZV9mcmFtZSgpCisgICAgYXNzZXJ0IG9wY29kZSA9PSBj
b21tb24uT1BDT0RFX0NMT1NFCisgICAgYXNzZXJ0IGZpbmFsCisgICAgYXNzZXJ0IG5vdCByZXNl
cnZlZDEKKyAgICBhc3NlcnQgbm90IHJlc2VydmVkMgorICAgIGFzc2VydCBub3QgcmVzZXJ2ZWQz
CisKKyAgICAjIFNlbmQgYSBtYXNrZWQgY2xvc2UgZnJhbWUuIENsaWVudHMgc2hvdWxkIGJlIGFi
bGUgdG8gaGFuZGxlIHRoaXMgZnJhbWUgYW5kCisgICAgIyB0aGUgV2ViU29ja2V0IG9iamVjdCBz
aG91bGQgYmUgY2xvc2VkIGNsZWFubHkuCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0
cmVhbS5jcmVhdGVfY2xvc2VfZnJhbWUoJycsIG1hc2s9VHJ1ZSkpCisKKyAgICByYWlzZSBFeGNl
cHRpb24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50cyBweXdlYnNvY2tldCBmcm9t
IHN0YXJ0aW5nIGl0cyBvd24gY2xvc2luZyBoYW5kc2hha2UuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NzRmZDFlYmE1YzUxNjZjMjkwNWE0NmRhYzAzNzhkNmM4M2Q3YmRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9wb25nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0IHdoZXRoZXIg
V2ViU29ja2V0IGNvcnJlY3RseSByZXNwb25kcyB0byBhIHBpbmcgbWVzc2FnZSBzZW50IGZyb20g
dGhlIHNlcnZlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMg
Y2FsbGVkLgorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiUEFTUyIpCitQQVNT
IG1lc3NhZ2UgaXMgIlBBU1MiCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjVhZDA0MGY4MThhOWE4YmNjZjFhN2RmNjE1MWQwMDRhNmNmNThkMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcG9uZy5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgY29ycmVjdGx5
IHJlc3BvbmRzIHRvIGEgcGluZyBtZXNzYWdlIHNlbnQgZnJvbSB0aGUgc2VydmVyLiIpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgdXJsID0gIndzOi8v
bG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZyI7Cit2YXIgd3MgPSBuZXcg
V2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBtZXNzYWdlOworCit3cy5vbm9w
ZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9
OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBtZXNzYWdlID0gZXZl
bnQuZGF0YTsKKyAgICBkZWJ1Zygib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBc
IiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWVzc2Fn
ZSIsICJQQVNTIik7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAg
Y2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVh
biIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nX3dz
aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZ193
c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjEyYWFjNWY4M2Y2MDdlMjM4OTYyODBhMTUwN2FjYjczYjkwMTU5
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcG9uZ193c2gucHkKQEAgLTAsMCArMSwxOSBAQAorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKKwor
CitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcwor
CisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbXNndXRpbC5z
ZW5kX3BpbmcocmVxdWVzdCwgJ0hlbGxvLCB3b3JsZCEnKQorCisgICAgIyBXZSBuZWVkIHRvIHVz
ZSBhbiBpbnRlcm5hbCBmdW5jdGlvbiB0byBkZXRlY3QgYSBwb25nIGZyYW1lIGZyb20gdGhlIGNs
aWVudC4KKyAgICBvcGNvZGUsIHBheWxvYWQsIGZpbmFsLCByZXNlcnZlZDEsIHJlc2VydmVkMiwg
cmVzZXJ2ZWQzID0gcmVxdWVzdC53c19zdHJlYW0uX3JlY2VpdmVfZnJhbWUoKQorICAgIGlmIG9w
Y29kZSA9PSBjb21tb24uT1BDT0RFX1BPTkcgYW5kIHBheWxvYWQgPT0gJ0hlbGxvLCB3b3JsZCEn
IGFuZCBmaW5hbCBhbmQgbm90IHJlc2VydmVkMSBhbmQgbm90IHJlc2VydmVkMiBhbmQgbm90IHJl
c2VydmVkMzoKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1BBU1MnKQor
ICAgIGVsc2U6CisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdGQUlMOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBv
cGNvZGUgPSAlciwgcGF5bG9hZCA9ICVyLCBmaW5hbCA9ICVyLCByZXNlcnZlZDEgPSAlciwgcmVz
ZXJ2ZWQyID0gJXIsIHJlc2VydmVkMyA9ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChvcGNvZGUsIHBheWxvYWQsIGZpbmFsLCByZXNlcnZlZDEsIHJlc2VydmVkMiwgcmVzZXJ2
ZWQzKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAzMDcyNmE0YWRkMGIyNTNkMDAwNWRhNjIzNjVmOWMzZTE2NjEyNTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2Vy
dmVkLWJpdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gMSwg
cmVzZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQzID0gMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE9u
ZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZlZDEgPSAwLCByZXNlcnZlZDIg
PSAxLCByZXNlcnZlZDMgPSAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogT25lIG9yIG1vcmUg
cmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMSA9IDAsIHJlc2VydmVkMiA9IDAsIHJlc2Vy
dmVkMyA9IDEKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBmcmFtZXMgd2hvc2UgcmVz
ZXJ2ZWQgYml0IGlzIG9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0JpdCAxOiBU
ZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQu
CitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK0JpdCAyOiBUZXN0IHN0YXJ0ZWQu
Citvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK0JpdCAzOiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3
YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNjYyMWZhMjFj
MjgxYWE1YjE1OTNmNWU1YzE2ZmUwODBmYmJiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbApA
QCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgZnJhbWVzIHdob3NlIHJl
c2VydmVkIGJpdCBpcyBvbi4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7CisKKy8vIGJpdE51bWJlciBtdXN0IGJlIDEsIDIsIG9y
IDMuCitmdW5jdGlvbiBkb1Rlc3QoYml0TnVtYmVyKQoreworICAgIHZhciB1cmwgPSAid3M6Ly9s
b2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzP2JpdD0iICsg
Yml0TnVtYmVyOworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKworICAgIGRlYnVn
KCJCaXQgIiArIGJpdE51bWJlciArICI6IFRlc3Qgc3RhcnRlZC4iKTsKKworICAgIHdzLm9ub3Bl
biA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVk
LiIpOworICAgIH07CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGVzdEZhaWxlZCgi
b25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIp
OworICAgIH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQg
PSBldmVudDsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOwor
ICAgICAgICBpZiAoYml0TnVtYmVyID09PSAzKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvVGVzdChiaXROdW1iZXIgKyAxKTsKKyAgICB9
OworfQorCitkb1Rlc3QoMSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gu
cHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVk
LWJpdHNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZDBkZmRjNTUxYjA2NTUxNTZhNmFlMTIwODU1NDRk
ZDNhOGZlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CkBAIC0wLDAgKzEsMjYgQEAKK2lt
cG9ydCByZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YShyZXF1ZXN0KToKKyAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1w/Yml0PShcZCspJCcsIHJlcXVl
c3Qud3NfcmVzb3VyY2UpCisgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IFF1ZXJ5IHZhbHVlIGlzIGluY29ycmVjdCBvciBt
aXNzaW5nJykKKyAgICAgICAgcmV0dXJuCisKKyAgICBiaXQgPSBpbnQobWF0Y2guZ3JvdXAoMSkp
CisgICAgbWVzc2FnZSA9ICJUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIGlnbm9yZWQuIgorICAgIGlm
IGJpdCA9PSAxOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5P
UENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAxLCAwLCAwLCAwKSArIG1lc3NhZ2UKKyAgICBl
bGlmIGJpdCA9PSAyOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1v
bi5PUENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAwLCAxLCAwLCAwKSArIG1lc3NhZ2UKKyAg
ICBlbGlmIGJpdCA9PSAzOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNv
bW1vbi5PUENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAwLCAwLCAxLCAwKSArIG1lc3NhZ2UK
KyAgICBlbHNlOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnRkFJ
TDogSW52YWxpZCBiaXQgbnVtYmVyOiAlZCcgJSBiaXQpCisgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXRlKGZyYW1lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTU1OTBjNjQ5ODc4YmM1MTBmNzdjNGQ0YTZkNTdmOGY1YTdjZDYw
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1OCBAQAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDMKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiA0CitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogNQorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDYKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiA3CitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogMTEKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAxMgorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDEzCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogMTQKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAxNQorVGVzdHMgd2hldGhlciBX
ZWJTb2NrZXQgaWdub3JlcyBmcmFtZXMgd2l0aCByZXNlcnZlZCBvcGNvZGUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworT3Bjb2RlIDM6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdh
cyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVh
biBpcyBmYWxzZQorT3Bjb2RlIDQ6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQu
CitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxz
ZQorT3Bjb2RlIDU6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3Nl
KCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2Rl
IDY6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNh
bGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDc6IFRlc3Qg
c3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BB
U1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDExOiBUZXN0IHN0YXJ0ZWQu
Citvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK09wY29kZSAxMjogVGVzdCBzdGFydGVkLgorb25vcGVu
KCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIGZhbHNlCitPcGNvZGUgMTM6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBj
YWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBp
cyBmYWxzZQorT3Bjb2RlIDE0OiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgor
b25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UK
K09wY29kZSAxNTogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2Uo
KSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNv
ZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jl
c2VydmVkLW9wY29kZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE5NWM2ODFhNDZkNjc2ZGFkMmE0ZWU3
ZjRmMDA2N2U0MjM2YmJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLmh0bWwKQEAgLTAsMCArMSw2
MSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB3aGV0aGVyIFdlYlNvY2tldCBpZ25vcmVzIGZy
YW1lcyB3aXRoIHJlc2VydmVkIG9wY29kZS4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7CisKK2Z1bmN0aW9uIGRvVGVzdChvcGNv
ZGUpCit7CisgICAgaWYgKG9wY29kZSA+PSAweDEwKSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChvcGNvZGUgPT0gMHgwIHx8IG9wY29k
ZSA9PSAweDEgfHwgb3Bjb2RlID09IDB4MiB8fCBvcGNvZGUgPT0gMHg4IHx8IG9wY29kZSA9PSAw
eDkgfHwgb3Bjb2RlID09IDB4QSkgeworICAgICAgICBkb1Rlc3Qob3Bjb2RlICsgMSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygiT3Bjb2RlICIgKyBvcGNvZGUgKyAiOiBU
ZXN0IHN0YXJ0ZWQuIik7CisKKyAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcz9vcGNvZGU9IiArIG9wY29kZTsKKyAg
ICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisKKyAgICB3cy5vbm9wZW4gPSBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKKyAgICB9
OworCisgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2
YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgp
IHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKKyAgICB9Owor
CisgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWco
Im9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7Cisg
ICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAgZG9U
ZXN0KG9wY29kZSArIDEpOworICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1vcGNvZGVzX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlc193c2gucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0
OTVjODhhOTgwMzk3MmUxZWY1MGU3MWQ3M2M5MmFhYjcxMDgyMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bj
b2Rlc193c2gucHkKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IHJlCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1w/b3Bjb2Rl
PShcZCspJCcsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAg
ICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IFF1ZXJ5IHZhbHVlIGlz
IGluY29ycmVjdCBvciBtaXNzaW5nJykKKyAgICAgICAgcmV0dXJuCisKKyAgICBvcGNvZGUgPSBp
bnQobWF0Y2guZ3JvdXAoMSkpCisgICAgcGF5bG9hZCA9ICdUaGlzIHRleHQgc2hvdWxkIGJlIGln
bm9yZWQuIChvcGNvZGUgPSAlZCknICUgb3Bjb2RlCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXRlKHN0cmVhbS5jcmVhdGVfaGVhZGVyKG9wY29kZSwgbGVuKHBheWxvYWQpLCAxLCAwLCAwLCAw
LCAwKSArIHBheWxvYWQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5CmluZGV4IGUyMjE3ZmEzZDUyYzBmZTNkOThk
NjJjNGQxODE0MjcwOWRhY2YxNzIuLjUzYjZkODEwYTAzN2JhY2E1MGM3NmZjZWNlZjA3OTE1NWMy
NGFlMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZDJfd3NoLnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5CkBAIC0xLDggKzEsMTAgQEAKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBzdHJlYW0KKworCiBkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6CiAgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCiAKIAogZGVmIHdlYl9zb2Nr
ZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKICAgICAjIHNlbmQgMiBtZXNzYWdlcyBpbiBvbmUg
cGFja2V0LgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgiXHgwMCIgKyAiZmlyc3QgbWVz
c2FnZSIgKyAiXHhmZiIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHgwMCIgKyAi
c2Vjb25kIG1lc3NhZ2UiICsgIlx4ZmYiKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShz
dHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoImZpcnN0IG1lc3NhZ2UiKSArIHN0cmVhbS5jcmVhdGVf
dGV4dF9mcmFtZSgic2Vjb25kIG1lc3NhZ2UiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25n
LXBheWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMWI2ZGM5NzA3ZjAzMWQzZWVlNTAz
NTVlM2ExYjc5NDQ3NTM0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25nLXBheWxvYWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBXZWJTb2NrZXQgZnJhbWUg
bGVuZ3RoIHRvbyBsYXJnZTogOTIyMzM3MjAzNjg1NDc3NTgwOCBieXRlcworVGVzdHMgd2hldGhl
ciBXZWJTb2NrZXQgY29ycmVjdGx5IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3aGVuIGl0IHJlY2Vp
dmVzIGEgZnJhbWUgd2l0aCB0b28gbG9uZyBwYXlsb2FkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BB
U1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzA0YmUzYTdlMmI4NmYwYTllMWY2NTFkYmE3ZGIxY2JiMDM4NDhhYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlw
dGlvbigiVGVzdHMgd2hldGhlciBXZWJTb2NrZXQgY29ycmVjdGx5IGFib3J0cyB0aGUgY29ubmVj
dGlvbiB3aGVuIGl0IHJlY2VpdmVzIGEgZnJhbWUgd2l0aCB0b28gbG9uZyBwYXlsb2FkLiIpOwor
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBuZXcg
V2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1s
b25nLXBheWxvYWQiKTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigp
Cit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7Cisg
ICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBt
ZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2ZW50ID0gZXZl
bnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmct
cGF5bG9hZF93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVjZGEzNDhhMDYxMzZkYzI5ZTUwMjc1NWY5OGVj
ODk5NmM2YjM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZF93c2gucHkKQEAgLTAsMCArMSwyNCBA
QAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHRpbWUKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBjb21tb24KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgbGVuZ3RoID0gMHg4MDAwMDAwMDAwMDAwMDAwCisKKyAgICAjIHB5d2Vic29ja2V0IHJlZnVz
ZXMgdG8gc2VuZCBhIGZyYW1lIHdpdGggdG9vIGxvbmcgcGF5bG9hZC4KKyAgICAjIFRodXMsIHdl
IG5lZWQgdG8gYnVpbGQgYSBmcmFtZSBtYW51YWxseS4KKyAgICBoZWFkZXIgPSBjaHIoMHg4MCB8
IGNvbW1vbi5PUENPREVfVEVYVCkgIyAweDgwIGlzIGZvciAiZmluIiBiaXQuCisgICAgaGVhZGVy
ICs9IGNocigxMjcpCisgICAgaGVhZGVyICs9IHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaGVhZGVyKQorCisgICAgIyBTZW5kIGRhdGEgaW5k
ZWZpbml0ZWx5IHRvIHNpbXVsYXRlIGEgcmVhbCAoYnJva2VuKSBzZXJ2ZXIgc2VuZGluZyBhIGJp
ZyBmcmFtZS4KKyAgICAjIEEgY2xpZW50IHNob3VsZCBpZ25vcmUgdGhlc2UgYnl0ZXMgYW5kIGFi
b3J0IHRoZSBjb25uZWN0aW9uLgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0ZSgnWCcgKiA0MDk2KQorICAgICAgICB0aW1lLnNsZWVwKDEpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5k
ZXggZTlkNTk2MTQ2NTExNjM5YWIwMWQ2ZjY3NTBjYTRhNDQyZGRkMDM0NC4uZjhhZWIwNjM3ZjE2
MDQ5M2RlNzkwNTEzZDg5ZjQ4NTQzOWFmNzFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNDYsNiArNDYsNyBAQCBC
VUdDUjE4NzAyIFdJTiA6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1j
b250ZW50LXR5cGVzLmh0bWwgPSBQQQogQlVHQ1IzNjUzOSBTTE9XIDogaHR0cC90ZXN0cy9taXNj
L3VuY2FjaGVhYmxlLXNjcmlwdC1yZXBlYXRlZC5odG1sID0gUEFTUwogCiBCVUdDUjMyMDE4IFNM
T1cgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2ZyYW1lLWxlbmd0aHMuaHRt
bCA9IFBBU1MKK0JVR0NSMzIwMTggU0xPVyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZnJhbWUtbGVuZ3Rocy5odG1sID0gUEFTUwogQlVHQ1I2OTUxMyBERUJVRyBTTE9XIDogaHRt
bDVsaWIvd2Via2l0LXJlc3VtZXIuaHRtbCA9IFBBU1MKIAogQlVHV0s1NTkxMyBSRUxFQVNFIFNM
T1cgOiBqcXVlcnkvZWZmZWN0cy5odG1sID0gUEFTUwpAQCAtMTA1LDYgKzEwNiw3IEBAIFdPTlRG
SVggU0tJUCA6IGh0dHAvdGVzdHMvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklY
IFNLSVAgOiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMgPSBQQVNTIFRJTUVPVVQg
RkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9ldmVudHNvdXJjZS93b3JrZXJzID0gUEFT
UyBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2hpeGllNzYvd29ya2Vycy8gPSBQQVNTIFRJTUVPVVQgRkFJTAorV09OVEZJWCBTS0lQIDogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzLyA9IFBBU1MgVElNRU9VVCBGQUlM
CiBXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1s
ID0gUEFTUyBUSU1FT1VUIEZBSUwKIAogLy8gUGFnZSBDYWNoZSAtIGJhc2VkIHRlc3RzLiBDaHJv
bWl1bSBkaXNhYmxlcyBwYWdlIGNhY2hlIGJlY2F1c2UgdGhlIFdlYktpdCBwYWdlIGNhY2hlIGtl
ZXBzIHByZXZpb3VzbHkKQEAgLTE2MSw5ICsxNjMsNiBAQCBXT05URklYIFNLSVAgOiBhbmltYXRp
b25zL2FuaW1hdGlvbi1hcGktMS5odG1sID0gRkFJTAogLy8gVW5za2lwIGFmdGVyIGltcGxlbWVu
dGluZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGVmZXJzTG9hZGluZyBhbmQgOjpnb0JhY2su
CiBCVUdXSzYwODc3IFNLSVAgOiBsb2FkZXIvbmF2aWdhdGlvbi13aGlsZS1kZWZlcnJpbmctbG9h
ZHMuaHRtbCA9IEZBSUwKIAotLy8gU2tpcHBlZCB1bnRpbCBuZXcgV2ViU29ja2V0IHByb3RvY29s
IGlzIGltcGxlbWVudGVkLgotQlVHV0s1MDA5OSBTS0lQIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS8gPSBQQVNTIEZBSUwgVElNRU9VVAotCiAvLyBDU1MzIFNlbGVjdG9yczMgdGVz
dCBzdWl0ZQogQlVHQ1I4OTQ2OCA6IGNzczMvc2VsZWN0b3JzMyA9IFBBU1MgRkFJTAogCkBAIC0x
NzI2LDYgKzE3MjUsNyBAQCBCVUdDUjMxNjIzIFdJTiA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVt
b3ZlLWNhY2hlLmh0bWwgPSBQQVNTIFRFWFQgVElNRU9VVAogCiAvLyBXZWJLaXQgcm9sbCA1Mjg1
MiAtPiA1Mjg2NwogQlVHQ1IzMjAxOCBERUJVRyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2hpeGllNzYvc2ltcGxlLXN0cmVzcy5odG1sID0gUEFTUyBURVhUIFRJTUVPVVQKK0JVR0NSMzIw
MTggREVCVUcgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NpbXBsZS1zdHJlc3Mu
aHRtbCA9IFBBU1MgVEVYVCBUSU1FT1VUCiAKIC8vIFY4J3MgaW1wbGVtZW50YXRpb24gb2YgZ2V0
T3duUHJvcGVydHlOYW1lcyBoYXMgZGlmZmVyZW50IHJlc3VsdHMgZm9yIGJ1aWx0LWluCiAvLyBm
dW5jdGlvbnMuCkBAIC0yODA1LDYgKzI4MDUsNyBAQCBCVUdDUjczMDgwIExJTlVYIERFQlVHIDog
ZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci5odG1sID0gUEFTUyBUSQog
QlVHQ1I3MzA5MSA6IGFuaW1hdGlvbnMvcGxheS1zdGF0ZS1zdXNwZW5kLmh0bWwgPSBQQVNTIFRF
WFQKIEJVR0NSNzMwOTIgV0lOIDogZmFzdC9kb20vZ2MtMTEuaHRtbCA9IFBBU1MgVEVYVAogQlVH
Q1I3MzA5NCBMSU5VWCA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvc2VuZC1h
ZnRlci1jbG9zZS1vbi11bmxvYWQuaHRtbCA9IFBBU1MgVElNRU9VVAorQlVHQ1I3MzA5NCBMSU5V
WCA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hZnRlci1jbG9zZS1vbi11
bmxvYWQuaHRtbCA9IFBBU1MgVElNRU9VVAogCiBCVUdWOF8xMTY4IDogZmFzdC9qcy9tb3ppbGxh
L2V2YWwvZXhoYXVzdGl2ZS1mdW4tbm9ybWFsY2FsbGVyLWluZGlyZWN0LXN0cmljdGNvZGUuaHRt
bCA9IFRFWFQKIEJVR1Y4XzExNjggOiBmYXN0L2pzL21vemlsbGEvZXZhbC9leGhhdXN0aXZlLWZ1
bi1zdHJpY3RjYWxsZXItaW5kaXJlY3Qtc3RyaWN0Y29kZS5odG1sID0gVEVYVApAQCAtMzY1NSw2
ICszNjU2LDcgQEAgQlVHV0s2MTY2NCBMSU5VWCA6IHN2Zy96b29tL3BhZ2UvcmVsYXRpdmUtc2l6
ZWQtZG9jdW1lbnQtc2Nyb2xsYmFycy5zdmcgPSBJTUFHRQogQlVHQ1I4NDMxNyBERUJVRyA6IHN2
Zy93aWNkL3Rlc3Qtc2NhbGFibGUtYmFja2dyb3VuZC1pbWFnZTEueGh0bWwgPSBDUkFTSAogCiBC
VUdXSzYxNzY3IFdJTiBERUJVRyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
Y2xpZW50LWNsb3NlLmh0bWwgPSBQQVNTIFRFWFQKK0JVR1dLNjE3NjcgV0lOIERFQlVHIDogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xvc2UuaHRtbCA9IFBBU1MgVEVY
VAogCiBCVUdXSzU5NzgyIFdJTiBMSU5VWCBERUJVRyA6IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC1kb20tZHgtYXR0ci5odG1sID0gVElNRU9VVAogQlVHV0s1OTc4
MiBXSU4gTElOVVggREVCVUcgOiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQtZG9tLWR5LWF0dHIuaHRtbCA9IFRJTUVPVVQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
aW5kZXggODgyNWQxMWRiZGJhMTM5OGMxYjJiMTUxOWE0NWUzMzljNmM2ZjI4OS4uYzQ5NjY2Yzhm
NzU5YzEwMmVjMDc3MzM3YjA4ZTg0MjQ1MzQ5MjE3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBw
ZWQKQEAgLTM4Niw2ICszODYsMyBAQCBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC1v
dmVyZmxvdy1zY3JvbGxlZC5odG1sCiBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC1v
dmVyZmxvdy5odG1sCiBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC5odG1sCiBjb21w
b3NpdGluZy9ydGwvcnRsLWlmcmFtZS1yZWxhdGl2ZS5odG1sCi0KLSMgU2tpcHBlZCB1bnRpbCBu
ZXcgV2ViU29ja2V0IHByb3RvY29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9i
LzUwMDk5Ci1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAppbmRleCA1ODFlM2E1ZDI2NzIyYjY4MzE5OWE2NDlmMzc4Mzc1MGJiZGI0ZTU1Li44
NGM3Y2NmMTA3OGZjOTE2OWY3OWJjMjg4YTAyZDM2N2U1NDQ1NGU3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZApAQCAtMTM0Niw4ICsxMzQ2LDUgQEAgZmFzdC93b3JrZXJzL3dvcmtlci1jcmFz
aC13aXRoLWludmFsaWQtbG9jYXRpb24uaHRtbAogIyBOZWVkIHRvIGltcGxlbWVudCBnZXRGb3Jt
VmFsdWUoKS4KIHBsdWdpbnMvZm9ybS12YWx1ZS5odG1sCiAKLSMgU2tpcHBlZCB1bnRpbCBuZXcg
V2ViU29ja2V0IHByb3RvY29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzUw
MDk5Ci1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLwotCiAjIE5lZWRzIGdlbmVyYXRl
ZCByZXN1bHRzCiBjc3MzL3NlbGVjdG9yczMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzIwNTQ3YjVlNDkzM2Qy
Y2Y5NmVjZDliMTNiYzU0OGU5YTNiZDE5Li45NmQ2OTcyYzg3MGZiMjM0MTI1MDUzNzFlMDlkZWZm
OTMwMGE2ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDctMTggIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBJbXBs
ZW1lbnQgaHliaSBmcmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCBXZWJTb2NrZXQgZnJhbWluZyBwcm90b2NvbCB3aGljaCBpcyBt
YWlubHkgZGVzY3JpYmVkIGluCisgICAgICAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9k
cmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMTAjc2VjdGlvbi00PiBhbmQKKyAg
ICAgICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS10aGV3ZWJz
b2NrZXRwcm90b2NvbC0xMCNzZWN0aW9uLTY+LgorCisgICAgICAgIEh5YmkgcHJvdG9jb2wgaW50
cm9kdWNlcyBhIG5ldyBmcmFtZSBmb3JtYXQgd2hpY2ggaXMgZHJhc3RpY2FsbHkgZGlmZmVyZW50
IGZyb20KKyAgICAgICAgdGhlIG9sZCBvbmUuIE5vdGFibGUgZGlmZmVyZW5jZXMgYXJlOgorICAg
ICAgICAtIEJpbmFyeSBkYXRhIHN1cHBvcnQuCisgICAgICAgIC0gRnJhZ21lbnRhdGlvbiBzdXBw
b3J0OiBhIHNpbmdsZSBtZXNzYWdlIGNhbiBiZSBmcmFnbWVudGVkIHRvIG11bHRpcGxlIGZyYW1l
cy4KKyAgICAgICAgLSBQaW5nLXBvbmcgc3VwcG9ydC4KKyAgICAgICAgLSBNYXNraW5nOiBmcmFt
ZSBjb250ZW50IG9mIGEgY2xpZW50IG11c3QgYmUgbWFza2VkIHRvIHByZXZlbnQgY3Jvc3MtcHJv
dG9jb2wgYXR0YWNrcy4KKworICAgICAgICBUaGlzIHBhdGNoIGNvdmVycyB0aGUgZm9sbG93aW5n
IGZlYXR1cmVzOgorICAgICAgICAtIFNlbmQgYSBwb25nIGZyYW1lIHdoZW4gYSBwaW5nIGZyYW1l
IGlzIHJlY2VpdmVkLgorICAgICAgICAtIFJlY2VpdmUgZnJhZ21lbnRlZCBmcmFtZXMuCisgICAg
ICAgIC0gUmVjZWl2ZSBtYXNrZWQgZnJhbWVzLiAoU2VydmVycyBkbyBub3QgaGF2ZSB0byBtYXNr
IGZyYW1lcywgYnV0IHRoZXkgbWF5IGlmIHRoZXkgd2lzaC4pCisKKyAgICAgICAgVGhlIGZvbGxv
d2luZyBmZWF0dXJlcyBhcmUgTk9UIGltcGxlbWVudGVkIHlldDoKKyAgICAgICAgLSBTZW5kIG9y
IHJlY2VpdmUgYmluYXJ5IG1lc3NhZ2VzLgorICAgICAgICAtIFNlbmQgYSBwaW5nIG1lc3NhZ2Uu
CisgICAgICAgIC0gU2VuZCBmcmFnbWVudGVkIGZyYW1lcy4gKEl0IGlzIHVuY2xlYXIgd2hldGhl
ciB0aGlzIGlzIG5lY2Vzc2FyeS4pCisgICAgICAgIC0gUmV3cml0ZSB0aGUgZnJhbWUgY29udGVu
dCBieSBXZWJTb2NrZXQgcHJvdG9jb2wgZXh0ZW5zaW9ucyAobGlrZSBmcmFtZSBjb21wcmVzc2lv
bikuCisKKyAgICAgICAgTmV3IHRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2Jyb2tlbi11dGY4Lmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS5odG1sCisgICAgICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1lcy5o
dG1sCisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9p
bnRlcmxlYXZlZC1mcmFnbWVudHMuaHRtbAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMuaHRt
bAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9u
Zy5odG1sCisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9yZXNlcnZlZC1iaXRzLmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29kZXMuaHRtbAorICAgICAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sCisK
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgVGhlIG9yaWdpbmFsIGNvbnRl
bnQgb2Ygc2VuZCgpIHdhcyBtb3ZlZCB0byBhIHByaXZhdGUgbWV0aG9kIHNlbmRGcmFtZUhpeGll
NzYoKS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmZhaWwpOgorICAgICAg
ICBTdG9wIGhhbmRsaW5nIGluY29taW5nIGRhdGEgYWZ0ZXIgdGhlIFdlYlNvY2tldCBjb25uZWN0
aW9uIGlzIGZhaWxlZC4KKyAgICAgICAgSXQgd2FzIHVuY2xlYXIgdG8gbWUgd2hldGhlciB3ZSBz
aG91bGQgZG8gdGhlIHNhbWUgdGhpbmcgZm9yIGhpeGllLTc2IGNvbm5lY3Rpb247CisgICAgICAg
IGZvciBub3csIEkga2VwdCB0aGUgb3JpZ2luYWwgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OmNsb3NpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6c2VuZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OnNlbmRGcmFtZUhpeGllNzYpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6aXNOb25Db250cm9sT3BD
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmlzQ29udHJvbE9wQ29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjppc1Jlc2VydmVkT3BDb2Rl
KToKKwogMjAxMS0wNy0xOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBXZWIgSW5zcGVjdG9yOiBwcm92aWRlIHVuaXF1ZSBp
ZGVudGlmaWVycyBmb3IgbG9hZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNmZiMzFhZjAzYWZjYzFjZWEwMTRlZWE3YTM4YzExZmVj
N2YzNmEyOS4uNzg3MWZhYmQwN2JiMGExZjhkMWM5MDg3ZjM1MWMzYjFlNTJjNmI0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00OCwx
NyArNDgsMzggQEAKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5o
PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGRvdWJsZSBUQ1BNYXhpbXVt
U2VnbWVudExpZmV0aW1lID0gMiAqIDYwLjA7CiAKKy8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBm
cmFtZSBmb3JtYXQuCitjb25zdCB1bnNpZ25lZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKK2NvbnN0
IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQxQml0ID0gMHg0MDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIg
cmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQzQml0ID0g
MHgxMDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgb3BDb2RlTWFzayA9IDB4RjsKK2NvbnN0IHVuc2ln
bmVkIGNoYXIgbWFza0JpdCA9IDB4ODA7Citjb25zdCB1bnNpZ25lZCBjaGFyIHBheWxvYWRMZW5n
dGhNYXNrID0gMHg3RjsKK2NvbnN0IHNpemVfdCBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVu
ZGVkTGVuZ3RoRmllbGQgPSAxMjU7Citjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhUd29C
eXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNjsKK2NvbnN0IHNpemVfdCBwYXlsb2FkTGVuZ3Ro
V2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjc7Citjb25zdCBzaXplX3QgbWFz
a2luZ0tleVdpZHRoSW5CeXRlcyA9IDQ7CisKK2NvbnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29k
ZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVDb250aW51YXRpb24gPSAweDA7Citjb25zdCBXZWJT
b2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlVGV4dCA9IDB4MTsK
K2NvbnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVC
aW5hcnkgPSAweDI7Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hh
bm5lbDo6T3BDb2RlQ2xvc2UgPSAweDg7Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGUg
V2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlUGluZyA9IDB4OTsKK2NvbnN0IFdlYlNvY2tldENoYW5u
ZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVQb25nID0gMHhBOworCiBXZWJTb2Nr
ZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Ns
aWVudChjbGllbnQpCkBAIC03NCw2ICs5NSw3IEBAIFdlYlNvY2tldENoYW5uZWw6OldlYlNvY2tl
dENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhCiAg
ICAgLCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KDApCiAgICAgLCBtX2lkZW50aWZpZXIoMCkK
ICAgICAsIG1fdXNlSGl4aWU3NlByb3RvY29sKHRydWUpCisgICAgLCBtX2hhc0NvbnRpbnVvdXNG
cmFtZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsK
QEAgLTEwMiwxNyArMTI0LDEzIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCiAg
ICAgbV9oYW5kbGUgPSBTb2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZShtX2hhbmRzaGFrZS0+dXJs
KCksIHRoaXMpOwogfQogCi1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5n
JiBtc2cpCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhp
cywgbXNnLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChtX2hhbmRsZSk7Ci0gICAgQVNTRVJU
KCFtX3N1c3BlbmRlZCk7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZjsKLSAgICBidWYuYXBwZW5kKCdc
MCcpOyAgLy8gZnJhbWUgdHlwZQotICAgIENTdHJpbmcgdXRmOCA9IG1zZy51dGY4KCk7Ci0gICAg
YnVmLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgYnVmLmFwcGVuZCgn
XHhmZicpOyAgLy8gZnJhbWUgZW5kCi0gICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRh
KCksIGJ1Zi5zaXplKCkpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBz
ZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBDU3RyaW5nIHV0Zjgg
PSBtZXNzYWdlLnV0ZjgoKTsKKyAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpCisgICAgICAg
IHJldHVybiBzZW5kRnJhbWVIaXhpZTc2KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAg
ICByZXR1cm4gc2VuZEZyYW1lKE9wQ29kZVRleHQsIHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgp
KTsKIH0KIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgp
IGNvbnN0CkBAIC0xNDAsNiArMTU4LDE2IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChj
b25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBpZiAo
bV9jb250ZXh0KQogICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIHJlYXNvbiwgMCwgbV9oYW5kc2hh
a2UtPmNsaWVudE9yaWdpbigpLCAwKTsKKyAgICBpZiAoIW1fdXNlSGl4aWU3NlByb3RvY29sKSB7
CisgICAgICAgIC8vIEh5YmktMTAgc3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5IHN0YXRlcyB3ZSBt
dXN0IG5vdCBjb250aW51ZSB0byBoYW5kbGUgaW5jb21pbmcgZGF0YQorICAgICAgICAvLyBvbmNl
IHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBmYWlsZWQgKHNlY3Rpb24gNy4xLjcpLgorICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRvIHRoaXMgaW4gaGl4aWUtNzYgdG9vPworICAgICAg
ICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOworICAgICAgICBpZiAobV9idWZm
ZXIpCisgICAgICAgICAgICBza2lwQnVmZmVyKG1fYnVmZmVyU2l6ZSk7IC8vIFNhdmUgbWVtb3J5
LgorICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZhbHNlOworICAgICAgICBtX2NvbnRp
bnVvdXNGcmFtZURhdGEuY2xlYXIoKTsKKyAgICB9CiAgICAgaWYgKG1faGFuZGxlICYmICFtX2Ns
b3NlZCkKICAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsgLy8gV2lsbCBjYWxsIGRpZENs
b3NlKCkuCiB9CkBAIC0zNDUsNiArMzczLDI1NiBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NCdWZmZXIoKQogICAgIGlmIChtX2hhbmRzaGFrZS0+bW9kZSgpICE9IFdlYlNvY2tldEhh
bmRzaGFrZTo6Q29ubmVjdGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAobV91
c2VIaXhpZTc2UHJvdG9jb2wpCisgICAgICAgIHJldHVybiBwcm9jZXNzRnJhbWVIaXhpZTc2KCk7
CisKKyAgICByZXR1cm4gcHJvY2Vzc0ZyYW1lKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fcmVzdW1lVGltZXIpOworCisgICAg
UmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QodGhpcyk7IC8vIFRoZSBjbGllbnQgY2Fu
IGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVu
Y2UuCisgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiBtX2J1ZmZlcikKKyAg
ICAgICAgaWYgKCFwcm9jZXNzQnVmZmVyKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICBpZiAo
IW1fc3VzcGVuZGVkICYmIG1fY2xpZW50ICYmIG1fY2xvc2VkICYmIG1faGFuZGxlKQorICAgICAg
ICBkaWRDbG9zZShtX2hhbmRsZS5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xvc2luZywgbV9yZWNlaXZlZENsb3Np
bmdIYW5kc2hha2UpOworICAgIGlmIChtX2Nsb3NpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBB
U1NFUlQobV9oYW5kbGUpOworICAgIGJvb2wgc2VudFN1Y2Nlc3NmdWxseTsKKyAgICBpZiAobV91
c2VIaXhpZTc2UHJvdG9jb2wpIHsKKyAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZjsKKyAgICAgICAg
YnVmLmFwcGVuZCgnXHhmZicpOworICAgICAgICBidWYuYXBwZW5kKCdcMCcpOworICAgICAgICBz
ZW50U3VjY2Vzc2Z1bGx5ID0gbV9oYW5kbGUtPnNlbmQoYnVmLmRhdGEoKSwgYnVmLnNpemUoKSk7
CisgICAgfSBlbHNlCisgICAgICAgIHNlbnRTdWNjZXNzZnVsbHkgPSBzZW5kRnJhbWUoT3BDb2Rl
Q2xvc2UsICIiLCAwKTsgLy8gRklYTUU6IFNlbmQgc3RhdHVzIGNvZGUgYW5kIHJlYXNvbiBtZXNz
YWdlLgorCisgICAgaWYgKCFzZW50U3VjY2Vzc2Z1bGx5KSB7CisgICAgICAgIG1faGFuZGxlLT5k
aXNjb25uZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jbG9zaW5nID0gdHJ1
ZTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdI
YW5kc2hha2UoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJl
ZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCit7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgdGltZXIiLCB0aGlzKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHRpbWVyLCAmbV9jbG9zaW5nVGltZXIgPT0gdGltZXIpOworICAgIGlmIChtX2hhbmRsZSkK
KyAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsKK30KKworV2ViU29ja2V0Q2hhbm5lbDo6
UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpwYXJzZUZyYW1lKEZyYW1lRGF0YSYg
ZnJhbWUpCit7CisgICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVyOworICAgIGNvbnN0IGNoYXIq
IGJ1ZmZlckVuZCA9IG1fYnVmZmVyICsgbV9idWZmZXJTaXplOworCisgICAgaWYgKG1fYnVmZmVy
U2l6ZSA8IDIpCisgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CisKKyAgICB1bnNpZ25l
ZCBjaGFyIGZpcnN0Qnl0ZSA9ICpwKys7CisgICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0g
KnArKzsKKworICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKKyAgICBib29s
IHJlc2VydmVkMSA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkMUJpdDsKKyAgICBib29sIHJlc2VydmVk
MiA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkMkJpdDsKKyAgICBib29sIHJlc2VydmVkMyA9IGZpcnN0
Qnl0ZSAmIHJlc2VydmVkM0JpdDsKKyAgICBPcENvZGUgb3BDb2RlID0gZmlyc3RCeXRlICYgb3BD
b2RlTWFzazsKKworICAgIGJvb2wgbWFza2VkID0gc2Vjb25kQnl0ZSAmIG1hc2tCaXQ7CisgICAg
dWludDY0X3QgcGF5bG9hZExlbmd0aDY0ID0gc2Vjb25kQnl0ZSAmIHBheWxvYWRMZW5ndGhNYXNr
OworICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVu
ZGVkTGVuZ3RoRmllbGQpIHsKKyAgICAgICAgaW50IGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemU7
CisgICAgICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPT0gcGF5bG9hZExlbmd0aFdpdGhUd29CeXRl
RXh0ZW5kZWRMZW5ndGhGaWVsZCkKKyAgICAgICAgICAgIGV4dGVuZGVkUGF5bG9hZExlbmd0aFNp
emUgPSAyOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChwYXlsb2FkTGVuZ3Ro
NjQgPT0gcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkKTsKKyAg
ICAgICAgICAgIGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUgPSA4OworICAgICAgICB9CisgICAg
ICAgIGlmIChidWZmZXJFbmQgLSBwIDwgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSkKKyAgICAg
ICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CisgICAgICAgIHBheWxvYWRMZW5ndGg2NCA9
IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6
ZTsgKytpKSB7CisgICAgICAgICAgICBwYXlsb2FkTGVuZ3RoNjQgPDw9IDg7CisgICAgICAgICAg
ICBwYXlsb2FkTGVuZ3RoNjQgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnArKyk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHN0YXRpYyBjb25zdCB1
aW50NjRfdCBtYXhQYXlsb2FkTGVuZ3RoID0gMHg3RkZGRkZGRkZGRkZGRkZGdWk2NDsKKyNlbHNl
CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG1heFBheWxvYWRMZW5ndGggPSAweDdGRkZGRkZG
RkZGRkZGRkZ1bGw7CisjZW5kaWYKKyAgICBzaXplX3QgbWFza2luZ0tleUxlbmd0aCA9IG1hc2tl
ZCA/IG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMgOiAwOworICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQg
PiBtYXhQYXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5ndGg2NCArIG1hc2tpbmdLZXlMZW5ndGgg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7CisgICAgICAgIGZhaWwoIldl
YlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiAiICsgU3RyaW5nOjpudW1iZXIocGF5bG9h
ZExlbmd0aDY0KSArICIgYnl0ZXMiKTsKKyAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7CisgICAg
fQorICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXlsb2Fk
TGVuZ3RoNjQpOworCisgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyRW5kIC0gcCkg
PCBtYXNraW5nS2V5TGVuZ3RoICsgcGF5bG9hZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIEZyYW1l
SW5jb21wbGV0ZTsKKworICAgIGlmIChtYXNrZWQpIHsKKyAgICAgICAgY29uc3QgY2hhciogbWFz
a2luZ0tleSA9IHA7CisgICAgICAgIGNoYXIqIHBheWxvYWQgPSBjb25zdF9jYXN0PGNoYXIqPihw
ICsgbWFza2luZ0tleVdpZHRoSW5CeXRlcyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGF5bG9hZExlbmd0aDsgKytpKQorICAgICAgICAgICAgcGF5bG9hZFtpXSBePSBtYXNraW5n
S2V5W2kgJSBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzXTsgLy8gVW5tYXNrIHRoZSBwYXlsb2FkLgor
ICAgIH0KKworICAgIGZyYW1lLm9wQ29kZSA9IG9wQ29kZTsKKyAgICBmcmFtZS5maW5hbCA9IGZp
bmFsOworICAgIGZyYW1lLnJlc2VydmVkMSA9IHJlc2VydmVkMTsKKyAgICBmcmFtZS5yZXNlcnZl
ZDIgPSByZXNlcnZlZDI7CisgICAgZnJhbWUucmVzZXJ2ZWQzID0gcmVzZXJ2ZWQzOworICAgIGZy
YW1lLm1hc2tlZCA9IG1hc2tlZDsKKyAgICBmcmFtZS5wYXlsb2FkID0gcCArIG1hc2tpbmdLZXlM
ZW5ndGg7CisgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IHBheWxvYWRMZW5ndGg7CisgICAgZnJh
bWUuZnJhbWVFbmQgPSBwICsgbWFza2luZ0tleUxlbmd0aCArIHBheWxvYWRMZW5ndGg7CisgICAg
cmV0dXJuIEZyYW1lT0s7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1l
KCkKK3sKKyAgICBBU1NFUlQobV9idWZmZXIpOworCisgICAgRnJhbWVEYXRhIGZyYW1lOworICAg
IGlmIChwYXJzZUZyYW1lKGZyYW1lKSAhPSBGcmFtZU9LKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBWYWxpZGF0ZSB0aGUgZnJhbWUgZGF0YS4KKyAgICBpZiAoaXNSZXNlcnZlZE9w
Q29kZShmcmFtZS5vcENvZGUpKSB7CisgICAgICAgIGZhaWwoIlVucmVjb2duaXplZCBmcmFtZSBv
cGNvZGU6ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5vcENvZGUpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChmcmFtZS5yZXNlcnZlZDEgfHwgZnJhbWUucmVzZXJ2
ZWQyIHx8IGZyYW1lLnJlc2VydmVkMykgeworICAgICAgICBmYWlsKCJPbmUgb3IgbW9yZSByZXNl
cnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLnJl
c2VydmVkMSkgKyAiLCByZXNlcnZlZDIgPSAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUucmVzZXJ2
ZWQyKSArICIsIHJlc2VydmVkMyA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5yZXNlcnZlZDMp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEFsbCBjb250cm9sIGZy
YW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVkLgorICAgIGlmIChpc0NvbnRyb2xPcENvZGUoZnJh
bWUub3BDb2RlKSAmJiAhZnJhbWUuZmluYWwpIHsKKyAgICAgICAgZmFpbCgiUmVjZWl2ZWQgZnJh
Z21lbnRlZCBjb250cm9sIGZyYW1lOiBvcGNvZGUgPSAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUu
b3BDb2RlKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBBbGwgY29u
dHJvbCBmcmFtZXMgbXVzdCBoYXZlIGEgcGF5bG9hZCBvZiAxMjUgYnl0ZXMgb3IgbGVzcywgd2hp
Y2ggbWVhbnMgdGhlIGZyYW1lIG11c3Qgbm90IGNvbnRhaW4KKyAgICAvLyB0aGUgImV4dGVuZGVk
IHBheWxvYWQgbGVuZ3RoIiBmaWVsZC4KKyAgICBpZiAoaXNDb250cm9sT3BDb2RlKGZyYW1lLm9w
Q29kZSkgJiYgZnJhbWUucGF5bG9hZExlbmd0aCA+IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0
ZW5kZWRMZW5ndGhGaWVsZCkgeworICAgICAgICBmYWlsKCJSZWNlaXZlZCBjb250cm9sIGZyYW1l
IGhhdmluZyB0b28gbG9uZyBwYXlsb2FkOiAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUucGF5bG9h
ZExlbmd0aCkgKyAiIGJ5dGVzIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICAvLyBBIG5ldyBkYXRhIGZyYW1lIGlzIHJlY2VpdmVkIGJlZm9yZSB0aGUgcHJldmlvdXMgY29u
dGludW91cyBmcmFtZSBmaW5pc2hlcy4KKyAgICAvLyBOb3RlIHRoYXQgY29udHJvbCBmcmFtZXMg
YXJlIGFsbG93ZWQgdG8gY29tZSBpbiB0aGUgbWlkZGxlIG9mIGNvbnRpbnVvdXMgZnJhbWVzLgor
ICAgIGlmIChtX2hhc0NvbnRpbnVvdXNGcmFtZSAmJiBmcmFtZS5vcENvZGUgIT0gT3BDb2RlQ29u
dGludWF0aW9uICYmICFpc0NvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSkgeworICAgICAgICBm
YWlsKCJSZWNlaXZlZCBuZXcgZGF0YSBmcmFtZSBidXQgcHJldmlvdXMgY29udGludW91cyBmcmFt
ZSBpcyB1bmZpbmlzaGVkLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
c3dpdGNoIChmcmFtZS5vcENvZGUpIHsKKyAgICBjYXNlIE9wQ29kZUNvbnRpbnVhdGlvbjoKKyAg
ICAgICAgLy8gVGhyb3cgYXdheSBjb250ZW50IG9mIGEgYmluYXJ5IG1lc3NhZ2UgYmVjYXVzZSBi
aW5hcnkgbWVzc2FnZXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgorICAgICAgICBpZiAobV9jb250
aW51b3VzRnJhbWVPcENvZGUgPT0gT3BDb2RlVGV4dCkKKyAgICAgICAgICAgIG1fY29udGludW91
c0ZyYW1lRGF0YS5hcHBlbmQoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7Cisg
ICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CisgICAgICAgIGlm
IChmcmFtZS5maW5hbCkgeworICAgICAgICAgICAgLy8gb25tZXNzYWdlIGhhbmRsZXIgbWF5IGV2
ZW50dWFsbHkgY2FsbCB0aGUgb3RoZXIgbWV0aG9kcyBvZiB0aGlzIGNoYW5uZWwsCisgICAgICAg
ICAgICAvLyBzbyB3ZSBzaG91bGQgcHJldGVuZCB0aGF0IHdlIGhhdmUgZmluaXNoZWQgdG8gcmVh
ZCB0aGlzIGZyYW1lIGFuZAorICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIG1lbWJl
ciB2YXJpYWJsZXMgYXJlIGluIGEgY29uc2lzdGVudCBzdGF0ZSBiZWZvcmUKKyAgICAgICAgICAg
IC8vIHRoZSBoYW5kbGVyIGlzIGludm9rZWQuCisgICAgICAgICAgICAvLyBWZWN0b3I8Y2hhcj46
OnN3YXAoKSBpcyB1c2VkIGhlcmUgdG8gY2xlYXIgbV9jb250aW51b3VzRnJhbWVEYXRhLgorICAg
ICAgICAgICAgVmVjdG9yPGNoYXI+IGNvbnRpbnVvdXNGcmFtZURhdGE7CisgICAgICAgICAgICBt
X2NvbnRpbnVvdXNGcmFtZURhdGEuc3dhcChjb250aW51b3VzRnJhbWVEYXRhKTsKKyAgICAgICAg
ICAgIG1faGFzQ29udGludW91c0ZyYW1lID0gZmFsc2U7CisgICAgICAgICAgICBpZiAobV9jb250
aW51b3VzRnJhbWVPcENvZGUgPT0gT3BDb2RlVGV4dCkgeworICAgICAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChjb250aW51b3VzRnJhbWVEYXRhLmRhdGEoKSwg
Y29udGludW91c0ZyYW1lRGF0YS5zaXplKCkpOworICAgICAgICAgICAgICAgIGlmIChtZXNzYWdl
LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBmYWlsKCJDb3VsZCBub3QgZGVjb2RlIGEg
dGV4dCBmcmFtZSBhcyBVVEYtOC4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAobV9jb250aW51b3VzRnJhbWVPcENvZGUgPT0gT3BDb2RlQmluYXJ5KSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fY29udGludW91c0ZyYW1lRGF0YS5pc0VtcHR5KCkp
OworICAgICAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGEgYmluYXJ5IGZyYW1lIHdoaWNoIGlz
IG5vdCBzdXBwb3J0ZWQgeWV0LiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBPcENvZGVUZXh0OgorICAgICAgICBpZiAoZnJhbWUuZmluYWwp
IHsKKyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChmcmFtZS5w
YXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKKyAgICAgICAgICAgIHNraXBCdWZmZXIoZnJh
bWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CisgICAgICAgICAgICBpZiAobWVzc2FnZS5pc051bGwo
KSkKKyAgICAgICAgICAgICAgICBmYWlsKCJDb3VsZCBub3QgZGVjb2RlIGEgdGV4dCBmcmFtZSBh
cyBVVEYtOC4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IHRydWU7CisgICAgICAgICAgICBtX2NvbnRpbnVvdXNG
cmFtZU9wQ29kZSA9IE9wQ29kZVRleHQ7CisgICAgICAgICAgICBBU1NFUlQobV9jb250aW51b3Vz
RnJhbWVEYXRhLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEu
YXBwZW5kKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOworICAgICAgICAgICAg
c2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgT3BDb2RlQmluYXJ5OgorICAgICAgICBpZiAoZnJhbWUuZmlu
YWwpCisgICAgICAgICAgICBmYWlsKCJSZWNlaXZlZCBhIGJpbmFyeSBmcmFtZSB3aGljaCBpcyBu
b3Qgc3VwcG9ydGVkIHlldC4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2hhc0Nv
bnRpbnVvdXNGcmFtZSA9IHRydWU7CisgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZU9wQ29k
ZSA9IE9wQ29kZUJpbmFyeTsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvbnRpbnVvdXNGcmFtZURh
dGEuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIC8vIERvIG5vdCBzdG9yZSBkYXRhIG9mIGEgYmlu
YXJ5IG1lc3NhZ2UgdG8gbV9jb250aW51b3VzRnJhbWVEYXRhIHRvIHNhdmUgbWVtb3J5LgorICAg
ICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgT3BDb2RlQ2xvc2U6CisgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgcGF5bG9hZC4KKyAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAt
IG1fYnVmZmVyKTsKKyAgICAgICAgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPSB0cnVlOwor
ICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICAgICAgaWYgKG1fY2xvc2luZykK
KyAgICAgICAgICAgIG1faGFuZGxlLT5jbG9zZSgpOyAvLyBDbG9zZSBhZnRlciBzZW5kaW5nIGEg
Y2xvc2UgZnJhbWUuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBPcENvZGVQaW5nOiB7Cisg
ICAgICAgIGJvb2wgcmVzdWx0ID0gc2VuZEZyYW1lKE9wQ29kZVBvbmcsIGZyYW1lLnBheWxvYWQs
IGZyYW1lLnBheWxvYWRMZW5ndGgpOworICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5k
IC0gbV9idWZmZXIpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGZhaWwoIkZh
aWxlZCB0byBzZW5kIGEgcG9uZyBmcmFtZS4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgY2FzZSBPcENvZGVQb25nOgorICAgICAgICAvLyBBIHNlcnZlciBtYXkgc2VuZCBhIHBvbmcg
aW4gcmVzcG9uc2UgdG8gb3VyIHBpbmcsIG9yIGFuIHVuc29saWNpdGVkIHBvbmcgd2hpY2ggaXMg
bm90IGFzc29jaWF0ZWQgd2l0aAorICAgICAgICAvLyBhbnkgc3BlY2lmaWMgcGluZy4gRWl0aGVy
IHdheSwgdGhlcmUncyBub3RoaW5nIHRvIGRvIG9uIHJlY2VpcHQgb2YgcG9uZy4KKyAgICAgICAg
c2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgc2tp
cEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgcmV0dXJuIG1fYnVmZmVyOworfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NGcmFtZUhpeGllNzYoKQorewogICAgIGNvbnN0IGNoYXIqIG5leHRGcmFtZSA9IG1fYnVm
ZmVyOwogICAgIGNvbnN0IGNoYXIqIHAgPSBtX2J1ZmZlcjsKICAgICBjb25zdCBjaGFyKiBlbmQg
PSBwICsgbV9idWZmZXJTaXplOwpAQCAtNDI3LDQyICs3MDUsNTYgQEAgYm9vbCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiog
dGltZXIpCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShPcENvZGUgb3BDb2RlLCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKLSAgICBBU1NFUlRfVU5VU0VE
KHRpbWVyLCB0aW1lciA9PSAmbV9yZXN1bWVUaW1lcik7CisgICAgQVNTRVJUKG1faGFuZGxlKTsK
KyAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKIAotICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVs
PiBwcm90ZWN0KHRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90
ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgotICAgIHdoaWxlICghbV9zdXNw
ZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9idWZmZXIpCi0gICAgICAgIGlmICghcHJvY2Vzc0J1ZmZl
cigpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgaWYgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVu
dCAmJiBtX2Nsb3NlZCAmJiBtX2hhbmRsZSkKLSAgICAgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0
KCkpOworICAgIFZlY3RvcjxjaGFyPiBmcmFtZTsKKyAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BD
b2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBv
ZiBvcENvZGVzLgorICAgIGZyYW1lLmFwcGVuZChmaW5hbEJpdCB8IG9wQ29kZSk7CisgICAgaWYg
KGRhdGFMZW5ndGggPD0gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxk
KQorICAgICAgICBmcmFtZS5hcHBlbmQobWFza0JpdCB8IGRhdGFMZW5ndGgpOworICAgIGVsc2Ug
aWYgKGRhdGFMZW5ndGggPD0gMHhGRkZGKSB7CisgICAgICAgIGZyYW1lLmFwcGVuZChtYXNrQml0
IHwgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7CisgICAgICAg
IGZyYW1lLmFwcGVuZCgoZGF0YUxlbmd0aCAmIDB4RkYwMCkgPj4gOCk7CisgICAgICAgIGZyYW1l
LmFwcGVuZChkYXRhTGVuZ3RoICYgMHhGRik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnJhbWUu
YXBwZW5kKG1hc2tCaXQgfCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3Ro
RmllbGQpOworICAgICAgICBjaGFyIGV4dGVuZGVkUGF5bG9hZExlbmd0aFs4XTsKKyAgICAgICAg
c2l6ZV90IHJlbWFpbmluZyA9IGRhdGFMZW5ndGg7CisgICAgICAgIC8vIEZpbGwgdGhlIGxlbmd0
aCBpbnRvIGV4dGVuZGVkUGF5bG9hZExlbmd0aCBpbiB0aGUgbmV0d29yayBieXRlIG9yZGVyLgor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICAgICAgZXh0ZW5k
ZWRQYXlsb2FkTGVuZ3RoWzcgLSBpXSA9IHJlbWFpbmluZyAmIDB4RkY7CisgICAgICAgICAgICBy
ZW1haW5pbmcgPj49IDg7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFyZW1haW5pbmcpOwor
ICAgICAgICBmcmFtZS5hcHBlbmQoZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoLCA4KTsKKyAgICB9CisK
KyAgICAvLyBNYXNrIHRoZSBmcmFtZS4KKyAgICBzaXplX3QgbWFza2luZ0tleVN0YXJ0ID0gZnJh
bWUuc2l6ZSgpOworICAgIGZyYW1lLmdyb3coZnJhbWUuc2l6ZSgpICsgbWFza2luZ0tleVdpZHRo
SW5CeXRlcyk7IC8vIEFkZCBwbGFjZWhvbGRlciBmb3IgbWFza2luZyBrZXkuIFdpbGwgYmUgb3Zl
cndyaXR0ZW4uCisgICAgc2l6ZV90IHBheWxvYWRTdGFydCA9IGZyYW1lLnNpemUoKTsKKyAgICBm
cmFtZS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisKKyAgICBjcnlwdG9ncmFwaGljYWxseVJh
bmRvbVZhbHVlcyhmcmFtZS5kYXRhKCkgKyBtYXNraW5nS2V5U3RhcnQsIG1hc2tpbmdLZXlXaWR0
aEluQnl0ZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgKytpKQor
ICAgICAgICBmcmFtZVtwYXlsb2FkU3RhcnQgKyBpXSBePSBmcmFtZVttYXNraW5nS2V5U3RhcnQg
KyBpICUgbWFza2luZ0tleVdpZHRoSW5CeXRlc107CisKKyAgICByZXR1cm4gbV9oYW5kbGUtPnNl
bmQoZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5u
ZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRG
cmFtZUhpeGllNzYoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0aGlzLCBt
X2Nsb3NpbmcsIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKLSAgICBpZiAobV9jbG9zaW5n
KQotICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKLSAgICBWZWN0b3I8Y2hh
cj4gYnVmOwotICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsKLSAgICBidWYuYXBwZW5kKCdcMCcpOwot
ICAgIGlmICghbV9oYW5kbGUtPnNlbmQoYnVmLmRhdGEoKSwgYnVmLnNpemUoKSkpIHsKLSAgICAg
ICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBt
X2Nsb3NpbmcgPSB0cnVlOwotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwotfQorICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwog
Ci12b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NpbmdUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tl
dENoYW5uZWw+KiB0aW1lcikKLXsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgY2xvc2luZyB0aW1lciIsIHRoaXMpOwotICAgIEFTU0VSVF9VTlVTRUQodGltZXIsICZtX2Ns
b3NpbmdUaW1lciA9PSB0aW1lcik7Ci0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hhbmRs
ZS0+ZGlzY29ubmVjdCgpOworICAgIFZlY3RvcjxjaGFyPiBmcmFtZTsKKyAgICBmcmFtZS5hcHBl
bmQoJ1wwJyk7IC8vIEZyYW1lIHR5cGUuCisgICAgZnJhbWUuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIGZyYW1lLmFwcGVuZCgnXHhmZicpOyAvLyBGcmFtZSBlbmQuCisgICAgcmV0dXJu
IG1faGFuZGxlLT5zZW5kKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6ZSgpKTsKIH0KIAogfSAgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmgKaW5kZXggNjQyMWZlYjhjZTA0MzVkMDQ0OWMxNWQ4ZGQzYjgzMjM5Y2FjMjBhOC4u
ZjdhNDcwZTEzZDJkMDZkZThhNzRiOTZhZjU4M2I1NWQzODUxMTMwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtODgsNiArODgsNDUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwog
ICAgICAgICB2b2lkIGNsb3NpbmdUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+Kik7
CiAKKyAgICAgICAgLy8gSHliaS0xMCBvcGNvZGVzLgorICAgICAgICB0eXBlZGVmIHVuc2lnbmVk
IGludCBPcENvZGU7CisgICAgICAgIHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlQ29udGludWF0
aW9uOworICAgICAgICBzdGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZVRleHQ7CisgICAgICAgIHN0
YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlQmluYXJ5OworICAgICAgICBzdGF0aWMgY29uc3QgT3BD
b2RlIE9wQ29kZUNsb3NlOworICAgICAgICBzdGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZVBpbmc7
CisgICAgICAgIHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlUG9uZzsKKworICAgICAgICBzdGF0
aWMgYm9vbCBpc05vbkNvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2Rl
ID09IE9wQ29kZUNvbnRpbnVhdGlvbiB8fCBvcENvZGUgPT0gT3BDb2RlVGV4dCB8fCBvcENvZGUg
PT0gT3BDb2RlQmluYXJ5OyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzQ29udHJvbE9wQ29kZShP
cENvZGUgb3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0gT3BDb2RlQ2xvc2UgfHwgb3BDb2RlID09
IE9wQ29kZVBpbmcgfHwgb3BDb2RlID09IE9wQ29kZVBvbmc7IH0KKyAgICAgICAgc3RhdGljIGJv
b2wgaXNSZXNlcnZlZE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9s
T3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29udHJvbE9wQ29kZShvcENvZGUpOyB9CisKKyAgICAgICAg
ZW51bSBQYXJzZUZyYW1lUmVzdWx0IHsKKyAgICAgICAgICAgIEZyYW1lT0ssCisgICAgICAgICAg
ICBGcmFtZUluY29tcGxldGUsCisgICAgICAgICAgICBGcmFtZUVycm9yCisgICAgICAgIH07CisK
KyAgICAgICAgc3RydWN0IEZyYW1lRGF0YSB7CisgICAgICAgICAgICBPcENvZGUgb3BDb2RlOwor
ICAgICAgICAgICAgYm9vbCBmaW5hbDsKKyAgICAgICAgICAgIGJvb2wgcmVzZXJ2ZWQxOworICAg
ICAgICAgICAgYm9vbCByZXNlcnZlZDI7CisgICAgICAgICAgICBib29sIHJlc2VydmVkMzsKKyAg
ICAgICAgICAgIGJvb2wgbWFza2VkOworICAgICAgICAgICAgY29uc3QgY2hhciogcGF5bG9hZDsK
KyAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoOworICAgICAgICAgICAgY29uc3QgY2hh
ciogZnJhbWVFbmQ7CisgICAgICAgIH07CisKKyAgICAgICAgUGFyc2VGcmFtZVJlc3VsdCBwYXJz
ZUZyYW1lKEZyYW1lRGF0YSYpOyAvLyBNYXkgbW9kaWZ5IHBhcnQgb2YgbV9idWZmZXIgdG8gdW5t
YXNrIHRoZSBmcmFtZS4KKworICAgICAgICBib29sIHByb2Nlc3NGcmFtZSgpOworICAgICAgICBi
b29sIHByb2Nlc3NGcmFtZUhpeGllNzYoKTsKKworICAgICAgICBib29sIHNlbmRGcmFtZShPcENv
ZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgYm9vbCBz
ZW5kRnJhbWVIaXhpZTc2KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKwog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CiAgICAgICAgIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQqIG1fY2xpZW50OwogICAgICAgICBPd25QdHI8V2ViU29ja2V0SGFu
ZHNoYWtlPiBtX2hhbmRzaGFrZTsKQEAgLTEwNyw2ICsxNDYsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsgLy8gbV9pZGVudGlmaWVy
ID09IDAgbWVhbnMgdGhhdCB3ZSBjb3VsZCBub3Qgb2J0YWluIGEgdmFsaWQgaWRlbnRpZmllci4K
IAogICAgICAgICBib29sIG1fdXNlSGl4aWU3NlByb3RvY29sOworCisgICAgICAgIC8vIFByaXZh
dGUgbWVtYmVycyBvbmx5IGZvciBoeWJpLTEwIHByb3RvY29sLgorICAgICAgICBib29sIG1faGFz
Q29udGludW91c0ZyYW1lOworICAgICAgICBPcENvZGUgbV9jb250aW51b3VzRnJhbWVPcENvZGU7
CisgICAgICAgIFZlY3RvcjxjaGFyPiBtX2NvbnRpbnVvdXNGcmFtZURhdGE7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101284</attachid>
            <date>2011-07-19 00:56:52 -0700</date>
            <delta_ts>2011-07-19 01:57:45 -0700</delta_ts>
            <desc>Patch to land</desc>
            <filename>bug-64522-20110719165650.patch</filename>
            <type>text/plain</type>
            <size>74384</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTExODYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTA4MjkxNzBmMjk4NmY3MThhYmRh
N2I5YWI4ZmNmODViZWY0ZDQ1Li44ZGM0MDIzZjRlZWZkMjMzZTBkZGVlNmFhNzUyOGZjZmMzOTZl
OWRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDctMTggIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBJbXBsZW1lbnQgaHliaSBm
cmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgIEZpeCBl
eGlzdGluZyB0ZXN0cyBzbyB0aGV5IG1hdGNoIHRoZSBuZXcgZnJhbWUgZm9ybWF0LCBhbmQgYWRk
IHRlc3RzIGZvciB0aGUgbmV3IGZyYW1lIHR5cGVzCisgICAgICAgIGFuZCBlcnJvciBjb25kaXRp
b25zIHJlbGF0ZWQgdG8gdGhlIG5ldyBmcmFtZSBmb3JtYXQuCisKKyAgICAgICAgVW5za2lwIGh5
YmkgdGVzdHMgb24gbWFjLCB3aW4gYW5kIGNocm9taXVtLiBPdGhlciBwb3J0cyAod2syLCBxdCBh
bmQgZ3RrKSBzdGlsbCBza2lwIHRoZXNlIHRlc3RzCisgICAgICAgIGJlY2F1c2UgdGhleSBkbyBu
b3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgIldlYktpdEhpeGllNzZXZWJTb2NrZXRQ
cm90b2NvbEVuYWJsZWQiCisgICAgICAgIHByZWZlcmVuY2Uga2V5IHZpYSBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2VzKCkgeWV0LgorCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9r
ZW4tdXRmOF93c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9zZS5odG1sOgorICAgICAgICBUaGUgZm9y
bWF0IG9mIGEgY2xvc2UgZnJhbWUgaGFzIGJlZW4gY2hhbmdlZC4gQ3VycmVudGx5LCB3ZSBkbyBu
b3QgaW5jbHVkZSBhbnkgcGF5bG9hZAorICAgICAgICBpbiBhIGNsb3NlIGZyYW1lLCB0aHVzIGl0
IG11c3Qgc3RhcnQgd2l0aCAiXHg4OFx4ODAiIChzZWUgc2VjdGlvbiA0LjEgb2YgaHliaS0xMAor
ICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMpLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlX3dzaC5weToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFt
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1l
X3dzaC5weTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9mcmFnbWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFtZXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZy
YW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9p
bnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250
cm9sLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lX3dzaC5weTogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQt
ZnJhbWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvbWFza2VkLWZyYW1lc193c2gucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Bvbmdfd3NoLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weTogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9yZXNlcnZlZC1vcGNvZGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlc193c2gucHk6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5OgorICAgICAg
ICBTZW5kIHR3byB0ZXh0IGZyYW1lcyBhdCBvbmNlLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9h
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3Rvby1sb25nLXBheWxvYWRfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgIERlcml2ZSB0ZXN0IGV4cGVjdGF0
aW9ucyBvZiBoaXhpZTc2IHRlc3RzLCBiZWNhdXNlIHRoZXNlIHRlc3RzIGFyZSBsaWtlbHkgdG8g
YmVoYXZlCisgICAgICAgIHRoZSBzYW1lIHdheSBhcyBoaXhpZTc2IHRlc3RzLiBXaWxsIGJlIGNo
ZWNrZWQgbGF0ZXIgd2hldGhlciB0aGV5IHJlYWxseSBkby4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0wNy0x
OCAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkOyB1cGRhdGVkIGNocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRm
OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2Jyb2tlbi11dGY4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGI5NmRkZDBhYjk5ODA5
ZmVkYTQyMzZkYzYwMTVhZTViNWE0OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IENvdWxkIG5vdCBkZWNv
ZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04LgorVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBhYm9ydHMg
dGhlIGNvbm5lY3Rpb24gd2hlbiBpdCByZWNlaXZlcyBhIHRleHQgZnJhbWUgY29udGFpbmluZyBi
cm9rZW4gVVRGLTggZGF0YS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4o
KSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2Jyb2tlbi11dGY4Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY0NGE2YTdlZTA1
ZGVjNzNmMjc3Y2E5NzkzOThhMWI1ZWFjOWY1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0ZjguaHRtbApAQCAt
MCwwICsxLDQzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3aGVu
IGl0IHJlY2VpdmVzIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGJyb2tlbiBVVEYtOCBkYXRhLiIp
OworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBu
ZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Jy
b2tlbi11dGY4Iik7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQor
eworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAg
IHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVz
c2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAg
ICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50
OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0Zjhfd3NoLnB5IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOF93c2gu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTUwYjU3NGZhZmFlMzQ2YTNiOTFlMWM4Njg2OGI4ZTI4MjU4MjhjYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvYnJva2VuLXV0Zjhfd3NoLnB5CkBAIC0wLDAgKzEsMTEgQEAKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0K
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFz
cworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGF5bG9h
ZCA9ICdUaGlzIHRleHQgc2hvdWxkIGJlIGlnbm9yZWQuIFx4ZmYnICMgJ1x4ZmYnIHdpbGwgbmV2
ZXIgYXBwZWFyIGluIFVURi04IGVuY29kZWQgZGF0YS4KKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGUoc3RyZWFtLmNyZWF0ZV9oZWFkZXIoY29tbW9uLk9QQ09ERV9URVhULCBsZW4ocGF5bG9h
ZCksIDEsIDAsIDAsIDAsIDApICsgcGF5bG9hZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3Nl
LWV4cGVjdGVkLnR4dAppbmRleCAyNjY4ZmQ5NDIzMjQ5MWY3YWZlOGQ1N2QxMTE1MjAzZWY0ZTU5
MDkzLi5iMTIwMDk0ZjE5Y2Q4MTNkY2Y2ODhmZTdiNjg3YWEyNjNhZGJkOTU0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVudC1jbG9z
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbGllbnQtY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsOSBAQCBXZWJTb2Nr
ZXQ6IFRlc3QgY2xpZW50LWluaXRpYXRlZCBjbG9zZS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogQ29ubmVjdGVkCi1SZWNlaXZlZDogY2xvc2VfZnJhbWU9J1x4ZmZceDAwJworUmVjZWl2
ZWQ6IGNsb3NlX2ZyYW1lWzoyXT0nXHg4OFx4ODAnCiBDbG9zZWQKLVBBU1MgcmVjZWl2ZWRNZXNz
YWdlIGlzICJjbG9zZV9mcmFtZT0nXFx4ZmZcXHgwMCciCitQQVNTIHJlY2VpdmVkTWVzc2FnZSBp
cyAiY2xvc2VfZnJhbWVbOjJdPSdcXHg4OFxceDgwJyIKIFBBU1MgY2xvc2VFdmVudC53YXNDbGVh
biBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3Nl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NsaWVu
dC1jbG9zZS5odG1sCmluZGV4IGJkYTUxNDMzMjhmMjNhNmYwN2M1YTIwNmM2MDE0YzkzMzA3MDk2
NzEuLmFjMjllN2ZjNmI1NGRiYzUyZjllZDE1OGQ5NDNjYTg5NWY3MWY3MzYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3Nl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
bGllbnQtY2xvc2UuaHRtbApAQCAtMzQsNyArMzQsNyBAQCB3cy5vbmNsb3NlID0gZnVuY3Rpb24o
ZXZlbnQpCiB7CiAgICAgZGVidWcoIkNsb3NlZCIpOwogICAgIGNsb3NlRXZlbnQgPSBldmVudDsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY2VpdmVkTWVzc2FnZSIsICJjbG9zZV9mcmFt
ZT0nXFx4ZmZcXHgwMCciKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlY2VpdmVkTWVz
c2FnZSIsICJjbG9zZV9mcmFtZVs6Ml09J1xceDg4XFx4ODAnIik7CiAgICAgc2hvdWxkQmVUcnVl
KCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQt
Y2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9jbGllbnQtY2xvc2Vfd3NoLnB5CmluZGV4IDdlZDI4YmZmZmYwMjQ5ZjRhMGQ3YmJjYzNmYjgz
MmFiODc5YzA4MjAuLjg2OGUwNmNiNzFiNjk5OTlkOTBmYzBiMmE4Yjg4Y2FhMDU3OGYwYmQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xp
ZW50LWNsb3NlX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2NsaWVudC1jbG9zZV93c2gucHkKQEAgLTcsMTYgKzcsMTcgQEAgZGVmIHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogCiBkZWYgd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhKHJlcXVlc3QpOgogICAgICMgV2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBzZW50IGZy
b20gdGhlIGNsaWVudC4KLSAgICBjbG9zZV9mcmFtZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2Vp
dmVfYnl0ZXMoMikKKyAgICBjbG9zZV9mcmFtZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVf
Ynl0ZXMoNikKIAotICAgICMgVGVsbCB0aGUgY2xpZW50IHdoYXQgd2UgaGF2ZSByZWNlaXZlZC4K
LSAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnY2xvc2VfZnJhbWU9JXInICUgY2xv
c2VfZnJhbWUpCisgICAgIyBTZW5kIG9ubHkgZmlyc3QgdHdvIGJ5dGVzIG9mIHRoZSByZWNlaXZl
ZCBmcmFtZS4gVGhlIHJlbWFpbmluZyBmb3VyIGJ5dGVzIGFyZQorICAgICMgIm1hc2tpbmcga2V5
Iiwgd2hpY2ggY2hhbmdlcyBldmVyeSB0aW1lIHRoZSB0ZXN0IHJ1bnMuCisgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2Nsb3NlX2ZyYW1lWzoyXT0lcicgJSBjbG9zZV9mcmFtZVs6
Ml0pCiAKICAgICAjIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBBc3NlcnRpb25F
cnJvciB3aWxsIGJlIHJhaXNlZCwKICAgICAjIHdoaWNoIHdpbGwgcHJldmVudCBweXdlYnNvY2tl
dCBmcm9tIHNlbmRpbmcgYSBjbG9zZSBmcmFtZS4KICAgICAjIEluIHRoaXMgY2FzZSwgdGhlIGNs
aWVudCB3aWxsIGZhaWwgdG8gZmluaXNoIGNsb3NpbmcgaGFuZHNoYWtlLCB0aHVzCiAgICAgIyBj
bG9zZUV2ZW50Lndhc0NsZWFuIHdpbGwgYmVjb21lIGZhbHNlLgotICAgIGFzc2VydCBjbG9zZV9m
cmFtZSA9PSAnXHhmZlx4MDAnCisgICAgYXNzZXJ0IGNsb3NlX2ZyYW1lWzoyXSA9PSAnXHg4OFx4
ODAnCiAKICAgICAjIFByZXRlbmQgd2UgaGF2ZSByZWNlaXZlZCBhIGNsb3NlIGZyYW1lIGZyb20g
dGhlIGNsaWVudC4KICAgICAjIEFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMsIHB5d2Vic29ja2V0
IHdpbGwgc2VuZCBhIGNsb3NlIGZyYW1lIGF1dG9tYXRpY2FsbHkuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJv
bC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjRjNmI5OTU5MDBkNjY2YmJjMWNlY2U5YTQ3ODU0NWIwZWMyYmEyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21l
bnRlZC1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogUmVjZWl2ZWQgZnJhZ21lbnRlZCBjb250cm9sIGZyYW1lOiBvcGNv
ZGUgPSA5CitUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgYSBmcmFnbWVudGVkIGNvbnRy
b2wgZnJhbWUgYW5kIGFib3J0cyB0aGUgY29ubmVjdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFu
IGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9mcmFnbWVudGVkLWNvbnRyb2wtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDA2ZDkxMzQzOTI2MzBkODNiYTAwNThkOTc2MWQxMzMxMmYxODU1ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdl
YlNvY2tldCByZWplY3RzIGEgZnJhZ21lbnRlZCBjb250cm9sIGZyYW1lIGFuZCBhYm9ydHMgdGhl
IGNvbm5lY3Rpb24uIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9m
cmFnbWVudGVkLWNvbnRyb2wtZnJhbWUiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwor
dmFyIGNsb3NlRXZlbnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygi
b25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
ZW50KQoreworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVkKCJv
bm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7
Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgY2xvc2VFdmVudCA9
IGV2ZW50OworICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1jb250cm9s
LWZyYW1lX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZnJhZ21lbnRlZC1jb250cm9sLWZyYW1lX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDE2ZTc3ZDI2
YzE0MzJiZDlmYTliNzJkOThhZTNmZDdkMmZmOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRyb2wt
ZnJhbWVfd3NoLnB5CkBAIC0wLDAgKzEsMTIgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgorICAgICMgRnJhZ21lbnRlZCBjb250cm9sIGZyYW1lIGlzIHByb2hpYml0
ZWQuIFRoZSBjbGllbnQgbXVzdCBhYm9ydCB0aGUgY29ubmVjdGlvbi4KKyAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdUaGlzIG1lc3NhZ2Ugc2hv
dWxkIGJlIGlnbm9yZWQuJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORywgZmluPTApKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFn
bWVudGVkLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYzY3ZDlhM2MyZWY3MjM0MjRhYTVhNmY0ODUxYzllNTgwNTJlY2IxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVu
dGVkLWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorUmVjZWl2ZSBmcmFnbWVu
dGVkIFdlYlNvY2tldCBmcmFtZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25v
cGVuKCkgd2FzIGNhbGxlZC4KK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gIkZp
cnN0IG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiU2Vjb25k
IG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiVGhpcmQgbWVz
c2FnZSIpCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBhY3R1YWxNZXNz
YWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIGlzIHRydWUKK1BBU1MgYWN0
dWFsTWVzc2FnZXNbMF0gaXMgIkZpcnN0IG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3NhZ2VzWzFd
IGlzICJTZWNvbmQgbWVzc2FnZSIKK1BBU1MgYWN0dWFsTWVzc2FnZXNbMl0gaXMgIlRoaXJkIG1l
c3NhZ2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9mcmFnbWVudGVkLWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwODA3ODc3
NmZlOGQ4OTg0Yzk3MTFkYjVhNGY5M2EzNTBmZjAzNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVz
Lmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiUmVjZWl2ZSBmcmFnbWVudGVkIFdlYlNvY2tldCBmcmFtZXMuIik7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB1cmwgPSAi
d3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1l
cyI7Cit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBl
eHBlY3RlZE1lc3NhZ2VzID0gWyJGaXJzdCBtZXNzYWdlIiwgIlNlY29uZCBtZXNzYWdlIiwgIlRo
aXJkIG1lc3NhZ2UiXTsKK3ZhciBhY3R1YWxNZXNzYWdlcyA9IFtdOworCit3cy5vbm9wZW4gPSBm
dW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7CisgICAgd3Mu
Y2xvc2UoKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZh
ciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICBkZWJ1Zygib25tZXNzYWdlKCkgd2FzIGNhbGxl
ZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworICAgIGFjdHVhbE1lc3NhZ2Vz
LnB1c2gobWVzc2FnZSk7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7Cisg
ICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXND
bGVhbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiYWN0dWFsTWVzc2FnZXMubGVuZ3RoID09PSBleHBl
Y3RlZE1lc3NhZ2VzLmxlbmd0aCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRN
ZXNzYWdlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJhY3R1
YWxNZXNzYWdlc1siICsgaSArICJdIiwgZXhwZWN0ZWRNZXNzYWdlc1tpXSk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRl
ZC1mcmFtZXNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZjNlNThlZTQ1MTNkNWVhOWY3NDdjMjNiNWEw
ODBjYTE5M2JhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzX3dzaC5weQpAQCAtMCwwICsxLDM0
IEBACitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAjIHNlbmRfbWVzc2FnZSdzIHRoaXJk
IGFyZ3VtZW50IGNvcnJlc3BvbmRzIHRvICJmaW4iIGJpdDsKKyAgICAjIGl0IGlzIHNldCB0byBU
cnVlIGlmIHRoaXMgZnJhbWUgaXMgdGhlIGZpbmFsIGZyYWdtZW50IG9mIGEgbWVzc2FnZS4KKyAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRmlyc3QgJywgRmFsc2UpCisgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ21lc3NhZ2UnLCBUcnVlKQorCisgICAgIyBFbXB0
eSBmcmFnbWVudCBpcyBhbGxvd2VkLgorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICcnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnU2Vjb25kICcs
IEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBGYWxzZSkKKyAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnbWVzc2FnZScsIEZhbHNlKQorICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBUcnVlKQorCisgICAgIyBGcmFnbWVudCBh
Z2dyZXNzaXZlbHkuCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1QnLCBGYWxz
ZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnaCcsIEZhbHNlKQorICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdpJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ3InLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnZCcsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcg
JywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ20nLCBGYWxzZSkK
KyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnZScsIEZhbHNlKQorICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdzJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ3MnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1
ZXN0LCAnYScsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdnJywg
RmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2UnLCBUcnVlKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRl
cmxlYXZlZC1mcmFnbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZiYzI4MTNlM2I5NTRmMjc1Y2M4ODU5MWE4NGFhZWIxZDBiYmE5YjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2ludGVybGVhdmVkLWZyYWdtZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDA6IFJlY2VpdmVkIG5ldyBkYXRhIGZyYW1lIGJ1dCBwcmV2aW91
cyBjb250aW51b3VzIGZyYW1lIGlzIHVuZmluaXNoZWQuCitUZXN0IHdoZXRoZXIgV2ViU29ja2V0
IHJlamVjdHMgaW50ZXJsZWF2ZWQgZnJhZ21lbnRlZCBmcmFtZXMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworb25vcGVuKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXND
bGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFhMzIwOGIyMTlhOTYwMmZiMjE4MWJiOGRlNDdhNWE1ZjlhNmRhNTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2lu
dGVybGVhdmVkLWZyYWdtZW50cy5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2Nr
ZXQgcmVqZWN0cyBpbnRlcmxlYXZlZCBmcmFnbWVudGVkIGZyYW1lcy4iKTsKKword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9z
dDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cyI7Cit2YXIg
d3MgPSBuZXcgV2ViU29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKKword3Mub25vcGVuID0g
ZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKwor
d3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVu
dC5kYXRhOworICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdl
ID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihl
dmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiY2xv
c2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxlYXZlZC1mcmFnbWVudHNfd3NoLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1ZGFlY2FmMjUxNTFlMDNkMzNkYWIxNWM5Y2Y1NTQ2MGVmNjZkY2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2ludGVybGVhdmVkLWZyYWdtZW50c193c2gucHkKQEAgLTAsMCArMSwxMiBAQAorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0
cmVhbQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAg
ICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAj
IEEgbmV3IGZyYW1lIGlzIGFycml2ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBmcmFnbWVudGVkIGZy
YW1lIGhhcyBmaW5pc2hlZC4KKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNy
ZWF0ZV90ZXh0X2ZyYW1lKCdUaGlzIG1lc3NhZ2UgJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVY
VCwgZmluPTApKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3Rl
eHRfZnJhbWUoJ3Nob3VsZCBiZSBpZ25vcmVkLicsIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQs
IGZpbj0xKSkgIyBOb3QgT1BDT0RFX0NPTlRJTlVBVElPTi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
bG9uZy1jb250cm9sLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzAzOTVkY2Y2MTZh
M2MwMGUzZjI2OGNlNjRiN2JlOTZkOTg5NzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBSZWNl
aXZlZCBjb250cm9sIGZyYW1lIGhhdmluZyB0b28gbG9uZyBwYXlsb2FkOiAxMjYgYnl0ZXMKK1Rl
c3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBjb250cm9sIGZyYW1lcyBsb25nZXIgdGhhbiAx
MjUgYnl0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworb25vcGVuKCkgd2FzIGNh
bGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29u
dHJvbC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZTE4NDhjMjMyNjkxMDgzMTU0MDZiNjExMWM0
MWE0NmMwM2RiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMzgg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRl
c3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBjb250cm9sIGZyYW1lcyBsb25nZXIgdGhhbiAx
MjUgYnl0ZXMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisK
K3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9sb25n
LWNvbnRyb2wtZnJhbWUiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwordmFyIGNsb3Nl
RXZlbnQ7Cit2YXIgbWVzc2FnZTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRl
YnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9u
KGV2ZW50KQoreworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUZhbHNlKCJj
bG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZV93c2gucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDFmNDhhMzViOWViZDlhODJlNjkwOGQ2MjVmNGQxN2ExZDJjZDBjMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9u
Zy1jb250cm9sLWZyYW1lX3dzaC5weQpAQCAtMCwwICsxLDEyIEBACitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisK
KworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MK
KworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgICMgQWxsIGNv
bnRyb2wgZnJhbWVzIG11c3QgaGF2ZSBhIHBheWxvYWQgbGVuZ3RoIG9mIDEyNSBieXRlcyBvciBs
ZXNzLgorICAgIG1lc3NhZ2UgPSAnWCcgKiAxMjYKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BDT0RF
X1BJTkcsIGZpbj0xKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhmN2IwMTdlZTIwNzlhYWY1MTFiMGYxYmVlMGI0YmU4ZGI3YjYxMWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL21hc2tlZC1mcmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1JlY2VpdmUg
bWFza2VkIFdlYlNvY2tldCBmcmFtZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
b25vcGVuKCkgd2FzIGNhbGxlZC4KK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0g
IkZpcnN0IG1lc3NhZ2UiKQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiRnJh
Z21lbnRlZCBtZXNzYWdlIikKK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gIiIp
Citvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9ICJFTkQiKQorUEFTUyBhY3R1YWxN
ZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIGlzIHRydWUKK1BBU1Mg
YWN0dWFsTWVzc2FnZXNbMF0gaXMgIkZpcnN0IG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3NhZ2Vz
WzFdIGlzICJGcmFnbWVudGVkIG1lc3NhZ2UiCitQQVNTIGFjdHVhbE1lc3NhZ2VzWzJdIGlzICIi
CitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2VkLWZyYW1lcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNrZWQtZnJhbWVzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmYwYzkyNDA2NGY5MTM2NzI2YTExMjUwMGIzZDQ3OTY2NTk5NWNmNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvbWFza2VkLWZyYW1lcy5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlJlY2VpdmUgbWFza2VkIFdlYlNvY2tl
dCBmcmFtZXMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisK
K3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9tYXNr
ZWQtZnJhbWVzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50
OwordmFyIGV4cGVjdGVkTWVzc2FnZXMgPSBbIkZpcnN0IG1lc3NhZ2UiLCAiRnJhZ21lbnRlZCBt
ZXNzYWdlIiwgIiJdOwordmFyIGFjdHVhbE1lc3NhZ2VzID0gW107CisKK3dzLm9ub3BlbiA9IGZ1
bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKKyAgICB3cy5j
bG9zZSgpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFy
IG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGRlYnVnKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVk
LiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgaWYgKG1lc3NhZ2UgPT09
ICJFTkQiKSB7CisgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYWN0dWFsTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5j
dGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVl
KCJhY3R1YWxNZXNzYWdlcy5sZW5ndGggPT09IGV4cGVjdGVkTWVzc2FnZXMubGVuZ3RoIik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZE1lc3NhZ2VzLmxlbmd0aDsgKytpKQorICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImFjdHVhbE1lc3NhZ2VzWyIgKyBpICsgIl0iLCBl
eHBlY3RlZE1lc3NhZ2VzW2ldKTsKKyAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xl
YW4iKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbWFza2Vk
LWZyYW1lc193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL21hc2tlZC1mcmFtZXNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwOTk2N2FkYzUzNzhiYTgwNDkw
MTU1ZGMwZDczODEzM2ZkYmIxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXNfd3NoLnB5CkBAIC0wLDAg
KzEsMzQgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1
dGlsCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAg
IHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgICMg
cHl3ZWJzb2NrZXQgZG9lcyBub3QgbWFzayBtZXNzYWdlIGJ5IGRlZmF1bHQuIFdlIG5lZWQgdG8g
YnVpbGQgYSBmcmFtZSBtYW51YWxseSB0byBtYXNrIGl0LgorICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ0ZpcnN0IG1lc3NhZ2UnLCBtYXNrPVRy
dWUpKQorCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVhbS5jcmVhdGVfdGV4dF9m
cmFtZSgnRnJhZ21lbnRlZCAnLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhULCBmaW49MCwgbWFz
az1UcnVlKSkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0
X2ZyYW1lKCdtZXNzYWdlJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OLCBmaW49
MSwgbWFzaz1UcnVlKSkKKworICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3Jl
YXRlX3RleHRfZnJhbWUoJycsIG1hc2s9VHJ1ZSkpCisKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnRU5EJykKKworICAgICMgV2FpdCBmb3IgdGhlIGNsaWVudCB0byBzdGFydCBj
bG9zaW5nIGhhbmRzaGFrZS4KKyAgICAjIFRvIHJlY2VpdmUgYSBjbG9zZSBmcmFtZSwgd2UgbXVz
dCB1c2UgYW4gaW50ZXJuYWwgbWV0aG9kIG9mIHJlcXVlc3Qud3Nfc3RyZWFtLgorICAgIG9wY29k
ZSwgcGF5bG9hZCwgZmluYWwsIHJlc2VydmVkMSwgcmVzZXJ2ZWQyLCByZXNlcnZlZDMgPSByZXF1
ZXN0LndzX3N0cmVhbS5fcmVjZWl2ZV9mcmFtZSgpCisgICAgYXNzZXJ0IG9wY29kZSA9PSBjb21t
b24uT1BDT0RFX0NMT1NFCisgICAgYXNzZXJ0IGZpbmFsCisgICAgYXNzZXJ0IG5vdCByZXNlcnZl
ZDEKKyAgICBhc3NlcnQgbm90IHJlc2VydmVkMgorICAgIGFzc2VydCBub3QgcmVzZXJ2ZWQzCisK
KyAgICAjIFNlbmQgYSBtYXNrZWQgY2xvc2UgZnJhbWUuIENsaWVudHMgc2hvdWxkIGJlIGFibGUg
dG8gaGFuZGxlIHRoaXMgZnJhbWUgYW5kCisgICAgIyB0aGUgV2ViU29ja2V0IG9iamVjdCBzaG91
bGQgYmUgY2xvc2VkIGNsZWFubHkuCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVh
bS5jcmVhdGVfY2xvc2VfZnJhbWUoJycsIG1hc2s9VHJ1ZSkpCisKKyAgICByYWlzZSBFeGNlcHRp
b24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50cyBweXdlYnNvY2tldCBmcm9tIHN0
YXJ0aW5nIGl0cyBvd24gY2xvc2luZyBoYW5kc2hha2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NzRmZDFlYmE1YzUxNjZjMjkwNWE0NmRhYzAzNzhkNmM4M2Q3YmRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9wb25nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0IHdoZXRoZXIgV2Vi
U29ja2V0IGNvcnJlY3RseSByZXNwb25kcyB0byBhIHBpbmcgbWVzc2FnZSBzZW50IGZyb20gdGhl
IHNlcnZlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2Fs
bGVkLgorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSAiUEFTUyIpCitQQVNTIG1l
c3NhZ2UgaXMgIlBBU1MiCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjVhZDA0MGY4MThhOWE4YmNjZjFhN2RmNjE1MWQwMDRhNmNmNThkMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
cG9uZy5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgY29ycmVjdGx5IHJl
c3BvbmRzIHRvIGEgcGluZyBtZXNzYWdlIHNlbnQgZnJvbSB0aGUgc2VydmVyLiIpOworCit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4
aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgdXJsID0gIndzOi8vbG9j
YWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZyI7Cit2YXIgd3MgPSBuZXcgV2Vi
U29ja2V0KHVybCk7Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBtZXNzYWdlOworCit3cy5vbm9wZW4g
PSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9Owor
Cit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBtZXNzYWdlID0gZXZlbnQu
ZGF0YTsKKyAgICBkZWJ1Zygib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIg
KyBtZXNzYWdlICsgIlwiKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWVzc2FnZSIs
ICJQQVNTIik7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgY2xv
c2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb25nX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZ193c2gu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjEyYWFjNWY4M2Y2MDdlMjM4OTYyODBhMTUwN2FjYjczYjkwMTU5ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcG9uZ193c2gucHkKQEAgLTAsMCArMSwxOSBAQAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKKworCitk
ZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisK
K2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbXNndXRpbC5zZW5k
X3BpbmcocmVxdWVzdCwgJ0hlbGxvLCB3b3JsZCEnKQorCisgICAgIyBXZSBuZWVkIHRvIHVzZSBh
biBpbnRlcm5hbCBmdW5jdGlvbiB0byBkZXRlY3QgYSBwb25nIGZyYW1lIGZyb20gdGhlIGNsaWVu
dC4KKyAgICBvcGNvZGUsIHBheWxvYWQsIGZpbmFsLCByZXNlcnZlZDEsIHJlc2VydmVkMiwgcmVz
ZXJ2ZWQzID0gcmVxdWVzdC53c19zdHJlYW0uX3JlY2VpdmVfZnJhbWUoKQorICAgIGlmIG9wY29k
ZSA9PSBjb21tb24uT1BDT0RFX1BPTkcgYW5kIHBheWxvYWQgPT0gJ0hlbGxvLCB3b3JsZCEnIGFu
ZCBmaW5hbCBhbmQgbm90IHJlc2VydmVkMSBhbmQgbm90IHJlc2VydmVkMiBhbmQgbm90IHJlc2Vy
dmVkMzoKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1BBU1MnKQorICAg
IGVsc2U6CisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdGQUlMOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGZyYW1lOiBvcGNv
ZGUgPSAlciwgcGF5bG9hZCA9ICVyLCBmaW5hbCA9ICVyLCByZXNlcnZlZDEgPSAlciwgcmVzZXJ2
ZWQyID0gJXIsIHJlc2VydmVkMyA9ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChvcGNvZGUsIHBheWxvYWQsIGZpbmFsLCByZXNlcnZlZDEsIHJlc2VydmVkMiwgcmVzZXJ2ZWQz
KSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAzMDcyNmE0YWRkMGIyNTNkMDAwNWRhNjIzNjVmOWMzZTE2NjEyNTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVk
LWJpdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAwOiBPbmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gMSwgcmVz
ZXJ2ZWQyID0gMCwgcmVzZXJ2ZWQzID0gMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE9uZSBv
ciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZlZDEgPSAwLCByZXNlcnZlZDIgPSAx
LCByZXNlcnZlZDMgPSAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogT25lIG9yIG1vcmUgcmVz
ZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMSA9IDAsIHJlc2VydmVkMiA9IDAsIHJlc2VydmVk
MyA9IDEKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBmcmFtZXMgd2hvc2UgcmVzZXJ2
ZWQgYml0IGlzIG9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0JpdCAxOiBUZXN0
IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQ
QVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK0JpdCAyOiBUZXN0IHN0YXJ0ZWQuCitv
bm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZl
bnQud2FzQ2xlYW4gaXMgZmFsc2UKK0JpdCAzOiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMg
Y2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4g
aXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3Jlc2VydmVkLWJpdHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNjYyMWZhMjFjMjgx
YWE1YjE1OTNmNWU1YzE2ZmUwODBmYmJiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbApAQCAt
MCwwICsxLDU2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgZnJhbWVzIHdob3NlIHJlc2Vy
dmVkIGJpdCBpcyBvbi4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAw
KTsKKwordmFyIGNsb3NlRXZlbnQ7CisKKy8vIGJpdE51bWJlciBtdXN0IGJlIDEsIDIsIG9yIDMu
CitmdW5jdGlvbiBkb1Rlc3QoYml0TnVtYmVyKQoreworICAgIHZhciB1cmwgPSAid3M6Ly9sb2Nh
bGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzP2JpdD0iICsgYml0
TnVtYmVyOworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKworICAgIGRlYnVnKCJC
aXQgIiArIGJpdE51bWJlciArICI6IFRlc3Qgc3RhcnRlZC4iKTsKKworICAgIHdzLm9ub3BlbiA9
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIp
OworICAgIH07CisKKyAgICB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGVzdEZhaWxlZCgib25t
ZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOwor
ICAgIH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgICAgIGNsb3NlRXZlbnQgPSBl
dmVudDsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAg
ICAgICBpZiAoYml0TnVtYmVyID09PSAzKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvVGVzdChiaXROdW1iZXIgKyAxKTsKKyAgICB9Owor
fQorCitkb1Rlc3QoMSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJp
dHNfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZDBkZmRjNTUxYjA2NTUxNTZhNmFlMTIwODU1NDRkZDNh
OGZlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CkBAIC0wLDAgKzEsMjYgQEAKK2ltcG9y
dCByZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IHN0cmVhbQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShy
ZXF1ZXN0KToKKyAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1w/Yml0PShcZCspJCcsIHJlcXVlc3Qu
d3NfcmVzb3VyY2UpCisgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IFF1ZXJ5IHZhbHVlIGlzIGluY29ycmVjdCBvciBtaXNz
aW5nJykKKyAgICAgICAgcmV0dXJuCisKKyAgICBiaXQgPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisg
ICAgbWVzc2FnZSA9ICJUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIGlnbm9yZWQuIgorICAgIGlmIGJp
dCA9PSAxOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENP
REVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAxLCAwLCAwLCAwKSArIG1lc3NhZ2UKKyAgICBlbGlm
IGJpdCA9PSAyOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5P
UENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAwLCAxLCAwLCAwKSArIG1lc3NhZ2UKKyAgICBl
bGlmIGJpdCA9PSAzOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1v
bi5PUENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAwLCAwLCAxLCAwKSArIG1lc3NhZ2UKKyAg
ICBlbHNlOgorICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnRkFJTDog
SW52YWxpZCBiaXQgbnVtYmVyOiAlZCcgJSBiaXQpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXRlKGZyYW1lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTU1OTBjNjQ5ODc4YmM1MTBmNzdjNGQ0YTZkNTdmOGY1YTdjZDYwOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1OCBAQAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDMKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiA0CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogNQorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDYKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiA3CitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogMTEKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAxMgorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDA6IFVucmVjb2duaXplZCBmcmFtZSBvcGNvZGU6IDEzCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMDogVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTogMTQKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBVbnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAxNQorVGVzdHMgd2hldGhlciBXZWJT
b2NrZXQgaWdub3JlcyBmcmFtZXMgd2l0aCByZXNlcnZlZCBvcGNvZGUuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworT3Bjb2RlIDM6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBj
YWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBp
cyBmYWxzZQorT3Bjb2RlIDQ6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitv
bmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQor
T3Bjb2RlIDU6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkg
d2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDY6
IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxl
ZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDc6IFRlc3Qgc3Rh
cnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1Mg
Y2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorT3Bjb2RlIDExOiBUZXN0IHN0YXJ0ZWQuCitv
bm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZl
bnQud2FzQ2xlYW4gaXMgZmFsc2UKK09wY29kZSAxMjogVGVzdCBzdGFydGVkLgorb25vcGVuKCkg
d2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitPcGNvZGUgMTM6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxs
ZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBm
YWxzZQorT3Bjb2RlIDE0OiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25j
bG9zZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK09w
Y29kZSAxNTogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3
YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2Vy
dmVkLW9wY29kZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE5NWM2ODFhNDZkNjc2ZGFkMmE0ZWU3ZjRm
MDA2N2U0MjM2YmJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLmh0bWwKQEAgLTAsMCArMSw2MSBA
QAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB3aGV0aGVyIFdlYlNvY2tldCBpZ25vcmVzIGZyYW1l
cyB3aXRoIHJlc2VydmVkIG9wY29kZS4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVu
YWJsZWQiLCAwKTsKKwordmFyIGNsb3NlRXZlbnQ7CisKK2Z1bmN0aW9uIGRvVGVzdChvcGNvZGUp
Cit7CisgICAgaWYgKG9wY29kZSA+PSAweDEwKSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChvcGNvZGUgPT0gMHgwIHx8IG9wY29kZSA9
PSAweDEgfHwgb3Bjb2RlID09IDB4MiB8fCBvcGNvZGUgPT0gMHg4IHx8IG9wY29kZSA9PSAweDkg
fHwgb3Bjb2RlID09IDB4QSkgeworICAgICAgICBkb1Rlc3Qob3Bjb2RlICsgMSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygiT3Bjb2RlICIgKyBvcGNvZGUgKyAiOiBUZXN0
IHN0YXJ0ZWQuIik7CisKKyAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcz9vcGNvZGU9IiArIG9wY29kZTsKKyAgICB2
YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisKKyAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKKyAgICB9Owor
CisgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIg
bWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdh
cyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKKyAgICB9OworCisg
ICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoIm9u
Y2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAg
ICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAgZG9UZXN0
KG9wY29kZSArIDEpOworICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9yZXNlcnZlZC1vcGNvZGVzX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlc193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0OTVj
ODhhOTgwMzk3MmUxZWY1MGU3MWQ3M2M5MmFhYjcxMDgyMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rl
c193c2gucHkKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IHJlCitmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1w/b3Bjb2RlPShc
ZCspJCcsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IFF1ZXJ5IHZhbHVlIGlzIGlu
Y29ycmVjdCBvciBtaXNzaW5nJykKKyAgICAgICAgcmV0dXJuCisKKyAgICBvcGNvZGUgPSBpbnQo
bWF0Y2guZ3JvdXAoMSkpCisgICAgcGF5bG9hZCA9ICdUaGlzIHRleHQgc2hvdWxkIGJlIGlnbm9y
ZWQuIChvcGNvZGUgPSAlZCknICUgb3Bjb2RlCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRl
KHN0cmVhbS5jcmVhdGVfaGVhZGVyKG9wY29kZSwgbGVuKHBheWxvYWQpLCAxLCAwLCAwLCAwLCAw
KSArIHBheWxvYWQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NlbmQyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZDJfd3NoLnB5CmluZGV4IGUyMjE3ZmEzZDUyYzBmZTNkOThkNjJj
NGQxODE0MjcwOWRhY2YxNzIuLjUzYjZkODEwYTAzN2JhY2E1MGM3NmZjZWNlZjA3OTE1NWMyNGFl
MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvc2VuZDJfd3NoLnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvc2VuZDJfd3NoLnB5CkBAIC0xLDggKzEsMTAgQEAKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBzdHJlYW0KKworCiBkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Uo
cmVxdWVzdCk6CiAgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCiAKIAogZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKICAgICAjIHNlbmQgMiBtZXNzYWdlcyBpbiBvbmUgcGFj
a2V0LgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgiXHgwMCIgKyAiZmlyc3QgbWVzc2Fn
ZSIgKyAiXHhmZiIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHgwMCIgKyAic2Vj
b25kIG1lc3NhZ2UiICsgIlx4ZmYiKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJl
YW0uY3JlYXRlX3RleHRfZnJhbWUoImZpcnN0IG1lc3NhZ2UiKSArIHN0cmVhbS5jcmVhdGVfdGV4
dF9mcmFtZSgic2Vjb25kIG1lc3NhZ2UiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25nLXBh
eWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMWI2ZGM5NzA3ZjAzMWQzZWVlNTAzNTVl
M2ExYjc5NDQ3NTM0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25nLXBheWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBXZWJTb2NrZXQgZnJhbWUgbGVu
Z3RoIHRvbyBsYXJnZTogOTIyMzM3MjAzNjg1NDc3NTgwOCBieXRlcworVGVzdHMgd2hldGhlciBX
ZWJTb2NrZXQgY29ycmVjdGx5IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3aGVuIGl0IHJlY2VpdmVz
IGEgZnJhbWUgd2l0aCB0b28gbG9uZyBwYXlsb2FkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1Mg
Y2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzA0YmUzYTdlMmI4NmYwYTllMWY2NTFkYmE3ZGIxY2JiMDM4NDhhYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlv
bigiVGVzdHMgd2hldGhlciBXZWJTb2NrZXQgY29ycmVjdGx5IGFib3J0cyB0aGUgY29ubmVjdGlv
biB3aGVuIGl0IHJlY2VpdmVzIGEgZnJhbWUgd2l0aCB0b28gbG9uZyBwYXlsb2FkLiIpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBuZXcgV2Vi
U29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25n
LXBheWxvYWQiKTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7
CisgICAgZGVidWcoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAg
dGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNz
YWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAg
IGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7
CisgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS90b28tbG9uZy1wYXlsb2FkX3dzaC5weSBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5
bG9hZF93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVjZGEzNDhhMDYxMzZkYzI5ZTUwMjc1NWY5OGVjODk5
NmM2YjM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZF93c2gucHkKQEAgLTAsMCArMSwyNCBAQAor
aW1wb3J0IHN0cnVjdAoraW1wb3J0IHRpbWUKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBj
b21tb24KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Cisg
ICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAg
bGVuZ3RoID0gMHg4MDAwMDAwMDAwMDAwMDAwCisKKyAgICAjIHB5d2Vic29ja2V0IHJlZnVzZXMg
dG8gc2VuZCBhIGZyYW1lIHdpdGggdG9vIGxvbmcgcGF5bG9hZC4KKyAgICAjIFRodXMsIHdlIG5l
ZWQgdG8gYnVpbGQgYSBmcmFtZSBtYW51YWxseS4KKyAgICBoZWFkZXIgPSBjaHIoMHg4MCB8IGNv
bW1vbi5PUENPREVfVEVYVCkgIyAweDgwIGlzIGZvciAiZmluIiBiaXQuCisgICAgaGVhZGVyICs9
IGNocigxMjcpCisgICAgaGVhZGVyICs9IHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKKyAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaGVhZGVyKQorCisgICAgIyBTZW5kIGRhdGEgaW5kZWZp
bml0ZWx5IHRvIHNpbXVsYXRlIGEgcmVhbCAoYnJva2VuKSBzZXJ2ZXIgc2VuZGluZyBhIGJpZyBm
cmFtZS4KKyAgICAjIEEgY2xpZW50IHNob3VsZCBpZ25vcmUgdGhlc2UgYnl0ZXMgYW5kIGFib3J0
IHRoZSBjb25uZWN0aW9uLgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0ZSgnWCcgKiA0MDk2KQorICAgICAgICB0aW1lLnNsZWVwKDEpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXgg
ZTlkNTk2MTQ2NTExNjM5YWIwMWQ2ZjY3NTBjYTRhNDQyZGRkMDM0NC4uZjhhZWIwNjM3ZjE2MDQ5
M2RlNzkwNTEzZDg5ZjQ4NTQzOWFmNzFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNDYsNiArNDYsNyBAQCBCVUdD
UjE4NzAyIFdJTiA6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250
ZW50LXR5cGVzLmh0bWwgPSBQQQogQlVHQ1IzNjUzOSBTTE9XIDogaHR0cC90ZXN0cy9taXNjL3Vu
Y2FjaGVhYmxlLXNjcmlwdC1yZXBlYXRlZC5odG1sID0gUEFTUwogCiBCVUdDUjMyMDE4IFNMT1cg
OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2ZyYW1lLWxlbmd0aHMuaHRtbCA9
IFBBU1MKK0JVR0NSMzIwMTggU0xPVyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZnJhbWUtbGVuZ3Rocy5odG1sID0gUEFTUwogQlVHQ1I2OTUxMyBERUJVRyBTTE9XIDogaHRtbDVs
aWIvd2Via2l0LXJlc3VtZXIuaHRtbCA9IFBBU1MKIAogQlVHV0s1NTkxMyBSRUxFQVNFIFNMT1cg
OiBqcXVlcnkvZWZmZWN0cy5odG1sID0gUEFTUwpAQCAtMTA1LDYgKzEwNiw3IEBAIFdPTlRGSVgg
U0tJUCA6IGh0dHAvdGVzdHMvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklYIFNL
SVAgOiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMgPSBQQVNTIFRJTUVPVVQgRkFJ
TAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9ldmVudHNvdXJjZS93b3JrZXJzID0gUEFTUyBU
SU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hp
eGllNzYvd29ya2Vycy8gPSBQQVNTIFRJTUVPVVQgRkFJTAorV09OVEZJWCBTS0lQIDogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzLyA9IFBBU1MgVElNRU9VVCBGQUlMCiBX
T05URklYIFNLSVAgOiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sID0g
UEFTUyBUSU1FT1VUIEZBSUwKIAogLy8gUGFnZSBDYWNoZSAtIGJhc2VkIHRlc3RzLiBDaHJvbWl1
bSBkaXNhYmxlcyBwYWdlIGNhY2hlIGJlY2F1c2UgdGhlIFdlYktpdCBwYWdlIGNhY2hlIGtlZXBz
IHByZXZpb3VzbHkKQEAgLTE2MSw5ICsxNjMsNiBAQCBXT05URklYIFNLSVAgOiBhbmltYXRpb25z
L2FuaW1hdGlvbi1hcGktMS5odG1sID0gRkFJTAogLy8gVW5za2lwIGFmdGVyIGltcGxlbWVudGlu
ZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGVmZXJzTG9hZGluZyBhbmQgOjpnb0JhY2suCiBC
VUdXSzYwODc3IFNLSVAgOiBsb2FkZXIvbmF2aWdhdGlvbi13aGlsZS1kZWZlcnJpbmctbG9hZHMu
aHRtbCA9IEZBSUwKIAotLy8gU2tpcHBlZCB1bnRpbCBuZXcgV2ViU29ja2V0IHByb3RvY29sIGlz
IGltcGxlbWVudGVkLgotQlVHV0s1MDA5OSBTS0lQIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS8gPSBQQVNTIEZBSUwgVElNRU9VVAotCiAvLyBDU1MzIFNlbGVjdG9yczMgdGVzdCBz
dWl0ZQogQlVHQ1I4OTQ2OCA6IGNzczMvc2VsZWN0b3JzMyA9IFBBU1MgRkFJTAogCkBAIC0xNzI2
LDYgKzE3MjUsNyBAQCBCVUdDUjMxNjIzIFdJTiA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVtb3Zl
LWNhY2hlLmh0bWwgPSBQQVNTIFRFWFQgVElNRU9VVAogCiAvLyBXZWJLaXQgcm9sbCA1Mjg1MiAt
PiA1Mjg2NwogQlVHQ1IzMjAxOCBERUJVRyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hp
eGllNzYvc2ltcGxlLXN0cmVzcy5odG1sID0gUEFTUyBURVhUIFRJTUVPVVQKK0JVR0NSMzIwMTgg
REVCVUcgOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NpbXBsZS1zdHJlc3MuaHRt
bCA9IFBBU1MgVEVYVCBUSU1FT1VUCiAKIC8vIFY4J3MgaW1wbGVtZW50YXRpb24gb2YgZ2V0T3du
UHJvcGVydHlOYW1lcyBoYXMgZGlmZmVyZW50IHJlc3VsdHMgZm9yIGJ1aWx0LWluCiAvLyBmdW5j
dGlvbnMuCkBAIC0yODA1LDYgKzI4MDUsNyBAQCBCVUdDUjczMDgwIExJTlVYIERFQlVHIDogZmFz
dC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci5odG1sID0gUEFTUyBUSQogQlVH
Q1I3MzA5MSA6IGFuaW1hdGlvbnMvcGxheS1zdGF0ZS1zdXNwZW5kLmh0bWwgPSBQQVNTIFRFWFQK
IEJVR0NSNzMwOTIgV0lOIDogZmFzdC9kb20vZ2MtMTEuaHRtbCA9IFBBU1MgVEVYVAogQlVHQ1I3
MzA5NCBMSU5VWCA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvc2VuZC1hZnRl
ci1jbG9zZS1vbi11bmxvYWQuaHRtbCA9IFBBU1MgVElNRU9VVAorQlVHQ1I3MzA5NCBMSU5VWCA6
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hZnRlci1jbG9zZS1vbi11bmxv
YWQuaHRtbCA9IFBBU1MgVElNRU9VVAogCiBCVUdWOF8xMTY4IDogZmFzdC9qcy9tb3ppbGxhL2V2
YWwvZXhoYXVzdGl2ZS1mdW4tbm9ybWFsY2FsbGVyLWluZGlyZWN0LXN0cmljdGNvZGUuaHRtbCA9
IFRFWFQKIEJVR1Y4XzExNjggOiBmYXN0L2pzL21vemlsbGEvZXZhbC9leGhhdXN0aXZlLWZ1bi1z
dHJpY3RjYWxsZXItaW5kaXJlY3Qtc3RyaWN0Y29kZS5odG1sID0gVEVYVApAQCAtMzY1NSw2ICsz
NjU2LDcgQEAgQlVHV0s2MTY2NCBMSU5VWCA6IHN2Zy96b29tL3BhZ2UvcmVsYXRpdmUtc2l6ZWQt
ZG9jdW1lbnQtc2Nyb2xsYmFycy5zdmcgPSBJTUFHRQogQlVHQ1I4NDMxNyBERUJVRyA6IHN2Zy93
aWNkL3Rlc3Qtc2NhbGFibGUtYmFja2dyb3VuZC1pbWFnZTEueGh0bWwgPSBDUkFTSAogCiBCVUdX
SzYxNzY3IFdJTiBERUJVRyA6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvY2xp
ZW50LWNsb3NlLmh0bWwgPSBQQVNTIFRFWFQKK0JVR1dLNjE3NjcgV0lOIERFQlVHIDogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xvc2UuaHRtbCA9IFBBU1MgVEVYVAog
CiBCVUdXSzU5NzgyIFdJTiBMSU5VWCBERUJVRyA6IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHRkVE
cm9wU2hhZG93RWxlbWVudC1kb20tZHgtYXR0ci5odG1sID0gVElNRU9VVAogQlVHV0s1OTc4MiBX
SU4gTElOVVggREVCVUcgOiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQtZG9tLWR5LWF0dHIuaHRtbCA9IFRJTUVPVVQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5k
ZXggODgyNWQxMWRiZGJhMTM5OGMxYjJiMTUxOWE0NWUzMzljNmM2ZjI4OS4uYzQ5NjY2YzhmNzU5
YzEwMmVjMDc3MzM3YjA4ZTg0MjQ1MzQ5MjE3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
QEAgLTM4Niw2ICszODYsMyBAQCBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC1vdmVy
Zmxvdy1zY3JvbGxlZC5odG1sCiBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC1vdmVy
Zmxvdy5odG1sCiBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1maXhlZC5odG1sCiBjb21wb3Np
dGluZy9ydGwvcnRsLWlmcmFtZS1yZWxhdGl2ZS5odG1sCi0KLSMgU2tpcHBlZCB1bnRpbCBuZXcg
V2ViU29ja2V0IHByb3RvY29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzUw
MDk5Ci1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZAppbmRleCA1ODFlM2E1ZDI2NzIyYjY4MzE5OWE2NDlmMzc4Mzc1MGJiZGI0ZTU1Li44NGM3
Y2NmMTA3OGZjOTE2OWY3OWJjMjg4YTAyZDM2N2U1NDQ1NGU3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZApAQCAtMTM0Niw4ICsxMzQ2LDUgQEAgZmFzdC93b3JrZXJzL3dvcmtlci1jcmFzaC13
aXRoLWludmFsaWQtbG9jYXRpb24uaHRtbAogIyBOZWVkIHRvIGltcGxlbWVudCBnZXRGb3JtVmFs
dWUoKS4KIHBsdWdpbnMvZm9ybS12YWx1ZS5odG1sCiAKLSMgU2tpcHBlZCB1bnRpbCBuZXcgV2Vi
U29ja2V0IHByb3RvY29sIGlzIGltcGxlbWVudGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzUwMDk5
Ci1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpLwotCiAjIE5lZWRzIGdlbmVyYXRlZCBy
ZXN1bHRzCiBjc3MzL3NlbGVjdG9yczMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzIwNTQ3YjVlNDkzM2QyY2Y5
NmVjZDliMTNiYzU0OGU5YTNiZDE5Li5iYzcwOTJlYmE4Y2Y3NWNlMDk0Yzk0NDA1NzE1NTk4YzFi
YzcwYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDctMTggIFl1dGEgS2l0
YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBJbXBsZW1l
bnQgaHliaSBmcmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAg
ICAgIEltcGxlbWVudCBXZWJTb2NrZXQgZnJhbWluZyBwcm90b2NvbCB3aGljaCBpcyBtYWlubHkg
ZGVzY3JpYmVkIGluCisgICAgICAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1p
ZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMTAjc2VjdGlvbi00PiBhbmQKKyAgICAgICAg
PGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRw
cm90b2NvbC0xMCNzZWN0aW9uLTY+LgorCisgICAgICAgIEh5YmkgcHJvdG9jb2wgaW50cm9kdWNl
cyBhIG5ldyBmcmFtZSBmb3JtYXQgd2hpY2ggaXMgZHJhc3RpY2FsbHkgZGlmZmVyZW50IGZyb20K
KyAgICAgICAgdGhlIG9sZCBvbmUuIE5vdGFibGUgZGlmZmVyZW5jZXMgYXJlOgorICAgICAgICAt
IEJpbmFyeSBkYXRhIHN1cHBvcnQuCisgICAgICAgIC0gRnJhZ21lbnRhdGlvbiBzdXBwb3J0OiBh
IHNpbmdsZSBtZXNzYWdlIGNhbiBiZSBmcmFnbWVudGVkIHRvIG11bHRpcGxlIGZyYW1lcy4KKyAg
ICAgICAgLSBQaW5nLXBvbmcgc3VwcG9ydC4KKyAgICAgICAgLSBNYXNraW5nOiBmcmFtZSBjb250
ZW50IG9mIGEgY2xpZW50IG11c3QgYmUgbWFza2VkIHRvIHByZXZlbnQgY3Jvc3MtcHJvdG9jb2wg
YXR0YWNrcy4KKworICAgICAgICBUaGlzIHBhdGNoIGNvdmVycyB0aGUgZm9sbG93aW5nIGZlYXR1
cmVzOgorICAgICAgICAtIFNlbmQgYSBwb25nIGZyYW1lIHdoZW4gYSBwaW5nIGZyYW1lIGlzIHJl
Y2VpdmVkLgorICAgICAgICAtIFJlY2VpdmUgZnJhZ21lbnRlZCBmcmFtZXMuCisgICAgICAgIC0g
UmVjZWl2ZSBtYXNrZWQgZnJhbWVzLiAoU2VydmVycyBkbyBub3QgaGF2ZSB0byBtYXNrIGZyYW1l
cywgYnV0IHRoZXkgbWF5IGlmIHRoZXkgd2lzaC4pCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBm
ZWF0dXJlcyBhcmUgTk9UIGltcGxlbWVudGVkIHlldDoKKyAgICAgICAgLSBTZW5kIG9yIHJlY2Vp
dmUgYmluYXJ5IG1lc3NhZ2VzLgorICAgICAgICAtIFNlbmQgYSBwaW5nIG1lc3NhZ2UuCisgICAg
ICAgIC0gU2VuZCBmcmFnbWVudGVkIGZyYW1lcy4gKEl0IGlzIHVuY2xlYXIgd2hldGhlciB0aGlz
IGlzIG5lY2Vzc2FyeS4pCisgICAgICAgIC0gUmV3cml0ZSB0aGUgZnJhbWUgY29udGVudCBieSBX
ZWJTb2NrZXQgcHJvdG9jb2wgZXh0ZW5zaW9ucyAobGlrZSBmcmFtZSBjb21wcmVzc2lvbikuCisK
KyAgICAgICAgTmV3IHRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Jyb2tl
bi11dGY4Lmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS5odG1sCisgICAgICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1lcy5odG1sCisg
ICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnRlcmxl
YXZlZC1mcmFnbWVudHMuaHRtbAorICAgICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL21hc2tlZC1mcmFtZXMuaHRtbAorICAg
ICAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1s
CisgICAgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNl
cnZlZC1iaXRzLmh0bWwKKyAgICAgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3Jlc2VydmVkLW9wY29kZXMuaHRtbAorICAgICAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sCisKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgVGhlIG9yaWdpbmFsIGNvbnRlbnQgb2Yg
c2VuZCgpIHdhcyBtb3ZlZCB0byBhIHByaXZhdGUgbWV0aG9kIHNlbmRGcmFtZUhpeGllNzYoKS4K
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmZhaWwpOgorICAgICAgICBTdG9w
IGhhbmRsaW5nIGluY29taW5nIGRhdGEgYWZ0ZXIgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGlz
IGZhaWxlZC4KKyAgICAgICAgSXQgd2FzIHVuY2xlYXIgdG8gbWUgd2hldGhlciB3ZSBzaG91bGQg
ZG8gdGhlIHNhbWUgdGhpbmcgZm9yIGhpeGllLTc2IGNvbm5lY3Rpb247CisgICAgICAgIGZvciBu
b3csIEkga2VwdCB0aGUgb3JpZ2luYWwgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldENoYW5uZWw6OmNsb3NpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldENoYW5uZWw6OnBhcnNlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6c2VuZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmRG
cmFtZUhpeGllNzYpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6aXNOb25Db250cm9sT3BDb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmlzQ29udHJvbE9wQ29kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjppc1Jlc2VydmVkT3BDb2RlKToKKwog
MjAxMS0wNy0xOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBXZWIgSW5zcGVjdG9yOiBwcm92aWRlIHVuaXF1ZSBpZGVudGlm
aWVycyBmb3IgbG9hZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggNmZiMzFhZjAzYWZjYzFjZWEwMTRlZWE3YTM4YzExZmVjN2YzNmEy
OS4uZTU2MTE0ZjNmNDYzMGEwMjQ1ZTYwZmRkNGUyMWNmYzhkOGQ3Y2E1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00OCwxNyArNDgs
NDAgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0
IGRvdWJsZSBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1lID0gMiAqIDYwLjA7CiAKKy8vIENvbnN0
YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCitjb25zdCB1bnNpZ25lZCBjaGFyIGZpbmFs
Qml0ID0gMHg4MDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQxQml0ID0gMHg0MDsKK2Nv
bnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0IHVuc2lnbmVkIGNo
YXIgcmVzZXJ2ZWQzQml0ID0gMHgxMDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgb3BDb2RlTWFzayA9
IDB4RjsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgbWFza0JpdCA9IDB4ODA7Citjb25zdCB1bnNpZ25l
ZCBjaGFyIHBheWxvYWRMZW5ndGhNYXNrID0gMHg3RjsKK2NvbnN0IHNpemVfdCBtYXhQYXlsb2Fk
TGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjU7Citjb25zdCBzaXplX3QgcGF5
bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNjsKK2NvbnN0IHNp
emVfdCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjc7
Citjb25zdCBzaXplX3QgbWFza2luZ0tleVdpZHRoSW5CeXRlcyA9IDQ7CisKK2NvbnN0IFdlYlNv
Y2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVDb250aW51YXRpb24g
PSAweDA7Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6
T3BDb2RlVGV4dCA9IDB4MTsKK2NvbnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2Nr
ZXRDaGFubmVsOjpPcENvZGVCaW5hcnkgPSAweDI7Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpP
cENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlQ2xvc2UgPSAweDg7Citjb25zdCBXZWJTb2Nr
ZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlUGluZyA9IDB4OTsKK2Nv
bnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVQb25n
ID0gMHhBOworCiBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC03NCw2ICs5Nyw3IEBAIFdlYlNvY2tl
dENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgV2ViU29ja2V0Q2hhCiAgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KDApCiAgICAg
LCBtX2lkZW50aWZpZXIoMCkKICAgICAsIG1fdXNlSGl4aWU3NlByb3RvY29sKHRydWUpCisgICAg
LCBtX2hhc0NvbnRpbnVvdXNGcmFtZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0LT5p
c0RvY3VtZW50KCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4obV9jb250ZXh0KTsKQEAgLTEwMiwxNyArMTI2LDEzIEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6Y29ubmVjdCgpCiAgICAgbV9oYW5kbGUgPSBTb2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0
ZShtX2hhbmRzaGFrZS0+dXJsKCksIHRoaXMpOwogfQogCi1ib29sIFdlYlNvY2tldENoYW5uZWw6
OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBzZW5kICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChtX2hh
bmRsZSk7Ci0gICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZjsK
LSAgICBidWYuYXBwZW5kKCdcMCcpOyAgLy8gZnJhbWUgdHlwZQotICAgIENTdHJpbmcgdXRmOCA9
IG1zZy51dGY4KCk7Ci0gICAgYnVmLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7
Ci0gICAgYnVmLmFwcGVuZCgnXHhmZicpOyAgLy8gZnJhbWUgZW5kCi0gICAgcmV0dXJuIG1faGFu
ZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOworICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsK
KyAgICBDU3RyaW5nIHV0ZjggPSBtZXNzYWdlLnV0ZjgoKTsKKyAgICBpZiAobV91c2VIaXhpZTc2
UHJvdG9jb2wpCisgICAgICAgIHJldHVybiBzZW5kRnJhbWVIaXhpZTc2KHV0ZjguZGF0YSgpLCB1
dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gc2VuZEZyYW1lKE9wQ29kZVRleHQsIHV0ZjguZGF0
YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVs
OjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CkBAIC0xNDAsNiArMTYwLDE2IEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQoIW1fc3Vz
cGVuZGVkKTsKICAgICBpZiAobV9jb250ZXh0KQogICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIHJl
YXNvbiwgMCwgbV9oYW5kc2hha2UtPmNsaWVudE9yaWdpbigpLCAwKTsKKyAgICBpZiAoIW1fdXNl
SGl4aWU3NlByb3RvY29sKSB7CisgICAgICAgIC8vIEh5YmktMTAgc3BlY2lmaWNhdGlvbiBleHBs
aWNpdGx5IHN0YXRlcyB3ZSBtdXN0IG5vdCBjb250aW51ZSB0byBoYW5kbGUgaW5jb21pbmcgZGF0
YQorICAgICAgICAvLyBvbmNlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBmYWlsZWQgKHNl
Y3Rpb24gNy4xLjcpLgorICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRvIHRoaXMgaW4gaGl4
aWUtNzYgdG9vPworICAgICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwor
ICAgICAgICBpZiAobV9idWZmZXIpCisgICAgICAgICAgICBza2lwQnVmZmVyKG1fYnVmZmVyU2l6
ZSk7IC8vIFNhdmUgbWVtb3J5LgorICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZhbHNl
OworICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuY2xlYXIoKTsKKyAgICB9CiAgICAgaWYg
KG1faGFuZGxlICYmICFtX2Nsb3NlZCkKICAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsg
Ly8gV2lsbCBjYWxsIGRpZENsb3NlKCkuCiB9CkBAIC0zNDUsNiArMzc1LDI1NyBAQCBib29sIFdl
YlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQogICAgIGlmIChtX2hhbmRzaGFrZS0+bW9k
ZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpCisgICAgICAgIHJldHVybiBwcm9j
ZXNzRnJhbWVIaXhpZTc2KCk7CisKKyAgICByZXR1cm4gcHJvY2Vzc0ZyYW1lKCk7Cit9CisKK3Zv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFu
bmVsPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fcmVz
dW1lVGltZXIpOworCisgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QodGhpcyk7
IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmlu
ZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVu
dCAmJiBtX2J1ZmZlcikKKyAgICAgICAgaWYgKCFwcm9jZXNzQnVmZmVyKCkpCisgICAgICAgICAg
ICBicmVhazsKKyAgICBpZiAoIW1fc3VzcGVuZGVkICYmIG1fY2xpZW50ICYmIG1fY2xvc2VkICYm
IG1faGFuZGxlKQorICAgICAgICBkaWRDbG9zZShtX2hhbmRsZS5nZXQoKSk7Cit9CisKK3ZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKK3sKKyAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xvc2lu
ZywgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOworICAgIGlmIChtX2Nsb3NpbmcpCisgICAg
ICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9oYW5kbGUpOworICAgIGJvb2wgc2VudFN1Y2Nlc3Nm
dWxseTsKKyAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpIHsKKyAgICAgICAgVmVjdG9yPGNo
YXI+IGJ1ZjsKKyAgICAgICAgYnVmLmFwcGVuZCgnXHhmZicpOworICAgICAgICBidWYuYXBwZW5k
KCdcMCcpOworICAgICAgICBzZW50U3VjY2Vzc2Z1bGx5ID0gbV9oYW5kbGUtPnNlbmQoYnVmLmRh
dGEoKSwgYnVmLnNpemUoKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbnRTdWNjZXNzZnVsbHkg
PSBzZW5kRnJhbWUoT3BDb2RlQ2xvc2UsICIiLCAwKTsgLy8gRklYTUU6IFNlbmQgc3RhdHVzIGNv
ZGUgYW5kIHJlYXNvbiBtZXNzYWdlLgorCisgICAgaWYgKCFzZW50U3VjY2Vzc2Z1bGx5KSB7Cisg
ICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgbV9jbG9zaW5nID0gdHJ1ZTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCit7Cisg
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgdGltZXIiLCB0aGlz
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCAmbV9jbG9zaW5nVGltZXIgPT0gdGltZXIpOwor
ICAgIGlmIChtX2hhbmRsZSkKKyAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsKK30KKwor
V2ViU29ja2V0Q2hhbm5lbDo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpwYXJz
ZUZyYW1lKEZyYW1lRGF0YSYgZnJhbWUpCit7CisgICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVy
OworICAgIGNvbnN0IGNoYXIqIGJ1ZmZlckVuZCA9IG1fYnVmZmVyICsgbV9idWZmZXJTaXplOwor
CisgICAgaWYgKG1fYnVmZmVyU2l6ZSA8IDIpCisgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxl
dGU7CisKKyAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpwKys7CisgICAgdW5zaWduZWQg
Y2hhciBzZWNvbmRCeXRlID0gKnArKzsKKworICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5dGUgJiBm
aW5hbEJpdDsKKyAgICBib29sIHJlc2VydmVkMSA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkMUJpdDsK
KyAgICBib29sIHJlc2VydmVkMiA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkMkJpdDsKKyAgICBib29s
IHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0JpdDsKKyAgICBPcENvZGUgb3BDb2Rl
ID0gZmlyc3RCeXRlICYgb3BDb2RlTWFzazsKKworICAgIGJvb2wgbWFza2VkID0gc2Vjb25kQnl0
ZSAmIG1hc2tCaXQ7CisgICAgdWludDY0X3QgcGF5bG9hZExlbmd0aDY0ID0gc2Vjb25kQnl0ZSAm
IHBheWxvYWRMZW5ndGhNYXNrOworICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBtYXhQYXlsb2Fk
TGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpIHsKKyAgICAgICAgaW50IGV4dGVuZGVk
UGF5bG9hZExlbmd0aFNpemU7CisgICAgICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPT0gcGF5bG9h
ZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCkKKyAgICAgICAgICAgIGV4dGVu
ZGVkUGF5bG9hZExlbmd0aFNpemUgPSAyOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFT
U0VSVChwYXlsb2FkTGVuZ3RoNjQgPT0gcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRl
ZExlbmd0aEZpZWxkKTsKKyAgICAgICAgICAgIGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUgPSA4
OworICAgICAgICB9CisgICAgICAgIGlmIChidWZmZXJFbmQgLSBwIDwgZXh0ZW5kZWRQYXlsb2Fk
TGVuZ3RoU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CisgICAgICAg
IHBheWxvYWRMZW5ndGg2NCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0ZW5k
ZWRQYXlsb2FkTGVuZ3RoU2l6ZTsgKytpKSB7CisgICAgICAgICAgICBwYXlsb2FkTGVuZ3RoNjQg
PDw9IDg7CisgICAgICAgICAgICBwYXlsb2FkTGVuZ3RoNjQgfD0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oKnArKyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogVUlOVDY0
X0MoMHg3RkZGRkZGRkZGRkZGRkZGKSBzaG91bGQgYmUgdXNlZCBidXQgaXQgZGlkIG5vdCBjb21w
aWxlIG9uIFF0IGJvdHMuCisjaWYgQ09NUElMRVIoTVNWQykKKyAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IDB4N0ZGRkZGRkZGRkZGRkZGRnVpNjQ7CisjZWxzZQor
ICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBtYXhQYXlsb2FkTGVuZ3RoID0gMHg3RkZGRkZGRkZG
RkZGRkZGdWxsOworI2VuZGlmCisgICAgc2l6ZV90IG1hc2tpbmdLZXlMZW5ndGggPSBtYXNrZWQg
PyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzIDogMDsKKyAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4g
bWF4UGF5bG9hZExlbmd0aCB8fCBwYXlsb2FkTGVuZ3RoNjQgKyBtYXNraW5nS2V5TGVuZ3RoID4g
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsKKyAgICAgICAgZmFpbCgiV2ViU29ja2V0
IGZyYW1lIGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJpbmc6Om51bWJlcihwYXlsb2FkTGVuZ3Ro
NjQpICsgIiBieXRlcyIpOworICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsKKyAgICB9CisgICAg
c2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBheWxvYWRMZW5ndGg2
NCk7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJFbmQgLSBwKSA8IG1hc2tp
bmdLZXlMZW5ndGggKyBwYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBs
ZXRlOworCisgICAgaWYgKG1hc2tlZCkgeworICAgICAgICBjb25zdCBjaGFyKiBtYXNraW5nS2V5
ID0gcDsKKyAgICAgICAgY2hhciogcGF5bG9hZCA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHAgKyBtYXNr
aW5nS2V5V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXls
b2FkTGVuZ3RoOyArK2kpCisgICAgICAgICAgICBwYXlsb2FkW2ldIF49IG1hc2tpbmdLZXlbaSAl
IG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOyAvLyBVbm1hc2sgdGhlIHBheWxvYWQuCisgICAgfQor
CisgICAgZnJhbWUub3BDb2RlID0gb3BDb2RlOworICAgIGZyYW1lLmZpbmFsID0gZmluYWw7Cisg
ICAgZnJhbWUucmVzZXJ2ZWQxID0gcmVzZXJ2ZWQxOworICAgIGZyYW1lLnJlc2VydmVkMiA9IHJl
c2VydmVkMjsKKyAgICBmcmFtZS5yZXNlcnZlZDMgPSByZXNlcnZlZDM7CisgICAgZnJhbWUubWFz
a2VkID0gbWFza2VkOworICAgIGZyYW1lLnBheWxvYWQgPSBwICsgbWFza2luZ0tleUxlbmd0aDsK
KyAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gcGF5bG9hZExlbmd0aDsKKyAgICBmcmFtZS5mcmFt
ZUVuZCA9IHAgKyBtYXNraW5nS2V5TGVuZ3RoICsgcGF5bG9hZExlbmd0aDsKKyAgICByZXR1cm4g
RnJhbWVPSzsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQorewor
ICAgIEFTU0VSVChtX2J1ZmZlcik7CisKKyAgICBGcmFtZURhdGEgZnJhbWU7CisgICAgaWYgKHBh
cnNlRnJhbWUoZnJhbWUpICE9IEZyYW1lT0spCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIFZhbGlkYXRlIHRoZSBmcmFtZSBkYXRhLgorICAgIGlmIChpc1Jlc2VydmVkT3BDb2RlKGZy
YW1lLm9wQ29kZSkpIHsKKyAgICAgICAgZmFpbCgiVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTog
IiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKGZyYW1lLnJlc2VydmVkMSB8fCBmcmFtZS5yZXNlcnZlZDIgfHwg
ZnJhbWUucmVzZXJ2ZWQzKSB7CisgICAgICAgIGZhaWwoIk9uZSBvciBtb3JlIHJlc2VydmVkIGJp
dHMgYXJlIG9uOiByZXNlcnZlZDEgPSAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUucmVzZXJ2ZWQx
KSArICIsIHJlc2VydmVkMiA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5yZXNlcnZlZDIpICsg
IiwgcmVzZXJ2ZWQzID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLnJlc2VydmVkMykpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQWxsIGNvbnRyb2wgZnJhbWVzIG11
c3Qgbm90IGJlIGZyYWdtZW50ZWQuCisgICAgaWYgKGlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENv
ZGUpICYmICFmcmFtZS5maW5hbCkgeworICAgICAgICBmYWlsKCJSZWNlaXZlZCBmcmFnbWVudGVk
IGNvbnRyb2wgZnJhbWU6IG9wY29kZSA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5vcENvZGUp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEFsbCBjb250cm9sIGZy
YW1lcyBtdXN0IGhhdmUgYSBwYXlsb2FkIG9mIDEyNSBieXRlcyBvciBsZXNzLCB3aGljaCBtZWFu
cyB0aGUgZnJhbWUgbXVzdCBub3QgY29udGFpbgorICAgIC8vIHRoZSAiZXh0ZW5kZWQgcGF5bG9h
ZCBsZW5ndGgiIGZpZWxkLgorICAgIGlmIChpc0NvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSAm
JiBmcmFtZS5wYXlsb2FkTGVuZ3RoID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExl
bmd0aEZpZWxkKSB7CisgICAgICAgIGZhaWwoIlJlY2VpdmVkIGNvbnRyb2wgZnJhbWUgaGF2aW5n
IHRvbyBsb25nIHBheWxvYWQ6ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5wYXlsb2FkTGVuZ3Ro
KSArICIgYnl0ZXMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEEg
bmV3IGRhdGEgZnJhbWUgaXMgcmVjZWl2ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBjb250aW51b3Vz
IGZyYW1lIGZpbmlzaGVzLgorICAgIC8vIE5vdGUgdGhhdCBjb250cm9sIGZyYW1lcyBhcmUgYWxs
b3dlZCB0byBjb21lIGluIHRoZSBtaWRkbGUgb2YgY29udGludW91cyBmcmFtZXMuCisgICAgaWYg
KG1faGFzQ29udGludW91c0ZyYW1lICYmIGZyYW1lLm9wQ29kZSAhPSBPcENvZGVDb250aW51YXRp
b24gJiYgIWlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpKSB7CisgICAgICAgIGZhaWwoIlJl
Y2VpdmVkIG5ldyBkYXRhIGZyYW1lIGJ1dCBwcmV2aW91cyBjb250aW51b3VzIGZyYW1lIGlzIHVu
ZmluaXNoZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2gg
KGZyYW1lLm9wQ29kZSkgeworICAgIGNhc2UgT3BDb2RlQ29udGludWF0aW9uOgorICAgICAgICAv
LyBUaHJvdyBhd2F5IGNvbnRlbnQgb2YgYSBiaW5hcnkgbWVzc2FnZSBiZWNhdXNlIGJpbmFyeSBt
ZXNzYWdlcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCisgICAgICAgIGlmIChtX2NvbnRpbnVvdXNG
cmFtZU9wQ29kZSA9PSBPcENvZGVUZXh0KQorICAgICAgICAgICAgbV9jb250aW51b3VzRnJhbWVE
YXRhLmFwcGVuZChmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKKyAgICAgICAg
c2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgaWYgKGZyYW1l
LmZpbmFsKSB7CisgICAgICAgICAgICAvLyBvbm1lc3NhZ2UgaGFuZGxlciBtYXkgZXZlbnR1YWxs
eSBjYWxsIHRoZSBvdGhlciBtZXRob2RzIG9mIHRoaXMgY2hhbm5lbCwKKyAgICAgICAgICAgIC8v
IHNvIHdlIHNob3VsZCBwcmV0ZW5kIHRoYXQgd2UgaGF2ZSBmaW5pc2hlZCB0byByZWFkIHRoaXMg
ZnJhbWUgYW5kCisgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgbWVtYmVyIHZhcmlh
YmxlcyBhcmUgaW4gYSBjb25zaXN0ZW50IHN0YXRlIGJlZm9yZQorICAgICAgICAgICAgLy8gdGhl
IGhhbmRsZXIgaXMgaW52b2tlZC4KKyAgICAgICAgICAgIC8vIFZlY3RvcjxjaGFyPjo6c3dhcCgp
IGlzIHVzZWQgaGVyZSB0byBjbGVhciBtX2NvbnRpbnVvdXNGcmFtZURhdGEuCisgICAgICAgICAg
ICBWZWN0b3I8Y2hhcj4gY29udGludW91c0ZyYW1lRGF0YTsKKyAgICAgICAgICAgIG1fY29udGlu
dW91c0ZyYW1lRGF0YS5zd2FwKGNvbnRpbnVvdXNGcmFtZURhdGEpOworICAgICAgICAgICAgbV9o
YXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtX2NvbnRpbnVvdXNG
cmFtZU9wQ29kZSA9PSBPcENvZGVUZXh0KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBTdHJpbmc6OmZyb21VVEY4KGNvbnRpbnVvdXNGcmFtZURhdGEuZGF0YSgpLCBjb250aW51
b3VzRnJhbWVEYXRhLnNpemUoKSk7CisgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaXNOdWxs
KCkpCisgICAgICAgICAgICAgICAgICAgIGZhaWwoIkNvdWxkIG5vdCBkZWNvZGUgYSB0ZXh0IGZy
YW1lIGFzIFVURi04LiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9PSBPcENvZGVCaW5hcnkpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQobV9jb250aW51b3VzRnJhbWVEYXRhLmlzRW1wdHkoKSk7CisgICAg
ICAgICAgICAgICAgZmFpbCgiUmVjZWl2ZWQgYSBiaW5hcnkgZnJhbWUgd2hpY2ggaXMgbm90IHN1
cHBvcnRlZCB5ZXQuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIE9wQ29kZVRleHQ6CisgICAgICAgIGlmIChmcmFtZS5maW5hbCkgeworICAg
ICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZyb21VVEY4KGZyYW1lLnBheWxvYWQs
IGZyYW1lLnBheWxvYWRMZW5ndGgpOworICAgICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFt
ZUVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChtZXNzYWdlLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgIGZhaWwoIkNvdWxkIG5vdCBkZWNvZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1faGFz
Q29udGludW91c0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lT3BD
b2RlID0gT3BDb2RlVGV4dDsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvbnRpbnVvdXNGcmFtZURh
dGEuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lRGF0YS5hcHBlbmQo
ZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7CisgICAgICAgICAgICBza2lwQnVm
ZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBPcENvZGVCaW5hcnk6CisgICAgICAgIGlmIChmcmFtZS5maW5hbCkKKyAg
ICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGEgYmluYXJ5IGZyYW1lIHdoaWNoIGlzIG5vdCBzdXBw
b3J0ZWQgeWV0LiIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1faGFzQ29udGludW91
c0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lT3BDb2RlID0gT3BD
b2RlQmluYXJ5OworICAgICAgICAgICAgQVNTRVJUKG1fY29udGludW91c0ZyYW1lRGF0YS5pc0Vt
cHR5KCkpOworICAgICAgICAgICAgLy8gRG8gbm90IHN0b3JlIGRhdGEgb2YgYSBiaW5hcnkgbWVz
c2FnZSB0byBtX2NvbnRpbnVvdXNGcmFtZURhdGEgdG8gc2F2ZSBtZW1vcnkuCisgICAgICAgICAg
ICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBPcENvZGVDbG9zZToKKyAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBwYXlsb2FkLgorICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZm
ZXIpOworICAgICAgICBtX3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSA9IHRydWU7CisgICAgICAg
IHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOworICAgICAgICBpZiAobV9jbG9zaW5nKQorICAgICAg
ICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7IC8vIENsb3NlIGFmdGVyIHNlbmRpbmcgYSBjbG9zZSBm
cmFtZS4KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE9wQ29kZVBpbmc6IHsKKyAgICAgICAg
Ym9vbCByZXN1bHQgPSBzZW5kRnJhbWUoT3BDb2RlUG9uZywgZnJhbWUucGF5bG9hZCwgZnJhbWUu
cGF5bG9hZExlbmd0aCk7CisgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1
ZmZlcik7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRv
IHNlbmQgYSBwb25nIGZyYW1lLiIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNl
IE9wQ29kZVBvbmc6CisgICAgICAgIC8vIEEgc2VydmVyIG1heSBzZW5kIGEgcG9uZyBpbiByZXNw
b25zZSB0byBvdXIgcGluZywgb3IgYW4gdW5zb2xpY2l0ZWQgcG9uZyB3aGljaCBpcyBub3QgYXNz
b2NpYXRlZCB3aXRoCisgICAgICAgIC8vIGFueSBzcGVjaWZpYyBwaW5nLiBFaXRoZXIgd2F5LCB0
aGVyZSdzIG5vdGhpbmcgdG8gZG8gb24gcmVjZWlwdCBvZiBwb25nLgorICAgICAgICBza2lwQnVm
ZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOworICAgICAgICBicmVhazsKKworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBza2lwQnVmZmVy
KGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gbV9idWZmZXI7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0Zy
YW1lSGl4aWU3NigpCit7CiAgICAgY29uc3QgY2hhciogbmV4dEZyYW1lID0gbV9idWZmZXI7CiAg
ICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVyOwogICAgIGNvbnN0IGNoYXIqIGVuZCA9IHAgKyBt
X2J1ZmZlclNpemU7CkBAIC0zNTQsNyArNjM1LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpw
cm9jZXNzQnVmZmVyKCkKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAgIGJvb2wg
ZXJyb3JGcmFtZSA9IGZhbHNlOwogICAgICAgICB3aGlsZSAocCA8IGVuZCkgewotICAgICAgICAg
ICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyAxMjgp
IHsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPiBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSAvIDEyOCkgewogICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiZnJhbWUgbGVuZ3RoIG92
ZXJmbG93ICVsdSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGxlbmd0aCkpOwogICAgICAg
ICAgICAgICAgIGVycm9yRnJhbWUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzYyLDcgKzY0Myw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAg
ICAgICAgICAgICBzaXplX3QgbmV3TGVuZ3RoID0gbGVuZ3RoICogMTI4OwogICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBtc2dCeXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnApOwog
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbmd0aE1zZ0J5dGUgPSBtc2dCeXRlICYgMHg3ZjsK
LSAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpIC0gbGVuZ3RoTXNnQnl0ZSkgeworICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA+IG51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gbGVuZ3RoTXNnQnl0ZSkgewogICAgICAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAiZnJhbWUgbGVuZ3RoIG92ZXJmbG93ICVsdSsldSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmc+KG5ld0xlbmd0aCksIGxlbmd0aE1zZ0J5dGUpOwogICAgICAg
ICAgICAgICAgIGVycm9yRnJhbWUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
NDI3LDQyICs3MDgsNTYgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGlt
ZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCitib29sIFdlYlNvY2tldENo
YW5uZWw6OnNlbmRGcmFtZShPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9yZXN1
bWVUaW1lcik7CisgICAgQVNTRVJUKG1faGFuZGxlKTsKKyAgICBBU1NFUlQoIW1fc3VzcGVuZGVk
KTsKIAotICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KHRoaXMpOyAvLyBUaGUg
Y2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxh
c3QgcmVmZXJlbmNlLgotICAgIHdoaWxlICghbV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9i
dWZmZXIpCi0gICAgICAgIGlmICghcHJvY2Vzc0J1ZmZlcigpKQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgaWYgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiBtX2Nsb3NlZCAmJiBtX2hhbmRs
ZSkKLSAgICAgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0KCkpOworICAgIFZlY3RvcjxjaGFyPiBm
cmFtZTsKKyAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hl
dGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgorICAgIGZyYW1lLmFw
cGVuZChmaW5hbEJpdCB8IG9wQ29kZSk7CisgICAgaWYgKGRhdGFMZW5ndGggPD0gbWF4UGF5bG9h
ZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKQorICAgICAgICBmcmFtZS5hcHBlbmQo
bWFza0JpdCB8IGRhdGFMZW5ndGgpOworICAgIGVsc2UgaWYgKGRhdGFMZW5ndGggPD0gMHhGRkZG
KSB7CisgICAgICAgIGZyYW1lLmFwcGVuZChtYXNrQml0IHwgcGF5bG9hZExlbmd0aFdpdGhUd29C
eXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7CisgICAgICAgIGZyYW1lLmFwcGVuZCgoZGF0YUxlbmd0
aCAmIDB4RkYwMCkgPj4gOCk7CisgICAgICAgIGZyYW1lLmFwcGVuZChkYXRhTGVuZ3RoICYgMHhG
Rik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnJhbWUuYXBwZW5kKG1hc2tCaXQgfCBwYXlsb2Fk
TGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpOworICAgICAgICBjaGFyIGV4
dGVuZGVkUGF5bG9hZExlbmd0aFs4XTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZyA9IGRhdGFM
ZW5ndGg7CisgICAgICAgIC8vIEZpbGwgdGhlIGxlbmd0aCBpbnRvIGV4dGVuZGVkUGF5bG9hZExl
bmd0aCBpbiB0aGUgbmV0d29yayBieXRlIG9yZGVyLgorICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDg7ICsraSkgeworICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzcgLSBpXSA9
IHJlbWFpbmluZyAmIDB4RkY7CisgICAgICAgICAgICByZW1haW5pbmcgPj49IDg7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKCFyZW1haW5pbmcpOworICAgICAgICBmcmFtZS5hcHBlbmQoZXh0
ZW5kZWRQYXlsb2FkTGVuZ3RoLCA4KTsKKyAgICB9CisKKyAgICAvLyBNYXNrIHRoZSBmcmFtZS4K
KyAgICBzaXplX3QgbWFza2luZ0tleVN0YXJ0ID0gZnJhbWUuc2l6ZSgpOworICAgIGZyYW1lLmdy
b3coZnJhbWUuc2l6ZSgpICsgbWFza2luZ0tleVdpZHRoSW5CeXRlcyk7IC8vIEFkZCBwbGFjZWhv
bGRlciBmb3IgbWFza2luZyBrZXkuIFdpbGwgYmUgb3ZlcndyaXR0ZW4uCisgICAgc2l6ZV90IHBh
eWxvYWRTdGFydCA9IGZyYW1lLnNpemUoKTsKKyAgICBmcmFtZS5hcHBlbmQoZGF0YSwgZGF0YUxl
bmd0aCk7CisKKyAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhmcmFtZS5kYXRhKCkg
KyBtYXNraW5nS2V5U3RhcnQsIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgKytpKQorICAgICAgICBmcmFtZVtwYXlsb2FkU3Rh
cnQgKyBpXSBePSBmcmFtZVttYXNraW5nS2V5U3RhcnQgKyBpICUgbWFza2luZ0tleVdpZHRoSW5C
eXRlc107CisKKyAgICByZXR1cm4gbV9oYW5kbGUtPnNlbmQoZnJhbWUuZGF0YSgpLCBmcmFtZS5z
aXplKCkpOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFr
ZSgpCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZUhpeGllNzYoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0aGlzLCBtX2Nsb3NpbmcsIG1fcmVjZWl2ZWRDbG9z
aW5nSGFuZHNoYWtlKTsKLSAgICBpZiAobV9jbG9zaW5nKQotICAgICAgICByZXR1cm47CiAgICAg
QVNTRVJUKG1faGFuZGxlKTsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmOwotICAgIGJ1Zi5hcHBlbmQo
J1x4ZmYnKTsKLSAgICBidWYuYXBwZW5kKCdcMCcpOwotICAgIGlmICghbV9oYW5kbGUtPnNlbmQo
YnVmLmRhdGEoKSwgYnVmLnNpemUoKSkpIHsKLSAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3Qo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Nsb3NpbmcgPSB0cnVlOwotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OwotfQorICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6
OmNsb3NpbmdUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcikKLXsKLSAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyB0aW1lciIsIHRoaXMp
OwotICAgIEFTU0VSVF9VTlVTRUQodGltZXIsICZtX2Nsb3NpbmdUaW1lciA9PSB0aW1lcik7Ci0g
ICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOworICAgIFZl
Y3RvcjxjaGFyPiBmcmFtZTsKKyAgICBmcmFtZS5hcHBlbmQoJ1wwJyk7IC8vIEZyYW1lIHR5cGUu
CisgICAgZnJhbWUuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGZyYW1lLmFwcGVuZCgn
XHhmZicpOyAvLyBGcmFtZSBlbmQuCisgICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGZyYW1lLmRh
dGEoKSwgZnJhbWUuc2l6ZSgpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNjQyMWZlYjhj
ZTA0MzVkMDQ0OWMxNWQ4ZGQzYjgzMjM5Y2FjMjBhOC4uZjdhNDcwZTEzZDJkMDZkZThhNzRiOTZh
ZjU4M2I1NWQzODUxMTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQpAQCAtODgsNiArODgsNDUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogICAgICAgICB2b2lkIGNsb3NpbmdUaW1l
ckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+Kik7CiAKKyAgICAgICAgLy8gSHliaS0xMCBv
cGNvZGVzLgorICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCBPcENvZGU7CisgICAgICAgIHN0
YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlQ29udGludWF0aW9uOworICAgICAgICBzdGF0aWMgY29u
c3QgT3BDb2RlIE9wQ29kZVRleHQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2Rl
QmluYXJ5OworICAgICAgICBzdGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZUNsb3NlOworICAgICAg
ICBzdGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZVBpbmc7CisgICAgICAgIHN0YXRpYyBjb25zdCBP
cENvZGUgT3BDb2RlUG9uZzsKKworICAgICAgICBzdGF0aWMgYm9vbCBpc05vbkNvbnRyb2xPcENv
ZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNvbnRpbnVhdGlvbiB8
fCBvcENvZGUgPT0gT3BDb2RlVGV4dCB8fCBvcENvZGUgPT0gT3BDb2RlQmluYXJ5OyB9CisgICAg
ICAgIHN0YXRpYyBib29sIGlzQ29udHJvbE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiBv
cENvZGUgPT0gT3BDb2RlQ2xvc2UgfHwgb3BDb2RlID09IE9wQ29kZVBpbmcgfHwgb3BDb2RlID09
IE9wQ29kZVBvbmc7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNSZXNlcnZlZE9wQ29kZShPcENv
ZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9sT3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29u
dHJvbE9wQ29kZShvcENvZGUpOyB9CisKKyAgICAgICAgZW51bSBQYXJzZUZyYW1lUmVzdWx0IHsK
KyAgICAgICAgICAgIEZyYW1lT0ssCisgICAgICAgICAgICBGcmFtZUluY29tcGxldGUsCisgICAg
ICAgICAgICBGcmFtZUVycm9yCisgICAgICAgIH07CisKKyAgICAgICAgc3RydWN0IEZyYW1lRGF0
YSB7CisgICAgICAgICAgICBPcENvZGUgb3BDb2RlOworICAgICAgICAgICAgYm9vbCBmaW5hbDsK
KyAgICAgICAgICAgIGJvb2wgcmVzZXJ2ZWQxOworICAgICAgICAgICAgYm9vbCByZXNlcnZlZDI7
CisgICAgICAgICAgICBib29sIHJlc2VydmVkMzsKKyAgICAgICAgICAgIGJvb2wgbWFza2VkOwor
ICAgICAgICAgICAgY29uc3QgY2hhciogcGF5bG9hZDsKKyAgICAgICAgICAgIHNpemVfdCBwYXls
b2FkTGVuZ3RoOworICAgICAgICAgICAgY29uc3QgY2hhciogZnJhbWVFbmQ7CisgICAgICAgIH07
CisKKyAgICAgICAgUGFyc2VGcmFtZVJlc3VsdCBwYXJzZUZyYW1lKEZyYW1lRGF0YSYpOyAvLyBN
YXkgbW9kaWZ5IHBhcnQgb2YgbV9idWZmZXIgdG8gdW5tYXNrIHRoZSBmcmFtZS4KKworICAgICAg
ICBib29sIHByb2Nlc3NGcmFtZSgpOworICAgICAgICBib29sIHByb2Nlc3NGcmFtZUhpeGllNzYo
KTsKKworICAgICAgICBib29sIHNlbmRGcmFtZShPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgYm9vbCBzZW5kRnJhbWVIaXhpZTc2KGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKwogICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBtX2NvbnRleHQ7CiAgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIG1fY2xp
ZW50OwogICAgICAgICBPd25QdHI8V2ViU29ja2V0SGFuZHNoYWtlPiBtX2hhbmRzaGFrZTsKQEAg
LTEwNyw2ICsxNDYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBs
b25nIG1faWRlbnRpZmllcjsgLy8gbV9pZGVudGlmaWVyID09IDAgbWVhbnMgdGhhdCB3ZSBjb3Vs
ZCBub3Qgb2J0YWluIGEgdmFsaWQgaWRlbnRpZmllci4KIAogICAgICAgICBib29sIG1fdXNlSGl4
aWU3NlByb3RvY29sOworCisgICAgICAgIC8vIFByaXZhdGUgbWVtYmVycyBvbmx5IGZvciBoeWJp
LTEwIHByb3RvY29sLgorICAgICAgICBib29sIG1faGFzQ29udGludW91c0ZyYW1lOworICAgICAg
ICBPcENvZGUgbV9jb250aW51b3VzRnJhbWVPcENvZGU7CisgICAgICAgIFZlY3RvcjxjaGFyPiBt
X2NvbnRpbnVvdXNGcmFtZURhdGE7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>